@ytsaurus/ui 1.75.1 → 1.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/build/assets-manifest.json +75 -75
- package/dist/public/build/css/{job.c7c99207.chunk.css → job.9757ff68.chunk.css} +2 -2
- package/dist/public/build/css/job.9757ff68.chunk.css.map +1 -0
- package/dist/public/build/css/main.0efa9da5.css +10 -0
- package/dist/public/build/css/main.0efa9da5.css.map +1 -0
- package/dist/public/build/css/navigation.c199c4f2.chunk.css +2 -0
- package/dist/public/build/css/navigation.c199c4f2.chunk.css.map +1 -0
- package/dist/public/build/js/{1260.534f3f75.chunk.js → 1260.a1e22005.chunk.js} +2 -2
- package/dist/public/build/js/{1260.534f3f75.chunk.js.map → 1260.a1e22005.chunk.js.map} +1 -1
- package/dist/public/build/js/{1879.23423388.chunk.js → 1879.3975650a.chunk.js} +3 -3
- package/dist/public/build/js/{1879.23423388.chunk.js.map → 1879.3975650a.chunk.js.map} +1 -1
- package/dist/public/build/js/{1983.666923be.chunk.js → 1983.64a2e22f.chunk.js} +2 -2
- package/dist/public/build/js/{1983.666923be.chunk.js.map → 1983.64a2e22f.chunk.js.map} +1 -1
- package/dist/public/build/js/{2447.b2877275.chunk.js → 2447.eb8fde89.chunk.js} +2 -2
- package/dist/public/build/js/{2447.b2877275.chunk.js.map → 2447.eb8fde89.chunk.js.map} +1 -1
- package/dist/public/build/js/3724.3e5848f0.chunk.js +2 -0
- package/dist/public/build/js/{3724.425d01ec.chunk.js.map → 3724.3e5848f0.chunk.js.map} +1 -1
- package/dist/public/build/js/6729.39d7cf60.chunk.js +2 -0
- package/dist/public/build/js/6729.39d7cf60.chunk.js.map +1 -0
- package/dist/public/build/js/{7959.95ebd185.chunk.js → 7959.faac2ff8.chunk.js} +2 -2
- package/dist/public/build/js/{7959.95ebd185.chunk.js.map → 7959.faac2ff8.chunk.js.map} +1 -1
- package/dist/public/build/js/{8390.83f4531a.chunk.js → 8390.c3d2de6a.chunk.js} +2 -2
- package/dist/public/build/js/{8390.83f4531a.chunk.js.map → 8390.c3d2de6a.chunk.js.map} +1 -1
- package/dist/public/build/js/{8460.2d4d237e.chunk.js → 8460.fc8e2238.chunk.js} +2 -2
- package/dist/public/build/js/{8460.2d4d237e.chunk.js.map → 8460.fc8e2238.chunk.js.map} +1 -1
- package/dist/public/build/js/{8778.e18e655b.chunk.js → 8778.f3ea089f.chunk.js} +2 -2
- package/dist/public/build/js/{8778.e18e655b.chunk.js.map → 8778.f3ea089f.chunk.js.map} +1 -1
- package/dist/public/build/js/{9558.a6ea64c9.chunk.js → 9558.6a4bf9a9.chunk.js} +2 -2
- package/dist/public/build/js/{9558.a6ea64c9.chunk.js.map → 9558.6a4bf9a9.chunk.js.map} +1 -1
- package/dist/public/build/js/9569.aac48f3b.chunk.js +2 -0
- package/dist/public/build/js/9569.aac48f3b.chunk.js.map +1 -0
- package/dist/public/build/js/{accounts.2ba221c2.chunk.js → accounts.aa7ed73f.chunk.js} +2 -2
- package/dist/public/build/js/accounts.aa7ed73f.chunk.js.map +1 -0
- package/dist/public/build/js/{acl.c948c339.chunk.js → acl.4cd54663.chunk.js} +2 -2
- package/dist/public/build/js/{acl.c948c339.chunk.js.map → acl.4cd54663.chunk.js.map} +1 -1
- package/dist/public/build/js/{app-navigation.b062662b.chunk.js → app-navigation.13c65573.chunk.js} +2 -2
- package/dist/public/build/js/app-navigation.13c65573.chunk.js.map +1 -0
- package/dist/public/build/js/chyt.0ee6bfa2.chunk.js +2 -0
- package/dist/public/build/js/chyt.0ee6bfa2.chunk.js.map +1 -0
- package/dist/public/build/js/cluster-page-wrapper.bdc8607f.chunk.js +2 -0
- package/dist/public/build/js/cluster-page-wrapper.bdc8607f.chunk.js.map +1 -0
- package/dist/public/build/js/{components.bbe331cb.chunk.js → components.b39828bc.chunk.js} +2 -2
- package/dist/public/build/js/components.b39828bc.chunk.js.map +1 -0
- package/dist/public/build/js/job.ea2ba82d.chunk.js +2 -0
- package/dist/public/build/js/job.ea2ba82d.chunk.js.map +1 -0
- package/dist/public/build/js/main.6375dbc6.js +3 -0
- package/dist/public/build/js/main.6375dbc6.js.map +1 -0
- package/dist/public/build/js/manage-tokens.e1e791fc.chunk.js +2 -0
- package/dist/public/build/js/manage-tokens.e1e791fc.chunk.js.map +1 -0
- package/dist/public/build/js/{navigation-flow.eeb01518.chunk.js → navigation-flow.6d67215a.chunk.js} +2 -2
- package/dist/public/build/js/{navigation-flow.eeb01518.chunk.js.map → navigation-flow.6d67215a.chunk.js.map} +1 -1
- package/dist/public/build/js/navigation.529208de.chunk.js +2 -0
- package/dist/public/build/js/navigation.529208de.chunk.js.map +1 -0
- package/dist/public/build/js/odin.c4c4ef6f.chunk.js +2 -0
- package/dist/public/build/js/odin.c4c4ef6f.chunk.js.map +1 -0
- package/dist/public/build/js/{path-viewer.b1b3328d.chunk.js → path-viewer.c091d9f4.chunk.js} +2 -2
- package/dist/public/build/js/{path-viewer.b1b3328d.chunk.js.map → path-viewer.c091d9f4.chunk.js.map} +1 -1
- package/dist/public/build/js/{query-navigation.9964bfcf.chunk.js → query-navigation.b1574290.chunk.js} +2 -2
- package/dist/public/build/js/{query-navigation.9964bfcf.chunk.js.map → query-navigation.b1574290.chunk.js.map} +1 -1
- package/dist/public/build/js/{query-results.733b1795.chunk.js → query-results.0a05cc41.chunk.js} +2 -2
- package/dist/public/build/js/{query-results.733b1795.chunk.js.map → query-results.0a05cc41.chunk.js.map} +1 -1
- package/dist/public/build/js/query-tracker.515069f6.chunk.js +2 -0
- package/dist/public/build/js/query-tracker.515069f6.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.481a6d3a.js → runtime.09217c31.js} +2 -2
- package/dist/public/build/js/{runtime.481a6d3a.js.map → runtime.09217c31.js.map} +1 -1
- package/dist/public/build/js/{scheduling.b70d4627.chunk.js → scheduling.6448eabd.chunk.js} +2 -2
- package/dist/public/build/js/{scheduling.b70d4627.chunk.js.map → scheduling.6448eabd.chunk.js.map} +1 -1
- package/dist/public/build/js/system.1114aa96.chunk.js +2 -0
- package/dist/public/build/js/system.1114aa96.chunk.js.map +1 -0
- package/dist/public/build/js/{yt-df-dialog.9ddda260.chunk.js → yt-df-dialog.4ad719bf.chunk.js} +2 -2
- package/dist/public/build/js/yt-df-dialog.4ad719bf.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +70 -70
- package/dist/shared/constants/settings-types.d.ts +1 -0
- package/package.json +3 -2
- package/dist/public/build/css/job.c7c99207.chunk.css.map +0 -1
- package/dist/public/build/css/main.2d3cbfcd.css +0 -10
- package/dist/public/build/css/main.2d3cbfcd.css.map +0 -1
- package/dist/public/build/css/navigation.0a9042b3.chunk.css +0 -2
- package/dist/public/build/css/navigation.0a9042b3.chunk.css.map +0 -1
- package/dist/public/build/js/3724.425d01ec.chunk.js +0 -2
- package/dist/public/build/js/5177.b4cec253.chunk.js +0 -2
- package/dist/public/build/js/5177.b4cec253.chunk.js.map +0 -1
- package/dist/public/build/js/6729.da9aa02f.chunk.js +0 -2
- package/dist/public/build/js/6729.da9aa02f.chunk.js.map +0 -1
- package/dist/public/build/js/accounts.2ba221c2.chunk.js.map +0 -1
- package/dist/public/build/js/app-navigation.b062662b.chunk.js.map +0 -1
- package/dist/public/build/js/chyt.7f99f87d.chunk.js +0 -2
- package/dist/public/build/js/chyt.7f99f87d.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-page-wrapper.894fbacc.chunk.js +0 -2
- package/dist/public/build/js/cluster-page-wrapper.894fbacc.chunk.js.map +0 -1
- package/dist/public/build/js/components.bbe331cb.chunk.js.map +0 -1
- package/dist/public/build/js/job.4fc50056.chunk.js +0 -2
- package/dist/public/build/js/job.4fc50056.chunk.js.map +0 -1
- package/dist/public/build/js/main.7981a440.js +0 -3
- package/dist/public/build/js/main.7981a440.js.map +0 -1
- package/dist/public/build/js/manage-tokens.286a4da9.chunk.js +0 -2
- package/dist/public/build/js/manage-tokens.286a4da9.chunk.js.map +0 -1
- package/dist/public/build/js/navigation.d891266d.chunk.js +0 -2
- package/dist/public/build/js/navigation.d891266d.chunk.js.map +0 -1
- package/dist/public/build/js/odin.df1cfe56.chunk.js +0 -2
- package/dist/public/build/js/odin.df1cfe56.chunk.js.map +0 -1
- package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js +0 -2
- package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js.map +0 -1
- package/dist/public/build/js/system.f759d3f0.chunk.js +0 -2
- package/dist/public/build/js/system.f759d3f0.chunk.js.map +0 -1
- package/dist/public/build/js/yt-df-dialog.9ddda260.chunk.js.map +0 -1
- /package/dist/public/build/js/{1879.23423388.chunk.js.LICENSE.txt → 1879.3975650a.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.7981a440.js.LICENSE.txt → main.6375dbc6.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"js/chyt.7f99f87d.chunk.js","mappings":"qNAQMA,GAAQC,EAAAA,EAAAA,GAAG,oBA2BV,SAASC,EAAeC,GAC3B,IACIC,EAaAD,EAbAC,SACAC,EAYAF,EAZAE,SACAC,EAWAH,EAXAG,KACAC,EAUAJ,EAVAI,UACAC,EASAL,EATAK,aACAC,EAQAN,EARAM,KACAC,EAOAP,EAPAO,YACAC,EAMAR,EANAQ,cACAC,EAKAT,EALAS,YACAC,EAIAV,EAJAU,aACAC,EAGAX,EAHAW,aAAYC,EAGZZ,EAFAa,eAAAA,OAAc,IAAAD,EAAG,SAAQA,EAAAE,EAEzBd,EADAe,iBAAAA,OAAgB,IAAAD,EAAG,SAAQA,EAE/BE,EAAgCC,EAAAA,UAAe,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9CI,EAAQF,EAAA,GAAEG,EAAWH,EAAA,GAC5BI,EAA0BL,EAAAA,SAAed,GAAQ,IAAGoB,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA7CE,EAAKD,EAAA,GAAEE,EAAQF,EAAA,IAEtBG,EAAAA,EAAAA,YAAU,WACND,EAAStB,GAAQ,GACrB,GAAG,CAACA,IAEJ,IAAMwB,GAAmBC,EAAAA,EAAAA,cACrB,SAACC,GACOlB,GAAcA,EAAakB,GAC/BR,EAAYQ,EAChB,GACA,CAAClB,IAGCmB,EAAgBb,EAAAA,aAAkB,WACpCU,GAAiB,GACbnB,GAAeiB,EAAStB,GAAQ,GACxC,GAAG,CAACK,EAAemB,EAAkBxB,IAE/B4B,GAAgBH,EAAAA,EAAAA,cAAY,WAC9BD,GAAiB,EACrB,GAAG,CAACA,IAQEK,EAAef,EAAAA,aAAkB,SAACgB,GAAY,OAAKR,EAASQ,QAAAA,EAAO,GAAG,GAAE,CAACR,IAEzES,GAAaN,EAAAA,EAAAA,cAAY,WAC3BD,GAAiB,GACjBzB,EAASsB,EACb,GAAG,CAACtB,EAAUyB,EAAkBH,IAE1BW,GAAqBP,EAAAA,EAAAA,cAAY,WACnCD,GAAiB,GACjBF,EAAStB,GAAQ,GACrB,GAAG,CAACwB,EAAkBxB,IAEhBiC,GAAUR,EAAAA,EAAAA,cACZ,SAACS,GACGV,GAAiB,GACjBzB,EAASmC,EACb,GACA,CAACV,EAAkBzB,IAGjBoC,EAAgBrB,EAAAA,aAClB,SAACsB,GACmB,UAAZA,EAAIC,KACJN,IAEY,WAAZK,EAAIC,KACJL,GAER,GACA,CAACD,EAAYC,IAGXM,EAAcnC,GAAc,IAElC,OACIoC,EAAAA,EAAAA,KAAA,OACItC,UAAWP,EAAM,KAAM,CAACO,GAAa,GAAIgB,EAAW,OAAS,KAC7DuB,QA3CgB,YACfvB,GAAYX,GACbsB,GAER,EAuCiC9B,SAExBmB,GACGwB,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAA5C,SAAA,CACKS,EACGA,EAAa,CACT2B,MAAOb,EACPtB,SAAU8B,EACV5B,UAAWP,EAAM,WACjBiD,OAAQhB,EACRM,QAAAA,KAGJM,EAAAA,EAAAA,KAACK,EAAAA,EAAS,CACN3C,UAAWP,EAAM,WACjBmD,WAAS,EACT1C,KAAMmC,EACNJ,MAAOb,EACPyB,SAAUjB,EACVkB,UAAWZ,EACXQ,OAAQhB,IAGfzB,IACGuC,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAA5C,SAAA,EACIyC,EAAAA,EAAAA,KAACS,EAAAA,EAAM,CACH/C,UAAWP,EAAM,WACjBuD,KAAMvC,EACNwC,WAAY,CAACC,YAAapB,GAC1B5B,KAAMmC,EAAYxC,UAElByC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAS,QAASlD,KAAMmC,OAElCC,EAAAA,EAAAA,KAACS,EAAAA,EAAM,CACH/C,UAAWP,EAAM,WACjBuD,KAAMrC,EACNsC,WAAY,CAACC,YAAanB,GAC1B7B,KAAMmC,EAAYxC,UAElByC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAS,QAASlD,KAAMmC,aAM9CG,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,CACVA,GACCM,IACEmC,EAAAA,EAAAA,KAACS,EAAAA,EAAM,CACH/C,UAAWP,EAAM,UAAW,CAAC4D,KAAM,SACnCL,KAAK,WACLT,QAASZ,EACTzB,KAAMmC,EAAYxC,UAElByC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAS,SAAUlD,KAAMmC,UAO3D,CAEO,SAASiB,EAAUC,GAMtB,IALAhB,EAAOgB,EAAPhB,QAAOiB,EAAAD,EACPrD,KAAAA,OAAI,IAAAsD,EAAG,IAAGA,EAKV,OACIlB,EAAAA,EAAAA,KAACS,EAAAA,EAAM,CAAC/C,UAAWP,EAAM,YAAa8C,QAASA,EAASrC,KAAMA,EAAKL,UAC/DyC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAS,YAG3B,C,6KCvLM3D,GAAQC,EAAAA,EAAAA,GAAG,aAEX+D,GAAYC,EAAA,IAAAC,EAAAA,EAAAA,GAAAD,EACb,GAAK,SAAMC,EAAAA,EAAAA,GAAAD,EAAC,MACR,YAASC,EAAAA,EAAAA,GAAAD,EAAC,OACT,cAAWC,EAAAA,EAAAA,GAAAD,EACjB,gBAAiB,oBAAiBC,EAAAA,EAAAA,GAAAD,EAClC,iBAAkB,sBAAmBC,EAAAA,EAAAA,GAAAD,EACrC,gBAAiB,mBAAgBC,EAAAA,EAAAA,GAAAD,EACjC,iBAAkB,gBAAcA,GAafE,EAAQ,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAJ,GAAA,SAAAA,IAAA,IAAAK,GAAAC,EAAAA,EAAAA,GAAA,KAAAN,GAAA,QAAAO,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GASvB,OATuBP,EAAAF,EAAAU,KAAAC,MAAAX,EAAA,OAAAY,OAAAL,KACzB/B,QAAU,WACN,IAAAqC,EAAyDX,EAAKrE,MAAvDiF,EAAKD,EAALC,MAAO/E,EAAQ8E,EAAR9E,SAAUgF,EAAcF,EAAdE,eAAgBC,EAAaH,EAAbG,cACnCjF,GAKLA,GADkBkF,EAAAA,EAAAA,IAAmBH,EAAOC,EAAgBC,GAEhE,EAACd,CAAC,CAiBD,OAjBAgB,EAAAA,EAAAA,GAAArB,EAAA,EAAAxB,IAAA,SAAAH,MAED,WACI,IAAAiD,EAA0CC,KAAKvF,MAAxCI,EAASkF,EAATlF,UAAWoF,EAAKF,EAALE,MAAOP,EAAKK,EAALL,MAAOQ,EAAMH,EAANG,OAC1BC,EAAO7B,EAAaoB,GAAS,IAEnC,OACIrC,EAAAA,EAAAA,MAAA,QAAMxC,UAAWP,EAAM,CAAC4F,OAAAA,GAASrF,GAAYuC,QAAS4C,KAAK5C,QAAQ1C,SAAA,CAC9DuF,IAAS9C,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,EAAM,SAASI,SAAEuF,KAC5C9C,EAAAA,EAAAA,KAACiD,EAAAA,EAAO,CACJvF,UAAWP,EAAM,QACjB+F,QAASX,EAAQY,EAAAA,EAAOC,cAAcb,GAAS,YAAYhF,UAE3DyC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAASkC,EAAMK,KAAK,cAI1C,KAAC/B,CAAA,CA1BwB,CAAS/C,EAAAA,U,8QCjBhC+E,GAAInG,EAAAA,EAAAA,GAAM,WA8EKoG,GAzEKC,IAAAA,QACtBA,IAAAA,UAAoB,CAChBA,IAAAA,OACAA,IAAAA,MAAgB,CACZ7D,MAAO6D,IAAAA,OACP/F,KAAM+F,IAAAA,OACNC,QAASD,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,cAmEhC,SAAAE,IAAAlC,EAAAA,EAAAA,GAAA+B,EAAAG,GAAA,IAAAjC,GAAAC,EAAAA,EAAAA,GAAA6B,GAgBxB,SAAAA,EAAYjG,GAAsB,IAADqE,EAe4B,OAf5BC,EAAAA,EAAAA,GAAA,KAAA2B,IAC7B5B,EAAAF,EAAAU,KAAA,KAAM7E,IANFwB,MAAQP,EAAAA,YAAmCoD,EAC3CgC,gBAAiB,EAAOhC,EACxBiC,cAAe,EAAKjC,EACpBkC,sBAAuB,EA0C/BlC,EACAmC,aAAe,SAACrG,GACZ,IAAA6E,EAA8BX,EAAKrE,MAA5ByG,EAAKzB,EAALyB,MAAOD,EAAYxB,EAAZwB,aAEdnC,EAAKqC,SAAS,CAACvG,KAAAA,IACfkE,EAAKsC,gBAAgBxG,GAEhBA,EAAKsE,QACNgC,SAAAA,IAGJD,SAAAA,EAAerG,EACnB,EAACkE,EA8CDuC,gBAAkB,SAACC,GACU,IAADC,EAAAxB,EAAnBjB,EAAKiC,eACNjC,EAAKqC,SAAS,CACVG,MAAAA,EACAE,cAAc,EACdC,cAAe,IAEI,QAAvBF,GAAAxB,EAAAjB,EAAKrE,OAAMiH,oBAAY,IAAAH,GAAvBA,EAAAjC,KAAAS,EAA0B,CAAC4B,MAAM,IAEzC,EAxGI7C,EAAK8C,MAAQ,CACThH,KAAM,SAAUH,EAAQA,EAAMG,KAAOH,EAAMoH,YAC3CP,MAAO7G,EAAM6G,MACbG,cAAe,EACfD,cAAc,EACdM,UAAW,IAGfhD,EAAKiD,QAAUjD,EAAKiD,QAAQC,MAAIC,EAAAA,EAAAA,GAAAnD,IAChCA,EAAKvB,OAASuB,EAAKvB,OAAOyE,MAAIC,EAAAA,EAAAA,GAAAnD,IAC9BA,EAAKnB,UAAYmB,EAAKnB,UAAUqE,MAAIC,EAAAA,EAAAA,GAAAnD,IACpCA,EAAKoD,gBAAkBpD,EAAKoD,gBAAgBF,MAAIC,EAAAA,EAAAA,GAAAnD,IAChDA,EAAKqD,iBAAmBrD,EAAKqD,iBAAiBH,MAAIC,EAAAA,EAAAA,GAAAnD,IAAOA,CAC7D,CAcC,OAZDgB,EAAAA,EAAAA,GAAAY,EAAA,EAAAzD,IAAA,oBAAAH,MAcA,WACIkD,KAAKc,gBAAiB,CAC1B,GAAC,CAAA7D,IAAA,uBAAAH,MAED,WACIkD,KAAKe,cAAe,CACxB,GAAC,CAAA9D,IAAA,UAAAH,MAgBD,WAAW,IAADsF,EAAAC,EAINrC,KAAKmB,SAAS,CAACmB,SAAS,IAExBtC,KAAKc,gBAAiB,EACtBd,KAAKoB,gBAAgBpB,KAAK4B,MAAMhH,MAChCoF,KAAKgB,sBAAuB,EACV,QAAlBoB,GAAAC,EAAArC,KAAKvF,OAAMsH,eAAO,IAAAK,GAAlBA,EAAA9C,KAAA+C,EACJ,GAAC,CAAApF,IAAA,SAAAH,MAED,WAE+B,IAADyF,EAAAC,EAGMC,EAJhCzC,KAAKkC,kBACAlC,KAAKc,gBACW,QAAjByB,GAAAC,EAAAxC,KAAKvF,OAAM8C,cAAM,IAAAgF,GAAjBA,EAAAjD,KAAAkD,GAECxC,KAAKgB,sBACNhB,KAAK0C,gBAA+B,QAAhBD,EAACzC,KAAK4B,MAAMhH,YAAI,IAAA6H,EAAAA,EAAI,IAE5CzC,KAAKmB,SAAS,CAACmB,SAAS,GAC5B,GAAC,CAAArF,IAAA,YAAAH,MAED,SAAUE,GACN,IAAMC,EAAMD,EAAI2F,QAEhB,GArJW,KAqJP1F,EACAD,EAAI4F,iBACJ5C,KAAK6C,4BACF,GAzJE,KAyJE5F,EACPD,EAAI4F,iBACJ5C,KAAK8C,4BACF,GA7JD,KA6JK7F,EACP+C,KAAK+C,8BACF,GAhKA,KAgKI9F,EAAgB,CAAC,IAAD+F,EACL,QAAlBA,EAAAhD,KAAK/D,MAAMgH,eAAO,IAAAD,GAAlBA,EAAoBE,MACxB,CACJ,GAAC,CAAAjG,IAAA,kBAAAH,MAED,WAAmB,IAADqG,EAAAC,EACdpD,KAAKmB,SAAS,CAACG,MAAO,GAAIE,cAAc,EAAOC,cAAe,IACvC,QAAvB0B,GAAAC,EAAApD,KAAKvF,OAAMiH,oBAAY,IAAAyB,GAAvBA,EAAA7D,KAAA8D,EAA0B,CAACzB,MAAM,GACrC,GAAC,CAAA1E,IAAA,kBAAAH,MAaD,SAAgBlC,GACZ,IAAAyI,EAAwBrD,KAAKvF,MAAtB6I,EAAMD,EAANC,OAAQhC,EAAK+B,EAAL/B,MAEfiC,QAAQC,QAAQF,EAAOhC,EAAO1G,IAAO6I,KAAKzD,KAAKqB,gBACnD,GAAC,CAAApE,IAAA,mBAAAH,MAED,WAAoB,IAAD4G,EACRxC,EAASlB,KAAKvF,MAAdyG,MAEPA,SAAAA,IAGAlB,KAAKc,gBAAiB,EAEJ,QAAlB4C,EAAA1D,KAAK/D,MAAMgH,eAAO,IAAAS,GAAlBA,EAAoBR,MACxB,GAAC,CAAAjG,IAAA,kBAAAH,MAED,SAAgBlC,GAAe,IAAD+I,EACnBpE,EAASS,KAAKvF,MAAd8E,MACPS,KAAKmB,SAAS,CAACvG,KAAAA,IACf2E,SAAAA,EAAQ3E,GACU,QAAlB+I,EAAA3D,KAAK/D,MAAMgH,eAAO,IAAAU,GAAlBA,EAAoBT,MACxB,GAAC,CAAAjG,IAAA,eAAAH,MAED,SAAa2E,GACT,OAAOA,EAAgB,CAC3B,GAAC,CAAAxE,IAAA,mBAAAH,MAED,SAAiB8G,GACb,OAAOA,EAAY,CACvB,GAAC,CAAA3G,IAAA,eAAAH,MAED,SAAa+G,GACT,MAAuB,iBAATA,EAAoBA,EAAOA,EAAK/G,KAClD,GAAC,CAAAG,IAAA,yBAAAH,MAED,WACI,IAEI+G,EAFJC,EAA+B9D,KAAK4B,MAA7BH,EAAaqC,EAAbrC,cAAeH,EAAKwC,EAALxC,MAYtB,GARsB,IAAlBG,EACIH,EAAMpC,OAAS,IACf2E,EAAOvC,EAAM,IAGjBuC,EAAOvC,EAAMtB,KAAK+D,aAAatC,IAG/BoC,EAAM,CACN,IAAM/G,EAAQkD,KAAKgE,aAAaH,GAChC7D,KAAK0C,gBAAgB5F,GACrB,IAAOmH,EAAejE,KAAKvF,MAApBwJ,YACPA,SAAAA,EAAcJ,EAClB,CACJ,GAAC,CAAA5G,IAAA,uBAAAH,MAED,WACI,IAAAoH,EAA+BlE,KAAK4B,MAA7BH,EAAayC,EAAbzC,cAAeH,EAAK4C,EAAL5C,MAChB6C,EACgB,IAAlB1C,EAAsBzB,KAAKoE,iBAAiB9C,EAAMpC,OAAS,GAAKuC,EAAgB,EACpFzB,KAAKmB,SAAS,CAACM,cAAe0C,GAClC,GAAC,CAAAlH,IAAA,uBAAAH,MAED,WACI,IAAAuH,EAA+BrE,KAAK4B,MAA7BH,EAAa4C,EAAb5C,cAAeH,EAAK+C,EAAL/C,MAChBgD,EACF7C,IAAkBzB,KAAKoE,iBAAiB9C,EAAMpC,OAAS,GAAK,EAAIuC,EAAgB,EACpFzB,KAAKmB,SAAS,CAACM,cAAe6C,GAClC,GAAC,CAAArH,IAAA,cAAAH,MAED,WACI,IAAOlC,EAAQoF,KAAK4B,MAAbhH,KACP2J,EAAgDvE,KAAKvF,MAA9C+J,EAAWD,EAAXC,YAAa/G,EAAS8G,EAAT9G,UAAWgH,EAAQF,EAARE,SAAUC,EAAGH,EAAHG,IAEzC,OACIvH,EAAAA,EAAAA,KAACK,EAAAA,EAAS,CACNmH,UAAQ,EACR7H,MAAOlC,EACPC,UAAW4F,EAAE,WACb+D,YAAaA,EACbC,SAAUA,EACV/G,SAAUsC,KAAKiB,aACfc,QAAS/B,KAAK+B,QACdxE,OAAQyC,KAAKzC,OACbE,UAAWA,EACXmH,WAAY5E,KAAK/D,MACjByI,IAAKA,EACL/G,UAAWqC,KAAKrC,WAG5B,GAAC,CAAAV,IAAA,gBAAAH,MAED,SAAc+G,GACV,IAAMjD,EAAUiD,EAAKjD,QAErB,YACuB,IAAZA,IAA2BzD,EAAAA,EAAAA,KAAA,QAAMtC,UAAW4F,EAAE,gBAAgB/F,SAAEkG,GAE/E,GAAC,CAAA3D,IAAA,mBAAAH,MAED,SAAiB+G,GACb,IAAMjJ,EAAuB,iBAATiJ,EAAoBA,EAAOA,EAAKjJ,KAEpD,OACIyC,EAAAA,EAAAA,MAAA,QAAA3C,SAAA,CACK,iBAAoBmJ,GAAQ7D,KAAK6E,cAAchB,GAC/CjJ,IAGb,GAAC,CAAAqC,IAAA,aAAAH,MAED,SACI+G,EACAiB,EACA7H,EACApC,GACmB,IAADkK,EAAA,KACXtD,EAAiBzB,KAAK4B,MAAtBH,cACDuD,EAAgBvE,EAClB,OACA,CACIwE,SAAUxD,IAAkBzB,KAAKoE,iBAAiBU,GAAS,WAAQI,GAEvErK,GAGEiC,EAAQkD,KAAKgE,aAAaH,GAEhCsB,EAA4CnF,KAAKvF,MAA1C2K,EAAQD,EAARC,SAAUC,EAAUF,EAAVE,WAAYpB,EAAWkB,EAAXlB,YAEvBqB,EACFD,QAAAA,OACqB,IAAbD,EACFG,EAAAA,GAAUC,IAAIJ,EAASnI,KAAKwI,YAC5BzF,KAAK0F,iBAAiB1D,KAAKhC,MAErC,OACI7C,EAAAA,EAAAA,KAAA,MAEIwI,MAAO7I,EACPjC,UAAWmK,EACXjH,YAAa,WACTgH,EAAK/D,sBAAuB,EAC5BiD,SAAAA,EAAcJ,GACdkB,EAAKrC,gBAAgB5F,EACzB,EAAEpC,SAED4K,EAASzB,IATL5G,EAYjB,GAAC,CAAAA,IAAA,gBAAAH,MAED,WAEI,OAAOkD,KAAK/D,MAAMgH,QAAUjD,KAAK/D,MAAMgH,QAAQ2C,YAAc,EAAI,CACrE,GAAC,CAAA3I,IAAA,gBAAAH,MAED,SAAcwE,GACV,IAAOuE,EAAY7F,KAAKvF,MAAjBoL,SAEP,GAAIC,IAAUD,GACV,OAAOvE,EAAMyE,MAAM,EAAGF,GAAYvE,EAAMpC,QACrC,GAAI8G,IAAUH,GAAW,CAC5B,IAAOI,EAA+BJ,EAA/BI,YAAaC,EAAkBL,EAAlBK,eACpBC,EAAuCC,IAAW9E,EAAO4E,GAAeG,GAAAzK,EAAAA,EAAAA,GAAAuK,EAAA,GAAjEG,EAAaD,EAAA,GAAEE,EAAaF,EAAA,GACnC,GAAIC,EAAcpH,QAAUqH,EAAcrH,OAAQ,CAG9C,IAAMsH,EAAwBC,KAAKC,MAC/BD,KAAKE,IAAKL,EAAcpH,OAASoC,EAAMpC,OAAU+G,EAAa,IAElE,OAAOK,EACFP,MAAM,EAAGS,GACThH,OAAO+G,EAAcR,MAAM,EAAGE,EAAcO,GACrD,CAEI,OAAOlF,EAAMyE,MAAM,EAAGE,GAAe3E,EAAMpC,OAEnD,CACI,OAAOoC,CAEf,GAAC,CAAArE,IAAA,oBAAAH,MAED,SAAkBwE,GAA4B,IAADsF,EAAA,KACnC/L,EAAY4F,EAAE,WACdoG,EAAgBpG,EAAE,SAKlBqG,EAAkC,IAAjBxF,EAAMpC,QAAgBc,KAAK4B,MAAMhH,KACxD,OACI0G,IACIjE,EAAAA,EAAAA,MAAA,OAAKxC,UAAWA,EAAUH,SAAA,CACrBoM,GAAkB9G,KAAKqF,WAAW,YAAa,EAAG,WAAY5E,EAAE,cACjEtD,EAAAA,EAAAA,KAAA,MAAItC,UAAWgM,EAAeE,MAAO,CAACC,SAAUhH,KAAKiH,iBAAiBvM,UAClEyC,EAAAA,EAAAA,KAAC+J,IAAS,CACNC,aAVC,SAACrC,EAAe7H,GAAoB,OACrD2J,EAAKvB,WAAW/D,EAAMwD,GAAQA,EAAO7H,EAAK,EAU1BiC,OAAQoC,EAAMpC,OACdhB,KAAK,gBAM7B,GAAC,CAAAjB,IAAA,cAAAH,MAED,WACI,IAAAsK,EAAyCpH,KAAKvF,MAAvC4M,EAAcD,EAAdC,eAAgBC,EAAcF,EAAdE,eAChB9F,EAAgBxB,KAAK4B,MAArBJ,aAEDF,EAAQtB,KAAKuH,cAAcvH,KAAK4B,MAAMN,OAC5C,OACInE,EAAAA,EAAAA,KAACqK,EAAAA,EAAK,CACF3M,UAAWwM,EACXI,UAAWH,QAAAA,EAAkB,CAAC,eAAgB,aAC9CI,UAAW1H,KAAK/D,MAEhB0F,MAAO3B,KAAKc,gBAAkBU,GAAgBF,EAAMpC,OAAS,EAC7DyI,QAAS3H,KAAKkC,gBAAgBxH,SAE7BsF,KAAK4H,kBAAkBtG,IAGpC,GAAC,CAAArE,IAAA,SAAAH,MAED,WACI,IAAOjC,EAAamF,KAAKvF,MAAlBI,UACP,OACIwC,EAAAA,EAAAA,MAAA,OAAKxC,UAAW4F,EAAE,KAAM5F,GAAWH,SAAA,CAC9BsF,KAAK6H,cACL7H,KAAK8H,gBAGlB,IAAC,EAAA7K,IAAA,2BAAAH,MArUD,SAAgCrC,EAAqBsN,GACjD,IAAMnN,GAAQmN,EAAUzF,SAAW,SAAU7H,EAAQA,EAAMG,KAAOmN,EAAUnN,KAE5E,OAAIH,EAAM6G,QAAUyG,EAAUjG,WAAalH,IAASmN,EAAUnN,KACnD,KAIC,CAAC0G,MADC7G,EAAM6I,OAAO7I,EAAM6G,MAAO1G,GACpBkH,UAAWrH,EAAM6G,MAAO1G,KAAAA,EAGhD,KAAC8F,CAAA,CA9CuB,CAASsH,EAAAA,YAAhBtH,EACVuH,aAAe,CAClBC,SAAS,EACTtN,KAAM,GACN6C,WAAW,EACX6D,MAAO,GACP6G,iBAAkB,EAClB5K,OAAQ,WAAO,EACf+E,SAAS,E,+JC9FXhI,GAAQC,EAAAA,EAAAA,GAAG,WAOV,SAAS6N,EAAShK,GAAsD,IAApD1D,EAAQ0D,EAAR1D,SAAU+J,EAAQrG,EAARqG,SACjC,OAAOtH,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,EAAM,YAAa,CAACmK,SAAAA,IAAW/J,SAAEA,GAC7D,CAEO,SAAS2N,EAAIC,GAAqB,IAAnB5N,EAAQ4N,EAAR5N,SAClB,OAAOyC,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,EAAM,QAAQI,SAAEA,GAC5C,CAEO,SAAS6N,EAAaC,GAAqB,IAAnB9N,EAAQ8N,EAAR9N,SAC3B,OACIyC,EAAAA,EAAAA,KAACiL,EAAS,CAAA1N,UACNyC,EAAAA,EAAAA,KAACkL,EAAI,CAAA3N,SAAEA,KAGnB,CAEO,SAAS+N,EAAOC,GAAgC,IAA9BhO,EAAQgO,EAARhO,SAAUG,EAAS6N,EAAT7N,UAC/B,OAAOsC,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,EAAM,UAAWO,GAAWH,SAAEA,GAC1D,CAEO,SAASiO,EAAYC,GAAgC,IAA9BlO,EAAQkO,EAARlO,SAAUG,EAAS+N,EAAT/N,UACpC,OAAOsC,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,EAAM,gBAAiBO,GAAWH,SAAEA,GAChE,CAEO,SAASmO,EAAMC,GAAqB,IAAnBpO,EAAQoO,EAARpO,SACpB,OAAOyC,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,EAAM,WAAWI,SAAEA,GAC/C,CAEO,SAASqO,EAAOC,GAA4E,IAA1EpO,EAAIoO,EAAJpO,KAAMwC,EAAO4L,EAAP5L,QACrB6L,EAAWC,EAAAA,EAAQC,YAAYvO,GAAIwO,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClCC,EAAAA,IAAwB,IAC3BC,QAAQ,KAEZ,OACInM,EAAAA,EAAAA,KAAA,QACIC,QAASA,EACTvC,UAAWP,EAAM,WACjBiP,wBAAyB,CAACC,OAAQP,IAG9C,C,qJChDe,SAASQ,EAAazB,GAAoC,IAAD0B,EACpE,OAAAA,EAAA,SAAAhL,IAAAC,EAAAA,EAAAA,GAAAgL,EAAAjL,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAA8K,GAAA,SAAAA,IAAA,OAAA5K,EAAAA,EAAAA,GAAA,KAAA4K,GAAA/K,EAAAW,MAAA,KAAAN,UAAA,CAQK,OARLa,EAAAA,EAAAA,GAAA6J,EAAA,EAAA1M,IAAA,SAAAH,MAGI,WACI,OAAO8M,EAAAA,cACHzM,EAAAA,EAAAA,KAAC6K,GAASoB,EAAAA,EAAAA,GAAA,GAAKpJ,KAAKvF,QACpBoP,SAASC,eAAeC,EAAAA,GAEhC,KAACJ,CAAA,CARL,CAA+BjO,EAAAA,WAAegO,EACnCM,YAAW,aAAAxK,QAAgByK,EAAAA,EAAAA,IAAejC,GAAU,KAAA0B,CASnE,C,yHCXO,SAASQ,IACZ,IAAMC,GAAWC,EAAAA,EAAAA,MAEjB1O,EAAAA,WAAgB,WACZyO,GAASE,EAAAA,EAAAA,MACb,GAAG,CAACF,GACR,CAEO,SAASG,IAEZ,OADAJ,IACO,IACX,CAEO,SAASK,IACZ,IAAA9O,EAA8CC,EAAAA,WAAoCC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA3E+O,EAAe7O,EAAA,GAAE8O,EAAkB9O,EAAA,GAQ1C,OANAD,EAAAA,WAAgB,YACZgP,EAAAA,EAAAA,KAAsBjH,MAAK,SAAC3G,GACxB2N,EAAmB3N,EACvB,GACJ,GAAG,IAEI0N,CACX,CAEO,SAASG,EAAsBvM,GAIlC,IAHA1D,EAAQ0D,EAAR1D,SAIM8P,EAAkBD,IAExB,OAAOC,EAAkB9P,EAAS,CAAC8P,gBAAAA,IAAoB,IAC3D,C,0PCxBMI,EAAe,IAAIC,EAAAA,EAElB,SAASC,IACZ,OAAO,SAACX,EAAUY,GACd,IAAMnJ,EAAQmJ,IACRC,GAAUC,EAAAA,EAAAA,IAAWrJ,GACrBsJ,GAAUC,EAAAA,EAAAA,GAAYvJ,GACtBwJ,GAAUC,EAAAA,EAAAA,IAA0BzJ,GAE1CuI,EAAS,CAACjM,KAAMoN,EAAAA,GAAUC,UAE1B,IAAMC,GAAgB,IAAMJ,EAAQK,QAAQ,QAAU,CAAC,QAAmB,GAEpEC,EAAgB,IAAIC,IAAI,CAC1B,kBACA,UACA,QACA,SACA,iBAAenM,QAAAoM,EAAAA,EAAAA,GACZR,GACAI,IAGP,OAAOK,EAAAA,EAAAA,GACH,OACAb,EACA,CAACc,YAAUF,EAAAA,EAAAA,GAAMF,IACjB,CAACR,QAAAA,EAASa,YAAanB,EAAaoB,kCAEnCvI,MAAK,SAACwI,GAAU,IAADC,EACN5K,EAAQ2K,SAAY,QAARC,EAAJD,EAAME,cAAM,IAAAD,OAAA,EAAZA,EAAcE,KAAI,SAAAhO,GAAiC,IAA/BiO,EAAMjO,EAANiO,OAAMC,EAAAlO,EAAEmO,YAAAA,OAAW,IAAAD,EAAG,CAAC,EAACA,EACtD,OAAAlD,EAAAA,EAAAA,GAAA,CACIoD,MAAOH,GACJE,EAEX,IAEApC,EAAS,CAACjM,KAAMoN,EAAAA,GAAUmB,QAASR,KAAM,CAACA,KAAM,CAAC3K,MAAAA,KACrD,IAAE,OACK,SAACoL,IACCC,EAAAA,EAAAA,GAAYD,IACbvC,EAAS,CAACjM,KAAMoN,EAAAA,GAAUsB,QAASX,KAAM,CAACS,MAAAA,IAElD,GACR,CACJ,CAEO,SAASG,EAIZC,EACAC,GAEyC,IADxCC,GACuC/N,UAAAC,OAAA,QAAAgG,IAAAjG,UAAA,GAAAA,UAAA,GADG,CAAC,GAA3C+N,aAED,OAAO,SAAC7C,EAAUY,GACd,IAAMnJ,EAAQmJ,IACRC,GAAUC,EAAAA,EAAAA,IAAWrJ,GACrBsJ,GAAUC,EAAAA,EAAAA,GAAYvJ,GAE5B,OAAOiK,EAAAA,EAAAA,GAAciB,EAAQ9B,EAAS+B,EAAQ,CAAC7B,QAAAA,IAAUzH,MAAK,SAACwJ,GAI3D,OAHKD,GACD7C,EAASW,KAENmC,CACX,GACJ,CACJ,C,4HCpDM3S,GAAQC,EAAAA,EAAAA,GAAG,qBAEjB,SAAS2S,IACL,IAAM/C,GAAWC,EAAAA,EAAAA,MAEX1M,EAAWhC,EAAAA,aACb,SAACyR,GCpBF,IAA+BlB,EDqB1B9B,GCrB0B8B,EDqBKkB,ECpBhC,CAACjP,KAAMkP,EAAAA,GAAmBnB,KAAAA,IDqB7B,GACA,CAAC9B,IAGL,OACIhN,EAAAA,EAAAA,KAACkQ,EAAAA,EAAO,CACJC,YAAa,CACT,CACIC,KAAM,QACNC,MAAMrQ,EAAAA,EAAAA,KAACsQ,EAAY,CAAC/P,SAAUA,IAC9BgQ,UAAU,EACVC,iBAAkBrT,EAAM,gBAE5B,CACIiT,KAAM,UACNC,MAAMrQ,EAAAA,EAAAA,KAACyQ,EAAa,CAAClQ,SAAUA,KAEnC,CACI6P,KAAM,QACNC,MAAMrQ,EAAAA,EAAAA,KAAC0Q,EAAW,CAACnQ,SAAUA,KAEjC,CACI6P,KAAM,SACNC,MAAMrQ,EAAAA,EAAAA,KAAC2Q,EAAY,CAACpQ,SAAUA,KAElC,CACI6P,KAAM,UACNC,MAAMrQ,EAAAA,EAAAA,KAAC4Q,EAAqB,OAKhD,CAEA,SAASN,EAAYrP,GAA2D,IAAzDV,EAAQU,EAARV,SACbZ,GAAQkR,EAAAA,EAAAA,IAAYC,EAAAA,IAE1B,OACI9Q,EAAAA,EAAAA,KAACK,EAAAA,EAAS,CACNV,MAAOA,EACPY,SAAU,SAAC6P,GACP7P,EAAS,CAAC6P,KAAAA,GACd,EACA/I,YAAY,iCAGxB,CAEA,SAASoJ,EAAatF,GAA+D,IAA7D5K,EAAQ4K,EAAR5K,SACdZ,GAAQkR,EAAAA,EAAAA,IAAYE,EAAAA,IACpBC,GAAWH,EAAAA,EAAAA,IAAYI,EAAAA,IAEvB9M,EAAQ5F,EAAAA,SAAc,WACxB,OAAOyS,EAAS/B,KAAI,SAACvI,GACjB,MAAO,CACH/G,MAAO+G,EACPjJ,KAAMiJ,EAEd,GACJ,GAAG,CAACsK,IAEJ,OACIhR,EAAAA,EAAAA,KAACkR,EAAAA,EAAY,CACTxT,UAAWP,EAAM,iBACjB2F,MAAM,WACNnD,MAAOA,EACPwE,MAAOA,EACP3G,SAAU,SAAC2T,GACP5Q,EAAS,CAAC4Q,QAAAA,GACd,GAGZ,CAEA,SAASR,EAAYtF,GAA8D,IAA5D9K,EAAQ8K,EAAR9K,SACbZ,GAAQkR,EAAAA,EAAAA,IAAYO,EAAAA,IACpBC,GAAUR,EAAAA,EAAAA,IAAYS,EAAAA,IAEtBnN,EAAQ5F,EAAAA,SAAc,WACxB,OAAO8S,EAAQpC,KAAI,SAACvI,GAChB,MAAO,CACH/G,MAAO+G,EACPjJ,KAAMiJ,EAEd,GACJ,GAAG,CAAC2K,IAEJ,OACIrR,EAAAA,EAAAA,KAACkR,EAAAA,EAAY,CACTxT,UAAWP,EAAM,iBACjB2F,MAAM,UACNnD,MAAOA,EACPwE,MAAOA,EACP3G,SAAU,SAAC+T,GACPhR,EAAS,CAACgR,OAAAA,GACd,GAGZ,CAEA,SAASb,EAAWnF,GAA6D,IAA3DhL,EAAQgL,EAARhL,SACZZ,GAAQkR,EAAAA,EAAAA,IAAYW,EAAAA,IACpBC,GAASZ,EAAAA,EAAAA,IAAYa,EAAAA,IAErBvN,EAAQ5F,EAAAA,SAAc,WACxB,OAAOkT,EAAOxC,KAAI,SAACvI,GACf,MAAO,CACH/G,MAAO+G,EACPjJ,KAAMiJ,EAEd,GACJ,GAAG,CAAC+K,IACJ,OACIzR,EAAAA,EAAAA,KAACkR,EAAAA,EAAY,CACTxT,UAAWP,EAAM,iBACjB2F,MAAM,SACNnD,MAAOA,EACPwE,MAAOA,EACP3G,SAAU,SAACiH,GACPlE,EAAS,CAACkE,MAAAA,GACd,GAGZ,CAEA,SAASmM,IACL,IAAM5D,GAAWC,EAAAA,EAAAA,MAEjB3O,EAA8BC,EAAAA,UAAe,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA5CqT,EAAOnT,EAAA,GAAEoT,EAAUpT,EAAA,GACpByP,GAAU4C,EAAAA,EAAAA,IAAYgB,EAAAA,IAEtBC,GACF9R,EAAAA,EAAAA,KAAC+R,EAAAA,EAAmB,CAChBC,UAAWL,EACXxN,MAAO8J,EAAQgB,KAAI,SAACgD,GAAO,IAADC,EACtB,MAAO,CACH9B,KAAiC,QAA7B8B,EAAEC,EAAAA,GAAkBF,EAAEG,eAAO,IAAAF,EAAAA,EAAI/O,EAAAA,EAAOC,cAAc6O,EAAEG,QAC5DC,QAASJ,EAAEI,QACXvD,KAAM,CACFsD,OAAQH,EAAEG,QAGtB,IACAE,UAAW,SAAC3S,GACR,IAAM4S,EAAa5S,EAAMwG,QAAO,SAAC8L,GAAC,OAAKA,EAAEI,OAAO,IAAEpD,KAAI,SAACgD,GAAC,OAAKA,EAAEnD,KAAKsD,MAAM,IAC1EpF,EDrET,SAA+BiB,GAClC,OAAO,SAACjB,GACJ,OAAOA,GAASwF,EAAAA,EAAAA,IAAgB,6BAA8BvE,IAAU3H,MAAK,WACzE0G,EAASW,IACb,GACJ,CACJ,CC+DyB8E,CAAsBF,IAC/BX,GAAW,EACf,EACAc,SAAU,kBAAMd,GAAW,EAAM,IAIzC,OACI1R,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,CACVoU,GAAWG,GACZ5R,EAAAA,EAAAA,MAACO,EAAAA,EAAM,CAACC,KAAK,WAAWT,QAAS,kBAAM2R,GAAW,EAAK,EAACrU,SAAA,EACpDyC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAQ,qBAAqB,eAKnD,CAEA,QAAevC,EAAAA,KAAWwR,G,2DEhMnB,SAAS4C,EAAW1R,GAUvB,IATA2R,EAAE3R,EAAF2R,GACA/E,EAAO5M,EAAP4M,QACAgF,EAAK5R,EAAL4R,MACAC,EAAS7R,EAAT6R,UAOMC,EAAcH,GAAa,YAAPA,EAAmBA,EAAK,KAElD,OACI5S,EAAAA,EAAAA,KAACgT,EAAAA,EAAI,CAACC,QAAQ,SAASJ,MAAOA,EAAMtV,SAC/BwV,GACG7S,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,EACXyC,EAAAA,EAAAA,KAACkT,EAAAA,EAAI,CACDC,MAAON,EACPO,IAAG,IAAA/Q,OAAMwL,EAAO,KAAAxL,OAAIgR,EAAAA,GAAKC,WAAU,KAAAjR,OAAI0Q,GACvCQ,QAAM,EAAAhW,SAELwV,IAEJD,IACG9S,EAAAA,EAAAA,KAACwT,EAAAA,EAAe,CACZ/V,KAAMsV,EACNrS,KAAK,QACL+S,mBAAiB,EACjBC,eAAa,OAKzBvQ,EAAAA,EAAOwQ,UAIvB,C,sECtCMC,EAKF,CACAC,KAAM,UACNC,OAAQ,SACRC,OAAQ,UACRC,QAAS,OACTC,UAAW,WAGR,SAASC,GAAWjT,GAIvB,IAHAwD,EAAKxD,EAALwD,MAIA,OAAQA,GAGJzE,EAAAA,EAAAA,KAACmU,EAAAA,EAAK,CAAC1W,KAAMgH,EAAO0O,MAAOS,EAAUnP,GAAQ2P,WAAS,EAACC,YAAU,IAFjElR,EAAAA,EAAOwQ,QAIf,C,8GChBMxW,IAAQC,EAAAA,EAAAA,GAAG,qBAUV,SAASkX,GAAgBrT,GAAmE,IAAjE0O,EAAM1O,EAAN0O,OAAQN,EAAKpO,EAALoO,MAAOkF,EAAItT,EAAJsT,KAAM/J,EAAOvJ,EAAPuJ,QAASgK,EAAQvT,EAARuT,SACtDlC,EAAY,WACV3C,IACA6E,SAAAA,EAAW7E,GAEnB,EACA,OAAQA,GACJ,IAAK,OACL,IAAK,SACD,OAAO3P,EAAAA,EAAAA,KAACyU,GAAsB,CAAMpF,MAAAA,EAAOM,OAAAA,EAAQnF,QAAAA,EAAS8H,UAAAA,IAChE,IAAK,QACD,OAAOtS,EAAAA,EAAAA,KAAC0U,GAAqB,CAAMrF,MAAAA,EAAO7E,QAAAA,EAAS8H,UAAAA,EAAWiC,KAAAA,IAClE,QACI,OAAO,KAEnB,CASA,SAASE,GAAsBtJ,GAKsB,IAJjDkE,EAAKlE,EAALkE,MACAM,EAAMxE,EAANwE,OACAnF,EAAOW,EAAPX,QACA8H,EAASnH,EAATmH,UAEMtF,GAAW2H,EAAAA,GAAAA,KAEjBrW,EAA0BC,EAAAA,WAAqCC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAxDiR,EAAK/Q,EAAA,GAAEoW,EAAQpW,EAAA,GAEtB,OACIwB,EAAAA,EAAAA,KAAC6U,GAAAA,GAAU,CACPlD,SAAO,EACP/T,KAAK,IACLkX,qBAAmB,EACnBC,YAAa,CACTvM,OACItI,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAA5C,SAAA,CACK4F,EAAAA,EAAOC,cAAcuM,GAAQ,IAAEN,MAI5C2F,YAAa,CACTC,UAAWC,KAAYvF,IAE3BwF,MAAO,WACH,OAAOnI,EAAS0C,EAAe,OAAQ,CAACL,MAAOA,KAC1C/I,MAAK,WACF,MAAe,WAAXqJ,EACO3C,EAAS0C,EAAe,SAAU,CAACL,MAAAA,KAEnC,IAEf,IACC/I,MAAK,WACFgM,IACAsC,OAAS7M,EACb,IAAE,OACK,SAACwH,GAEJ,MADAqF,EAASrF,GACHA,CACV,GACR,EACA6F,OAAM,CACF,CACIrU,KAAM,QACNqP,KAAM,OACNiF,OAAQ,CACJ9X,UACI2C,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAA5C,SAAA,CAAE,4BAC4BoS,EAAO,gBAAY3P,EAAAA,EAAAA,KAACkL,EAAAA,GAAI,CAAA3N,SAAE8R,IAAa,UAIhFhN,QAAAoM,EAAAA,EAAAA,IACE6G,EAAAA,GAAAA,GAAgB,CAAC/F,MAExB/E,QAASA,GAGrB,CAOA,SAASkK,GAAqBrJ,GAKS,IAJnCgE,EAAKhE,EAALgE,MACA7E,EAAOa,EAAPb,QACA+J,EAAIlJ,EAAJkJ,KACAjC,EAASjH,EAATiH,UAEMtF,GAAW2H,EAAAA,GAAAA,KACjB/V,EAA0BL,EAAAA,WAAgBM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAnC2Q,EAAK1Q,EAAA,GAAE+V,EAAQ/V,EAAA,GAEtB,OACImB,EAAAA,EAAAA,KAAC6U,GAAAA,GAAU,CACPlD,SAAO,EACP/T,KAAK,IACLF,UAAWP,GAAM,SACjB4X,YAAa,CACTvM,OACItI,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAA5C,SAAA,CAAE,iBACeyC,EAAAA,EAAAA,KAACkL,EAAAA,GAAI,CAAA3N,SAAE8R,QAIhC2F,YAAa,CACTC,UAAW,SAEfzK,QAASA,EACT+K,cAAe,CAAChB,KAAMA,GACtBY,MAAO,SAACK,GACJ,IAAOvB,EAAauB,EAAK5H,WAAW6H,OAA7BxB,UACP,OAAOjH,EAAS0C,EAAe,QAAS,CAACL,MAAAA,EAAO4E,UAAAA,KAC3C3N,MAAK,WACFgM,IACAsC,OAAS7M,EACb,IAAE,OACK,SAACwH,GAEJ,MADAqF,EAASrF,GACHA,CACV,GACR,EACAmG,gBAAiB,SAACjR,GACd,IAAAkR,EAEIlR,EADAgR,OAASlB,EAAIoB,EAAJpB,KAAMN,EAAS0B,EAAT1B,UAEnB,OAAO2B,SAASrB,IAASN,EAC7B,EACAmB,OAAM,CACF,CACIrU,KAAM,QACNqP,KAAM,OACNyF,QAAS,OACTR,OAAQ,CACJhO,YAAalE,EAAAA,EAAOwQ,WAG5B,CACI5S,KAAM,UACNqP,KAAM,YACN0F,QACI,6OACJD,QAAS,aAEb,CACI9U,KAAM,QACNqP,KAAM,kBACN2F,oBAAqB,CACjBC,KAAM,YACNC,SAAU,SAACC,GAAC,OAAKA,CAAC,GAEtBb,OAAQ,CACJ9X,UACIyC,EAAAA,EAAAA,KAACgT,EAAAA,EAAI,CAACH,MAAM,UAAUI,QAAQ,SAAQ1V,SAAA,2DAKjD8E,QAAAoM,EAAAA,EAAAA,IACE6G,EAAAA,GAAAA,GAAgB,CAAC/F,OAIpC,CCnLA,IAAMpS,IAAQC,EAAAA,EAAAA,GAAG,uBAEV,SAAS+Y,GAAqBC,GACjC,IAAMvI,GAAUgD,EAAAA,EAAAA,IAAY/C,EAAAA,IACtBuI,GAAoBxF,EAAAA,EAAAA,IAAYyF,GAAAA,GAChCtJ,GAAWC,EAAAA,EAAAA,MAEjB,OAAO1O,EAAAA,aACH,SAAC8Q,GACOgH,GACAE,YAAW,WACPvJ,GACIwJ,EAAAA,GAAAA,IAAiB,CACbC,OAAQC,GAAAA,EAAYC,KACpBC,MAAM,YACNC,SAAU,CAAChJ,QAAAA,EAASiJ,OAAQzH,KAGxC,GAAG,KACH+G,KAEAW,GAAAA,GAAUC,oBAAoB,CAAC3H,MAAAA,EAAOxB,QAAAA,GAE9C,GACA,CAACA,EAASuI,EAAYC,EAAmBrJ,GAEjD,CAEO,SAASiK,GAAiBhW,GAgB7B,IAfAoO,EAAKpO,EAALoO,MACAkF,EAAItT,EAAJsT,KACA2C,EAAcjW,EAAdiW,eACAC,EAAmBlW,EAAnBkW,oBACA3C,EAAQvT,EAARuT,SACA4C,EAAUnW,EAAVmW,WACAvE,EAAK5R,EAAL4R,MAUAvU,EAAqDC,EAAAA,WAElDC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAFI+Y,EAAmB7Y,EAAA,GAAE8Y,EAAqB9Y,EAAA,GAI3C+Y,EAAQ,CACVvU,MAAMhD,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAQ,gBACpBrD,KAAM,QACNkS,OAAQ,WACJ2H,EAAsB,QAC1B,GAEEE,EAAO,CACTxU,MAAMhD,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAQ,gBACpBrD,KAAM,OACNkS,OAAQ,WACJ2H,EAAsB,OAC1B,GAEEG,EAAS,CACXzU,MAAMhD,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAQ,cACpBrD,KAAM,SACNkS,OAAQ,WACJ2H,EAAsB,SAC1B,GAGEI,EAA4C,CAAC,CAACH,EAAOC,GAAO,CAACC,IAE7DE,GACF3X,EAAAA,EAAAA,KAACS,EAAAA,EAAM,CACHC,KAAgB,cAAVmS,EAAwB,iBAAmB,OACjD5S,QAAS,kBAAMmX,EAAW/H,EAAM,EAAC9R,UAEjCyC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAQ,UAItB,OACIZ,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,MACcwK,IAAxBsP,IACGrX,EAAAA,EAAAA,KAACsU,GAAgB,CACbjF,MAAOA,EACPkF,KAAMA,EACN5E,OAAQ0H,EACR7M,QAAS,kBAAM8M,OAAsBvP,EAAU,EAC/CyM,SAAUA,IAGjB0C,GACGhX,EAAAA,EAAAA,MAAA,QAAMxC,UAAWP,GAAM,sBAAuBga,GAAqB5Z,SAAA,EAC/DyC,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,QAAQI,SAAEoa,KAEjC3X,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,QAAQI,UAC3ByC,EAAAA,EAAAA,KAACS,EAAAA,EAAM,CACH+H,MAAM,QACN9H,KAAK,WACLT,QAAS,WACLsX,EAAM5H,QACV,EAAEpS,UAEFyC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAQ,qBAItBd,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,QAAQI,UAC3ByC,EAAAA,EAAAA,KAACS,EAAAA,EAAM,CACH+H,MAAM,OACN9H,KAAK,WACLT,QAAS,WACLuX,EAAK7H,QACT,EAAEpS,UAEFyC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAQ,qBAItBd,EAAAA,EAAAA,KAACS,EAAAA,EAAM,CACH+H,MAAM,SACN9H,KAAK,WACLT,QAAS,WACLwX,EAAO9H,QACX,EAAEpS,UAEFyC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAQ,oBAItBZ,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,CACVoa,GACD3X,EAAAA,EAAAA,KAAC4X,GAAAA,EAAY,CACTC,UACI7X,EAAAA,EAAAA,KAACS,EAAAA,EAAM,CAACC,KAAgB,cAAVmS,EAAwB,iBAAmB,OAAOtV,UAC5DyC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAQ,iBAGtBqD,MAAOuT,SAM/B,CC5HA,IAAMva,IAAQC,EAAAA,EAAAA,GAAG,wBAsOjB,SAAS0a,GAAcC,GAMnB,IAADC,EALC5F,EAAM2F,EAAN3F,OACA3P,EAAasV,EAAbtV,cAKMuK,GAAWC,EAAAA,EAAAA,MACXgL,GAAYpH,EAAAA,EAAAA,IAAYqH,EAAAA,IAC9B,OACIlY,EAAAA,EAAAA,KAACmY,EAAAA,GAAYlM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACTzJ,gBAAc,EACdC,cAAeA,EACf2P,OAAQA,EACR5J,MAAgC,QAA3BwP,EAAE7F,EAAAA,GAAkBC,UAAO,IAAA4F,EAAAA,EAAI7U,EAAAA,EAAOC,cAAcgP,IACrD6F,EAAU7F,IAAO,IACrBgG,OAAQ,SAACC,EAAKC,EAAWC,GACrBvL,EL1QT,SACHoF,EACA7P,EACAgW,GAEA,OAAO,SAACvL,EAAUY,GACd,IAAM4K,GAAgBC,EAAAA,EAAAA,IAA0B7K,KAC1CqK,GAAYS,EAAAA,EAAAA,IAAqBF,EAAe,CAACpG,OAAAA,EAAQ7P,MAAAA,GAAQgW,GAEvEvL,EAAS,CAACjM,KAAMkP,EAAAA,GAAmBnB,KAAM,CAACmJ,UAAAA,IAC9C,CACJ,CK+PyBU,CAAoBN,EAAKC,EAAWC,GACjD,IAGZ,CAEA,SAASK,GAAYC,GAA6B,IAA3BlZ,EAAKkZ,EAALlZ,MACnB,IAAKA,EACD,OAAOK,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,gBAAgBI,SAAE4F,EAAAA,EAAOwQ,WAG3D,IAAMmF,EAAe3V,EAAAA,EAAO4V,SAASpZ,GAC/BqZ,EAAYF,EAAKG,YAAY,KACnC,OACI/Y,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,EACXyC,EAAAA,EAAAA,KAAA,QAAAzC,SAAOub,EAAKI,UAAU,EAAGF,MACzBhZ,EAAAA,EAAAA,KAAA,OAAAzC,SAAMub,EAAKI,UAAUF,EAAY,OAG7C,CAEA,SAASG,KACL,IAAMhV,GAAQ0M,EAAAA,EAAAA,IAAYuI,EAAAA,IACpBvL,GAAUgD,EAAAA,EAAAA,IAAY/C,EAAAA,IAE5BuL,GAAoCC,EAAAA,EAAAA,MAA7BlD,EAAUiD,EAAVjD,WAAYmD,EAAaF,EAAbE,cAGbtL,EAjRV,SAA4BJ,EAAiBuJ,GACzC,IAAMoC,GAAiB3I,EAAAA,EAAAA,IAAY3C,EAAAA,IAgOnC,OA9NyC3P,EAAAA,SAAc,WACnD,IAAMkb,EAAgB,CAClBlF,KAAM,CACFnE,KAAM,OACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,SAC/BuH,OAAM,SAAA1Y,GAAS,IAAP2Y,EAAG3Y,EAAH2Y,IACJ,OAAQA,EAAIrF,MAGRvU,EAAAA,EAAAA,KAAC6Z,EAAAA,EAAa,CACVnc,UAAWP,GAAM,QACjB0Q,QAASA,EACT0G,KAAM,CAACA,KAAMqF,EAAIrF,KAAMuF,KAAM,cALjC3W,EAAAA,EAAOwQ,QAQf,EACAoG,MAAO,KAEXC,eAAgB,CACZ5J,KAAM,iBACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,mBAC/BuH,OAAM,SAAAxO,GAAS,IAAPyO,EAAGzO,EAAHyO,IACJ,OACI5Z,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,gBAAgBI,cACXwK,IAAvB6R,EAAII,eACC7W,EAAAA,EAAOwQ,SACPxQ,EAAAA,EAAO8W,OAAOL,EAAII,iBAGpC,EACAE,MAAO,QACPH,MAAO,KAEXI,UAAW,CACP/J,KAAM,QACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,cAC/BuH,OAAM,SAAAtO,GAAS,IAAPuO,EAAGvO,EAAHuO,IACJ,OACI5Z,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,gBAAgBI,cAChBwK,IAAlB6R,EAAIO,UACChX,EAAAA,EAAOwQ,SACPxQ,EAAAA,EAAO8W,OAAOL,EAAIO,YAGpC,EACAD,MAAO,QACPH,MAAO,KAEXK,aAAc,CACVhK,KAAM,SACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,iBAC/BuH,OAAM,SAAApO,GAAS,IAAPqO,EAAGrO,EAAHqO,IACJ,OACI5Z,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,gBAAgBI,cACbwK,IAArB6R,EAAIQ,aACCjX,EAAAA,EAAOwQ,SACPxQ,EAAAA,EAAOkX,MAAMT,EAAIQ,eAGnC,EACAF,MAAO,QACPH,MAAO,KAEXxI,OAAQ,CACJnB,KAAM,SACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,WAC/BuH,OAAM,SAAAlO,GAAS,IAAPmO,EAAGnO,EAAHmO,IACJ,OACI1Z,EAAAA,EAAAA,MAAC+C,EAAAA,EAAO,CACJvF,UAAWP,GAAM,SAAUA,GAAM,iBACjC+F,QAASC,EAAAA,EAAOC,cAAcwW,EAAIU,eAAe/c,SAAA,EAEjDyC,EAAAA,EAAAA,KAACkU,GAAW,CAACzP,MAAOmV,EAAIrI,SACvBqI,EAAIU,gBACDpa,EAAAA,EAAAA,MAAC+K,EAAAA,GAAS,CAAA1N,SAAA,CAAC,KAEPyC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CACDnD,UAAWP,GAAM,aACjB2D,QAAS,8BAMjC,EACAiZ,MAAO,KAEXQ,cAAe,CACXnK,KAAM,gBACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,gBAAgB3P,eAAa,IAC5DkX,OAAM,SAAAhO,GAAS,IAAPiO,EAAGjO,EAAHiO,IACJ,OAAO5Z,EAAAA,EAAAA,KAAC4Y,GAAY,CAACjZ,MAAOia,EAAIW,eACpC,EACAR,MAAO,KAEXS,0BAA2B,CACvBpK,KAAM,4BACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,8BAC/BuH,OAAM,SAAA9N,GAAS,IAAP+N,EAAG/N,EAAH+N,IACJ,OAAO5Z,EAAAA,EAAAA,KAAC4Y,GAAY,CAACjZ,MAAOia,EAAIY,2BACpC,EACAT,MAAO,KAEXU,MAAO,CACHrK,KAAM,QACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,UAC/BuH,OAAM,SAAAe,GAAS,IAAPd,EAAGc,EAAHd,IACJ,OACI5Z,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,gBAAgBI,UAAEyC,EAAAA,EAAAA,KAACmU,EAAAA,EAAK,CAAC1W,KAAMmc,EAAIa,SAElE,EACAV,MAAO,KAEXY,mCAAoC,CAChCvK,KAAM,qCACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,uCAC/BuH,OAAM,SAAAiB,GAAS,IAAPhB,EAAGgB,EAAHhB,IACJ,OAAO5Z,EAAAA,EAAAA,KAAC4Y,GAAY,CAACjZ,MAAOia,EAAIe,oCACpC,EACAZ,MAAO,KAEXc,yBAA0B,CACtBzK,KAAM,2BACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,2BAA2B3P,eAAa,IACvEkX,OAAM,SAAAmB,GAAS,IAAPlB,EAAGkB,EAAHlB,IACJ,OAAO5Z,EAAAA,EAAAA,KAAC4Y,GAAY,CAACjZ,MAAOia,EAAIiB,0BACpC,EACAd,MAAO,KAEXgB,wBAAyB,CACrB3K,KAAM,0BACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,0BAA0B3P,eAAa,IACtEkX,OAAM,SAAAqB,GAAS,IAAPpB,EAAGoB,EAAHpB,IACJ,OAAO5Z,EAAAA,EAAAA,KAAC4Y,GAAY,CAACjZ,MAAOia,EAAImB,yBACpC,EACAhB,MAAO,KAEX5I,QAAS,CACLf,KAAM,UACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,YAC/BuH,OAAM,SAAAsB,GAAS,IAAPrB,EAAGqB,EAAHrB,IACJ,OACI5Z,EAAAA,EAAAA,KAAA,OAAKtC,UAAWP,GAAM,eAAgBA,GAAM,YAAYI,SAClDqc,EAAIzI,SAGFnR,EAAAA,EAAAA,KAACkb,EAAAA,EAAW,CAACxd,UAAWP,GAAM,cAAeiT,KAAMwJ,EAAIzI,UAFvDhO,EAAAA,EAAOwQ,UAMvB,EACAoG,MAAO,KAEXtV,MAAO,CACH2L,KAAM,QACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,UAC/BuH,OAAM,SAAAwB,GAAS,IAAPvB,EAAGuB,EAAHvB,IACJ,OACI5Z,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,gBAAgBI,UACnCyC,EAAAA,EAAAA,KAACkU,GAAW,CAACzP,MAAOmV,EAAInV,SAGpC,EACAsV,MAAO,MAITqB,EAAM5B,EAAevK,KAAI,SAACgD,GAAC,OAAKwH,EAAcxH,EAAE,IACtD,MAAM,CACF,CACI7B,KAAM,QACNsJ,QAAQ1Z,EAAAA,EAAAA,KAAC8X,GAAc,CAAC1F,OAAO,UAC/BuH,OAAM,SAAA0B,GAAS,IAAPzB,EAAGyB,EAAHzB,IACJ,OACI1Z,EAAAA,EAAAA,MAAA,OAAA3C,SAAA,EACIyC,EAAAA,EAAAA,KAACkT,EAAAA,EAAI,CACDE,IAAG,IAAA/Q,OAAMwL,EAAO,KAAAxL,OAAIgR,EAAAA,GAAKsD,KAAI,KAAAtU,OAAIuX,EAAIvK,OACrC8D,MAAM,UACNI,QAAM,EAAAhW,SAELqc,EAAIvK,SAETrP,EAAAA,EAAAA,KAACwT,EAAAA,EAAe,CACZ/V,KAAMmc,EAAIvK,MACV3O,KAAK,QACL+S,mBAAiB,EACjBC,eAAa,KAEjB1T,EAAAA,EAAAA,KAAA,OAAAzC,UACIyC,EAAAA,EAAAA,KAAC2S,EAAW,CACRC,GAAIgH,EAAI0B,gBACRzN,QAASA,EACTgF,MAAM,YACNC,WAAS,QAK7B,IACHzQ,QAAAoM,EAAAA,EAAAA,GACE2M,GAAG,CACN,CACIhL,KAAM,UACNsJ,OAAQ,GACRC,OAAM,SAAA4B,GAAS,IAAP3B,EAAG2B,EAAH3B,IACJ,OACI5Z,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,gBAAgBI,UACnCyC,EAAAA,EAAAA,KAACiX,GAAiB,CACd5H,MAAOuK,EAAIvK,MACXkF,KAAMqF,EAAIrF,KACV6C,WAAYA,EACZvE,MAAM,eAItB,EACAqH,MAAO,SACPH,MAAO,KAGnB,GAAG,CAAClM,EAAS2L,EAAgBpC,GAGjC,CA+CoBoE,CAAmB3N,EAFhBsI,GAAqBC,IAIxC,OACIlW,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,EACXyC,EAAAA,EAAAA,KAACyb,EAAAA,GAAW,CACR/d,UAAWP,KACX0Z,SAAU6E,EAAAA,GACVC,YAAU,EACV1N,QAASA,EACTa,KAAM3K,IAEToV,IAGb,CAEA,SAAehb,EAAAA,KAAW4a,IC9TnB,SAASyC,KACZ,IAAM5O,GAAWC,EAAAA,EAAAA,MACX4O,EAAStd,EAAAA,aAAkB,WAC7ByO,EAASW,IACb,GAAG,CAACX,IAIJ,OAFA8O,EAAAA,EAAAA,IAAWD,IAEJ7b,EAAAA,EAAAA,KAAC+b,EAAAA,GAAiB,CAACC,SAAShc,EAAAA,EAAAA,KAAC+P,EAAmB,IAAK7M,SAASlD,EAAAA,EAAAA,KAACmZ,GAAiB,KAC3F,C,2ECTM1L,GAAe,IAAIC,EAAAA,EAElB,SAASuO,GAAe5M,GAC3B,OAAO,SAACrC,EAAUY,GACdZ,EAAS,CAACjM,KAAMmb,EAAAA,GAAY9N,QAASU,KAAM,CAACqN,cAAe9M,KAC3D,IAAM5K,EAAQmJ,IACRC,GAAUC,EAAAA,EAAAA,IAAWrJ,GACrBsJ,GAAUC,EAAAA,EAAAA,GAAYvJ,GAC5B,OAAOiK,EAAAA,EAAAA,GACH,iBACAb,EACA,CAACwB,MAAAA,GACD,CACItB,QAAAA,EACAa,YAAanB,GAAaoB,gCAC1BuN,gBAAgB,IAGnB9V,MAAK,SAACwI,GACH9B,EAAS,CAACjM,KAAMmb,EAAAA,GAAY5M,QAASR,KAAM,CAACA,KAAMA,EAAKE,SAC3D,IAAE,OACK,SAACO,IACCC,EAAAA,EAAAA,GAAYD,IACbvC,EAAS,CAACjM,KAAMmb,EAAAA,GAAYzM,QAASX,KAAM,CAACS,MAAAA,IAEpD,GACR,CACJ,CCrCO,IAAM8M,GAAoB,SAAC5X,GAAgB,OAAKA,EAAM6X,KAAKxF,OAAOhI,IAAK,EACjEyN,GAAqB,SAAC9X,GAAgB,OAAKA,EAAM6X,KAAKxF,OAAOvH,KAAM,EAEnEiN,GAA8B,SAAC/X,GACxC,IAAAgY,EAA0BhY,EAAM6X,KAAKxF,OAA9B4F,EAAMD,EAANC,OAAQC,EAAOF,EAAPE,QACf,OAAQD,GAAUC,CACtB,EAEaC,GAA0B,SAACnY,GAAgB,IAAAoY,EAAA,OAA2B,QAA3BA,EAAKpY,EAAM6X,KAAKxF,OAAOhI,YAAI,IAAA+N,OAAA,EAAtBA,EAAwBtN,KAAM,E,2DCJpF,SAASuN,KACZ,IAAMzN,GAAQwB,EAAAA,EAAAA,IAAYkM,EAAAA,IAC1B,OACInH,QAAQvG,KACJrP,EAAAA,EAAAA,KAACgd,GAAAA,GAAgB,CAACC,KAAI,+CAAA5a,OAAiDgN,IAGnF,C,0GCsIM6N,GAA8D,CAChEC,OAAQ,CACJC,aAAY,SAACzd,GACT,MAAO,CAACA,MAAiB,OAAVA,OAAiBoI,EAAapI,EACjD,EACA0d,eAAc,SAAC1d,EAAY2d,GACvB,OAAO3d,aAAK,EAALA,EAAOA,KAClB,GAEJ4d,KAAM,CACFH,aAAY,SAACzd,GACT,MAAO,CAACA,WAAiBoI,IAAVpI,EAAsB6d,KAAKC,UAAU9d,EAAO,KAAM,QAAKoI,EAC1E,EACAsV,eAAc,SAAC1d,EAAY+d,GACvB,IACI,OAAOF,KAAKG,MAAMhe,EAAMA,MAC5B,CAAE,MAAAie,GACE,OAAOF,CACX,CACJ,GAEJG,MAAO,CACHT,aAAY,SAACzd,GACT,OAAO6d,KAAKC,UAAU9d,EAC1B,EACA0d,eAAc,SAAC1d,EAAY2d,GACvB,YAAiBvV,IAAVpI,EAAsB6d,KAAKG,MAAMhe,QAASoI,CACrD,GAEJ+V,oBAAqB,CACjBV,aAAY,SAACzd,GACT,OAAOA,EAAQ,CAACA,GAAS,EAC7B,EACA0d,eAAc,SAAC1d,EAAsB2d,GACjC,OAAO3d,aAAK,EAALA,EAAQ,EACnB,ICpLD,IAAMoe,GAAqB,SAACtZ,GAAgB,OAAKA,EAAM6X,KAAK/D,QAAQzJ,IAAK,EACnEkP,GAA0B,SAACvZ,GAAgB,OAAKA,EAAM6X,KAAK/D,QAAQ0F,SAAU,EAC7EC,GAAsB,SAACzZ,GAAgB,OAAKA,EAAM6X,KAAK/D,QAAQhJ,KAAM,E,WCQ5E9B,GAAe,IAAIC,EAAAA,EAElB,SAASyQ,GAAsB9O,GAClC,OAAO,SAACrC,EAAUY,GACd,IAAMnJ,EAAQmJ,IACRC,GAAUC,EAAAA,EAAAA,IAAWrJ,GACrBsJ,GAAUC,EAAAA,EAAAA,GAAYvJ,GAE5B,OAAOiK,EAAAA,EAAAA,GACH,cACAb,EACA,CAACwB,MAAAA,GACD,CACItB,QAAAA,EACAa,YAAanB,GAAaoB,gCAC1BuN,gBAAgB,IAGnB9V,MAAK,SAACwI,GACH9B,EAAS,CAACjM,KAAMqd,EAAAA,GAAa9O,QAASR,KAAM,CAACA,KAAMA,EAAKE,OAAQiP,UAAW5O,IAC/E,IAAE,OACK,SAACE,IACCC,EAAAA,EAAAA,GAAYD,IACbvC,EAAS,CAACjM,KAAMqd,EAAAA,GAAa3O,QAASX,KAAM,CAACS,MAAAA,IAErD,GACR,CACJ,C,gBCpBM9B,GAAe,IAAIC,EAAAA,EAElB,SAAS2Q,GACZhP,EACAiP,GAEA,OAAO,SAACtR,EAAUY,GACd,IAAMnJ,EAAQmJ,IACRC,GAAUC,EAAAA,EAAAA,IAAWrJ,GACrBsJ,GAAUC,EAAAA,EAAAA,GAAYvJ,GAG5B,OAFAuI,EAAS,CAACjM,KAAMwd,EAAAA,GAAanQ,QAASU,KAAM,CAACmP,UAAW5O,MAEjDmP,EAAAA,GAAAA,KACH9P,EAAAA,EAAAA,GACI,mBACAb,EACA,CAACwB,MAAAA,GACD,CACItB,QAAAA,EACAa,YAAanB,GAAaoB,gCAC1BuN,gBAAgB,IAGxB,CACIqC,YAAa,yBAA2BpP,EACxCqP,kBAAkB,EAClBtC,gBAAiBkC,IAGpBhY,MAAK,SAACwI,GACH9B,EAAS,CAACjM,KAAMwd,EAAAA,GAAajP,QAASR,KAAM,CAACA,KAAMA,EAAKE,OAAQiP,UAAW5O,IAC/E,IAAE,OACK,SAACE,IACCC,EAAAA,EAAAA,GAAYD,IACbvC,EAAS,CAACjM,KAAMwd,EAAAA,GAAa9O,QAASX,KAAM,CAACS,MAAAA,IAErD,GACR,CACJ,CCvDO,IAAMoP,GAAuB,SAACla,GAAgB,OAAKA,EAAM6X,KAAKsC,QAAQlC,MAAO,EACvEmC,GAAqB,SAACpa,GAAgB,OAAKA,EAAM6X,KAAKsC,QAAQ9P,IAAK,EACnEgQ,GAA0B,SAACra,GAAgB,OAAKA,EAAM6X,KAAKsC,QAAQX,SAAU,EAC7Ec,GAAsB,SAACta,GAAgB,OAAKA,EAAM6X,KAAKsC,QAAQrP,KAAM,E,wBCoC5EpS,IAAQC,EAAAA,EAAAA,GAAG,0BAEjB,SAAS4hB,KAGkD,IAAD/d,EAAAa,UAAAC,OAAA,QAAAgG,IAAAjG,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAFnDwc,EAAgBrd,EAAhBqd,iBACAW,EAAQhe,EAARge,SAEMjS,GAAWC,EAAAA,EAAAA,MACXoC,GAAQwB,EAAAA,EAAAA,IAAYkM,EAAAA,IAE1Bxe,EAAAA,SAAc,WACN8Q,IAAU4P,GACVjS,EAASqR,GAAsBhP,EAAOiP,GAE9C,GAAG,CAACjP,EAAO4P,EAAUX,EAAkBtR,IAEvC,IAAMkS,GAAcrO,EAAAA,EAAAA,IAAYkN,IAC1BE,GAAYpN,EAAAA,EAAAA,IAAYmN,IACxBzO,GAAQsB,EAAAA,EAAAA,IAAYqN,IACpBiB,GAAkBtO,EAAAA,EAAAA,IAAYuO,GAAAA,IAEpC,MAAO,CAAC/P,MAAAA,EAAO6P,YAAAA,EAAajB,UAAAA,EAAW1O,MAAAA,EAAO4P,gBAAAA,EAClD,CAEO,SAASE,KACZ,IAAMrS,GAAWC,EAAAA,EAAAA,MACjBqS,EAAqDN,GAAe,CAACC,UAAU,IAAxE1P,EAAK+P,EAAL/P,MAAOF,EAAKiQ,EAALjQ,MAAO6P,EAAWI,EAAXJ,YAAaC,EAAeG,EAAfH,gBAE5BtD,EAAStd,EAAAA,aAAkB,WACzB8Q,GACArC,EAASmR,GAAsB9O,GAEvC,GAAG,CAACA,EAAOrC,IAIX,OAFA8O,EAAAA,EAAAA,IAAWD,IAGP3b,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,CACVgS,IAASvP,EAAAA,EAAAA,KAACuf,GAAAA,EAAK,CAACC,cAAY,EAACjQ,MAAOA,IACnC2P,GACEhf,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,EACXyC,EAAAA,EAAAA,KAAA,OAAKtC,UAAWP,GAAM,QAAQI,UAC1ByC,EAAAA,EAAAA,KAACyf,GAAqB,CAACR,UAAQ,OAEnCjf,EAAAA,EAAAA,KAAC0f,GAAW,CAACrQ,MAAOA,EAAO8P,gBAAiBA,OALpC,OAU5B,CAEA,SAASO,GAAWvU,GAAgF,IAA9EkE,EAAKlE,EAALkE,MAAO8P,EAAehU,EAAfgU,gBACnBrQ,GAAO+B,EAAAA,EAAAA,IAAYgO,IACnBtP,GAAQsB,EAAAA,EAAAA,IAAYkO,IACpBd,GAAYpN,EAAAA,EAAAA,IAAYiO,IACxBpC,GAAS7L,EAAAA,EAAAA,IAAY8N,IAE3B,OAAOV,IAAc5O,EAAQ,MACzBnP,EAAAA,EAAAA,MAAA,OAAKxC,UAAWP,KAAQI,SAAA,CACnBgS,IAASvP,EAAAA,EAAAA,KAACuf,GAAAA,EAAK,CAAC7hB,UAAWP,GAAM,qBAAsBoS,MAAOA,EAAOiQ,cAAY,IACjF9C,IACG1c,EAAAA,EAAAA,KAAC2f,GAAAA,EAAI,CACDjiB,UAAWP,GAAM,eACjBwC,MAAOmP,EACP+H,SAAUsI,EACVS,SAAO,EACPC,YACI7f,EAAAA,EAAAA,KAAC8f,GAAAA,EAAkB,CACfngB,MAAOmP,EACP+H,SAAUsI,EACV/O,KAAI,gBAAA/N,OAAkBgN,SAOlD,CAEO,SAASoQ,GAAqBpU,GAQjC,IAPA0U,EAAO1U,EAAP0U,QACAriB,EAAS2N,EAAT3N,UACAuhB,EAAQ5T,EAAR4T,SAMA3gB,EAA8BC,EAAAA,UAAe,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA5CqT,EAAOnT,EAAA,GAAEoT,EAAUpT,EAAA,GAE1BwhB,EAAyDhB,GAAe,CACpEV,kBAAkB,EAClBW,SAAAA,IAFGC,EAAWc,EAAXd,YAAajB,EAAS+B,EAAT/B,UAAW5O,EAAK2Q,EAAL3Q,MAAO8P,EAAea,EAAfb,gBAKtC,OACIjf,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,CACToU,GAAYuN,GACVlf,EAAAA,EAAAA,KAACwN,GAAAA,GAAsB,CAAAjQ,SAClB,SAAAgO,GAAA,IAAE8B,EAAe9B,EAAf8B,gBAAe,OACdrN,EAAAA,EAAAA,KAACigB,GAAqB,CAElBnR,KAAMoQ,EACN7P,MAAOA,EACP8P,gBAAiBA,EACjBe,UAAWjC,IAAc5O,EACzB7E,QAAS,kBAAMoH,GAAW,EAAM,EAChCvE,gBAAiBA,GANZ4Q,EAOP,IAXc,MAe5B/d,EAAAA,EAAAA,MAACO,GAAAA,EAAM,CACHC,KAAMqf,EAAU,gBAAahY,EAC7BrK,UAAWA,EACX8K,MAAO,eACPvI,QAAS,kBAAM2R,GAAYD,EAAQ,EACnCrK,UAAW4X,EAAY3hB,SAAA,EAEvByC,EAAAA,EAAAA,KAACa,EAAAA,EAAI,CAACC,QAAS,YACbif,GAAW,oBAI7B,CAEA,SAASE,GAAqBxU,GAc1B,IAbA4D,EAAK5D,EAAL4D,MACAP,EAAIrD,EAAJqD,KACAoR,EAASzU,EAATyU,UACAf,EAAe1T,EAAf0T,gBACA3U,EAAOiB,EAAPjB,QACA6C,EAAe5B,EAAf4B,gBASML,GAAW2H,EAAAA,GAAAA,KACjB/V,EAA0BL,EAAAA,WAAqCM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAxD2Q,EAAK1Q,EAAA,GAAE+V,EAAQ/V,EAAA,GAEtBshB,EAAiD5hB,EAAAA,SAAc,WAC3D,IAAM6hB,ELsDP,SAKLtR,EAA2ByJ,GACzB,IAAMhD,EAAqC,CAAC,EACtC8K,EAGF,CAAC,EACL,MAAO,CACHC,gBAAiBD,EACjB9K,cAAeA,EACfH,OAAQtG,aAAI,EAAJA,EAAMG,KAAI,SAACsR,EAAO5Y,GACtB,IAAM6Y,EAAU,SAAAne,OAAYsF,GACtB8Y,EAAuBlL,EAAsBiL,GAAc,CAAC,EAC5DE,EAAgDH,EAAMhI,QAAQtJ,KAAI,SAACvI,GACrE,OAjEhB,SACIA,EACAia,EACAC,EACArI,GAEA,IAAAsI,EAtKG,SACHna,EAAuBzF,GAEyC,IAAD6f,EAAAC,EAAA5V,EAAA6V,EAD9D7B,EAAele,EAAfke,gBAAiBe,EAASjf,EAATif,UAAW7S,EAAepM,EAAfoM,gBAEvB4T,EAAS,CACX7Q,KAAM1J,EAAK0J,KACXyF,QAAS1S,EAAAA,EAAOC,cAAcsD,EAAK0J,MACnC0F,QAASpP,EAAKwa,YACdC,UAiGG,CACH/D,aAAY,SAACzd,GACT,OAAOA,CACX,EACA0d,eAAc,SAAC1d,EAAY2d,GACvB,OAAO3d,CACX,IApGE0V,EAAS,CACX/N,UAAW4Y,EACX7Y,YACI+Z,MAJgB1a,EAAjB0a,cAKOC,OAAO3a,EAAK0a,oBACZrZ,GAGd,OAAQrB,EAAK3F,MACT,IAAK,SAAW,IAADugB,EACX,OAAiB,QAAbA,EAAC5a,EAAK2K,eAAO,IAAAiQ,GAAZA,EAAcvf,QAGfkK,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOgV,GAAM,IACTlgB,KAAM,SACNsU,QAAMpJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACCoJ,GAAM,IACT0E,MAAO,MACPxB,QAAS7R,EAAK2K,QAAQpC,KAAI,SAACtP,GACvB,MAAO,CAACA,MAAAA,EAAOuD,QAASvD,EAC5B,IACA6H,UAAU,IAEd2Z,UAAWjE,GAAUY,uBAbzB7R,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWgV,GAAM,IAAElgB,KAAM,OAAQsU,OAAAA,IAiBzC,IAAK,OACD,OAAApJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOgV,GAAM,IACTlgB,KAAM,UACNsU,OAAAA,EACAkM,aAAgC,QAApBT,EAAEpa,EAAK8a,qBAAa,IAAAV,EAAAA,EAAIpa,EAAK0a,gBAEjD,IAAK,QACL,IAAK,SACL,IAAK,aACD,IAAMK,EAA4B,eAAd/a,EAAK3F,KAAwB,aAAUgH,EACrD2Z,EACc,UAAhBD,EACMte,EAAAA,EAAOkX,MAAM3T,EAAK0a,eAClBje,EAAAA,EAAO8W,OAAOvT,EAAK0a,eAC7B,OAAAnV,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOgV,GAAM,IACTlgB,KAAM,SACNsU,QAAMpJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACCoJ,GAAM,IACTsM,iBAAiB,EACjBta,iBAAoCU,IAAvBrB,EAAK0a,cAA8BM,OAAmB3Z,EACnE6Z,IAAKlb,EAAKmb,UACVrY,IAAK9C,EAAKob,UACV3e,OAAQse,EACRM,aAAa,EACbC,UAAU,IAEdb,UAAWjE,GAAUC,SAG7B,IAAK,OACD,OAAAlR,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOgV,GAAM,IACTlgB,KAAM,OACNkhB,WAAW,EACX5M,QAAMpJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACCoJ,GAAM,IACT8J,gBAAAA,EACA+C,UAAW,IACXC,YAAazb,EAAK0a,gBAEtBD,UAAWjE,GAAUK,OAE7B,IAAK,OACD,OAAAtR,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWgV,GAAM,IAAElgB,KAAM,OAAQsU,OAAAA,IACrC,IAAK,OACD,OAAApJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOgV,GAAM,IACTlgB,KAAM,OACNsU,QAAMpJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAMoJ,GAAM,IAAE+M,YAAY,IAChCb,aAAgC,QAApBR,EAAEra,EAAK8a,qBAAa,IAAAT,EAAAA,EAAIra,EAAK0a,gBAEjD,IAAK,aACD,OAAAnV,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOgV,GAAM,IACTlgB,KAAM,YACNsU,OAAAA,EACAkM,aAAsD,QAA1CpW,EAAoB,QAApB6V,EAAEta,EAAK8a,qBAAa,IAAAR,EAAAA,EAAIta,EAAK0a,qBAAa,IAAAjW,EAAAA,EAAI,CAACkC,KAEnE,QACI,OAAApB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWgV,GAAM,IAAElgB,KAAM,UAErC,CAgE8CshB,CAAqC3b,EAAM6R,GAA9EgJ,EAAYV,EAAZU,aAAcJ,EAASN,EAATM,UAAc/F,GAAGkH,EAAAA,GAAAA,GAAAzB,EAAA0B,IAC/BxhB,EAAQqa,EAARra,KAKP,OAHA4f,EAAiBja,EAAK0J,MAAQmR,QAAAA,EAAgBJ,EAAU/D,aAAa1W,EAAK8a,eAC1EZ,EAAoBla,EAAK0J,MAAQ,CAACrP,KAAMA,EAAOogB,UAAAA,GAExC/F,CACX,CAoDuBoH,CAAgB9b,EAAM+Z,EAAoBJ,EAAY9H,EACjE,IAEA,MAAO,CACHnI,KAAMoQ,EACNhY,MAAO+X,EAAM/X,MACbzH,KAAM,eACNqU,OAAQsL,EAEhB,IAER,CKnFuB+B,CAAsC3T,QAAAA,EAAQ,GAAI,CAC7DoR,UAAAA,EACAf,gBAAAA,EACA9R,gBAAAA,IAKJ,OL6ED,SAKLyB,GAAiE,IAChC4T,EAD+BC,GAAAC,EAAAA,GAAAA,GAC1C9T,EAAKsG,QAAM,QAAAyN,EAAA,WAAG,IAK1BtO,EACAuO,EANGvC,EAAKmC,EAAA/iB,MAkBZ,GAVA4gB,EAAMnL,OAAO2N,MAAK,SAACC,GAOf,MANmB,cAAfA,EAAMjiB,OACN+hB,EAAYE,GAEG,SAAfA,EAAMjiB,OACNwT,EAAOyO,GAEJpN,QAAQrB,GAAQuO,EAC3B,IAEIvO,GAAQuO,EAAW,CACnB,IAAMzN,EAASd,EAAKc,OACnBd,EAAsBc,OAAS,SAACI,GAAkB,OAAAxJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC5CoJ,GAAM,IACTyN,UAAWrN,EAAO8K,EAAMnQ,MAAM6S,YAAU,CAEhD,CACJ,EAzBA,IAAAN,EAAAO,MAAAR,EAAAC,EAAAQ,KAAAC,MAAAP,GAyBC,OAAAQ,GAAAV,EAAAW,EAAAD,EAAA,SAAAV,EAAAY,GAAA,CACL,CK/GQC,CAAqBpD,GAEdA,CACX,GAAG,CAACtR,EAAMoR,EAAWf,IAVd/J,EAAM+K,EAAN/K,OAAQG,EAAa4K,EAAb5K,cAAe+K,EAAeH,EAAfG,gBAY9B,OACIpgB,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,CACVgS,IAASvP,EAAAA,EAAAA,KAACuf,GAAAA,EAAK,CAACC,cAAY,EAACjQ,MAAOA,KACrCvP,EAAAA,EAAAA,KAAC6U,GAAAA,GAAU,CACPnX,UAAWP,GAAM,UACjBS,KAAK,IACL+T,SAAO,EACPnH,QAASA,EACT2K,MAAO,SAACK,GACJ,IAAeiO,EAAcjO,EAAK5H,WAA3B6H,OACDA,EAASiO,KACXD,GACA,SAACE,EAAKC,GACF,OAAA3X,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAW0X,GAAQC,EACvB,GACA,CAAC,GAGEC,EAA6BpO,EAA7BoO,0BACDC,EAAWJ,KACbnO,GACA,SAACoO,EAAKC,GACF,OAAA3X,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAW0X,GAAQC,EACvB,GACA,CAAC,GAECG,EAAOL,KACTjO,GACA,SAACkO,EAAKhkB,EAAOG,GACT,IAAMkkB,EAAWF,EAAShkB,GACnBqhB,EAAab,EAAgBxgB,GAA7BqhB,UACDzD,EAAOyD,EAAU9D,eAAe2G,GAChC9N,EAAIiL,EAAU9D,eAAe1d,EAAO+d,GAQ1C,OAPIxH,IAAMwH,IAEFiG,EAAI7jB,GADJoW,SAAuC,KAANA,EACtBA,OAEAnO,GAGZ4b,CACX,GACA,CAACE,0BAAAA,IAGL,OAAO7W,EFtLpB,SACHqC,EACAkJ,GAEA,OAAO,SAACvL,EAAUY,GACd,IAAMnJ,EAAQmJ,IACRC,GAAUC,EAAAA,EAAAA,IAAWrJ,GACrBsJ,GAAUC,EAAAA,EAAAA,GAAYvJ,GAEtBwf,EAAqD,GACrDC,EAAiC,CAAC,EAWxC,OATAC,OAAOC,KAAK7L,GAAS8L,SAAQ,SAACC,GAC1B,IAAMxkB,EAAMwkB,OACSvc,IAAjBwQ,EAAQzY,GACRmkB,EAAkBM,KAAKzkB,GAEvBokB,EAAepkB,GAAOyY,EAAQzY,EAEtC,KAEO4O,EAAAA,EAAAA,GACH,eACAb,EACA,CAACwB,MAAAA,EAAO6U,eAAAA,EAAgBD,kBAAAA,GACxB,CAAClW,QAAAA,IACHzH,MAAK,WACH0G,EAASqR,GAAsBhP,IAC/BrC,EAASiP,GAAe5M,IACxBrC,EAASmR,GAAsB9O,GACnC,GACJ,CACJ,CEsJoCmV,CAAgBnV,EAAO0U,IAClCzd,MAAK,WACFsO,OAAS7M,EACb,IAAE,OACK,SAACub,GAAM,OAAK1O,EAAS0O,EAAE,GACtC,EACAlO,OAAQA,EACRG,cAAeA,EACfR,YAAa,CACTvM,OAAOtI,EAAAA,EAAAA,MAAA,QAAA3C,SAAA,CAAM,eAAa8R,UAK9C,C,gBCvPO,SAASoV,KAA4B,IAADC,EACjC7W,GAAUgD,EAAAA,EAAAA,IAAY/C,EAAAA,IACtBuB,GAAQwB,EAAAA,EAAAA,IAAYkM,EAAAA,IAER4H,GAA+D,QAAjFD,EAAwC3N,GAAAA,GAAU6N,uCAA+B,IAAAF,EAAAA,EAAI,CAAC,GAA/EG,UACP,OAAKF,GAIE3kB,EAAAA,EAAAA,KAAC2kB,EAAkB,CAAC9W,QAASA,EAASwB,MAAOA,KAHzCrP,EAAAA,EAAAA,KAAC8kB,GAAAA,EAAS,GAIzB,CCFO,SAASC,GAAkB9jB,GAAqC,IAAnCvD,EAASuD,EAATvD,UAC1BsnB,GAAQC,EAAAA,EAAAA,MAERC,GAAYrU,EAAAA,EAAAA,IAAY/C,EAAAA,IACxBqX,GAAYtU,EAAAA,EAAAA,IAAYkM,EAAAA,IAExBqI,EAAiBrO,GAAAA,GAAU6N,gCAE3BS,EAAW9mB,EAAAA,SAAc,WAC3B,IAAA4M,EAAwCia,QAAAA,EAAkB,CAAC,EAApDP,EAAS1Z,EAAT0Z,UAAWS,EAAWna,EAAXma,YAAa9c,EAAK2C,EAAL3C,MACzB+c,EAAcD,IAAgBT,EACpC,OAAOW,EAAAA,GAAAA,IACHR,EAAM5R,IACNqS,EAAAA,IAAiBpkB,EAAAA,GAAAA,GAAA,GAEZokB,EAAAA,GAAkBC,WAAaH,EAC1B,CACII,MAAM,EACNC,UAAU,EACVxS,KAAKyS,EAAAA,GAAAA,GAAeP,EAAa,CAACJ,UAAAA,EAAWC,UAAAA,IAC7C3c,MAAAA,GAEJ,CAACmd,KAAM/P,QAAQiP,UAEzB9c,EAER,GAAG,CAACmd,EAAWC,EAAWH,EAAM5R,IAAKgS,IAE/BU,EAAkBlQ,QAAQwP,aAAc,EAAdA,EAAgBP,WAChD,OACI3kB,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,EACXyC,EAAAA,EAAAA,KAAC+lB,GAAAA,GAAI9Z,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAACvO,UAAWA,GAAe2nB,GAAQ,IAAE9R,QAAM,MAChDrT,EAAAA,EAAAA,MAAC8lB,EAAAA,GAAM,CAAAzoB,SAAA,CACFuoB,IACG9lB,EAAAA,EAAAA,KAACimB,EAAAA,GAAK,CACFhJ,KAAI,GAAA5a,OAAK2iB,EAAM5R,IAAG,KAAA/Q,OAAIojB,EAAAA,GAAkBC,YACxCb,UAAWJ,MAGnBzkB,EAAAA,EAAAA,KAACimB,EAAAA,GAAK,CACFhJ,KAAI,GAAA5a,OAAK2iB,EAAM5R,IAAG,KAAA/Q,OAAIojB,EAAAA,GAAkBS,SACxCrB,UAAWxF,MAEfrf,EAAAA,EAAAA,KAACimB,EAAAA,GAAK,CACFhJ,KAAI,GAAA5a,OAAK2iB,EAAM5R,IAAG,KAAA/Q,OAAIojB,EAAAA,GAAkBU,KACxCtB,UAAW/H,MAEf9c,EAAAA,EAAAA,KAAComB,EAAAA,GAAQ,CACLC,GAAE,GAAAhkB,OAAK2iB,EAAM5R,IAAG,KAAA/Q,OACZyjB,EAAkBL,EAAAA,GAAkBC,WAAaD,EAAAA,GAAkBS,gBAM3F,CChCA,IAAM/oB,IAAQC,EAAAA,EAAAA,GAAG,oBAEV,SAASkpB,GAAehpB,GAA8C,IAADipB,EAClEvZ,GAAWC,EAAAA,EAAAA,MACXuZ,GAAUC,EAAAA,EAAAA,MACV5Y,GAAUgD,EAAAA,EAAAA,IAAY/C,EAAAA,IAErBuB,EAAS/R,EAAM0nB,MAAMpV,OAArBP,MACDwM,EAAStd,EAAAA,aAAkB,WAC7ByO,EAASiP,GAAe5M,GAC5B,GAAG,CAACA,EAAOrC,IAEXzO,EAAAA,WAAgB,WACZ,OAAO,WACHyO,EXXD,CAACjM,KAAMmb,EAAAA,GAAYwK,UAAW5X,KAAM,CAACqN,cAAe,KWYvD,CACJ,GAAG,CAAC9M,EAAOrC,IAEX,IAAOuH,GAAsC,QAA7CgS,GAAe1V,EAAAA,EAAAA,IAAYwL,WAAkB,IAAAkK,EAAAA,EAAI,CAAC,GAA3ChS,KACDoS,GAAiB9V,EAAAA,EAAAA,IAAY2L,KAEnCV,EAAAA,EAAAA,IAAWD,GAEX,IAAAxC,GAAoCC,EAAAA,EAAAA,MAA7BlD,EAAUiD,EAAVjD,WAAYmD,EAAaF,EAAbE,cACbnC,EAAajB,GAAqBC,GAExC,OACIlW,EAAAA,EAAAA,MAAA,OAAKxC,UAAWP,KAAQI,SAAA,EACpB2C,EAAAA,EAAAA,MAAA,OAAKxC,UAAWP,GAAM,UAAUI,SAAA,EAC5B2C,EAAAA,EAAAA,MAAC8S,EAAAA,EAAI,CAACC,QAAQ,WAAU1V,SAAA,CAAC,cACT,KACZyC,EAAAA,EAAAA,KAACgT,EAAAA,EAAI,CAACC,QAAQ,WAAWJ,MAAM,YAAWtV,SACrC8R,OAGRsX,IAAkB3mB,EAAAA,EAAAA,KAAC4mB,GAAAA,EAAM,CAAClpB,UAAWP,GAAM,UAAWS,KAAK,OAC5DoC,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,aAEvB6C,EAAAA,EAAAA,KAACiX,GAAiB,CACd5H,MAAOA,EACPkF,KAAMA,EACN2C,gBAAc,EACd1C,SAAU,SAAC7E,GACQ,WAAXA,EACA6W,EAAQjC,KAAK,IAADliB,OAAKwL,EAAO,KAAAxL,OAAIgR,EAAAA,GAAKsD,OAEjCkF,GAER,EACAzE,WAAYA,KAEhBpX,EAAAA,EAAAA,KAAA,QAAMtC,UAAWP,GAAM,QAAQI,UAC3ByC,EAAAA,EAAAA,KAACyf,GAAqB,CAACM,SAAO,UAGtC/f,EAAAA,EAAAA,KAAC6mB,GAAgB,KACjB7mB,EAAAA,EAAAA,KAAC8mB,GAAmB,KACpB9mB,EAAAA,EAAAA,KAAC+kB,GAAkB,CAACrnB,UAAWP,GAAM,UACpCoc,IAGb,CAEA,SAASsN,KAAoB,IAADE,EAClBxX,GAAQsB,EAAAA,EAAAA,IAAY0L,IACpByK,GAAanW,EAAAA,EAAAA,IAAY+L,IACxBtC,GAA+C,QAAtDyM,GAAwBlW,EAAAA,EAAAA,IAAYwL,WAAkB,IAAA0K,EAAAA,EAAI,CAAC,GAApDzM,cAEP,OACIpa,EAAAA,EAAAA,MAAC3B,EAAAA,SAAc,CAAAhB,SAAA,CACVgS,GAAQvP,EAAAA,EAAAA,KAACuf,GAAAA,EAAK,CAAC7hB,UAAWP,GAAM,SAAUoS,MAAOA,EAAOiQ,cAAY,IAAM,KAC1EwH,GACGhnB,EAAAA,EAAAA,KAACuf,GAAAA,EAAK,CACF7F,OAAO,kBACPhc,UAAWP,GAAM,SACjBoS,MAAO,CAAC0X,QAASD,GACjBxH,cAAY,IAEhB,KACHlF,GACGta,EAAAA,EAAAA,KAACknB,GAAAA,EAAK,CAACxN,OAAO,gBAAgB3Y,KAAK,QAAQkmB,QAAS3M,EAAekF,cAAY,IAC/E,OAGhB,CAEA,SAASsH,KACL,IAAMjZ,GAAUgD,EAAAA,EAAAA,IAAY/C,EAAAA,IACtBgB,GAAO+B,EAAAA,EAAAA,IAAYwL,IAEnBlY,EAAqC5F,EAAAA,SAAc,WACrD,IAAA8M,EAWIyD,QAAAA,EAAQ,CAAC,EAVTyF,EAAIlJ,EAAJkJ,KACA9P,EAAK4G,EAAL5G,MACAgW,EAAKpP,EAALoP,MACA0M,EAAc9b,EAAd8b,eACAC,EAAY/b,EAAZ+b,aACA7V,EAAMlG,EAANkG,OACA8V,EAAiBhc,EAAjBgc,kBACAlW,EAAO9F,EAAP8F,QACAqJ,EAAyBnP,EAAzBmP,0BACAG,EAAkCtP,EAAlCsP,mCAGJpP,EAAsC6b,QAAAA,EAAgB,CAAC,EAAhDE,EAAU/b,EAAV+b,WAAYC,EAAWhc,EAAXgc,YAAa3U,EAAErH,EAAFqH,GAE1B4U,EAAoBF,EAAaG,KAAOH,GAAYI,eAAY3f,EAChE4f,EAAqBJ,EACrBE,KAAOF,GAAaG,UACpBF,EACEI,KAAKC,WACL9f,EAEF+f,EACDN,GAAsBG,EAEjBA,EAAqBH,OADrBzf,EAGV,MAAO,CACH,CACI,CAACjI,IAAK,SAAUH,OAAOK,EAAAA,EAAAA,KAACkU,GAAW,CAACzP,MAAO8M,KAC3C,CAACzR,IAAK,QAASH,OAAOK,EAAAA,EAAAA,KAACkU,GAAW,CAACzP,MAAOA,KAC1C,CACI3E,IAAK,OACLH,MAAO4U,GACHvU,EAAAA,EAAAA,KAAC6Z,EAAAA,EAAa,CAAChM,QAASA,EAAS0G,KAAM,CAACA,KAAAA,EAAMuF,KAAM,cAEpD3W,EAAAA,EAAOwQ,UAGf,CAAC7T,IAAK,YAAaH,MAAOwD,EAAAA,EAAO8W,OAAOkN,aAAc,EAAdA,EAAgBnN,iBACxD,CAACla,IAAK,QAASH,MAAOwD,EAAAA,EAAO8W,OAAOkN,aAAc,EAAdA,EAAgBhN,YACpD,CAACra,IAAK,SAAUH,MAAOwD,EAAAA,EAAOkX,MAAM8M,aAAc,EAAdA,EAAgB/M,gBAExD,CACI,CAACta,IAAK,QAASH,MAAO8a,GAAQza,EAAAA,EAAAA,KAACmU,EAAAA,EAAK,CAACE,YAAU,EAAC5W,KAAMgd,IAAYtX,EAAAA,EAAOwQ,UACzE,CAAC7T,IAAK,oBAAqBH,MAAOwD,EAAAA,EAAO8W,OAAOoN,IAChD,CACIvnB,IAAK,UACLH,MAAOwR,GAAUnR,EAAAA,EAAAA,KAACkb,EAAAA,EAAW,CAAC9K,KAAMe,IAAchO,EAAAA,EAAOwQ,UAE7D,CACI7T,IAAKqS,EAAAA,GAA6C,0BAClDxS,MAAOwD,EAAAA,EAAO4V,SAASyB,IAE3B,CACI1a,IAAKqS,EAAAA,GAAsD,mCAC3DxS,MAAOwD,EAAAA,EAAO4V,SAAS4B,KAG/B,CACI,CACI7a,IAAK,kBACLH,OACIK,EAAAA,EAAAA,KAAA,OAAKtC,UAAWP,GAAM,gBAAgBI,UAClCyC,EAAAA,EAAAA,KAAC2S,EAAW,CAACC,GAAIA,EAAI/E,QAASA,OAI1C,CACI/N,IAAK,qBACLH,MAAOynB,SAAAA,EAAc3iB,MACftB,EAAAA,EAAOC,cAAcgkB,aAAY,EAAZA,EAAc3iB,OACnCtB,EAAAA,EAAOwQ,UAEjB,CACI7T,IAAK,aACLH,MAAOwD,EAAAA,EAAO4V,SAASuO,IAE3B,CACIxnB,IAAK,cACLH,MAAOwD,EAAAA,EAAO4V,SAASwO,IAE3B,CACIznB,IAAK,WACLH,MAAOmoB,EAAW3kB,EAAAA,EAAO4kB,aAAaD,GAAY3kB,EAAAA,EAAOwQ,WAIzE,GAAG,CAAC7E,EAAMjB,IAEV,OAAO7N,EAAAA,EAAAA,KAACgoB,GAAAA,GAAS,CAAC7jB,MAAOA,GAC7B,CCnNe,SAAS8jB,KACpB,OACIjoB,EAAAA,EAAAA,KAAA,OAAKtC,UAAU,wBAAuBH,UAClCyC,EAAAA,EAAAA,KAACkoB,EAAAA,EAAa,CAAA3qB,UACV2C,EAAAA,EAAAA,MAAC8lB,EAAAA,GAAM,CAAAzoB,SAAA,EACHyC,EAAAA,EAAAA,KAACimB,EAAAA,GAAK,CAAChJ,KAAI,aAAA5a,OAAegR,EAAAA,GAAKsD,KAAI,WAAWkO,UAAWyB,MACzDtmB,EAAAA,EAAAA,KAACimB,EAAAA,GAAK,CAAChJ,KAAI,aAAA5a,OAAegR,EAAAA,GAAKsD,MAAQkO,UAAWjJ,WAKtE,C,sICUMze,IAAQC,EAAAA,EAAAA,GAAG,qBAEF,SAAS+qB,KACpB,OACIjoB,EAAAA,EAAAA,MAACkoB,GAAAA,EAAW,CAACC,KAAMhV,GAAAA,GAAKsD,KAAMvG,KAAK,eAAc7S,SAAA,EAC7CyC,EAAAA,EAAAA,KAACsoB,GAAc,KACftoB,EAAAA,EAAAA,KAACuoB,GAAe,KAChBvoB,EAAAA,EAAAA,KAACwoB,GAAgB,MAG7B,CAEA,SAASF,KACL,IAAM9B,GAAUC,EAAAA,EAAAA,MACV5Y,GAAUgD,EAAAA,EAAAA,IAAY/C,EAAAA,IACtB2a,GAAuB5X,EAAAA,EAAAA,IAAY6X,GAAAA,IACnCC,GAAa9X,EAAAA,EAAAA,IAAY+X,GAAAA,IACzB5b,GAAWC,EAAAA,EAAAA,MACXkP,GAAgBtL,EAAAA,EAAAA,IAAYkM,EAAAA,IAE5B8L,EAA2BtqB,EAAAA,aAC7B,SAACmI,GACG8f,EAAQjC,KAAK,IAADliB,OAAKwL,EAAO,KAAAxL,OAAIgR,GAAAA,GAAKsD,KAAI,KAAAtU,OAAIqE,EAAKuW,MAClD,GACA,CAACuJ,EAAS3Y,IAGRib,EAAwBvqB,EAAAA,aAAkB,WAC5CyO,GAAS+b,EAAAA,GAAAA,IAAoB5M,GACjC,GAAG,CAACnP,EAAUmP,IAEd,OACInc,EAAAA,EAAAA,KAACgpB,GAAAA,EAAU,CACP/S,SAAUwS,EACVtkB,MAAOwkB,EACP7hB,YAAa+hB,EACbI,SAAUH,EACVI,gBAAiB/M,EACjBhJ,MAAO,SAGnB,CAEA,SAASoV,KACL,IAAM/B,GAAUC,EAAAA,EAAAA,MACV5Y,GAAUgD,EAAAA,EAAAA,IAAY/C,EAAAA,IACtBuB,GAAQwB,EAAAA,EAAAA,IAAYkM,EAAAA,IAEpB5Y,EAAQ5F,EAAAA,SAAc,WACxB,IAAMyQ,EAAS,EACXhP,EAAAA,EAAAA,KAACmpB,GAAAA,EAAe,CAAcC,KAAI,IAAA/mB,OAAMwL,EAAO,KAAAxL,OAAIgR,GAAAA,GAAKsD,MAAOpZ,SAC1D,UADgB,WAazB,OARI8R,GACAL,EAAOuV,MACHvkB,EAAAA,EAAAA,KAACmpB,GAAAA,EAAe,CAAaC,KAAI,IAAA/mB,OAAMwL,EAAO,KAAAxL,OAAIgR,GAAAA,GAAKsD,KAAI,KAAAtU,OAAIgN,GAAQ9R,SAClE8R,GADiBA,IAMvBL,CACX,GAAG,CAACK,EAAOxB,IAEX,OACI3N,EAAAA,EAAAA,MAAA,OAAKxC,UAAWP,GAAM,eAAeI,SAAA,EACjCyC,EAAAA,EAAAA,KAAC3C,GAAAA,EAAc,CACXK,UAAWP,GAAM,YACjBK,SAAU,SAACC,GACFA,EAEMA,IAAS4R,GAChBmX,EAAQjC,KAAK,IAADliB,OAAKwL,EAAO,KAAAxL,OAAIgR,GAAAA,GAAKsD,KAAI,KAAAtU,OAAI5E,IAFzC+oB,EAAQjC,KAAK,IAADliB,OAAKwL,EAAO,KAAAxL,OAAIgR,GAAAA,GAAKsD,MAIzC,EACAlZ,KAAM4R,EACNxR,YAAa+X,SAASvG,GACtBrR,aAAc,SAACV,GAAK,OAAK0C,EAAAA,EAAAA,KAACqpB,IAAgBpd,EAAAA,EAAAA,GAAA,CAAC4B,QAASA,GAAavQ,GAAS,EAACC,UAE3EyC,EAAAA,EAAAA,KAACspB,GAAAA,EAAW,CAACC,SAAU/C,EAAQjC,KAAMiF,UAAQ,EAAAjsB,SACxC4G,MAGRkL,IAASrP,EAAAA,EAAAA,KAACwT,EAAAA,EAAe,CAAC/V,KAAM4R,MAG7C,CAEA,SAASga,GAAgBpoB,GAcrB,IAbAtB,EAAKsB,EAALtB,MACAnC,EAAQyD,EAARzD,SACAE,EAASuD,EAATvD,UACAgC,EAAOuB,EAAPvB,QACAmO,EAAO5M,EAAP4M,QACAzN,EAAMa,EAANb,OASA9B,EAA0BC,EAAAA,SAA8B,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApD6F,EAAK3F,EAAA,GAAEirB,EAAQjrB,EAAA,GAEhBuP,GAAU8C,EAAAA,EAAAA,IAAY7C,EAAAA,GAQ5B,OANAzP,EAAAA,WAAgB,YACZmQ,EAAAA,EAAAA,GAAc,OAAQb,EAAS,CAAC,EAAG,CAACE,QAAAA,IAAUzH,MAAK,SAACwI,GAChD2a,EAAS3a,EAAKE,OAAOC,KAAI,SAACvI,GAAI,OAAKgjB,GAAAA,GAAMC,SAASjjB,EAAK,IAC3D,GACJ,GAAG,CAACqH,KAGA/N,EAAAA,EAAAA,KAACuD,GAAAA,EAAO,CACJjD,WAAS,EACT5C,UAAS,GAAA2E,OAAKlF,GAAM,iBAAgB,KAAAkF,OAAI3E,GACxCD,KAAMkC,EACNwG,OAAQ,SAACyjB,EAAInsB,GACT,OAAKA,EAGE0G,EAAMgC,QAAO,SAACO,GACjB,OAAQ,IAAMA,EAAK4H,QAAQ7Q,EAC/B,IAJW0G,CAKf,EACA/B,MAAO,SAACsE,GAEAlJ,EADA,iBAAoBkJ,EACXA,EAEAA,EAAK/G,MAEtB,EACAmH,YAAa,SAACJ,GACVhH,EAAwB,iBAATgH,EAAoBA,EAAOA,EAAK/G,MACnD,EACAS,OAAQA,GAGpB,CAUA,SAASooB,KACL,IAAMxb,GAAW2H,EAAAA,GAAAA,KACX6R,GAAUC,EAAAA,EAAAA,MACV5Y,GAAUgD,EAAAA,EAAAA,IAAY/C,EAAAA,IAC5BlP,EAA8BL,EAAAA,UAAe,GAAMM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA5C+S,EAAO9S,EAAA,GAAE+S,EAAU/S,EAAA,GAE1BgrB,EAA0BtrB,EAAAA,WAAqCurB,GAAArrB,EAAAA,EAAAA,GAAAorB,EAAA,GAAxDta,EAAKua,EAAA,GAAElV,EAAQkV,EAAA,GAEtB,OACI5pB,EAAAA,EAAAA,MAAA,OAAKxC,UAAWP,GAAM,iBAAiBI,SAAA,EACnCyC,EAAAA,EAAAA,KAACS,EAAAA,EAAM,CAACC,KAAK,SAAST,QAAS,kBAAM2R,GAAYD,EAAQ,EAACpU,SAAC,kBAG1DoU,IACG3R,EAAAA,EAAAA,KAACwN,GAAAA,GAAsB,CAAAjQ,SAClB,SAAA4N,GAAA,IAAEkC,EAAelC,EAAfkC,gBAAe,OACdrN,EAAAA,EAAAA,KAAC6U,GAAAA,GAAU,CACPlD,SAAO,EACPjU,UAAWP,GAAM,iBACjB4X,YAAa,CAACvM,MAAO,iBACrBgC,QAAS,kBAAMoH,GAAW,EAAM,EAChCuD,MAAO,SAACK,GACJ,ItBxHC5F,EsB0HkBma,EAAfvU,EAAK5H,WADL6H,OAASuE,EAAc+P,EAAd/P,eAAmBgQ,GAAI1H,EAAAA,GAAAA,GAAAyH,EAAAxH,IAEpC,OAAOvV,GtB3HN4C,GsB4HmB3D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACX+d,GAAI,IACPhQ,eAAgBA,GAAkB,ItBxH/D,SAAChN,EAAUY,GACd,IAAMnJ,EAAQmJ,IACRC,GAAUC,EAAAA,EAAAA,IAAWrJ,GACrBsJ,GAAUC,EAAAA,EAAAA,GAAYvJ,GAErB4K,EAAiDO,EAAjDP,MAAO4a,EAA0Cra,EAA1Cqa,iBAAkB1V,EAAwB3E,EAAxB2E,KAAMyF,EAAkBpK,EAAlBoK,eACtC,OAAOtL,EAAAA,EAAAA,GACH,SACAb,EACA,CACIwB,MAAAA,EACA6a,iBAAeje,EAAAA,EAAAA,GAAA,CACX8H,OAAQkW,GAAoBrU,QAAQrB,GACpCyF,eAAAA,GACIzF,EAAO,CAACA,KAAAA,QAAQxM,IAG5B,CAACgG,QAAAA,EAASoc,aAAa,GAAD9nB,OAAKgN,EAAK,qBACnC,SAAS,WACNrC,EAASW,IACb,GACJ,IsBsGiCrH,MAAK,WACFsO,OAAS7M,GACTye,EAAQjC,KAAK,IAADliB,OACJwL,EAAO,UAAAxL,OAAS2nB,EAAK3a,MAAK,KAAAhN,OAAIojB,EAAAA,GAAkBS,SAE5D,IAAE,OACK,SAAC5C,GAEJ,OADA1O,EAAS0O,GACFld,QAAQgkB,OAAO9G,EAC1B,GACR,EACAlO,OAAM,CACF,CACIhF,KAAM,QACNrP,KAAM,OACN8U,QAAS,aACTwU,UAAU,GAEd,CACIja,KAAM,iBACNrP,KAAM,qBACN8U,QAAS,iBACTR,OAAQ,CACJiV,SAAU,EACVC,SAAU,KAEdF,UAAU,GAEd,CACIja,KAAM,OACNrP,KAAM,YACN8U,QAAS,aAEb,CACIzF,KAAM,OACNrP,KAAM,OACN8U,QAAS,OACTR,OAAQ,SAAAhK,GACJ,MAAO,CACHyX,UAFMzX,EAAJyO,KAGFzS,YAAa,eACb+a,YAAY,EAEpB,GAEJ,CACIhS,KAAM,aACNrP,KAAM,QACNgV,oBAAqB,CACjBC,KAAM,OACNC,SAAQ,SAAC1B,GACL,OAAQA,CACZ,GAEJc,OAAQ,CACJ9X,UACIyC,EAAAA,EAAAA,KAACgT,EAAAA,EAAI,CAACH,MAAM,aAAaI,QAAQ,SAAQ1V,SAAC,wDAMtD,CACI6S,KAAM,mBACNrP,KAAM,UACN8U,QAAS,uBACTE,oBAAqB,CACjBC,KAAM,OACNC,SAAQ,SAACC,GACL,OAAON,QAAQM,EACnB,KAEP7T,QAAAoM,EAAAA,EAAAA,IACE6G,EAAAA,GAAAA,GAAgB,CAAC/F,MAExBgG,cAAe,CACXyE,eAAgB,EAChBF,KAAM,CAACzM,GACP4c,kBAAkB,IAExB,MAM1B,C,0ICjSaO,EAAkBjsB,EAAAA,MAC3B,kBAAM,qSAAwD,IAGrDksB,GAAoBne,EAAAA,EAAAA,IAC7Boe,EAAAA,EAAAA,GAAkCF,GAAiBxqB,EAAAA,EAAAA,KAAC4mB,EAAAA,EAAM,CAACjV,SAAO,EAACgZ,UAAQ,EAAC/sB,KAAK,QAG9E,SAAS0b,IACZ,IAAAhb,EAAwCC,EAAAA,UAAe,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAtDssB,EAAYpsB,EAAA,GAAEqsB,EAAersB,EAAA,GAC9BwO,GAAWC,EAAAA,EAAAA,MAEXmJ,EAAa7X,EAAAA,aAAkB,WACjCyO,GAAS8d,EAAAA,EAAAA,IAAYC,EAAAA,KACrBF,GAAgB,EACpB,GAAG,CAACA,EAAiB7d,IAEfxC,EAAUjM,EAAAA,aAAkB,WAC9BssB,GAAgB,GAChB7d,GAASge,EAAAA,EAAAA,MACb,GAAG,CAACH,EAAiB7d,IAErB,MAAO,CACHie,YAAazgB,EACb4L,WAAAA,EACAwU,aAAAA,EACArR,cAAeqR,GAAe5qB,EAAAA,EAAAA,KAACyqB,EAAiB,CAACjgB,QAASA,IAAc,KAEhF,C,yYClBa0gB,EAAmB,SAACzmB,GAAgB,OAAKA,EAAM0mB,mBAAmBzO,MAAO,EACzE0O,EAAoB,SAAC3mB,GAAgB,OAAKA,EAAM0mB,mBAAmBxO,OAAQ,EAG3E0O,EAA2B,SAAC5mB,GAAgB,OAAKA,EAAM0mB,mBAAmBG,WAAY,EAEtFC,EAA4B,SAAC9mB,GAAgB,OACtDA,EAAM0mB,mBAAmBK,iBAAkB,EAClCC,EAA+B,SAAChnB,GAAgB,OACzDA,EAAM0mB,mBAAmBO,oBAAqB,EACrCC,EAA+B,SAAClnB,GAAgB,OACzDA,EAAM0mB,mBAAmBS,oBAAqB,EAErCC,EAAkB,SAACpnB,GAAgB,OAAKA,EAAM0mB,mBAAmBW,OAAQ,EAEzEC,EAAuB,SAACtnB,GAAgB,OAAKA,EAAM0mB,mBAAmBa,YAAa,EAEnFC,EAA2B,SAACxnB,GAAgB,OACrDA,EAAM0mB,mBAAmBe,gBAAiB,EAEjCC,GAA2BC,EAAAA,EAAAA,IACpC,CAACP,EAAiBE,IAClB,SAACD,EAASE,GACN,OAAOK,IAAMP,GAAS,SAACplB,GAAI,OAAKA,EAAK4lB,SAAWN,CAAY,GAChE,IAGSO,GAAuBH,EAAAA,EAAAA,IAChC,CAACP,IACD,SAACC,GAAO,OAAkBU,EAAAA,EAAAA,IAAeV,EAAQ,IAG/CW,EAAyB,IAAIje,IAAuB,CACtD,SACA,SACA,cACA,UACA,eACA,aACA,yBACA,kBACA,SACA,eACA,qBACA,oBACA,0BACA,uBACA,6BACA,4BACA,oCAGSke,GAA0BN,EAAAA,EAAAA,IACnC,CACIP,EACAN,EACAE,EACAE,IAEJ,SAACG,EAASa,EAAYC,EAAeC,GACjC,IAAMC,EAAoD,GAC1D,GAAIH,EAAY,CACZ,IAAMI,EAAkBJ,EAAWK,cACnCF,EAAWvI,MAAK,SAAC7d,GACb,OAAQ,IAAMA,EAAK4lB,OAAOU,cAAc1e,QAAQye,EACpD,GACJ,CAEA,GAAIH,EAAe,CACf,IAAMK,EAAqBL,EAAcI,cACzCF,EAAWvI,MAAK,SAAC7d,GACb,IAAOwmB,EAAuCxmB,EAAvCwmB,kBAAmBC,EAAoBzmB,EAApBymB,iBAC1B,OACKvX,QAAQsX,KACJ,IAAMA,EAAkBF,cAAc1e,QAAQ2e,IAClDrX,QAAQuX,KACJ,IAAMA,EAAiBH,cAAc1e,QAAQ2e,EAE1D,GACJ,CAEA,GAAIJ,EAAe,CACf,IAAMO,EAAqBP,EAAcG,cACzCF,EAAWvI,MAAK,SAAC7d,GACb,IAAO2mB,EAAmB3mB,EAAnB2mB,gBACP,OACIzX,QAAQyX,KACP,IAAMA,EAAgBL,cAAc1e,QAAQ8e,EAErD,GACJ,CAEA,OAAQN,EAAW/qB,OAAmBurB,IAAQxB,EAASyB,EAAAA,YAAWnrB,WAAC,EAAG0qB,IAA1ChB,CAChC,IAGS0B,GAAwBpB,EAAAA,EAAAA,IACjC,CAACM,EAAyBrB,IAC1B,SAACS,EAAO7qB,GAAuB,IAApBmR,EAAMnR,EAANmR,OAAQ7P,EAAKtB,EAALsB,MACf,OAAK6P,GAAW7P,GAITkrB,EAAAA,EAAAA,IAAiB,CAAC3B,QAAAA,EAAS1Z,OAAAA,EAAQ7P,MAAAA,EAAOmrB,gBAAiBjB,IAHvDX,CAIf,IAGS6B,EAAgB,SAAClpB,GAAgB,OAAKA,EAAM0mB,mBAAmByC,KAAM,EACrEC,EAAyB,SAACppB,GAAgB,OAAKA,EAAM0mB,mBAAmB2C,SAAU,EAElFC,EAAwB,SAACtpB,GAAgB,OAAKA,EAAM0mB,mBAAmB6C,aAAc,EACrFC,EAA4B,SAACxpB,GAAgB,OACtDA,EAAM0mB,mBAAmB+C,iBAAkB,EAClCC,EAA0B,SAAC1pB,GAAgB,OACpDA,EAAM0mB,mBAAmBiD,eAAgB,EAEhCC,GAA+BjC,EAAAA,EAAAA,IACxC,CAACuB,EAAe5B,IAChB,SAAC6B,EAAO5B,GACJ,OAAKA,EAIEsB,IAAQM,GAAO,SAAClnB,GACnB,OAAOkP,QAAQlP,EAAK4lB,SAAWN,IAAiBtlB,EAAK4lB,MACzD,IALWsB,CAMf,IAGSU,GAAwBlC,EAAAA,EAAAA,IACjC,CACIiC,EACAN,EACAE,EACAE,EACApC,IAEJ,SAAC6B,EAAOW,EAAUC,EAAcC,GAC5B,IAAM3B,EAAkD,GAkBxD,OAjBIyB,GACAzB,EAAWvI,MAAK,SAAC7d,GACb,OAAQ,IAAMA,EAAKkM,GAAGtE,QAAQigB,EAClC,IAGAC,GACA1B,EAAWvI,MAAK,SAAC7d,GACb,OAAOkP,QAAQlP,EAAK4lB,UAAY,IAAM5lB,EAAK4lB,OAAOhe,QAAQkgB,EAC9D,IAGAC,GACA3B,EAAWvI,MAAK,SAAC7d,GACb,OAAOkP,QAAQlP,EAAKgoB,eAAiB,IAAMhoB,EAAKgoB,YAAYpgB,QAAQmgB,EACxE,IAEI3B,EAAW/qB,OAAiBurB,IAAQM,EAAOL,EAAAA,YAAWnrB,WAAC,EAAG0qB,IAAtCc,CAChC,IAGG,SAASe,EAAyBrC,EAAgBsB,GACrD,OAAKtB,EAIEgB,IAAQM,GAAO,SAAClnB,GAAI,OAAKA,EAAK4lB,SAAWA,CAAM,IAH3C,EAIf,CAEO,IAAMsC,GAAsBxC,EAAAA,EAAAA,IAC/B,CAACkC,EAAuBT,IACxB,SAACD,EAAO3V,GACJ,OAAO4W,EAAAA,EAAAA,IAAqBjB,EAAO3V,EACvC,IAGS6W,GAAuB1C,EAAAA,EAAAA,IAAe,CAACuB,IAAgB,SAACC,GACjE,OAAOmB,IAAMC,IAAKpB,EAAO,WAAWqB,MACxC,IAEaC,GAAqB9C,EAAAA,EAAAA,IAAe,CAACiC,IAA+B,SAACT,GAC9E,OAAOmB,IAAMC,IAAKpB,EAAO,gBAAgBqB,MAC7C,IAEaE,GAAmC/C,EAAAA,EAAAA,IAC5C,CAACL,EAAsBuC,IACvB,SAACtC,EAAsB4B,GACnB,OAAK5B,EAGEoD,EAAsBxB,GAFlB,EAGf,IAGG,SAASwB,EAAsBxB,GAClC,OAAOmB,IAAMC,IAAKpB,GAAO,SAAAziB,GAAA,IAAEujB,EAAWvjB,EAAXujB,YAAW,OAAMW,EAAAA,EAAAA,IAAYX,EAAY,IAAEvoB,OAAOyP,UACxEqZ,OACAK,KAAK,IACd,CAQO,IAAMC,GAA0BnD,EAAAA,EAAAA,IACnC,CAACte,EAAAA,GAAYie,IACb,SAACle,EAASme,GACN,IAAM5Q,EAA8C,CAChD,CACI3d,KAAM,GACN2rB,MAAMoG,EAAAA,EAAAA,IAA0B3hB,GAChCrF,MAAO,cAWf,OAPIwjB,GACA5Q,EAAImJ,KAAK,CACL9mB,KAAMuuB,EACN5C,MAAMqG,EAAAA,EAAAA,IAA4B5hB,EAASme,KAI5C5Q,CACX,G,4PCvOSsU,EAAkB,SAACjrB,GAAgB,OAAKA,EAAM6X,KAAKqT,KAAK7gB,IAAK,EAE7DmC,GAA+Bmb,EAAAA,EAAAA,IAAe,CAACsD,IAAkB,SAAC5gB,GAC3E,IAAA8gB,EAAqB9gB,EAAd3K,MAAAA,OAAK,IAAAyrB,EAAG,GAAEA,EACjB,OAAOb,IAAM5qB,EAAM8K,KAAI,SAACvI,GAAI,OAAKA,EAAKyK,OAAO,KAAI8d,MACrD,IAEa3d,GAA8B8a,EAAAA,EAAAA,IAAe,CAACsD,IAAkB,SAAC5gB,GAC1E,IAAA+gB,EAAqB/gB,EAAd3K,MAAAA,OAAK,IAAA0rB,EAAG,GAAEA,EACjB,OAAOC,IAASf,IAAM5qB,EAAM8K,KAAI,SAACvI,GAAI,OAAKA,EAAK6K,MAAM,KAAG0d,OAC5D,IAEavd,GAA6B0a,EAAAA,EAAAA,IAAe,CAACsD,IAAkB,SAAC5gB,GACzE,IAAAihB,EAAqBjhB,EAAd3K,MAAAA,OAAK,IAAA4rB,EAAG,GAAEA,EACjB,OAAOhB,IAAM5qB,EAAM8K,KAAI,SAACvI,GAAI,OAAKA,EAAKjC,KAAK,KAAIwqB,MACnD,IAEalS,EAAsB,SAACtY,GAAgB,OAAKA,EAAM6X,KAAKxF,OAAOqF,aAAc,EAE5ErL,EAAyB,SAACrM,GAAgB,OAAKA,EAAM6X,KAAK0T,YAAY5f,IAAK,EAC3EgB,EAA0B,SAAC3M,GAAgB,OAAKA,EAAM6X,KAAK0T,YAAYze,MAAO,EAC9ER,EAA2B,SAACtM,GAAgB,OAAKA,EAAM6X,KAAK0T,YAAY7e,OAAQ,EAChFK,EAAyB,SAAC/M,GAAgB,OAAKA,EAAM6X,KAAK0T,YAAYvrB,KAAM,EAGnFwrB,EAAwF,CAC1FjW,gBAAgB,EAChBG,WAAW,EACXC,cAAc,EACdG,eAAe,EACfE,OAAO,EACPM,yBAAyB,EACzBF,0BAA0B,EAC1BL,2BAA2B,EAC3BG,oCAAoC,EACpCpG,MAAM,EACNhD,QAAQ,EACRJ,SAAS,EACT1M,OAAO,GAsBEyJ,GAA4Bke,EAAAA,EAAAA,IACrC,CAhB0C,SAAC3nB,GAAsB,IAADyrB,EAChE,OACwD,QADxDA,GACIC,EAAAA,EAAAA,GAAgB1rB,GAAO,qCAA6B,IAAAyrB,EAAAA,EACnD,CACG,SACA,QACA,iBACA,YACA,eACA,UACA,gBAGZ,IAII,SAACjiB,GACG,IAAMmiB,EAAc,IAAI5hB,IAAIP,GAC5B,OAAO6hB,IACH7hB,EAAQgB,KAAI,SAACqV,GACT,OAAO2L,EACH3L,IACC8L,EAAYC,IAAI/L,GACdA,EACD,IACV,IAER,IAGSzS,GAAqBua,EAAAA,EAAAA,IAC9B,CAACle,IACD,SAACD,GACG,IAAMmiB,EAAc,IAAI5hB,IAAIP,GACtBmN,EAAMnN,EAAQgB,KAAI,SAACmD,GACrB,MAAO,CAACC,SAAS,EAAMD,OAAAA,EAC3B,IASA,OAPA+R,OAAOC,KAAK6L,GAA8B5L,SAAQ,SAACC,GAC/C,IAAMlS,EAASkS,EACV8L,EAAYC,IAAIje,IACjBgJ,EAAImJ,KAAK,CAAClS,SAAS,EAAOD,OAAAA,GAElC,IAEOgJ,CACX,IAGS3C,EAA4B,SAAChU,GAAgB,OAAKA,EAAM6X,KAAK0T,YAAY/X,SAAU,EAEnFC,GAAkCkU,EAAAA,EAAAA,IAC3C,CAAC3T,IACD,SAACR,GACG,OAAOA,EAAUqY,QACb,SAAC3M,EAAKjd,EAAMiB,GAOR,OANIjB,EAAK0L,SACLuR,EAAIjd,EAAK0L,SAAOnG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTvF,GAAI,IACP6pB,eAAgBtY,EAAUlW,OAAS,EAAI4F,EAAQ,OAAII,KAGpD4b,CACX,GACA,CAAC,EAET,IAGE6M,GAAyBpE,EAAAA,EAAAA,IAC3B,CACItb,EACAC,EACAS,EACAJ,IAEJ,SAAC/B,EAAO8B,EAAS1M,EAAO8M,GACpB,IAAMub,EAAagD,IAAS,CACxBzgB,EAAQ,SAAC3I,GAAc,OAAM,IAAMA,EAAK2I,MAAMf,QAAQe,EAAM,OAAGtH,OACnDA,IAAZoJ,EAAwB,SAACzK,GAAc,OAAKyK,IAAYzK,EAAKyK,OAAO,OAAGpJ,EACvEtD,EAAQ,SAACiC,GAAc,OAAKjC,IAAUiC,EAAKjC,KAAK,OAAGsD,EACnDwJ,EAAS,SAAC7K,GAAc,OAAK6K,IAAW7K,EAAK6K,MAAM,OAAGxJ,IAG1D,OAAO+kB,EAAW/qB,OAASwrB,EAAAA,YAAWnrB,WAAC,GAADqM,EAAAA,EAAAA,GAAIqe,SAAc/kB,CAC5D,IAGSqR,GAAwBgT,EAAAA,EAAAA,IACjC,CAACsD,EAAiBjX,EAA2B+X,IAC7C,SAAC1hB,EAAMmJ,EAAWwY,GACd,IAAAC,EAAqB5hB,EAAd3K,MAAAA,OAAK,IAAAusB,EAAG,GAAEA,EAEXC,EAAiBF,EAAoBtsB,EAAMgC,OAAOsqB,GAArBtsB,EAInC,OAFoBysB,EAAAA,EAAAA,IAA0BD,EAAe1Y,EAGjE,G,yTCrIS4Y,GAAuBzE,EAAAA,EAAAA,IAChC,CAAC0E,EAAAA,GAAgBC,EAAAA,IACjBC,GAGSC,GAAyB7E,EAAAA,EAAAA,IAClC,CAAC0E,EAAAA,GAAgBC,EAAAA,IACjBG,GAGSC,GAAqB/E,EAAAA,EAAAA,IAAe,CAAC6E,GAAyBG,GAE9DC,GAA6BjF,EAAAA,EAAAA,IACtC,CAACkF,EAAAA,GAAkBT,GACnBU,GAGS3I,GAAmBwD,EAAAA,EAAAA,IAAe,CAAC0E,EAAAA,GAAgBU,EAAAA,IAAYR,GAE/DS,GAAqBrF,EAAAA,EAAAA,IAAe,CAAC0E,EAAAA,GAAgBU,EAAAA,IAAYN,GAIjExI,IAFiB0D,EAAAA,EAAAA,IAAe,CAACqF,GAAqBL,IAEzBhF,EAAAA,EAAAA,IACtC,CAACrP,EAAAA,GAAqB6L,GACtB2I,IAKSG,GAAoBtF,EAAAA,EAAAA,IAAe,CAAC0E,EAAAA,GAAgBa,EAAAA,IAAeX,GAEnEY,GAAsBxF,EAAAA,EAAAA,IAC/B,CAAC0E,EAAAA,GAAgBa,EAAAA,IACjBT,GAGSW,GAAkBzF,EAAAA,EAAAA,IAAe,CAACwF,GAAsBR,GAExDU,GAA4B1F,EAAAA,EAAAA,IACrC,CAAC2F,EAAAA,GAASL,GACVH,GAKSS,GAAoB5F,EAAAA,EAAAA,IAC7B,CAAC0E,EAAAA,GAAgBmB,EAAAA,IACjBjB,GAGSkB,GAA2B9F,EAAAA,EAAAA,IACpC,CAAC+F,EAAAA,GAASC,EAAAA,GAASJ,IA+CvB,SAAmCzd,EAAMuF,EAAM6O,GAC3C,OAAO/S,QAAQyW,IAAM1D,GAAY,SAAAxd,GAAM,OAAAA,EAAJ8R,OAAc,GAAA5a,OAAQkS,EAAI,KAAAlS,OAAIyX,EAAI,IAAG,IAC5E,IA3CauY,GAAsBjG,EAAAA,EAAAA,IAC/B,CAAC0E,EAAAA,GAAgBwB,EAAAA,IACjBtB,GAGSuB,GAA6BnG,EAAAA,EAAAA,IACtC,CAACoG,EAAAA,GAAwBH,GACzBd,GAKSkB,GAA2BrG,EAAAA,EAAAA,IACpC,CAAC0E,EAAAA,GAAgB4B,EAAAA,IACjB1B,GAGS2B,GAAkCvG,EAAAA,EAAAA,IAC3C,CAACL,EAAAA,GAAsB0G,GACvBlB,GAKJ,SAASP,EAAkB4B,EAAYC,GACnC,IAAM1uB,EAAQyuB,EAAWE,EAAAA,GAAYC,MAAMC,WAAYH,GACvD,OAAOI,IAAQ9uB,EAAO,OAC1B,CAEA,SAAS+sB,EAAmBgC,EAAeL,GACvC,OAAOK,EAAcJ,EAAAA,GAAYC,MAAMI,aAAcN,IAAa,EACtE,CAEA,SAASzB,EAAgBgC,GACrB,OAAOH,IAAQG,GAAa,SAACC,GAAK,OAAMA,EAAMC,KAAK,GACvD,CAEA,SAAS/B,EAAsB5xB,EAAOgpB,GAClC,OAAO/S,QAAQyW,IAAM1D,GAAY,SAAA1nB,GAAM,OAAAA,EAAJgc,OAAmBtd,CAAK,IAC/D,C,wLC/FM4zB,GAAkBnH,EAAAA,EAAAA,IACpB,CAACoH,EAAAA,GAAWC,EAAAA,GAAgBC,EAAAA,EAAeC,EAAAA,GAAwBC,EAAAA,KACnE,SACIzwB,EACA0wB,EACA9T,EACA+T,EACAC,GAEA,OAAA9nB,EAAAA,EAAAA,GAAA,CACI9I,OAAAA,EACA0wB,YAAAA,EACA9T,QAAAA,EACA+T,iBAAAA,EACAC,YAAAA,EACA5nB,QAAQ,IACL6nB,EAAAA,EAAAA,KAEX,IAGSC,GAA4B7H,EAAAA,EAAAA,IAAe,CAACmH,GAAkBW,KAE9DC,GAAkC/H,EAAAA,EAAAA,IAAe,CAACmH,GAAkBW,KAEpEE,GAAuBhI,EAAAA,EAAAA,IAAe,CAACmH,GAAkBW,KAEzDG,GAAqCjI,EAAAA,EAAAA,IAAe,CAACmH,GAAkBW,KAEvEI,GAAsClI,EAAAA,EAAAA,IAAe,CAACmH,GAAkBW,KAExEK,GAAuCnI,EAAAA,EAAAA,IAAe,CAACmH,GAAkBW,KAEzE9U,GAA0BgN,EAAAA,EAAAA,IAAe,CAACmH,GAAkBW,KAE5DM,GAAyCpI,EAAAA,EAAAA,IAAe,CAACmH,GAAkBW,KAE3EO,GAA6BrI,EAAAA,EAAAA,IAAe,CAACmH,GAAkBW,KAE/DQ,GAA0BtI,EAAAA,EAAAA,IAAe,CAACmH,GAAkBW,I","sources":["webpack://@ytsaurus/ui/./src/ui/components/EditableAsText/EditableAsText.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/Suggest/Suggest.tsx","webpack://@ytsaurus/ui/./src/ui/components/Text/Text.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withSplit.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/global-pool-trees.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list.ts","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageListToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list-fitlers.ts","webpack://@ytsaurus/ui/./src/ui/components/OperationId/OperationId.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/components/CliqueState.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytConfirmation/ChytConfirmation.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytCliqueActions/ChytCliqueActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageListTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageList.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/clique.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/clique.ts","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueAcl.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/df-dialog-utils.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/options.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/speclet.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/options.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/speclet.ts","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueMonitoring.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueTabs.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageClique.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageTopRow.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryWidget/side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/chaos_cell_bundles/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/favourites.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/unipika.ts"],"sourcesContent":["import React, {useCallback, useEffect} from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../Icon/Icon';\n\nimport './EditableAsText.scss';\nimport Button, {ButtonProps} from '../Button/Button';\nconst block = cn('editable-as-text');\n\ninterface Props {\n className?: string;\n editorClassName?: string;\n\n text?: string;\n children: React.ReactNode;\n onChange: (v?: string) => void;\n disableEdit?: boolean;\n withControls?: boolean;\n cancelOnClose?: boolean;\n openOnClick?: boolean;\n size?: 's' | 'm' | 'l' | 'xl';\n saveButtonView?: ButtonProps['view'];\n cancelButtonView?: ButtonProps['view'];\n\n renderEditor?: (props: {\n value?: string;\n onBlur: () => void;\n onChange: (value?: string) => void;\n className?: string;\n onApply: (value?: string) => void;\n }) => React.ReactNode;\n onModeChange?: (isEdit: boolean) => void;\n}\n\nexport function EditableAsText(props: Props) {\n const {\n children,\n onChange,\n text,\n className,\n withControls,\n size,\n disableEdit,\n cancelOnClose,\n openOnClick,\n renderEditor,\n onModeChange,\n saveButtonView = 'normal',\n cancelButtonView = 'normal',\n } = props;\n const [editMode, setEditMode] = React.useState(false);\n const [input, setInput] = React.useState(text || '');\n\n useEffect(() => {\n setInput(text || '');\n }, [text]);\n\n const handleChangeMode = useCallback(\n (isEdit: boolean) => {\n if (onModeChange) onModeChange(isEdit);\n setEditMode(isEdit);\n },\n [onModeChange],\n );\n\n const closeEditMode = React.useCallback(() => {\n handleChangeMode(false);\n if (cancelOnClose) setInput(text || '');\n }, [cancelOnClose, handleChangeMode, text]);\n\n const startTextEdit = useCallback(() => {\n handleChangeMode(true);\n }, [handleChangeMode]);\n\n const handleWrapClick = () => {\n if (!editMode && openOnClick) {\n startTextEdit();\n }\n };\n\n const handleChange = React.useCallback((val?: string) => setInput(val ?? ''), [setInput]);\n\n const applyValue = useCallback(() => {\n handleChangeMode(false);\n onChange(input);\n }, [onChange, handleChangeMode, input]);\n\n const closeAndResetValue = useCallback(() => {\n handleChangeMode(false);\n setInput(text || '');\n }, [handleChangeMode, text]);\n\n const onApply = useCallback(\n (value?: string) => {\n handleChangeMode(false);\n onChange(value);\n },\n [handleChangeMode, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (evt: React.KeyboardEvent<HTMLElement>) => {\n if (evt.key === 'Enter') {\n applyValue();\n }\n if (evt.key === 'Escape') {\n closeAndResetValue();\n }\n },\n [applyValue, closeAndResetValue],\n );\n\n const controlSize = size ? size : 'm';\n\n return (\n <div\n className={block(null, [className || '', editMode ? 'edit' : ''])}\n onClick={handleWrapClick}\n >\n {editMode ? (\n <>\n {renderEditor ? (\n renderEditor({\n value: input,\n onChange: handleChange,\n className: block('control'),\n onBlur: closeEditMode,\n onApply,\n })\n ) : (\n <TextInput\n className={block('control')}\n autoFocus\n size={controlSize}\n value={input}\n onUpdate={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={closeEditMode}\n />\n )}\n {withControls && (\n <>\n <Button\n className={block('control')}\n view={saveButtonView}\n extraProps={{onMouseDown: applyValue}}\n size={controlSize}\n >\n <Icon awesome={'check'} size={controlSize} />\n </Button>\n <Button\n className={block('control')}\n view={cancelButtonView}\n extraProps={{onMouseDown: closeAndResetValue}}\n size={controlSize}\n >\n <Icon awesome={'times'} size={controlSize} />\n </Button>\n </>\n )}\n </>\n ) : (\n <React.Fragment>\n {children}\n {!disableEdit && (\n <Button\n className={block('control', {type: 'edit'})}\n view=\"outlined\"\n onClick={startTextEdit}\n size={controlSize}\n >\n <Icon awesome={'pencil'} size={controlSize} />\n </Button>\n )}\n </React.Fragment>\n )}\n </div>\n );\n}\n\nexport function EditButton({\n onClick,\n size = 'm',\n}: {\n onClick: () => void;\n size?: ButtonProps['size'];\n}) {\n return (\n <Button className={block('edit-btn')} onClick={onClick} size={size}>\n <Icon awesome={'pencil'} />\n </Button>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport ReactList from 'react-list';\nimport block from 'bem-cn-lite';\n\nimport isNumber_ from 'lodash/isNumber';\nimport isObject_ from 'lodash/isObject';\nimport partition_ from 'lodash/partition';\n\nimport {Popup, PopupProps, TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nimport templates from '../../components/templates/utils';\n\nimport './Suggest.scss';\n\nconst b = block('suggest');\n\n// TODO add is scrolled into view logic\n// TODO support custom item height\n\nexport const itemsProps = PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n value: PropTypes.string,\n text: PropTypes.string,\n counter: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n }),\n ]),\n);\n\ninterface Item {\n value: string;\n text: string;\n counter?: string | number;\n}\n\nconst ESCAPE = 27;\nconst ENTER = 13;\nconst ARROW_UP = 38;\nconst ARROW_DOWN = 40;\n\n/*const TAB = 9;\nconst CTRL = 16;\nconst ALT = 17;\nconst ARROW_LEFT = 37;\nconst ARROW_RIGHT = 39;\nconst COMMAND = 91;*/\n\nexport interface SuggestProps {\n className?: string;\n\n filter: (items: SuggestProps['items'], text?: string) => SuggestProps['items'];\n apply?: (value: SuggestItem) => void;\n onTextUpdate?: (text: string) => void;\n onItemClick?: (item: SuggestItem) => void;\n clear?: () => void;\n placeholder?: string;\n autoFocus?: boolean;\n text?: string;\n defaultText?: string;\n disabled?: boolean;\n template?: {\n key: string;\n };\n items: Array<SuggestItem>;\n maxItems?: number | {totalAmount: number; groupPredicate: () => void};\n\n zIndexGroupLevel?: number;\n onBlur?: () => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n pin?: TextInputProps['pin'];\n onOpenChange?: (p: {open: boolean}) => void;\n popupClassName?: string;\n popupPlacement?: PopupProps['placement'];\n\n renderItem?: (item: SuggestItem) => React.ReactNode;\n}\n\nexport type SuggestItem = string | Item;\n\ninterface State {\n text?: string;\n items: SuggestProps['items'];\n selectedIndex: number;\n popupVisible: boolean;\n\n prevItems: SuggestProps['items'];\n\n focused?: boolean;\n}\n\nexport default class Suggest extends Component<SuggestProps, State> {\n static defaultProps = {\n disable: false,\n text: '',\n autoFocus: false,\n items: [],\n zIndexGroupLevel: 1,\n onBlur: () => {},\n focused: false,\n };\n\n private input = React.createRef<HTMLInputElement>();\n private isClearClicked = false; // the flag for the correct render text-input view after clear button click\n private isUnmounting = false;\n private skipApplyForNextBlur = false;\n\n constructor(props: SuggestProps) {\n super(props);\n\n this.state = {\n text: 'text' in props ? props.text : props.defaultText,\n items: props.items,\n selectedIndex: 0,\n popupVisible: false,\n prevItems: [],\n };\n\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.hideSuggestions = this.hideSuggestions.bind(this);\n this.clearSuggestions = this.clearSuggestions.bind(this);\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n static getDerivedStateFromProps(props: SuggestProps, prevState: State) {\n const text = !prevState.focused && 'text' in props ? props.text : prevState.text;\n\n if (props.items === prevState.prevItems && text === prevState.text) {\n return null;\n }\n\n const items = props.filter(props.items, text);\n const res = {items, prevItems: props.items, text};\n\n return res;\n }\n\n componentDidMount() {\n this.isClearClicked = false;\n }\n\n componentWillUnmount() {\n this.isUnmounting = true;\n }\n\n // eslint-disable-next-line react/sort-comp\n onTextUpdate = (text: string) => {\n const {clear, onTextUpdate} = this.props;\n\n this.setState({text});\n this.loadSuggestions(text);\n\n if (!text.length) {\n clear?.();\n }\n\n onTextUpdate?.(text);\n };\n\n onFocus() {\n // make sure that suggestions popup is visible only if onFocus() invocation was not followed\n // by onClearClick() invocation (which sets the flag to true afterwards), since onFocus event\n // always happen first when any action is made within text input\n this.setState({focused: true});\n\n this.isClearClicked = false;\n this.loadSuggestions(this.state.text);\n this.skipApplyForNextBlur = false;\n this.props.onFocus?.();\n }\n\n onBlur() {\n this.hideSuggestions();\n if (!this.isClearClicked) {\n this.props.onBlur?.();\n }\n if (!this.skipApplyForNextBlur) {\n this.applySuggestion(this.state.text ?? '');\n }\n this.setState({focused: false});\n }\n\n onKeyDown(evt: React.KeyboardEvent<HTMLElement>) {\n const key = evt.keyCode;\n\n if (key === ARROW_DOWN) {\n evt.preventDefault();\n this.selectNextSuggestion();\n } else if (key === ARROW_UP) {\n evt.preventDefault();\n this.selectPrevSuggestion();\n } else if (key === ENTER) {\n this.applyOrClearSuggestion();\n } else if (key === ESCAPE) {\n this.input.current?.blur();\n }\n }\n\n hideSuggestions() {\n this.setState({items: [], popupVisible: false, selectedIndex: 0});\n this.props.onOpenChange?.({open: false});\n }\n\n showSuggestions = (items: SuggestProps['items']) => {\n if (!this.isUnmounting) {\n this.setState({\n items,\n popupVisible: true,\n selectedIndex: 0,\n });\n this.props.onOpenChange?.({open: true});\n }\n };\n\n loadSuggestions(text?: string) {\n const {filter, items} = this.props;\n\n Promise.resolve(filter(items, text)).then(this.showSuggestions);\n }\n\n clearSuggestions() {\n const {clear} = this.props;\n\n clear?.();\n // update flag value not to show suggestions after function clear() have change input value for ''\n // and on input change event listener will call popup render\n this.isClearClicked = true;\n\n this.input.current?.blur();\n }\n\n applySuggestion(text: string) {\n const {apply} = this.props;\n this.setState({text});\n apply?.(text);\n this.input.current?.blur();\n }\n\n getItemIndex(selectedIndex: number) {\n return selectedIndex - 1;\n }\n\n getSelectedIndex(itemIndex: number) {\n return itemIndex + 1;\n }\n\n getItemValue(item: string | Item) {\n return typeof item === 'string' ? item : item.value;\n }\n\n applyOrClearSuggestion() {\n const {selectedIndex, items} = this.state;\n\n let item: SuggestItem | undefined;\n\n if (selectedIndex === 0) {\n if (items.length > 0) {\n item = items[0];\n }\n } else {\n item = items[this.getItemIndex(selectedIndex)];\n }\n\n if (item) {\n const value = this.getItemValue(item);\n this.applySuggestion(value);\n const {onItemClick} = this.props;\n onItemClick?.(item);\n }\n }\n\n selectPrevSuggestion() {\n const {selectedIndex, items} = this.state;\n const prevIndex =\n selectedIndex === 0 ? this.getSelectedIndex(items.length - 1) : selectedIndex - 1;\n this.setState({selectedIndex: prevIndex});\n }\n\n selectNextSuggestion() {\n const {selectedIndex, items} = this.state;\n const nextIndex =\n selectedIndex === this.getSelectedIndex(items.length - 1) ? 0 : selectedIndex + 1;\n this.setState({selectedIndex: nextIndex});\n }\n\n renderInput() {\n const {text} = this.state;\n const {placeholder, autoFocus, disabled, pin} = this.props;\n\n return (\n <TextInput\n hasClear\n value={text}\n className={b('control')}\n placeholder={placeholder}\n disabled={disabled}\n onUpdate={this.onTextUpdate}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n autoFocus={autoFocus}\n controlRef={this.input}\n pin={pin}\n onKeyDown={this.onKeyDown}\n />\n );\n }\n\n renderCounter(item: Item) {\n const counter = item.counter;\n\n return (\n typeof counter !== 'undefined' && <span className={b('item-counter')}>{counter}</span>\n );\n }\n\n renderSimpleItem(item: string | Item) {\n const text = typeof item === 'string' ? item : item.text;\n\n return (\n <span>\n {'string' !== typeof item && this.renderCounter(item)}\n {text}\n </span>\n );\n }\n\n renderItem(\n item: string | Item,\n index: number,\n key: number | string,\n className?: string,\n ): React.ReactElement {\n const {selectedIndex} = this.state;\n const itemClassName = b(\n 'item',\n {\n selected: selectedIndex === this.getSelectedIndex(index) ? 'yes' : undefined,\n },\n className,\n );\n\n const value = this.getItemValue(item);\n\n const {template, renderItem, onItemClick} = this.props;\n\n const renderer =\n renderItem ??\n (typeof template !== 'undefined'\n ? templates.get(template.key).__default__\n : this.renderSimpleItem.bind(this));\n\n return (\n <li\n key={key}\n title={value}\n className={itemClassName}\n onMouseDown={() => {\n this.skipApplyForNextBlur = true;\n onItemClick?.(item);\n this.applySuggestion(value);\n }}\n >\n {renderer(item)}\n </li>\n );\n }\n\n getInputWidth() {\n // Is there a way to avoid using private _control property?\n return this.input.current ? this.input.current.offsetWidth - 2 : 0;\n }\n\n restrictItems(items: Array<string | Item>) {\n const {maxItems} = this.props;\n\n if (isNumber_(maxItems)) {\n return items.slice(0, maxItems || items.length);\n } else if (isObject_(maxItems)) {\n const {totalAmount, groupPredicate} = maxItems;\n const [positiveGroup, negativeGroup] = partition_(items, groupPredicate);\n if (positiveGroup.length && negativeGroup.length) {\n // NOTE: we don't want to one group to be omitted in case there is a large\n // bias towards another group - hence minimum value of 1\n const positiveGroupMaxItems = Math.round(\n Math.max((positiveGroup.length / items.length) * totalAmount, 1),\n );\n return positiveGroup\n .slice(0, positiveGroupMaxItems)\n .concat(negativeGroup.slice(0, totalAmount - positiveGroupMaxItems));\n } else {\n // one group is empty - same case as no groups\n return items.slice(0, totalAmount || items.length);\n }\n } else {\n return items;\n }\n }\n\n renderSuggestions(items: Array<SuggestItem>) {\n const className = b('wrapper');\n const listClassName = b('items');\n\n const itemRenderer = (index: number, key: number | string): JSX.Element =>\n this.renderItem(items[index], index, key);\n\n const showNoItemsMsg = items.length === 0 && this.state.text;\n return (\n items && (\n <div className={className}>\n {showNoItemsMsg && this.renderItem('No items', -1, 'no_items', b('no-items'))}\n <ul className={listClassName} style={{minWidth: this.getInputWidth()}}>\n <ReactList\n itemRenderer={itemRenderer}\n length={items.length}\n type=\"uniform\"\n />\n </ul>\n </div>\n )\n );\n }\n\n renderPopup() {\n const {popupClassName, popupPlacement} = this.props;\n const {popupVisible} = this.state;\n\n const items = this.restrictItems(this.state.items);\n return (\n <Popup\n className={popupClassName}\n placement={popupPlacement ?? ['bottom-start', 'top-start']}\n anchorRef={this.input}\n // don't show popup with suggestions after clear button click\n open={!this.isClearClicked && popupVisible && items.length > 0}\n onClose={this.hideSuggestions}\n >\n {this.renderSuggestions(items)}\n </Popup>\n );\n }\n\n render() {\n const {className} = this.props;\n return (\n <div className={b(null, className)}>\n {this.renderInput()}\n {this.renderPopup()}\n </div>\n );\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './Text.scss';\nimport unipika from '../../common/thor/unipika';\nimport {UNIPIKA_ESCAPED_SETTINGS} from '../../utils';\n\nconst block = cn('yt-text');\n\ninterface Props {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function Secondary({children, disabled}: Props & {disabled?: boolean}) {\n return <span className={block('secondary', {disabled})}>{children}</span>;\n}\n\nexport function Bold({children}: Props) {\n return <span className={block('bold')}>{children}</span>;\n}\n\nexport function SecondaryBold({children}: Props) {\n return (\n <Secondary>\n <Bold>{children}</Bold>\n </Secondary>\n );\n}\n\nexport function Warning({children, className}: Props) {\n return <span className={block('warning', className)}>{children}</span>;\n}\n\nexport function WarningLight({children, className}: Props) {\n return <span className={block('warning-light', className)}>{children}</span>;\n}\n\nexport function NoWrap({children}: Props) {\n return <span className={block('no-wrap')}>{children}</span>;\n}\n\nexport function Escaped({text, onClick}: {text: string; onClick?: (e: React.MouseEvent) => void}) {\n const textNode = unipika.prettyprint(text, {\n ...UNIPIKA_ESCAPED_SETTINGS,\n asHTML: true,\n });\n return (\n <span\n onClick={onClick}\n className={block('escaped')}\n dangerouslySetInnerHTML={{__html: textNode}}\n />\n );\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {getDisplayName} from '../utils';\nimport {SPLIT_PANE_ID} from '../constants/index';\n\nexport default function withSplit<P>(Component: React.ComponentType<P>) {\n return class WithSplit extends React.Component<P> {\n static displayName = `WithSplit(${getDisplayName(Component)})`;\n\n render() {\n return ReactDOM.createPortal(\n <Component {...this.props} />,\n document.getElementById(SPLIT_PANE_ID)!,\n );\n }\n };\n}\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport {loadPoolTreesIfNotLoaded} from '../store/actions/global';\nimport {loadDefaultPoolTree} from '../utils/poolTrees';\n\nexport function usePoolTreesLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadPoolTreesIfNotLoaded());\n }, [dispatch]);\n}\n\nexport function PoolTreesLoader() {\n usePoolTreesLoaded();\n return null;\n}\n\nexport function useDefaultPoolTree() {\n const [defaultPoolTree, setDefaultPoolTree] = React.useState<string | undefined>();\n\n React.useEffect(() => {\n loadDefaultPoolTree().then((value) => {\n setDefaultPoolTree(value);\n });\n }, []);\n\n return defaultPoolTree;\n}\n\nexport function WaitForDefaultPoolTree({\n children,\n}: {\n children: ({defaultPoolTree}: {defaultPoolTree: string}) => React.ReactNode;\n}) {\n const defaultPoolTree = useDefaultPoolTree();\n\n return defaultPoolTree ? children({defaultPoolTree}) : null;\n}\n","import type {ThunkAction} from 'redux-thunk';\n\nimport type {RootState} from '../../reducers';\nimport type {ChytListAction} from '../../reducers/chyt/list';\nimport {CHYT_LIST} from '../../../constants/chyt-page';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {getCluster} from '../../../store/selectors/global';\nimport {isDeveloper} from '../../../store/selectors/global/is-developer';\nimport {getChytListVisibleColumns} from '../../../store/selectors/chyt';\n\nimport {StrawberryApi, chytApiAction} from '../../../utils/strawberryControllerApi';\nimport {SettingsThunkAction, setSettingByKey} from '../settings';\n\ntype ChytListThunkAction<T> = ThunkAction<Promise<T>, RootState, unknown, ChytListAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadList(): ChytListThunkAction<void> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n const columns = getChytListVisibleColumns(state);\n\n dispatch({type: CHYT_LIST.REQUEST});\n\n const extraColumns = -1 === columns.indexOf('pool') ? ['pool' as const] : [];\n\n const attributesSet = new Set([\n 'yt_operation_id' as const,\n 'creator' as const,\n 'state' as const,\n 'health' as const,\n 'health_reason' as const,\n ...columns,\n ...extraColumns,\n ]);\n\n return chytApiAction(\n 'list',\n cluster,\n {attributes: [...attributesSet]},\n {isAdmin, cancelToken: cancelHelper.removeAllAndGenerateNextToken()},\n )\n .then((data) => {\n const items = data?.result?.map(({$value, $attributes = {}}) => {\n return {\n alias: $value,\n ...$attributes,\n };\n });\n\n dispatch({type: CHYT_LIST.SUCCESS, data: {data: {items}}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_LIST.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytListAction<\n T extends StrawberryApi['action'],\n ApiItem extends StrawberryApi & {action: T} = StrawberryApi & {action: T},\n>(\n action: T,\n params: ApiItem['params'],\n {skipLoadList}: {skipLoadList?: boolean} = {},\n): ChytListThunkAction<ApiItem['response']> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n return chytApiAction(action, cluster, params, {isAdmin}).then((d) => {\n if (!skipLoadList) {\n dispatch(chytLoadList());\n }\n return d;\n });\n };\n}\n\nexport function chytCliqueCreate(params: {\n alias: string;\n instance_count: number;\n pool: string;\n runAfterCreation: boolean;\n}): ChytListThunkAction<void> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n const {alias, runAfterCreation, pool, instance_count} = params;\n return chytApiAction(\n 'create',\n cluster,\n {\n alias,\n speclet_options: {\n active: runAfterCreation && Boolean(pool),\n instance_count,\n ...(pool ? {pool} : undefined),\n },\n },\n {isAdmin, successTitle: `${alias} clique created`},\n ).finally(() => {\n dispatch(chytLoadList());\n });\n };\n}\n\nexport function chytSetVisibleColumns(columns: Array<string>): SettingsThunkAction {\n return (dispatch) => {\n return dispatch(setSettingByKey('global::chyt::list_columns', columns)).then(() => {\n dispatch(chytLoadList());\n });\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button, TextInput} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {Toolbar} from '../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport {SelectSingle} from '../../../components/Select/Select';\nimport ColumnSelectorModal from '../../../components/ColumnSelectorModal/ColumnSelectorModal';\n\nimport {chytUpdateListFilters} from '../../../store/actions/chyt/list-fitlers';\nimport {\n getChytListAvailableCreators,\n getChytListAvailableHealths,\n getChytListAvailableStates,\n getChytListColumns,\n getChytListFilterAlias,\n getChytListFilterCreator,\n getChytListFilterHealth,\n getChytListFilterState,\n} from '../../../store/selectors/chyt';\nimport {ChytListFilters} from '../../../store/reducers/chyt/list-filters';\nimport {chytSetVisibleColumns} from '../../../store/actions/chyt/list';\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\nimport Icon from '../../../components/Icon/Icon';\n\nimport './ChytPageListToolbar.scss';\n\nconst block = cn('chyt-list-toolbar');\n\nfunction ChytPageListToolbar() {\n const dispatch = useDispatch();\n\n const onUpdate = React.useCallback(\n (filters: Partial<ChytListFilters>) => {\n dispatch(chytUpdateListFilters(filters));\n },\n [dispatch],\n );\n\n return (\n <Toolbar\n itemsToWrap={[\n {\n name: 'alias',\n node: <NameIdFilter onUpdate={onUpdate} />,\n growable: true,\n wrapperClassName: block('name-filter'),\n },\n {\n name: 'creator',\n node: <CreatorFilter onUpdate={onUpdate} />,\n },\n {\n name: 'state',\n node: <StateFilter onUpdate={onUpdate} />,\n },\n {\n name: 'health',\n node: <HealthFilter onUpdate={onUpdate} />,\n },\n {\n name: 'columns',\n node: <ChytListColumnsButton />,\n },\n ]}\n />\n );\n}\n\nfunction NameIdFilter({onUpdate}: {onUpdate: (value: {name: string}) => void}) {\n const value = useSelector(getChytListFilterAlias);\n\n return (\n <TextInput\n value={value}\n onUpdate={(name) => {\n onUpdate({name});\n }}\n placeholder=\"Filter by alias name or id...\"\n />\n );\n}\n\nfunction CreatorFilter({onUpdate}: {onUpdate: (value: {creator?: string}) => void}) {\n const value = useSelector(getChytListFilterCreator);\n const creators = useSelector(getChytListAvailableCreators);\n\n const items = React.useMemo(() => {\n return creators.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [creators]);\n\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"Creator:\"\n value={value}\n items={items}\n onChange={(creator) => {\n onUpdate({creator});\n }}\n />\n );\n}\n\nfunction HealthFilter({onUpdate}: {onUpdate: (value: {health?: string}) => void}) {\n const value = useSelector(getChytListFilterHealth);\n const choices = useSelector(getChytListAvailableHealths);\n\n const items = React.useMemo(() => {\n return choices.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [choices]);\n\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"Health:\"\n value={value}\n items={items}\n onChange={(health) => {\n onUpdate({health});\n }}\n />\n );\n}\n\nfunction StateFilter({onUpdate}: {onUpdate: (value: {state?: string}) => void}) {\n const value = useSelector(getChytListFilterState);\n const states = useSelector(getChytListAvailableStates);\n\n const items = React.useMemo(() => {\n return states.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [states]);\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"State:\"\n value={value}\n items={items}\n onChange={(state) => {\n onUpdate({state});\n }}\n />\n );\n}\n\nfunction ChytListColumnsButton() {\n const dispatch = useDispatch();\n\n const [visible, setVisible] = React.useState(false);\n const columns = useSelector(getChytListColumns);\n\n const dialog = (\n <ColumnSelectorModal\n isVisible={visible}\n items={columns.map((i) => {\n return {\n name: CHYT_TABLE_TITLES[i.column] ?? format.ReadableField(i.column),\n checked: i.checked,\n data: {\n column: i.column,\n },\n };\n })}\n onConfirm={(value) => {\n const newColumns = value.filter((i) => i.checked).map((i) => i.data.column);\n dispatch(chytSetVisibleColumns(newColumns));\n setVisible(false);\n }}\n onCancel={() => setVisible(false)}\n />\n );\n\n return (\n <React.Fragment>\n {visible && dialog}\n <Button view=\"outlined\" onClick={() => setVisible(true)}>\n <Icon awesome=\"layout-columns-3\" />\n Columns\n </Button>\n </React.Fragment>\n );\n}\n\nexport default React.memo(ChytPageListToolbar);\n","import {ThunkAction} from 'redux-thunk';\n\nimport {CHYT_LIST_FILTERS} from '../../../constants/chyt-page';\nimport {RootState} from '../../../store/reducers';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {ChytListFilters, ChytListFiltersAction} from '../../reducers/chyt/list-filters';\nimport {getChytListTableSortState} from '../../../store/selectors/chyt';\nimport {OrderType, updateSortStateArray} from '../../../utils/sort-helpers';\n\ntype ChytFiltersThunkAction<T = unknown> = ThunkAction<\n T,\n RootState,\n unknown,\n ChytListFiltersAction\n>;\n\nexport function chytUpdateListFilters(data: Partial<ChytListFilters>): ChytListFiltersAction {\n return {type: CHYT_LIST_FILTERS, data};\n}\n\nexport function chytToggleSortState(\n column: keyof ChytInfo,\n order: OrderType,\n options: {multisort?: boolean},\n): ChytFiltersThunkAction {\n return (dispatch, getState) => {\n const prevSortState = getChytListTableSortState(getState());\n const sortState = updateSortStateArray(prevSortState, {column, order}, options);\n\n dispatch({type: CHYT_LIST_FILTERS, data: {sortState}});\n };\n}\n","import React from 'react';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Link from '../../components/Link/Link';\nimport format from '../../common/hammer/format';\nimport {Page} from '../../../shared/constants/settings';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\n\nexport function OperationId({\n id,\n cluster,\n color,\n allowCopy,\n}: {\n id?: string;\n color?: 'secondary';\n cluster: string;\n allowCopy?: boolean;\n}) {\n const operationId = id && id !== '0-0-0-0' ? id : null;\n\n return (\n <Text variant=\"code-1\" color={color}>\n {operationId ? (\n <React.Fragment>\n <Link\n theme={color}\n url={`/${cluster}/${Page.OPERATIONS}/${operationId}`}\n routed\n >\n {operationId}\n </Link>\n {allowCopy && (\n <ClipboardButton\n text={operationId}\n view=\"clear\"\n visibleOnRowHover\n inlineMargins\n />\n )}\n </React.Fragment>\n ) : (\n format.NO_VALUE\n )}\n </Text>\n );\n}\n","import React from 'react';\n\nimport format from '../../../common/hammer/format';\nimport Label from '../../../components/Label/Label';\nimport {\n StrawberryCliqueHealthType,\n StrawberryCliqueStateType,\n} from '../../../utils/strawberryControllerApi';\n\nconst THEME_MAP: Partial<\n Record<\n StrawberryCliqueStateType | StrawberryCliqueHealthType,\n 'danger' | 'success' | 'info' | 'warning'\n >\n> = {\n good: 'success',\n failed: 'danger',\n active: 'success',\n pending: 'info',\n untracked: 'warning',\n};\n\nexport function CliqueState({\n state,\n}: {\n state?: StrawberryCliqueStateType | StrawberryCliqueHealthType;\n}) {\n return !state ? (\n format.NO_VALUE\n ) : (\n <Label text={state} theme={THEME_MAP[state]} hideTitle capitalize />\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport capitalize_ from 'lodash/capitalize';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport {Bold} from '../../../components/Text/Text';\nimport {YTError} from '../../../types';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {chytListAction} from '../../../store/actions/chyt/list';\n\nimport './ChytConfirmation.scss';\n\nconst block = cn('chyt-confirmation');\n\nexport type ChytConfirmationProps = {\n action: 'remove' | 'start' | 'stop';\n alias: string;\n pool?: string;\n onClose: () => void;\n onAction?: (action: ChytConfirmationProps['action']) => void;\n};\n\nexport function ChytConfirmation({action, alias, pool, onClose, onAction}: ChytConfirmationProps) {\n const onConfirm = () => {\n if (action) {\n onAction?.(action);\n }\n };\n switch (action) {\n case 'stop':\n case 'remove':\n return <ChytSimpleConfirmation {...{alias, action, onClose, onConfirm}} />;\n case 'start':\n return <ChytStartConfirmation {...{alias, onClose, onConfirm, pool}} />;\n default:\n return null;\n }\n}\n\ntype ConfirmationProps = {\n alias: string;\n pool?: string;\n onClose: () => void;\n onConfirm: () => void;\n};\n\nfunction ChytSimpleConfirmation({\n alias,\n action,\n onClose,\n onConfirm,\n}: ConfirmationProps & {action: 'remove' | 'stop'}) {\n const dispatch = useThunkDispatch();\n\n const [error, setError] = React.useState<YTError | undefined>();\n\n return (\n <YTDFDialog\n visible\n size=\"s\"\n pristineSubmittable\n headerProps={{\n title: (\n <>\n {format.ReadableField(action)} {alias}\n </>\n ),\n }}\n footerProps={{\n textApply: capitalize_(action),\n }}\n onAdd={() => {\n return dispatch(chytListAction('stop', {alias: alias}))\n .then(() => {\n if (action === 'remove') {\n return dispatch(chytListAction('remove', {alias}));\n } else {\n return null;\n }\n })\n .then(() => {\n onConfirm();\n setError(undefined);\n })\n .catch((error: any) => {\n setError(error);\n throw error;\n });\n }}\n fields={[\n {\n type: 'block',\n name: 'text',\n extras: {\n children: (\n <>\n Are you sure you want to {action} the clique <Bold>{alias}</Bold>?\n </>\n ),\n },\n },\n ...makeErrorFields([error]),\n ]}\n onClose={onClose}\n />\n );\n}\n\ntype StartFormValues = {\n pool: string;\n untracked: boolean;\n};\n\nfunction ChytStartConfirmation({\n alias,\n onClose,\n pool,\n onConfirm,\n}: Omit<ConfirmationProps, 'action'>) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState();\n\n return (\n <YTDFDialog<StartFormValues>\n visible\n size=\"s\"\n className={block('start')}\n headerProps={{\n title: (\n <>\n Start clique <Bold>{alias}</Bold>\n </>\n ),\n }}\n footerProps={{\n textApply: 'Start',\n }}\n onClose={onClose}\n initialValues={{pool: pool}}\n onAdd={(form) => {\n const {untracked} = form.getState().values;\n return dispatch(chytListAction('start', {alias, untracked}))\n .then(() => {\n onConfirm();\n setError(undefined);\n })\n .catch((error: any) => {\n setError(error);\n throw error;\n });\n }}\n isApplyDisabled={(state) => {\n const {\n values: {pool, untracked},\n } = state;\n return Boolean(!pool && !untracked);\n }}\n fields={[\n {\n type: 'plain',\n name: 'pool',\n caption: 'Pool',\n extras: {\n placeholder: format.NO_VALUE,\n },\n },\n {\n type: 'tumbler',\n name: 'untracked',\n tooltip:\n \"YT Operation for a clique in untracked mode is started using the current user's credentials in the user's default pool. Such clique is not tracked by the controller and will not be restarted in case of any failures or speclet updates.\",\n caption: 'Untracked',\n },\n {\n type: 'block',\n name: 'untrackedNotice',\n visibilityCondition: {\n when: 'untracked',\n isActive: (v) => v,\n },\n extras: {\n children: (\n <Text color=\"warning\" variant=\"body-2\">\n {`Usage of untracked cliques is strictly discouraged.`}\n </Text>\n ),\n },\n },\n ...makeErrorFields([error]),\n ]}\n />\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button, DropdownMenu, DropdownMenuItem} from '@gravity-ui/uikit';\n\nimport Icon from '../../../components/Icon/Icon';\nimport {getCluster} from '../../../store/selectors/global';\nimport {isQueryTrackerAllowed} from '../../../store/selectors/global/experimental-pages';\nimport {updateQueryDraft} from '../../../pages/query-tracker/module/query/actions';\nimport {QueryEngine} from '../../../pages/query-tracker/module/engines';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytConfirmation} from '../ChytConfirmation/ChytConfirmation';\n\nimport './ChytCliqueActions.scss';\n\nconst block = cn('chyt-clique-actions');\n\nexport function useCliqueOnSqlAction(openWidget: () => void) {\n const cluster = useSelector(getCluster);\n const allowQueryTracker = useSelector(isQueryTrackerAllowed);\n const dispatch = useDispatch();\n\n return React.useCallback(\n (alias: string) => {\n if (allowQueryTracker) {\n setTimeout(() => {\n dispatch(\n updateQueryDraft({\n engine: QueryEngine.CHYT,\n query: `SELECT 1;`,\n settings: {cluster, clique: alias},\n }),\n );\n }, 500);\n openWidget();\n } else {\n UIFactory.onChytAliasSqlClick({alias, cluster});\n }\n },\n [cluster, openWidget, allowQueryTracker, dispatch],\n );\n}\n\nexport function ChytCliqueActions({\n alias,\n pool,\n showAllButtons,\n allButtonsClassName,\n onAction,\n onSqlClick,\n color,\n}: {\n showAllButtons?: boolean;\n allButtonsClassName?: string;\n alias: string;\n pool?: string;\n onSqlClick: (alias: string) => void;\n onAction?: (action: 'remove' | 'start' | 'stop') => void;\n color?: 'secondary';\n}) {\n const [visibleConfirmation, setVisibleConirmation] = React.useState<\n undefined | 'remove' | 'start' | 'stop'\n >();\n\n const start = {\n icon: <Icon awesome=\"play-circle\" />,\n text: 'Start',\n action: () => {\n setVisibleConirmation('start');\n },\n };\n const stop = {\n icon: <Icon awesome=\"stop-circle\" />,\n text: 'Stop',\n action: () => {\n setVisibleConirmation('stop');\n },\n };\n const remove = {\n icon: <Icon awesome=\"trash-alt\" />,\n text: 'Remove',\n action: () => {\n setVisibleConirmation('remove');\n },\n };\n\n const menuItems: Array<Array<DropdownMenuItem>> = [[start, stop], [remove]];\n\n const sqlButton = (\n <Button\n view={color === 'secondary' ? 'flat-secondary' : 'flat'}\n onClick={() => onSqlClick(alias)}\n >\n <Icon awesome=\"sql\" />\n </Button>\n );\n\n return (\n <React.Fragment>\n {visibleConfirmation !== undefined && (\n <ChytConfirmation\n alias={alias}\n pool={pool}\n action={visibleConfirmation}\n onClose={() => setVisibleConirmation(undefined)}\n onAction={onAction}\n />\n )}\n {showAllButtons ? (\n <span className={block('chyt-clique-actions', allButtonsClassName)}>\n <span className={block('item')}>{sqlButton}</span>\n\n <span className={block('item')}>\n <Button\n title=\"Start\"\n view=\"outlined\"\n onClick={() => {\n start.action();\n }}\n >\n <Icon awesome=\"play-circle\" />\n </Button>\n </span>\n\n <span className={block('item')}>\n <Button\n title=\"Stop\"\n view=\"outlined\"\n onClick={() => {\n stop.action();\n }}\n >\n <Icon awesome=\"stop-circle\" />\n </Button>\n </span>\n\n <Button\n title=\"Remove\"\n view=\"outlined\"\n onClick={() => {\n remove.action();\n }}\n >\n <Icon awesome=\"trash-alt\" />\n </Button>\n </span>\n ) : (\n <React.Fragment>\n {sqlButton}\n <DropdownMenu\n switcher={\n <Button view={color === 'secondary' ? 'flat-secondary' : 'flat'}>\n <Icon awesome=\"ellipsis-h\" />\n </Button>\n }\n items={menuItems}\n />\n </React.Fragment>\n )}\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Column} from '@gravity-ui/react-data-table';\n\nimport format from '../../../common/hammer/format';\n\nimport DataTableYT, {\n DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR,\n} from '../../../components/DataTableYT/DataTableYT';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport ColumnHeader from '../../../components/ColumnHeader/ColumnHeader';\nimport Icon from '../../../components/Icon/Icon';\nimport Link from '../../../components/Link/Link';\nimport {OperationId} from '../../../components/OperationId/OperationId';\nimport {SubjectCard} from '../../../components/SubjectLink/SubjectLink';\nimport {Secondary} from '../../../components/Text/Text';\nimport Label from '../../../components/Label/Label';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\n\nimport {chytToggleSortState} from '../../../store/actions/chyt/list-fitlers';\nimport {getCluster} from '../../../store/selectors/global';\nimport {\n getChytListTableItems,\n getChytListTableSortStateByName,\n getChytListVisibleColumns,\n} from '../../../store/selectors/chyt';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {Page} from '../../../../shared/constants/settings';\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\nimport {OperationPool} from '../../../components/OperationPool/OperationPool';\nimport {useQueryWidgetSidePanel} from '../../../pages/query-tracker/QueryWidget/side-panel';\n\nimport {CliqueState} from '../components/CliqueState';\n\nimport {ChytCliqueActions, useCliqueOnSqlAction} from '../ChytCliqueActions/ChytCliqueActions';\nimport './ChytPageListTable.scss';\n\nconst block = cn('chyt-page-list-table');\n\nfunction useChytListColumns(cluster: string, onSqlClick: (alias: string) => void) {\n const checkedColumns = useSelector(getChytListVisibleColumns);\n\n const columns: Array<Column<ChytInfo>> = React.useMemo(() => {\n const columnsByName = {\n pool: {\n name: 'pool',\n header: <ChytListHeader column=\"pool\" />,\n render({row}) {\n return !row.pool ? (\n format.NO_VALUE\n ) : (\n <OperationPool\n className={block('pool')}\n cluster={cluster}\n pool={{pool: row.pool, tree: 'physical'}}\n />\n );\n },\n width: 320,\n } as Column<ChytInfo>,\n instance_count: {\n name: 'instance_count',\n header: <ChytListHeader column=\"instance_count\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.instance_count === undefined\n ? format.NO_VALUE\n : format.Number(row.instance_count)}\n </span>\n );\n },\n align: 'right',\n width: 120,\n } as Column<ChytInfo>,\n total_cpu: {\n name: 'cores',\n header: <ChytListHeader column=\"total_cpu\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.total_cpu === undefined\n ? format.NO_VALUE\n : format.Number(row.total_cpu)}\n </span>\n );\n },\n align: 'right',\n width: 100,\n } as Column<ChytInfo>,\n total_memory: {\n name: 'memory',\n header: <ChytListHeader column=\"total_memory\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.total_memory === undefined\n ? format.NO_VALUE\n : format.Bytes(row.total_memory)}\n </span>\n );\n },\n align: 'right',\n width: 120,\n } as Column<ChytInfo>,\n health: {\n name: 'health',\n header: <ChytListHeader column=\"health\" />,\n render({row}) {\n return (\n <Tooltip\n className={block('health', block('one-row-cell'))}\n content={format.ReadableField(row.health_reason)}\n >\n <CliqueState state={row.health} />\n {row.health_reason && (\n <Secondary>\n \n <Icon\n className={block('warn-icon')}\n awesome={'exclamation-triangle'}\n />\n </Secondary>\n )}\n </Tooltip>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n creation_time: {\n name: 'creation_time',\n header: <ChytListHeader column=\"creation_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.creation_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n speclet_modification_time: {\n name: 'speclet_modification_time',\n header: <ChytListHeader column=\"speclet_modification_time\" />,\n render({row}) {\n return <DateTimeCell value={row.speclet_modification_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n stage: {\n name: 'stage',\n header: <ChytListHeader column=\"stage\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>{<Label text={row.stage} />}</span>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n strawberry_state_modification_time: {\n name: 'strawberry_state_modification_time',\n header: <ChytListHeader column=\"strawberry_state_modification_time\" />,\n render({row}) {\n return <DateTimeCell value={row.strawberry_state_modification_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n yt_operation_finish_time: {\n name: 'yt_operation_finish_time',\n header: <ChytListHeader column=\"yt_operation_finish_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.yt_operation_finish_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n yt_operation_start_time: {\n name: 'yt_operation_start_time',\n header: <ChytListHeader column=\"yt_operation_start_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.yt_operation_start_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n creator: {\n name: 'creator',\n header: <ChytListHeader column=\"creator\" />,\n render({row}) {\n return (\n <div className={block('one-row-cell', block('creator'))}>\n {!row.creator ? (\n format.NO_VALUE\n ) : (\n <SubjectCard className={block('full-width')} name={row.creator} />\n )}\n </div>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n state: {\n name: 'state',\n header: <ChytListHeader column=\"state\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n <CliqueState state={row.state} />\n </span>\n );\n },\n width: 120,\n } as Column<ChytInfo>,\n };\n\n const res = checkedColumns.map((i) => columnsByName[i]);\n return [\n {\n name: 'alias',\n header: <ChytListHeader column=\"alias\" />,\n render({row}) {\n return (\n <div>\n <Link\n url={`/${cluster}/${Page.CHYT}/${row.alias}`}\n theme=\"primary\"\n routed\n >\n {row.alias}\n </Link>\n <ClipboardButton\n text={row.alias}\n view=\"clear\"\n visibleOnRowHover\n inlineMargins\n />\n <div>\n <OperationId\n id={row.yt_operation_id}\n cluster={cluster}\n color=\"secondary\"\n allowCopy\n />\n </div>\n </div>\n );\n },\n } as Column<ChytInfo>,\n ...res,\n {\n name: 'actions',\n header: '',\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n <ChytCliqueActions\n alias={row.alias}\n pool={row.pool}\n onSqlClick={onSqlClick}\n color=\"secondary\"\n />\n </span>\n );\n },\n align: 'center',\n width: 60,\n } as Column<ChytInfo>,\n ];\n }, [cluster, checkedColumns, onSqlClick]);\n\n return columns;\n}\n\nfunction ChytListHeader({\n column,\n withUndefined,\n}: {\n column: keyof ChytInfo;\n withUndefined?: boolean;\n}) {\n const dispatch = useDispatch();\n const sortState = useSelector(getChytListTableSortStateByName);\n return (\n <ColumnHeader<typeof column>\n allowUnordered\n withUndefined={withUndefined}\n column={column}\n title={CHYT_TABLE_TITLES[column] ?? format.ReadableField(column)}\n {...sortState[column]}\n onSort={(col, nextOrder, options) => {\n dispatch(chytToggleSortState(col, nextOrder, options));\n }}\n />\n );\n}\n\nfunction DateTimeCell({value}: {value?: string}) {\n if (!value) {\n return <span className={block('one-row-cell')}>{format.NO_VALUE}</span>;\n }\n\n const time: string = format.DateTime(value);\n const lastSpace = time.lastIndexOf(' ');\n return (\n <React.Fragment>\n <span>{time.substring(0, lastSpace)}</span>\n <div>{time.substring(lastSpace + 1)}</div>\n </React.Fragment>\n );\n}\n\nfunction ChytPageListTable() {\n const items = useSelector(getChytListTableItems);\n const cluster = useSelector(getCluster);\n\n const {openWidget, widgetContent} = useQueryWidgetSidePanel();\n const onSqlClick = useCliqueOnSqlAction(openWidget);\n\n const columns = useChytListColumns(cluster, onSqlClick);\n\n return (\n <React.Fragment>\n <DataTableYT\n className={block()}\n settings={DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR}\n useThemeYT\n columns={columns}\n data={items}\n />\n {widgetContent}\n </React.Fragment>\n );\n}\n\nexport default React.memo(ChytPageListTable);\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport {useUpdater} from '../../../hooks/use-updater';\n\nimport WithStickyToolbar from '../../../components/WithStickyToolbar/WithStickyToolbar';\n\nimport {chytLoadList} from '../../../store/actions/chyt/list';\n\nimport ChytPageListToolbar from './ChytPageListToolbar';\nimport ChytPageListTable from './ChytPageListTable';\n\nexport function ChytPageList() {\n const dispatch = useDispatch();\n const update = React.useCallback(() => {\n dispatch(chytLoadList());\n }, [dispatch]);\n\n useUpdater(update);\n\n return <WithStickyToolbar toolbar={<ChytPageListToolbar />} content={<ChytPageListTable />} />;\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport {CHYT_CLIQUE} from '../../../constants/chyt-page';\nimport {RootState} from '../../../store/reducers';\nimport {ChytCliqueAction} from '../../../store/reducers/chyt/clique';\nimport {getCluster} from '../../../store/selectors/global';\nimport {isDeveloper} from '../../../store/selectors/global/is-developer';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {chytApiAction} from '../../../utils/strawberryControllerApi';\n\ntype ChytCliqueThunkAction<T = void> = ThunkAction<T, RootState, unknown, ChytCliqueAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytCliqueLoad(alias: string): ChytCliqueThunkAction {\n return (dispatch, getState) => {\n dispatch({type: CHYT_CLIQUE.REQUEST, data: {currentClique: alias}});\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n return chytApiAction(\n 'get_brief_info',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_CLIQUE.SUCCESS, data: {data: data.result}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_CLIQUE.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytResetCurrentClique(): ChytCliqueAction {\n return {type: CHYT_CLIQUE.PARTITION, data: {currentClique: ''}};\n}\n","import {RootState} from '../../../store/reducers';\n\nexport const getChytCliqueData = (state: RootState) => state.chyt.clique.data;\nexport const getChytCliqueError = (state: RootState) => state.chyt.clique.error;\n\nexport const getChytCliqueInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.chyt.clique;\n return !loaded && loading;\n};\n\nexport const getChytCliqueStartError = (state: RootState) => state.chyt.clique.data?.error;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {AccessContentAcl} from '../../../containers/ACL';\n\nexport function ChytPageCliqueAcl() {\n const alias = useSelector(getChytCurrentAlias);\n return (\n Boolean(alias) && (\n <AccessContentAcl path={`//sys/access_control_object_namespaces/chyt/${alias}`} />\n )\n );\n}\n","import {ControlField, DialogField} from './Dialog';\n\nimport format from '../../common/hammer/format';\nimport {UnipikaSettings} from '../Yson/StructuredYson/StructuredYsonTypes';\n\nexport type OptionsGroup = {\n title: string;\n options: Array<OptionDescription>;\n hidden: boolean;\n};\n\nexport type OptionDescription =\n | (Option<'string', string> & {choices?: Array<string>})\n | Option<'bool', boolean>\n | (Option<'uint64' | 'int64' | 'byte_count', number> & {\n max_value?: number;\n min_value?: number;\n })\n | Option<'yson', JsonAsString>\n | Option<'path' | 'pool', string>\n | Option<'pool_trees', string[]>;\n\nexport type JsonAsString = string;\n\nexport type Option<TypeName extends string, T> = {\n name: string;\n type: TypeName;\n current_value?: T | null;\n default_value?: T;\n description?: string;\n};\n\nexport function descriptionToDialogField<T = unknown>(\n item: OptionDescription,\n {unipikaSettings, allowEdit, defaultPoolTree}: MakeDialogFieldsOptions,\n): DialogField<T> & {initialValue?: unknown; converter: Converter} {\n const common = {\n name: item.name,\n caption: format.ReadableField(item.name),\n tooltip: item.description,\n converter: makeConverter<any>(),\n };\n const {default_value} = item;\n const extras = {\n disabled: !allowEdit,\n placeholder:\n default_value !== null && default_value !== undefined\n ? String(item.default_value)\n : undefined,\n };\n\n switch (item.type) {\n case 'string': {\n if (!item.choices?.length) {\n return {...common, type: 'text', extras};\n } else {\n return {\n ...common,\n type: 'select',\n extras: {\n ...extras,\n width: 'max',\n options: item.choices.map((value) => {\n return {value, content: value};\n }),\n hasClear: true,\n },\n converter: CONVERTER.string_with_choices,\n };\n }\n }\n case 'bool':\n return {\n ...common,\n type: 'tumbler',\n extras,\n initialValue: item.current_value ?? item.default_value,\n };\n case 'int64':\n case 'uint64':\n case 'byte_count': {\n const valueFormat = item.type === 'byte_count' ? 'Bytes' : undefined;\n const defaultFormatted =\n valueFormat === 'Bytes'\n ? format.Bytes(item.default_value)\n : format.Number(item.default_value);\n return {\n ...common,\n type: 'number',\n extras: {\n ...extras,\n hidePrettyValue: true,\n placeholder: item.default_value !== undefined ? defaultFormatted : undefined,\n min: item.min_value,\n max: item.max_value,\n format: valueFormat,\n integerOnly: true,\n showHint: true,\n },\n converter: CONVERTER.number,\n };\n }\n case 'yson':\n return {\n ...common,\n type: 'json',\n fullWidth: true,\n extras: {\n ...extras,\n unipikaSettings,\n minHeight: 200,\n nullPreview: item.default_value,\n },\n converter: CONVERTER.json,\n };\n case 'path':\n return {...common, type: 'path', extras};\n case 'pool':\n return {\n ...common,\n type: 'pool',\n extras: {...extras, allowEmpty: true},\n initialValue: item.current_value ?? item.default_value,\n };\n case 'pool_trees':\n return {\n ...common,\n type: 'pool-tree',\n extras,\n initialValue: item.current_value ?? item.default_value ?? [defaultPoolTree],\n };\n default:\n return {...common, type: 'plain'};\n }\n}\n\nfunction makeConverter<T>() {\n return {\n toFieldValue(value: any) {\n return value as T;\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value;\n },\n };\n}\n\nconst CONVERTER: Record<string, ReturnType<typeof makeConverter>> = {\n number: {\n toFieldValue(value: unknown) {\n return {value: value === null ? undefined : (value as number | undefined)};\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value?.value;\n },\n },\n json: {\n toFieldValue(value: unknown) {\n return {value: value !== undefined ? JSON.stringify(value, null, 2) : undefined};\n },\n fromFieldValue(value: any, oldV?: any) {\n try {\n return JSON.parse(value.value);\n } catch {\n return oldV;\n }\n },\n },\n plain: {\n toFieldValue(value: unknown) {\n return JSON.stringify(value);\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value !== undefined ? JSON.parse(value) : undefined;\n },\n },\n string_with_choices: {\n toFieldValue(value: string) {\n return value ? [value] : [];\n },\n fromFieldValue(value: Array<string>, _oldV?: any) {\n return value?.[0];\n },\n },\n};\n\nfunction converterByType(item: OptionDescription) {\n return CONVERTER[item.type] ?? makeConverter<any>();\n}\n\ntype Converter = ReturnType<typeof converterByType>;\n\nfunction makeDialogField<FormValues = any>(\n item: OptionDescription,\n dstInitialValues: any,\n dstConvertersByName: Record<string, {type: DialogField['type']; converter: Converter}>,\n options: MakeDialogFieldsOptions,\n) {\n const {initialValue, converter, ...res} = descriptionToDialogField<FormValues>(item, options);\n const {type} = res;\n\n dstInitialValues[item.name] = initialValue ?? converter.toFieldValue(item.current_value);\n dstConvertersByName[item.name] = {type: type!, converter};\n\n return res;\n}\n\ntype MakeDialogFieldsOptions = {\n allowEdit: boolean;\n unipikaSettings: UnipikaSettings;\n defaultPoolTree: string;\n};\n\nexport function makeDialogFieldsFromDescription<\n FormValues extends Record<string, unknown> = Record<string, unknown>,\n>(data: Array<OptionsGroup>, options: MakeDialogFieldsOptions) {\n const initialValues: Record<string, any> = {};\n const typeByName: Record<\n string,\n {type: DialogField['type']; converter: ReturnType<typeof makeConverter>}\n > = {};\n return {\n fieldTypeByName: typeByName,\n initialValues: initialValues,\n fields: data?.map((group) => {\n const sectionFields: Array<DialogField<FormValues>> = group.options.map((item) => {\n return makeDialogField(item, initialValues, typeByName, options);\n });\n\n return {\n section: group.title,\n fields: sectionFields,\n collapsible: true,\n initialCollapsed: group.hidden,\n };\n }),\n };\n}\n\nexport function makeTabbedDialogFieldsFromDescription<\n FormValues extends Record<string, Record<string, unknown>> = Record<\n string,\n Record<string, unknown>\n >,\n>(data: Array<OptionsGroup>, options: MakeDialogFieldsOptions) {\n const initialValues: Partial<FormValues> = {};\n const typeByName: Record<\n string,\n {type: DialogField['type']; converter: ReturnType<typeof makeConverter>}\n > = {};\n return {\n fieldTypeByName: typeByName,\n initialValues: initialValues,\n fields: data?.map((group, index) => {\n const group_name = `group_${index}`;\n const groupInitialValues = ((initialValues as any)[group_name] = {});\n const sectionFields: Array<DialogField<FormValues>> = group.options.map((item) => {\n return makeDialogField(item, groupInitialValues, typeByName, options);\n });\n\n return {\n name: group_name,\n title: group.title,\n type: 'tab-vertical' as const,\n fields: sectionFields,\n };\n }),\n };\n}\n\nexport function linkPoolWithPoolTree<\n FormValues extends Record<string, Record<string, unknown>> = Record<\n string,\n Record<string, unknown>\n >,\n>(data: ReturnType<typeof makeTabbedDialogFieldsFromDescription>) {\n for (const group of data.fields) {\n type FieldType = (typeof data)['fields'][number]['fields'][number];\n type FieldPoolType = FieldType & {type: 'pool'};\n type FieldPoolTreesType = FieldType & {type: 'pool-tree'};\n\n let pool: undefined | FieldPoolType;\n let poolTrees: undefined | FieldPoolTreesType;\n\n group.fields.some((field) => {\n if (field.type === 'pool-tree') {\n poolTrees = field;\n }\n if (field.type === 'pool') {\n pool = field;\n }\n return Boolean(pool && poolTrees);\n });\n\n if (pool && poolTrees) {\n const extras = pool.extras;\n (pool as ControlField).extras = (values: FormValues) => ({\n ...extras,\n poolTrees: values[group.name].pool_trees,\n });\n }\n }\n}\n","import {RootState} from '../../reducers';\n\nexport const getChytOptionsData = (state: RootState) => state.chyt.options.data;\nexport const getChytOptionsDataAlias = (state: RootState) => state.chyt.options.dataAlias;\nexport const getChytOptionsError = (state: RootState) => state.chyt.options.error;\n","import {ThunkAction} from 'redux-thunk';\n\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {ChytCliqueSpecletAction} from '../../reducers/chyt/speclet';\nimport {RootState} from '../../reducers';\nimport {getCluster} from '../../selectors/global';\nimport {isDeveloper} from '../../selectors/global/is-developer';\nimport {chytApiAction} from '../../../utils/strawberryControllerApi';\nimport {CHYT_SPECLET} from '../../../constants/chyt-page';\n\ntype OptionsThunkAction = ThunkAction<Promise<void>, RootState, unknown, ChytCliqueSpecletAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadCliqueSpeclet(alias: string): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n return chytApiAction(\n 'get_speclet',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_SPECLET.SUCCESS, data: {data: data.result, dataAlias: alias}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_SPECLET.FAILURE, data: {error}});\n }\n });\n };\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {ChytCliqueOptionsAction} from '../../reducers/chyt/options';\nimport {RootState} from '../../reducers';\nimport {getCluster} from '../../selectors/global';\nimport {isDeveloper} from '../../selectors/global/is-developer';\nimport {\n StrawberryListAttributes,\n StrawberryListResponseItem,\n chytApiAction,\n} from '../../../utils/strawberryControllerApi';\nimport {CHYT_OPTIONS} from '../../../constants/chyt-page';\nimport {chytCliqueLoad} from './clique';\nimport {chytLoadCliqueSpeclet} from './speclet';\n\ntype OptionsThunkAction = ThunkAction<Promise<void>, RootState, unknown, ChytCliqueOptionsAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadCliqueOptions(\n alias: string,\n showTooltipError?: boolean,\n): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n dispatch({type: CHYT_OPTIONS.REQUEST, data: {dataAlias: alias}});\n\n return wrapApiPromiseByToaster(\n chytApiAction(\n 'describe_options',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n ),\n {\n toasterName: 'chytLoadCliqueOptions_' + alias,\n skipSuccessToast: true,\n skipErrorToast: !showTooltipError,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_OPTIONS.SUCCESS, data: {data: data.result, dataAlias: alias}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_OPTIONS.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytEditOptions(\n alias: string,\n options: Required<StrawberryListResponseItem>['$attributes'],\n): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n const options_to_remove: Array<StrawberryListAttributes> = [];\n const options_to_set: typeof options = {};\n\n Object.keys(options).forEach((k) => {\n const key = k as StrawberryListAttributes;\n if (options[key] === undefined) {\n options_to_remove.push(key);\n } else {\n options_to_set[key] = options[key] as any;\n }\n });\n\n return chytApiAction(\n 'edit_options',\n cluster,\n {alias, options_to_set, options_to_remove},\n {isAdmin},\n ).then(() => {\n dispatch(chytLoadCliqueOptions(alias));\n dispatch(chytCliqueLoad(alias));\n dispatch(chytLoadCliqueSpeclet(alias));\n });\n };\n}\n","import {RootState} from '../../reducers';\n\nexport const getChytSpecletLoaded = (state: RootState) => state.chyt.speclet.loaded;\nexport const getChytSpecletData = (state: RootState) => state.chyt.speclet.data;\nexport const getChytSpecletDataAlias = (state: RootState) => state.chyt.speclet.dataAlias;\nexport const getChytSpecletError = (state: RootState) => state.chyt.speclet.error;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport reduce_ from 'lodash/reduce';\nimport cn from 'bem-cn-lite';\n\nimport Button from '../../../components/Button/Button';\nimport Error from '../../../components/Error/Error';\nimport Icon from '../../../components/Icon/Icon';\nimport {YTDFDialog} from '../../../components/Dialog';\nimport Yson from '../../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {\n linkPoolWithPoolTree,\n makeTabbedDialogFieldsFromDescription,\n} from '../../../components/Dialog/df-dialog-utils';\n\nimport {useUpdater} from '../../../hooks/use-updater';\n\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {\n getChytOptionsData,\n getChytOptionsDataAlias,\n getChytOptionsError,\n} from '../../../store/selectors/chyt/options';\nimport {getEditJsonYsonSettings} from '../../../store/selectors/thor/unipika';\nimport {chytLoadCliqueSpeclet} from '../../../store/actions/chyt/speclet';\nimport {chytEditOptions, chytLoadCliqueOptions} from '../../../store/actions/chyt/options';\nimport {ChytCliqueOptionsState} from '../../../store/reducers/chyt/options';\nimport {\n getChytSpecletData,\n getChytSpecletDataAlias,\n getChytSpecletError,\n getChytSpecletLoaded,\n} from '../../../store/selectors/chyt/speclet';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {YTError} from '../../../../@types/types';\nimport {WaitForDefaultPoolTree} from '../../../hooks/global-pool-trees';\n\nimport './ChytPageCliqueSpeclet.scss';\nimport {YsonDownloadButton} from '../../../components/DownloadAttributesButton';\n\nconst block = cn('yt-chyt-clique-speclet');\n\nfunction useSpecletData({\n showTooltipError,\n skipLoad,\n}: {showTooltipError?: boolean; skipLoad?: boolean} = {}) {\n const dispatch = useDispatch();\n const alias = useSelector(getChytCurrentAlias);\n\n React.useMemo(() => {\n if (alias && !skipLoad) {\n dispatch(chytLoadCliqueOptions(alias, showTooltipError));\n }\n }, [alias, skipLoad, showTooltipError, dispatch]);\n\n const specletData = useSelector(getChytOptionsData);\n const dataAlias = useSelector(getChytOptionsDataAlias);\n const error = useSelector(getChytOptionsError);\n const unipikaSettings = useSelector(getEditJsonYsonSettings);\n\n return {alias, specletData, dataAlias, error, unipikaSettings};\n}\n\nexport function ChytPageCliqueSpeclet() {\n const dispatch = useDispatch();\n const {error, alias, specletData, unipikaSettings} = useSpecletData({skipLoad: true});\n\n const update = React.useCallback(() => {\n if (alias) {\n dispatch(chytLoadCliqueSpeclet(alias));\n }\n }, [alias, dispatch]);\n\n useUpdater(update);\n\n return (\n <React.Fragment>\n {error && <Error bottomMargin error={error} />}\n {!specletData ? null : (\n <React.Fragment>\n <div className={block('edit')}>\n <ChytSpecletEditButton skipLoad />\n </div>\n <ChytSpeclet alias={alias} unipikaSettings={unipikaSettings} />\n </React.Fragment>\n )}\n </React.Fragment>\n );\n}\n\nfunction ChytSpeclet({alias, unipikaSettings}: {alias?: string; unipikaSettings: UnipikaSettings}) {\n const data = useSelector(getChytSpecletData);\n const error = useSelector(getChytSpecletError);\n const dataAlias = useSelector(getChytSpecletDataAlias);\n const loaded = useSelector(getChytSpecletLoaded);\n\n return dataAlias !== alias ? null : (\n <div className={block()}>\n {error && <Error className={block('raw-speclet-error')} error={error} bottomMargin />}\n {loaded && (\n <Yson\n className={block('raw-speclet')}\n value={data}\n settings={unipikaSettings}\n folding\n extraTools={\n <YsonDownloadButton\n value={data}\n settings={unipikaSettings}\n name={`chyt_speclet_${alias}`}\n />\n }\n />\n )}\n </div>\n );\n}\n\nexport function ChytSpecletEditButton({\n compact,\n className,\n skipLoad,\n}: {\n compact?: boolean;\n className?: string;\n skipLoad?: boolean;\n}) {\n const [visible, setVisible] = React.useState(false);\n\n const {specletData, dataAlias, alias, unipikaSettings} = useSpecletData({\n showTooltipError: true,\n skipLoad,\n });\n\n return (\n <React.Fragment>\n {!visible || !specletData ? null : (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <ChytSpecletEditDialog\n key={dataAlias}\n data={specletData}\n alias={alias}\n unipikaSettings={unipikaSettings}\n allowEdit={dataAlias === alias}\n onClose={() => setVisible(false)}\n defaultPoolTree={defaultPoolTree}\n />\n )}\n </WaitForDefaultPoolTree>\n )}\n <Button\n view={compact ? 'outlined' : undefined}\n className={className}\n title={'Edit speclet'}\n onClick={() => setVisible(!visible)}\n disabled={!specletData}\n >\n <Icon awesome={'pencil'} />\n {!compact && 'Edit speclet'}\n </Button>\n </React.Fragment>\n );\n}\n\nfunction ChytSpecletEditDialog({\n alias,\n data,\n allowEdit,\n unipikaSettings,\n onClose,\n defaultPoolTree,\n}: {\n allowEdit: boolean;\n alias: string;\n data: ChytCliqueOptionsState['data'];\n unipikaSettings: UnipikaSettings;\n onClose: () => void;\n defaultPoolTree: string;\n}) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState<YTError | undefined>();\n\n const {fields, initialValues, fieldTypeByName} = React.useMemo(() => {\n const groups = makeTabbedDialogFieldsFromDescription(data ?? [], {\n allowEdit,\n unipikaSettings,\n defaultPoolTree,\n });\n\n linkPoolWithPoolTree(groups);\n\n return groups;\n }, [data, allowEdit, unipikaSettings]);\n\n return (\n <React.Fragment>\n {error && <Error bottomMargin error={error} />}\n <YTDFDialog\n className={block('dialog')}\n size=\"l\"\n visible\n onClose={onClose}\n onAdd={(form) => {\n const {values: formValues} = form.getState();\n const values = reduce_(\n formValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n\n const {restart_on_speclet_change} = values as any;\n const initials = reduce_(\n initialValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n const diff = reduce_(\n values as any,\n (acc, value, key) => {\n const oldValue = initials[key as keyof typeof initials];\n const {converter} = fieldTypeByName[key];\n const oldV = converter.fromFieldValue(oldValue);\n const v = converter.fromFieldValue(value, oldV);\n if (v !== oldV) {\n if (v !== null && v !== undefined && v !== '') {\n acc[key] = v;\n } else {\n acc[key] = undefined;\n }\n }\n return acc;\n },\n {restart_on_speclet_change} as Record<string, unknown>,\n );\n\n return dispatch(chytEditOptions(alias, diff))\n .then(() => {\n setError(undefined);\n })\n .catch((e: any) => setError(e));\n }}\n fields={fields}\n initialValues={initialValues}\n headerProps={{\n title: <span>Edit clique {alias}</span>,\n }}\n />\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport UIFactory from '../../../UIFactory';\nimport {getCluster} from '../../../store/selectors/global';\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {NoContent} from '../../../components/NoContent/NoContent';\n\nexport function ChytPageCliqueMonitoring() {\n const cluster = useSelector(getCluster);\n const alias = useSelector(getChytCurrentAlias);\n\n const {component: MonitoginComponnet} = UIFactory.getMonitoringComponentForChyt() ?? {};\n if (!MonitoginComponnet) {\n return <NoContent />;\n }\n\n return <MonitoginComponnet cluster={cluster} alias={alias} />;\n}\n","import React from 'react';\nimport {Redirect, Route, Switch, useRouteMatch} from 'react-router';\nimport {useSelector} from 'react-redux';\n\nimport {ChytCliquePageTab} from '../../../constants/chyt-page';\nimport Tabs from '../../../components/Tabs/Tabs';\nimport {getCluster} from '../../../store/selectors/global';\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {makeTabProps} from '../../../utils';\nimport {formatByParams} from '../../../utils/format';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytPageCliqueAcl} from './ChytPageCliqueAcl';\nimport {ChytPageCliqueSpeclet} from './ChytPageCliqueSpeclet';\nimport {ChytPageCliqueMonitoring} from './ChytPageCliqueMonitoring';\n\nexport function ChytPageCliqueTabs({className}: {className?: string}) {\n const match = useRouteMatch();\n\n const ytCluster = useSelector(getCluster);\n const chytAlias = useSelector(getChytCurrentAlias);\n\n const chytMonitoring = UIFactory.getMonitoringComponentForChyt();\n\n const tabProps = React.useMemo(() => {\n const {component, urlTemplate, title} = chytMonitoring ?? {};\n const useTemplate = urlTemplate && !component;\n return makeTabProps(\n match.url,\n ChytCliquePageTab,\n {\n [ChytCliquePageTab.MONITORING]: useTemplate\n ? {\n show: true,\n external: true,\n url: formatByParams(urlTemplate, {ytCluster, chytAlias}),\n title,\n }\n : {show: Boolean(component)},\n },\n undefined,\n );\n }, [ytCluster, chytAlias, match.url, chytMonitoring]);\n\n const allowMonitoring = Boolean(chytMonitoring?.component);\n return (\n <React.Fragment>\n <Tabs className={className} {...tabProps} routed />\n <Switch>\n {allowMonitoring && (\n <Route\n path={`${match.url}/${ChytCliquePageTab.MONITORING}`}\n component={ChytPageCliqueMonitoring}\n />\n )}\n <Route\n path={`${match.url}/${ChytCliquePageTab.SPECLET}`}\n component={ChytPageCliqueSpeclet}\n />\n <Route\n path={`${match.url}/${ChytCliquePageTab.ACL}`}\n component={ChytPageCliqueAcl}\n />\n <Redirect\n to={`${match.url}/${\n allowMonitoring ? ChytCliquePageTab.MONITORING : ChytCliquePageTab.SPECLET\n }`}\n />\n </Switch>\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {RouteComponentProps, useHistory} from 'react-router';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Loader, Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {useUpdater} from '../../../hooks/use-updater';\nimport Alert from '../../../components/Alert/Alert';\nimport Error from '../../../components/Error/Error';\nimport Label from '../../../components/Label/Label';\nimport {OperationPool} from '../../../components/OperationPool/OperationPool';\nimport MetaTable, {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {OperationId} from '../../../components/OperationId/OperationId';\nimport {SubjectCard} from '../../../components/SubjectLink/SubjectLink';\n\nimport {useQueryWidgetSidePanel} from '../../../pages/query-tracker/QueryWidget/side-panel';\n\nimport {chytCliqueLoad, chytResetCurrentClique} from '../../../store/actions/chyt/clique';\nimport {\n getChytCliqueData,\n getChytCliqueError,\n getChytCliqueInitialLoading,\n getChytCliqueStartError,\n} from '../../../store/selectors/chyt/clique';\nimport {getCluster} from '../../../store/selectors/global';\nimport {Page} from '../../../../shared/constants/settings';\n\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\nimport {CliqueState} from '../components/CliqueState';\nimport {ChytCliqueActions, useCliqueOnSqlAction} from '../ChytCliqueActions/ChytCliqueActions';\nimport {ChytPageCliqueTabs} from './ChytPageCliqueTabs';\nimport {ChytSpecletEditButton} from './ChytPageCliqueSpeclet';\n\nimport './ChytPageClique.scss';\n\nconst block = cn('chyt-page-clique');\n\nexport function ChytPageClique(props: RouteComponentProps<{alias: string}>) {\n const dispatch = useDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n\n const {alias} = props.match.params;\n const update = React.useCallback(() => {\n dispatch(chytCliqueLoad(alias));\n }, [alias, dispatch]);\n\n React.useEffect(() => {\n return () => {\n dispatch(chytResetCurrentClique());\n };\n }, [alias, dispatch]);\n\n const {pool} = useSelector(getChytCliqueData) ?? {};\n const initialLoading = useSelector(getChytCliqueInitialLoading);\n\n useUpdater(update);\n\n const {openWidget, widgetContent} = useQueryWidgetSidePanel();\n const onSqlClick = useCliqueOnSqlAction(openWidget);\n\n return (\n <div className={block()}>\n <div className={block('header')}>\n <Text variant=\"header-1\">\n CHYT clique{' '}\n <Text variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </Text>\n {initialLoading && <Loader className={block('loader')} size=\"s\" />}\n <span className={block('spacer')} />\n\n <ChytCliqueActions\n alias={alias}\n pool={pool}\n showAllButtons\n onAction={(action) => {\n if (action === 'remove') {\n history.push(`/${cluster}/${Page.CHYT}`);\n } else {\n update();\n }\n }}\n onSqlClick={onSqlClick}\n />\n <span className={block('edit')}>\n <ChytSpecletEditButton compact />\n </span>\n </div>\n <ChytCliqueErrors />\n <ChytCliqueMetaTable />\n <ChytPageCliqueTabs className={block('tabs')} />\n {widgetContent}\n </div>\n );\n}\n\nfunction ChytCliqueErrors() {\n const error = useSelector(getChytCliqueError);\n const startError = useSelector(getChytCliqueStartError);\n const {health_reason} = useSelector(getChytCliqueData) ?? {};\n\n return (\n <React.Fragment>\n {error ? <Error className={block('error')} error={error} bottomMargin /> : null}\n {startError ? (\n <Error\n header=\"Failed to start\"\n className={block('error')}\n error={{message: startError}}\n bottomMargin\n />\n ) : null}\n {health_reason ? (\n <Alert header=\"Health reason\" type=\"alert\" message={health_reason} bottomMargin />\n ) : null}\n </React.Fragment>\n );\n}\n\nfunction ChytCliqueMetaTable() {\n const cluster = useSelector(getCluster);\n const data = useSelector(getChytCliqueData);\n\n const items: Array<Array<MetaTableItem>> = React.useMemo(() => {\n const {\n pool,\n state,\n stage,\n ctl_attributes,\n yt_operation,\n health,\n incarnation_index,\n creator,\n speclet_modification_time,\n strawberry_state_modification_time,\n } = data ?? {};\n\n const {start_time, finish_time, id} = yt_operation ?? {};\n\n const start_time_number = start_time ? moment(start_time).valueOf() : undefined;\n const finish_time_number = finish_time\n ? moment(finish_time).valueOf()\n : start_time_number\n ? Date.now()\n : undefined;\n\n const duration =\n !start_time_number || !finish_time_number\n ? undefined\n : finish_time_number - start_time_number;\n\n return [\n [\n {key: 'Health', value: <CliqueState state={health} />},\n {key: 'State', value: <CliqueState state={state} />},\n {\n key: 'Pool',\n value: pool ? (\n <OperationPool cluster={cluster} pool={{pool, tree: 'physical'}} />\n ) : (\n format.NO_VALUE\n ),\n },\n {key: 'Instances', value: format.Number(ctl_attributes?.instance_count)},\n {key: 'Cores', value: format.Number(ctl_attributes?.total_cpu)},\n {key: 'Memory', value: format.Bytes(ctl_attributes?.total_memory)},\n ],\n [\n {key: 'Stage', value: stage ? <Label capitalize text={stage} /> : format.NO_VALUE},\n {key: 'Incarnation index', value: format.Number(incarnation_index)},\n {\n key: 'Creator',\n value: creator ? <SubjectCard name={creator} /> : format.NO_VALUE,\n },\n {\n key: CHYT_TABLE_TITLES['speclet_modification_time'],\n value: format.DateTime(speclet_modification_time),\n },\n {\n key: CHYT_TABLE_TITLES['strawberry_state_modification_time'],\n value: format.DateTime(strawberry_state_modification_time),\n },\n ],\n [\n {\n key: 'YT operation id',\n value: (\n <div className={block('operation-id')}>\n <OperationId id={id} cluster={cluster} />\n </div>\n ),\n },\n {\n key: 'YT operation state',\n value: yt_operation?.state\n ? format.ReadableField(yt_operation?.state)\n : format.NO_VALUE,\n },\n {\n key: 'Start time',\n value: format.DateTime(start_time),\n },\n {\n key: 'Finish time',\n value: format.DateTime(finish_time),\n },\n {\n key: 'Duration',\n value: duration ? format.TimeDuration(duration) : format.NO_VALUE,\n },\n ],\n ];\n }, [data, cluster]);\n\n return <MetaTable items={items} />;\n}\n","import React from 'react';\nimport {Route, Switch} from 'react-router';\n\nimport {Page} from '../../../shared/constants/settings';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport {ChytPageList} from './ChytPageList/ChytPageList';\nimport {ChytPageClique} from './ChytPageClique/ChytPageClique';\n\nexport default function ChytPage() {\n return (\n <div className=\"elements-main-section\">\n <ErrorBoundary>\n <Switch>\n <Route path={`/:cluster/${Page.CHYT}/:alias`} component={ChytPageClique} />\n <Route path={`/:cluster/${Page.CHYT}`} component={ChytPageList} />\n </Switch>\n </ErrorBoundary>\n </div>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\n\nimport ypath from '../../common/thor/ypath';\n\nimport {Button, Text} from '@gravity-ui/uikit';\nimport {Breadcrumbs, BreadcrumbsItem} from '../../components/Breadcrumbs';\n\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport {YTDFDialog, makeErrorFields} from '../../components/Dialog';\nimport Favourites, {FavouritesItem} from '../../components/Favourites/Favourites';\nimport {EditableAsText} from '../../components/EditableAsText/EditableAsText';\nimport Suggest from '../../components/Suggest/Suggest';\nimport {Page} from '../../constants';\nimport {RowWithName} from '../../containers/AppNavigation/TopRowContent/SectionName';\nimport {WaitForDefaultPoolTree} from '../../hooks/global-pool-trees';\nimport {getFavouriteChyt, isActiveCliqueInFavourites} from '../../store/selectors/favourites';\nimport {getChytCurrentAlias} from '../../store/selectors/chyt';\nimport {getCluster} from '../../store/selectors/global';\nimport {isDeveloper} from '../../store/selectors/global/is-developer';\nimport {chytApiAction} from '../../utils/strawberryControllerApi';\nimport {chytCliqueCreate} from '../../store/actions/chyt/list';\nimport {chytToggleFavourite} from '../../store/actions/favourites';\nimport {useThunkDispatch} from '../../store/thunkDispatch';\nimport {YTError} from '../../../@types/types';\nimport {ChytCliquePageTab} from '../../constants/chyt-page';\n\nimport './ChytPageTopRow.scss';\n\nconst block = cn('chyt-page-top-row');\n\nexport default function ChytPageTopRow() {\n return (\n <RowWithName page={Page.CHYT} name=\"CHYT cliques\">\n <ChytFavourites />\n <ChytBreadcrumbs />\n <CreateChytButton />\n </RowWithName>\n );\n}\n\nfunction ChytFavourites() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const isActiveInFavourites = useSelector(isActiveCliqueInFavourites);\n const favourites = useSelector(getFavouriteChyt);\n const dispatch = useDispatch();\n const currentClique = useSelector(getChytCurrentAlias);\n\n const handleFavouriteItemClick = React.useCallback(\n (item: FavouritesItem) => {\n history.push(`/${cluster}/${Page.CHYT}/${item.path}`);\n },\n [history, cluster],\n );\n\n const handleFavouriteToggle = React.useCallback(() => {\n dispatch(chytToggleFavourite(currentClique));\n }, [dispatch, currentClique]);\n\n return (\n <Favourites\n isActive={isActiveInFavourites}\n items={favourites}\n onItemClick={handleFavouriteItemClick}\n onToggle={handleFavouriteToggle}\n toggleDisabled={!currentClique}\n theme={'clear'}\n />\n );\n}\n\nfunction ChytBreadcrumbs() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const alias = useSelector(getChytCurrentAlias);\n\n const items = React.useMemo(() => {\n const result = [\n <BreadcrumbsItem key=\"<Root>\" href={`/${cluster}/${Page.CHYT}`}>\n {'<Root>'}\n </BreadcrumbsItem>,\n ];\n\n if (alias) {\n result.push(\n <BreadcrumbsItem key={alias} href={`/${cluster}/${Page.CHYT}/${alias}`}>\n {alias}\n </BreadcrumbsItem>,\n );\n }\n\n return result;\n }, [alias, cluster]);\n\n return (\n <div className={block('breadcrumbs')}>\n <EditableAsText\n className={block('editable')}\n onChange={(text) => {\n if (!text) {\n history.push(`/${cluster}/${Page.CHYT}`);\n } else if (text !== alias) {\n history.push(`/${cluster}/${Page.CHYT}/${text}`);\n }\n }}\n text={alias}\n disableEdit={Boolean(!alias)}\n renderEditor={(props) => <ChytAliasSuggest cluster={cluster} {...props} />}\n >\n <Breadcrumbs navigate={history.push} showRoot>\n {items}\n </Breadcrumbs>\n </EditableAsText>\n {alias && <ClipboardButton text={alias} />}\n </div>\n );\n}\n\nfunction ChytAliasSuggest({\n value,\n onChange,\n className,\n onApply,\n cluster,\n onBlur,\n}: {\n cluster: string;\n value?: string;\n onChange: (value?: string) => void;\n className?: string;\n onBlur: () => void;\n onApply: (value?: string) => void;\n}) {\n const [items, setItems] = React.useState<Array<string>>([]);\n\n const isAdmin = useSelector(isDeveloper);\n\n React.useEffect(() => {\n chytApiAction('list', cluster, {}, {isAdmin}).then((data) => {\n setItems(data.result.map((item) => ypath.getValue(item)));\n });\n }, [isAdmin]);\n\n return (\n <Suggest\n autoFocus\n className={`${block('alias-suggest')} ${className}`}\n text={value}\n filter={(_x, text) => {\n if (!text) {\n return items;\n }\n return items.filter((item) => {\n return -1 !== item.indexOf(text);\n });\n }}\n apply={(item) => {\n if ('string' === typeof item) {\n onChange(item);\n } else {\n onChange(item.value);\n }\n }}\n onItemClick={(item) => {\n onApply(typeof item === 'string' ? item : item.value);\n }}\n onBlur={onBlur}\n />\n );\n}\n\ntype FormValues = {\n alias: string;\n instance_count: number;\n tree: string[];\n pool: string;\n runAfterCreation: boolean;\n};\n\nfunction CreateChytButton() {\n const dispatch = useThunkDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const [visible, setVisible] = React.useState(false);\n\n const [error, setError] = React.useState<YTError | undefined>();\n\n return (\n <div className={block('create-clique')}>\n <Button view=\"action\" onClick={() => setVisible(!visible)}>\n Create clique\n </Button>\n {visible && (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <YTDFDialog<FormValues>\n visible\n className={block('create-dialog')}\n headerProps={{title: 'Create clique'}}\n onClose={() => setVisible(false)}\n onAdd={(form) => {\n const {\n values: {instance_count, ...rest},\n } = form.getState();\n return dispatch(\n chytCliqueCreate({\n ...rest,\n instance_count: instance_count || 1,\n }),\n )\n .then(() => {\n setError(undefined);\n history.push(\n `/${cluster}/chyt/${rest.alias}/${ChytCliquePageTab.SPECLET}`,\n );\n })\n .catch((e) => {\n setError(e);\n return Promise.reject(e);\n });\n }}\n fields={[\n {\n name: 'alias',\n type: 'text',\n caption: 'Alias name',\n required: true,\n },\n {\n name: 'instance_count',\n type: 'range-input-picker',\n caption: 'Instance count',\n extras: {\n minValue: 1,\n maxValue: 100,\n },\n required: true,\n },\n {\n name: 'tree',\n type: 'pool-tree',\n caption: 'Pool tree',\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n extras: ({tree}: FormValues) => {\n return {\n poolTrees: tree,\n placeholder: 'Pool name...',\n allowEmpty: true,\n };\n },\n },\n {\n name: 'poolNotice',\n type: 'block',\n visibilityCondition: {\n when: 'pool',\n isActive(pool) {\n return !pool;\n },\n },\n extras: {\n children: (\n <Text color=\"info-heavy\" variant=\"body-2\">\n Select a pool to start the clique after creation.\n </Text>\n ),\n },\n },\n {\n name: 'runAfterCreation',\n type: 'tumbler',\n caption: 'Start after creation',\n visibilityCondition: {\n when: 'pool',\n isActive(v) {\n return Boolean(v);\n },\n },\n },\n ...makeErrorFields([error]),\n ]}\n initialValues={{\n instance_count: 1,\n tree: [defaultPoolTree],\n runAfterCreation: true,\n }}\n />\n )}\n </WaitForDefaultPoolTree>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport withSplit from '../../../hocs/withSplit';\nimport withLazyLoading from '../../../hocs/withLazyLoading';\nimport type {QueryWidgetProps} from './index';\nimport {mergeScreen, splitScreen} from '../../../store/actions/global';\nimport {SPLIT_TYPE} from '../../../constants/components/nodes/nodes';\nimport Loader from '../../../components/Loader/Loader';\n\nexport const QueryWidgetLazy = React.lazy(\n () => import(/* webpackChunkName: \"query-widget\" */ './index'),\n);\n\nexport const QueryWidgetPortal = withSplit(\n withLazyLoading<QueryWidgetProps>(QueryWidgetLazy, <Loader visible centered size=\"l\" />),\n);\n\nexport function useQueryWidgetSidePanel() {\n const [widgetOpened, setWidgetOpened] = React.useState(false);\n const dispatch = useDispatch();\n\n const openWidget = React.useCallback(() => {\n dispatch(splitScreen(SPLIT_TYPE));\n setWidgetOpened(true);\n }, [setWidgetOpened, dispatch]);\n\n const onClose = React.useCallback(() => {\n setWidgetOpened(false);\n dispatch(mergeScreen());\n }, [setWidgetOpened, dispatch]);\n\n return {\n closeWidget: onClose,\n openWidget,\n widgetOpened,\n widgetContent: widgetOpened ? <QueryWidgetPortal onClose={onClose} /> : null,\n };\n}\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport uniq_ from 'lodash/uniq';\n\nimport {createSelector} from 'reselect';\n\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport type {RootState} from '../../../store/reducers';\nimport type {ChaosBundle, ChaosCell} from '../../../store/reducers/chaos_cell_bundles';\nimport {getCluster} from '../../../store/selectors/global';\nimport {\n aggregateTotal,\n tabletActiveChaosBundleLink,\n tabletChaosBundleRootLink,\n} from '../../../utils/components/tablet-cells';\nimport {prepareHost} from '../../../utils';\nimport {sortArrayBySortState} from '../../../utils/sort-helpers';\nimport {sortTableBundles} from '../../../utils/tablet_cell_bundles';\n\nexport const getChaosIsLoaded = (state: RootState) => state.chaos_cell_bundles.loaded;\nexport const getChaosIsLoading = (state: RootState) => state.chaos_cell_bundles.loading;\nexport const getChaosError = (state: RootState) => state.chaos_cell_bundles.error;\n\nexport const getChaosBundlesSortState = (state: RootState) => state.chaos_cell_bundles.bundlesSort;\n\nexport const getChaosBundlesNameFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesNameFilter;\nexport const getChaosBundlesAccountFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesAccountFilter;\nexport const getChaosBundlesTagNodeFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesTagNodeFilter;\n\nexport const getChaosBundles = (state: RootState) => state.chaos_cell_bundles.bundles;\n\nexport const getChaosActiveBundle = (state: RootState) => state.chaos_cell_bundles.activeBundle;\n\nexport const getChaosBundlesTableMode = (state: RootState) =>\n state.chaos_cell_bundles.bundlesTableMode;\n\nexport const getChaosActiveBundleData = createSelector(\n [getChaosBundles, getChaosActiveBundle],\n (bundles, activeBundle) => {\n return find_(bundles, (item) => item.bundle === activeBundle);\n },\n);\n\nexport const getChaosBundlesTotal = createSelector(\n [getChaosBundles],\n (bundles): ChaosBundle => aggregateTotal(bundles),\n);\n\nconst COLUMNS_SORTABLE_AS_IS = new Set<keyof ChaosBundle>([\n 'bundle',\n 'health',\n 'tabletCells',\n 'tablets',\n 'uncompressed',\n 'compressed',\n 'enable_bundle_balancer',\n 'node_tag_filter',\n 'memory',\n 'tablet_count',\n 'tablet_count_limit',\n 'tablet_count_free',\n 'tablet_count_percentage',\n 'tablet_static_memory',\n 'tablet_static_memory_limit',\n 'tablet_static_memory_free',\n 'tablet_static_memory_percentage',\n]);\n\nexport const getChaosBundlesFiltered = createSelector(\n [\n getChaosBundles,\n getChaosBundlesNameFilter,\n getChaosBundlesAccountFilter,\n getChaosBundlesTagNodeFilter,\n ],\n (bundles, nameFilter, accountFilter, tagNodeFilter) => {\n const predicates: Array<(item: ChaosBundle) => boolean> = [];\n if (nameFilter) {\n const lowerNameFilter = nameFilter.toLowerCase();\n predicates.push((item) => {\n return -1 !== item.bundle.toLowerCase().indexOf(lowerNameFilter);\n });\n }\n\n if (accountFilter) {\n const lowerAccountFilter = accountFilter.toLowerCase();\n predicates.push((item) => {\n const {changelog_account, snapshot_account} = item;\n return (\n (Boolean(changelog_account) &&\n -1 !== changelog_account.toLowerCase().indexOf(lowerAccountFilter)) ||\n (Boolean(snapshot_account) &&\n -1 !== snapshot_account.toLowerCase().indexOf(lowerAccountFilter))\n );\n });\n }\n\n if (tagNodeFilter) {\n const lowerTagNodeFilter = tagNodeFilter.toLowerCase();\n predicates.push((item) => {\n const {node_tag_filter} = item;\n return (\n Boolean(node_tag_filter) &&\n -1 !== node_tag_filter.toLowerCase().indexOf(lowerTagNodeFilter)\n );\n });\n }\n\n return !predicates.length ? bundles : filter_(bundles, concatByAnd(...predicates));\n },\n);\n\nexport const getChaosBundlesSorted = createSelector(\n [getChaosBundlesFiltered, getChaosBundlesSortState],\n (bundles, {column, order}) => {\n if (!column || !order) {\n return bundles;\n }\n\n return sortTableBundles({bundles, column, order, columnsSortable: COLUMNS_SORTABLE_AS_IS});\n },\n);\n\nexport const getChaosCells = (state: RootState) => state.chaos_cell_bundles.cells;\nexport const getChaosCellsSortState = (state: RootState) => state.chaos_cell_bundles.cellsSort;\n\nexport const getChaosCellsIdFilter = (state: RootState) => state.chaos_cell_bundles.cellsIdFilter;\nexport const getChaosCellsBundleFilter = (state: RootState) =>\n state.chaos_cell_bundles.cellsBundleFilter;\nexport const getChaosCellsHostFilter = (state: RootState) =>\n state.chaos_cell_bundles.cellsHostFilter;\n\nexport const getChaosCellsOfActiveAccount = createSelector(\n [getChaosCells, getChaosActiveBundle],\n (cells, activeBundle) => {\n if (!activeBundle) {\n return cells;\n }\n\n return filter_(cells, (item) => {\n return Boolean(item.bundle) && activeBundle === item.bundle;\n });\n },\n);\n\nexport const getChaosCellsFiltered = createSelector(\n [\n getChaosCellsOfActiveAccount,\n getChaosCellsIdFilter,\n getChaosCellsBundleFilter,\n getChaosCellsHostFilter,\n getChaosActiveBundle,\n ],\n (cells, idFilter, bundleFilter, hostFilter) => {\n const predicates: Array<(item: ChaosCell) => boolean> = [];\n if (idFilter) {\n predicates.push((item) => {\n return -1 !== item.id.indexOf(idFilter);\n });\n }\n\n if (bundleFilter) {\n predicates.push((item) => {\n return Boolean(item.bundle) && -1 !== item.bundle.indexOf(bundleFilter);\n });\n }\n\n if (hostFilter) {\n predicates.push((item) => {\n return Boolean(item.peerAddress) && -1 !== item.peerAddress.indexOf(hostFilter);\n });\n }\n return !predicates.length ? cells : filter_(cells, concatByAnd(...predicates));\n },\n);\n\nexport function filterChaosCellsByBundle(bundle: string, cells: Array<ChaosCell>) {\n if (!bundle) {\n return [];\n }\n\n return filter_(cells, (item) => item.bundle === bundle);\n}\n\nexport const getChaosCellsSorted = createSelector(\n [getChaosCellsFiltered, getChaosCellsSortState],\n (cells, sortState) => {\n return sortArrayBySortState(cells, sortState);\n },\n);\n\nexport const getChaosCellsBundles = createSelector([getChaosCells], (cells) => {\n return uniq_(map_(cells, 'bundle')).sort();\n});\n\nexport const getChaosCellsHosts = createSelector([getChaosCellsOfActiveAccount], (cells) => {\n return uniq_(map_(cells, 'peerAddress')).sort();\n});\n\nexport const getChaosCellsHostsOfActiveBundle = createSelector(\n [getChaosActiveBundle, getChaosCellsFiltered],\n (activeBundle: string, cells: Array<ChaosCell>) => {\n if (!activeBundle) {\n return '';\n }\n return prepareHostsFromCells(cells);\n },\n);\n\nexport function prepareHostsFromCells(cells: Array<ChaosCell>) {\n return uniq_(map_(cells, ({peerAddress}) => prepareHost(peerAddress)).filter(Boolean))\n .sort()\n .join('|');\n}\n\nexport interface ChaosCellBundlesBreadcrumbsItem {\n text: string;\n href: string;\n title?: string;\n}\n\nexport const getChaosBreadcrumbItems = createSelector(\n [getCluster, getChaosActiveBundle],\n (cluster, activeBundle): Array<ChaosCellBundlesBreadcrumbsItem> => {\n const res: Array<ChaosCellBundlesBreadcrumbsItem> = [\n {\n text: '',\n href: tabletChaosBundleRootLink(cluster),\n title: '<bundles>',\n },\n ];\n\n if (activeBundle) {\n res.push({\n text: activeBundle,\n href: tabletActiveChaosBundleLink(cluster, activeBundle),\n });\n }\n\n return res;\n },\n);\n","import {createSelector} from 'reselect';\nimport uniq_ from 'lodash/uniq';\nimport compact_ from 'lodash/compact';\n\nimport {concatByAnd} from '../../../common/hammer/predicate';\n\nimport {RootState} from '../../../store/reducers';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {SortState} from '../../../types';\nimport {multiSortBySortStateArray} from '../../../utils/sort-helpers';\nimport {StrawberryListAttributes} from '../../../utils/strawberryControllerApi';\nimport {getSettingsData} from '../settings-base';\n\nexport const getChytListData = (state: RootState) => state.chyt.list.data;\n\nexport const getChytListAvailableCreators = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return uniq_(items.map((item) => item.creator!)).sort();\n});\n\nexport const getChytListAvailableHealths = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return compact_(uniq_(items.map((item) => item.health)).sort());\n});\n\nexport const getChytListAvailableStates = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return uniq_(items.map((item) => item.state!)).sort();\n});\n\nexport const getChytCurrentAlias = (state: RootState) => state.chyt.clique.currentClique;\n\nexport const getChytListFilterAlias = (state: RootState) => state.chyt.listFilters.name;\nexport const getChytListFilterHealth = (state: RootState) => state.chyt.listFilters.health;\nexport const getChytListFilterCreator = (state: RootState) => state.chyt.listFilters.creator;\nexport const getChytListFilterState = (state: RootState) => state.chyt.listFilters.state;\n\ntype ChytListColumns = Exclude<StrawberryListAttributes, 'yt_operation_id'>;\nconst CHYT_LIST_SELECTABLE_COLUMNS: Record<Exclude<ChytListColumns, 'health_reason'>, true> = {\n instance_count: true,\n total_cpu: true,\n total_memory: true,\n creation_time: true,\n stage: true,\n yt_operation_start_time: true,\n yt_operation_finish_time: true,\n speclet_modification_time: true,\n strawberry_state_modification_time: true,\n pool: true,\n health: true,\n creator: true,\n state: true,\n};\n\nexport type ChytSelectableColumn = keyof typeof CHYT_LIST_SELECTABLE_COLUMNS;\n\ntype ChytColumnItem = {checked: boolean; column: ChytListColumns};\n\nexport const getChytListColumnsFromSettings = (state: RootState) => {\n return (\n getSettingsData(state)['global::chyt::list_columns'] ??\n ([\n 'health',\n 'state',\n 'instance_count',\n 'total_cpu',\n 'total_memory',\n 'creator',\n 'creation_time',\n ] as const)\n );\n};\n\nexport const getChytListVisibleColumns = createSelector(\n [getChytListColumnsFromSettings],\n (columns): Array<ChytSelectableColumn> => {\n const userColumns = new Set(columns);\n return compact_(\n columns.map((k) => {\n return CHYT_LIST_SELECTABLE_COLUMNS[\n k as keyof typeof CHYT_LIST_SELECTABLE_COLUMNS\n ] && userColumns.has(k)\n ? (k as ChytSelectableColumn)\n : null;\n }),\n );\n },\n);\n\nexport const getChytListColumns = createSelector(\n [getChytListVisibleColumns],\n (columns): Array<ChytColumnItem> => {\n const userColumns = new Set(columns);\n const res = columns.map((column) => {\n return {checked: true, column};\n });\n\n Object.keys(CHYT_LIST_SELECTABLE_COLUMNS).forEach((k) => {\n const column = k as ChytSelectableColumn;\n if (!userColumns.has(column)) {\n res.push({checked: false, column});\n }\n });\n\n return res;\n },\n);\n\nexport const getChytListTableSortState = (state: RootState) => state.chyt.listFilters.sortState;\n\nexport const getChytListTableSortStateByName = createSelector(\n [getChytListTableSortState],\n (sortState) => {\n return sortState.reduce(\n (acc, item, index) => {\n if (item.column) {\n acc[item.column] = {\n ...item,\n multisortIndex: sortState.length > 1 ? index + 1 : undefined,\n };\n }\n return acc;\n },\n {} as Record<keyof ChytInfo, SortState<keyof ChytInfo> & {multisortIndex?: number}>,\n );\n },\n);\n\nconst getChytFilterPredicate = createSelector(\n [\n getChytListFilterAlias,\n getChytListFilterCreator,\n getChytListFilterState,\n getChytListFilterHealth,\n ],\n (alias, creator, state, health) => {\n const predicates = compact_([\n alias ? (item: ChytInfo) => -1 !== item.alias.indexOf(alias) : undefined,\n creator !== undefined ? (item: ChytInfo) => creator === item.creator : undefined,\n state ? (item: ChytInfo) => state === item.state : undefined,\n health ? (item: ChytInfo) => health === item.health : undefined,\n ]);\n\n return predicates.length ? concatByAnd(...predicates) : undefined;\n },\n);\n\nexport const getChytListTableItems = createSelector(\n [getChytListData, getChytListTableSortState, getChytFilterPredicate],\n (data, sortState, predicate) => {\n const {items = []} = data;\n\n const filteredItems = !predicate ? items : items.filter(predicate);\n\n const sortedItems = multiSortBySortStateArray(filteredItems, sortState);\n\n return sortedItems;\n },\n);\n","import find_ from 'lodash/find';\nimport sortBy_ from 'lodash/sortBy';\n\nimport {createSelector} from 'reselect';\n\nimport {\n getAccountsNS,\n getBundlesNS,\n getChaosBundlesNS,\n getChytNS,\n getClusterNS,\n getSchedulingNS,\n makeGetSetting,\n} from '../../store/selectors/settings';\nimport {SettingName} from '../../../shared/constants/settings';\nimport {getActiveAccount} from '../../store/selectors/accounts/accounts';\nimport {getPath} from '../../store/selectors/navigation';\nimport {getPool, getTree} from '../../store/selectors/scheduling/scheduling';\nimport {getTabletsActiveBundle} from './tablet_cell_bundles';\nimport {getChaosActiveBundle} from './chaos_cell_bundles';\nimport {getChytCurrentAlias} from './chyt';\n\n//************* Selectors for Accounts *****************\n\nexport const getFavouriteAccounts = createSelector(\n [makeGetSetting, getAccountsNS],\n prepareFavourites,\n);\n\nexport const getLastVisitedAccounts = createSelector(\n [makeGetSetting, getAccountsNS],\n prepareLastVisited,\n);\n\nexport const getPopularAccounts = createSelector([getLastVisitedAccounts], preparePopulars);\n\nexport const isActiveAcountInFavourites = createSelector(\n [getActiveAccount, getFavouriteAccounts],\n prepareIsInFavourites,\n);\n\nexport const getFavouriteChyt = createSelector([makeGetSetting, getChytNS], prepareFavourites);\n\nexport const getLastVisitedChyt = createSelector([makeGetSetting, getChytNS], prepareLastVisited);\n\nexport const getPopularChyt = createSelector([getLastVisitedChyt], preparePopulars);\n\nexport const isActiveCliqueInFavourites = createSelector(\n [getChytCurrentAlias, getFavouriteChyt],\n prepareIsInFavourites,\n);\n\n//************* Selectors for Navigation *****************\n\nexport const getFavouritePaths = createSelector([makeGetSetting, getClusterNS], prepareFavourites);\n\nexport const getLastVisitedPaths = createSelector(\n [makeGetSetting, getClusterNS],\n prepareLastVisited,\n);\n\nexport const getPopularPaths = createSelector([getLastVisitedPaths], preparePopulars);\n\nexport const isCurrentPathInFavourites = createSelector(\n [getPath, getFavouritePaths],\n prepareIsInFavourites,\n);\n\n//************* Selectors for Scheduling *****************\n\nexport const getFavouritePools = createSelector(\n [makeGetSetting, getSchedulingNS],\n prepareFavourites,\n);\n\nexport const isActivePoolInFavourites = createSelector(\n [getPool, getTree, getFavouritePools],\n prepareIsPoolInFavourites,\n);\n\n//************* Selectors for Bundles *****************\n\nexport const getFavouriteBundles = createSelector(\n [makeGetSetting, getBundlesNS],\n prepareFavourites,\n);\n\nexport const isActiveBundleInFavourites = createSelector(\n [getTabletsActiveBundle, getFavouriteBundles],\n prepareIsInFavourites,\n);\n\n// ************ Selectors for Chaos bundles ***********\n\nexport const getFavouriteChaosBundles = createSelector(\n [makeGetSetting, getChaosBundlesNS],\n prepareFavourites,\n);\n\nexport const isActiveChaosBundleInFavourites = createSelector(\n [getChaosActiveBundle, getFavouriteChaosBundles],\n prepareIsInFavourites,\n);\n\n//********************** Helpers *************************\n\nfunction prepareFavourites(getSetting, parentNS) {\n const items = getSetting(SettingName.LOCAL.FAVOURITES, parentNS);\n return sortBy_(items, 'path');\n}\n\nfunction prepareLastVisited(settingGetter, parentNS) {\n return settingGetter(SettingName.LOCAL.LAST_VISITED, parentNS) || [];\n}\n\nfunction preparePopulars(lastVisited) {\n return sortBy_(lastVisited, (entry) => -entry.count);\n}\n\nfunction prepareIsInFavourites(value, favourites) {\n return Boolean(find_(favourites, ({path}) => path === value));\n}\n\nfunction prepareIsPoolInFavourites(pool, tree, favourites) {\n return Boolean(find_(favourites, ({path}) => path === `${pool}[${tree}]`));\n}\n","import {createSelector} from 'reselect';\nimport clone_ from 'lodash/clone';\n\nimport {\n getFormat,\n getShowDecoded,\n shouldCompact,\n shouldEscapeWhitespace,\n useBinaryAsHex,\n} from '../../../store/selectors/settings';\nimport {getUnipikaSettingsFromConfig} from '../../../common/thor/unipika-settings';\n\nexport interface YsonSettings {\n format: string;\n showDecoded: boolean;\n compact: boolean;\n escapeWhitespace: boolean;\n binaryAsHex: boolean;\n asHTML: boolean;\n}\n\n/**\n * !!! Do not use this selector directly, result should be copied by another selector !!!\n * unipika.format && unipika.foramtRaw mix different properties into settings-object.\n * So, to minimize side-effects each UI-component should use his-own copy of settings-object.\n */\nconst getYsonSettings = createSelector(\n [getFormat, getShowDecoded, shouldCompact, shouldEscapeWhitespace, useBinaryAsHex],\n (\n format: string,\n showDecoded: boolean,\n compact: boolean,\n escapeWhitespace: boolean,\n binaryAsHex: boolean,\n ): YsonSettings => {\n return {\n format,\n showDecoded,\n compact,\n escapeWhitespace,\n binaryAsHex,\n asHTML: true,\n ...getUnipikaSettingsFromConfig(),\n };\n },\n);\n\nexport const getJobGeneralYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getJobSpecificationYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getTableYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationAttributesYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationExperimentsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNavigationMountConfigYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getEditJsonYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNodeUnrecognizedOptionsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getPreviewCellYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getFlowSpecYsonSettings = createSelector([getYsonSettings], clone_);\n"],"names":["block","cn","EditableAsText","props","children","onChange","text","className","withControls","size","disableEdit","cancelOnClose","openOnClick","renderEditor","onModeChange","_props$saveButtonView","saveButtonView","_props$cancelButtonVi","cancelButtonView","_React$useState","React","_React$useState2","_slicedToArray","editMode","setEditMode","_React$useState3","_React$useState4","input","setInput","useEffect","handleChangeMode","useCallback","isEdit","closeEditMode","startTextEdit","handleChange","val","applyValue","closeAndResetValue","onApply","value","handleKeyDown","evt","key","controlSize","_jsx","onClick","_jsxs","_Fragment","onBlur","TextInput","autoFocus","onUpdate","onKeyDown","Button","view","extraProps","onMouseDown","Icon","awesome","type","EditButton","_ref","_ref$size","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","_React$Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","_this$props","order","allowUnordered","withUndefined","nextSortOrderValue","_createClass","_this$props2","this","label","hidden","icon","Tooltip","content","format","ReadableField","face","b","Suggest","PropTypes","counter","_Component","isClearClicked","isUnmounting","skipApplyForNextBlur","onTextUpdate","clear","setState","loadSuggestions","showSuggestions","items","_this$props$onOpenCha","popupVisible","selectedIndex","onOpenChange","open","state","defaultText","prevItems","onFocus","bind","_assertThisInitialized","hideSuggestions","clearSuggestions","_this$props$onFocus","_this$props3","focused","_this$props$onBlur","_this$props4","_this$state$text","applySuggestion","keyCode","preventDefault","selectNextSuggestion","selectPrevSuggestion","applyOrClearSuggestion","_this$input$current","current","blur","_this$props$onOpenCha2","_this$props5","_this$props6","filter","Promise","resolve","then","_this$input$current2","_this$input$current3","itemIndex","item","_this$state","getItemIndex","getItemValue","onItemClick","_this$state2","prevIndex","getSelectedIndex","_this$state3","nextIndex","_this$props7","placeholder","disabled","pin","hasClear","controlRef","renderCounter","index","_this2","itemClassName","selected","undefined","_this$props8","template","renderItem","renderer","templates","get","__default__","renderSimpleItem","title","offsetWidth","maxItems","isNumber_","slice","isObject_","totalAmount","groupPredicate","_partition_","partition_","_partition_2","positiveGroup","negativeGroup","positiveGroupMaxItems","Math","round","max","_this3","listClassName","showNoItemsMsg","style","minWidth","getInputWidth","ReactList","itemRenderer","_this$props9","popupClassName","popupPlacement","restrictItems","Popup","placement","anchorRef","onClose","renderSuggestions","renderInput","renderPopup","prevState","Component","defaultProps","disable","zIndexGroupLevel","Secondary","Bold","_ref2","SecondaryBold","_ref3","Warning","_ref4","WarningLight","_ref5","NoWrap","_ref6","Escaped","_ref7","textNode","unipika","prettyprint","_objectSpread","UNIPIKA_ESCAPED_SETTINGS","asHTML","dangerouslySetInnerHTML","__html","withSplit","_WithSplit","WithSplit","ReactDOM","document","getElementById","SPLIT_PANE_ID","displayName","getDisplayName","usePoolTreesLoaded","dispatch","useDispatch","loadPoolTreesIfNotLoaded","PoolTreesLoader","useDefaultPoolTree","defaultPoolTree","setDefaultPoolTree","loadDefaultPoolTree","WaitForDefaultPoolTree","cancelHelper","CancelHelper","chytLoadList","getState","cluster","getCluster","isAdmin","isDeveloper","columns","getChytListVisibleColumns","CHYT_LIST","REQUEST","extraColumns","indexOf","attributesSet","Set","_toConsumableArray","chytApiAction","attributes","cancelToken","removeAllAndGenerateNextToken","data","_data$result","result","map","$value","_ref$$attributes","$attributes","alias","SUCCESS","error","isCancelled","FAILURE","chytListAction","action","params","skipLoadList","d","ChytPageListToolbar","filters","CHYT_LIST_FILTERS","Toolbar","itemsToWrap","name","node","NameIdFilter","growable","wrapperClassName","CreatorFilter","StateFilter","HealthFilter","ChytListColumnsButton","useSelector","getChytListFilterAlias","getChytListFilterCreator","creators","getChytListAvailableCreators","SelectSingle","creator","getChytListFilterHealth","choices","getChytListAvailableHealths","health","getChytListFilterState","states","getChytListAvailableStates","visible","setVisible","getChytListColumns","dialog","ColumnSelectorModal","isVisible","i","_CHYT_TABLE_TITLES$i$","CHYT_TABLE_TITLES","column","checked","onConfirm","newColumns","setSettingByKey","chytSetVisibleColumns","onCancel","OperationId","id","color","allowCopy","operationId","Text","variant","Link","theme","url","Page","OPERATIONS","routed","ClipboardButton","visibleOnRowHover","inlineMargins","NO_VALUE","THEME_MAP","good","failed","active","pending","untracked","CliqueState","Label","hideTitle","capitalize","ChytConfirmation","pool","onAction","ChytSimpleConfirmation","ChytStartConfirmation","useThunkDispatch","setError","YTDFDialog","pristineSubmittable","headerProps","footerProps","textApply","capitalize_","onAdd","fields","extras","makeErrorFields","initialValues","form","values","isApplyDisabled","_state$values","Boolean","caption","tooltip","visibilityCondition","when","isActive","v","useCliqueOnSqlAction","openWidget","allowQueryTracker","isQueryTrackerAllowed","setTimeout","updateQueryDraft","engine","QueryEngine","CHYT","query","settings","clique","UIFactory","onChytAliasSqlClick","ChytCliqueActions","showAllButtons","allButtonsClassName","onSqlClick","visibleConfirmation","setVisibleConirmation","start","stop","remove","menuItems","sqlButton","DropdownMenu","switcher","ChytListHeader","_ref16","_CHYT_TABLE_TITLES$co","sortState","getChytListTableSortStateByName","ColumnHeader","onSort","col","nextOrder","options","prevSortState","getChytListTableSortState","updateSortStateArray","chytToggleSortState","DateTimeCell","_ref17","time","DateTime","lastSpace","lastIndexOf","substring","ChytPageListTable","getChytListTableItems","_useQueryWidgetSidePa","useQueryWidgetSidePanel","widgetContent","checkedColumns","columnsByName","header","render","row","OperationPool","tree","width","instance_count","Number","align","total_cpu","total_memory","Bytes","health_reason","creation_time","speclet_modification_time","stage","_ref8","strawberry_state_modification_time","_ref9","yt_operation_finish_time","_ref10","yt_operation_start_time","_ref11","_ref12","SubjectCard","_ref13","res","_ref14","yt_operation_id","_ref15","useChytListColumns","DataTableYT","DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR","useThemeYT","ChytPageList","update","useUpdater","WithStickyToolbar","toolbar","chytCliqueLoad","CHYT_CLIQUE","currentClique","skipErrorToast","getChytCliqueData","chyt","getChytCliqueError","getChytCliqueInitialLoading","_state$chyt$clique","loaded","loading","getChytCliqueStartError","_state$chyt$clique$da","ChytPageCliqueAcl","getChytCurrentAlias","AccessContentAcl","path","CONVERTER","number","toFieldValue","fromFieldValue","_oldV","json","JSON","stringify","oldV","parse","_unused","plain","string_with_choices","getChytOptionsData","getChytOptionsDataAlias","dataAlias","getChytOptionsError","chytLoadCliqueSpeclet","CHYT_SPECLET","chytLoadCliqueOptions","showTooltipError","CHYT_OPTIONS","wrapApiPromiseByToaster","toasterName","skipSuccessToast","getChytSpecletLoaded","speclet","getChytSpecletData","getChytSpecletDataAlias","getChytSpecletError","useSpecletData","skipLoad","specletData","unipikaSettings","getEditJsonYsonSettings","ChytPageCliqueSpeclet","_useSpecletData","Error","bottomMargin","ChytSpecletEditButton","ChytSpeclet","Yson","folding","extraTools","YsonDownloadButton","compact","_useSpecletData2","ChytSpecletEditDialog","allowEdit","_React$useMemo","groups","typeByName","fieldTypeByName","group","group_name","groupInitialValues","sectionFields","dstInitialValues","dstConvertersByName","_descriptionToDialogF","_item$current_value","_item$current_value2","_item$current_value3","common","description","converter","default_value","String","_item$choices","initialValue","current_value","valueFormat","defaultFormatted","hidePrettyValue","min","min_value","max_value","integerOnly","showHint","fullWidth","minHeight","nullPreview","allowEmpty","descriptionToDialogField","_objectWithoutProperties","_excluded","makeDialogField","makeTabbedDialogFieldsFromDescription","_step","_iterator","_createForOfIteratorHelper","_loop","poolTrees","some","field","pool_trees","s","n","done","err","e","f","linkPoolWithPoolTree","formValues","reduce_","acc","tabValues","restart_on_speclet_change","initials","diff","oldValue","options_to_remove","options_to_set","Object","keys","forEach","k","push","chytEditOptions","ChytPageCliqueMonitoring","_UIFactory$getMonitor","MonitoginComponnet","getMonitoringComponentForChyt","component","NoContent","ChytPageCliqueTabs","match","useRouteMatch","ytCluster","chytAlias","chytMonitoring","tabProps","urlTemplate","useTemplate","makeTabProps","ChytCliquePageTab","MONITORING","show","external","formatByParams","allowMonitoring","Tabs","Switch","Route","SPECLET","ACL","Redirect","to","ChytPageClique","_useSelector","history","useHistory","PARTITION","initialLoading","Loader","ChytCliqueErrors","ChytCliqueMetaTable","_useSelector2","startError","message","Alert","ctl_attributes","yt_operation","incarnation_index","start_time","finish_time","start_time_number","moment","valueOf","finish_time_number","Date","now","duration","TimeDuration","MetaTable","ChytPage","ErrorBoundary","ChytPageTopRow","RowWithName","page","ChytFavourites","ChytBreadcrumbs","CreateChytButton","isActiveInFavourites","isActiveCliqueInFavourites","favourites","getFavouriteChyt","handleFavouriteItemClick","handleFavouriteToggle","chytToggleFavourite","Favourites","onToggle","toggleDisabled","BreadcrumbsItem","href","ChytAliasSuggest","Breadcrumbs","navigate","showRoot","setItems","ypath","getValue","_x","_React$useState5","_React$useState6","_form$getState$values","rest","runAfterCreation","speclet_options","successTitle","reject","required","minValue","maxValue","QueryWidgetLazy","QueryWidgetPortal","withLazyLoading","centered","widgetOpened","setWidgetOpened","splitScreen","SPLIT_TYPE","mergeScreen","closeWidget","getChaosIsLoaded","chaos_cell_bundles","getChaosIsLoading","getChaosBundlesSortState","bundlesSort","getChaosBundlesNameFilter","bundlesNameFilter","getChaosBundlesAccountFilter","bundlesAccountFilter","getChaosBundlesTagNodeFilter","bundlesTagNodeFilter","getChaosBundles","bundles","getChaosActiveBundle","activeBundle","getChaosBundlesTableMode","bundlesTableMode","getChaosActiveBundleData","createSelector","find_","bundle","getChaosBundlesTotal","aggregateTotal","COLUMNS_SORTABLE_AS_IS","getChaosBundlesFiltered","nameFilter","accountFilter","tagNodeFilter","predicates","lowerNameFilter","toLowerCase","lowerAccountFilter","changelog_account","snapshot_account","lowerTagNodeFilter","node_tag_filter","filter_","concatByAnd","getChaosBundlesSorted","sortTableBundles","columnsSortable","getChaosCells","cells","getChaosCellsSortState","cellsSort","getChaosCellsIdFilter","cellsIdFilter","getChaosCellsBundleFilter","cellsBundleFilter","getChaosCellsHostFilter","cellsHostFilter","getChaosCellsOfActiveAccount","getChaosCellsFiltered","idFilter","bundleFilter","hostFilter","peerAddress","filterChaosCellsByBundle","getChaosCellsSorted","sortArrayBySortState","getChaosCellsBundles","uniq_","map_","sort","getChaosCellsHosts","getChaosCellsHostsOfActiveBundle","prepareHostsFromCells","prepareHost","join","getChaosBreadcrumbItems","tabletChaosBundleRootLink","tabletActiveChaosBundleLink","getChytListData","list","_data$items","_data$items2","compact_","_data$items3","listFilters","CHYT_LIST_SELECTABLE_COLUMNS","_getSettingsData$glob","getSettingsData","userColumns","has","reduce","multisortIndex","getChytFilterPredicate","predicate","_data$items4","filteredItems","multiSortBySortStateArray","getFavouriteAccounts","makeGetSetting","getAccountsNS","prepareFavourites","getLastVisitedAccounts","prepareLastVisited","getPopularAccounts","preparePopulars","isActiveAcountInFavourites","getActiveAccount","prepareIsInFavourites","getChytNS","getLastVisitedChyt","getFavouritePaths","getClusterNS","getLastVisitedPaths","getPopularPaths","isCurrentPathInFavourites","getPath","getFavouritePools","getSchedulingNS","isActivePoolInFavourites","getPool","getTree","getFavouriteBundles","getBundlesNS","isActiveBundleInFavourites","getTabletsActiveBundle","getFavouriteChaosBundles","getChaosBundlesNS","isActiveChaosBundleInFavourites","getSetting","parentNS","SettingName","LOCAL","FAVOURITES","sortBy_","settingGetter","LAST_VISITED","lastVisited","entry","count","getYsonSettings","getFormat","getShowDecoded","shouldCompact","shouldEscapeWhitespace","useBinaryAsHex","showDecoded","escapeWhitespace","binaryAsHex","getUnipikaSettingsFromConfig","getJobGeneralYsonSettings","clone_","getJobSpecificationYsonSettings","getTableYsonSettings","getOperationAttributesYsonSettings","getOperationExperimentsYsonSettings","getNavigationMountConfigYsonSettings","getNodeUnrecognizedOptionsYsonSettings","getPreviewCellYsonSettings","getFlowSpecYsonSettings"],"sourceRoot":""}
|