@canvas-components/react-list-table 0.3.32 → 0.3.34
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/index.cjs +38 -6
- package/dist/index.js +39 -7
- package/package.json +5 -6
- package/assets/examples/basic.gif +0 -0
- package/assets/examples/cached-columns.gif +0 -0
- package/assets/examples/carousel-scroll.gif +0 -0
- package/assets/examples/cell-content.gif +0 -0
- package/assets/examples/context-menu.gif +0 -0
- package/assets/examples/data-format.gif +0 -0
- package/assets/examples/draggable.gif +0 -0
- package/assets/examples/editable-cell.gif +0 -0
- package/assets/examples/ellipsis-tooltip.gif +0 -0
- package/assets/examples/empty-state.gif +0 -0
- package/assets/examples/expandable.gif +0 -0
- package/assets/examples/header-actions.gif +0 -0
- package/assets/examples/highlight-mode.gif +0 -0
- package/assets/examples/merged-cells.gif +0 -0
- package/assets/examples/million-rows.gif +0 -0
- package/assets/examples/multi-header.gif +0 -0
- package/assets/examples/pagination.gif +0 -0
- package/assets/examples/remote-query.gif +0 -0
- package/assets/examples/resize.gif +0 -0
- package/assets/examples/row-drag.gif +0 -0
- package/assets/examples/row-selection.gif +0 -0
- package/assets/examples/sized.gif +0 -0
- package/assets/examples/striped.gif +0 -0
- package/assets/examples/summary-row.gif +0 -0
- package/assets/examples/super.gif +0 -0
- package/assets/examples/theme.gif +0 -0
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["#style-inject:#style-inject","../src/styles/table-overrides.css","../src/features/context-menu/conditional-format-dialog.tsx","../src/features/context-menu/cache-menu.ts","../src/features/context-menu/chart-options.ts","../src/features/context-menu/chart-dialog.tsx","../src/features/density/density-options.ts","../src/features/context-menu/context-menu-view.tsx","../src/features/search/search-dialog.tsx","../src/features/export/export-name-dialog.tsx","../src/features/editor/utils.ts","../src/features/editor/editor-overlay.tsx","../src/features/fixed-popup/fixed-popup-view.tsx","../src/features/filter-panel/filter-panel-view.tsx","../src/components/react-list-table-layout.ts","../src/features/pagination/pagination-view.tsx","../src/features/popconfirm/popconfirm-view.tsx","../src/features/tooltip/tooltip-view.tsx","../src/features/toolbar/toolbar-icons.tsx","../src/components/fullscreen-portal.ts","../src/features/toolbar/sortable-list.tsx","../src/features/toolbar/style.css","../src/features/toolbar/table-toolbar.tsx","../src/hooks/use-react-list-table-state.ts","../src/components/build-list-table-options.ts","../src/components/react-list-table-debug-context.tsx","../src/components/column-manager-state.ts","../src/components/react-list-table.tsx"],"names":["Fragment","option","useState","jsx","ReactModal","jsxs","ReactSelect","ReactButton","useRef","ReactInput","useEffect","ReactCheckbox","useMemo","ReactColorPicker","ReactPopup","ReactPopconfirm","useLayoutEffect","ReactNumberInput","options","width","createPortal","ROW_SELECTION_COLUMN"],"mappings":";;;;;;;;;;;AACyB,SAAR,YAA6B,GAAA,EAAK,EAAE,QAAA,EAAS,GAAI,EAAC,EAAG;AAC1D,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,QAAA,KAAa,WAAA,EAAa;AAE7C,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,IAAQ,SAAS,oBAAA,CAAqB,MAAM,EAAE,CAAC,CAAA;AACrE,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAC5C,EAAA,KAAA,CAAM,IAAA,GAAO,UAAA;AAEb,EAAA,IAAI,aAAa,KAAA,EAAO;AACtB,IAAA,IAAI,KAAK,UAAA,EAAY;AACnB,MAAA,IAAA,CAAK,YAAA,CAAa,KAAA,EAAO,IAAA,CAAK,UAAU,CAAA;AAAA,IAC1C,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA,IACxB;AAAA,EACF,CAAA,MAAO;AACL,IAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA,EACxB;AAEA,EAAA,IAAI,MAAM,UAAA,EAAY;AACpB,IAAA,KAAA,CAAM,WAAW,OAAA,GAAU,GAAA;AAAA,EAC7B,CAAA,MAAO;AACL,IAAA,KAAA,CAAM,WAAA,CAAY,QAAA,CAAS,cAAA,CAAe,GAAG,CAAC,CAAA;AAAA,EAChD;AACF;;;ACvB8B,WAAA,CAAY,wwCAAwwC,CAAA;ACgBrzC,IAAM,oBAAA,GAGT;AAAA,EACF,EAAA,EAAI,cAAA;AAAA,EACJ,GAAA,EAAK,oBAAA;AAAA,EACL,EAAA,EAAI,cAAA;AAAA,EACJ,GAAA,EAAK,0BAAA;AAAA,EACL,EAAA,EAAI,cAAA;AAAA,EACJ,GAAA,EAAK,0BAAA;AAAA,EACL,OAAA,EAAS,4CAAA;AAAA,EACT,QAAA,EAAU,0BAAA;AAAA,EACV,KAAA,EAAO,cAAA;AAAA,EACP,QAAA,EAAU;AACZ,CAAA;AAGO,SAAS,wBACd,IAAA,EACQ;AACR,EAAA,OAAO,iBAAA,CAAkB,IAAI,CAAA,CAC1B,GAAA;AAAA,IACC,CAAC,SAAA,EAAW,KAAA,KACV,GAAG,KAAA,KAAU,CAAA,GAAI,MAAM,SAAA,CAAU,QAAA,IAAY,KAAK,iBAAA,IAAqB,KAAA,MAAW,OAAO,UAAA,GAAQ,UAAK,GAAG,oBAAA,CAAqB,SAAA,CAAU,QAAQ,CAAC,CAAA,EAAG,SAAA,CAAU,QAAA,KAAa,WAAW,SAAA,CAAU,QAAA,KAAa,aAAa,EAAA,GAAK,CAAA,CAAA,EAAI,UAAU,KAAA,IAAS,EAAE,EAAE,CAAA,EAAG,SAAA,CAAU,aAAa,SAAA,GAAY,CAAA,QAAA,EAAM,UAAU,QAAA,IAAY,EAAE,KAAK,EAAE,CAAA;AAAA,GACzU,CACC,KAAK,EAAE,CAAA;AACZ;AAGA,SAAS,kBACP,IAAA,EACuC;AACvC,EAAA,OACE,IAAA,CAAK,UAAA,KACJ,IAAA,CAAK,QAAA,GACF;AAAA,IACE;AAAA,MACE,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,UAAU,IAAA,CAAK;AAAA;AACjB,MAEF,EAAC,CAAA;AAET;AAGO,SAAS,wBACd,IAAA,EACe;AACf,EAAA,MAAM,UAAA,GAAa,kBAAkB,IAAI,CAAA;AACzC,EAAA,IAAI,CAAC,UAAA,CAAW,MAAA,EAAQ,OAAO,8DAAA;AAC/B,EAAA,KAAA,MAAW,CAAC,KAAA,EAAO,SAAS,CAAA,IAAK,UAAA,CAAW,SAAQ,EAAG;AACrD,IAAA,MAAM,KAAA,GAAQ,kBAAkB,SAAS,CAAA;AACzC,IAAA,IAAI,OAAO,OAAO,CAAA,aAAA,EAAM,KAAA,GAAQ,CAAC,SAAI,KAAK,CAAA,CAAA;AAAA,EAC5C;AACA,EAAA,OAAO,IAAA;AACT;AAGA,SAAS,kBACP,IAAA,EACe;AACf,EAAA,IAAI,KAAK,QAAA,KAAa,OAAA,IAAW,IAAA,CAAK,QAAA,KAAa,YAAY,OAAO,IAAA;AACtE,EAAA,IAAI,OAAO,IAAA,CAAK,KAAA,IAAS,EAAE,CAAA,CAAE,MAAK,KAAM,EAAA;AACtC,IAAA,OAAO,oHAAA;AACT,EAAA,IAAI,CAAC,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,SAAS,CAAA,CAAE,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAA,EAAG;AACjE,IAAA,IAAI,CAAC,OAAO,QAAA,CAAS,MAAA,CAAO,KAAK,KAAK,CAAC,GAAG,OAAO,kDAAA;AACjD,IAAA,IACE,IAAA,CAAK,QAAA,KAAa,SAAA,KACjB,MAAA,CAAO,IAAA,CAAK,YAAY,EAAE,CAAA,CAAE,IAAA,EAAK,KAAM,EAAA,IACtC,CAAC,OAAO,QAAA,CAAS,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAC,CAAA,IACtC,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAA;AAE3C,MAAA,OAAO,4FAAA;AAAA,EACX;AACA,EAAA,OAAO,IAAA;AACT;AAGO,SAAS,wBAAwB,KAAA,EAIrC;AACD,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,kBAAA,IAAsB,EAAC;AACnD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA;AAAA,IAAyC,MAC/D,KAAA,CAAM,KAAA,IAAS,IAAA,GACX;AAAA,MACE,EAAA,EAAI,CAAA,KAAA,EAAQ,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,MAC7D,QAAA,EAAU,IAAA;AAAA,MACV,KAAA,EAAO,EAAA;AAAA,MACP,eAAA,EAAiB,SAAA;AAAA,MACjB,SAAA,EAAW;AAAA,QAEb,EAAE,GAAG,KAAA,CAAM,KAAA,CAAM,KAAK,CAAA;AAAE,GAC9B;AACA,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAwB,IAAI,CAAA;AACtD,EAAA,MAAM,UAAA,GAAa,kBAAkB,IAAI,CAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,CAAC,KAAA,KAAmD;AAChE,IAAA,OAAA,CAAQ,CAAC,OAAA,MAAa,EAAE,GAAG,OAAA,EAAS,GAAG,OAAM,CAAE,CAAA;AAC/C,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA;AACA,EAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,KAA2C;AACxD,IAAA,KAAA,CAAM,OAAA,CAAQ,6BAA6B,IAAI,CAAA;AAC/C,IAAA,KAAA,CAAM,OAAA,EAAQ;AAAA,EAChB,CAAA;AACA,EAAA,MAAM,cAAA,GAAiB,CACrB,KAAA,EACA,KAAA,KACG;AACH,IAAA,KAAA,CAAM;AAAA,MACJ,YAAY,UAAA,CAAW,GAAA;AAAA,QAAI,CAAC,SAAA,EAAW,CAAA,KACrC,CAAA,KAAM,KAAA,GAAQ,EAAE,GAAG,SAAA,EAAW,GAAG,KAAA,EAAM,GAAI;AAAA;AAC7C,KACD,CAAA;AAAA,EACH,CAAA;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAO,KAAA,CAAM,KAAA,IAAS,IAAA,GAAO,kDAAA,GAAa,kDAAA;AAAA,MAC1C,KAAA,EAAO,GAAA;AAAA,MACP,UAAU,KAAA,CAAM,OAAA;AAAA,MAChB,MAAM,MAAM;AACV,QAAA,MAAM,OAAA,GAAU,wBAAwB,IAAI,CAAA;AAC5C,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,QAAA,CAAS,OAAO,CAAA;AAChB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,CAAC,UAAU,EAAE,GAAG,MAAK,CAAE,CAAA;AAC9C,QAAA,IAAI,KAAA,CAAM,KAAA,IAAS,IAAA,EAAM,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,aAClC,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,GAAI,IAAA;AACzB,QAAA,KAAA,CAAM,IAAI,CAAA;AAAA,MACZ,CAAA;AAAA,MACA,MAAA,EAAO,0BAAA;AAAA,MACP,UAAA,EAAW,cAAA;AAAA,MAEX,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,QAAQ,GAAA,EAAK,EAAA,EAAI,QAAA,EAAU,EAAA,EAAG,EACnD,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAI,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,IAAa,QAAA,EAAA,8QAAA,EAGlC,CAAA;AAAA,6BACC,OAAA,EAAA,EAAM,QAAA,EAAA;AAAA,UAAA,kDAAA;AAAA,0BAEL,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,KAAK,IAAA,IAAQ,EAAA;AAAA,cACpB,QAAA,EAAU,CAAC,KAAA,KAAU,KAAA,CAAM,EAAE,IAAA,EAAM,KAAA,CAAM,MAAA,CAAO,KAAA,EAAO;AAAA;AAAA;AACzD,SAAA,EACF,CAAA;AAAA,wBACA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,GAAA,EAAK,EAAA;AAAA,cACL,SAAA,EAAW,MAAA;AAAA,cACX,SAAA,EAAW;AAAA,aACb;AAAA,YAEC,qBAAW,GAAA,CAAI,CAAC,SAAA,EAAW,KAAA,0BACzBA,UAAA,EAAA,EACE,QAAA,EAAA;AAAA,cAAA,KAAA,GAAQ,CAAA,oBACP,GAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBACC,YAAA,EAAY,CAAA,aAAA,EAAM,KAAK,CAAA,oBAAA,EAAQ,QAAQ,CAAC,CAAA,mBAAA,CAAA;AAAA,kBACxC,KAAA,EAAO,SAAA,CAAU,QAAA,IAAY,IAAA,CAAK,iBAAA,IAAqB,KAAA;AAAA,kBACvD,OAAA,EAAS;AAAA,oBACP,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,QAAA,EAAI;AAAA,oBAC3B,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,QAAA;AAAI,mBAC5B;AAAA,kBACA,QAAA,EAAU,CAAC,KAAA,KACT,cAAA,CAAe,OAAO,EAAE,QAAA,EAAU,OAAuB,CAAA;AAAA,kBAE3D,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA,EAAI,aAAa,QAAA;AAAS;AAAA,eAC5C;AAAA,8BAEF,IAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,OAAA,EAAS,MAAA;AAAA,oBACT,GAAA,EAAK,CAAA;AAAA,oBACL,OAAA,EAAS,EAAA;AAAA,oBACT,MAAA,EAAQ;AAAA,mBACV;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAA,IAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,OAAA,EAAS,MAAA;AAAA,0BACT,cAAA,EAAgB,eAAA;AAAA,0BAChB,UAAA,EAAY;AAAA,yBACd;AAAA,wBAEA,QAAA,EAAA;AAAA,0CAAA,IAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,4BAAA,eAAA;AAAA,4BAAI,KAAA,GAAQ;AAAA,2BAAA,EAAE,CAAA;AAAA,0CACpB,GAAA;AAAA,4BAAC,WAAA;AAAA,4BAAA;AAAA,8BACC,IAAA,EAAK,MAAA;AAAA,8BACL,IAAA,EAAK,OAAA;AAAA,8BACL,QAAA,EAAU,WAAW,MAAA,KAAW,CAAA;AAAA,8BAChC,YAAA,EAAY,CAAA,yBAAA,EAAQ,KAAA,GAAQ,CAAC,CAAA,CAAA;AAAA,8BAC7B,OAAA,EAAS,MACP,KAAA,CAAM;AAAA,gCACJ,YAAY,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,KAAK;AAAA,+BACpD,CAAA;AAAA,8BAEJ,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA,qBACF;AAAA,oCACA,GAAA;AAAA,sBAAC,WAAA;AAAA,sBAAA;AAAA,wBACC,YAAA,EAAY,CAAA,aAAA,EAAM,KAAA,GAAQ,CAAC,CAAA,yBAAA,CAAA;AAAA,wBAC3B,OAAO,SAAA,CAAU,QAAA;AAAA,wBACjB,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,oBAAoB,CAAA,CAAE,GAAA;AAAA,0BAC5C,CAAC,CAAC,KAAA,EAAO,KAAK,CAAA,MAAO,EAAE,OAAO,KAAA,EAAM;AAAA,yBACtC;AAAA,wBACA,QAAA,EAAU,CAAC,KAAA,KACT,cAAA,CAAe,KAAA,EAAO;AAAA,0BACpB,QAAA,EAAU;AAAA,yBACX;AAAA;AAAA,qBAEL;AAAA,oBACC,UAAU,QAAA,KAAa,OAAA,IACtB,UAAU,QAAA,KAAa,UAAA,yBACpB,OAAA,EAAA,EAAM,QAAA,EAAA;AAAA,sBAAA,oBAAA;AAAA,sCAEL,GAAA;AAAA,wBAAC,UAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAO,MAAA,CAAO,SAAA,CAAU,KAAA,IAAS,EAAE,CAAA;AAAA,0BACnC,QAAA,EAAU,CAAC,KAAA,KACT,cAAA,CAAe,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,KAAA,EAAO;AAAA;AAAA;AAEvD,qBAAA,EACF,CAAA;AAAA,oBAEH,SAAA,CAAU,QAAA,KAAa,SAAA,oBACtB,IAAA,CAAC,OAAA,EAAA,EAAM,QAAA,EAAA;AAAA,sBAAA,oBAAA;AAAA,sCAEL,GAAA;AAAA,wBAAC,UAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAO,MAAA,CAAO,SAAA,CAAU,QAAA,IAAY,EAAE,CAAA;AAAA,0BACtC,QAAA,EAAU,CAAC,KAAA,KACT,cAAA,CAAe,KAAA,EAAO,EAAE,QAAA,EAAU,KAAA,CAAM,MAAA,CAAO,KAAA,EAAO;AAAA;AAAA;AAE1D,qBAAA,EACF;AAAA;AAAA;AAAA;AAEJ,aAAA,EAAA,EAhFa,KAiFf,CACD;AAAA;AAAA,SACH;AAAA,wBACA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MACP,KAAA,CAAM;AAAA,cACJ,UAAA,EAAY;AAAA,gBACV,GAAG,UAAA;AAAA,gBACH,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,EAAA,EAAI,UAAU,KAAA;AAAM;AAC/C,aACD,CAAA;AAAA,YAEJ,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBACA,IAAA,CAAC,WAAM,KAAA,EAAO,EAAE,SAAS,MAAA,EAAQ,GAAA,EAAK,GAAE,EAAG,QAAA,EAAA;AAAA,UAAA,gCAAA;AAAA,0BAEzC,GAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,gCAAA;AAAA,cACX,OAAO,IAAA,CAAK,eAAA;AAAA,cACZ,UAAU,CAAC,eAAA,KAAoB,KAAA,CAAM,EAAE,iBAAiB;AAAA;AAAA;AAC1D,SAAA,EACF,CAAA;AAAA,wBACA,IAAA,CAAC,WAAM,KAAA,EAAO,EAAE,SAAS,MAAA,EAAQ,GAAA,EAAK,GAAE,EAAG,QAAA,EAAA;AAAA,UAAA,0BAAA;AAAA,0BAEzC,GAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,0BAAA;AAAA,cACX,OAAO,IAAA,CAAK,SAAA;AAAA,cACZ,UAAU,CAAC,SAAA,KAAc,KAAA,CAAM,EAAE,WAAW;AAAA;AAAA;AAC9C,SAAA,EACF,CAAA;AAAA,wBACA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,UAAA;AAAA,cACT,iBAAiB,IAAA,CAAK,eAAA;AAAA,cACtB,OAAO,IAAA,CAAK,SAAA;AAAA,cACZ,MAAA,EAAQ;AAAA,aACV;AAAA,YACD,QAAA,EAAA;AAAA,cAAA,gCAAA;AAAA,cACO,wBAAwB,IAAI;AAAA;AAAA;AAAA,SACpC;AAAA,QACC,KAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,OAAA,EAAQ,OAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EACzC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,QAED,KAAA,CAAM,SAAS,IAAA,oBACd,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAM,IAAA;AAAA,YACN,OAAA,EAAS,MACP,KAAA,CAAM,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAG,KAAA,KAAU,KAAA,KAAU,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,YAE1D,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EAEJ;AAAA;AAAA,GACF;AAEJ;;;AC9SO,SAAS,oBACd,OAAA,EACiB;AACjB,EAAA,MAAM,SAAA,GAAY,QAAQ,4BAAA,KAAiC,IAAA;AAC3D,EAAA,MAAM,QAAyB,EAAC;AAChC,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,UAAU,CAAC,SAAA;AAAA,IACX,KAAA,EAAO,YAAY,MAAA,GAAY;AAAA,GACjC;AACA,EAAA,IAAI,OAAA,CAAQ,2BAAA;AACV,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,GAAG,KAAA;AAAA,MACH,GAAA,EAAK,eAAA;AAAA,MACL,KAAA,EAAO,oBAAA;AAAA,MACP,QAAA,EAAU,SAAA,IAAa,OAAA,CAAQ,mBAAA,KAAwB,IAAA;AAAA,MACvD,SAAS,MACP,OAAA,CAAQ,2BAAA,GAA8B,CAAC,QAAQ,mBAAmB;AAAA,KACrE,CAAA;AACH,EAAA,IAAI,QAAQ,uBAAA,EAAyB;AACnC,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,CAAC,QAAQ,cAAI,CAAA;AAAA,MACb,CAAC,UAAU,cAAI,CAAA;AAAA,MACf,CAAC,WAAW,cAAI,CAAA;AAAA,MAChB,CAAC,aAAa,cAAI,CAAA;AAAA,MAClB,CAAC,cAAc,cAAI,CAAA;AAAA,MACnB,CAAC,WAAW,0BAAM,CAAA;AAAA,MAClB,CAAC,QAAQ,cAAI,CAAA;AAAA,MACb,CAAC,aAAa,oBAAK;AAAA,KACrB;AACA,IAAA,KAAA,MAAW,CAAC,QAAA,EAAU,KAAK,CAAA,IAAK,UAAA;AAC9B,MAAA,KAAA,CAAM,IAAA,CAAK;AAAA,QACT,GAAG,KAAA;AAAA,QACH,GAAA,EAAK,SAAS,QAAQ,CAAA,CAAA;AAAA,QACtB,KAAA;AAAA,QACA,QAAA,EAAU,SAAA,IAAa,OAAA,CAAQ,gBAAA,GAAmB,QAAQ,CAAA,KAAM,KAAA;AAAA,QAChE,OAAA,EAAS,MACP,OAAA,CAAQ,uBAAA;AAAA,UACN,QAAA;AAAA,UACA,OAAA,CAAQ,gBAAA,GAAmB,QAAQ,CAAA,KAAM;AAAA;AAC3C,OACH,CAAA;AAAA,EACL;AACA,EAAA,IAAI,OAAA,CAAQ,0BAAA;AACV,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,GAAG,KAAA;AAAA,MACH,GAAA,EAAK,mBAAA;AAAA,MACL,KAAA,EAAO,4CAAA;AAAA,MACP,QAAA,EAAU,SAAA,IAAa,OAAA,CAAQ,uBAAA,KAA4B,KAAA;AAAA,MAC3D,OAAA,EAAS,MACP,OAAA,CAAQ,0BAAA;AAAA,QACN,OAAA,CAAQ,sBAAsB,EAAC;AAAA,QAC/B,QAAQ,uBAAA,KAA4B;AAAA;AACtC,KACH,CAAA;AACH,EAAA,OAAO,KAAA;AACT;;;ACpCO,IAAM,qBAAA,GAGR;AAAA,EACH,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC9B,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,gCAAA,EAAQ;AAAA,EACrC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,4CAAA,EAAU;AAAA,EAClC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC9B,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,gCAAA,EAAQ;AAAA,EACxC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC7B,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,gCAAA,EAAQ;AAAA,EACvC,EAAE,KAAA,EAAO,gBAAA,EAAkB,KAAA,EAAO,oBAAA,EAAM;AAAA,EACxC,EAAE,KAAA,EAAO,wBAAA,EAA0B,KAAA,EAAO,gCAAA,EAAQ;AAAA,EAClD,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,gCAAA,EAAQ;AAAA,EACjC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,cAAA,EAAK;AAAA,EAC5B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC/B,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC9B,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,0BAAA,EAAO;AAAA,EACrC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,oBAAA;AAC3B,CAAA;AAEA,IAAM,SAAS,CAAC,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,WAAW,SAAS,CAAA;AAG9D,SAAS,wBAAA,CACd,MACA,KAAA,EACA;AACA,EAAA,IAAI,IAAA,KAAS,OAAO,OAAO,IAAA;AAC3B,EAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,KAAA,EAAO,OAAO,KAAA;AAC5B,EAAA,IACE,KAAK,MAAA,CAAO,MAAA,KAAW,KAAA,CAAM,MAAA,CAAO,UACpC,IAAA,CAAK,IAAA,EAAM,MAAA,KAAW,KAAA,CAAM,MAAM,MAAA,IAClC,IAAA,CAAK,OAAO,MAAA,KAAW,KAAA,CAAM,OAAO,MAAA,EACpC;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,EAAO,KAAA,KAAU,KAAA,KAAU,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA,EAAG;AACrE,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,CAAC,GAAA,EAAK,KAAA,KAAU,GAAA,KAAQ,KAAA,CAAM,IAAA,GAAO,KAAK,CAAC,CAAA,EAAG;AAChE,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAK,MAAA,CAAO,KAAA;AAAA,IACjB,CAAC,QAAQ,KAAA,KACP,MAAA,CAAO,SAAS,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA,EAAG,IAAA,IACrC,OAAO,IAAA,CAAK,MAAA,KAAW,MAAM,MAAA,CAAO,KAAK,GAAG,IAAA,CAAK,MAAA,IACjD,OAAO,IAAA,CAAK,KAAA;AAAA,MACV,CAAC,OAAO,UAAA,KAAe,KAAA,KAAU,MAAM,MAAA,CAAO,KAAK,CAAA,EAAG,IAAA,CAAK,UAAU;AAAA;AACvE,GACJ;AACF;AAGO,SAAS,0BAAA,CACd,IAAA,EACA,SAAA,EACA,WAAA,GAAc,CAAA,EACQ;AACtB,EAAA,MAAM,YAAA,GACJ,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,aAAa,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,CAAC,CAAC,CAAA;AAC3D,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS,MAAA,EAAQ,YAAY,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA,EAAG;AAC9D,IAAA,MAAMC,OAAAA,GAA+B;AAAA,MACnC,KAAA,EAAO,MAAA;AAAA,MACP,MAAA,EAAQ,EAAE,IAAA,EAAM,IAAA,EAAM,QAAQ,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,QAAA,EAAS;AAAA,MACvE,OAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,MACtB,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,KAAA;AAAA,QACN,MAAM,YAAA,CAAa,IAAA;AAAA,QACnB,MAAM,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,MAAM,KAAA,MAAW;AAAA,UACtC,IAAA;AAAA,UACA,GAAA,EAAK,IAAA,CAAK,IAAA,GAAO,KAAK,CAAA;AAAA,UACtB,KAAA,EAAO,KAAK,GAAA,CAAI,YAAA,CAAa,KAAK,KAAK,CAAA,IAAK,GAAG,CAAC;AAAA,SAClD,CAAE,CAAA;AAAA,QACF,MAAA,EACE,cAAc,KAAA,IAAS,SAAA,KAAc,SAAS,KAAA,GAAQ,CAAC,OAAO,KAAK,CAAA;AAAA,QACrE,MAAA,EAAQ,CAAC,KAAA,EAAO,KAAK,CAAA;AAAA,QACrB,QAAA,EAAU,SAAA,KAAc,MAAA,GAAS,QAAA,GAAW,MAAA;AAAA,QAC5C,UAAA,EAAY,SAAA,KAAc,YAAA,GAAe,GAAA,GAAM,MAAA;AAAA,QAC/C,QAAA,EAAU,SAAA,KAAc,YAAA,GAAe,GAAA,GAAM,MAAA;AAAA,QAC7C,KAAA,EAAO,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,SAAA,EAAU;AAAA,QACzC,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK;AAC1B,KACF;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,MAAA,EAAAA,OAAAA,EAAO;AAAA,EAC/B;AACA,EAAA,IAAI,cAAc,OAAA,EAAS;AACzB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,GAAG,EAAE,CAAA;AACtC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,GAAG,CAAC,CAAA;AACrC,IAAA,MAAM,UAAU,IAAA,CAAK,GAAA;AAAA,MACnB,CAAA;AAAA,MACA,GAAG,MAAA,CAAO,OAAA,CAAQ,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,MAAA,CAAO,MAAM,CAAC;AAAA,KAC/D;AACA,IAAA,MAAMA,OAAAA,GAAiC;AAAA,MACrC,cAAc,IAAA,CAAK,IAAA,EAAM,KAAA,CAAM,CAAA,EAAG,OAAO,MAAM,CAAA;AAAA,MAC/C,KAAA,EAAO,MAAA;AAAA,MACP,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,UAC/B,IAAA;AAAA,UACA,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,GAAG;AAAA,SAC9B,CAAE,CAAA;AAAA,QACF,MAAA,EAAQ,KAAA;AAAA,QACR,MAAA,EAAQ,CAAC,KAAA,EAAO,KAAK,CAAA;AAAA,QACrB,WAAA,EAAa;AAAA,OACf;AAAA,MACA,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,CAAO,SAAS,CAAA,EAAE;AAAA,MAClC,OAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,MACtB,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,UAC1B,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,OAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,OAAO,MAAM,CAAA;AAAA,UACvC,SAAA,EAAW,EAAE,OAAA,EAAS,IAAA;AAAK,SAC7B,CAAE;AAAA;AACJ,KACF;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,MAAA,EAAAA,OAAAA,EAAO;AAAA,EACjC;AACA,EAAA,IAAI,cAAc,OAAA,EAAS;AACzB,IAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,CAAK,CAAC,CAAA,IAAK,CAAA;AACtC,IAAA,MAAMA,OAAAA,GAAiC;AAAA,MACrC,KAAA,EAAO,MAAA;AAAA,MACP,OAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,MACtB,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,OAAA;AAAA,QACN,MAAM,YAAA,CAAa,IAAA;AAAA,QACnB,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,IAAK,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,QAC3D,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAA;AAAA,QACtB,GAAA,EAAK,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,IAAA,CAAK,KAAA,GAAQ,GAAG,CAAC,CAAA;AAAA,QACzC,MAAA,EAAQ,KAAA;AAAA,QACR,QAAA,EAAU,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,QACvB,OAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,QACtB,MAAA,EAAQ,EAAE,IAAA,EAAM,IAAA;AAAK;AACvB,KACF;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,MAAA,EAAAA,OAAAA,EAAO;AAAA,EACjC;AAEA,EAAA,MAAM,UAAA,GAAa,SAAA,CAAU,QAAA,CAAS,YAAY,CAAA;AAClD,EAAA,MAAM,OAAA,GAAU,SAAA,CAAU,UAAA,CAAW,SAAS,CAAA;AAC9C,EAAA,MAAM,IAAA,GAAO,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA;AACtC,EAAA,MAAM,QAAA,GAAW,SAAA,KAAc,MAAA,GAAS,gBAAA,CAAiB,IAAI,CAAA,GAAI,IAAA;AACjE,EAAA,MAAM,MAAA,GAAqC;AAAA,IACzC,cAAc,IAAA,CAAK,IAAA;AAAA,IACnB,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,IAAA;AAAA,MACN,IAAA,EAAM,EAAA;AAAA,MACN,KAAA,EAAO,EAAA;AAAA,MACP,GAAA,EAAK,EAAA;AAAA,MACL,MAAA,EAAQ,EAAA;AAAA,MACR,YAAA,EAAc;AAAA,KAChB;AAAA,IACA,QAAQ,EAAE,IAAA,EAAM,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA,EAAE;AAAA,IACvC,KAAA,EAAO,UAAA,GACH,EAAE,IAAA,EAAM,MAAM,IAAA,EAAM,OAAA,EAAQ,GAC5B,EAAE,MAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,KAAK,MAAA,EAAO;AAAA,IACtD,KAAA,EAAO,UAAA,GACH,EAAE,IAAA,EAAM,IAAA,EAAM,MAAM,UAAA,EAAY,IAAA,EAAM,IAAA,CAAK,MAAA,EAAO,GAClD;AAAA,MACE,IAAA,EAAM,IAAA;AAAA,MACN,IAAA,EAAM,OAAA;AAAA,MACN,GAAA,EAAK,WAAW,CAAA,GAAI,MAAA;AAAA,MACpB,GAAA,EAAK,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,MAAA;AAAA,MACrC,OAAA,EAAS,QAAQ,QAAQ,CAAA;AAAA,MACzB,WAAA,EAAa,WACT,IAAA,CAAK,GAAA,CAAI,KAAK,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAC,CAAA,GAClC,MAAA;AAAA,MACJ,SAAA,EAAW,WACP,EAAE,SAAA,EAAW,CAAC,KAAA,KAA2B,CAAA,MAAA,EAAI,KAAK,CAAA,MAAA,CAAA,EAAI,GACtD,MAAA;AAAA,MACJ,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA;AAAK,KAC1B;AAAA,IACJ,OAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAM,SAAS,MAAA,EAAO;AAAA,IACvC,QAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,QAAQ,KAAA,KAAU;AACzC,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,GAAQ,MAAA,CAAO,MAAM,CAAA;AAC1C,MAAA,MAAM,KAAA,GACJ,cAAc,OAAA,GAAU,KAAA,GAAQ,MAAM,CAAA,GAAI,SAAA,CAAU,SAAS,KAAK,CAAA;AACpE,MAAA,OAAO,KAAA,GACH;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,KAAA,EAAO,UAAU,OAAA,GAAU,MAAA;AAAA,QAC3B,SAAA,EAAW,EAAE,KAAA;AAAM,OACrB,GACA;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,IAAA,EAAM,QAAA,GAAW,KAAK,CAAA,IAAK,MAAA,CAAO,IAAA;AAAA,QAClC,KAAA,EAAO,UAAU,OAAA,GAAU,MAAA;AAAA,QAC3B,SAAA,EAAW,EAAE,KAAA,EAAO,KAAA,EAAO,CAAA,EAAE;AAAA,QAC7B,IAAA,EAAM,SAAA,KAAc,WAAA,GAAc,KAAA,GAAQ,MAAA;AAAA,QAC1C,YAAY,SAAA,KAAc,MAAA;AAAA,QAC1B,UAAA,EAAY,SAAA,KAAc,MAAA,GAAS,CAAA,GAAI,MAAA;AAAA,QACvC,SAAA,EAAW,OACP,EAAE,KAAA,EAAO,SAAS,OAAA,GAAU,IAAA,GAAO,MAAK,GACxC;AAAA,OACN;AAAA,IACN,CAAC;AAAA,GACH;AACA,EAAA,OAAO,EAAE,IAAA,EAAM,WAAA,EAAa,MAAA,EAAO;AACrC;AAGA,SAAS,iBAAiB,IAAA,EAA0B;AAClD,EAAA,MAAM,QAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,MAAM,EAAc,CAAA;AAClD,EAAA,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG,SAAA,KAAc;AACpC,IAAA,MAAM,QAAQ,IAAA,CAAK,MAAA,CAChB,GAAA,CAAI,CAAC,QAAQ,WAAA,MAAiB;AAAA,MAC7B,WAAA;AAAA,MACA,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,SAAS,KAAK,MAAA,CAAO;AAAA,MACxC,CAAA,CACD,IAAA;AAAA,MACC,CAAC,MAAM,KAAA,KACL,KAAA,CAAM,QAAQ,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,WAAA,GAAc,KAAA,CAAM;AAAA,KACzD;AACF,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,EAAE,WAAA,IAAe,SAAA,KAAc;AAC5C,MAAA,KAAA,CAAM,WAAW,CAAA,CAAG,SAAS,CAAA,GAAI,SAAA,GAAY,CAAA;AAAA,IAC/C,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AACD,EAAA,OAAO,KAAA;AACT;AClPO,SAAS,YAAY,KAAA,EAIzB;AACD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,QAAAA,CAAS,MAAM,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAA6B,MAAM,CAAA;AACrE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,CAAC,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAS,KAAK,CAAA;AACxC,EAAA,MAAM,YAAA,GAAe,OAA8B,IAAI,CAAA;AACvD,EAAA,MAAM,QAAA,GAAW,OAA2B,IAAI,CAAA;AAChD,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM;AAChC,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,IAAA,OAAO,0BAAA,CAA2B,IAAA,EAAM,SAAA,EAAW,WAAW,CAAA;AAAA,EAChE,CAAA,EAAG,CAAC,SAAA,EAAW,IAAA,EAAM,WAAW,CAAC,CAAA;AAEjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAM,OAAA,EAAS;AACpB,IAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,WAAA,CAAY,MAAM;AACzC,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,OAAA,IAAU,IAAK,IAAA;AAClC,MAAA,OAAA;AAAA,QAAQ,CAAC,OAAA,KACP,wBAAA,CAAyB,OAAA,EAAS,IAAI,IAAI,OAAA,GAAU;AAAA,OACtD;AAAA,IACF,GAAG,GAAG,CAAA;AACN,IAAA,OAAO,MAAM,UAAA,CAAW,aAAA,CAAc,KAAK,CAAA;AAAA,EAC7C,CAAA,EAAG,CAAC,KAAA,CAAM,OAAO,CAAC,CAAA;AAElB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,IAAQ,QAAA,CAAS,OAAA,EAAS;AAC7B,MAAA,QAAA,CAAS,QAAQ,OAAA,EAAQ;AACzB,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,WAAA,IAAe,CAAC,aAAa,OAAA,EAAS;AACrD,IAAA,IAAI,QAAQ,QAAA,CAAS,OAAA;AACrB,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,KAAA,GAAQ,IAAI,WAAA,CAAY,YAAA,CAAa,OAAA,EAAS;AAAA,QAC5C,MAAM,WAAA,CAAY,IAAA;AAAA,QAClB,QAAQ,WAAA,CAAY,MAAA;AAAA,QACpB,SAAA,EAAW,EAAE,QAAA,EAAU,GAAA,EAAK,QAAQ,QAAA;AAAS,OAC9C,CAAA;AACD,MAAA,KAAA,CAAM,KAAA,EAAM;AACZ,MAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AAAA,IACrB,CAAA,MAAO;AACL,MAAA,KAAA,CAAM,aAAA,CAAc;AAAA,QAClB,MAAM,WAAA,CAAY,IAAA;AAAA,QAClB,QAAQ,WAAA,CAAY,MAAA;AAAA,QACpB,SAAA,EAAW,EAAE,QAAA,EAAU,GAAA,EAAK,QAAQ,QAAA;AAAS,OAC9C,CAAA;AAAA,IACH;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,KAAK,CAAC,CAAA;AAEvB,EAAA,SAAA;AAAA,IACE,MAAM,MAAM;AACV,MAAA,QAAA,CAAS,SAAS,OAAA,EAAQ;AAC1B,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,IACrB,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,uBACEC,GAAAA;AAAA,IAACC,UAAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAM,0BAAA;AAAA,MACN,KAAA,EAAO,GAAA;AAAA,MACP,QAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAS,IAAA;AAAA,MACT,IAAA,EAAM,KAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,UAAU,KAAA,CAAM,OAAA;AAAA,MAChB,eAAA,EAAiB,QAAA;AAAA,MACjB,SAAA,EAAW,EAAE,OAAA,EAAS,gBAAA,EAAkB,SAAS,MAAA,EAAO;AAAA,MAEvD,iCACCC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,aAAA,EAAe,QAAA;AAAA,YACf,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,CAAA;AAAA,YACX,GAAA,EAAK;AAAA,WACP;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAA,IAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,OAAA,EAAS,MAAA;AAAA,kBACT,UAAA,EAAY,QAAA;AAAA,kBACZ,GAAA,EAAK,EAAA;AAAA,kBACL,UAAA,EAAY;AAAA,iBACd;AAAA,gBACD,QAAA,EAAA;AAAA,kBAAA,0BAAA;AAAA,kCAECF,GAAAA;AAAA,oBAACG,WAAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO,SAAA;AAAA,sBACP,UAAA,EAAY,KAAA;AAAA,sBACZ,OAAA,EAAS,qBAAA;AAAA,sBACT,QAAA,EAAU,CAAC,KAAA,KAAU,YAAA,CAAa,KAA2B,CAAA;AAAA,sBAC7D,KAAA,EAAO,EAAE,KAAA,EAAO,GAAA;AAAI;AAAA;AACtB;AAAA;AAAA,aACF;AAAA,YACC,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,CAAA,IAEpB;AAAA,cACE,KAAA;AAAA,cACA,OAAA;AAAA,cACA,MAAA;AAAA,cACA,YAAA;AAAA,cACA;AAAA,aACF,CACA,QAAA,CAAS,SAAS,CAAA,mBAClBD,IAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,OAAA,EAAS,MAAA;AAAA,kBACT,UAAA,EAAY,QAAA;AAAA,kBACZ,GAAA,EAAK,EAAA;AAAA,kBACL,UAAA,EAAY;AAAA,iBACd;AAAA,gBACD,QAAA,EAAA;AAAA,kBAAA,0BAAA;AAAA,kCAECF,GAAAA;AAAA,oBAACG,WAAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO,WAAA;AAAA,sBACP,UAAA,EAAY,KAAA;AAAA,sBACZ,SAAS,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,QAAQ,KAAA,MAAW;AAAA,wBAC3C,KAAA,EAAO,KAAA;AAAA,wBACP,OAAO,MAAA,CAAO;AAAA,uBAChB,CAAE,CAAA;AAAA,sBACF,UAAU,CAAC,KAAA,KAAU,cAAA,CAAe,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,sBACjD,KAAA,EAAO,EAAE,KAAA,EAAO,GAAA;AAAI;AAAA;AACtB;AAAA;AAAA,aACF,GACE,IAAA;AAAA,4BACJH,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,YAAA;AAAA,gBACL,KAAA,EAAO;AAAA,kBACL,KAAA,EAAO,MAAA;AAAA,kBACP,MAAA,EAAQ,GAAA;AAAA,kBACR,IAAA,EAAM,WAAA;AAAA,kBACN,SAAA,EAAW;AAAA;AACb;AAAA;AACF;AAAA;AAAA,OACF,mBAEAA,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,OAAA,EAAS,QAAA,EAAS,EAAG,QAAA,EAAA,4FAAA,EAAe;AAAA;AAAA,GAEtD;AAEJ;;;AC3JO,IAAM,qBAAA,GAKR;AAAA,EACH;AAAA,IACE,GAAA,EAAK,qBAAA;AAAA,IACL,KAAA,EAAO,cAAA;AAAA,IACP,IAAA,EAAM,aAAA;AAAA,IACN,SAAA,EAAW;AAAA,GACb;AAAA,EACA,EAAE,KAAK,gBAAA,EAAkB,KAAA,EAAO,gBAAM,IAAA,EAAM,QAAA,EAAU,WAAW,EAAA,EAAG;AAAA,EACpE,EAAE,KAAK,iBAAA,EAAmB,KAAA,EAAO,gBAAM,IAAA,EAAM,SAAA,EAAW,WAAW,EAAA,EAAG;AAAA,EACtE;AAAA,IACE,GAAA,EAAK,uBAAA;AAAA,IACL,KAAA,EAAO,oBAAA;AAAA,IACP,IAAA,EAAM,eAAA;AAAA,IACN,SAAA,EAAW;AAAA,GACb;AAAA,EACA,EAAE,KAAK,cAAA,EAAgB,KAAA,EAAO,sBAAO,IAAA,EAAM,MAAA,EAAQ,WAAW,MAAA;AAChE,CAAA;ACoBA,IAAM,0BAAA,GAA4C;AAAA,EAChD,OAAA,EAAS,CAAA;AAAA,EACT,UAAA,EAAY,SAAA;AAAA,EACZ,SAAA,EAAW,mCAAA;AAAA,EACX,QAAA,EAAU;AACZ,CAAA;AAEA,SAAS,kBAAkB,KAAA,EAGxB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,cAAA,EAAe,GAAI,KAAA;AACpC,EAAA,uBACEA,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,gCAAA;AAAA,MACN,KAAA,EACE;AAAA,QACE,CAAC,aAAa,oBAAK,CAAA;AAAA,QACnB,CAAC,UAAU,cAAI;AAAA,QAEjB,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,KAAK,CAAA,MAAO;AAAA,QACxB,GAAA,EAAK,kBAAkB,IAAI,CAAA,CAAA;AAAA,QAC3B,KAAA;AAAA,QACA,QAAA,EAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,IAAA,IAAQ,WAAA,MAAiB,IAAA;AAAA,QACvD,SAAS,MAAM;AACb,UAAA,OAAA,CAAQ,iBAAA,GAAoB;AAAA,YAC1B,GAAG,OAAA,CAAQ,SAAA;AAAA,YACX,IAAA;AAAA,YACA,UAAA,EACE,OAAA,CAAQ,SAAA,EAAW,UAAA,KAAe,KAAA,GAC9B,KAAA,GACA,EAAE,GAAG,OAAA,CAAQ,SAAA,EAAW,UAAA,EAAY,IAAA,EAAK;AAAA,YAC/C,QAAA,EACE,OAAA,CAAQ,SAAA,EAAW,QAAA,KAAa,KAAA,GAC5B,KAAA,GACA,EAAE,GAAG,OAAA,CAAQ,SAAA,EAAW,QAAA,EAAU,IAAA;AAAK,WAC9C,CAAA;AACD,UAAA,OAAA,CAAQ,OAAA,EAAQ;AAAA,QAClB;AAAA,OACF,CAAE,CAAA;AAAA,MACF,MAAA,kBACEA,GAAAA,CAACI,WAAAA,EAAA,EAAY,OAAA,EAAS,cAAA,EAAgB,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO,EAAG,QAAA,EAAA,4CAAA,EAEhE;AAAA;AAAA,GAEJ;AAEJ;AAEA,SAAS,UAAU,KAAA,EAA6C;AAC9D,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,uBACEJ,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,cAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL;AAAA,UACE,GAAA,EAAK,cAAA;AAAA,UACL,KAAA,EAAO,0BAAA;AAAA,UACP,SAAS,OAAA,CAAQ;AAAA,SACnB;AAAA,QACA,EAAE,GAAA,EAAK,YAAA,EAAc,OAAO,0BAAA,EAAQ,OAAA,EAAS,QAAQ,WAAA,EAAY;AAAA,QACjE;AAAA,UACE,GAAA,EAAK,cAAA;AAAA,UACL,KAAA,EAAO,sCAAA;AAAA,UACP,SAAS,OAAA,CAAQ;AAAA,SACnB;AAAA,QACA;AAAA,UACE,GAAA,EAAK,gBAAA;AAAA,UACL,KAAA,EAAO,0BAAA;AAAA,UACP,SAAS,OAAA,CAAQ;AAAA,SACnB;AAAA,QACA;AAAA,UACE,GAAA,EAAK,eAAA;AAAA,UACL,KAAA,EAAO,0BAAA;AAAA,UACP,SAAS,OAAA,CAAQ;AAAA,SACnB;AAAA,QACA;AAAA,UACE,GAAA,EAAK,iBAAA;AAAA,UACL,KAAA,EAAO,0BAAA;AAAA,UACP,SAAS,OAAA,CAAQ;AAAA,SACnB;AAAA,QACA;AAAA,UACE,GAAA,EAAK,mBAAA;AAAA,UACL,KAAA,EAAO,0BAAA;AAAA,UACP,SAAS,OAAA,CAAQ;AAAA,SACnB;AAAA,QACA;AAAA,UACE,GAAA,EAAK,iBAAA;AAAA,UACL,KAAA,EAAO,sCAAA;AAAA,UACP,SAAS,MAAM;AACb,YAAA,OAAA,CAAQ,gBAAA,IAAmB;AAC3B,YAAA,OAAA,CAAQ,OAAA,EAAQ;AAAA,UAClB;AAAA;AACF;AACF;AAAA,GACF;AAEJ;AAEO,SAAS,0BAA0B,KAAA,EAEvC;AACD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GACpCD,SAAyC,IAAI,CAAA;AAC/C,EAAA,MAAM,QAAA,GAAW,OAAA,KAAY,IAAA,IAAQ,aAAA,KAAkB,OAAA;AACvD,EAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAAkB;AACrC,IAAA,gBAAA,CAAiB,IAAA,GAAO,OAAO,OAAO,CAAA;AAAA,EACxC,CAAA;AACA,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,SAGxC,IAAI,CAAA;AACd,EAAA,MAAM,iBAAA,GAAoB,oCACxBC,GAAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACE,GAAG,iBAAA;AAAA,MACJ,SAAS,MAAM;AACb,QAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,QAAA,iBAAA,CAAkB,QAAQ,OAAA,EAAQ;AAAA,MACpC;AAAA;AAAA,GACF,GACE,IAAA;AACJ,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAC5CD,SAAyC,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,wBAAA,EAA0B,2BAA2B,CAAA,GAC1DA,SAAyC,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,wBAAA,EAA0B,2BAA2B,CAAA,GAC1DA,SAAyC,IAAI,CAAA;AAC/C,EAAA,MAAM,eAAA,GAAkB,2CACtBC,GAAAA;AAAA,IAAC,4BAAA;AAAA,IAAA;AAAA,MACC,OAAO,wBAAA,CAAyB,SAAA;AAAA,MAChC,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,wBAAA,CAAyB,iBAAA,GAAoB;AAAA,UAC3C,GAAG,wBAAA,CAAyB,SAAA;AAAA,UAC5B,GAAG;AAAA,SACJ,CAAA;AACD,QAAA,2BAAA,CAA4B,IAAI,CAAA;AAAA,MAClC,CAAA;AAAA,MACA,OAAA,EAAS,MAAM,2BAAA,CAA4B,IAAI;AAAA;AAAA,GACjD,GACE,IAAA;AACJ,EAAA,MAAM,uBAAA,GAA0B,2CAC9BA,GAAAA;AAAA,IAAC,4BAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,yBAAyB,iBAAA,IAAqB,CAAA;AAAA,MACxD,WAAA,EAAa,yBAAyB,oBAAA,IAAwB,CAAA;AAAA,MAC9D,WAAW,CAAC,GAAA,EAAK,WACf,wBAAA,CAAyB,kBAAA,GAAqB,KAAK,MAAM,CAAA;AAAA,MAE3D,OAAA,EAAS,MAAM,2BAAA,CAA4B,IAAI;AAAA;AAAA,GACjD,GACE,IAAA;AACJ,EAAA,MAAM,CAAC,sBAAA,EAAwB,yBAAyB,CAAA,GACtDD,SAAyC,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAG9B,IAAI,CAAA;AACd,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAI9B,IAAI,CAAA;AACd,EAAA,MAAM,gCACJC,GAAAA,CAAAH,QAAAA,EAAA,EACG,yCACCG,GAAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MAEC,SAAS,YAAA,CAAa,OAAA;AAAA,MACtB,MAAM,YAAA,CAAa,IAAA;AAAA,MACnB,YAAY,YAAA,CAAa,UAAA;AAAA,MACzB,SAAS,MAAM;AACb,QAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,QAAA,YAAA,CAAa,QAAQ,OAAA,EAAQ;AAAA,MAC/B;AAAA,KAAA;AAAA,IAPK,YAAA,CAAa,MAAM,GAAA,IAAO;AAAA,MAS/B,IAAA,EACN,CAAA;AAGF,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,uBACEE,IAAAA,CAAAL,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,eAAA;AAAA,MACA,uBAAA;AAAA,MACA,iBAAA;AAAA,MACA,aAAA;AAAA,MACA,oCACCG,GAAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,iBAAA;AAAA,UACT,OAAA,EAAS,MAAM,oBAAA,CAAqB,IAAI;AAAA;AAAA,OAC1C,GACE,IAAA;AAAA,MACH,yCACCA,GAAAA;AAAA,QAAC,qBAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,sBAAA;AAAA,UACT,SAAS,MAAM;AACb,YAAA,yBAAA,CAA0B,IAAI,CAAA;AAC9B,YAAA,sBAAA,CAAuB,OAAA,EAAQ;AAAA,UACjC;AAAA;AAAA,OACF,GACE,IAAA;AAAA,MACH,+BACCA,GAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,MAAM,YAAA,CAAa,IAAA;AAAA,UACnB,OAAA,EAAS,aAAa,OAAA,CAAQ,aAAA;AAAA,UAC9B,SAAS,MAAM;AACb,YAAA,YAAA,CAAa,QAAQ,OAAA,EAAQ;AAC7B,YAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,UACtB;AAAA;AAAA,OACF,GACE;AAAA,KAAA,EACN,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,wBAAwB,MAAM;AAClC,IAAA,2BAAA,CAA4B,OAAO,CAAA;AACnC,IAAA,OAAA,CAAQ,OAAA,EAAQ;AAAA,EAClB,CAAA;AAEA,EAAA,IAAI,QAAQ,aAAA,EAAe;AACzB,IAAA,uBACEE,IAAAA,CAAAL,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,eAAA;AAAA,MACA,uBAAA;AAAA,sBACDK,IAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,eAAA,EAAe,IAAA;AAAA,UACf,IAAA,EAAM,QAAA;AAAA,UACN,UAAA,EAAY,EAAE,CAAA,EAAG,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,OAAA,CAAQ,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAE;AAAA,UAC9D,QAAA,EAAU,GAAA;AAAA,UACV,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,YAAA,WAAA,CAAY,IAAI,CAAA;AAChB,YAAA,IAAI,CAAC,IAAA,EAAM,OAAA,CAAQ,OAAA,EAAQ;AAAA,UAC7B,CAAA;AAAA,UACA,YAAA,EAAc,EAAE,GAAG,0BAAA,EAA4B,OAAO,GAAA,EAAI;AAAA,UAE1D,QAAA,EAAA;AAAA,4BAAAF,GAAAA;AAAA,cAAC,iBAAA;AAAA,cAAA;AAAA,gBACC,OAAA;AAAA,gBACA,cAAA,EAAgB;AAAA;AAAA,aAClB;AAAA,4BACAA,GAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,+CAAA;AAAA,gBACN,SAAS,MAAM;AACb,kBAAA,2BAAA,CAA4B,OAAO,CAAA;AACnC,kBAAA,OAAA,CAAQ,OAAA,EAAQ;AAAA,gBAClB;AAAA;AAAA,aACF;AAAA,4BACAA,GAAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAkB,CAAA;AAAA,YAC5B,mBAAA,CAAoB,OAAO,CAAA,CAAE,MAAA,GAAS,oBACrCA,GAAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,gCAAA;AAAA,gBACN,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,aACpC,GACE;AAAA;AAAA;AAAA;AACN,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,YAAA,GAA8B;AAAA,IAClC,GAAG,0BAAA;AAAA,IACH,KAAA,EAAO;AAAA,GACT;AAEA,EAAA,uBACEE,IAAAA,CAAAL,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,eAAA;AAAA,IACA,uBAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;AAAA,oBACDG,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,eAAA,EAAe,IAAA;AAAA,QACf,IAAA,EAAM,QAAA;AAAA,QACN,UAAA,EAAY,EAAE,CAAA,EAAG,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,OAAA,CAAQ,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAE;AAAA,QAC9D,QAAA,EAAU,GAAA;AAAA,QACV,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,UAAA,WAAA,CAAY,IAAI,CAAA;AAChB,UAAA,IACE,CAAC,IAAA,IACD,CAAC,iBAAA,IACD,CAAC,sBAAA,IACD,CAAC,YAAA,IACD,CAAC,iBAAA,IACD,CAAC,YAAA,EACD;AACA,YAAA,OAAA,CAAQ,OAAA,EAAQ;AAAA,UAClB;AAAA,QACF,CAAA;AAAA,QACA,YAAA;AAAA,QAEA,QAAA,kBAAAE,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAF,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,cAAA;AAAA,cACN,KAAA,EAAO;AAAA,gBACL;AAAA,kBACE,GAAA,EAAK,WAAA;AAAA,kBACL,KAAA,EAAO,gCAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,aAAA;AAAA,kBACL,KAAA,EAAO,0BAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,eAAA;AAAA,kBACL,KAAA,EAAO,4CAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,eAAA;AAAA,kBACL,KAAA,EAAO,qCAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,gBAAA;AAAA,kBACL,KAAA,EAAO,0BAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA,GAAI,QAAQ,WAAA,GACR;AAAA,kBACE;AAAA,oBACE,GAAA,EAAK,gBAAA;AAAA,oBACL,KAAA,EAAO,8DAAA;AAAA,oBACP,eAAA,EAAiB,IAAA;AAAA,oBACjB,KAAA,EACE,sLAAA;AAAA,oBACF,OAAA,EAAS,MAAM,OAAA,CAAQ,WAAA,GAAc,KAAK;AAAA,mBAC5C;AAAA,kBACA;AAAA,oBACE,GAAA,EAAK,sBAAA;AAAA,oBACL,KAAA,EAAO,8DAAA;AAAA,oBACP,QAAA,EAAU,CAAC,OAAA,CAAQ,qBAAA;AAAA,oBACnB,OAAA,EAAS,MAAM,OAAA,CAAQ,WAAA,GAAc,WAAW;AAAA,mBAClD;AAAA,kBACA;AAAA,oBACE,GAAA,EAAK,qBAAA;AAAA,oBACL,KAAA,EAAO,8DAAA;AAAA,oBACP,KAAA,EACE,wJAAA;AAAA,oBACF,OAAA,EAAS,MAAM,OAAA,CAAQ,WAAA,GAAc,UAAU;AAAA;AACjD,oBAEF;AAAC,eACP;AAAA,cAEA,QAAA,kBAAAA,GAAAA;AAAA,gBAAC,mBAAA;AAAA,gBAAA;AAAA,kBACC,OAAA;AAAA,kBACA,QAAQ,MAAM;AACZ,oBAAA,yBAAA,CAA0B,OAAO,CAAA;AACjC,oBAAA,WAAA,CAAY,KAAK,CAAA;AAAA,kBACnB;AAAA;AAAA;AACF;AAAA,WACF;AAAA,0BACAA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAM,cAAA,EAAK,OAAA,EAAS,QAAQ,YAAA,EAAc,CAAA;AAAA,0BACtDA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,0BAAA;AAAA,cACN,OAAA,EACE,OAAA,CAAQ,aAAA,GACJ,MAAM;AACJ,gBAAA,eAAA,CAAgB;AAAA,kBACd,OAAA;AAAA,kBACA,IAAA,EAAM,OAAA,CAAQ,aAAA,IAAgB,IAAK;AAAA,iBACpC,CAAA;AACD,gBAAA,WAAA,CAAY,KAAK,CAAA;AAAA,cACnB,CAAA,GACA;AAAA;AAAA,WAER;AAAA,0BACAA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,cAAA;AAAA,cACN,KAAA,EAAO;AAAA,gBACL;AAAA,kBACE,GAAA,EAAK,YAAA;AAAA,kBACL,KAAA,EAAO,kBAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,YAAA;AAAA,kBACL,KAAA,EAAO,kBAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,aAAA;AAAA,kBACL,KAAA,EAAO,mBAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,aAAA;AAAA,kBACL,KAAA,EAAO,mBAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA,GAAI,QAAQ,aAAA,GACR;AAAA,kBACE;AAAA,oBACE,GAAA,EAAK,kBAAA;AAAA,oBACL,KAAA,EAAO,wDAAA;AAAA,oBACP,eAAA,EAAiB,IAAA;AAAA,oBACjB,OAAA,EAAS,MAAM,OAAA,CAAQ,aAAA,GAAgB,KAAK;AAAA,mBAC9C;AAAA,kBACA;AAAA,oBACE,GAAA,EAAK,wBAAA;AAAA,oBACL,KAAA,EAAO,wDAAA;AAAA,oBACP,QAAA,EAAU,CAAC,OAAA,CAAQ,qBAAA;AAAA,oBACnB,OAAA,EAAS,MAAM,OAAA,CAAQ,aAAA,GAAgB,WAAW;AAAA,mBACpD;AAAA,kBACA;AAAA,oBACE,GAAA,EAAK,uBAAA;AAAA,oBACL,KAAA,EAAO,wDAAA;AAAA,oBACP,OAAA,EAAS,MAAM,OAAA,CAAQ,aAAA,GAAgB,UAAU;AAAA;AACnD,oBAEF;AAAC;AACP;AAAA,WACF;AAAA,0BACAA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,QAAQ,oBAAA,IAAwB,EAAA;AAAA,cACvC,SAAS,OAAA,CAAQ;AAAA;AAAA,WACnB;AAAA,0BACAA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,QAAQ,oBAAA,IAAwB,EAAA;AAAA,cACvC,SAAS,OAAA,CAAQ;AAAA;AAAA,WACnB;AAAA,0BACAA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,4CAAA;AAAA,cACN,SAAS,OAAA,CAAQ;AAAA;AAAA,WACnB;AAAA,0BACAA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,QAAQ,iBAAA,IAAqB,EAAA;AAAA,cACpC,SAAS,OAAA,CAAQ;AAAA;AAAA,WACnB;AAAA,0BACAA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,sCAAA;AAAA,cACN,KAAA,EAAO;AAAA,gBACL;AAAA,kBACE,GAAA,EAAK,kBAAA;AAAA,kBACL,KAAA,EAAO,oBAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,cAAA;AAAA,kBACL,KAAA,EAAO,oBAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,yBAAA;AAAA,kBACL,KAAA,EAAO,sCAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA;AACnB;AACF;AAAA,WACF;AAAA,0BACAA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,OAAA,CAAQ,kBAAA,GAAqB,gCAAA,GAAU,gCAAA;AAAA,cAC9C,SAAS,OAAA,CAAQ;AAAA;AAAA,WACnB;AAAA,0BACAA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,4CAAA;AAAA,cACN,SAAS,OAAA,CAAQ;AAAA;AAAA,WACnB;AAAA,0BACAA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,OAAA,CAAQ,cAAA,GAAiB,gCAAA,GAAU,gCAAA;AAAA,cAC1C,SAAS,OAAA,CAAQ;AAAA;AAAA,WACnB;AAAA,0BACAA,GAAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,CAAA;AAAA,0BAC/BA,GAAAA,CAAC,aAAA,EAAA,EAAc,OAAA,EAAkB,CAAA;AAAA,UAChC,OAAA,CAAQ,8CACPA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,0BAAA;AAAA,cACN,KAAA,EAAO;AAAA,gBACL;AAAA,kBACE,GAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAO,0BAAA;AAAA,kBACP,SAAS,MAAM;AACb,oBAAA,oBAAA,CAAqB,EAAE,OAAA,EAAS,KAAA,EAAO,IAAA,EAAM,CAAA;AAC7C,oBAAA,WAAA,CAAY,KAAK,CAAA;AAAA,kBACnB;AAAA,iBACF;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,aAAA;AAAA,kBACL,KAAA,EAAO,sCAAA;AAAA,kBACP,QAAA,EAAU,CAAC,OAAA,CAAQ,kBAAA,EAAoB,MAAA;AAAA,kBACvC,OAAA,EAAS,MAAM,OAAA,CAAQ,0BAAA,GAA6B,EAAE;AAAA;AACxD,eACF;AAAA,cACA,MAAA,kBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,CAAA,EAAG,aAAA,EAAe,GAAE,EACrD,QAAA,EAAA,OAAA,CAAQ,oBAAoB,MAAA,GAC3B,OAAA,CAAQ,mBAAmB,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACpCA,GAAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBAEC,OAAO,IAAA,CAAK,IAAA,EAAM,MAAK,IAAK,CAAA,aAAA,EAAM,QAAQ,CAAC,CAAA,CAAA;AAAA,kBAC3C,aAAa,IAAA,CAAK,eAAA;AAAA,kBAClB,KAAA,EAAO,CAAA,EAAG,IAAA,CAAK,IAAA,EAAM,IAAA,EAAK,IAAK,CAAA,aAAA,EAAM,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAA,MAAA,EAAI,uBAAA,CAAwB,IAAI,CAAC,CAAA,CAAA;AAAA,kBACjF,SAAS,MAAM;AACb,oBAAA,oBAAA,CAAqB,EAAE,OAAA,EAAS,KAAA,EAAO,CAAA;AACvC,oBAAA,WAAA,CAAY,KAAK,CAAA;AAAA,kBACnB;AAAA,iBAAA;AAAA,gBAPK,IAAA,CAAK;AAAA,eASb,CAAA,mBAEDA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,OAAA,EAAS,CAAA,EAAE,EAAG,sCAE/C,CAAA,EAEJ;AAAA;AAAA,WAEJ;AAAA,0BAEFA,GAAAA;AAAA,YAAC,cAAA;AAAA,YAAA;AAAA,cACC,OAAA;AAAA,cACA,kBAAkB,MAAM;AACtB,gBAAA,oBAAA,CAAqB,OAAO,CAAA;AAC5B,gBAAA,WAAA,CAAY,KAAK,CAAA;AAAA,cACnB;AAAA;AAAA,WACF;AAAA,0BACAA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,cAAA;AAAA,cACN,KAAA,EAAO;AAAA,gBACL;AAAA,kBACE,GAAA,EAAK,YAAA;AAAA,kBACL,KAAA,EAAO,gCAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,eAAA;AAAA,kBACL,KAAA,EAAO,gCAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAO,0BAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA;AACnB;AACF;AAAA,WACF;AAAA,0BACAA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,cAAA;AAAA,cACN,KAAA,EAAO;AAAA,gBACL;AAAA,kBACE,GAAA,EAAK,aAAA;AAAA,kBACL,KAAA,EAAO,cAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,cAAA;AAAA,kBACL,KAAA,EAAO,cAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,YAAA;AAAA,kBACL,KAAA,EAAO,0BAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA;AACnB;AACF;AAAA,WACF;AAAA,0BACAA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,cAAA;AAAA,cACN,KAAA,EAAO;AAAA,gBACL;AAAA,kBACE,GAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAO,cAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,WAAA;AAAA,kBACL,KAAA,EAAO,cAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA,iBACnB;AAAA,gBACA;AAAA,kBACE,GAAA,EAAK,OAAA;AAAA,kBACL,KAAA,EAAO,0BAAA;AAAA,kBACP,SAAS,OAAA,CAAQ;AAAA;AACnB;AACF;AAAA,WACF;AAAA,0BACAA,GAAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAkB,CAAA;AAAA,0BAC7BA,GAAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cACC,OAAA;AAAA,cACA,cAAA,EAAgB;AAAA;AAAA,WAClB;AAAA,0BACAA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,+CAAA;AAAA,cACN,SAAS,MAAM;AACb,gBAAA,2BAAA,CAA4B,OAAO,CAAA;AACnC,gBAAA,OAAA,CAAQ,OAAA,EAAQ;AAAA,cAClB;AAAA;AAAA,WACF;AAAA,0BACAA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,QAAQ,OAAA,IAAW,QAAA;AAAA,cAC1B,UAAU,OAAA,CAAQ;AAAA;AAAA,WACpB;AAAA,0BACAA,IAAC,QAAA,EAAA,EAAS,KAAA,EAAO,QAAQ,IAAA,IAAQ,CAAA,EAAG,QAAA,EAAU,OAAA,CAAQ,YAAA,EAAc,CAAA;AAAA,0BACpEA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,gCAAA;AAAA,cACN,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,WACpC;AAAA,UACC,QAAQ,OAAA,IAAW,OAAA,CAAQ,iCAC1BE,IAAAA,CAAAL,UAAA,EACE,QAAA,EAAA;AAAA,4BAAAG,IAAC,WAAA,EAAA,EAAY,CAAA;AAAA,4BACbA,GAAAA;AAAA,cAAC,oBAAA;AAAA,cAAA;AAAA,gBACC,SAAS,OAAA,CAAQ,OAAA;AAAA,gBACjB,UAAU,OAAA,CAAQ,cAAA;AAAA,gBAClB,OAAO,MAAM;AACX,kBAAA,eAAA,CAAgB,EAAE,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,MAAM,CAAA;AACzD,kBAAA,WAAA,CAAY,KAAK,CAAA;AAAA,gBACnB,CAAA;AAAA,gBACA,UAAA,EAAY,CAAC,UAAA,KAAe;AAC1B,kBAAA,eAAA,CAAgB,EAAE,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,YAAY,CAAA;AACnD,kBAAA,WAAA,CAAY,KAAK,CAAA;AAAA,gBACnB,CAAA;AAAA,gBACA,MAAA,EAAQ,CAAC,IAAA,KAAS;AAChB,kBAAA,eAAA,CAAgB,EAAE,OAAA,EAAS,IAAA,EAAM,UAAA,EAAY,MAAM,CAAA;AACnD,kBAAA,WAAA,CAAY,KAAK,CAAA;AAAA,gBACnB,CAAA;AAAA,gBACA,QAAA,EAAU,CAAC,IAAA,KAAS;AAClB,kBAAA,OAAA,CAAQ,cAAA,GAAiB,KAAK,GAAG,CAAA;AACjC,kBAAA,OAAA,CAAQ,OAAA,EAAQ;AAAA,gBAClB;AAAA;AAAA;AACF,WAAA,EACF,CAAA,GACE;AAAA,SAAA,EACN;AAAA;AAAA,KACF;AAAA,IACC,oCACCA,GAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,iBAAA;AAAA,QACT,SAAS,MAAM;AACb,UAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,UAAA,OAAA,CAAQ,OAAA,EAAQ;AAAA,QAClB;AAAA;AAAA,KACF,GACE,IAAA;AAAA,IACH,yCACCA,GAAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,sBAAA;AAAA,QACT,SAAS,MAAM;AACb,UAAA,yBAAA,CAA0B,IAAI,CAAA;AAC9B,UAAA,sBAAA,CAAuB,OAAA,EAAQ;AAAA,QACjC;AAAA;AAAA,KACF,GACE,IAAA;AAAA,IACH,+BACCA,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,MAAM,YAAA,CAAa,IAAA;AAAA,QACnB,OAAA,EAAS,aAAa,OAAA,CAAQ,aAAA;AAAA,QAC9B,SAAS,MAAM;AACb,UAAA,YAAA,CAAa,QAAQ,OAAA,EAAQ;AAC7B,UAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,QACtB;AAAA;AAAA,KACF,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AAEA,SAAS,WAAW,KAAA,EASjB;AACD,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,SAAS,QAAA,EAAU,QAAA,EAAU,sBAAqB,GACxE,KAAA;AACF,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,QAAA,EAAU;AACzB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEE,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAS,WAAW,MAAA,GAAY,OAAA;AAAA,MAChC,QAAA;AAAA,MACA,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,SAAA,EAAU,8BAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,KAAA,EAAO,MAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,OAAA,EAAS,QAAA;AAAA,QACT,MAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAc,CAAA;AAAA,QACd,UAAA,EAAY,aAAA;AAAA,QACZ,KAAA,EAAO,WAAW,SAAA,GAAY,SAAA;AAAA,QAC9B,SAAA,EAAW,MAAA;AAAA,QACX,MAAA,EAAQ,WAAW,SAAA,GAAY;AAAA,OACjC;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,oBAAA,mBACCF,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,EAAA;AAAA,cACP,IAAA,EAAM,UAAA;AAAA,cACN,WAAA,EAAa,CAAA;AAAA,cACb,SAAA,EAAW;AAAA,aACb;AAAA,YAEC,qBAAW,QAAA,GAAM;AAAA;AAAA,SACpB,GACE,IAAA;AAAA,QACH,KAAA,CAAM,8BACLA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,EAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,IAAA,EAAM,UAAA;AAAA,cACN,WAAA,EAAa,CAAA;AAAA,cACb,YAAA,EAAc,CAAA;AAAA,cACd,iBAAiB,KAAA,CAAM,WAAA;AAAA,cACvB,SAAA,EAAW;AAAA;AACb;AAAA,SACF,GACE,IAAA;AAAA,wBACJA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,UAAA,EAAY,QAAA;AAAA,cACZ,GAAI,MAAM,WAAA,GACN;AAAA,gBACE,QAAA,EAAU,CAAA;AAAA,gBACV,QAAA,EAAU,QAAA;AAAA,gBACV,YAAA,EAAc;AAAA,eAChB,GACA;AAAA,aACN;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QACC,0BACCA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,UAAA,EAAY,IAAI,KAAA,EAAO,SAAA,EAAW,YAAY,QAAA,EAAS;AAAA,YAE/D,QAAA,EAAA;AAAA;AAAA,SACH,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;AAaA,SAAS,YAAY,KAAA,EAOlB;AACD,EAAA,MAAM,EAAE,OAAO,KAAA,EAAO,MAAA,EAAQ,QAAQ,QAAA,EAAU,QAAA,GAAW,KAAI,GAAI,KAAA;AACnE,EAAA,MAAM,SAAA,GAAY,MAAM,MAAA,CAAO,CAAC,SAAS,IAAA,CAAK,OAAA,IAAW,KAAK,QAAQ,CAAA;AACtE,EAAA,MAAM,uBAAuB,SAAA,CAAU,IAAA;AAAA,IACrC,CAAC,IAAA,KAAS,OAAO,IAAA,CAAK,QAAA,KAAa;AAAA,GACrC;AACA,EAAA,MAAM,UAAA,GAAaK,OAAiC,IAAI,CAAA;AACxD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIN,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,aAAA,GAAgBM,OAAsB,IAAI,CAAA;AAEhD,EAAA,IAAI,CAAC,UAAU,MAAA,IAAU,CAAC,UAAU,CAAC,MAAA,IAAU,CAAC,QAAA,EAAU;AACxD,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,aAAA,CAAc,WAAW,IAAA,EAAM;AACjC,MAAA,MAAA,CAAO,YAAA,CAAa,cAAc,OAAO,CAAA;AACzC,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,eAAA,EAAgB;AAChB,IAAA,aAAA,CAAc,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAC9C,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B,GAAG,GAAG,CAAA;AAAA,EACR,CAAA;AAEA,EAAA,uBACEH,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,cAAc,MAAM;AAClB,QAAA,eAAA,EAAgB;AAChB,QAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,MACd,CAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,aAAA,EAAc;AAAA,MAChB,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,UAAA;AAAA,YACL,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,mEAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,eAAA;AAAA,cAChB,KAAA,EAAO,MAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,OAAA,EAAS,QAAA;AAAA,cACT,MAAA,EAAQ,MAAA;AAAA,cACR,YAAA,EAAc,CAAA;AAAA,cACd,UAAA,EAAY,aAAA;AAAA,cACZ,KAAA,EAAO,SAAA;AAAA,cACP,SAAA,EAAW,MAAA;AAAA,cACX,MAAA,EAAQ;AAAA,aACV;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,GAAAA,CAAC,UAAM,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,8BACbA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,CAAA,6BAAA,EAAgC,IAAA,GAAO,uCAAA,GAA0C,EAAE,CAAA,CAAA;AAAA,kBAC9F,aAAA,EAAY;AAAA;AAAA;AACd;AAAA;AAAA,SACF;AAAA,wBACAA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,eAAA,EAAe,IAAA;AAAA,YACf,IAAA;AAAA,YACA,SAAA,EAAW,UAAA;AAAA,YACX,SAAA,EAAU,UAAA;AAAA,YACV,MAAA,EAAQ,CAAA;AAAA,YACR,QAAA;AAAA,YACA,YAAA,EAAc,OAAA;AAAA,YACd,YAAA,EAAc;AAAA,cACZ,GAAG,0BAAA;AAAA,cACH,KAAA,EAAO;AAAA,aACT;AAAA,YAEA,QAAA,kBAAAE,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,cAAc,MAAM;AAClB,kBAAA,eAAA,EAAgB;AAAA,gBAClB,CAAA;AAAA,gBACA,cAAc,MAAM;AAClB,kBAAA,aAAA,EAAc;AAAA,gBAChB,CAAA;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,MAAA;AAAA,kBACA,UAAU,GAAA,CAAI,CAAC,yBACdA,IAAAA,CAACL,YAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAK,eAAA,mBAAkBG,GAAAA,CAAC,WAAA,EAAA,EAAY,CAAA,GAAK,IAAA;AAAA,oCAC1CA,GAAAA;AAAA,sBAAC,UAAA;AAAA,sBAAA;AAAA,wBACC,OAAO,IAAA,CAAK,KAAA;AAAA,wBACZ,OAAO,IAAA,CAAK,KAAA;AAAA,wBACZ,SAAS,IAAA,CAAK,OAAA;AAAA,wBACd,SAAS,IAAA,CAAK,OAAA;AAAA,wBACd,UAAU,IAAA,CAAK,QAAA;AAAA,wBACf,UAAU,IAAA,CAAK,QAAA;AAAA,wBACf;AAAA;AAAA;AACF,mBAAA,EAAA,EAVa,IAAA,CAAK,GAWpB,CACD,CAAA;AAAA,kBACA,QAAA;AAAA,kBACA;AAAA;AAAA;AAAA;AACH;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,YAAY,KAAA,EAGlB;AACD,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,KAAA;AAC5B,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,0BAAA;AAAA,MACN,KAAA,EAAO,qBAAA,CAAsB,GAAA,CAAI,CAAC,MAAA,MAAY;AAAA,QAC5C,KAAK,MAAA,CAAO,GAAA;AAAA,QACZ,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,QAAA,EAAU,UAAU,MAAA,CAAO,IAAA;AAAA,QAC3B,OAAA,EAAS,MAAM,QAAA,CAAS,MAAA,CAAO,IAAI;AAAA,OACrC,CAAE;AAAA;AAAA,GACJ;AAEJ;AAEA,IAAM,qBAAA,GAAwB,EAAA;AAC9B,IAAM,qBAAA,GAAwB,GAAA;AAC9B,IAAM,sBAAA,GAAyB,EAAA;AAE/B,SAAS,SAAS,KAAA,EAA6D;AAC7E,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,KAAA;AAC5B,EAAA,MAAM,UAAA,GAAaK,OAAiC,IAAI,CAAA;AACxD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIN,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,aAAA,GAAgBM,OAAsB,IAAI,CAAA;AAEhD,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,GAAG,CAAA;AAEtC,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,aAAA,CAAc,WAAW,IAAA,EAAM;AACjC,MAAA,MAAA,CAAO,YAAA,CAAa,cAAc,OAAO,CAAA;AACzC,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,eAAA,EAAgB;AAChB,IAAA,aAAA,CAAc,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAC9C,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B,GAAG,GAAG,CAAA;AAAA,EACR,CAAA;AAEA,EAAA,uBACEH,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,cAAc,MAAM;AAClB,QAAA,eAAA,EAAgB;AAChB,QAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,MACd,CAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,aAAA,EAAc;AAAA,MAChB,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,UAAA;AAAA,YACL,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,mEAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,eAAA;AAAA,cAChB,KAAA,EAAO,MAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,OAAA,EAAS,QAAA;AAAA,cACT,MAAA,EAAQ,MAAA;AAAA,cACR,YAAA,EAAc,CAAA;AAAA,cACd,UAAA,EAAY,aAAA;AAAA,cACZ,KAAA,EAAO,SAAA;AAAA,cACP,SAAA,EAAW,MAAA;AAAA,cACX,MAAA,EAAQ;AAAA,aACV;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,GAAAA,CAAC,UAAK,QAAA,EAAA,cAAA,EAAE,CAAA;AAAA,8BACRE,IAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,OAAA,EAAS,aAAA;AAAA,oBACT,UAAA,EAAY,QAAA;AAAA,oBACZ,GAAA,EAAK,CAAA;AAAA,oBACL,KAAA,EAAO,SAAA;AAAA,oBACP,QAAA,EAAU;AAAA,mBACZ;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,sBAAA,OAAA;AAAA,sBAAQ;AAAA,qBAAA,EAAC,CAAA;AAAA,oCAChBF,GAAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAW,CAAA,6BAAA,EAAgC,IAAA,GAAO,uCAAA,GAA0C,EAAE,CAAA,CAAA;AAAA,wBAC9F,aAAA,EAAY;AAAA;AAAA;AACd;AAAA;AAAA;AACF;AAAA;AAAA,SACF;AAAA,wBACAA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,eAAA,EAAe,IAAA;AAAA,YACf,IAAA;AAAA,YACA,SAAA,EAAW,UAAA;AAAA,YACX,SAAA,EAAU,UAAA;AAAA,YACV,MAAA,EAAQ,CAAA;AAAA,YACR,QAAA,EAAU,GAAA;AAAA,YACV,YAAA,EAAc,OAAA;AAAA,YACd,YAAA,EAAc;AAAA,cACZ,GAAG,0BAAA;AAAA,cACH,KAAA,EAAO;AAAA,aACT;AAAA,YAEA,QAAA,kBAAAE,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,cAAc,MAAM;AAClB,kBAAA,eAAA,EAAgB;AAAA,gBAClB,CAAA;AAAA,gBACA,cAAc,MAAM;AAClB,kBAAA,aAAA,EAAc;AAAA,gBAChB,CAAA;AAAA,gBACA,KAAA,EAAO;AAAA,kBACL,OAAA,EAAS,MAAA;AAAA,kBACT,aAAA,EAAe,QAAA;AAAA,kBACf,GAAA,EAAK,CAAA;AAAA,kBACL,OAAA,EAAS;AAAA,iBACX;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAF,GAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,KAAA,EAAO,SAAA;AAAA,wBACP,QAAA,EAAU,EAAA;AAAA,wBACV,OAAA,EAAS;AAAA,uBACX;AAAA,sBACD,QAAA,EAAA;AAAA;AAAA,mBAED;AAAA,kCACAE,IAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,OAAA,EAAS,MAAA;AAAA,wBACT,UAAA,EAAY,SAAA;AAAA,wBACZ,GAAA,EAAK,CAAA;AAAA,wBACL,OAAA,EAAS;AAAA,uBACX;AAAA,sBAEA,QAAA,EAAA;AAAA,wCAAAF,GAAAA;AAAA,0BAAC,gBAAA;AAAA,0BAAA;AAAA,4BACC,KAAA,EAAO,OAAA;AAAA,4BACP,GAAA,EAAK,qBAAA;AAAA,4BACL,GAAA,EAAK,qBAAA;AAAA,4BACL,IAAA,EAAM,sBAAA;AAAA,4BACN,SAAA,EAAW,CAAA;AAAA,4BACX,UAAA,EAAW,GAAA;AAAA,4BACX,KAAA,EAAO,EAAE,IAAA,EAAM,UAAA,EAAY,UAAU,CAAA,EAAE;AAAA,4BACvC,QAAA,EAAU,CAAC,IAAA,KAAS;AAClB,8BAAA,IAAI,QAAQ,IAAA,IAAQ,CAAC,MAAA,CAAO,QAAA,CAAS,IAAI,CAAA,EAAG;AAC1C,gCAAA;AAAA,8BACF;AACA,8BAAA,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,GAAG,CAAA;AAAA,4BACjC;AAAA;AAAA,yBACF;AAAA,wCACAA,GAAAA;AAAA,0BAAC,QAAA;AAAA,0BAAA;AAAA,4BACC,IAAA,EAAK,QAAA;AAAA,4BACL,UAAU,OAAA,KAAY,GAAA;AAAA,4BACtB,SAAS,MAAM;AACb,8BAAA,QAAA,CAAS,CAAC,CAAA;AAAA,4BACZ,CAAA;AAAA,4BACA,SAAA,EAAU,8BAAA;AAAA,4BACV,KAAA,EAAO;AAAA,8BACL,IAAA,EAAM,UAAA;AAAA,8BACN,MAAA,EAAQ,EAAA;AAAA,8BACR,OAAA,EAAS,CAAA;AAAA,8BACT,MAAA,EAAQ,mBAAA;AAAA,8BACR,YAAA,EAAc,CAAA;AAAA,8BACd,UAAA,EAAY,SAAA;AAAA,8BACZ,KAAA,EAAO,OAAA,KAAY,GAAA,GAAM,SAAA,GAAY,SAAA;AAAA,8BACrC,SAAA,EAAW,QAAA;AAAA,8BACX,MAAA,EAAQ,OAAA,KAAY,GAAA,GAAM,aAAA,GAAgB;AAAA,6BAC5C;AAAA,4BACD,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA;AACF;AAAA;AAAA;AACF;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,mBAAmB,KAAA,EAKzB;AACD,EAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAY,OAAA,EAAQ,GAAI,KAAA;AACtC,EAAA,MAAM,YAAA,GAAe,IAAA,IAAQ,IAAA,IAAQ,IAAA,CAAK,WAAA,KAAgB,IAAA;AAC1D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,SAAuC,OAAO;AAAA,IACtE,KAAK,IAAA,EAAM,GAAA;AAAA,IACX,WAAW,UAAA,EAAY,GAAA;AAAA,IACvB,KAAA,EAAO,MAAM,KAAA,IAAS,EAAA;AAAA,IACtB,SAAA,EAAW,MAAM,SAAA,IAAa,EAAA;AAAA,IAC9B,KAAA,EAAO,MAAM,KAAA,IAAS,GAAA;AAAA,IACtB,QAAA,EAAU,MAAM,QAAA,IAAY,IAAA,CAAK,IAAI,EAAA,EAAI,IAAA,EAAM,SAAS,GAAG,CAAA;AAAA,IAC3D,QAAA,EAAU,MAAM,QAAA,IAAY,IAAA,CAAK,IAAI,GAAA,EAAM,IAAA,EAAM,SAAS,GAAG,CAAA;AAAA,IAC7D,OAAO,IAAA,EAAM,KAAA;AAAA,IACb,SAAA,EACE,SAAS,IAAA,CAAK,QAAA,KAAa,SAAS,IAAA,CAAK,QAAA,EAAU,UAC/C,MAAA,GACA,IAAA,GACG,QAAQ,SAAA,EAAW,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,CAAM,QAAQ,IAAA,CAAK,GAAG,CAAA,EACtD,KAAA,IAAS,IAAA,GACb,IAAA;AAAA,IACR,KAAA,EACE,MAAM,KAAA,IAAA,CACL,UAAA,EAAY,UAAU,MAAA,IAAU,OAAA,CAAQ,OAAA,EAAS,MAAA,IAAU,CAAA,IAAK;AAAA,GACrE,CAAE,CAAA;AACF,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACtD,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,KAAiD;AAC/D,IAAA,QAAA,CAAS,CAAC,OAAA,MAAa,EAAE,GAAG,OAAA,EAAS,GAAG,OAAM,CAAE,CAAA;AAChD,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA;AACA,EAAA,MAAM,UAAA,GAA4B;AAAA,IAChC,OAAA,EAAS,MAAA;AAAA,IACT,GAAA,EAAK,CAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAEA,EAAA,uBACEC,GAAAA;AAAA,IAACC,UAAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAO,IAAA,GAAO,oBAAA,GAAQ,UAAA,GAAa,0BAAA,GAAS,oBAAA;AAAA,MAC5C,KAAA,EAAO,GAAA;AAAA,MACP,QAAA,EAAQ,IAAA;AAAA,MACR,cAAA,EAAgB,KAAA;AAAA,MAChB,UAAU,KAAA,CAAM,OAAA;AAAA,MAChB,MAAM,MAAM;AACV,QAAA,MAAM,YAAY,OAAA,CAAQ,YAAA,GACtB,OAAA,CAAQ,YAAA,CAAa,KAAK,CAAA,GAC1B,4CAAA;AACJ,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,QAAA,CAAS,SAAS,CAAA;AAAA,QACpB,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,OAAA,EAAQ;AAAA,QAChB;AAAA,MACF,CAAA;AAAA,MACA,SAAA,EAAW,EAAE,OAAA,EAAS,eAAA,EAAgB;AAAA,MAEtC,QAAA,kBAAAC,KAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,EAAA,EAAG,EACrC,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,UAAA,EACZ,QAAA,EAAA;AAAA,0BAAAF,GAAAA,CAAC,UAAK,QAAA,EAAA,oBAAA,EAAG,CAAA;AAAA,0BACTA,GAAAA;AAAA,YAACM,UAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAS,IAAA;AAAA,cACT,OAAO,KAAA,CAAM,KAAA;AAAA,cACb,WAAA,EAAY,sCAAA;AAAA,cACZ,QAAA,EAAU,CAAC,KAAA,KAAU,MAAA,CAAO,EAAE,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,KAAA,EAAO;AAAA;AAAA;AAC3D,SAAA,EACF,CAAA;AAAA,QACC,YAAA,mBACCJ,IAAAA,CAAC,OAAA,EAAA,EAAM,OAAO,UAAA,EACZ,QAAA,EAAA;AAAA,0BAAAF,GAAAA,CAAC,UAAK,QAAA,EAAA,mCAAA,EAAa,CAAA;AAAA,0BACnBA,GAAAA;AAAA,YAACG,WAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,MAAM,SAAA,IAAa,EAAA;AAAA,cAC1B,WAAA,EAAY,4CAAA;AAAA,cACZ,UAAA,EAAU,IAAA;AAAA,cACV,UAAA,EAAY,KAAA;AAAA,cACZ,UAAU,OAAA,CAAQ,gBAAA,IAAoB,EAAC,EAAG,GAAA,CAAI,CAAC,MAAA,MAAY;AAAA,gBACzD,KAAA,EACE,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,KAAA,GACtB,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,MAAA,EAAI,MAAA,CAAO,KAAK,CAAA,MAAA,CAAA,GAC/B,MAAA,CAAO,KAAA;AAAA,gBACb,OAAO,MAAA,CAAO,KAAA;AAAA,gBACd,QAAA,EAAU,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,UAAU,IAAA,EAAM;AAAA,eACtD,CAAE,CAAA;AAAA,cACF,UAAU,CAAC,KAAA,KAAU,OAAO,EAAE,SAAA,EAAW,OAAO;AAAA;AAAA;AAClD,SAAA,EACF,CAAA,GACE,IAAA;AAAA,wBACJH,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,mBAAA,EAAqB,2BAAA;AAAA,cACrB,GAAA,EAAK;AAAA,aACP;AAAA,YAGE,QAAA,EAAA;AAAA,cACE,CAAC,4BAAQ,OAAO,CAAA;AAAA,cAChB,CAAC,4BAAQ,UAAU,CAAA;AAAA,cACnB,CAAC,4BAAQ,UAAU;AAAA,aACrB,CACA,GAAA,CAAI,CAAC,CAAC,KAAA,EAAO,GAAG,CAAA,qBAChBE,IAAAA,CAAC,KAAA,EAAA,EAAc,KAAA,EAAO,UAAA,EACpB,QAAA,EAAA;AAAA,8BAAAA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,gBAAA,KAAA;AAAA,gBAAM;AAAA,eAAA,EAAI,CAAA;AAAA,8BACjBF,GAAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,MAAM,GAAG,CAAA;AAAA,kBAChB,GAAA,EAAK,CAAA;AAAA,kBACL,SAAA,EAAW,CAAA;AAAA,kBACX,QAAA,EAAU,CAAC,KAAA,KAAU,MAAA,CAAO,EAAE,CAAC,GAAG,GAAG,KAAA,IAAS,MAAA,EAAW,CAAA;AAAA,kBACzD,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA;AAAO;AAAA;AACzB,aAAA,EAAA,EARQ,GASV,CACD;AAAA;AAAA,SACH;AAAA,wBACAE,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,UAAA,EACV,QAAA,EAAA;AAAA,0BAAAF,GAAAA,CAAC,UAAK,QAAA,EAAA,uEAAA,EAAc,CAAA;AAAA,0BACpBA,GAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,OAAO,KAAA,CAAM,KAAA;AAAA,cACb,GAAA,EAAK,CAAA;AAAA,cACL,GAAA,EACE,MAAM,YAAA,IAAA,CACL,UAAA,EAAY,UAAU,MAAA,IAAU,OAAA,CAAQ,OAAA,EAAS,MAAA,IAAU,CAAA,IAAK,CAAA;AAAA,cAEnE,SAAA,EAAW,CAAA;AAAA,cACX,QAAA,EAAU,CAAC,KAAA,KAAU,MAAA,CAAO,EAAE,KAAA,EAAO,KAAA,IAAS,QAAW,CAAA;AAAA,cACzD,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA;AAAO;AAAA;AACzB,SAAA,EACF,CAAA;AAAA,wBACAE,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,UAAA,EACV,QAAA,EAAA;AAAA,0BAAAF,GAAAA,CAAC,UAAK,QAAA,EAAA,0BAAA,EAAI,CAAA;AAAA,0BACVA,GAAAA;AAAA,YAACG,WAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,MAAM,SAAA,IAAa,SAAA;AAAA,cAC1B,UAAA,EAAY,KAAA;AAAA,cACZ,UACE,IAAA,EAAM,QAAA,KAAa,SAAS,OAAA,CAAQ,IAAA,EAAM,UAAU,MAAM,CAAA;AAAA,cAE5D,OAAA,EAAS;AAAA,gBACP,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,SAAA,EAAU;AAAA,gBAClC,EAAE,KAAA,EAAO,cAAA,EAAM,KAAA,EAAO,QAAA,EAAS;AAAA,gBAC/B,EAAE,KAAA,EAAO,cAAA,EAAM,KAAA,EAAO,SAAA;AAAU,eAClC;AAAA,cACA,QAAA,EAAU,CAAC,KAAA,KACT,MAAA,CAAO;AAAA,gBACL,SAAA,EACE,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,YAAY,KAAA,GAAQ;AAAA,eACvD;AAAA;AAAA;AAEL,SAAA,EACF,CAAA;AAAA,QACC,YAAA,mBACCD,IAAAA,CAAC,OAAA,EAAA,EAAM,OAAO,UAAA,EACZ,QAAA,EAAA;AAAA,0BAAAF,GAAAA,CAAC,UAAK,QAAA,EAAA,0BAAA,EAAI,CAAA;AAAA,0BACVA,GAAAA;AAAA,YAACG,WAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,MAAM,KAAA,IAAS,MAAA;AAAA,cACtB,UAAA,EAAY,KAAA;AAAA,cACZ,OAAA,EAAS;AAAA,gBACP,EAAE,KAAA,EAAO,oBAAA,EAAO,KAAA,EAAO,MAAA,EAAO;AAAA,gBAC9B,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,gBAC/B,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,OAAA;AAAQ,eAClC;AAAA,cACA,QAAA,EAAU,CAAC,KAAA,KACT,MAAA,CAAO;AAAA,gBACL,KAAA,EACE,KAAA,KAAU,MAAA,GAAS,MAAA,GAAa;AAAA,eACnC;AAAA;AAAA;AAEL,SAAA,EACF,CAAA,mBAEAH,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,EAAA,EAAG,EAAG,QAAA,EAAA,8HAAA,EAEhD,CAAA;AAAA,QAED,KAAA,mBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,MAAK,OAAA,EAAQ,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,EAAA,EAAG,EACvD,iBACH,CAAA,GACE;AAAA,OAAA,EACN;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,qBAAqB,KAAA,EAO3B;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,OAAO,UAAA,EAAY,MAAA,EAAQ,UAAS,GAAI,KAAA;AACnE,EAAA,MAAM,UAAA,GAAaK,OAAiC,IAAI,CAAA;AACxD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIN,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC5E,EAAA,MAAM,aAAA,GAAgBM,OAAsB,IAAI,CAAA;AAEhD,EAAA,MAAM,sBAAA,GAAyBA,OAAO,KAAK,CAAA;AAE3C,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,aAAA,CAAc,WAAW,IAAA,EAAM;AACjC,MAAA,MAAA,CAAO,YAAA,CAAa,cAAc,OAAO,CAAA;AACzC,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,gBAAA,IAAoB,uBAAuB,OAAA,EAAS;AACxD,IAAA,eAAA,EAAgB;AAChB,IAAA,aAAA,CAAc,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAC9C,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B,GAAG,GAAG,CAAA;AAAA,EACR,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,SAAA,EAAmB,OAAA,KAAqB;AAC5D,IAAA,eAAA,EAAgB;AAChB,IAAA,sBAAA,CAAuB,OAAA,GAAU,IAAA;AACjC,IAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,IAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,EAC7B,CAAA;AAEA,EAAA,uBACEH,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,cAAc,MAAM;AAClB,QAAA,eAAA,EAAgB;AAChB,QAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,MACd,CAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,aAAA,EAAc;AAAA,MAChB,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,UAAA;AAAA,YACL,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,mEAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,eAAA;AAAA,cAChB,KAAA,EAAO,MAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,OAAA,EAAS,QAAA;AAAA,cACT,MAAA,EAAQ,MAAA;AAAA,cACR,YAAA,EAAc,CAAA;AAAA,cACd,UAAA,EAAY,aAAA;AAAA,cACZ,KAAA,EAAO,SAAA;AAAA,cACP,SAAA,EAAW,MAAA;AAAA,cACX,MAAA,EAAQ;AAAA,aACV;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,GAAAA,CAAC,UAAK,QAAA,EAAA,oBAAA,EAAG,CAAA;AAAA,8BACTA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,CAAA,6BAAA,EAAgC,IAAA,GAAO,uCAAA,GAA0C,EAAE,CAAA,CAAA;AAAA,kBAC9F,aAAA,EAAY;AAAA;AAAA;AACd;AAAA;AAAA,SACF;AAAA,wBACAA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,eAAA,EAAe,IAAA;AAAA,YACf,IAAA;AAAA,YACA,SAAA,EAAW,UAAA;AAAA,YACX,SAAA,EAAU,UAAA;AAAA,YACV,MAAA,EAAQ,CAAA;AAAA,YACR,QAAA,EAAU,GAAA;AAAA,YACV,YAAA,EAAc,CAAC,QAAA,KAAa;AAC1B,cAAA,IAAI,CAAC,QAAA,EAAU,sBAAA,CAAuB,OAAA,GAAU,KAAA;AAChD,cAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA,YAClB,CAAA;AAAA,YACA,gBAAA,EAAiB,wBAAA;AAAA,YACjB,YAAA,EAAc;AAAA,cACZ,GAAG,0BAAA;AAAA,cACH,SAAA,EAAW,GAAA;AAAA,cACX,QAAA,EAAU;AAAA,aACZ;AAAA,YAEA,QAAA,kBAAAE,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,cAAc,MAAM;AAClB,kBAAA,eAAA,EAAgB;AAAA,gBAClB,CAAA;AAAA,gBACA,cAAc,MAAM;AAClB,kBAAA,aAAA,EAAc;AAAA,gBAChB,CAAA;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAF,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,UAAA,IACrB,QAAA,kBAAAA,GAAAA;AAAA,oBAACI,WAAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,SAAA;AAAA,sBACL,IAAA,EAAK,OAAA;AAAA,sBACL,OAAA,EAAS,KAAA;AAAA,sBACT,OAAO,EAAE,MAAA,EAAQ,IAAI,KAAA,EAAO,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,sBACtD,QAAA,EAAA;AAAA;AAAA,mBAED,EACF,CAAA;AAAA,kCACAJ,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAqB,MAAA,EAAQ,OAAA,EAAQ,EAAG,CAAA;AAAA,kBAChE,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZA,GAAAA;AAAA,oBAAC,oBAAA;AAAA,oBAAA;AAAA,sBAEC,IAAA,EAAM,MAAA;AAAA,sBACN,QAAA,EAAU,YAAA;AAAA,sBACV,UAAA;AAAA,sBACA,MAAA;AAAA,sBACA,QAAA;AAAA,sBACA,gBAAA;AAAA,sBACA,yBAAA,EAA2B,CAAC,GAAA,KAAQ;AAClC,wBAAA,mBAAA,CAAoB,GAAG,CAAA;AACvB,wBAAA,IAAI,CAAC,GAAA,EAAK,OAAA,CAAQ,KAAK,CAAA;AAAA,sBACzB;AAAA,qBAAA;AAAA,oBAVK,MAAA,CAAO;AAAA,mBAYf;AAAA;AAAA;AAAA;AACH;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,qBAAqB,KAAA,EAQ3B;AACD,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,UAAA,GAAaK,OAA8B,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIN,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,aAAA,GAAgBM,OAAsB,IAAI,CAAA;AAEhD,EAAA,MAAM,sBAAA,GAAyBA,OAAO,KAAK,CAAA;AAC3C,EAAA,MAAM,WAAA,GAAc,CAAC,CAAC,IAAA,CAAK,QAAA,EAAU,MAAA;AAErC,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,aAAA,CAAc,WAAW,IAAA,EAAM;AACjC,MAAA,MAAA,CAAO,YAAA,CAAa,cAAc,OAAO,CAAA;AACzC,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,gBAAA,IAAoB,uBAAuB,OAAA,EAAS;AACxD,IAAA,eAAA,EAAgB;AAChB,IAAA,aAAA,CAAc,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAC9C,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B,GAAG,GAAG,CAAA;AAAA,EACR,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,SAAA,EAAmB,OAAA,KAAqB;AAC5D,IAAA,eAAA,EAAgB;AAChB,IAAA,sBAAA,CAAuB,OAAA,GAAU,IAAA;AACjC,IAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,EAC7B,CAAA;AAEA,EAAA,uBACEH,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,SAAA,EAAU,2BAAA;AAAA,MACV,cAAc,MAAM;AAClB,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,eAAA,EAAgB;AAChB,UAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,QACd;AAAA,MACF,CAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,aAAA,EAAc;AAAA,QAChB;AAAA,MACF,CAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,eAAA;AAAA,QAChB,GAAA,EAAK,CAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,QACX,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAc,CAAA;AAAA,QACd,KAAA,EAAO,IAAA,CAAK,QAAA,GAAW,SAAA,GAAY,SAAA;AAAA,QACnC,QAAA,EAAU;AAAA,OACZ;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAF,GAAAA,CAAC,SAAI,KAAA,EAAO,EAAE,MAAM,UAAA,EAAY,QAAA,EAAU,CAAA,EAAE,EAC1C,QAAA,kBAAAE,IAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,SAAS,IAAA,CAAK,OAAA;AAAA,YACd,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,aAAA,EAAe,CAAC,CAAC,IAAA,CAAK,aAAA;AAAA,YACtB,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,cAAA,YAAA,CAAa,KAAK,GAAA,EAAK,CAAC,CAAC,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,YAC/C,CAAA;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,IAAA,CAAK,KAAA;AAAA,cACL,IAAA,CAAK,SAAA,GAAY,CAAA,MAAA,EAAI,IAAA,CAAK,SAAS,CAAA,MAAA,CAAA,GAAM;AAAA;AAAA;AAAA,SAC5C,EACF,CAAA;AAAA,wBACAA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,GAAA,EAAK,CAAA;AAAA,cACL,IAAA,EAAM,MAAA;AAAA,cACN,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,IAAA,CAAK,8BACJF,GAAAA;AAAA,gBAAC,eAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,CAAA,oCAAA,EAAS,IAAA,CAAK,KAAK,CAAA,kBAAA,CAAA;AAAA,kBAC1B,SAAA,EAAU,UAAA;AAAA,kBACV,MAAA,EAAO,cAAA;AAAA,kBACP,IAAA,EAAM,qBAAqB,IAAA,CAAK,GAAA;AAAA,kBAChC,cAAc,CAAC,QAAA,KACb,0BAA0B,QAAA,GAAW,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,kBAEtD,SAAA,EAAW,MAAM,QAAA,CAAS,IAAI,CAAA;AAAA,kBAE9B,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,GAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,GAAA;AAAA,sBACL,KAAA,EAAM,oBAAA;AAAA,sBACN,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,cAAA,EAAe;AAAA,sBACzC,OAAO,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,EAAA,EAAI,gBAAgB,MAAA,EAAO;AAAA,sBACjE,QAAA,EAAA;AAAA;AAAA;AAED;AAAA,eACF,GACE,IAAA;AAAA,8BACJA,GAAAA;AAAA,gBAAC,GAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,GAAA;AAAA,kBACL,KAAA,EAAM,oBAAA;AAAA,kBACN,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,oBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,oBAAA,MAAA,CAAO,IAAI,CAAA;AAAA,kBACb,CAAA;AAAA,kBACA,OAAO,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,EAAA,EAAI,gBAAgB,MAAA,EAAO;AAAA,kBACjE,QAAA,EAAA;AAAA;AAAA,eAED;AAAA,cACC,8BACCA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,CAAA,6BAAA,EAAgC,IAAA,GAAO,uCAAA,GAA0C,EAAE,CAAA,CAAA;AAAA,kBAC9F,aAAA,EAAY;AAAA;AAAA,eACd,GACE;AAAA;AAAA;AAAA,SACN;AAAA,QACC,8BACCA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,eAAA,EAAe,IAAA;AAAA,YACf,IAAA;AAAA,YACA,SAAA,EAAW,UAAA;AAAA,YACX,SAAA,EAAU,UAAA;AAAA,YACV,MAAA,EAAQ,CAAA;AAAA,YACR,QAAA,EAAU,GAAA;AAAA,YACV,YAAA,EAAc,CAAC,QAAA,KAAa;AAC1B,cAAA,IAAI,CAAC,QAAA,EAAU,sBAAA,CAAuB,OAAA,GAAU,KAAA;AAChD,cAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA,YAClB,CAAA;AAAA,YACA,gBAAA,EAAiB,wBAAA;AAAA,YACjB,YAAA,EAAc;AAAA,cACZ,GAAG,0BAAA;AAAA,cACH,SAAA,EAAW,GAAA;AAAA,cACX,QAAA,EAAU;AAAA,aACZ;AAAA,YAEA,QAAA,kBAAAE,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,cAAc,MAAM;AAClB,kBAAA,eAAA,EAAgB;AAAA,gBAClB,CAAA;AAAA,gBACA,cAAc,MAAM;AAClB,kBAAA,aAAA,EAAc;AAAA,gBAChB,CAAA;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAF,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,UAAA,IACrB,QAAA,kBAAAA,GAAAA;AAAA,oBAACI,WAAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,SAAA;AAAA,sBACL,IAAA,EAAK,OAAA;AAAA,sBACL,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,sBAC9B,OAAO,EAAE,MAAA,EAAQ,IAAI,KAAA,EAAO,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,sBACtD,QAAA,EAAA;AAAA;AAAA,mBAED,EACF,CAAA;AAAA,kCACAJ,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAqB,MAAA,EAAQ,OAAA,EAAQ,EAAG,CAAA;AAAA,kBAChE,IAAA,CAAK,QAAA,CAAU,GAAA,CAAI,CAAC,0BACnBA,GAAAA;AAAA,oBAAC,oBAAA;AAAA,oBAAA;AAAA,sBAEC,IAAA,EAAM,KAAA;AAAA,sBACN,QAAA,EAAU,YAAA;AAAA,sBACV,UAAA;AAAA,sBACA,MAAA;AAAA,sBACA,QAAA;AAAA,sBACA,gBAAA;AAAA,sBACA;AAAA,qBAAA;AAAA,oBAPK,KAAA,CAAM;AAAA,mBASd;AAAA;AAAA;AAAA;AACH;AAAA,SACF,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,GAAc;AACrB,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ,CAAA;AAAA,QACR,MAAA,EAAQ,OAAA;AAAA,QACR,UAAA,EAAY;AAAA;AACd;AAAA,GACF;AAEJ;AAEA,SAAS,oBAAoB,KAAA,EAG1B;AACD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,IAAI,CAAC,OAAA,CAAQ,qBAAA,IAAyB,CAAC,QAAQ,eAAA,EAAiB;AAC9D,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBAAOA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAM,4CAAA,EAAU,OAAA,EAAS,MAAM,MAAA,EAAQ,CAAA;AAC5D;AAEA,SAAS,sBAAsB,KAAA,EAG5B;AACD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,MAAM,OAAA,GAAU,QAAQ,eAAA,IAAmB;AAAA,IACzC,QAAA,EAAU,CAAA;AAAA,IACV,WAAA,EAAa,CAAA;AAAA,IACb,MAAA,EAAQ,CAAA;AAAA,IACR,SAAA,EAAW,CAAA;AAAA,IACX,QAAA,EAAU,CAAA;AAAA,IACV,WAAA,EAAa;AAAA,GACf;AACA,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,SAAS,OAAO,CAAA;AAE1C,EAAAQ,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,OAAO,CAAA;AAAA,EAClB,CAAA,EAAG;AAAA,IACD,OAAA,CAAQ,QAAA;AAAA,IACR,OAAA,CAAQ,WAAA;AAAA,IACR,OAAA,CAAQ,MAAA;AAAA,IACR,OAAA,CAAQ;AAAA,GACT,CAAA;AAED,EAAA,IAAI,CAAC,OAAA,CAAQ,qBAAA,IAAyB,CAAC,QAAQ,eAAA,EAAiB;AAC9D,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,GAAA,EAAyB,KAAA,KAAyB;AAChE,IAAA,QAAA,CAAS,CAAC,OAAA,MAAa;AAAA,MACrB,GAAG,OAAA;AAAA,MACH,CAAC,GAAG,GAAG,KAAA,IAAS,OAAO,CAAA,GAAI,IAAA,CAAK,MAAM,KAAK;AAAA,KAC7C,CAAE,CAAA;AAAA,EACJ,CAAA;AAEA,EAAA,uBACEL,IAAAA;AAAA,IAACD,UAAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAM,4CAAA;AAAA,MACN,KAAA,EAAO,GAAA;AAAA,MACP,QAAA,EAAQ,IAAA;AAAA,MACR,cAAA,EAAgB,KAAA;AAAA,MAChB,UAAU,KAAA,CAAM,OAAA;AAAA,MAChB,MAAM,MAAM;AACV,QAAA,OAAA,CAAQ,qBAAA,GAAwB;AAAA,UAC9B,QAAA,EAAU,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,UACpC,WAAA,EAAa,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,UAC1C,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,UAChC,SAAA,EAAW,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,WAAW,CAAC;AAAA,SACvC,CAAA;AACD,QAAA,KAAA,CAAM,OAAA,EAAQ;AAAA,MAChB,CAAA;AAAA,MACA,SAAA,EAAW,EAAE,OAAA,EAAS,eAAA,EAAgB;AAAA,MAEtC,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,EAAA,EAAI,YAAA,EAAc,EAAA,EAAG,EAAG,QAAA,EAAA,oEAAA,EAElE,CAAA;AAAA,wBACAE,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,mBAAA,EAAqB,cAAA;AAAA,cACrB,GAAA,EAAK,CAAA;AAAA,cACL,YAAA,EAAc,CAAA;AAAA,cACd,KAAA,EAAO,SAAA;AAAA,cACP,QAAA,EAAU,EAAA;AAAA,cACV,SAAA,EAAW;AAAA,aACb;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,IAAC,MAAA,EAAA,EAAK,CAAA;AAAA,8BACNA,GAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,8BACPA,GAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,QAAA,EAAC;AAAA;AAAA;AAAA,SACT;AAAA,wBACAA,GAAAA;AAAA,UAAC,kBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,cAAA;AAAA,YACN,KAAK,KAAA,CAAM,QAAA;AAAA,YACX,QAAQ,KAAA,CAAM,WAAA;AAAA,YACd,WAAA,EAAa,CAAC,KAAA,KAAU,MAAA,CAAO,YAAY,KAAK,CAAA;AAAA,YAChD,cAAA,EAAgB,CAAC,KAAA,KAAU,MAAA,CAAO,eAAe,KAAK;AAAA;AAAA,SACxD;AAAA,wBACAA,GAAAA;AAAA,UAAC,kBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,cAAA;AAAA,YACN,KAAK,KAAA,CAAM,MAAA;AAAA,YACX,QAAQ,KAAA,CAAM,SAAA;AAAA,YACd,WAAA,EAAa,CAAC,KAAA,KAAU,MAAA,CAAO,UAAU,KAAK,CAAA;AAAA,YAC9C,cAAA,EAAgB,CAAC,KAAA,KAAU,MAAA,CAAO,aAAa,KAAK;AAAA;AAAA;AACtD;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,mBAAmB,KAAA,EAMzB;AACD,EAAA,uBACEE,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QACT,mBAAA,EAAqB,cAAA;AAAA,QACrB,GAAA,EAAK,CAAA;AAAA,QACL,UAAA,EAAY,QAAA;AAAA,QACZ,YAAA,EAAc;AAAA,OAChB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAF,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,EAAA,EAAG,EAAI,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA;AAAA,wBAC9DA,GAAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,yCAAA;AAAA,YACV,OAAO,KAAA,CAAM,GAAA;AAAA,YACb,GAAA,EAAK,CAAA;AAAA,YACL,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,CAAA;AAAA,YACX,WAAA,EAAY,QAAA;AAAA,YACZ,UAAU,KAAA,CAAM;AAAA;AAAA,SAClB;AAAA,wBACAA,GAAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,yCAAA;AAAA,YACV,OAAO,KAAA,CAAM,MAAA;AAAA,YACb,GAAA,EAAK,CAAA;AAAA,YACL,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,CAAA;AAAA,YACX,WAAA,EAAY,QAAA;AAAA,YACZ,UAAU,KAAA,CAAM;AAAA;AAAA;AAClB;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,YAAY,KAAA,EAA6C;AAChE,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAID,QAAAA,CAAS,OAAA,CAAQ,gBAAgB,EAAE,CAAA;AAC7D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,QAAAA;AAAA,IAChC,QAAQ,gBAAA,IAAoB;AAAA,GAC9B;AACA,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAClCA,QAAAA;AAAA,IACE,QAAQ,mBAAA,IAAuB;AAAA,GACjC;AACF,EAAA,MAAM,CAAC,qBAAA,EAAuB,wBAAwB,CAAA,GAAIA,QAAAA;AAAA,IACxD,QAAQ,4BAAA,IAAgC;AAAA,GAC1C;AAEA,EAAAQ,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,OAAA,CAAQ,gBAAgB,EAAE,CAAA;AACnC,IAAA,YAAA,CAAa,OAAA,CAAQ,oBAAoB,IAAI,CAAA;AAC7C,IAAA,eAAA,CAAgB,OAAA,CAAQ,uBAAuB,OAAO,CAAA;AACtD,IAAA,wBAAA,CAAyB,OAAA,CAAQ,gCAAgC,KAAK,CAAA;AAAA,EACxE,CAAA,EAAG;AAAA,IACD,OAAA,CAAQ,gBAAA;AAAA,IACR,OAAA,CAAQ,YAAA;AAAA,IACR,OAAA,CAAQ,gBAAA;AAAA,IACR,OAAA,CAAQ,mBAAA;AAAA,IACR,OAAA,CAAQ;AAAA,GACT,CAAA;AAED,EAAA,IAAI,CAAC,QAAQ,gBAAA,EAAkB;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,YAAA,GAID;AAAA,IACH,EAAE,GAAA,EAAK,KAAA,EAAO,KAAA,EAAO,cAAA,EAAM,OAAO,KAAA,EAAM;AAAA,IACxC,EAAE,GAAA,EAAK,KAAA,EAAO,KAAA,EAAO,oBAAA,EAAO,OAAO,KAAA,EAAM;AAAA,IACzC,EAAE,GAAA,EAAK,OAAA,EAAS,KAAA,EAAO,cAAA,EAAM,OAAO,OAAA,EAAQ;AAAA,IAC5C,EAAE,GAAA,EAAK,YAAA,EAAc,KAAA,EAAO,0BAAA,EAAQ,OAAO,YAAA,EAAa;AAAA,IACxD,EAAE,GAAA,EAAK,UAAA,EAAY,KAAA,EAAO,cAAA,EAAM,OAAO,UAAA,EAAW;AAAA,IAClD,EAAE,GAAA,EAAK,gBAAA,EAAkB,KAAA,EAAO,0BAAA,EAAQ,OAAO,gBAAA,EAAiB;AAAA,IAChE,EAAE,GAAA,EAAK,KAAA,EAAO,KAAA,EAAO,oBAAA,EAAO,OAAO,KAAA,EAAM;AAAA,IACzC,EAAE,GAAA,EAAK,KAAA,EAAO,KAAA,EAAO,oBAAA,EAAO,OAAO,KAAA;AAAM,GAC3C;AACA,EAAA,uBACEP,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,0BAAA;AAAA,MACN,QAAA,EAAU,GAAA;AAAA,MACV,MAAA,EACE,OAAA,CAAQ,oBAAA,mBACNE,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,mBAAA,EAAqB,UAAA;AAAA,YACrB,GAAA,EAAK,CAAA;AAAA,YACL,UAAA,EAAY,QAAA;AAAA,YACZ,OAAA,EAAS,eAAA;AAAA,YACT,YAAA,EAAc,CAAA;AAAA,YACd,YAAA,EAAc;AAAA,WAChB;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAF,GAAAA,CAAC,UAAK,KAAA,EAAO,EAAE,OAAO,SAAA,EAAW,QAAA,EAAU,EAAA,EAAG,EAAG,QAAA,EAAA,oBAAA,EAAG,CAAA;AAAA,4BACpDA,GAAAA;AAAA,cAACM,UAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,KAAA;AAAA,gBACP,WAAA,EAAY,gCAAA;AAAA,gBACZ,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,kBAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,KAAA;AAC3B,kBAAA,QAAA,CAAS,KAAK,CAAA;AACd,kBAAA,OAAA,CAAQ,uBAAuB,KAAK,CAAA;AAAA,gBACtC;AAAA;AAAA;AACF;AAAA;AAAA,OACF,GACE,MAAA;AAAA,MAEN,KAAA,EAAO;AAAA,QACL,GAAG,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,UAC7B,KAAK,IAAA,CAAK,GAAA;AAAA,UACV,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,QAAA,EAAU,OAAA,CAAQ,WAAA,KAAgB,IAAA,CAAK,KAAA;AAAA,UACvC,OAAA,EAAS,MAAM,OAAA,CAAQ,mBAAA,GAAsB,KAAK,KAAK;AAAA,SACzD,CAAE,CAAA;AAAA,QACF;AAAA,UACE,GAAA,EAAK,0BAAA;AAAA,UACL,KAAA,EAAO,kDAAA;AAAA,UACP,eAAA,EAAiB,IAAA;AAAA,UACjB,QAAA,EAAU,QAAQ,qBAAA,KAA0B,KAAA;AAAA,UAC5C,QAAA,EAAU,CAAC,OAAA,CAAQ,WAAA;AAAA,UACnB,OAAA,EAAS,OAAA,CAAQ,6BAAA,GACb,MACE,OAAA,CAAQ,6BAAA;AAAA,YACN,QAAQ,qBAAA,KAA0B;AAAA,WACpC,GACF;AAAA,SACN;AAAA,QACA;AAAA,UACE,GAAA,EAAK,eAAA;AAAA,UACL,KAAA,EAAO,0BAAA;AAAA,UACP,eAAA,EAAiB,IAAA;AAAA,UACjB,SAAS,OAAA,CAAQ;AAAA;AACnB,OACF;AAAA,MACA,QACE,OAAA,CAAQ,wBAAA,IACR,QAAQ,2BAAA,IACR,OAAA,CAAQ,uDACNJ,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,mBAAA,EAAqB,UAAA;AAAA,YACrB,GAAA,EAAK,CAAA;AAAA,YACL,UAAA,EAAY,QAAA;AAAA,YACZ,SAAA,EAAW,CAAA;AAAA,YACX,OAAA,EAAS,eAAA;AAAA,YACT,SAAA,EAAW;AAAA,WACb;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,OAAA,CAAQ,wBAAA,mBACPA,IAAAA,CAAAL,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAAG,GAAAA,CAAC,UAAK,KAAA,EAAO,EAAE,OAAO,SAAA,EAAW,QAAA,EAAU,EAAA,EAAG,EAAG,QAAA,EAAA,0BAAA,EAAI,CAAA;AAAA,8BACrDA,GAAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,SAAA;AAAA,kBACP,GAAA,EAAK,CAAA;AAAA,kBACL,GAAA,EAAK,EAAA;AAAA,kBACL,IAAA,EAAM,CAAA;AAAA,kBACN,SAAA,EAAW,CAAA;AAAA,kBACX,WAAA,EAAY,cAAA;AAAA,kBACZ,QAAA,EAAU,YAAA;AAAA,kBACV,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,oBAAA,OAAA,CAAQ,wBAAA,GAA2B,SAAS,MAAS,CAAA;AAAA,kBACvD;AAAA;AAAA;AACF,aAAA,EACF,CAAA,GACE,IAAA;AAAA,YACH,OAAA,CAAQ,2BAAA,mBACPE,IAAAA,CAAAL,UAAA,EACE,QAAA,EAAA;AAAA,8BAAAG,GAAAA,CAAC,UAAK,KAAA,EAAO,EAAE,OAAO,SAAA,EAAW,QAAA,EAAU,EAAA,EAAG,EAAG,QAAA,EAAA,0BAAA,EAAI,CAAA;AAAA,8BACrDA,GAAAA;AAAA,gBAACG,WAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,YAAA;AAAA,kBACP,OAAA,EAAS;AAAA,oBACP,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,OAAA,EAAQ;AAAA,oBAChC,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,OAAA,EAAQ;AAAA,oBAChC,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,oBAC/B,EAAE,KAAA,EAAO,gCAAA,EAAS,KAAA,EAAO,UAAA;AAAW,mBACtC;AAAA,kBACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,oBAAA,MAAM,IAAA,GAAO,KAAA;AACb,oBAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,oBAAA,OAAA,CAAQ,8BAA8B,IAAI,CAAA;AAAA,kBAC5C;AAAA;AAAA;AACF,aAAA,EACF,CAAA,GACE,IAAA;AAAA,YACH,OAAA,CAAQ,oCAAA,mBACPD,IAAAA,CAAAL,UAAA,EACE,QAAA,EAAA;AAAA,8BAAAG,GAAAA,CAAC,UAAK,KAAA,EAAO,EAAE,OAAO,SAAA,EAAW,QAAA,EAAU,EAAA,EAAG,EAAG,QAAA,EAAA,gCAAA,EAEjD,CAAA;AAAA,8BACAA,GAAAA;AAAA,gBAACG,WAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,wBAAwB,MAAA,GAAS,OAAA;AAAA,kBACxC,OAAA,EAAS;AAAA,oBACP,EAAE,KAAA,EAAO,oBAAA,EAAO,KAAA,EAAO,OAAA,EAAQ;AAAA,oBAC/B,EAAE,KAAA,EAAO,cAAA,EAAM,KAAA,EAAO,MAAA;AAAO,mBAC/B;AAAA,kBACA,QAAA,EAAU,CAAC,aAAA,KAAkB;AAC3B,oBAAA,MAAM,QAAQ,aAAA,KAAkB,MAAA;AAChC,oBAAA,wBAAA,CAAyB,KAAK,CAAA;AAC9B,oBAAA,OAAA,CAAQ,uCAAuC,KAAK,CAAA;AAAA,kBACtD;AAAA;AAAA;AACF,aAAA,EACF,CAAA,GACE;AAAA;AAAA;AAAA,OACN,GACE;AAAA;AAAA,GAER;AAEJ;AAEA,SAAS,cAAc,KAAA,EAA6C;AAClE,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,IAAI,CAAC,OAAA,CAAQ,SAAA,IAAa,CAAC,QAAQ,iBAAA,EAAmB;AACpD,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEH,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,0BAAA;AAAA,MACN,OAAO,EAAC;AAAA,MACR,MAAA,kBACEE,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,EAAA,EAAI,OAAA,EAAS,SAAA,EAAU,EACzD,QAAA,EAAA;AAAA,wBAAAF,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,cAAA;AAAA,YACN,UAAA,EAAY,QAAQ,SAAA,CAAU,gBAAA;AAAA,YAC9B,QAAA,EAAU,QAAQ,SAAA,CAAU,cAAA;AAAA,YAC5B,oBAAoB,CAAC,KAAA,KACnB,QAAQ,iBAAA,GAAoB,QAAA,EAAU,cAAc,KAAK,CAAA;AAAA,YAE3D,kBAAkB,CAAC,KAAA,KACjB,QAAQ,iBAAA,GAAoB,QAAA,EAAU,YAAY,KAAK;AAAA;AAAA,SAE3D;AAAA,wBACAA,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,cAAA;AAAA,YACN,UAAA,EAAY,QAAQ,SAAA,CAAU,cAAA;AAAA,YAC9B,QAAA,EAAU,QAAQ,SAAA,CAAU,YAAA;AAAA,YAC5B,oBAAoB,CAAC,KAAA,KACnB,QAAQ,iBAAA,GAAoB,MAAA,EAAQ,cAAc,KAAK,CAAA;AAAA,YAEzD,kBAAkB,CAAC,KAAA,KACjB,QAAQ,iBAAA,GAAoB,MAAA,EAAQ,YAAY,KAAK;AAAA;AAAA;AAEzD,OAAA,EACF;AAAA;AAAA,GAEJ;AAEJ;AAEA,SAAS,eAAe,KAAA,EAMrB;AACD,EAAA,uBACEE,KAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,CAAA,EAAE,EACpC,QAAA,EAAA;AAAA,oBAAAF,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAO,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,EAAA,EAAG,EAAI,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA;AAAA,oBAChEA,GAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,cAAA;AAAA,QACN,OAAO,KAAA,CAAM,UAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,QAAA,EAAK,KAAA,EAAO,MAAA,EAAO;AAAA,UAC5B,EAAE,KAAA,EAAO,QAAA,EAAK,KAAA,EAAO,QAAA,EAAS;AAAA,UAC9B,EAAE,KAAA,EAAO,QAAA,EAAK,KAAA,EAAO,OAAA;AAAQ,SAC/B;AAAA,QACA,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,oBACAA,GAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,cAAA;AAAA,QACN,OAAO,KAAA,CAAM,QAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACP,EAAE,KAAA,EAAO,QAAA,EAAK,KAAA,EAAO,KAAA,EAAM;AAAA,UAC3B,EAAE,KAAA,EAAO,QAAA,EAAK,KAAA,EAAO,QAAA,EAAS;AAAA,UAC9B,EAAE,KAAA,EAAO,QAAA,EAAK,KAAA,EAAO,QAAA;AAAS,SAChC;AAAA,QACA,UAAU,KAAA,CAAM;AAAA;AAAA;AAClB,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,iBAAuC,KAAA,EAK7C;AACD,EAAA,uBACEE,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QACT,mBAAA,EAAqB,qBAAA;AAAA,QACrB,GAAA,EAAK,CAAA;AAAA,QACL,UAAA,EAAY;AAAA,OACd;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAF,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,EAAA,EAAG,EAAI,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA;AAAA,QAC7D,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,2BAClBA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,8BAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,MAAA,EAAQ,EAAA;AAAA,cACR,MAAA,EAAQ,mBAAA;AAAA,cACR,YAAA,EAAc,CAAA;AAAA,cACd,UAAA,EAAY,KAAA,CAAM,KAAA,KAAU,MAAA,CAAO,QAAQ,SAAA,GAAY,SAAA;AAAA,cACvD,KAAA,EAAO,KAAA,CAAM,KAAA,KAAU,MAAA,CAAO,QAAQ,SAAA,GAAY,SAAA;AAAA,cAClD,MAAA,EAAQ;AAAA,aACV;AAAA,YACA,OAAA,EAAS,MAAM,KAAA,CAAM,QAAA,CAAS,OAAO,KAAK,CAAA;AAAA,YAEzC,QAAA,EAAA,MAAA,CAAO;AAAA,WAAA;AAAA,UAbH,MAAA,CAAO;AAAA,SAef;AAAA;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,eAAe,KAAA,EAGrB;AACD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AAEpB,EAAA,IAAI,CAAC,QAAQ,kBAAA,EAAoB;AAC/B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,GAAAA,CAAAH,QAAAA,EAAA,EACE,QAAA,kBAAAG,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,cAAA;AAAA,MACN,QAAA,EAAU,GAAA;AAAA,MACV,KAAA,EACE;AAAA,QACE,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,cAAA,EAAM,OAAO,SAAA,EAAU;AAAA,QAChD,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,oBAAA,EAAO,OAAO,MAAA,EAAO;AAAA,QAC3C;AAAA,UACE,GAAA,EAAK,QAAA;AAAA,UACL,KAAA,EAAO,cAAA;AAAA,UACP,OAAA,EAAS,MAAA;AAAA,UACT,KAAA,EAAO,QAAA;AAAA,UACP,eAAA,EAAiB;AAAA,SACnB;AAAA,QACA;AAAA,UACE,GAAA,EAAK,WAAA;AAAA,UACL,KAAA,EAAO,4CAAA;AAAA,UACP,OAAA,EAAS,OAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,SAAA;AAAA,UACL,KAAA,EAAO,oEAAA;AAAA,UACP,OAAA,EAAS,UAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,SAAA;AAAA,UACL,KAAA,EAAO,oBAAA;AAAA,UACP,OAAA,EAAS,KAAA;AAAA,UACT,KAAA,EAAO,SAAA;AAAA,UACP,eAAA,EAAiB;AAAA,SACnB;AAAA,QACA;AAAA,UACE,GAAA,EAAK,gBAAA;AAAA,UACL,KAAA,EAAO,kDAAA;AAAA,UACP,OAAA,EAAS,QAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,YAAA;AAAA,UACL,KAAA,EAAO,0BAAA;AAAA,UACP,OAAA,EAAS,WAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,sBAAA;AAAA,UACL,KAAA,EAAO,gCAAA;AAAA,UACP,OAAA,EAAS,sCAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,sBAAA;AAAA,UACL,KAAA,EAAO,gCAAA;AAAA,UACP,OAAA,EAAS,QAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,KAAA;AAAA,UACL,KAAA,EAAO,oBAAA;AAAA,UACP,OAAA,EAAS,WAAA;AAAA,UACT,KAAA,EAAO,KAAA;AAAA,UACP,eAAA,EAAiB;AAAA,SACnB;AAAA,QACA;AAAA,UACE,GAAA,EAAK,YAAA;AAAA,UACL,KAAA,EAAO,kDAAA;AAAA,UACP,OAAA,EAAS,cAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,KAAA;AAAA,UACL,KAAA,EAAO,cAAA;AAAA,UACP,OAAA,EAAS,QAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,YAAA;AAAA,UACL,KAAA,EAAO,4CAAA;AAAA,UACP,OAAA,EAAS,WAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,WAAA;AAAA,UACL,KAAA,EAAO,sCAAA;AAAA,UACP,OAAA,EAAS,YAAA;AAAA,UACT,KAAA,EAAO,WAAA;AAAA,UACP,eAAA,EAAiB;AAAA,SACnB;AAAA,QACA;AAAA,UACE,GAAA,EAAK,UAAA;AAAA,UACL,KAAA,EAAO,4CAAA;AAAA,UACP,OAAA,EAAS,YAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,YAAA;AAAA,UACL,KAAA,EAAO,sCAAA;AAAA,UACP,OAAA,EAAS,0BAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA,EAAE,KAAK,MAAA,EAAQ,KAAA,EAAO,gBAAM,OAAA,EAAS,UAAA,EAAY,OAAO,MAAA,EAAO;AAAA,QAC/D;AAAA,UACE,GAAA,EAAK,WAAA;AAAA,UACL,KAAA,EAAO,gCAAA;AAAA,UACP,OAAA,EAAS,OAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,UAAA;AAAA,UACL,KAAA,EAAO,0BAAA;AAAA,UACP,OAAA,EAAS,qBAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,YAAA;AAAA,UACL,KAAA,EAAO,kDAAA;AAAA,UACP,OAAA,EAAS,8BAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACT;AAAA,QACA;AAAA,UACE,GAAA,EAAK,MAAA;AAAA,UACL,KAAA,EAAO,0BAAA;AAAA,UACP,eAAA,EAAiB,IAAA;AAAA,UACjB,SAAS,KAAA,CAAM;AAAA;AACjB,OACF,CACA,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,QACf,GAAA,EAAK,CAAA,YAAA,EAAe,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,QAC5B,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,OAAA,EAAS,SAAA,IAAa,IAAA,GAAO,IAAA,CAAK,OAAA,GAAU,MAAA;AAAA,QAC5C,eAAA,EACE,iBAAA,IAAqB,IAAA,GAAO,IAAA,CAAK,eAAA,GAAkB,MAAA;AAAA,QACrD,QAAA,EAAU,UAAA,IAAc,IAAA,IAAQ,IAAA,CAAK,QAAA,KAAa,IAAA;AAAA,QAClD,QAAA,EAAU,OAAA,IAAW,IAAA,IAAQ,OAAA,CAAQ,eAAe,IAAA,CAAK,KAAA;AAAA,QACzD,OAAA,EACE,SAAA,IAAa,IAAA,GACT,IAAA,CAAK,OAAA,GACL,OAAA,IAAW,IAAA,GACT,MAAM,OAAA,CAAQ,kBAAA,GAAqB,IAAA,CAAK,KAAK,CAAA,GAC7C;AAAA,OACV,CAAE;AAAA;AAAA,GACJ,EACF,CAAA;AAEJ;AAEA,SAAS,iBAAiB,KAAA,EAGvB;AACD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAID,QAAAA;AAAA,IAAS,MACvC,yBAAA,CAA0B,OAAA,CAAQ,UAAU;AAAA,GAC9C;AACA,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,QAAAA;AAAA,IAAS,MACjD,OAAO,OAAA,CAAQ,UAAA,KAAe,QAAA,IAC9B,OAAA,CAAQ,UAAA,CAAW,IAAA,KAAS,QAAA,GACvB,OAAA,CAAQ,UAAA,CAAW,OAAA,IAAW,UAAA,GAC/B;AAAA,GACN;AACA,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,QAAAA;AAAA,IAAS,MACjD,OAAO,OAAA,CAAQ,UAAA,KAAe,WACzB,OAAA,CAAQ,UAAA,CAAW,iBAAiB,CAAA,GACrC;AAAA,GACN;AACA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,QAAAA;AAAA,IAAS,MAC7C,OAAO,OAAA,CAAQ,UAAA,KAAe,WACzB,OAAA,CAAQ,UAAA,CAAW,eAAe,KAAA,GACnC;AAAA,GACN;AACA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,QAAAA;AAAA,IAAS,MACvC,OAAO,OAAA,CAAQ,UAAA,KAAe,WACzB,OAAA,CAAQ,UAAA,CAAW,UAAU,MAAA,GAC9B;AAAA,GACN;AACA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,QAAAA;AAAA,IAAS,MAC7C,2BAAA,CAA4B,OAAA,CAAQ,UAAA,EAAY,MAAM;AAAA,GACxD;AACA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,QAAAA;AAAA,IAAS,MAC7C,2BAAA,CAA4B,OAAA,CAAQ,UAAA,EAAY,MAAM;AAAA,GACxD;AAEA,EAAA,uBACEC,GAAAA;AAAA,IAACC,UAAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAM,wDAAA;AAAA,MACN,KAAA,EAAO,GAAA;AAAA,MACP,QAAA,EAAQ,IAAA;AAAA,MACR,cAAA,EAAgB,KAAA;AAAA,MAChB,UAAU,KAAA,CAAM,OAAA;AAAA,MAChB,MAAM,MAAM;AACV,QAAA,OAAA,CAAQ,kBAAA;AAAA,UACN,sBAAA;AAAA,YACE,QAAA;AAAA,YACA,aAAA;AAAA,YACA,aAAA;AAAA,YACA,QAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AACF,SACF;AACA,QAAA,KAAA,CAAM,OAAA,EAAQ;AAAA,MAChB,CAAA;AAAA,MACA,SAAA,EAAW,EAAE,OAAA,EAAS,aAAA,EAAc;AAAA,MAEpC,QAAA,kBAAAD,GAAAA;AAAA,QAAC,oBAAA;AAAA,QAAA;AAAA,UACC,QAAA;AAAA,UACA,aAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,QAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,gBAAA,EAAkB,WAAA;AAAA,UAClB,qBAAA,EAAuB,gBAAA;AAAA,UACvB,qBAAA,EAAuB,gBAAA;AAAA,UACvB,gBAAA,EAAkB,cAAA;AAAA,UAClB,gBAAA,EAAkB,WAAA;AAAA,UAClB,mBAAA,EAAqB,cAAA;AAAA,UACrB,mBAAA,EAAqB;AAAA;AAAA;AACvB;AAAA,GACF;AAEJ;AAaA,IAAM,sBAAA,GAGD;AAAA,EACH,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,cAAA,EAAK;AAAA,EAC9B,EAAE,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,cAAA,EAAK;AAAA,EAC7B,EAAE,GAAA,EAAK,UAAA,EAAY,KAAA,EAAO,cAAA,EAAK;AAAA,EAC/B,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,cAAA,EAAK;AAAA,EAC3B,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,cAAA,EAAK;AAAA,EAC3B,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC/B,EAAE,GAAA,EAAK,YAAA,EAAc,KAAA,EAAO,0BAAA,EAAO;AAAA,EACnC,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,cAAA,EAAK;AAAA,EAC3B,EAAE,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,oBAAA;AAC1B,CAAA;AAEA,SAAS,qBAAqB,KAAA,EAe3B;AACD,EAAA,MAAM,MAAA,GAAS,uBAAA;AAAA,IACb,KAAA,CAAM,QAAA;AAAA,IACN,KAAA,CAAM,aAAA;AAAA,IACN,KAAA,CAAM,aAAA;AAAA,IACN,KAAA,CAAM,QAAA;AAAA,IACN,KAAA,CAAM,WAAA;AAAA,IACN,KAAA,CAAM,WAAA;AAAA,IACN,KAAA,CAAM;AAAA,GACR;AACA,EAAA,uBACEE,KAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,EAAA,EAAG,EACrC,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,MAAA;AAAA,UACT,mBAAA,EAAqB,WAAA;AAAA,UACrB,GAAA,EAAK,EAAA;AAAA,UACL,UAAA,EAAY,SAAA;AAAA,UACZ,MAAA,EAAQ;AAAA,SACV;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,SAAI,KAAA,EAAO,EAAE,SAAS,MAAA,EAAQ,aAAA,EAAe,UAAS,EACrD,QAAA,EAAA;AAAA,4BAAAF,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,oBAAA,EAAsB,QAAA,EAAA,cAAA,EAAE,CAAA;AAAA,4BACpCA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,GAAG,2BAAA,EAA6B,IAAA,EAAM,CAAA,EAAE,EACnD,QAAA,EAAA,sBAAA,CAAuB,GAAA,CAAI,CAAC,yBAC3BA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,MAAM,KAAA,CAAM,gBAAA,CAAiB,KAAK,GAAG,CAAA;AAAA,gBAC9C,KAAA,EAAO;AAAA,kBACL,GAAG,6BAAA;AAAA,kBACH,GAAI,KAAA,CAAM,QAAA,KAAa,IAAA,CAAK,MACxB,+BAAA,GACA;AAAA,iBACN;AAAA,gBAEC,QAAA,EAAA,IAAA,CAAK;AAAA,eAAA;AAAA,cAVD,IAAA,CAAK;AAAA,aAYb,CAAA,EACH;AAAA,WAAA,EACF,CAAA;AAAA,0BACAE,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAF,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,oBAAA,EAAsB,QAAA,EAAA,cAAA,EAAE,CAAA;AAAA,4BACpCA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,wBAAyB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,4BAC5CA,GAAAA,CAAC,iBAAA,EAAA,EAAmB,GAAG,KAAA,EAAO;AAAA,WAAA,EAChC;AAAA;AAAA;AAAA,KACF;AAAA,oBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,4BAA4B,QAAA,EAAA,oHAAA,EAExC;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,kBAAkB,KAAA,EAAmD;AAC5E,EAAA,IACE,KAAA,CAAM,aAAa,QAAA,IACnB,KAAA,CAAM,aAAa,SAAA,IACnB,KAAA,CAAM,aAAa,YAAA,EACnB;AACA,IAAA,uBACEE,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,sBAAA,EACV,QAAA,EAAA;AAAA,sBAAAF,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,oBAAA,EAAsB,QAAA,EAAA,0BAAA,EAAI,CAAA;AAAA,sBACvCA,GAAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,CAAM,aAAA;AAAA,UACb,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,SAAA,EAAW,CAAA;AAAA,UACX,UAAU,CAAC,KAAA,KAAU,KAAA,CAAM,qBAAA,CAAsB,SAAS,CAAC,CAAA;AAAA,UAC3D,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA;AAAG;AAAA,OACrB;AAAA,MACC,KAAA,CAAM,QAAA,KAAa,QAAA,mBAClBA,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,SAAS,KAAA,CAAM,WAAA;AAAA,UACf,UAAU,CAAC,KAAA,KAAU,MAAM,gBAAA,CAAiB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,UACjE,QAAA,EAAA;AAAA;AAAA,OAED,GACE;AAAA,KAAA,EACN,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,KAAA,CAAM,aAAa,UAAA,EAAY;AACjC,IAAA,uBACEE,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,sBAAA,EACV,QAAA,EAAA;AAAA,sBAAAF,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,oBAAA,EAAsB,QAAA,EAAA,0BAAA,EAAI,CAAA;AAAA,sBACvCA,GAAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,CAAM,aAAA;AAAA,UACb,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,SAAA,EAAW,CAAA;AAAA,UACX,UAAU,CAAC,KAAA,KAAU,KAAA,CAAM,qBAAA,CAAsB,SAAS,CAAC,CAAA;AAAA,UAC3D,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA;AAAG;AAAA,OACrB;AAAA,sBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,sBAAsB,QAAA,EAAA,0BAAA,EAAI,CAAA;AAAA,sBACvCA,GAAAA;AAAA,QAACG,WAAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,CAAM,QAAA;AAAA,UACb,OAAA,EAAS;AAAA,YACP,EAAE,KAAA,EAAO,MAAA,EAAK,KAAA,EAAO,MAAA,EAAI;AAAA,YACzB,EAAE,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO,GAAA;AAAI,WAC3B;AAAA,UACA,UAAU,KAAA,CAAM,gBAAA;AAAA,UAChB,KAAA,EAAO,EAAE,KAAA,EAAO,GAAA;AAAI;AAAA;AACtB,KAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,KAAA,CAAM,aAAa,MAAA,EAAQ;AAC7B,IAAA,uBACEH,GAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,cAAA;AAAA,QACN,OAAO,KAAA,CAAM,WAAA;AAAA,QACb,OAAA,EAAS,mBAAA;AAAA,QACT,UAAU,KAAA,CAAM,mBAAA;AAAA,QAChB,UAAA,EAAU,IAAA;AAAA,QACV,UAAA,EAAW,gCAAA;AAAA,QACX,gBAAA,EAAiB;AAAA;AAAA,KACnB;AAAA,EAEJ;AACA,EAAA,IAAI,KAAA,CAAM,aAAa,MAAA,EAAQ;AAC7B,IAAA,uBACEA,GAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,cAAA;AAAA,QACN,OAAO,KAAA,CAAM,WAAA;AAAA,QACb,OAAA,EAAS,mBAAA;AAAA,QACT,UAAU,KAAA,CAAM;AAAA;AAAA,KAClB;AAAA,EAEJ;AACA,EAAA,IAAI,KAAA,CAAM,aAAa,QAAA,EAAU;AAC/B,IAAA,uBACEA,GAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,cAAA;AAAA,QACN,OAAO,KAAA,CAAM,aAAA;AAAA,QACb,OAAA,EAAS;AAAA,UACP,GAAA;AAAA,UACA,4BAAA;AAAA,UACA,YAAA;AAAA,UACA,cAAA;AAAA,UACA,eAAA;AAAA,UACA,cAAA;AAAA,UACA,GAAA;AAAA,UACA,KAAA;AAAA,UACA,MAAA;AAAA,UACA,OAAA;AAAA,UACA,OAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,4BAAA;AAAA,UACA,IAAA;AAAA,UACA,MAAA;AAAA,UACA,OAAA;AAAA,UACA,WAAA;AAAA,UACA,cAAA;AAAA,UACA,QAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,YAAA;AAAA,UACA,YAAA;AAAA,UACA,OAAA;AAAA,UACA,UAAA;AAAA,UACA,OAAA;AAAA,UACA,UAAA;AAAA,UACA,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,KAAA,CAAM,qBAAA;AAAA,QAChB,UAAA,EAAU;AAAA;AAAA,KACZ;AAAA,EAEJ;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,iBAAiB,KAAA,EAQvB;AACD,EAAA,uBACEE,IAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,SAAA,EAAW,IAAG,EACzB,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,UAAA,mBACLA,IAAAA,CAAAL,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAG,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,sBACT,QAAA,EAAA,KAAA,CAAM,UAAA,IAAc,MAAM,KAAA,EAC7B,CAAA;AAAA,sBACAA,GAAAA;AAAA,QAACM,UAAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,aAAa,KAAA,CAAM,gBAAA;AAAA,UACnB,UAAU,CAAC,KAAA,KAAU,MAAM,QAAA,CAAS,KAAA,CAAM,OAAO,KAAK;AAAA;AAAA;AACxD,KAAA,EACF,CAAA,GACE,IAAA;AAAA,oBACJN,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,GAAG,oBAAA;AAAA,UACH,SAAA,EAAW,KAAA,CAAM,UAAA,GAAa,EAAA,GAAK;AAAA,SACrC;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,KACT;AAAA,oBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAAyB,KAAA,EAAO,yBAAA,EAC5C,QAAA,EAAA,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AAC7B,MAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,KAAW,QAAA,GAAW,SAAS,MAAA,CAAO,KAAA;AAC3D,MAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,KAAW,QAAA,GAAW,SAAS,MAAA,CAAO,KAAA;AAC3D,MAAA,uBACEA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,KAAA,CAAM,QAAA,CAAS,KAAK,CAAA;AAAA,UACnC,KAAA,EAAO;AAAA,YACL,GAAG,qBAAA;AAAA,YACH,GAAI,KAAA,CAAM,KAAA,KAAU,KAAA,GAChB,6BAAA,GACA;AAAA,WACN;AAAA,UAEC,QAAA,EAAA;AAAA,SAAA;AAAA,QAVI;AAAA,OAWP;AAAA,IAEJ,CAAC,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,0BACP,UAAA,EACoB;AACpB,EAAA,MAAM,IAAA,GAAO,OAAO,UAAA,KAAe,QAAA,GAAW,WAAW,IAAA,GAAO,UAAA;AAChE,EAAA,IAAI,IAAA,KAAS,UAAU,OAAO,QAAA;AAC9B,EAAA,IAAI,IAAA,KAAS,SAAA,IAAa,IAAA,KAAS,gBAAA,EAAkB,OAAO,SAAA;AAC5D,EAAA,IACE,IAAA,KAAS,SACT,IAAA,KAAS,YAAA,IACT,SAAS,KAAA,IACT,IAAA,KAAS,gBACT,IAAA,KAAS,OAAA;AAET,IAAA,OAAO,UAAA;AACT,EAAA,IACE,IAAA,KAAS,eACT,IAAA,KAAS,UAAA,IACT,SAAS,YAAA,IACT,IAAA,KAAS,iBAAA,IACT,IAAA,KAAS,gBAAA,IACT,IAAA,KAAS,mBACT,IAAA,KAAS,cAAA,IACT,SAAS,mBAAA,IACT,IAAA,KAAS,wBACT,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,YAAA,IACT,IAAA,KAAS,mBAAA;AAET,IAAA,OAAO,MAAA;AACT,EAAA,IACE,SAAS,MAAA,IACT,IAAA,KAAS,eACT,IAAA,KAAS,QAAA,IACT,SAAS,eAAA,IACT,IAAA,KAAS,iBAAA,IACT,IAAA,KAAS,uBACT,IAAA,KAAS,iBAAA,IACT,SAAS,mBAAA,IACT,IAAA,KAAS,uBACT,IAAA,KAAS,qBAAA;AAET,IAAA,OAAO,MAAA;AACT,EAAA,IAAI,IAAA,KAAS,cAAc,OAAO,YAAA;AAClC,EAAA,IAAI,IAAA,KAAS,QAAQ,OAAO,MAAA;AAC5B,EAAA,IACE,IAAA,KAAS,YACT,IAAA,KAAS,WAAA,IACT,SAAS,SAAA,IACT,IAAA,KAAS,0BACT,IAAA,KAAS,sBAAA;AAET,IAAA,OAAO,QAAA;AACT,EAAA,OAAO,SAAA;AACT;AAQA,IAAM,mBAAA,GAA8C;AAAA,EAClD,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,UAAA,EAAY,MAAM,WAAA,EAAY;AAAA,EAC3D,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,MAAM,WAAA,EAAY;AAAA,EAC9D,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,UAAA,EAAY,MAAM,UAAA,EAAW;AAAA,EAC1D,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,MAAM,UAAA,EAAW;AAAA,EAC7D,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,MAAM,WAAA,EAAY;AAAA,EAC9D,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,MAAM,WAAA,EAAY;AAAA,EAC9D,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,MAAM,WAAA,EAAY;AAAA,EAC9D,EAAE,KAAA,EAAO,yBAAA,EAAY,KAAA,EAAO,wBAAA,EAAW,MAAM,YAAA,EAAa;AAAA,EAC1D,EAAE,KAAA,EAAO,2BAAA,EAAc,KAAA,EAAO,0BAAA,EAAa,MAAM,YAAA,EAAa;AAAA,EAC9D,EAAE,KAAA,EAAO,mBAAA,EAAW,KAAA,EAAO,mBAAA,EAAW,MAAM,iBAAA,EAAkB;AAAA,EAC9D,EAAE,KAAA,EAAO,iBAAA,EAAS,KAAA,EAAO,gBAAA,EAAQ,MAAM,gBAAA,EAAiB;AAAA,EACxD,EAAE,KAAA,EAAO,oBAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,MAAM,mBAAA,EAAoB;AAAA,EACzD,EAAE,KAAA,EAAO,cAAA,EAAM,KAAA,EAAO,KAAA,EAAO,MAAM,oBAAA,EAAqB;AAAA,EACxD,EAAE,KAAA,EAAO,8BAAA,EAAiB,KAAA,EAAO,eAAA,EAAiB,MAAM,eAAA,EAAgB;AAAA,EACxE;AAAA,IACE,KAAA,EAAO,+BAAA;AAAA,IACP,KAAA,EAAO,iBAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,KAAA,EAAO,iBAAA,EAAmB,KAAA,EAAO,gBAAA,EAAkB,MAAM,UAAA,EAAW;AAAA,EACtE,EAAE,KAAA,EAAO,oBAAA,EAAsB,KAAA,EAAO,mBAAA,EAAqB,MAAM,UAAA,EAAW;AAAA,EAC5E;AAAA,IACE,KAAA,EAAO,qBAAA;AAAA,IACP,KAAA,EAAO,qBAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,KAAA,EAAO,4BAAA,EAAoB,KAAA,EAAO,gBAAA,EAAkB,MAAM,YAAA,EAAa;AAAA,EACzE;AAAA,IACE,KAAA,EAAO,+BAAA;AAAA,IACP,KAAA,EAAO,mBAAA;AAAA,IACP,IAAA,EAAM;AAAA;AAEV,CAAA;AAEA,IAAM,mBAAA,GAA8C;AAAA,EAClD,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,MAAM,WAAA,EAAY;AAAA,EACpD,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,MAAM,MAAA,EAAO;AAAA,EACrD,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,cAAA,EAAgB,MAAM,iBAAA,EAAkB;AAAA,EACxE,EAAE,KAAA,EAAO,kBAAA,EAAU,KAAA,EAAO,OAAA,EAAS,MAAM,QAAA,EAAS;AAAA,EAClD,EAAE,KAAA,EAAO,qBAAA,EAAa,KAAA,EAAO,UAAA,EAAY,MAAM,eAAA,EAAgB;AAAA,EAC/D;AAAA,IACE,KAAA,EAAO,yBAAA;AAAA,IACP,KAAA,EAAO,cAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,KAAA,EAAO,kBAAA,EAAU,KAAA,EAAO,iBAAA,EAAS,MAAM,iBAAA,EAAkB;AAAA,EAC3D,EAAE,KAAA,EAAO,0BAAA,EAAa,KAAA,EAAO,yBAAA,EAAY,MAAM,mBAAA,EAAoB;AAAA,EACnE,EAAE,KAAA,EAAO,6BAAA,EAAW,KAAA,EAAO,kBAAA,EAAU,MAAM,mBAAA,EAAoB;AAAA,EAC/D;AAAA,IACE,KAAA,EAAO,qCAAA;AAAA,IACP,KAAA,EAAO,0BAAA;AAAA,IACP,IAAA,EAAM;AAAA;AAEV,CAAA;AAEA,IAAM,uBAAA,GAA0B,IAAI,IAAA,CAAK,IAAA,EAAM,GAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAGrE,SAAS,2BAAA,CACP,YACA,IAAA,EACA;AACA,EAAA,IAAI,OAAO,UAAA,KAAe,QAAA,IAAY,UAAA,CAAW,OAAA,EAAS;AACxD,IAAA,OAAO,UAAA,CAAW,OAAA;AAAA,EACpB;AACA,EAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AAClC,IAAA,MAAM,MAAA,GAAS,IAAA,KAAS,MAAA,GAAS,mBAAA,GAAsB,mBAAA;AACvD,IAAA,MAAM,QAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,SAAS,UAAU,CAAA;AAChE,IAAA,IAAI,KAAA,SAAc,KAAA,CAAM,KAAA;AAAA,EAC1B;AACA,EAAA,OAAO,IAAA,KAAS,SAAS,UAAA,GAAa,OAAA;AACxC;AAEA,SAAS,sBAAA,CACP,QAAA,EACA,aAAA,EACA,aAAA,GAAgB,CAAA,EAChB,QAAA,GAAW,MAAA,EACX,WAAA,GAAc,UAAA,EACd,WAAA,GAAc,OAAA,EACd,WAAA,GAAc,KAAA,EACO;AACrB,EAAA,IAAI,QAAA,KAAa,QAAA;AACf,IAAA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAA,EAAe,WAAA,EAAY;AACtD,EAAA,IAAI,aAAa,UAAA,EAAY;AAC3B,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,QAAA,KAAa,GAAA,GAAM,KAAA,GAAQ,KAAA;AAAA,MACjC,aAAA;AAAA,MACA,WAAA,EAAa,IAAA;AAAA,MACb,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACA,EAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,IAAA,OAAO;AAAA,MACL,IAAA,EACE,oBAAoB,IAAA,CAAK,CAAC,WAAW,MAAA,CAAO,KAAA,KAAU,WAAW,CAAA,EAC7D,IAAA,IAAQ,UAAA;AAAA,MACd,OAAA,EAAS;AAAA,KACX;AAAA,EACF;AACA,EAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,IAAA,OAAO;AAAA,MACL,IAAA,EACE,oBAAoB,IAAA,CAAK,CAAC,WAAW,MAAA,CAAO,KAAA,KAAU,WAAW,CAAA,EAC7D,IAAA,IAAQ,MAAA;AAAA,MACd,OAAA,EAAS;AAAA,KACX;AAAA,EACF;AACA,EAAA,IAAI,aAAa,SAAA,EAAW,OAAO,EAAE,IAAA,EAAM,WAAW,aAAA,EAAc;AACpE,EAAA,IAAI,aAAa,YAAA,EAAc,OAAO,EAAE,IAAA,EAAM,cAAc,aAAA,EAAc;AAC1E,EAAA,IAAI,QAAA,KAAa,QAAQ,OAAO,MAAA;AAChC,EAAA,IAAI,aAAa,QAAA,EAAU,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,aAAA,EAAc;AAC3E,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,uBAAA,CACP,QAAA,EACA,aAAA,EACA,aAAA,GAAgB,CAAA,EAChB,QAAA,GAAW,MAAA,EACX,WAAA,GAAc,UAAA,EACd,WAAA,GAAc,OAAA,EACd,WAAA,GAAc,KAAA,EACd;AACA,EAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,IAAA,OAAO,mBAAA,CAAoB,uBAAA,EAAyB,WAAW,CAAA,IAAK,EAAA;AAAA,EACtE;AACA,EAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,IAAA,OAAO,mBAAA,CAAoB,uBAAA,EAAyB,WAAW,CAAA,IAAK,EAAA;AAAA,EACtE;AACA,EAAA,IAAI,aAAa,QAAA,EAAU;AACzB,IAAA,OAAO,kBAAkB,OAAA,EAAS;AAAA,MAChC,aAAA;AAAA,MACA,kBAAA,EAAoB;AAAA,KACrB,CAAA;AAAA,EACH;AACA,EAAA,IAAI,aAAa,UAAA,EAAY;AAC3B,IAAA,OAAO,kBAAkB,OAAA,EAAS;AAAA,MAChC,aAAA;AAAA,MACA,kBAAA,EAAoB,IAAA;AAAA,MACpB,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH;AACA,EAAA,IAAI,QAAA,KAAa,SAAA,EAAW,OAAO,kBAAA,CAAmB,QAAQ,aAAa,CAAA;AAC3E,EAAA,IAAI,aAAa,YAAA,EAAc;AAC7B,IAAA,OAAO,qBAAA,CAAsB,MAAM,aAAa,CAAA;AAAA,EAClD;AACA,EAAA,IAAI,aAAa,QAAA,EAAU;AACzB,IAAA,OAAO,uBAAA,CAAwB,aAAa,CAAA,GACvC,mBAAA,CAAoB,uBAAA,EAAyB,aAAa,CAAA,IAAK,EAAA,GAChE,yBAAA,CAA0B,OAAA,EAAS,aAAa,CAAA;AAAA,EACtD;AACA,EAAA,MAAM,MAAA,GAAS,sBAAA;AAAA,IACb,QAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,OAAA,GAAkC;AAAA,IACtC,OAAA,EAAS,EAAA;AAAA,IACT,IAAA,EAAM,MAAA;AAAA,IACN,MAAA,EAAQ,MAAA;AAAA,IACR,SAAA,EAAW,OAAA;AAAA,IACX,OAAA,EAAS,UAAA;AAAA,IACT,OAAA,EAAS,KAAA;AAAA,IACT,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY,WAAA;AAAA,IACZ,oBAAA,EAAsB,sCAAA;AAAA,IACtB,oBAAA,EAAsB,QAAA;AAAA,IACtB,GAAA,EAAK,WAAA;AAAA,IACL,UAAA,EAAY,cAAA;AAAA,IACZ,GAAA,EAAK,QAAA;AAAA,IACL,UAAA,EAAY,WAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,QAAA,EAAU,YAAA;AAAA,IACV,UAAA,EAAY,0BAAA;AAAA,IACZ,eAAA,EAAiB,mBAAA;AAAA,IACjB,cAAA,EAAgB,gBAAA;AAAA,IAChB,aAAA,EAAe,+BAAA;AAAA,IACf,YAAA,EAAc,+BAAA;AAAA,IACd,iBAAA,EAAmB,oBAAA;AAAA,IACnB,kBAAA,EAAoB,cAAA;AAAA,IACpB,IAAA,EAAM,UAAA;AAAA,IACN,SAAA,EAAW,OAAA;AAAA,IACX,MAAA,EAAQ,mBAAA;AAAA,IACR,aAAA,EAAe,sBAAA;AAAA,IACf,eAAA,EAAiB,cAAA;AAAA,IACjB,iBAAA,EAAmB,0BAAA;AAAA,IACnB,eAAA,EAAiB,kBAAA;AAAA,IACjB,iBAAA,EAAmB,0BAAA;AAAA,IACnB,iBAAA,EAAmB,8BAAA;AAAA,IACnB,mBAAA,EAAqB,sCAAA;AAAA,IACrB,QAAA,EAAU,qBAAA;AAAA,IACV,UAAA,EAAY,8BAAA;AAAA,IACZ,iBAAA,EAAmB,iCAAA;AAAA,IACnB,KAAA,EAAO;AAAA,GACT;AACA,EAAA,OAAO,QAAQ,OAAO,MAAA,KAAW,WAAW,MAAA,GAAS,MAAA,CAAO,IAAI,CAAA,IAAK,EAAA;AACvE;AAEA,IAAM,oBAAA,GAAuB;AAAA,EAC3B,YAAA,EAAc,CAAA;AAAA,EACd,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU;AACZ,CAAA;AACA,IAAM,2BAAA,GAA8B;AAAA,EAClC,OAAA,EAAS,MAAA;AAAA,EACT,GAAA,EAAK,CAAA;AAAA,EACL,OAAA,EAAS,CAAA;AAAA,EACT,MAAA,EAAQ,mBAAA;AAAA,EACR,YAAA,EAAc;AAChB,CAAA;AACA,IAAM,6BAAA,GAAgC;AAAA,EACpC,MAAA,EAAQ,EAAA;AAAA,EACR,OAAA,EAAS,OAAA;AAAA,EACT,MAAA,EAAQ,CAAA;AAAA,EACR,YAAA,EAAc,CAAA;AAAA,EACd,UAAA,EAAY,aAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,SAAA,EAAW,MAAA;AAAA,EACX,MAAA,EAAQ;AACV,CAAA;AACA,IAAM,+BAAA,GAAkC;AAAA,EACtC,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AACA,IAAM,sBAAA,GAAyB;AAAA,EAC7B,MAAA,EAAQ,EAAA;AAAA,EACR,OAAA,EAAS,QAAA;AAAA,EACT,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,MAAA,EAAQ,mBAAA;AAAA,EACR,YAAA,EAAc,CAAA;AAAA,EACd,KAAA,EAAO,SAAA;AAAA,EACP,UAAA,EAAY;AACd,CAAA;AACA,IAAM,0BAAA,GAA6B;AAAA,EACjC,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU;AACZ,CAAA;AACA,IAAM,sBAAA,GAAyB;AAAA,EAC7B,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,QAAA,EAAU,MAAA;AAAA,EACV,GAAA,EAAK,CAAA;AAAA,EACL,SAAA,EAAW;AACb,CAAA;AACA,IAAM,yBAAA,GAA4B;AAAA,EAChC,OAAA,EAAS,MAAA;AAAA,EACT,GAAA,EAAK,CAAA;AAAA,EACL,SAAA,EAAW,GAAA;AAAA,EACX,QAAA,EAAU,MAAA;AAAA,EACV,OAAA,EAAS,CAAA;AAAA,EACT,MAAA,EAAQ,mBAAA;AAAA,EACR,YAAA,EAAc;AAChB,CAAA;AACA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,SAAA,EAAW,EAAA;AAAA,EACX,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,CAAA;AAAA,EACR,YAAA,EAAc,CAAA;AAAA,EACd,UAAA,EAAY,aAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,SAAA,EAAW,MAAA;AAAA,EACX,MAAA,EAAQ;AACV,CAAA;AACA,IAAM,6BAAA,GAAgC;AAAA,EACpC,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AC30FA,IAAM,uBAAA,GAAyC;AAAA,EAC7C,OAAA,EAAS;AACX,CAAA;AAGO,SAAS,2BAA2B,KAAA,EAExC;AACD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAID,QAAAA,CAAS,QAAQ,OAAO,CAAA;AACtD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,QAAAA,CAAS,QAAQ,IAAI,CAAA;AAC7C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,QAAAA,CAAS,QAAQ,aAAa,CAAA;AAExE,EAAAQ,UAAU,MAAM;AACd,IAAA,UAAA,CAAW,QAAQ,OAAO,CAAA;AAC1B,IAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA;AACpB,IAAA,gBAAA,CAAiB,QAAQ,aAAa,CAAA;AAAA,EACxC,CAAA,EAAG,CAAC,OAAA,CAAQ,OAAA,EAAS,QAAQ,IAAA,EAAM,OAAA,CAAQ,aAAa,CAAC,CAAA;AAEzD,EAAA,MAAM,OAAA,GACJ,YAAY,OAAA,CAAQ,OAAA,IACpB,SAAS,OAAA,CAAQ,IAAA,IACjB,kBAAkB,OAAA,CAAQ,aAAA;AAC5B,EAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,QAAA,CAAS,SAAS,EAAE,IAAA,EAAM,eAAe,CAAA;AAEtE,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAA,GACtB,gCAAA,GACA,QAAQ,UAAA,GAAa,CAAA,GACnB,CAAA,EAAG,OAAA,CAAQ,YAAA,GAAe,CAAC,CAAA,GAAA,EAAM,OAAA,CAAQ,UAAU,CAAA,CAAA,GACnD,oBAAA;AAEN,EAAA,uBACEL,IAAAA;AAAA,IAACD,UAAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAM,cAAA;AAAA,MACN,KAAA,EAAO,GAAA;AAAA,MACP,IAAA,EAAM,KAAA;AAAA,MACN,QAAA,EAAU,KAAA;AAAA,MACV,SAAA,EAAS,IAAA;AAAA,MACT,cAAA,EAAgB,KAAA;AAAA,MAChB,MAAA,EAAQ,KAAA;AAAA,MACR,UAAU,OAAA,CAAQ,OAAA;AAAA,MAClB,SAAA,EAAW,uBAAA;AAAA,MACX,KAAA,EAAO,EAAE,SAAA,EAAW,EAAA,EAAG;AAAA,MAEvB,QAAA,EAAA;AAAA,wBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,kBAAA,EACV,QAAA,EAAA;AAAA,0BAAAF,GAAAA;AAAA,YAACM,UAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAS,IAAA;AAAA,cACT,KAAA,EAAO,OAAA;AAAA,cACP,WAAA,EAAY,0BAAA;AAAA,cACZ,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAS,UAAU,CAAA,EAAE;AAAA,cACpC,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,gBAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,KAAA;AAC3B,gBAAA,UAAA,CAAW,KAAK,CAAA;AAAA,cAClB,CAAA;AAAA,cACA,YAAA,EAAc;AAAA;AAAA,WAChB;AAAA,0BACAN,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,gBAAiB,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,0BACxCA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EAAM,oBAAA;AAAA,cACN,SAAS,MAAM;AACb,gBAAA,IAAI,OAAA,EAAS;AACX,kBAAA,MAAA,EAAO;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,CAAQ,WAAW,UAAU,CAAA;AAAA,gBAC/B;AAAA,cACF,CAAA;AAAA,cACA,QAAA,EAAU,OAAA,CAAQ,UAAA,KAAe,CAAA,IAAK,CAAC,OAAA;AAAA,cACvC,KAAA,EAAO,eAAA;AAAA,cACR,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACAA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EAAM,oBAAA;AAAA,cACN,SAAS,MAAM;AACb,gBAAA,IAAI,OAAA,EAAS;AACX,kBAAA,MAAA,EAAO;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,CAAQ,WAAW,MAAM,CAAA;AAAA,gBAC3B;AAAA,cACF,CAAA;AAAA,cACA,QAAA,EAAU,OAAA,CAAQ,UAAA,KAAe,CAAA,IAAK,CAAC,OAAA;AAAA,cACvC,KAAA,EAAO,eAAA;AAAA,cACR,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EACF,CAAA;AAAA,wBACAE,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,kBAAA,EACV,QAAA,EAAA;AAAA,0BAAAF,GAAAA;AAAA,YAACG,WAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,IAAA;AAAA,cACP,UAAA,EAAY,KAAA;AAAA,cACZ,OAAA,EAAS;AAAA,gBACP,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,OAAA,EAAQ;AAAA,gBAChC,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,OAAA,EAAQ;AAAA,gBAChC,EAAE,KAAA,EAAO,0BAAA,EAAa,KAAA,EAAO,UAAA,EAAW;AAAA,gBACxC,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,OAAA;AAAQ,eAClC;AAAA,cACA,KAAA,EAAO,EAAE,KAAA,EAAO,GAAA,EAAI;AAAA,cACpB,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,gBAAA,MAAM,QAAA,GAAW,KAAA;AACjB,gBAAA,OAAA,CAAQ,QAAQ,CAAA;AAChB,gBAAA,OAAA,CAAQ,SAAS,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,eAAe,CAAA;AAAA,cAC7D;AAAA;AAAA,WACF;AAAA,0BACAH,GAAAA;AAAA,YAACQ,aAAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,aAAA;AAAA,cACT,KAAA,EAAO,EAAE,UAAA,EAAY,QAAA,EAAU,MAAM,MAAA,EAAO;AAAA,cAC5C,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,gBAAA,MAAM,iBAAA,GAAoB,MAAM,MAAA,CAAO,OAAA;AACvC,gBAAA,gBAAA,CAAiB,iBAAiB,CAAA;AAClC,gBAAA,OAAA,CAAQ,SAAS,OAAA,EAAS;AAAA,kBACxB,IAAA;AAAA,kBACA,aAAA,EAAe;AAAA,iBAChB,CAAA;AAAA,cACH,CAAA;AAAA,cACD,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EACF,CAAA;AAAA,QACC,OAAA,CAAQ,wBACPR,GAAAA,CAAC,SAAI,KAAA,EAAO,gBAAA,EAAmB,QAAA,EAAA,OAAA,CAAQ,KAAA,EAAM,CAAA,GAC3C;AAAA;AAAA;AAAA,GACN;AAEJ;AAEA,IAAM,kBAAA,GAAoC;AAAA,EACxC,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,kBAAA,GAAoC;AAAA,EACxC,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,QAAA,EAAU,QAAA;AAAA,EACV,GAAA,EAAK,EAAA;AAAA,EACL,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,gBAAA,GAAkC;AAAA,EACtC,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU,EAAA;AAAA,EACV,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,cAAA,GAAgC;AAAA,EACpC,QAAA,EAAU,EAAA;AAAA,EACV,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,eAAA,GAAiC;AAAA,EACrC,KAAA,EAAO,EAAA;AAAA,EACP,QAAA,EAAU,EAAA;AAAA,EACV,IAAA,EAAM,UAAA;AAAA,EACN,MAAA,EAAQ,EAAA;AAAA,EACR,OAAA,EAAS,CAAA;AAAA,EACT,MAAA,EAAQ,mBAAA;AAAA,EACR,YAAA,EAAc,CAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,CAAA;AAAA,EACZ,MAAA,EAAQ;AACV,CAAA;ACtJA,IAAM,WAAA,GAAc;AAAA,EAClB,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,cAAA,EAAK;AAAA,EAChC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,cAAA,EAAK;AAAA,EAC/B,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,cAAA;AAC7B,CAAA;AACA,IAAM,cAAA,GAAiB;AAAA,EACrB,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,oBAAA,EAAM;AAAA,EAClC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC9B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,cAAA,EAAK;AAAA,EAC9B,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,cAAA,EAAK;AAAA,EAC5B,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC7B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,cAAA,EAAK;AAAA,EAC9B,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,0BAAA,EAAO;AAAA,EACrC,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,cAAA,EAAK;AAAA,EACjC,EAAE,KAAA,EAAO,gBAAA,EAAkB,KAAA,EAAO,0BAAA,EAAO;AAAA,EACzC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,oBAAA,EAAM;AAAA,EAC7B,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,oBAAA;AACzB,CAAA;AACA,IAAM,eAAA,GAAkB;AAAA,EACtB,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,0BAAA,EAAO;AAAA,EAChC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,0BAAA,EAAO;AAAA,EAChC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,0BAAA,EAAO;AAAA,EAC/B,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,cAAA;AAC9B,CAAA;AACA,IAAM,cAAA,GAAiB;AAAA,EACrB,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,QAAA,EAAI;AAAA,EAC3B,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,QAAA;AACxB,CAAA;AAGO,SAAS,uBACd,OAAA,EACmB;AACnB,EAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,MAAY;AAAA,IAC9B,KAAK,MAAA,CAAO,GAAA;AAAA,IACZ,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,WAAW,MAAA,CAAO,SAAA;AAAA,IAClB,WAAW,MAAA,CAAO,SAAA;AAAA,IAClB,cAAc,MAAA,CAAO,YAAA;AAAA,IACrB,WAAA,EAAa,OAAO,OAAA,CAAQ,IAAA;AAAA,IAC5B,cAAA,EAAgB,MAAA,CAAO,OAAA,CAAQ,cAAA,GAAiB,KAAA,GAAQ,IAAA;AAAA,IACxD,SAAA,EAAW,OAAO,OAAA,CAAQ,SAAA;AAAA,IAC1B,YAAA,EAAc,OAAO,OAAA,CAAQ,YAAA;AAAA,IAC7B,qBAAA,EAAuB,MAAA,CAAO,OAAA,CAAQ,qBAAA,GAAwB,KAAA,GAAQ;AAAA,GACxE,CAAE,CAAA;AACJ;AAGO,SAAS,yBAAA,CACd,IAAA,EACA,YAAA,EACA,cAAA,EACA;AACA,EAAA,MAAM,WAAW,IAAI,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,MAAM,CAAC,CAAA;AACjD,EAAA,OAAO;AAAA,IACL,UAAA,EAAY,IAAA,CAAK,MAAA,CAAO,CAAC,QAAQ,QAAA,CAAS,GAAA,CAAI,GAAA,CAAI,GAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,KAAQ,IAAI,GAAG,CAAA;AAAA,IAC5E,SAAA,EAAW,IAAA,CACR,MAAA,CAAO,CAAC,GAAA,KAAQ,QAAA,CAAS,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA,IAAK,GAAA,CAAI,SAAA,KAAc,SAAS,CAAA,CACpE,IAAA;AAAA,MACC,CAAC,GAAG,CAAA,KAAA,CACD,CAAA,CAAE,aAAa,MAAA,CAAO,gBAAA,KACtB,CAAA,CAAE,SAAA,IAAa,MAAA,CAAO,gBAAA;AAAA,KAC3B,CACC,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,MACb,KAAK,GAAA,CAAI,GAAA;AAAA,MACT,OAAO,GAAA,CAAI,SAAA;AAAA,MACX,GAAI,IAAI,YAAA,IAAgB,IAAA,GAAO,EAAE,QAAA,EAAU,GAAA,CAAI,YAAA,EAAa,GAAI;AAAC,KACnE,CAAE,CAAA;AAAA,IACJ,WAAW,MAAA,CAAO,WAAA;AAAA,MAChB,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ;AAAA,QAChB,GAAA,CAAI,GAAA;AAAA,QACJ;AAAA,UACE,MAAM,GAAA,CAAI,WAAA;AAAA,UACV,cAAA,EAAgB,IAAI,cAAA,KAAmB,KAAA;AAAA,UACvC,WAAW,GAAA,CAAI,SAAA;AAAA,UACf,cAAc,GAAA,CAAI,YAAA;AAAA,UAClB,qBAAA,EAAuB,IAAI,qBAAA,KAA0B;AAAA;AACvD,OACD;AAAA,KACH;AAAA,IACA;AAAA,GACF;AACF;AAGO,SAAS,8BAAA,CAA+B;AAAA,EAC7C,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,UAAU,KAAA,EAAM;AACtB,EAAA,MAAM,YAAY,OAAA,CAAQ,QAAA,CAAS,MAAM,yBAAyB,CAAA,GAAI,CAAC,CAAA,IAAK,EAAA;AAC5E,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAID,QAAAA;AAAA,IAC9B,SAAA,GAAY,QAAQ,QAAA,CAAS,KAAA,CAAM,GAAG,CAAC,SAAA,CAAU,MAAM,CAAA,GAAI,OAAA,CAAQ;AAAA,GACrE;AACA,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,QAAAA,CAAS,MAAM,sBAAA,CAAuB,OAAA,CAAQ,OAAA,IAAW,EAAE,CAAC,CAAA;AACpF,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,QAAAA;AAAA,IACtC,OAAO,OAAA,CAAQ,OAAA,IAAW,EAAC,EAAG,OAAO,CAAC,MAAA,KAAW,MAAA,CAAO,QAAA,KAAa,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,MAAA,KAAW,OAAO,GAAG;AAAA,GACxG;AACA,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,IAAIA,QAAAA,CAAS,OAAA,CAAQ,kBAAkB,KAAK,CAAA;AACpF,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,OAAA,GAAUU,OAAAA;AAAA,IACd,MAAM;AAAA,MACJ;AAAA,QAAE,GAAA,EAAK,UAAA;AAAA,QAAY,SAAA,EAAW,KAAA;AAAA,QAAO,KAAA,EAAO,8DAAA;AAAA,QAAc,KAAA,EAAO,GAAA;AAAA,QAC/D,QAAQ,CAAC,MAAA,EAAQ,MAAM,KAAA,KAAU,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,QAAG,WAAA,EAAa,QAAA;AAAA,QAAU,KAAA,EAAO;AAAA,OAAS;AAAA,MAC7F,oBAAA;AAAA,MACA,EAAE,KAAK,OAAA,EAAS,SAAA,EAAW,SAAS,KAAA,EAAO,oBAAA,EAAO,OAAO,GAAA,EAAI;AAAA,MAC7D;AAAA,QAAE,GAAA,EAAK,WAAA;AAAA,QAAa,SAAA,EAAW,WAAA;AAAA,QAAa,KAAA,EAAO,0BAAA;AAAA,QAAQ,KAAA,EAAO,GAAA;AAAA,QAChE,QAAA,EAAU,IAAA;AAAA,QAAM,eAAe,EAAE,SAAA,EAAW,UAAU,UAAA,EAAY,CAAA,EAAG,SAAS,WAAA,EAAY;AAAA,QAC1F,MAAA,EAAQ,CAAC,KAAA,KAAU,WAAA,CAAY,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,KAAA,KAAU,KAAK,CAAA,EAAG,KAAA,IAAS;AAAA,OAAK;AAAA,MACzF,GAAI,iBAAiB,CAAC;AAAA,QACpB,GAAA,EAAK,eAAA;AAAA,QAAiB,SAAA,EAAW,aAAA;AAAA,QAAwB,KAAA,EAAO,cAAA;AAAA,QAChE,QAAA,EAAU;AAAA,UACR;AAAA,YAAE,GAAA,EAAK,aAAA;AAAA,YAAe,SAAA,EAAW,aAAA;AAAA,YAAe,KAAA,EAAO,0BAAA;AAAA,YAAQ,KAAA,EAAO,GAAA;AAAA,YACpE,QAAA,EAAU,IAAA;AAAA,YAAM,aAAA,EAAe,EAAE,SAAA,EAAW,QAAA,EAAmB,UAAA,EAAY,GAAG,OAAA,EAAS,cAAA,CAAe,MAAA,CAAO,CAAC,MAAA,KAAW,MAAA,CAAO,UAAU,UAAA,IAAc,OAAA,CAAQ,OAAA,EAAS,IAAA,CAAK,CAAC,MAAA,KAAW,OAAO,OAAA,CAAQ,IAAA,KAAS,UAAU,CAAC,CAAA,EAAE;AAAA,YAC/N,MAAA,EAAQ,CAAC,KAAA,KAAmB,cAAA,CAAe,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,KAAA,KAAU,KAAK,CAAA,EAAG,KAAA,IAAS;AAAA,WAAM;AAAA,UACtG;AAAA,YAAE,GAAA,EAAK,gBAAA;AAAA,YAAkB,SAAA,EAAW,gBAAA;AAAA,YAAkB,KAAA,EAAO,0BAAA;AAAA,YAAQ,KAAA,EAAO,GAAA;AAAA,YAC1E,QAAA,EAAU,IAAA;AAAA,YAAM,eAAe,EAAE,SAAA,EAAW,UAAmB,UAAA,EAAY,CAAA,EAAG,SAAS,cAAA,EAAe;AAAA,YACtG,MAAA,EAAQ,CAAC,KAAA,KAAmB,KAAA,KAAU,QAAQ,QAAA,GAAM;AAAA,WAAI;AAAA,UAC1D;AAAA,YAAE,GAAA,EAAK,WAAA;AAAA,YAAa,SAAA,EAAW,WAAA;AAAA,YAAa,KAAA,EAAO,sCAAA;AAAA,YAAU,KAAA,EAAO,GAAA;AAAA,YAClE,QAAA,EAAU,IAAA;AAAA,YAAM,aAAA,EAAe,EAAE,SAAA,EAAW,QAAA,EAAmB,YAAY,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,EAAA;AAAG,WAAE;AAAA,UAClG;AAAA,YAAE,GAAA,EAAK,cAAA;AAAA,YAAgB,SAAA,EAAW,cAAA;AAAA,YAAgB,KAAA,EAAO,0BAAA;AAAA,YAAQ,KAAA,EAAO,GAAA;AAAA,YACtE,QAAA,EAAU,IAAA;AAAA,YAAM,eAAe,EAAE,SAAA,EAAW,UAAmB,UAAA,EAAY,CAAA,EAAG,SAAS,eAAA,EAAgB;AAAA,YACvG,MAAA,EAAQ,CAAC,KAAA,KAAmB,eAAA,CAAgB,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,KAAA,KAAU,KAAK,CAAA,EAAG,KAAA,IAAS;AAAA,WAAO;AAAA,UACxG;AAAA,YAAE,GAAA,EAAK,uBAAA;AAAA,YAAyB,SAAA,EAAW,uBAAA;AAAA,YAAyB,KAAA,EAAO,gCAAA;AAAA,YAAS,KAAA,EAAO,GAAA;AAAA,YACzF,QAAA,EAAU,IAAA;AAAA,YAAM,eAAe,EAAE,SAAA,EAAW,UAAmB,UAAA,EAAY,CAAA,EAAG,SAAS,cAAA,EAAe;AAAA,YACtG,MAAA,EAAQ,CAAC,KAAA,KAAmB,KAAA,KAAU,QAAQ,QAAA,GAAM;AAAA;AAAI;AAC5D,OACD,IAAI;AAAC,KACR;AAAA,IACA,CAAC,cAAA,EAAgB,OAAA,CAAQ,OAAO;AAAA,GAClC;AACA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,IAAI,CAAC,QAAA,CAAS,IAAA,EAAK,EAAG,OAAO,SAAS,4CAAS,CAAA;AAC/C,IAAA,IAAI,QAAQ,OAAA,IAAW,CAAC,aAAa,MAAA,EAAQ,OAAO,SAAS,4CAAS,CAAA;AACtE,IAAA,OAAA,CAAQ,SAAA;AAAA,MACN,CAAA,EAAG,QAAA,CAAS,IAAA,EAAM,GAAG,SAAS,CAAA,CAAA;AAAA,MAC9B,QAAQ,OAAA,GAAU,yBAAA,CAA0B,IAAA,EAAM,YAAA,EAAc,cAAc,CAAA,GAAI;AAAA,KACpF;AACA,IAAA,OAAA,IAAU;AAAA,EACZ,CAAA;AACA,EAAA,uBACEP,IAAAA;AAAA,IAACD,UAAAA;AAAA,IAAA;AAAA,MAAW,IAAA,EAAI,IAAA;AAAA,MAAC,KAAA,EAAM,0BAAA;AAAA,MAAO,KAAA,EAAO,OAAA,CAAQ,OAAA,GAAU,IAAA,GAAO,GAAA;AAAA,MAC5D,cAAA,EAAgB,KAAA;AAAA,MAAO,IAAA,EAAM,OAAA;AAAA,MAAS,MAAA,EAAO,cAAA;AAAA,MAAK,UAAA,EAAW,cAAA;AAAA,MAC7D,UAAU,MAAM;AAAE,QAAA,OAAA,IAAU;AAAG,QAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,MAAG,CAAA;AAAA,MACnD,QAAA,EAAA;AAAA,wBAAAC,IAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,EAAE,OAAA,EAAS,QAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,CAAA,EAAE,EAAG,QAAA,EAAA;AAAA,UAAA,0BAAA;AAAA,0BAElEA,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,CAAA,EAAE,EAC3D,QAAA,EAAA;AAAA,4BAAAF,GAAAA;AAAA,cAACM,UAAAA;AAAA,cAAA;AAAA,gBAAW,SAAA,EAAS,IAAA;AAAA,gBAAC,KAAA,EAAO,QAAA;AAAA,gBAAU,WAAA,EAAY,4CAAA;AAAA,gBACjD,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,OAAO,MAAA,EAAO;AAAA,gBACxC,QAAA,EAAU,CAAC,KAAA,KAAU;AAAE,kBAAA,WAAA,CAAY,KAAA,CAAM,OAAO,KAAK,CAAA;AAAG,kBAAA,QAAA,CAAS,EAAE,CAAA;AAAA,gBAAG,CAAA;AAAA,gBACtE,YAAA,EAAc;AAAA;AAAA,aAAS;AAAA,4BACzBN,GAAAA,CAAC,MAAA,EAAA,EAAK,YAAA,EAAW,4BAAQ,QAAA,EAAA,SAAA,EAAU;AAAA,WAAA,EACrC;AAAA,SAAA,EACF,CAAA;AAAA,QACC,OAAA,CAAQ,0BAAUE,IAAAA,CAAC,SAAI,KAAA,EAAO,EAAE,SAAA,EAAW,EAAA,EAAG,EAC7C,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,EAAA,EAAI,YAAA,EAAc,CAAA,EAAE,EAC5E,QAAA,EAAA;AAAA,4BAAAF,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,GAAA,IAAO,QAAA,EAAA,gCAAA,EAAK,CAAA;AAAA,4BACvCE,IAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,EAAE,OAAA,EAAS,aAAA,EAAe,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,CAAA,EAAE,EACnE,QAAA,EAAA;AAAA,8BAAAF,GAAAA;AAAA,gBAACQ,aAAAA;AAAA,gBAAA;AAAA,kBAAc,OAAA,EAAS,cAAA;AAAA,kBAAgB,YAAA,EAAW,gCAAA;AAAA,kBACjD,UAAU,CAAC,KAAA,KAAU,iBAAA,CAAkB,KAAA,CAAM,OAAO,OAAO;AAAA;AAAA,eAAG;AAAA,cAAE;AAAA,aAAA,EACpE;AAAA,WAAA,EACF,CAAA;AAAA,0BACAR,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,MAAA,EAAQ,kBAAA,EAAoB,SAAA,EAAW,GAAA,EAAK,QAAA,EAAU,QAAA,EAAS,EAC1E,QAAA,EAAA,WAAA,CAAY;AAAA,YACX,OAAA;AAAA,YACA,OAAA;AAAA,YACA,UAAA,EAAY,IAAA;AAAA,YACZ,MAAA,EAAQ,KAAA;AAAA,YACR,SAAA,EAAW,EAAA;AAAA,YACX,eAAA,EAAiB,EAAA;AAAA,YACjB,OAAA,EAAS,KAAA;AAAA,YACT,WAAA,EAAa,KAAA;AAAA,YACb,UAAA,EAAY,KAAA;AAAA,YACZ,SAAA,EAAW,IAAA;AAAA,YACX,SAAA,EAAW,IAAA;AAAA,YACX,YAAA,EAAc;AAAA,cACZ,IAAA,EAAM,UAAA;AAAA,cACN,eAAA,EAAiB,YAAA;AAAA,cACjB,gBAAA,EAAkB,KAAA;AAAA,cAClB,WAAA,EAAa,EAAA;AAAA,cACb,QAAA,EAAU,CAAC,IAAA,KAAS;AAAE,gBAAA,eAAA,CAAgB,IAAI,CAAA;AAAG,gBAAA,QAAA,CAAS,EAAE,CAAA;AAAA,cAAG;AAAA,aAC7D;AAAA,YACA,OAAA,EAAS;AAAA,cACP,OAAA,EAAS,IAAA;AAAA,cACT,SAAA,EAAW,IAAA;AAAA,cACX,aAAA,EAAe,IAAA;AAAA,cACf,IAAA,EAAM,MAAA;AAAA,cACN,QAAQ,CAAC,EAAE,MAAM,OAAA,EAAS,WAAA,EAAa,QAAO,KAAM;AAClD,gBAAA,IAAI,MAAA,CAAO,OAAA,KAAY,OAAA,IAAW,WAAA,IAAe,IAAA,EAAM;AACvD,gBAAA,MAAM,WAAA,GAAc,IAAI,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAC,GAAA,KAAQ,GAAA,CAAI,GAAG,CAAC,CAAA;AACzD,gBAAA,OAAA,CAAQ,CAAC,OAAA,KAAY;AACnB,kBAAA,MAAM,KAAA,GAAQ,QAAQ,MAAA,CAAO,CAAC,QAAQ,WAAA,CAAY,GAAA,CAAI,GAAA,CAAI,GAAG,CAAC,CAAA;AAC9D,kBAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,WAAW,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,KAAQ,CAAC,WAAA,CAAY,GAAA,CAAI,GAAA,CAAI,GAAG,CAAC,CAAA,CAAE,MAAA;AAC3F,kBAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,MAAA,CAAO,CAAC,GAAA,KAAQ,CAAC,WAAA,CAAY,GAAA,CAAI,GAAA,CAAI,GAAG,CAAC,CAAA;AACnE,kBAAA,SAAA,CAAU,MAAA,CAAO,SAAA,EAAW,CAAA,EAAG,GAAG,KAAK,CAAA;AACvC,kBAAA,OAAO,SAAA;AAAA,gBACT,CAAC,CAAA;AAAA,cACH;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAQ,MAAA;AAAO,WACxC,CAAA,EACH;AAAA,SAAA,EACF,CAAA,GAAS,IAAA;AAAA,QACR,KAAA,mBAAQA,GAAAA,CAAC,KAAA,EAAA,EAAI,MAAK,OAAA,EAAQ,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,SAAA,EAAW,CAAA,EAAE,EAAI,iBAAM,CAAA,GAAS;AAAA;AAAA;AAAA,GACxF;AAEJ;;;AC/OO,SAAS,cAAc,KAAA,EAAgB;AAC5C,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EAAG;AACvD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,MAAM,IAAA,EAAK,CAAE,SAAS,CAAA,EAAG;AACxD,IAAA,MAAM,SAAA,GAAY,OAAO,KAAK,CAAA;AAC9B,IAAA,OAAO,MAAA,CAAO,QAAA,CAAS,SAAS,CAAA,GAAI,SAAA,GAAY,IAAA;AAAA,EAClD;AACA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,cAAc,KAAA,EAAyB;AACrD,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,MAAM,IAAA,EAAK,CAAE,SAAS,CAAA,EAAG;AACxD,IAAA,MAAM,SAAA,GAAY,OAAO,KAAK,CAAA;AAC9B,IAAA,OAAO,MAAA,CAAO,QAAA,CAAS,SAAS,CAAA,GAAI,SAAA,GAAY,MAAA;AAAA,EAClD;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,cAAA,CAAe,KAAA,EAA2B,QAAA,GAAW,CAAA,EAAG;AAC/D,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,MAAA,CAAO,SAAS,KAAK,CAAA,IAAK,KAAA,IAAS,CAAA,GACnE,KAAA,GACA,QAAA;AACN;AAEA,SAAS,yBAAyB,OAAA,EAAiC;AACjE,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,QAAA,IAAY,OAAA,CAAQ,IAAA;AAC/C,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,MAAA,GAAS,GAAG,CAAC,CAAA;AAChD,EAAA,MAAM,WACJ,OAAO,OAAA,CAAQ,MAAM,QAAA,KAAa,QAAA,IAClC,OAAO,QAAA,CAAS,OAAA,CAAQ,KAAA,CAAM,QAAQ,KACtC,OAAA,CAAQ,KAAA,CAAM,WAAW,CAAA,GACrB,OAAA,CAAQ,MAAM,QAAA,GACd,MAAA;AACN,EAAA,MAAM,aAAA,GAAgB,cAAA,CAAe,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA;AAChE,EAAA,MAAM,YAAA,GAAe,cAAA,CAAe,OAAA,CAAQ,KAAA,CAAM,YAAY,CAAA;AAC9D,EAAA,MAAM,cACJ,OAAO,OAAA,CAAQ,MAAM,WAAA,KAAgB,QAAA,IACrC,OAAO,QAAA,CAAS,OAAA,CAAQ,KAAA,CAAM,WAAW,KACzC,OAAA,CAAQ,KAAA,CAAM,cAAc,CAAA,GACxB,OAAA,CAAQ,MAAM,WAAA,GACd,CAAA;AACN,EAAA,OAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,aAAA,EAAe,cAAc,WAAA,EAAY;AACtE;AAMO,SAAS,oBAAoB,OAAA,EAAiC;AACnE,EAAA,MAAM,EAAE,QAAQ,QAAA,EAAU,aAAA,EAAe,cAAc,WAAA,EAAY,GACjE,yBAAyB,OAAO,CAAA;AAElC,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,MAAA;AAAA,IACP,MAAA;AAAA,IACA,SAAA,EAAW,MAAA;AAAA,IACX,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,SAAA,IAAa,QAAQ,KAAA,CAAM,SAAA;AAAA,IAChD,UAAA,EAAY,QAAQ,KAAA,CAAM,UAAA;AAAA,IAC1B,QAAA;AAAA;AAAA,IAEA,CAAC,+BAAyC,GAAG,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA;AAAA,IACtD,CAAC,0BAAoC,GACnC,YAAY,IAAA,GAAO,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,IACvC,CAAC,uCAAiD,GAAG,CAAA,EAAG,aAAa,CAAA,EAAA,CAAA;AAAA,IACrE,CAAC,sCAAgD,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAA;AAAA,IACnE,CAAC,6BAAuC,GAAG,MAAA,CAAO,WAAW,CAAA;AAAA,IAC7D,CAAC,0BAAoC,GAAG,KAAA;AAAA,IACxC,YAAA,EAAc,CAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACb;AACF;AAMO,SAAS,0BAA0B,MAAA,EAOvC;AACD,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,aAAA,EAAe,YAAA,EAAc,aAAY,GACzE,MAAA;AACF,EAAA,MAAM,aAAa,QAAA,IAAY,IAAA;AAC/B,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,MAAA,GAAS,GAAG,CAAC,CAAA;AAChD,EAAA,MAAM,gBAAA,GACJ,OAAO,QAAA,KAAa,QAAA,IAAY,MAAA,CAAO,SAAS,QAAQ,CAAA,IAAK,QAAA,GAAW,CAAA,GACpE,QAAA,GACA,MAAA;AACN,EAAA,MAAM,qBAAA,GAAwB,eAAe,aAAa,CAAA;AAC1D,EAAA,MAAM,oBAAA,GAAuB,eAAe,YAAY,CAAA;AACxD,EAAA,MAAM,mBAAA,GACJ,OAAO,WAAA,KAAgB,QAAA,IACvB,MAAA,CAAO,SAAS,WAAW,CAAA,IAC3B,WAAA,GAAc,CAAA,GACV,WAAA,GACA,CAAA;AAEN,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,WAAY,UAAA,GAAwB,OAAA;AAAA,IAC9C,MAAM,UAAA,CAAW,CAAA;AAAA,IACjB,GAAA,EAAK,WAAW,CAAA,GAAI,CAAA;AAAA,IACpB,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,OAAO,CAAC,CAAA;AAAA,IACnC,MAAA;AAAA,IACA,SAAA,EAAW,MAAA;AAAA,IACX,MAAA,EAAQ,IAAA;AAAA,IACR,SAAA,EAAW,YAAA;AAAA;AAAA,IAEX,CAAC,+BAAyC,GAAG,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA;AAAA,IACtD,CAAC,uCAAiD,GAAG,CAAA,EAAG,qBAAqB,CAAA,EAAA,CAAA;AAAA,IAC7E,CAAC,sCAAgD,GAAG,CAAA,EAAG,oBAAoB,CAAA,EAAA,CAAA;AAAA,IAC3E,CAAC,6BAAuC,GAAG,MAAA,CAAO,mBAAmB,CAAA;AAAA,IACrE,CAAC,0BAAoC,GAAG,KAAA;AAAA,IACxC,YAAA,EAAc,CAAA;AAAA,IACd,GAAI,oBAAoB,IAAA,GACpB;AAAA,MACE,CAAC,0BAAoC,GAAG,CAAA,EAAG,gBAAgB,CAAA,EAAA,CAAA;AAAA,MAC3D,QAAA,EAAU;AAAA,KACZ,GACA;AAAA,GACN;AACF;ACzFO,SAAS,wBAAwB,KAAA,EAErC;AACD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,MAAM,aAAA,GAAgBK,OAA8B,IAAI,CAAA;AACxD,EAAA,MAAM,QAAQ,yBAAA,CAA0B;AAAA,IACtC,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,QAAA,EAAU,QAAQ,KAAA,CAAM,QAAA;AAAA,IACxB,aAAA,EAAe,QAAQ,KAAA,CAAM,aAAA;AAAA,IAC7B,YAAA,EAAc,QAAQ,KAAA,CAAM,YAAA;AAAA,IAC5B,WAAA,EAAa,QAAQ,KAAA,CAAM;AAAA,GAC5B,CAAA;AACD,EAAA,MAAM,cACJ,OAAO,OAAA,CAAQ,MAAM,WAAA,KAAgB,QAAA,IACrC,OAAO,QAAA,CAAS,OAAA,CAAQ,KAAA,CAAM,WAAW,KACzC,OAAA,CAAQ,KAAA,CAAM,cAAc,CAAA,GACxB,OAAA,CAAQ,MAAM,WAAA,GACd,CAAA;AAEN,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,KAAA,GACJ,aAAA,CAAc,OAAA,EAAS,aAAA,CAAgC,OAAO,CAAA;AAChE,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA;AAAA,IACF;AACA,IAAA,yBAAA,CAA0B,KAAA,EAAO,QAAQ,aAAa,CAAA;AAAA,EACxD,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAGZ,EAAA,uBACEL,GAAAA,CAAC,yBAAA,EAAA,EAA0B,KAAA,EAAO,WAAA,EAChC,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAA4B,GAAA,EAAK,aAAA,EAC/B,6BAAmB,OAAA,EAAS,KAAK,CAAA,EAAA,EAD1B,OAAA,CAAQ,SAElB,CAAA,EACF,CAAA;AAEJ;AAEA,SAAS,kBAAA,CACP,SACA,KAAA,EACA;AACA,EAAA,QAAQ,OAAA,CAAQ,MAAA,CAAO,SAAA,IAAa,MAAA;AAAQ,IAC1C,KAAK,aAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IAC3D,KAAK,UAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IACzD,KAAK,QAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,YAAA,EAAA,EAAa,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IACvD,KAAK,aAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IAC3D,KAAK,MAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IACrD,KAAK,SAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,aAAA,EAAA,EAAc,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IACxD,KAAK,OAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IACtD,KAAK,MAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IACrD,KAAK,YAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,eAAA,EAAA,EAAgB,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IAC1D,KAAK,MAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IACrD,KAAK,UAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IACzD,KAAK,gBAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IAC9D,KAAK,WAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,eAAA,EAAA,EAAgB,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IAC1D,KAAK,OAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IACtD,KAAK,QAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,YAAA,EAAA,EAAa,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IACvD,KAAK,eAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,kBAAA,EAAA,EAAmB,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA,IAC7D;AACE,MAAA,uBAAOA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAkB,KAAA,EAAc,CAAA;AAAA;AAEzD;AAEA,SAAS,WAAW,KAAA,EAGjB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAID,SAAS,MAAA,CAAO,OAAA,CAAQ,KAAA,IAAS,EAAE,CAAC,CAAA;AAC9D,EAAA,MAAM,OAAA,GAAUM,OAA8B,IAAI,CAAA;AAClD,EAAA,MAAM,iBAAA,GAAoBA,OAAO,KAAK,CAAA;AAEtC,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,EAAS,aAAA,CAAgC,OAAO,CAAA;AACtE,IAAA,yBAAA,CAA0B,KAAA,EAAO,QAAQ,aAAa,CAAA;AAAA,EACxD,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,MAAA,CAAO,OAAA,CAAQ,KAAA,IAAS,EAAE,CAAC,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,OAAA,EAAS,OACjB,QAAA,kBAAAA,GAAAA;AAAA,IAACM,UAAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,WAAA,EAAa,OAAA,CAAQ,MAAA,CAAO,WAAA,IAAe,EAAA;AAAA,MAC3C,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,QAAA,MAAM,SAAA,GAAY,MAAM,MAAA,CAAO,KAAA;AAC/B,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,OAAA,CAAQ,QAAA,CAAS,EAAE,iBAAA,EAAmB,IAAA,EAAM,CAAA;AAAA,MAC9C,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,aAAa,KAAA,EAGnB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIP,QAAAA;AAAA,IACxB,aAAA,CAAc,QAAQ,KAAK;AAAA,GAC7B;AACA,EAAA,MAAM,OAAA,GAAUM,OAA8B,IAAI,CAAA;AAClD,EAAA,MAAM,iBAAA,GAAoBA,OAAO,KAAK,CAAA;AAEtC,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,EAAS,aAAA,CAAgC,OAAO,CAAA;AACtE,IAAA,yBAAA,CAA0B,KAAA,EAAO,QAAQ,aAAa,CAAA;AAAA,EACxD,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,aAAA,CAAc,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACvC,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,OAAA,EAAS,OACjB,QAAA,kBAAAA,GAAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,GAAA,EAAK,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAA;AAAA,MACrC,GAAA,EAAK,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAA;AAAA,MACrC,IAAA,EAAM,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA;AAAA,MACvC,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,OAAA,CAAQ,QAAA,CAAS,EAAE,iBAAA,EAAmB,IAAA,EAAM,CAAA;AAAA,MAC9C,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,iBAAiB,KAAA,EAGvB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,kBAAA,CAAmB,QAAQ,KAAK;AAAA,GAClC;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,kBAAA,CAAmB,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC5C,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,8BAAA,EAA4B,IAAA,EAAC,OAChC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,GAAA,EAAK,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAA;AAAA,MACrC,GAAA,EAAK,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAA;AAAA,MACrC,IAAA,EAAM,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA;AAAA,MACvC,cAAA,EAAgB,QAAQ,MAAA,CAAO,cAAA;AAAA,MAC/B,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,OAAA,CAAQ,QAAA,CAAS,EAAE,iBAAA,EAAmB,IAAA,EAAM,CAAA;AAAA,MAC9C,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,mBAAA,CAAoB,KAAK,CAAA,EAAG;AAC9B,UAAA;AAAA,QACF;AACA,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,WAAW,KAAA,EAGjB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,QAAQ,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,MAAA,CAAO,QAAQ,KAAK;AAAA,GACnD;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,QAAQ,KAAA,IAAS,IAAA,GAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,KAAA;AAAA,MACX,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAC1B,QAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,MACnB,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,cAAc,KAAA,EAGpB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,QAAQ,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,MAAA,CAAO,QAAQ,KAAK;AAAA,GACnD;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,QAAQ,KAAA,IAAS,IAAA,GAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,KAAA;AAAA,MACX,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAC1B,QAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,MACnB,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,YAAY,KAAA,EAGlB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,QAAQ,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,MAAA,CAAO,QAAQ,KAAK;AAAA,GACnD;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,QAAQ,KAAA,IAAS,IAAA,GAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,KAAA;AAAA,MACX,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAC1B,QAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,MACnB,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,WAAW,KAAA,EAGjB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,QAAQ,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,MAAA,CAAO,QAAQ,KAAK;AAAA,GACnD;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,QAAQ,KAAA,IAAS,IAAA,GAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,KAAA;AAAA,MACX,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAC1B,QAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,MACnB,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAGA,SAAS,gBAAA,CAAiB;AAAA,EACxB,OAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACvB,QAAQ,KAAA,IAAkC;AAAA,GAC7C;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AACtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAU,OAAA,CAAQ,SAAkC,IAAI,CAAA;AAAA,EAC1D,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAClB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAS,IAAA;AAAA,MACT,KAAA;AAAA,MACA,QAAA,EAAU,QAAQ,MAAA,CAAO,QAAA;AAAA,MACzB,QAAA,EAAU,QAAQ,MAAA,CAAO,QAAA;AAAA,MACzB,UAAA,EAAY,QAAQ,MAAA,CAAO,UAAA;AAAA,MAC3B,oBAAA,EAAsB,QAAQ,MAAA,CAAO,oBAAA;AAAA,MACrC,uBAAA,EAAyB,QAAQ,MAAA,CAAO,uBAAA;AAAA,MACxC,UAAA,EAAY,QAAQ,MAAA,CAAO,UAAA;AAAA,MAC3B,WAAA,EAAa,QAAQ,MAAA,CAAO,WAAA;AAAA,MAC5B,KAAA,EAAO,oBAAoB,OAAO,CAAA;AAAA,MAClC,QAAA,EAAU,CAAC,IAAA,EAAM,MAAA,EAAQ,IAAA,KAAS;AAChC,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AACrB,QAAA,IAAI,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,OAAA,KAAY,OAAA,EAAS;AAC7C,UAAA,iBAAA,CAAkB,OAAA,GAAU,IAAA;AAC5B,UAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,QACnB;AAAA,MACF,CAAA;AAAA,MACA,QAAQ,CAAC,KAAA,KAAU,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACrE,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,MAAM,GAAA,KAAQ,KAAA;AAChB,UAAA,yBAAA,CAA0B,KAAA,EAAO,SAAS,iBAAiB,CAAA;AAC7D,QAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,UAAA,iBAAA,CAAkB,OAAA,GAAU,IAAA;AAC5B,UAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,QACtC;AAAA,MACF;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AAGA,SAAS,cAAA,CAAe;AAAA,EACtB,OAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA,CAExB,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,GAAI,OAAA,CAAQ,KAAA,GAAQ,EAAE,CAAA;AACnD,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AACtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,KAAA,CAAM,QAAQ,OAAA,CAAQ,KAAK,IAAI,OAAA,CAAQ,KAAA,GAAQ,EAAE,CAAA;AAAA,EAC5D,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAClB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,OAAA,EAAS,QAAQ,MAAA,CAAO,OAAA;AAAA,MACxB,SAAA,EAAS,IAAA;AAAA,MACT,WAAA,EAAa,QAAQ,MAAA,CAAO,WAAA;AAAA,MAC5B,UAAA,EAAY,QAAQ,MAAA,CAAO,UAAA;AAAA,MAC3B,UAAA,EAAY,QAAQ,MAAA,CAAO,UAAA;AAAA,MAC3B,cAAA,EAAgB,QAAQ,MAAA,CAAO,cAAA;AAAA,MAC/B,QAAA,EAAU,QAAQ,MAAA,CAAO,QAAA;AAAA,MACzB,mBAAA,EAAqB,QAAQ,MAAA,CAAO,mBAAA;AAAA,MACpC,aAAA,EAAe,QAAQ,MAAA,CAAO,aAAA;AAAA,MAC9B,aAAA,EAAe,QAAQ,MAAA,CAAO,aAAA;AAAA,MAC9B,KAAA,EAAO,oBAAoB,OAAO,CAAA;AAAA,MAClC,QAAA,EAAU,CAAC,IAAA,EAAM,QAAA,EAAU,IAAA,KAAS;AAClC,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AAErB,QAAA,IAAI,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,OAAA,KAAY,OAAA,EAAS;AAC7C,UAAA,iBAAA,CAAkB,OAAA,GAAU,IAAA;AAC5B,UAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,QACnB;AAAA,MACF,CAAA;AAAA,MACA,QAAQ,CAAC,KAAA,KAAU,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACrE,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,MAAM,GAAA,KAAQ,KAAA;AAChB,UAAA,yBAAA,CAA0B,KAAA,EAAO,SAAS,iBAAiB,CAAA;AAC7D,QAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,UAAA,iBAAA,CAAkB,OAAA,GAAU,IAAA;AAC5B,UAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,QACtC;AAAA,MACF;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AAEA,SAAS,aAAa,KAAA,EAGnB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,MAAA,CAAO,OAAA,IAAW,EAAC;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,QAAQ,KAAA,IAAS,IAAA,GAAO,MAAA,GAAY,MAAA,CAAO,QAAQ,KAAK;AAAA,GAC1D;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,QAAQ,KAAA,IAAS,IAAA,GAAO,SAAY,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACpE,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAACG,WAAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,KAAA;AAAA,MACX,UAAA,EAAY,QAAQ,MAAA,CAAO,UAAA;AAAA,MAC3B,YAAA,EAAc,QAAQ,MAAA,CAAO,YAAA;AAAA,MAC7B,OAAA;AAAA,MACA,QAAA,EAAU,CAAC,SAAA,EAAW,IAAA,KAAS;AAC7B,QAAA,MAAM,aAAA,GAAgB,OAAO,SAAS,CAAA;AACtC,QAAA,QAAA,CAAS,aAAa,CAAA;AACtB,QAAA,OAAA,CAAQ,QAAA;AAAA,UACN,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,OAAO,KAAK,CAAA,KAAM,aAAa,CAAA,EAC3D,KAAA,IAAS;AAAA,SACf;AACA,QAAA,IAAI,IAAA,CAAK,YAAY,OAAA,EAAS;AAC5B,UAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,QACnB;AAAA,MACF,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,mBAAmB,KAAA,EAGzB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIJ,QAAAA;AAAA,IACxB,QAAQ,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,MAAA,CAAO,QAAQ,KAAK;AAAA,GACnD;AACA,EAAA,MAAM,CAAC,SAAS,UAAU,CAAA,GAAIA,SAAS,OAAA,CAAQ,MAAA,CAAO,OAAA,IAAW,EAAE,CAAA;AACnE,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,QAAQ,KAAA,IAAS,IAAA,GAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,KAAA;AAAA,MACX,OAAA;AAAA,MACA,WAAA,EAAa,OAAA,CAAQ,MAAA,CAAO,WAAA,IAAe,EAAA;AAAA,MAC3C,QAAA,EAAU,CAAC,SAAA,EAAW,IAAA,KAAS;AAC7B,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAC1B,QAAA,IAAI,IAAA,CAAK,YAAY,OAAA,EAAS;AAC5B,UAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,QACnB;AAAA,MACF,CAAA;AAAA,MACA,YAAA,EAAc,OAAO,KAAA,KAAU;AAC7B,QAAA,MAAM,WAAA,GAAc,MAAM,OAAA,CAAQ,MAAA,CAAO,eAAe,KAAK,CAAA;AAC7D,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,UAAA,CAAW,WAAW,CAAA;AAAA,QACxB;AACA,QAAA,OAAO,WAAA;AAAA,MACT,CAAA;AAAA,MACA,QAAQ,MAAM;AACZ,QAAA,IAAI,CAAC,iBAAA,CAAkB,OAAA,EAAS,OAAA,CAAQ,QAAA,EAAS;AACjD,QAAA,iBAAA,CAAkB,OAAA,GAAU,KAAA;AAAA,MAC9B,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,YAAY,KAAA,EAGlB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,QAAQ,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,MAAA,CAAO,QAAQ,KAAK;AAAA,GACnD;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,QAAQ,KAAA,IAAS,IAAA,GAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAACU,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,KAAA;AAAA,MACX,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,gBAAgB,KAAA,EAGtB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,MAAA,CAAO,cAAA,IAAkB,KAAA;AACnD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIX,QAAAA;AAAA,IACxB,YAAA,CAAa,QAAQ,KAAK;AAAA,GAC5B;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,8BAAA,EAA4B,IAAA,EAAC,OAChC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,KAAA;AAAA,MACX,cAAA,EAAgB,SAAA;AAAA,MAChB,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,mBAAA,CAAoB,KAAK,CAAA,EAAG;AAC9B,UAAA;AAAA,QACF;AACA,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,WAAW,KAAA,EAGjB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,QAAQ,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,MAAA,CAAO,QAAQ,KAAK;AAAA,GACnD;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,QAAQ,KAAA,IAAS,IAAA,GAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,KAAA;AAAA,MACX,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,eAAe,KAAA,EAGrB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,QAAQ,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,MAAA,CAAO,QAAQ,KAAK;AAAA,GACnD;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,QAAQ,KAAA,IAAS,IAAA,GAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EACH,QAAA,kBAAAA,GAAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,KAAA;AAAA,MACX,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAC1B,QAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,MACnB,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,oBAAoB,KAAA,EAG1B;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,MAAA,CAAO,cAAA,IAAkB,KAAA;AACnD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,YAAA,CAAa,QAAQ,KAAK;AAAA,GAC5B;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,8BAAA,EAA4B,IAAA,EAAC,OAChC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,wBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,KAAA;AAAA,MACX,cAAA,EAAgB,SAAA;AAAA,MAChB,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,mBAAA,CAAoB,KAAK,CAAA,EAAG;AAC9B,UAAA;AAAA,QACF;AACA,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,gBAAgB,KAAA,EAGtB;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,MAAA,CAAO,cAAA,IAAkB,KAAA;AACnD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAID,QAAAA;AAAA,IACxB,YAAA,CAAa,QAAQ,KAAK;AAAA,GAC5B;AACA,EAAA,MAAM,iBAAA,GAAoBM,OAAO,KAAK,CAAA;AAEtC,EAAAE,UAAU,MAAM;AACd,IAAA,QAAA,CAAS,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,8BAAA,EAA4B,IAAA,EAAC,OAChC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,KAAA;AAAA,MACX,cAAA,EAAgB,SAAA;AAAA,MAChB,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,gBAAA,CAAiB,KAAA,EAAO,mBAAmB,OAAO,CAAA;AAAA,MACpD,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,mBAAA,CAAoB,KAAK,CAAA,EAAG;AAC9B,UAAA;AAAA,QACF;AACA,QAAA,IAAI,yBAAA,CAA0B,KAAA,EAAO,OAAA,EAAS,iBAAiB,CAAA,EAAG;AAChE,UAAA;AAAA,QACF;AACA,QAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,KAAA,EAAO,oBAAoB,OAAO;AAAA;AAAA,GACpC,EACF,CAAA;AAEJ;AAEA,SAAS,yBAAA,CACP,KAAA,EACA,OAAA,EACA,iBAAA,EACA;AACA,EAAA,MAAM,SAAA,GAAY,2BAA2B,KAAK,CAAA;AAClD,EAAA,IAAI,CAAC,SAAA,IAAa,CAAC,OAAA,CAAQ,UAAA,EAAY;AACrC,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,KAAA,CAAM,cAAA,EAAe;AACrB,EAAA,iBAAA,CAAkB,OAAA,GAAU,IAAA;AAC5B,EAAA,OAAA,CAAQ,WAAW,SAAS,CAAA;AAC5B,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,oBAAoB,KAAA,EAAwC;AACnE,EAAA,IAAI,KAAA,CAAM,QAAQ,KAAA,EAAO;AACvB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAA,GAAO,MAAM,aAAA,CAAc,OAAA;AAAA,IAC/B;AAAA,GACF;AACA,EAAA,MAAM,SAAS,KAAA,CAAM,IAAA;AAAA,IACnB,IAAA,EAAM,gBAAA,CAAmC,OAAO,CAAA,IAAK;AAAC,GACxD;AACA,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA;AACvD,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAA,GAAW,YAAA,GAAe,IAAI,YAAA,GAAe,CAAA;AACrE,EAAA,MAAM,SAAA,GAAY,OAAO,SAAS,CAAA;AAClC,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,KAAA,CAAM,cAAA,EAAe;AACrB,EAAA,yBAAA,CAA0B,SAAS,CAAA;AACnC,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,yBAAA,CAA0B,KAAA,EAAiC,aAAA,GAAgB,IAAA,EAAM;AACxF,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA;AAAA,EACF;AACA,EAAA,KAAA,CAAM,KAAA,EAAM;AACZ,EAAA,IAAI;AACF,IAAA,IAAI,aAAA,QAAqB,MAAA,EAAO;AAAA,eACrB,iBAAA,CAAkB,KAAA,CAAM,MAAM,MAAA,EAAQ,KAAA,CAAM,MAAM,MAAM,CAAA;AAAA,EACrE,CAAA,CAAA,MAAQ;AAAA,EAER;AACF;AAEA,SAAS,qBAAA,CACP,OACA,OAAA,EACA;AACA,EAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,IAAA;AAAA,EACF;AAEA,EAAA,KAAA,CAAM,cAAA,EAAe;AACrB,EAAA,OAAA,CAAQ,QAAA,EAAS;AACnB;AAEA,SAAS,aAAa,KAAA,EAAkC;AACtD,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,IAAA,OAAO,CAAC,IAAI,EAAE,CAAA;AAAA,EAChB;AAEA,EAAA,OAAO,CAAC,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,IAAK,EAAE,CAAA,EAAG,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,IAAK,EAAE,CAAC,CAAA;AACxD;AAEA,SAAS,mBAAmB,KAAA,EAAgD;AAC1E,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,IAAA,OAAO,CAAC,MAAM,IAAI,CAAA;AAAA,EACpB;AACA,EAAA,OAAO,CAAC,aAAA,CAAc,KAAA,CAAM,CAAC,CAAC,GAAG,aAAA,CAAc,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAC1D;AAEA,SAAS,gBAAA,CACP,MAAA,EACA,iBAAA,EACA,OAAA,EACA;AACA,EAAA,IAAI,kBAAkB,OAAA,EAAS;AAC7B,IAAA,iBAAA,CAAkB,OAAA,GAAU,KAAA;AAC5B,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,QAAA,EAAS;AACnB;AAEA,SAAS,2BACP,KAAA,EACyC;AACzC,EAAA,IAAI,KAAA,CAAM,QAAQ,SAAA,EAAW;AAC3B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,EAAa;AAC7B,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA,CAAM,QAAQ,KAAA,EAAO;AACvB,IAAA,OAAO,KAAA,CAAM,WAAW,MAAA,GAAS,MAAA;AAAA,EACnC;AAEA,EAAA,OAAO,IAAA;AACT;ACh+BO,SAAS,yBAAyB,KAAA,EAEtC;AACD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AAEpB,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,YAAA,GAA8B;AAAA,IAClC,QAAA,EAAU,GAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAACW,UAAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAI,IAAA;AAAA,MACJ,YAAY,OAAA,CAAQ,UAAA;AAAA,MACpB,MAAA,EAAQ,CAAA;AAAA,MACR,QAAA,EAAU,GAAA;AAAA,MACV,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,QAAA,IAAI,CAAC,IAAA,EAAM;AACT,UAAA,OAAA,CAAQ,OAAA,EAAQ;AAAA,QAClB;AAAA,MACF,CAAA;AAAA,MACA,YAAA;AAAA,MAEA,QAAA,kBAAAT,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAF,GAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,QAAQ,YAAA,KAAiB,MAAA;AAAA,YACjC,OAAA,EAAS,MAAM,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA;AAAA,YACvC,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBACAA,GAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,QAAQ,YAAA,KAAiB,OAAA;AAAA,YACjC,OAAA,EAAS,MAAM,OAAA,CAAQ,QAAA,CAAS,OAAO,CAAA;AAAA,YACxC,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBACAA,IAAC,WAAA,EAAA,EAAY,OAAA,EAAS,MAAM,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,EAAG,QAAA,EAAA,0BAAA,EAAI;AAAA,OAAA,EAC5D;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,YAAY,KAAA,EAIlB;AACD,EAAA,MAAM,EAAE,MAAA,GAAS,KAAA,EAAO,OAAA,EAAS,UAAS,GAAI,KAAA;AAC9C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAID,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,kBAAkB,MAAA,GACpB,OAAA,GACE,SAAA,GACA,SAAA,GACF,UACE,SAAA,GACA,aAAA;AAEN,EAAA,uBACEC,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,OAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,UAAA,CAAW,IAAI,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB,CAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,OAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,YAAA,EAAc,CAAA;AAAA,QACd,MAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAc,CAAA;AAAA,QACd,UAAA,EAAY,eAAA;AAAA,QACZ,KAAA,EAAO,SAAS,SAAA,GAAY,SAAA;AAAA,QAC5B,SAAA,EAAW,MAAA;AAAA,QACX,OAAA,EAAS,QAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACV;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;ACrFO,SAAS,0BAA0B,KAAA,EAEvC;AACD,EAAA,uBACEA,GAAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,SAAS,KAAA,CAAM;AAAA;AAAA,GACjB;AAEJ;;;ACHO,SAAS,sCACd,OAAA,EACgC;AAChC,EAAA,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,OAAA,IAAW,EAAA,EAAI;AAChD,IAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,EAAA,EAAI,YAAY,CAAA,EAAE;AAAA,EACpD;AACA,EAAA,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,OAAA,IAAW,EAAA,EAAI;AAChD,IAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACrD;AACA,EAAA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,EAAA,EAAI,YAAY,EAAA,EAAG;AACtD;AAKO,SAAS,8BAAA,CACd,aAAA,EACA,gBAAA,GAAmB,qCAAA,GAAwC,MAAA,EAC5C;AACf,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,UAAA;AAAA,IACV,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,CAAA;AAAA,IACV,KAAA,EAAO,MAAA;AAAA,IACP,SAAA,EAAW,CAAA;AAAA,IACX,SAAA,EAAW,YAAA;AAAA,IACX,aAAA,EAAe,gBAAgB,gBAAA,GAAmB;AAAA,GACpD;AACF;ACjCO,SAAS,yBAAyB,KAAA,EAGtC;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,KAAA;AAE5B,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,MAAA,GAAS,sCAAsC,OAAO,CAAA;AAE5D,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,QAAA,EAAU,UAAA;AAAA,QACV,KAAA,EAAO,CAAA;AAAA,QACP,MAAA,EAAQ,CAAA;AAAA,QACR,OAAA,EAAS,MAAA;AAAA,QACT,cAAA,EAAgB,UAAA;AAAA,QAChB,YAAY,MAAA,CAAO,UAAA;AAAA,QACnB,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAA,EAAW;AAAA,OACb;AAAA,MAEA,QAAA,kBAAAA,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,OAAO,MAAA,CAAO,KAAA;AAAA,UACd,UAAU,MAAA,CAAO,QAAA;AAAA,UACjB,iBAAiB,MAAA,CAAO,eAAA;AAAA,UACxB,UAAU,MAAA,CAAO,QAAA;AAAA,UACjB,iBAAiB,MAAA,CAAO,eAAA;AAAA,UACxB,iBAAiB,MAAA,CAAO,eAAA;AAAA,UACxB,eAAe,MAAA,CAAO,aAAA;AAAA,UACtB,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,QAAA,EAAU,CAAC,IAAA,EAAM,QAAA,KAAa;AAC5B,YAAA,MAAA,CAAO,QAAA,GAAW,MAAM,QAAQ,CAAA;AAAA,UAClC,CAAA;AAAA,UACA,gBAAA,EAAkB,CAAC,IAAA,EAAM,QAAA,KAAa;AACpC,YAAA,MAAA,CAAO,gBAAA,GAAmB,MAAM,QAAQ,CAAA;AAAA,UAC1C;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;ACjDO,SAAS,4BAA4B,KAAA,EAGzC;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAQ,GAAI,KAAA;AAC7B,EAAA,MAAM,aAAA,GAAgBK,OAAO,KAAK,CAAA;AAElC,EAAAE,UAAU,MAAM;AACd,IAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AAAA,EAC1B,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEP,GAAAA;AAAA,IAACY,eAAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAI,IAAA;AAAA,MACJ,OAAO,OAAA,CAAQ,KAAA;AAAA,MACf,aAAa,OAAA,CAAQ,WAAA;AAAA,MACrB,QAAQ,OAAA,CAAQ,MAAA;AAAA,MAChB,YAAY,OAAA,CAAQ,UAAA;AAAA,MACpB,SAAA,EAAU,SAAA;AAAA,MACV,WAAW,MAAM;AACf,QAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AACxB,QAAA,IAAI;AACF,UAAA,OAAA,CAAQ,SAAA,EAAU;AAAA,QACpB,CAAA,SAAE;AACA,UAAA,OAAA,EAAQ;AAAA,QACV;AAAA,MACF,CAAA;AAAA,MACA,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,QAAA,IAAI,IAAA,EAAM;AACR,UAAA;AAAA,QACF;AACA,QAAA,IAAI,cAAc,OAAA,EAAS;AACzB,UAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,UAAA;AAAA,QACF;AACA,QAAA,OAAA,CAAQ,QAAA,EAAS;AACjB,QAAA,OAAA,EAAQ;AAAA,MACV,CAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACL,QAAA,EAAU,OAAA;AAAA,QACV,IAAA,EAAM,QAAQ,UAAA,CAAW,CAAA;AAAA,QACzB,GAAA,EAAK,QAAQ,UAAA,CAAW,CAAA;AAAA,QACxB,OAAO,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAC,CAAA;AAAA,QAC3C,QAAQ,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,UAAA,CAAW,QAAQ,CAAC,CAAA;AAAA,QAC7C,aAAA,EAAe;AAAA,OACjB;AAAA,MAEA,QAAA,kBAAAZ,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO;AAAA;AAAA,GAC3B;AAEJ;ACpDO,SAAS,sBAAsB,KAAA,EAEnC;AACD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,MAAM,UAAA,GAAaK,OAAuB,IAAI,CAAA;AAC9C,EAAAQ,gBAAgB,MAAM;AACpB,IAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAC3B,IAAA,IAAI,CAAC,OAAA,IAAW,CAAC,OAAA,IAAW,OAAO,WAAW,WAAA,EAAa;AAC3D,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,qBAAA,EAAsB,CAAE,KAAA;AAC9C,IAAA,MAAM,gBAAgB,MAAA,CAAO,UAAA;AAC7B,IAAA,OAAA,CAAQ,MAAM,IAAA,GAAO,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,CAAA,GAAI,QAAQ,CAAA,EAAG,aAAA,GAAgB,KAAA,GAAQ,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAAA,EACjG,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACZ,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAA,GACJ,OAAO,OAAA,CAAQ,WAAA,KAAgB,YAC/B,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ,WAAW,CAAA,IACnC,OAAA,CAAQ,WAAA,GAAc,CAAA,GAClB,QAAQ,WAAA,GACR,CAAA;AACN,EAAA,MAAM,WAAW,EAAA,GAAK,IAAA;AACtB,EAAA,MAAM,eAAe,CAAA,GAAI,IAAA;AACzB,EAAA,MAAM,gBAAgB,EAAA,GAAK,IAAA;AAC3B,EAAA,MAAM,eAAe,CAAA,GAAI,IAAA;AACzB,EAAA,MAAM,WAAW,GAAA,GAAM,IAAA;AAEvB,EAAA,MAAM,KAAA,GAAuB;AAAA,IAC3B,QAAA,EAAU,OAAA;AAAA,IACV,MAAM,OAAA,CAAQ,CAAA;AAAA,IACd,KAAK,OAAA,CAAQ,CAAA;AAAA,IACb,UACE,OAAA,CAAQ,OAAA,KAAY,QAAA,GAChB,oBAAA,GACA,OAAO,QAAQ,CAAA,uBAAA,CAAA;AAAA,IACrB,OAAA,EAAS,CAAA,EAAG,YAAY,CAAA,GAAA,EAAM,aAAa,CAAA,EAAA,CAAA;AAAA,IAC3C,YAAA;AAAA,IACA,UAAA,EACE,OAAA,CAAQ,OAAA,KAAY,OAAA,GAAU,SAAA,GAAY,wBAAA;AAAA,IAC5C,KAAA,EAAO,OAAA,CAAQ,OAAA,KAAY,OAAA,GAAU,SAAA,GAAY,MAAA;AAAA,IACjD,QAAA;AAAA,IACA,UAAA,EAAY,GAAA;AAAA,IACZ,SAAA,EACE,OAAA,CAAQ,OAAA,KAAY,OAAA,GAChB,qCAAA,GACA,oCAAA;AAAA,IACN,MAAA,EACE,OAAA,CAAQ,OAAA,KAAY,OAAA,GAAU,kCAAA,GAAqC,MAAA;AAAA,IACrE,aAAA,EAAe,MAAA;AAAA,IACf,MAAA,EAAQ,IAAA;AAAA,IACR,UAAA,EAAY,OAAA,CAAQ,OAAA,KAAY,QAAA,GAAW,QAAA,GAAW,UAAA;AAAA,IACtD,SAAA,EAAW,YAAA;AAAA,IACX,QAAA,EAAU,QAAA;AAAA,IACV,YAAA,EAAc,OAAA,CAAQ,OAAA,KAAY,QAAA,GAAW,UAAA,GAAa;AAAA,GAC5D;AAEA,EAAA,uBACEb,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAK,UAAA,EAAY,KAAA,EACnB,kBAAQ,OAAA,EACX,CAAA;AAEJ;AClEA,SAAS,YAAY,KAAA,EAAmD;AACtE,EAAA,MAAM,EAAE,IAAA,EAAM,GAAG,QAAA,EAAS,GAAI,KAAA;AAC9B,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,eAAA;AAAA,MACR,KAAA,EAAM,KAAA;AAAA,MACN,MAAA,EAAO,KAAA;AAAA,MACP,IAAA,EAAK,cAAA;AAAA,MACL,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAU,OAAA;AAAA,MACT,GAAG,QAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,IAAA,EAAM;AAAA;AAAA,GACjB;AAEJ;AAEO,SAAS,kBAAA,GAAqB;AACnC,EAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAK,6xBAAA,EAA8xB,CAAA;AACzzB;AAEO,SAAS,sBAAA,GAAyB;AACvC,EAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAK,0xBAAA,EAA2xB,CAAA;AACtzB;AAEO,SAAS,cAAA,GAAiB;AAC/B,EAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAK,krBAAA,EAAmrB,CAAA;AAC9sB;AAEO,SAAS,cAAA,GAAiB;AAC/B,EAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAK,8XAAA,EAA+X,CAAA;AAC1Z;AAEO,SAAS,oBAAA,GAAuB;AACrC,EAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAK,2YAAA,EAA4Y,CAAA;AACva;AAEO,SAAS,eAAA,GAAkB;AAChC,EAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAK,ixDAAA,EAAkxD,CAAA;AAC7yD;AAEO,SAAS,cAAA,GAAiB;AAC/B,EAAA,uBACEA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAK,8PAAA,EAA+P,CAAA;AAErR;;;AC9CO,SAAS,iCAAiC,IAAA,EAA0B;AACzE,EAAA,MAAM,oBAAoB,QAAA,CAAS,iBAAA;AACnC,EAAA,OAAO,iBAAA,YAA6B,eAClC,IAAA,IACA,iBAAA,CAAkB,SAAS,IAAI,CAAA,GAC7B,oBACA,QAAA,CAAS,IAAA;AACf;ACSO,SAAS,aAAyC,KAAA,EAStD;AACD,EAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAI,KAAA;AACjC,EAAA,MAAM,OAAA,GAAUK,OAA8B,IAAI,CAAA;AAClD,EAAA,MAAM,OAAA,GAAUA,OAQN,IAAI,CAAA;AACd,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIN,SAIxB,IAAI,CAAA;AAEd,EAAAQ,SAAAA;AAAA,IACE,MAAM,MAAM;AACV,MAAA,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,0BAA0B,CAAA;AACzD,MAAA,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,cAAA,CAAe,aAAa,CAAA;AAAA,IAClD,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,SAAA,EAAW;AAChB,IAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAwB;AAC1C,MAAA,MAAM,UAAU,OAAA,CAAQ,OAAA;AACxB,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,MAAM,SAAS,0BAAA,CAA2B;AAAA,QACxC,KAAA;AAAA,QACA,SAAA,EAAW,QAAQ,MAAA,CAAO,SAAA;AAAA,QAC1B,SAAS,OAAA,CAAQ,OAAA;AAAA,QACjB,gBAAgB,KAAA,CAAM,OAAA,GAAU,OAAA,CAAQ,OAAA,GAAU,QAAQ,MAAA,GAAS;AAAA,OACpE,CAAA;AACD,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,OAAA,CAAQ,MAAA,GAAS,MAAA;AAAA,MACnB;AACA,MAAA,YAAA,CAAa;AAAA,QACX,SAAA,EAAW,QAAQ,MAAA,CAAO,GAAA;AAAA,QAC1B,SAAA,EAAW,QAAQ,MAAA,CAAO,GAAA;AAAA,QAC1B,UAAU,KAAA,CAAM;AAAA,OACjB,CAAA;AAAA,IACH,CAAA;AACA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,MAAM,UAAU,OAAA,CAAQ,OAAA;AACxB,MAAA,IAAI,WAAW,OAAA,CAAQ,MAAA,CAAO,GAAA,KAAQ,OAAA,CAAQ,OAAO,GAAA,EAAK;AACxD,QAAA,MAAM,WAAW,KAAA,CAAM,MAAA;AAAA,UACrB,CAAC,IAAA,KAAS,IAAA,CAAK,SAAA,KAAc,QAAQ,MAAA,CAAO;AAAA,SAC9C;AACA,QAAA,MAAM,WAAA,GAAc,wBAAA;AAAA,UAClB,QAAA,CAAS,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,GAAG,CAAA;AAAA,UAC/B,QAAQ,MAAA,CAAO,GAAA;AAAA,UACf,QAAQ,MAAA,CAAO;AAAA,SACjB;AACA,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,SAAA,EAAW,WAAW,CAAA;AAAA,QACrD;AAAA,MACF;AACA,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,0BAA0B,CAAA;AACzD,MAAA,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,cAAA,CAAe,aAAa,CAAA;AAAA,IAClD,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,eAAe,UAAU,CAAA;AACjD,IAAA,MAAA,CAAO,iBAAiB,WAAA,EAAa,SAAA,EAAW,EAAE,IAAA,EAAM,MAAM,CAAA;AAC9D,IAAA,MAAA,CAAO,iBAAiB,eAAA,EAAiB,SAAA,EAAW,EAAE,IAAA,EAAM,MAAM,CAAA;AAClE,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,eAAe,UAAU,CAAA;AACpD,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,SAAS,CAAA;AACjD,MAAA,MAAA,CAAO,mBAAA,CAAoB,iBAAiB,SAAS,CAAA;AAAA,IACvD,CAAA;AAAA,EACF,GAAG,CAAC,SAAA,IAAa,IAAA,EAAM,KAAA,EAAO,aAAa,CAAC,CAAA;AAE5C,EAAA,MAAM,WAAA,GAAc,SAAA,GAChB,KAAA,CAAM,SAAA,CAAU,CAAC,SAAS,IAAA,CAAK,GAAA,KAAQ,SAAA,CAAU,SAAS,CAAA,GAC1D,EAAA;AACJ,EAAA,MAAM,WAAA,GAAc,SAAA,GAChB,KAAA,CAAM,SAAA,CAAU,CAAC,SAAS,IAAA,CAAK,GAAA,KAAQ,SAAA,CAAU,SAAS,CAAA,GAC1D,EAAA;AAEJ,EAAA,uBACEL,IAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,OAAA,EACP,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC1B,MAAA,MAAM,KAAA,GAAQ,wBAAA;AAAA,QACZ,KAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAA,CAAQ,SAAS,MAAA,IAAU;AAAA,OAC7B;AACA,MAAA,uBACEF,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,qBAAmB,IAAA,CAAK,GAAA;AAAA,UACxB,SAAA,EAAW,SAAA,EAAW,SAAA,KAAc,IAAA,CAAK,MAAM,UAAA,GAAa,EAAA;AAAA,UAC5D,KAAA;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,WAAW,IAAA,EAAM;AAAA,YACtB,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,cAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACxB,cAAA,MAAM,GAAA,GAAM,MAAM,aAAA,CAAc,OAAA;AAAA,gBAC9B;AAAA,eACF;AACA,cAAA,IAAI,CAAC,GAAA,EAAK;AACV,cAAA,MAAM,IAAA,GAAO,IAAI,qBAAA,EAAsB;AACvC,cAAA,OAAA,CAAQ,OAAA,GAAU;AAAA,gBAChB,MAAA,EAAQ,IAAA;AAAA,gBACR,MAAA,EAAQ,IAAA;AAAA,gBACR,OAAA,EAAS,0BAAA,CAA2B,OAAA,CAAQ,OAAO,CAAA;AAAA,gBACnD,OAAA,EAAS,KAAA,CAAM,OAAA,GAAU,IAAA,CAAK,GAAA;AAAA,gBAC9B,OAAO,IAAA,CAAK,KAAA;AAAA,gBACZ,MAAM,IAAA,CAAK,IAAA;AAAA,gBACX,QAAQ,IAAA,CAAK;AAAA,eACf;AACA,cAAA,YAAA,CAAa;AAAA,gBACX,WAAW,IAAA,CAAK,GAAA;AAAA,gBAChB,WAAW,IAAA,CAAK,GAAA;AAAA,gBAChB,UAAU,KAAA,CAAM;AAAA,eACjB,CAAA;AACD,cAAA,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,0BAA0B,CAAA;AACtD,cAAA,QAAA,CAAS,IAAA,CAAK,MAAM,UAAA,GAAa,MAAA;AACjC,cAAA,KAAA,CAAM,cAAA,EAAe;AAAA,YACvB;AAAA,WACD;AAAA,SAAA;AAAA,QA/BI,IAAA,CAAK;AAAA,OAgCZ;AAAA,IAEJ,CAAC,CAAA;AAAA,IACA,SAAA,IAAa,QAAQ,OAAA,GAClB,YAAA;AAAA,sBACEA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,+BAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACL,IAAA,EAAM,QAAQ,OAAA,CAAQ,IAAA;AAAA,YACtB,GAAA,EAAK,SAAA,CAAU,QAAA,GAAW,OAAA,CAAQ,OAAA,CAAQ,OAAA;AAAA,YAC1C,KAAA,EAAO,QAAQ,OAAA,CAAQ,KAAA;AAAA,YACvB,MAAA,EAAQ,QAAQ,OAAA,CAAQ;AAAA,WAC1B;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,OAAA,CAAQ,MAAA,EAAQ;AAAA,YACxC,aAAA,EAAe,CAAC,KAAA,KAAU,KAAA,CAAM,cAAA;AAAe,WAChD;AAAA;AAAA,OACH;AAAA,MACA,gCAAA,CAAiC,QAAQ,OAAO;AAAA,KAClD,GACA;AAAA,GAAA,EACN,CAAA;AAEJ;AAEO,SAAS,wBAAA,CACd,WAAA,EACA,SAAA,EACA,SAAA,EACA;AACA,EAAA,MAAM,WAAA,GAAc,WAAA,CAAY,OAAA,CAAQ,SAAS,CAAA;AACjD,EAAA,MAAM,WAAA,GAAc,WAAA,CAAY,OAAA,CAAQ,SAAS,CAAA;AACjD,EAAA,IAAI,WAAA,GAAc,CAAA,IAAK,WAAA,GAAc,CAAA,IAAK,gBAAgB,WAAA,EAAa;AACrE,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,QAAA,GAAW,CAAC,GAAG,WAAW,CAAA;AAChC,EAAA,MAAM,CAAC,MAAM,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,aAAa,CAAC,CAAA;AAC/C,EAAA,QAAA,CAAS,MAAA,CAAO,WAAA,EAAa,CAAA,EAAG,MAAM,CAAA;AACtC,EAAA,OAAO,QAAA;AACT;AAOA,SAAS,2BAA2B,IAAA,EAA6B;AAC/D,EAAA,IAAI,CAAC,IAAA,EAAM,OAAO,EAAC;AACnB,EAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IACX,IAAA,CAAK,iBAA8B,qBAAqB;AAAA,GAC1D,CAAE,GAAA,CAAI,CAAC,OAAA,KAAY;AACjB,IAAA,MAAM,IAAA,GAAO,QAAQ,qBAAA,EAAsB;AAC3C,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,OAAA,CAAQ,OAAA,CAAQ,WAAA,IAAe,EAAA;AAAA,MACpC,OAAA,EAAS,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,GAAS;AAAA,KACpC;AAAA,EACF,CAAC,CAAA;AACH;AAEO,SAAS,2BAAuD,MAAA,EAKpE;AACD,EAAA,IAAI,WAAA,GAAwB,IAAA;AAC5B,EAAA,IAAI,kBAAkB,MAAA,CAAO,iBAAA;AAC7B,EAAA,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KAAW;AACjC,IAAA,MAAM,IAAA,GAAO,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,GAAA,KAAQ,MAAA,CAAO,GAAG,CAAA;AAC1E,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,SAAA,KAAc,OAAO,SAAA,EAAW;AAClD,IAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,cAAA,GAAiB,OAAO,OAAO,CAAA;AAChE,IAAA,IAAI,WAAW,eAAA,EAAiB;AAC9B,MAAA,eAAA,GAAkB,QAAA;AAClB,MAAA,WAAA,GAAc,IAAA;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,WAAA;AACT;AAEA,SAAS,wBAAA,CACP,KAAA,EACA,WAAA,EACA,WAAA,EACA,MAAA,EACe;AACf,EAAA,IAAI,UAAA,GAAa,CAAA;AACjB,EAAA,IACE,WAAA,GAAc,WAAA,IACd,KAAA,GAAQ,WAAA,IACR,SAAS,WAAA,EACT;AACA,IAAA,UAAA,GAAa,CAAC,MAAA;AAAA,EAChB,WACE,WAAA,GAAc,WAAA,IACd,KAAA,IAAS,WAAA,IACT,QAAQ,WAAA,EACR;AACA,IAAA,UAAA,GAAa,MAAA;AAAA,EACf;AACA,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,UAAA,GAAa,CAAA,eAAA,EAAkB,UAAU,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,IAC/D,UAAA,EAAY,WAAA,IAAe,CAAA,GAAI,sBAAA,GAAyB;AAAA,GAC1D;AACF;;;AC/PwC,WAAA,CAAY,gzIAAgzI,CAAA;AC0B71I,SAAS,kBAA8B,KAAA,EA0B3C;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,KAAA;AAC3B,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAID,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,OAAA,GAAUM,OAA8B,IAAI,CAAA;AAClD,EAAA,MAAM,UAAA,GAAa,OAAA,KAAY,MAAA,IAAa,OAAA,KAAY,KAAA;AAExD,EAAAE,UAAU,MAAM;AACd,IAAA,MAAM,KAAA,GAAQ,CAAC,KAAA,KAAsB;AACnC,MAAA,IACG,KAAA,CAAM,MAAA,EAA+B,OAAA,CAAQ,qBAAqB,CAAA,EACnE;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,EAAS,QAAA,CAAS,KAAA,CAAM,MAAc,CAAA,EAAG;AACpD,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAA,cAAA,CAAe,KAAK,CAAA;AAAA,MACtB;AAAA,IACF,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,KAAK,CAAA;AAC5C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,KAAK,CAAA;AAAA,EAC9D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAA,UAAU,MAAM;AACd,IAAA,MAAM,yBAAyB,MAAM;AACnC,MAAA,MAAM,cAAA,GAAA,CACH,OAAO,OAAA,KAAY,QAAA,GAAW,QAAQ,iBAAA,IAAoB,GAAI,IAAA,KAC/D,KAAA,CAAM,OAAA,CAAQ,OAAA;AAChB,MAAA,MAAM,gBAAA,GAAmB,SAAS,iBAAA,KAAsB,cAAA;AACxD,MAAA,eAAA,CAAgB,gBAAgB,CAAA;AAChC,MAAA,KAAA,CAAM,qBAAqB,gBAAgB,CAAA;AAAA,IAC7C,CAAA;AACA,IAAA,sBAAA,EAAuB;AACvB,IAAA,QAAA,CAAS,gBAAA,CAAiB,oBAAoB,sBAAsB,CAAA;AACpE,IAAA,OAAO,MACL,QAAA,CAAS,mBAAA,CAAoB,kBAAA,EAAoB,sBAAsB,CAAA;AAAA,EAC3E,GAAG,CAAC,KAAA,CAAM,SAAS,KAAA,CAAM,kBAAA,EAAoB,OAAO,CAAC,CAAA;AAErD,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,UAAA,EAAY,OAAO,IAAA;AAClC,EAAA,MAAM,MAAA,GACJ,OAAO,OAAA,KAAY,QAAA,GAAW,UAAU,EAAC;AAC3C,EAAA,uBACEL,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EAA4B,KAAK,OAAA,EAC9C,QAAA,EAAA;AAAA,oBAAAF,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAC9C,UAAA,mBACCE,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,MAAA,CAAO,KAAA;AAAA,MACP,MAAA,CAAO,cAAA,KAAmB,KAAA,mBACzBF,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,eAAe,0BAAA,GAAS,cAAA;AAAA,UAC/B,SAAS,MAAM;AACb,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA,KAAK,SAAS,cAAA,IAAiB;AAAA,YACjC,CAAA,MAAO;AACL,cAAA,MAAM,cAAA,GACJ,MAAA,CAAO,iBAAA,IAAoB,IAAK,MAAM,OAAA,CAAQ,OAAA;AAChD,cAAA,KAAK,gBAAgB,iBAAA,IAAoB;AAAA,YAC3C;AAAA,UACF,CAAA;AAAA,UAEC,yCACCA,GAAAA,CAAC,0BAAuB,CAAA,mBAExBA,IAAC,kBAAA,EAAA,EAAmB;AAAA;AAAA,OAExB,GACE,IAAA;AAAA,MACH,MAAA,CAAO,WAAA,KAAgB,KAAA,mBACtBA,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,cAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,MAAM,MAAA,CAAO,SAAA,IAAY;AAAA,UAElC,QAAA,kBAAAA,IAAC,cAAA,EAAA,EAAe;AAAA;AAAA,OAClB,GACE,IAAA;AAAA,MACH,MAAA,CAAO,6BACNA,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,cAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,SAAS,MAAM;AACb,YAAA,IAAI,OAAO,QAAA,EAAU;AACnB,cAAA,MAAA,CAAO,QAAA,EAAS;AAAA,YAClB,CAAA,MAAO;AACL,cAAA,KAAA,CAAM,QAAA,CAAS,OAAO,aAAa,CAAA;AAAA,YACrC;AAAA,UACF,CAAA;AAAA,UAEA,QAAA,kBAAAA,IAAC,cAAA,EAAA,EAAe;AAAA;AAAA,OAClB,GACE,IAAA;AAAA,MACH,OAAO,WAAA,KAAgB,KAAA,mBACtBE,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACb,QAAA,EAAA;AAAA,wBAAAF,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,0BAAA;AAAA,YACN,SAAS,MAAM,cAAA,CAAe,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,YAEvC,QAAA,kBAAAA,IAAC,oBAAA,EAAA,EAAqB;AAAA;AAAA,SACxB;AAAA,QACC,WAAA,mBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BACZ,QAAA,EAAA,qBAAA,CAAsB,GAAA,CAAI,CAAC,MAAA,qBAC1BE,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YAEL,SAAA,EACE,KAAA,CAAM,OAAA,KAAY,MAAA,CAAO,YAAY,QAAA,GAAW,EAAA;AAAA,YAElD,SAAS,MAAM;AACb,cAAA,KAAA,CAAM,eAAA,CAAgB,OAAO,SAAS,CAAA;AACtC,cAAA,cAAA,CAAe,KAAK,CAAA;AAAA,YACtB,CAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,kCAAA;AAAA,kBACV,aAAA,EAAY,MAAA;AAAA,kBAEX,QAAA,EAAA,KAAA,CAAM,OAAA,KAAY,MAAA,CAAO,SAAA,GAAY,QAAA,GAAM;AAAA;AAAA,eAC9C;AAAA,8BACAA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM;AAAA;AAAA,WAAA;AAAA,UAff,MAAA,CAAO;AAAA,SAiBf,GACH,CAAA,GACE;AAAA,OAAA,EACN,CAAA,GACE,IAAA;AAAA,MACH,OAAO,iBAAA,KAAsB,KAAA,mBAC5BE,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACb,QAAA,EAAA;AAAA,wBAAAF,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,oBAAA;AAAA,YACN,SAAS,MAAM;AACb,cAAA,IAAI,CAAC,WAAA,EAAa,KAAA,CAAM,oBAAA,EAAqB;AAC7C,cAAA,cAAA,CAAe,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,YAC1B,CAAA;AAAA,YAEA,QAAA,kBAAAA,IAAC,eAAA,EAAA,EAAgB;AAAA;AAAA,SACnB;AAAA,QACC,8BACCE,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,iCAAA;AAAA,YACV,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,sBAAsB,GAAA,EAAI;AAAA,YAEjD,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACb,QAAA,EAAA;AAAA,gCAAAF,GAAAA,CAAC,YAAO,QAAA,EAAA,oBAAA,EAAG,CAAA;AAAA,gCACXA,GAAAA;AAAA,kBAACQ,aAAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAS,MAAM,mBAAA,KAAwB,IAAA;AAAA,oBACvC,QAAA,EAAU,CAAC,KAAA,CAAM,4BAAA;AAAA,oBACjB,KAAA,EACE,KAAA,CAAM,4BAAA,GACF,gFAAA,GACA,oEAAA;AAAA,oBAEN,QAAA,EAAU,CAAC,KAAA,KACT,KAAA,CAAM,2BAAA;AAAA,sBACJ,MAAM,MAAA,CAAO;AAAA,qBACf;AAAA,oBAEH,QAAA,EAAA;AAAA;AAAA,iBAED;AAAA,gCACAR,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,MAAA,EAAO,EAC/B,QAAA,EAAA,MAAA,CAAO,wBAAA,EACV,CAAA;AAAA,gCACAA,IAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,OAAA,EAAS,KAAA,CAAM,gBAAgB,QAAA,EAAA,cAAA,EAErD;AAAA,eAAA,EACF,CAAA;AAAA,8BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+DACb,QAAA,kBAAAA,GAAAA;AAAA,gBAAC,YAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,cAAA,CAAe,KAAA,CAAM,OAAO,CAAA;AAAA,kBACnC,eAAe,KAAA,CAAM,mBAAA;AAAA,kBACrB,UAAA,EAAY,CAAC,MAAA,EAAQ,WAAA,qBACnBE,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8BAAA,EACb,QAAA,EAAA;AAAA,oCAAAA,IAAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAU,8BAAA;AAAA,wBACV,KAAA,EAAO,EAAE,WAAA,EAAa,MAAA,CAAO,QAAQ,EAAA,EAAG;AAAA,wBAExC,QAAA,EAAA;AAAA,0CAAAF,GAAAA;AAAA,4BAAC,MAAA;AAAA,4BAAA;AAAA,8BACC,SAAA,EAAU,8BAAA;AAAA,8BACT,GAAG,WAAA;AAAA,8BACJ,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,gCAAA,KAAA,CAAM,cAAA,EAAe;AACrB,gCAAA,KAAA,CAAM,eAAA,EAAgB;AAAA,8BACxB,CAAA;AAAA,8BAEA,QAAA,kBAAAA,IAAC,cAAA,EAAA,EAAe;AAAA;AAAA,2BAClB;AAAA,0CACAA,GAAAA;AAAA,4BAAC,OAAA;AAAA,4BAAA;AAAA,8BACC,IAAA,EAAK,UAAA;AAAA,8BACL,OAAA,EAAS,CAAC,MAAA,CAAO,MAAA;AAAA,8BACjB,UAAU,MAAA,CAAO,WAAA;AAAA,8BACjB,QAAA,EAAU,CAAC,KAAA,KACT,KAAA,CAAM,wBAAA;AAAA,gCACJ,MAAA,CAAO,GAAA;AAAA,gCACP,MAAM,MAAA,CAAO;AAAA;AACf;AAAA,2BAEJ;AAAA,0CACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EACb,iBAAO,KAAA,EACV;AAAA;AAAA;AAAA,qBACF;AAAA,oBACC,CAAC,MAAA,CAAO,OAAA,mBACPE,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,iCAAA,EACd,QAAA,EAAA;AAAA,sCAAAF,GAAAA;AAAA,wBAACc,gBAAAA;AAAA,wBAAA;AAAA,0BACC,SAAA,EAAU,qCAAA;AAAA,0BACV,KAAK,MAAA,CAAO,QAAA;AAAA,0BACZ,KAAK,MAAA,CAAO,QAAA;AAAA,0BACZ,OAAO,MAAA,CAAO,KAAA;AAAA,0BACd,UAAA,EAAY,KAAA;AAAA,0BACZ,YAAA,EAAY,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,YAAA,CAAA;AAAA,0BAC3B,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,EAAA,EAAG;AAAA,0BAC/B,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,4BAAA,IACE,SAAS,IAAA,IACT,MAAA,CAAO,SAAS,KAAK,CAAA,IACrB,QAAQ,CAAA,KACP,MAAA,CAAO,YAAY,IAAA,IAClB,KAAA,IAAS,OAAO,QAAA,CAAA,KACjB,MAAA,CAAO,YAAY,IAAA,IAClB,KAAA,IAAS,OAAO,QAAA,CAAA,EAClB;AACA,8BAAA,KAAA,CAAM,mBAAA;AAAA,gCACJ,MAAA,CAAO,GAAA;AAAA,gCACP;AAAA,+BACF;AAAA,4BACF;AAAA,0BACF;AAAA;AAAA,uBACF;AAAA,sCACAd,GAAAA;AAAA,wBAACG,WAAAA;AAAA,wBAAA;AAAA,0BACC,SAAA,EAAU,oCAAA;AAAA,0BACV,KAAA,EACE,MAAM,SAAA,CAAU,IAAA;AAAA,4BACd,CAAC,IAAA,KAAS,IAAA,CAAK,GAAA,KAAQ,MAAA,CAAO;AAAA,6BAC7B,KAAA,IAAS,SAAA;AAAA,0BAEd,OAAA,EAAS;AAAA,4BACP,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,SAAA,EAAU;AAAA,4BAClC,EAAE,KAAA,EAAO,cAAA,EAAM,KAAA,EAAO,QAAA,EAAS;AAAA,4BAC/B,EAAE,KAAA,EAAO,cAAA,EAAM,KAAA,EAAO,SAAA;AAAU,2BAClC;AAAA,0BACA,QAAA,EAAU,CAAC,MAAA,CAAO,QAAA;AAAA,0BAClB,UAAA,EAAY,KAAA;AAAA,0BACZ,UAAA,EAAY,KAAA;AAAA,0BACZ,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAQ,EAAA,EAAG;AAAA,0BACnC,YAAA,EAAY,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,wBAAA,CAAA;AAAA,0BAC3B,QAAA,EAAU,CAAC,KAAA,KACT,KAAA,CAAM,kBAAA;AAAA,4BACJ,MAAA,CAAO,GAAA;AAAA,4BACP,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,SAAA,GAC5B,KAAA,GACA;AAAA;AACN;AAAA,uBAEJ;AAAA,sCACAH,GAAAA;AAAA,wBAACG,WAAAA;AAAA,wBAAA;AAAA,0BACC,SAAA,EAAU,qCAAA;AAAA,0BACV,KAAA,EAAO,OAAO,KAAA,IAAS,MAAA;AAAA,0BACvB,OAAA,EAAS;AAAA,4BACP,EAAE,KAAA,EAAO,oBAAA,EAAO,KAAA,EAAO,MAAA,EAAO;AAAA,4BAC9B,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,4BAC/B,EAAE,KAAA,EAAO,0BAAA,EAAQ,KAAA,EAAO,OAAA;AAAQ,2BAClC;AAAA,0BACA,UAAA,EAAY,KAAA;AAAA,0BACZ,UAAA,EAAY,KAAA;AAAA,0BACZ,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAQ,EAAA,EAAG;AAAA,0BACnC,YAAA,EAAY,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,wBAAA,CAAA;AAAA,0BAC3B,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,4BAAA,KAAA,CAAM,mBAAA;AAAA,8BACJ,MAAA,CAAO,GAAA;AAAA,8BACP,KAAA,KAAU,MAAA,IAAU,KAAA,KAAU,OAAA,GAC1B,KAAA,GACA;AAAA,6BACN;AAAA,0BACF;AAAA;AAAA;AACF,qBAAA,EACF,CAAA,GACE;AAAA,mBAAA,EACN;AAAA;AAAA,eAEJ,EACF;AAAA;AAAA;AAAA,SACF,GACE;AAAA,OAAA,EACN,CAAA,GACE;AAAA,KAAA,EACN,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AAEA,SAAS,WAAW,KAAA,EAKjB;AACD,EAAA,uBACEH,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAU,uBAAA;AAAA,MACV,KAAA,EAAO,EAAE,QAAA,EAAU,KAAA,CAAM,YAAY,EAAA,EAAG;AAAA,MACxC,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,cAAY,KAAA,CAAM,KAAA;AAAA,MAClB,SAAS,KAAA,CAAM,OAAA;AAAA,MAEd,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,GACT;AAEJ;AAEA,SAAS,cAAA,CACP,OAAA,EACA,SAAA,GAAY,MAAA,EACZ,QAAQ,CAAA,EAcP;AACD,EAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KAAW;AACjC,IAAA,IAAI,OAAO,aAAA,EAAe;AACxB,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,MAAA,CAAO,GAAA,IAAO,OAAO,SAAS,CAAA;AACjD,IAAA,MAAM,KAAA,GACJ,OAAO,YAAA,KACN,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,OAAO,KAAA,GAAQ,GAAA,CAAA;AACrD,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,GAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA,EAAQ,OAAO,MAAA,KAAW,IAAA;AAAA,MAC1B,SAAA;AAAA,MACA,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,IAAK,GAAA;AAAA,MAC/B,UACE,OAAO,MAAA,CAAO,QAAA,KAAa,QAAA,GAAW,OAAO,QAAA,GAAW,MAAA;AAAA,MAC1D,UACE,OAAO,MAAA,CAAO,QAAA,KAAa,QAAA,GAAW,OAAO,QAAA,GAAW,MAAA;AAAA,MAC1D,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,KAAA;AAAA,MACA,OAAA,EAAS,OAAA,CAAQ,MAAA,CAAO,QAAA,EAAU,MAAM,CAAA;AAAA,MACxC,WAAA,EAAa,OAAO,WAAA,KAAgB,IAAA;AAAA,MACpC,QAAA,EAAU,MAAA,CAAO,SAAA,KAAc,KAAA,IAAS,OAAO,MAAA,KAAW;AAAA,KAC5D;AACA,IAAA,OAAO,MAAA,CAAO,QAAA,EAAU,MAAA,GACpB,CAAC,SAAS,GAAG,cAAA,CAAe,MAAA,CAAO,QAAA,EAAU,KAAK,KAAA,GAAQ,CAAC,CAAC,CAAA,GAC5D,CAAC,OAAO,CAAA;AAAA,EACd,CAAC,CAAA;AACH;AC1YO,SAAS,uBACd,OAAA,EACA;AACA,EAAA,MAAM,YAAA,GAAeK,OAA8B,IAAI,CAAA;AACvD,EAAA,MAAM,QAAA,GAAWA,OAAqC,IAAI,CAAA;AAC1D,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GACpCN,SAAwC,IAAI,CAAA;AAC9C,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAC1CA,SAAkC,IAAI,CAAA;AACxC,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GACtCA,SAAyC,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GACtCA,SAAyC,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAC9CA,SAAmC,IAAI,CAAA;AACzC,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAC5CA,SAAkC,IAAI,CAAA;AACxC,EAAA,MAAM,CAAC,wBAAA,EAA0B,2BAA2B,CAAA,GAC1DA,SAAyC,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GACpCA,SAAwC,IAAI,CAAA;AAC9C,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAChDA,SAA8C,IAAI,CAAA;AACpD,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAClDA,SAA+C,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAC5CA,SAA4C,IAAI,CAAA;AAElD,EAAA,MAAM,SAAA,GAAYU,OAAAA;AAAA,IAChB,OAAO;AAAA,MACL,GAAG,OAAA,CAAQ,EAAA;AAAA,MACX,mBAAA,EAAqB,CAAC,OAAA,KAA+C;AACnE,QAAA,oBAAA,CAAqB,OAAO,CAAA;AAC5B,QAAA,OAAA,CAAQ,EAAA,EAAI,sBAAsB,OAAO,CAAA;AAAA,MAC3C,CAAA;AAAA,MACA,eAAA,EAAiB,CAAC,OAAA,KAA2C;AAC3D,QAAA,gBAAA,CAAiB,OAAO,CAAA;AACxB,QAAA,OAAA,CAAQ,EAAA,EAAI,kBAAkB,OAAO,CAAA;AAAA,MACvC,CAAA;AAAA,MACA,kBAAA,EAAoB,CAAC,MAAA,KAAoC;AACvD,QAAA,mBAAA,CAAoB,MAAM,CAAA;AAC1B,QAAA,OAAA,CAAQ,EAAA,EAAI,qBAAqB,MAAM,CAAA;AAAA,MACzC,CAAA;AAAA,MACA,gBAAA,EAAkB,CAAC,OAAA,KAA4C;AAC7D,QAAA,iBAAA,CAAkB,OAAO,CAAA;AACzB,QAAA,OAAA,CAAQ,EAAA,EAAI,mBAAmB,OAAO,CAAA;AAAA,MACxC,CAAA;AAAA,MACA,gBAAA,EAAkB,CAAC,OAAA,KAA4C;AAC7D,QAAA,iBAAA,CAAkB,OAAO,CAAA;AACzB,QAAA,OAAA,CAAQ,EAAA,EAAI,mBAAmB,OAAO,CAAA;AAAA,MACxC,CAAA;AAAA,MACA,oBAAA,EAAsB,CAAC,OAAA,KAAsC;AAC3D,QAAA,qBAAA,CAAsB,OAAO,CAAA;AAC7B,QAAA,OAAA,CAAQ,EAAA,EAAI,uBAAuB,OAAO,CAAA;AAAA,MAC5C,CAAA;AAAA,MACA,mBAAA,EAAqB,CAAC,OAAA,KAAqC;AACzD,QAAA,oBAAA,CAAqB,OAAO,CAAA;AAC5B,QAAA,OAAA,CAAQ,EAAA,EAAI,sBAAsB,OAAO,CAAA;AAAA,MAC3C,CAAA;AAAA,MACA,0BAAA,EAA4B,CAAC,OAAA,KAA4C;AACvE,QAAA,2BAAA,CAA4B,OAAO,CAAA;AACnC,QAAA,OAAA,CAAQ,EAAA,EAAI,6BAA6B,OAAO,CAAA;AAAA,MAClD,CAAA;AAAA,MACA,eAAA,EAAiB,CAAC,OAAA,KAA2C;AAC3D,QAAA,gBAAA,CAAiB,OAAO,CAAA;AACxB,QAAA,OAAA,CAAQ,EAAA,EAAI,kBAAkB,OAAO,CAAA;AAAA,MACvC,CAAA;AAAA,MACA,qBAAA,EAAuB,CAAC,OAAA,KAAiD;AACvE,QAAA,sBAAA,CAAuB,OAAO,CAAA;AAC9B,QAAA,OAAA,CAAQ,EAAA,EAAI,wBAAwB,OAAO,CAAA;AAAA,MAC7C,CAAA;AAAA,MACA,sBAAA,EAAwB,CACtB,OAAA,KACG;AACH,QAAA,uBAAA,CAAwB,OAAO,CAAA;AAC/B,QAAA,OAAA,CAAQ,EAAA,EAAI,yBAAyB,OAAO,CAAA;AAAA,MAC9C;AAAA,KACF,CAAA;AAAA,IACA,CAAC,QAAQ,EAAE;AAAA,GACb;AACA,EAAA,MAAM,iBAAA,GAAoBJ,OAGhB,IAAI,CAAA;AAEd,EAAAE,UAAU,MAAM;AACd,IAAA,MAAM,YAAY,YAAA,CAAa,OAAA;AAC/B,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,GAAQ,IAAI,SAAA,CAAU,SAAA,EAAW;AAAA,MACrC,GAAG,OAAA;AAAA,MACH,EAAA,EAAI;AAAA,KACL,CAAA;AACD,IAAA,iBAAA,CAAkB,OAAA,GAAU,EAAE,OAAA,EAAS,SAAA,EAAU;AACjD,IAAA,KAAA,CAAM,KAAA,EAAM;AACZ,IAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AAEnB,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,CAAM,OAAA,EAAQ;AACd,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AACnB,MAAA,iBAAA,CAAkB,OAAA,GAAU,IAAA;AAC5B,MAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,MAAA,mBAAA,CAAoB,IAAI,CAAA;AACxB,MAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,MAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,MAAA,qBAAA,CAAsB,IAAI,CAAA;AAC1B,MAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,MAAA,2BAAA,CAA4B,IAAI,CAAA;AAChC,MAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,MAAA,sBAAA,CAAuB,IAAI,CAAA;AAC3B,MAAA,uBAAA,CAAwB,IAAI,CAAA;AAC5B,MAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA,IAC3B,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAA,UAAU,MAAM;AACd,IAAA,IACE,kBAAkB,OAAA,EAAS,OAAA,KAAY,WACvC,iBAAA,CAAkB,OAAA,CAAQ,cAAc,SAAA,EACxC;AACA,MAAA;AAAA,IACF;AACA,IAAA,iBAAA,CAAkB,OAAA,GAAU,EAAE,OAAA,EAAS,SAAA,EAAU;AACjD,IAAA,QAAA,CAAS,SAAS,aAAA,CAAc;AAAA,MAC9B,GAAG,OAAA;AAAA,MACH,EAAA,EAAI;AAAA,KACL,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,OAAA,EAAS,SAAS,CAAC,CAAA;AAEvB,EAAA,OAAO;AAAA,IACL,YAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,iBAAA;AAAA,IACA,wBAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA;AAAA,IACA,oBAAA;AAAA,IACA,iBAAA;AAAA,IACA,wBAAwB,MAAM;AAC5B,MAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA,IAC3B,CAAA;AAAA,IACA,2BAA2B,MAAM;AAC/B,MAAA,uBAAA,CAAwB,IAAI,CAAA;AAC5B,MAAA,OAAA,CAAQ,EAAA,EAAI,yBAAyB,IAAI,CAAA;AAAA,IAC3C;AAAA,GACF;AACF;;;ACpKO,SAAS,0BAAA,CACd,iBACA,gBAAA,EACA;AACA,EAAA,OAAO,OAAO,eAAA,KAAoB,QAAA,GAC9B,eAAA,GACA,gBAAA;AACN;AAKO,SAAS,0BAAA,CACd,KAAA,EACA,MAAA,EACA,YAAA,EACA;AACA,EAAA,OAAO,YAAA,GACH,EAAE,KAAA,EAAO,MAAA,EAAiB,QAAQ,MAAA,EAAgB,GAClD,EAAE,KAAA,EAAO,MAAA,EAAO;AACtB;AAEO,SAAS,sBACd,KAAA,EAC8B;AAC9B,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,GAAG,SAAA;AAAA,IACH,SAAA,EAAW,UAAU,SAAA,IAAa,EAAA;AAAA,IAClC,OAAO,MAAA,EAAQ,CAAA,KAAM,IAAA,GAAO,MAAA,GAAU,QAAQ,CAAA,IAAK,KAAA;AAAA,IACnD,MAAA,EAAQ,QAAQ,CAAA,IAAK,MAAA;AAAA,IACrB,SAAA,EAAW,QAAQ,SAAA,IAAa,SAAA;AAAA,IAChC,OAAO,QAAA,GACH;AAAA,MACE,GAAG,KAAA;AAAA,MACH;AAAA,KACF,GACA;AAAA,GACN;AACF;ACrDA,IAAM,0BAAA,GAA6B,cAAc,KAAK,CAAA;AAEtD,IAAM,wBAAA,GAA2B;AAAA,EAC/B,OAAA,EAAS,IAAA;AAAA,EACT,gBAAA,EAAkB,IAAA;AAAA,EAClB,cAAA,EAAgB,IAAA;AAAA,EAChB,mBAAA,EAAqB,IAAA;AAAA,EACrB,aAAA,EAAe,IAAA;AAAA,EACf,uBAAA,EAAyB;AAC3B,CAAA;AAaO,SAAS,4BACd,KAAA,EACA;AACA,EAAA,uBACEP,IAAC,0BAAA,CAA2B,QAAA,EAA3B,EAAoC,KAAA,EAAO,KAAA,CAAM,OAAA,EAC/C,QAAA,EAAA,KAAA,CAAM,QAAA,EACT,CAAA;AAEJ;AAGO,SAAS,6BAAA,GAAgC;AAC9C,EAAA,OAAO,WAAW,0BAA0B,CAAA;AAC9C;AASO,SAAS,iCAAA,CACd,OACA,gBAAA,EACA;AACA,EAAA,IAAI,CAAC,kBAAkB,OAAO,KAAA;AAC9B,EAAA,OAAO;AAAA,IACL,GAAG,wBAAA;AAAA,IACH,GAAG,KAAA;AAAA,IACH,OAAA,EAAS;AAAA,GACX;AACF;;;ACtDO,SAAS,wBACd,OAAA,EACA,UAAA,EACA,MAAA,EACA,MAAA,EACA,YAAY,MAAA,EACgC;AAC5C,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,SAAS,CAAA;AAClC,EAAA,MAAM,aAAA,GAAgB,KAAA,GAClB,uBAAA,CAAwB,OAAA,EAAS,KAAK,CAAA,GACtC,OAAA;AACJ,EAAA,OAAO,aAAA,CAAc,GAAA,CAAI,CAAC,MAAA,KAAiD;AACzE,IAAA,MAAM,GAAA,GAAM,iBAAiB,MAAM,CAAA;AACnC,IAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AACpC,IAAA,OAAO;AAAA,MACL,GAAG,MAAA;AAAA,MACH,MAAA,EAAQ,UAAA,CAAW,GAAA,CAAI,GAAG,CAAA,GACtB,UAAA,CAAW,GAAA,CAAI,GAAG,CAAA,KAAM,KAAA,GACvB,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,WAAA;AAAA,MAC7B,KAAA,EAAO,aAAA,EAAe,KAAA,IAAS,MAAA,CAAO,KAAA;AAAA,MACtC,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,OACE,aAAA,EAAe,KAAA,KAAU,OACrB,MAAA,GACC,aAAA,EAAe,SAAS,MAAA,CAAO,KAAA;AAAA,MACtC,QAAA,EAAU,OAAO,QAAA,GACb,uBAAA;AAAA,QACE,MAAA,CAAO,QAAA;AAAA,QACP,UAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACF,GACA;AAAA,KACN;AAAA,EACF,CAAC,CAAA;AACH;AAEA,SAAS,uBAAA,CACP,SACA,WAAA,EACA;AACA,EAAA,MAAM,aAAA,GAAgB,IAAI,GAAA,CAAI,WAAW,CAAA;AACzC,EAAA,MAAM,eAAe,OAAA,CAClB,GAAA;AAAA,IAAI,CAAC,QAAQ,KAAA,KACZ,aAAA,CAAc,IAAI,gBAAA,CAAiB,MAAM,CAAC,CAAA,GAAI,KAAA,GAAQ;AAAA,GACxD,CACC,MAAA,CAAO,CAAC,KAAA,KAAU,SAAS,CAAC,CAAA;AAC/B,EAAA,MAAM,cAAc,IAAI,GAAA;AAAA,IACtB,OAAA,CAAQ,IAAI,CAAC,MAAA,KAAW,CAAC,gBAAA,CAAiB,MAAM,CAAA,EAAG,MAAM,CAAC;AAAA,GAC5D;AACA,EAAA,MAAM,IAAA,GAAO,CAAC,GAAG,OAAO,CAAA;AAExB,EAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,GAAA,EAAK,KAAA,KAAU;AAClC,IAAA,MAAM,IAAA,GAAO,aAAa,KAAK,CAAA;AAC/B,IAAA,MAAM,MAAA,GAAS,WAAA,CAAY,GAAA,CAAI,GAAG,CAAA;AAClC,IAAA,IAAI,IAAA,IAAQ,QAAQ,MAAA,EAAQ;AAC1B,MAAA,IAAA,CAAK,IAAI,CAAA,GAAI,MAAA;AAAA,IACf;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,iBACP,MAAA,EACA;AACA,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,GAAA,IAAO,MAAA,CAAO,SAAS,CAAA;AAC9C;AAGO,SAAS,2BACd,OAAA,EACQ;AACR,EAAA,OAAO,IAAA,CAAK,SAAA;AAAA,IACV,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,MAAY;AAAA,MACvB,GAAA,EAAK,iBAAiB,MAAM,CAAA;AAAA,MAC5B,KAAA,EAAO,MAAA;AAAA,QACL,OAAO,YAAA,KACJ,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,OAAO,KAAA,GAAQ,EAAA;AAAA,OACvD;AAAA,MACA,WAAW,MAAA,CAAO,SAAA;AAAA,MAClB,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,UAAU,MAAA,CAAO,QAAA,GACb,0BAAA,CAA2B,MAAA,CAAO,QAAQ,CAAA,GAC1C;AAAA,KACN,CAAE;AAAA,GACJ;AACF;ACvCA,SAAS,mBAAA,CACP,OACA,GAAA,EACA;AACA,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,uBAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,mBAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,wBAAwB,6BAAA,EAA8B;AAC5D,EAAA,MAAM,aAAA,GAAgBS,OAAAA;AAAA,IACpB,MAAM,iCAAA,CAAkC,KAAA,EAAO,qBAAqB,CAAA;AAAA,IACpE,CAAC,OAAO,qBAAqB;AAAA,GAC/B;AACA,EAAA,MAAM,QAAA,GAAWJ,OAA8B,IAAI,CAAA;AACnD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIN,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAC5CA,SAA2C,IAAI,CAAA;AACjD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,QAAAA;AAAA,IAC5C;AAAA,GACF;AACA,EAAAQ,SAAAA;AAAA,IACE,MACE,gCAAA;AAAA,MAAiC,MAC/B,kBAAA,CAAmB,0BAAA,EAA4B;AAAA,KACjD;AAAA,IACF;AAAC,GACH;AACA,EAAA,MAAM,kBAAA,GAAqB,eAAA,CAAgB,MAAA,GACvC,eAAA,CAAgB,QACf,iBAAA,IAAqB,SAAA;AAC1B,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIR,SAE5C,IAAI,CAAA;AACN,EAAA,MAAM,CAAC,kBAAkB,mBAAmB,CAAA,GAAIA,SAE9C,sBAAM,IAAI,KAAK,CAAA;AACjB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,QAAAA;AAAA,IACtC,0BAAU,GAAA;AAAI,GAChB;AACA,EAAA,MAAM,CAAC,cAAc,eAAe,CAAA,GAAIA,SAEtC,sBAAM,IAAI,KAAK,CAAA;AACjB,EAAA,MAAM,qBAAA,GAAwBM,OAKpB,IAAI,CAAA;AACd,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIN,QAAAA;AAAA,IAClD,qBAAA,CAAsB;AAAA,GACxB;AACA,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAIA,SAAS,CAAC,CAAA;AAClE,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,QAAAA;AAAA,IAC9C;AAAC,GACH;AACA,EAAA,MAAM,CAAC,2BAAA,EAA6B,8BAA8B,CAAA,GAChEA,SAAyD,IAAI,CAAA;AAC/D,EAAA,MAAM,+BACH,2BAAA,EAA6B,UAAA,KAAe,aACzC,2BAAA,EAA6B,KAAA,GAC7B,WACJ,mBAAA,IACA,IAAA;AACF,EAAA,MAAM,CAAC,wBAAA,EAA0B,2BAA2B,CAAA,GAAIA,QAAAA,EAG7D;AACH,EAAA,MAAM,4BACH,wBAAA,EAA0B,UAAA,KAAe,UAAA,GACtC,wBAAA,EAA0B,QAC1B,MAAA,KAAc,gBAAA;AACpB,EAAA,MAAM,CAAC,yBAAA,EAA2B,4BAA4B,CAAA,GAAIA,SAAS,CAAC,CAAA;AAC5E,EAAA,MAAM,eAAA,GAAkBU,OAAAA;AAAA,IACtB,MACE,uBAAA;AAAA,MACE,oBAAoB,aAAA,KAAkB,OAAA,IACpC,mBAAmB,UAAA,KAAe,UAAA,GAChC,mBAAmB,OAAA,GACnB,OAAA;AAAA,MACJ,gBAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF;AAAA,IACF;AAAA,MACE,OAAA;AAAA,MACA,UAAA;AAAA,MACA,kBAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AACF,GACF;AACA,EAAA,MAAM,oBAAoB,eAAA,IAAmB,SAAA;AAC7C,EAAA,MAAM,uBAAA,GAA0B,0BAAA;AAAA,IAC9B,eAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,wBAAA,GAA2B,0BAAA;AAAA,IAC/B,eAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,OAAA,GAAUA,QAAQ,MAAM;AAC5B,IAAA,MAAM,cAAc,qBAAA,CAAsB;AAAA,MACxC,aAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA,EAAS,eAAA;AAAA,MACT,uBAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA,EAAW,iBAAA;AAAA,MACX,eAAA,EAAiB,uBAAA;AAAA,MACjB,gBAAA,EAAkB,wBAAA;AAAA,MAClB,gBAAA;AAAA,MACA,KAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,kBAAA;AAAA,MACX,cAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,mBAAA,EAAqB,2BAAA;AAAA,MACrB,gBAAA,EAAkB,wBAAA;AAAA,MAClB,SAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,MAAM,cAAA,GAAiB,0BAAA;AAAA,MACrB,WAAA,CAAY,KAAA;AAAA,MACZ,WAAA,CAAY,MAAA;AAAA,MACZ;AAAA,KACF;AACA,IAAA,OAAO;AAAA,MACL,GAAG,WAAA;AAAA,MACH,GAAG,cAAA;AAAA,MACH,oBAAA;AAAA,MACA,yBAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF,GAAG,WAAA,CAAY,EAAA;AAAA,QACf,eAAA,EAAiB,kBAAA;AAAA,QACjB,iBAAA,EAAmB,oBAAA;AAAA,QACnB,sBAAA,EAAwB,CAAC,eAAA,KAAoC;AAC3D,UAAA,MAAM,SAAA,GAAY,2BAA2B,eAAe,CAAA;AAC5D,UAAA,MAAM,UAAU,qBAAA,CAAsB,OAAA;AACtC,UAAA,IACE,SAAS,aAAA,KAAkB,OAAA,IAC3B,QAAQ,UAAA,KAAe,UAAA,IACvB,QAAQ,SAAA,KAAc,SAAA;AAEtB,YAAA;AACF,UAAA,MAAM,IAAA,GAAO;AAAA,YACX,aAAA,EAAe,OAAA;AAAA,YACf,UAAA;AAAA,YACA,OAAA,EAAS,eAAA;AAAA,YACT;AAAA,WACF;AACA,UAAA,qBAAA,CAAsB,OAAA,GAAU,IAAA;AAChC,UAAA,qBAAA,CAAsB,IAAI,CAAA;AAC1B,UAAA,mBAAA,iBAAoB,IAAI,KAAK,CAAA;AAC7B,UAAA,eAAA,iBAAgB,IAAI,KAAK,CAAA;AACzB,UAAA,eAAA,iBAAgB,IAAI,KAAK,CAAA;AAAA,QAC3B,CAAA;AAAA,QACA,2BAAA,EAA6B,CAAC,KAAA,KAC5B,8BAAA;AAAA,UAA+B,CAAC,OAAA,KAC9B,OAAA,EAAS,UAAA,KAAe,UAAA,IAAc,OAAA,EAAS,KAAA,KAAU,KAAA,GACrD,OAAA,GACA,EAAE,UAAA,EAAY,KAAA;AAAM,SAC1B;AAAA,QACF,wBAAA,EAA0B,CACxB,IAAA,KAEA,2BAAA;AAAA,UAA4B,CAAC,YAC3B,OAAA,EAAS,UAAA,KAAe,cACxB,IAAA,CAAK,SAAA,CAAU,SAAS,KAAA,IAAS,EAAE,CAAA,KAAM,IAAA,CAAK,UAAU,IAAI,CAAA,GACxD,UACA,EAAE,UAAA,EAAY,OAAO,IAAA;AAAK;AAChC;AACJ,KACF;AAAA,EACF,CAAA,EAAG;AAAA,IACD,aAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,eAAA;AAAA,IACA,uBAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,uBAAA;AAAA,IACA,wBAAA;AAAA,IACA,gBAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,2BAAA;AAAA,IACA,wBAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM;AAAA,IACJ,YAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,iBAAA;AAAA,IACA,wBAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA;AAAA,IACA,oBAAA;AAAA,IACA,iBAAA;AAAA,IACA,sBAAA;AAAA,IACA;AAAA,GACF,GAAI,uBAAuB,OAAO,CAAA;AAClC,EAAA,MAAM,gBAAgB,gBAAA,IAAoB,IAAA;AAC1C,EAAA,MAAM,gBAAA,GACJ,sCAAsC,iBAAiB,CAAA;AACzD,EAAA,MAAM,eAAA,GAAkB,gCAAA,CAAiC,QAAA,CAAS,OAAO,CAAA;AAEzE,EAAA,mBAAA;AAAA,IACE,GAAA;AAAA,IACA,OAAO;AAAA,MACL,QAAA,EAAU,MAAM,QAAA,CAAS,OAAA,EAAS,UAAS,IAAK,OAAA,CAAQ,OAAA,CAAQ,EAAE,CAAA;AAAA,MAClE,UAAA,EAAY,CAACM,QAAAA,KAAY;AACvB,QAAA,QAAA,CAAS,OAAA,EAAS,WAAWA,QAAO,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,QAAA,EAAU,CAACA,QAAAA,KAAY;AACrB,QAAA,QAAA,CAAS,OAAA,EAAS,SAASA,QAAO,CAAA;AAAA,MACpC,CAAA;AAAA,MACA,gBAAA,EAAkB,MAAM,QAAA,CAAS,OAAA,EAAS,kBAAiB,IAAK,IAAA;AAAA,MAChE,aAAa,MAAM;AACjB,QAAA,QAAA,CAAS,SAAS,WAAA,EAAY;AAAA,MAChC,CAAA;AAAA,MACA,aAAa,MAAM;AACjB,QAAA,QAAA,CAAS,SAAS,WAAA,EAAY;AAAA,MAChC,CAAA;AAAA,MACA,UAAA,EAAY,MAAM,QAAA,CAAS,OAAA,EAAS,YAAW,IAAK;AAAA,KACtD,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,uBACEb,IAAAA,CAAAL,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAK,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW;AAAA,UACT,wBAAA;AAAA,UACA,eAAe,mCAAA,GAAsC,EAAA;AAAA,UACrD;AAAA,SACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,QACX,KAAA,EAAO;AAAA,UACL,QAAA,EAAU,UAAA;AAAA,UACV,OAAA,EAAS,MAAA;AAAA,UACT,aAAA,EAAe,QAAA;AAAA,UACf,GAAG;AAAA,SACL;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAF,GAAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cACC,KAAA;AAAA,cACA,OAAA;AAAA,cACA,mBAAA,EACE,OAAA,CAAQ,UAAU,CAAA,IAAK,2BAAA;AAAA,cAEzB,4BAAA,EAA8B,QAAQ,UAAU,CAAA;AAAA,cAChD,6BAA6B,CAAC,OAAA,KAC5B,QAAA,CAAS,OAAA,EAAS,uBAAuB,OAAO,CAAA;AAAA,cAElD,OAAA,EAAS,eAAA;AAAA,cACT,SAAA,EAAW,gBAAA;AAAA,cACX,oBAAA,EAAsB,MACpB,mBAAA,CAAoB,QAAA,CAAS,SAAS,YAAA,EAAa,IAAK,EAAE,CAAA;AAAA,cAE5D,kBAAA,EAAoB,CAAC,SAAA,EAAW,KAAA,KAAU;AACxC,gBAAA,QAAA,CAAS,OAAA,EAAS,YAAA,CAAa,SAAA,EAAW,KAAK,CAAA;AAC/C,gBAAA,mBAAA,CAAoB,QAAA,CAAS,OAAA,EAAS,YAAA,EAAa,IAAK,EAAE,CAAA;AAAA,cAC5D,CAAA;AAAA,cACA,SAAS,iBAAA,IAAqB,EAAA;AAAA,cAC9B,OAAA,EAAS,QAAA;AAAA,cACT,kBAAA,EAAoB,eAAA;AAAA,cACpB,UAAU,CAACe,QAAAA,KAAY,QAAA,CAAS,OAAA,EAAS,WAAWA,QAAO,CAAA;AAAA,cAC3D,eAAA,EAAiB,CAAC,OAAA,KAAY;AAC5B,gBAAA,QAAA,CAAS,OAAA,EAAS,cAAc,OAAO,CAAA;AACvC,gBAAA,kBAAA,CAAmB,OAAO,CAAA;AAC1B,gBAAA,IAAI,OAAA,EAAS;AACX,kBAAA,OAAA,CAAQ,kBAAkB,OAAO,CAAA;AAAA,gBACnC;AAAA,cACF,CAAA;AAAA,cACA,wBAAA,EAA0B,CAAC,SAAA,EAAW,OAAA,KAAY;AAChD,gBAAA,mBAAA,CAAoB,CAAC,OAAA,KAAY;AAC/B,kBAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,OAAO,CAAA;AAC5B,kBAAA,IAAA,CAAK,GAAA,CAAI,WAAW,OAAO,CAAA;AAC3B,kBAAA,OAAO,IAAA;AAAA,gBACT,CAAC,CAAA;AACD,gBAAA,uBAAA,CAAwB,CAAC,OAAA,KAAY,OAAA,GAAU,CAAC,CAAA;AAAA,cAClD,CAAA;AAAA,cACA,mBAAA,EAAqB,CAAC,SAAA,EAAW,WAAA,KAAgB;AAC/C,gBAAA,eAAA,CAAgB,CAAC,OAAA,KAAY;AAC3B,kBAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,OAAO,CAAA;AAC5B,kBAAA,IAAA,CAAK,GAAA,CAAI,WAAW,WAAW,CAAA;AAC/B,kBAAA,OAAO,IAAA;AAAA,gBACT,CAAC,CAAA;AACD,gBAAA,uBAAA,CAAwB,CAAC,OAAA,KAAY,OAAA,GAAU,CAAC,CAAA;AAAA,cAClD,CAAA;AAAA,cACA,mBAAA,EAAqB,CAAC,SAAA,EAAWC,MAAAA,KAAU;AACzC,gBAAA,eAAA,CAAgB,CAAC,OAAA,KAAY;AAC3B,kBAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,OAAO,CAAA;AAC5B,kBAAA,IAAA,CAAK,IAAI,SAAA,EAAW;AAAA,oBAClB,GAAG,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA;AAAA,oBACrB,KAAA,EAAAA;AAAA,mBACD,CAAA;AACD,kBAAA,OAAO,IAAA;AAAA,gBACT,CAAC,CAAA;AACD,gBAAA,uBAAA,CAAwB,CAAC,OAAA,KAAY,OAAA,GAAU,CAAC,CAAA;AAAA,cAClD,CAAA;AAAA,cACA,mBAAA,EAAqB,CAAC,SAAA,EAAW,KAAA,KAAU;AACzC,gBAAA,eAAA,CAAgB,CAAC,OAAA,KAAY;AAC3B,kBAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,OAAO,CAAA;AAC5B,kBAAA,IAAA,CAAK,IAAI,SAAA,EAAW;AAAA,oBAClB,GAAG,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA;AAAA,oBACrB,OAAO,KAAA,IAAS;AAAA,mBACjB,CAAA;AACD,kBAAA,OAAO,IAAA;AAAA,gBACT,CAAC,CAAA;AACD,gBAAA,uBAAA,CAAwB,CAAC,OAAA,KAAY,OAAA,GAAU,CAAC,CAAA;AAAA,cAClD,CAAA;AAAA,cACA,gBAAgB,MAAM;AACpB,gBAAA,MAAM,cAAA,GAAiB,uBAAA;AAAA,kBACrB,OAAA;AAAA,sCACI,GAAA,EAAI;AAAA,sCACJ,GAAA,EAAI;AAAA,sCACJ,GAAA;AAAI,iBACV;AACA,gBAAA,KAAK,gCAAA,CAAiC;AAAA,kBACpC,UAAA;AAAA,kBACA,OAAA,EAAS;AAAA,iBACV,CAAA,CAAE,OAAA,CAAQ,MAAM;AACf,kBAAA,mBAAA,iBAAoB,IAAI,KAAK,CAAA;AAC7B,kBAAA,eAAA,iBAAgB,IAAI,KAAK,CAAA;AACzB,kBAAA,eAAA,iBAAgB,IAAI,KAAK,CAAA;AACzB,kBAAA,qBAAA,CAAsB,OAAA,GAAU,IAAA;AAChC,kBAAA,qBAAA,CAAsB,IAAI,CAAA;AAC1B,kBAAA,4BAAA,CAA6B,CAAC,OAAA,KAAY,OAAA,GAAU,CAAC,CAAA;AACrD,kBAAA,uBAAA,CAAwB,CAAC,OAAA,KAAY,OAAA,GAAU,CAAC,CAAA;AAAA,gBAClD,CAAC,CAAA;AAAA,cACH;AAAA;AAAA,WACF;AAAA,0BACAhB,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,YAAA;AAAA,cACL,SAAA,EAAU,uBAAA;AAAA,cACV,KAAA,EAAO,8BAAA;AAAA,gBACL,aAAA;AAAA,gBACA,gBAAA,CAAiB;AAAA,eACnB;AAAA,cAEA,QAAA,kBAAAA,GAAAA;AAAA,gBAAC,wBAAA;AAAA,gBAAA;AAAA,kBACC,MAAA,EAAQ,gBAAA;AAAA,kBACR,OAAA,EAAS;AAAA;AAAA;AACX;AAAA,WACF;AAAA,UACC,OAAA,IAAW,iCACVA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,UAAA;AAAA,gBACV,KAAA,EAAO,CAAA;AAAA,gBACP,OAAA,EAAS,MAAA;AAAA,gBACT,UAAA,EAAY,QAAA;AAAA,gBACZ,cAAA,EAAgB,QAAA;AAAA,gBAChB,UAAA,EAAY,2BAAA;AAAA,gBACZ,KAAA,EAAO,SAAA;AAAA,gBACP,QAAA,EAAU,EAAA;AAAA,gBACV,aAAA,EAAe,MAAA;AAAA,gBACf,MAAA,EAAQ;AAAA,eACV;AAAA,cAEC,QAAA,EAAA,OAAA,GAAU,sCAAA,GAAY,cAAA,EAAgB,IAAA,IAAQ;AAAA;AAAA,WACjD,GACE;AAAA;AAAA;AAAA,KACN;AAAA,IACC,cAAA,GACGiB,YAAAA;AAAA,sBACEjB,GAAAA,CAAC,qBAAA,EAAA,EAAsB,OAAA,EAAS,cAAA,EAAgB,CAAA;AAAA,MAChD;AAAA,KACF,GACA,IAAA;AAAA,IACH,kBAAA,GACGiB,YAAAA;AAAA,sBACEjB,GAAAA,CAAC,yBAAA,EAAA,EAA0B,OAAA,EAAS,kBAAA,EAAoB,CAAA;AAAA,MACxD;AAAA,KACF,GACA,IAAA;AAAA,IACH,iBAAA,GACGiB,YAAAA;AAAA,sBACEjB,GAAAA,CAAC,wBAAA,EAAA,EAAyB,OAAA,EAAS,iBAAA,EAAmB,CAAA;AAAA,MACtD;AAAA,KACF,GACA,IAAA;AAAA,IACHiB,YAAAA;AAAA,sBACCjB,GAAAA;AAAA,QAAC,yBAAA;AAAA,QAAA;AAAA,UACC,SACE,wBAAA,GACI;AAAA,YACE,GAAG,wBAAA;AAAA,YACH,SAAA,EAAW,kBAAA;AAAA,YACX,iBAAA,EAAmB,CAAC,KAAA,KAAU;AAC5B,cAAA,wBAAA,CAAyB,oBAAoB,KAAK,CAAA;AAClD,cAAA,oBAAA,CAAqB,KAAK,CAAA;AAC1B,cAAA,IAAI,4BAA2B,CAAE,MAAA;AAC/B,gBAAA,0BAAA,CAA2B,EAAE,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,YACtD,CAAA;AAAA,YACA,kBAAkB,MAAM;AACtB,cAAA,wBAAA,CAAyB,gBAAA,IAAmB;AAC5C,cAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,cAAA,IAAI,4BAA2B,CAAE,MAAA;AAC/B,gBAAA,0BAAA,CAA2B,EAAE,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,IAAI,CAAA;AAAA,YAC1D;AAAA,WACF,GACA;AAAA;AAAA,OAER;AAAA,MACA;AAAA,KACF;AAAA,IACC,aAAA,GACGiB,YAAAA;AAAA,sBACEjB,GAAAA,CAAC,0BAAA,EAAA,EAA2B,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,MACpD;AAAA,KACF,GACA,IAAA;AAAA,IACH,iBAAA,GACGiB,YAAAA;AAAA,sBACEjB,GAAAA;AAAA,QAAC,8BAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,iBAAA;AAAA,UACT,OAAA,EAAS,sBAAA;AAAA,UACT,aAAa,CAAC,UAAA,qBAAeA,GAAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,UAAA,EAAY;AAAA;AAAA,OAC/D;AAAA,MACA;AAAA,KACF,GACA,IAAA;AAAA,IACH,oBAAA,GACGiB,YAAAA;AAAA,sBACEjB,GAAAA;AAAA,QAAC,2BAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,oBAAA;AAAA,UACT,OAAA,EAAS;AAAA;AAAA,OACX;AAAA,MACA;AAAA,KACF,GACA,IAAA;AAAA,IACH,aAAA,GACGiB,YAAAA;AAAA,sBACEjB,GAAAA,CAAC,uBAAA,EAAA,EAAwB,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,MACjD,aAAA,CAAc,eACZ,eAAA,CAAgB,QAAA,CAAS,cAAc,WAAW,CAAA,GAChD,cAAc,WAAA,GACd;AAAA,KACN,GACA,IAAA;AAAA,IACH,mBAAA,GACGiB,YAAAA;AAAA,sBACEjB,GAAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAI,IAAA;AAAA,UACJ,KAAK,mBAAA,CAAoB,GAAA;AAAA,UACzB,KAAK,mBAAA,CAAoB,GAAA;AAAA,UACzB,SAAS,mBAAA,CAAoB;AAAA;AAAA,OAC/B;AAAA,MACA;AAAA,KACF,GACA;AAAA,GAAA,EACN,CAAA;AAEJ;AAaO,IAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B;AACF;AACA,cAAA,CAAe,aAAA,GAAgB,aAAA;AAC/B,cAAA,CAAe,gBAAA,GAAmB,gBAAA;AAClC,cAAA,CAAe,oBAAA,GAAuBkB,oBAAAA","file":"index.js","sourcesContent":["\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\".react-list-table-filter-option {\\n transition: background-color 0.2s ease;\\n}\\n.react-list-table-filter-option:hover {\\n background: #f3f4f6;\\n}\\n.react-list-table-menu-action,\\n.react-list-table-menu-row {\\n font-size: 14px;\\n transition: background-color 0.2s ease, color 0.2s ease;\\n}\\n.react-list-table-menu-action:hover,\\n.react-list-table-menu-row:hover {\\n background: #f3f4f6 !important;\\n}\\n.react-list-table-custom-selection-copy {\\n transition: background-color 0.2s ease;\\n}\\n.react-list-table-custom-selection-copy:hover {\\n background: #4096ff !important;\\n}\\n.react-list-table-custom-selection-input > .canvas-react-input-number-handler-down {\\n display: none;\\n}\\n.react-list-table-menu-chevron {\\n width: 7px;\\n height: 7px;\\n flex: 0 0 auto;\\n margin-left: 8px;\\n border-top: 1.5px solid #9ca3af;\\n border-right: 1.5px solid #9ca3af;\\n transform: rotate(45deg);\\n transform-origin: center;\\n transition: transform 0.18s ease, border-color 0.18s ease;\\n}\\n.react-list-table-menu-action:hover .react-list-table-menu-chevron,\\n.react-list-table-menu-row:hover .react-list-table-menu-chevron {\\n border-color: #6b7280;\\n transform: rotate(135deg);\\n}\\n.react-list-table-menu-chevron-active {\\n border-color: #6b7280;\\n transform: rotate(135deg);\\n}\\n\")","import { Fragment, useState } from \"react\";\nimport type {\n HeaderContextMenuConfig,\n ListTableConditionalFormatRule,\n ListTableConditionalFormatCondition,\n ListTableConditionalOperator,\n} from \"@canvas-components/list-table\";\nimport {\n ReactColorPicker,\n ReactButton,\n ReactInput,\n ReactModal,\n ReactSelect,\n} from \"@canvas-components/react-components\";\n\n/** 规则摘要同时用于二级菜单和编辑表单。 */\nexport const conditionalOperators: Record<\n ListTableConditionalOperator,\n string\n> = {\n eq: \"等于\",\n neq: \"不等于\",\n gt: \"大于\",\n gte: \"大于等于\",\n lt: \"小于\",\n lte: \"小于等于\",\n between: \"介于(含边界)\",\n contains: \"包含文本\",\n empty: \"为空\",\n notEmpty: \"不为空\",\n};\n\n/** 生成可读规则描述。 */\nexport function describeConditionalRule(\n rule: ListTableConditionalFormatRule,\n): string {\n return resolveConditions(rule)\n .map(\n (condition, index) =>\n `${index === 0 ? \"\" : (condition.relation ?? rule.conditionRelation ?? \"and\") === \"or\" ? \" 或 \" : \" 且 \"}${conditionalOperators[condition.operator]}${condition.operator === \"empty\" || condition.operator === \"notEmpty\" ? \"\" : ` ${condition.value ?? \"\"}`}${condition.operator === \"between\" ? ` ~ ${condition.endValue ?? \"\"}` : \"\"}`,\n )\n .join(\"\");\n}\n\n/** 兼容已保存的单条件规则。 */\nfunction resolveConditions(\n rule: ListTableConditionalFormatRule,\n): ListTableConditionalFormatCondition[] {\n return (\n rule.conditions ??\n (rule.operator\n ? [\n {\n operator: rule.operator,\n value: rule.value,\n endValue: rule.endValue,\n },\n ]\n : [])\n );\n}\n\n/** 检查每项条件,空列表不允许保存。 */\nexport function validateConditionalRule(\n rule: ListTableConditionalFormatRule,\n): string | null {\n const conditions = resolveConditions(rule);\n if (!conditions.length) return \"请至少添加一个条件。\";\n for (const [index, condition] of conditions.entries()) {\n const error = validateCondition(condition);\n if (error) return `条件 ${index + 1}:${error}`;\n }\n return null;\n}\n\n/** 检查条件输入,数值范围按原始数值比较。 */\nfunction validateCondition(\n rule: ListTableConditionalFormatCondition,\n): string | null {\n if (rule.operator === \"empty\" || rule.operator === \"notEmpty\") return null;\n if (String(rule.value ?? \"\").trim() === \"\")\n return \"请输入比较值;空值请使用“为空”条件。\";\n if ([\"gt\", \"gte\", \"lt\", \"lte\", \"between\"].includes(rule.operator)) {\n if (!Number.isFinite(Number(rule.value))) return \"请输入有效数值。\";\n if (\n rule.operator === \"between\" &&\n (String(rule.endValue ?? \"\").trim() === \"\" ||\n !Number.isFinite(Number(rule.endValue)) ||\n Number(rule.endValue) < Number(rule.value))\n )\n return \"请输入不小于起始值的结束数值。\";\n }\n return null;\n}\n\n/** 当前列条件格式编辑弹窗,确认前不修改表格。 */\nexport function ConditionalFormatDialog(props: {\n request: HeaderContextMenuConfig;\n index: number | null;\n onClose: () => void;\n}) {\n const rules = props.request.conditionalFormats ?? [];\n const [rule, setRule] = useState<ListTableConditionalFormatRule>(() =>\n props.index == null\n ? {\n id: `rule-${Date.now()}-${Math.random().toString(36).slice(2)}`,\n operator: \"gt\",\n value: \"\",\n backgroundColor: \"#fff1b8\",\n textColor: \"#1f2329\",\n }\n : { ...rules[props.index] },\n );\n const [error, setError] = useState<string | null>(null);\n const conditions = resolveConditions(rule);\n const patch = (value: Partial<ListTableConditionalFormatRule>) => {\n setRule((current) => ({ ...current, ...value }));\n setError(null);\n };\n const apply = (next: ListTableConditionalFormatRule[]) => {\n props.request.onChangeConditionalFormats?.(next);\n props.onClose();\n };\n const patchCondition = (\n index: number,\n value: Partial<ListTableConditionalFormatCondition>,\n ) => {\n patch({\n conditions: conditions.map((condition, i) =>\n i === index ? { ...condition, ...value } : condition,\n ),\n });\n };\n return (\n <ReactModal\n open\n title={props.index == null ? \"新增条件格式规则\" : \"编辑条件格式规则\"}\n width={460}\n onCancel={props.onClose}\n onOk={() => {\n const message = validateConditionalRule(rule);\n if (message) {\n setError(message);\n return;\n }\n const next = rules.map((item) => ({ ...item }));\n if (props.index == null) next.push(rule);\n else next[props.index] = rule;\n apply(next);\n }}\n okText=\"保存规则\"\n cancelText=\"取消\"\n >\n <div style={{ display: \"grid\", gap: 14, fontSize: 14 }}>\n <div style={{ color: \"#64748b\" }}>\n 仅当前列生效;从上到下匹配,首条命中的背景生效。 条件之间可分别设置“且\n / 或”,且优先于或。\n </div>\n <label>\n 规则名称(可选)\n <ReactInput\n value={rule.name ?? \"\"}\n onChange={(event) => patch({ name: event.target.value })}\n />\n </label>\n <div\n style={{\n display: \"grid\",\n gap: 12,\n maxHeight: \"35vh\",\n overflowY: \"auto\",\n }}\n >\n {conditions.map((condition, index) => (\n <Fragment key={index}>\n {index > 0 && (\n <ReactSelect\n aria-label={`条件 ${index} 与条件 ${index + 1} 的关系`}\n value={condition.relation ?? rule.conditionRelation ?? \"and\"}\n options={[\n { value: \"and\", label: \"且\" },\n { value: \"or\", label: \"或\" },\n ]}\n onChange={(value) =>\n patchCondition(index, { relation: value as \"and\" | \"or\" })\n }\n style={{ width: 88, justifySelf: \"center\" }}\n />\n )}\n <div\n style={{\n display: \"grid\",\n gap: 8,\n padding: 12,\n border: \"1px solid #d9e1ec\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <span>条件 {index + 1}</span>\n <ReactButton\n type=\"text\"\n size=\"small\"\n disabled={conditions.length === 1}\n aria-label={`删除条件 ${index + 1}`}\n onClick={() =>\n patch({\n conditions: conditions.filter((_, i) => i !== index),\n })\n }\n >\n 删除条件\n </ReactButton>\n </div>\n <ReactSelect\n aria-label={`条件 ${index + 1} 比较方式`}\n value={condition.operator}\n options={Object.entries(conditionalOperators).map(\n ([value, label]) => ({ value, label }),\n )}\n onChange={(value) =>\n patchCondition(index, {\n operator: value as ListTableConditionalOperator,\n })\n }\n />\n {condition.operator !== \"empty\" &&\n condition.operator !== \"notEmpty\" && (\n <label>\n 比较值\n <ReactInput\n value={String(condition.value ?? \"\")}\n onChange={(event) =>\n patchCondition(index, { value: event.target.value })\n }\n />\n </label>\n )}\n {condition.operator === \"between\" && (\n <label>\n 结束值\n <ReactInput\n value={String(condition.endValue ?? \"\")}\n onChange={(event) =>\n patchCondition(index, { endValue: event.target.value })\n }\n />\n </label>\n )}\n </div>\n </Fragment>\n ))}\n </div>\n <ReactButton\n onClick={() =>\n patch({\n conditions: [\n ...conditions,\n { operator: \"gt\", value: \"\", relation: \"and\" },\n ],\n })\n }\n >\n 新增条件\n </ReactButton>\n <label style={{ display: \"grid\", gap: 4 }}>\n 单元格背景\n <ReactColorPicker\n aria-label=\"单元格背景\"\n value={rule.backgroundColor}\n onChange={(backgroundColor) => patch({ backgroundColor })}\n />\n </label>\n <label style={{ display: \"grid\", gap: 4 }}>\n 文本颜色\n <ReactColorPicker\n aria-label=\"文本颜色\"\n value={rule.textColor}\n onChange={(textColor) => patch({ textColor })}\n />\n </label>\n <div\n style={{\n padding: \"8px 12px\",\n backgroundColor: rule.backgroundColor,\n color: rule.textColor,\n border: \"1px solid #d9e1ec\",\n }}\n >\n 样式预览:{describeConditionalRule(rule)}\n </div>\n {error && (\n <div role=\"alert\" style={{ color: \"#cf1322\" }}>\n {error}\n </div>\n )}\n {props.index != null && (\n <ReactButton\n type=\"text\"\n danger\n onClick={() =>\n apply(rules.filter((_, index) => index !== props.index))\n }\n >\n 删除此规则\n </ReactButton>\n )}\n </div>\n </ReactModal>\n );\n}\n","import type { HeaderContextMenuConfig } from \"@canvas-components/list-table\";\n\n/** 本地缓存菜单项。 */\ninterface CacheMenuItem {\n key: string;\n label: string;\n selected: boolean;\n disabled: boolean;\n title?: string;\n onClick: () => void;\n}\n\n/** 仅列出真正持久化的配置,两个列设置入口共享同一开关。 */\nexport function buildCacheMenuItems(\n request: HeaderContextMenuConfig,\n): CacheMenuItem[] {\n const available = request.columnSettingsCacheAvailable === true;\n const items: CacheMenuItem[] = [];\n const state = {\n disabled: !available,\n title: available ? undefined : \"配置 storageKey 后可缓存配置\",\n };\n if (request.onChangeColumnSettingsCache)\n items.push({\n ...state,\n key: \"cache-columns\",\n label: \"列设置\",\n selected: available && request.cacheColumnSettings === true,\n onClick: () =>\n request.onChangeColumnSettingsCache?.(!request.cacheColumnSettings),\n });\n if (request.onChangeCachePreference) {\n const categories = [\n [\"sort\", \"排序\"],\n [\"filter\", \"筛选\"],\n [\"summary\", \"汇总\"],\n [\"alignment\", \"对齐\"],\n [\"dataFormat\", \"格式\"],\n [\"density\", \"表格密度\"],\n [\"zoom\", \"缩放\"],\n [\"scrollbar\", \"滚动条\"],\n ] as const;\n for (const [category, label] of categories)\n items.push({\n ...state,\n key: `cache-${category}`,\n label,\n selected: available && request.cachePreferences?.[category] !== false,\n onClick: () =>\n request.onChangeCachePreference?.(\n category,\n request.cachePreferences?.[category] === false,\n ),\n });\n }\n if (request.onChangeConditionalFormats)\n items.push({\n ...state,\n key: \"cache-conditional\",\n label: \"当前列条件格式\",\n selected: available && request.cacheConditionalFormats !== false,\n onClick: () =>\n request.onChangeConditionalFormats?.(\n request.conditionalFormats ?? [],\n request.cacheConditionalFormats === false,\n ),\n });\n return items;\n}\n","import type {\n CanvasChartGaugeOption,\n CanvasChartPieOption,\n CanvasChartRadarOption,\n CanvasChartSparklineOption,\n} from \"@canvas-components/chart\";\nimport type { ListTableChartData } from \"@canvas-components/list-table\";\n\nexport type SelectionChartType =\n | \"line\"\n | \"step-line\"\n | \"bump\"\n | \"area\"\n | \"stacked-area\"\n | \"bar\"\n | \"stacked-bar\"\n | \"horizontal-bar\"\n | \"stacked-horizontal-bar\"\n | \"mixed\"\n | \"pie\"\n | \"donut\"\n | \"rose\"\n | \"half-donut\"\n | \"radar\"\n | \"gauge\";\n\nexport type SelectionChartConfig =\n | { type: \"sparkline\"; option: CanvasChartSparklineOption }\n | { type: \"pie\"; option: CanvasChartPieOption }\n | { type: \"radar\"; option: CanvasChartRadarOption }\n | { type: \"gauge\"; option: CanvasChartGaugeOption };\n\nexport const SELECTION_CHART_TYPES: Array<{\n value: SelectionChartType;\n label: string;\n}> = [\n { value: \"line\", label: \"折线图\" },\n { value: \"step-line\", label: \"阶梯折线图\" },\n { value: \"bump\", label: \"凹凸图(排名)\" },\n { value: \"area\", label: \"面积图\" },\n { value: \"stacked-area\", label: \"堆积面积图\" },\n { value: \"bar\", label: \"柱状图\" },\n { value: \"stacked-bar\", label: \"堆积柱状图\" },\n { value: \"horizontal-bar\", label: \"条形图\" },\n { value: \"stacked-horizontal-bar\", label: \"堆积条形图\" },\n { value: \"mixed\", label: \"柱线混合图\" },\n { value: \"pie\", label: \"饼图\" },\n { value: \"donut\", label: \"环形图\" },\n { value: \"rose\", label: \"玫瑰图\" },\n { value: \"half-donut\", label: \"半环形图\" },\n { value: \"radar\", label: \"雷达图\" },\n { value: \"gauge\", label: \"仪表盘\" },\n];\n\nconst COLORS = [\"#1677ff\", \"#13c2c2\", \"#fa8c16\", \"#722ed1\", \"#eb2f96\"];\n\n/** 比较图表数据内容,避免轮询到相同结果时重复启动过渡动画。 */\nexport function isSameSelectionChartData(\n left: ListTableChartData | null,\n right: ListTableChartData | null,\n) {\n if (left === right) return true;\n if (!left || !right) return false;\n if (\n left.labels.length !== right.labels.length ||\n left.keys?.length !== right.keys?.length ||\n left.series.length !== right.series.length\n ) {\n return false;\n }\n if (left.labels.some((label, index) => label !== right.labels[index])) {\n return false;\n }\n if (left.keys?.some((key, index) => key !== right.keys?.[index])) {\n return false;\n }\n return left.series.every(\n (series, index) =>\n series.name === right.series[index]?.name &&\n series.data.length === right.series[index]?.data.length &&\n series.data.every(\n (value, valueIndex) => value === right.series[index]?.data[valueIndex],\n ),\n );\n}\n\n/** 将选区数值转换为现有 CanvasChart 的图表配置。 */\nexport function createSelectionChartOption(\n data: ListTableChartData,\n chartType: SelectionChartType,\n seriesIndex = 0,\n): SelectionChartConfig {\n const activeSeries =\n data.series[Math.min(seriesIndex, data.series.length - 1)]!;\n if ([\"pie\", \"donut\", \"rose\", \"half-donut\"].includes(chartType)) {\n const option: CanvasChartPieOption = {\n color: COLORS,\n legend: { show: true, orient: \"vertical\", left: \"right\", top: \"middle\" },\n tooltip: { show: true },\n series: {\n type: \"pie\",\n name: activeSeries.name,\n data: data.labels.map((name, index) => ({\n name,\n key: data.keys?.[index],\n value: Math.max(activeSeries.data[index] ?? 0, 0),\n })),\n radius:\n chartType === \"pie\" || chartType === \"rose\" ? \"62%\" : [\"28%\", \"62%\"],\n center: [\"39%\", \"50%\"],\n roseType: chartType === \"rose\" ? \"radius\" : undefined,\n startAngle: chartType === \"half-donut\" ? 180 : undefined,\n endAngle: chartType === \"half-donut\" ? 360 : undefined,\n label: { show: true, position: \"outside\" },\n labelLine: { show: true },\n },\n };\n return { type: \"pie\", option };\n }\n if (chartType === \"radar\") {\n const labels = data.labels.slice(0, 12);\n const series = data.series.slice(0, 5);\n const maximum = Math.max(\n 1,\n ...series.flatMap((item) => item.data.slice(0, labels.length)),\n );\n const option: CanvasChartRadarOption = {\n categoryKeys: data.keys?.slice(0, labels.length),\n color: COLORS,\n radar: {\n indicator: labels.map((name) => ({\n name,\n max: Math.ceil(maximum * 1.1),\n })),\n radius: \"58%\",\n center: [\"50%\", \"55%\"],\n splitNumber: 4,\n },\n legend: { show: series.length > 1 },\n tooltip: { show: true },\n series: {\n type: \"radar\",\n data: series.map((item) => ({\n name: item.name,\n value: item.data.slice(0, labels.length),\n areaStyle: { opacity: 0.12 },\n })),\n },\n };\n return { type: \"radar\", option };\n }\n if (chartType === \"gauge\") {\n const value = activeSeries.data[0] ?? 0;\n const option: CanvasChartGaugeOption = {\n color: COLORS,\n tooltip: { show: true },\n series: {\n type: \"gauge\",\n name: activeSeries.name,\n data: [{ name: data.labels[0] ?? activeSeries.name, value }],\n min: Math.min(0, value),\n max: Math.max(100, Math.ceil(value * 1.2)),\n radius: \"68%\",\n progress: { show: true },\n pointer: { show: true },\n detail: { show: true },\n },\n };\n return { type: \"gauge\", option };\n }\n\n const horizontal = chartType.includes(\"horizontal\");\n const stacked = chartType.startsWith(\"stacked\");\n const area = chartType.includes(\"area\");\n const bumpData = chartType === \"bump\" ? resolveBumpRanks(data) : null;\n const option: CanvasChartSparklineOption = {\n categoryKeys: data.keys,\n grid: {\n show: true,\n left: 20,\n right: 20,\n top: 36,\n bottom: 28,\n containLabel: true,\n },\n legend: { show: data.series.length > 1 },\n xAxis: horizontal\n ? { show: true, type: \"value\" }\n : { show: true, type: \"category\", data: data.labels },\n yAxis: horizontal\n ? { show: true, type: \"category\", data: data.labels }\n : {\n show: true,\n type: \"value\",\n min: bumpData ? 1 : undefined,\n max: bumpData ? data.series.length : undefined,\n inverse: Boolean(bumpData),\n splitNumber: bumpData\n ? Math.max(data.series.length - 1, 1)\n : undefined,\n axisLabel: bumpData\n ? { formatter: (value: string | number) => `第${value}名` }\n : undefined,\n splitLine: { show: true },\n },\n tooltip: { show: true, trigger: \"axis\" },\n series: data.series.map((series, index) => {\n const color = COLORS[index % COLORS.length];\n const isBar =\n chartType === \"mixed\" ? index % 2 === 0 : chartType.includes(\"bar\");\n return isBar\n ? {\n type: \"bar\" as const,\n name: series.name,\n data: series.data,\n stack: stacked ? \"total\" : undefined,\n itemStyle: { color },\n }\n : {\n type: \"line\" as const,\n name: series.name,\n data: bumpData?.[index] ?? series.data,\n stack: stacked ? \"total\" : undefined,\n lineStyle: { color, width: 2 },\n step: chartType === \"step-line\" ? \"end\" : undefined,\n showSymbol: chartType === \"bump\",\n symbolSize: chartType === \"bump\" ? 7 : undefined,\n areaStyle: area\n ? { color, opacity: stacked ? 0.35 : 0.16 }\n : undefined,\n };\n }),\n };\n return { type: \"sparkline\", option };\n}\n\n/** 按每个类别的数值降序生成名次,数值相同按原系列顺序稳定排序。 */\nfunction resolveBumpRanks(data: ListTableChartData) {\n const ranks = data.series.map(() => [] as number[]);\n data.labels.forEach((_, dataIndex) => {\n const order = data.series\n .map((series, seriesIndex) => ({\n seriesIndex,\n value: series.data[dataIndex] ?? Number.NEGATIVE_INFINITY,\n }))\n .sort(\n (left, right) =>\n right.value - left.value || left.seriesIndex - right.seriesIndex,\n );\n order.forEach(({ seriesIndex }, rankIndex) => {\n ranks[seriesIndex]![dataIndex] = rankIndex + 1;\n });\n });\n return ranks;\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { CanvasChart } from \"@canvas-components/chart\";\nimport { ReactModal, ReactSelect } from \"@canvas-components/react-components\";\nimport type { ListTableChartData } from \"@canvas-components/list-table\";\nimport {\n createSelectionChartOption,\n isSameSelectionChartData,\n SELECTION_CHART_TYPES,\n type SelectionChartType,\n} from \"./chart-options\";\n\n/** 从右键选区创建的可拖动图表预览。 */\nexport function ChartDialog(props: {\n data: ListTableChartData | null;\n getData?: () => ListTableChartData | null;\n onClose: () => void;\n}) {\n const [data, setData] = useState(props.data);\n const [chartType, setChartType] = useState<SelectionChartType>(\"line\");\n const [seriesIndex, setSeriesIndex] = useState(0);\n const [ready, setReady] = useState(false);\n const chartHostRef = useRef<HTMLDivElement | null>(null);\n const chartRef = useRef<CanvasChart | null>(null);\n const chartConfig = useMemo(() => {\n if (!data) return null;\n return createSelectionChartOption(data, chartType, seriesIndex);\n }, [chartType, data, seriesIndex]);\n\n useEffect(() => {\n if (!props.getData) return;\n const timer = globalThis.setInterval(() => {\n const next = props.getData?.() ?? null;\n setData((current) =>\n isSameSelectionChartData(current, next) ? current : next,\n );\n }, 500);\n return () => globalThis.clearInterval(timer);\n }, [props.getData]);\n\n useEffect(() => {\n if (!data && chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n }, [data]);\n\n useEffect(() => {\n if (!ready || !chartConfig || !chartHostRef.current) return;\n let chart = chartRef.current;\n if (!chart) {\n chart = new CanvasChart(chartHostRef.current, {\n type: chartConfig.type,\n option: chartConfig.option,\n animation: { duration: 720, easing: \"linear\" },\n });\n chart.mount();\n chartRef.current = chart;\n } else {\n chart.updateOptions({\n type: chartConfig.type,\n option: chartConfig.option,\n animation: { duration: 720, easing: \"linear\" },\n });\n }\n }, [chartConfig, ready]);\n\n useEffect(\n () => () => {\n chartRef.current?.destroy();\n chartRef.current = null;\n },\n [],\n );\n\n return (\n <ReactModal\n open\n title=\"创建图表\"\n width={760}\n centered\n draggable\n resizable\n mask={false}\n footer={false}\n onCancel={props.onClose}\n afterOpenChange={setReady}\n bodyStyle={{ padding: \"12px 20px 20px\", display: \"flex\" }}\n >\n {data ? (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n minHeight: 0,\n gap: 12,\n }}\n >\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n whiteSpace: \"nowrap\",\n }}\n >\n 图表类型\n <ReactSelect\n value={chartType}\n allowClear={false}\n options={SELECTION_CHART_TYPES}\n onChange={(value) => setChartType(value as SelectionChartType)}\n style={{ width: 180 }}\n />\n </label>\n {data.series.length > 1 &&\n (\n [\n \"pie\",\n \"donut\",\n \"rose\",\n \"half-donut\",\n \"gauge\",\n ] as SelectionChartType[]\n ).includes(chartType) ? (\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n whiteSpace: \"nowrap\",\n }}\n >\n 数据系列\n <ReactSelect\n value={seriesIndex}\n allowClear={false}\n options={data.series.map((series, index) => ({\n value: index,\n label: series.name,\n }))}\n onChange={(value) => setSeriesIndex(Number(value))}\n style={{ width: 180 }}\n />\n </label>\n ) : null}\n <div\n ref={chartHostRef}\n style={{\n width: \"100%\",\n height: 400,\n flex: \"1 1 200px\",\n minHeight: 160,\n }}\n />\n </div>\n ) : (\n <div style={{ padding: \"24px 0\" }}>当前选区没有可绘制的数值数据。</div>\n )}\n </ReactModal>\n );\n}\n","import type {\n HeaderContextMenuDensity,\n ListTableDensity,\n} from \"@canvas-components/list-table\";\n\n/** 标题行与右键菜单共用的表格密度选项。 */\nexport const TABLE_DENSITY_OPTIONS: ReadonlyArray<{\n key: string;\n label: string;\n mode: HeaderContextMenuDensity;\n rowHeight: ListTableDensity;\n}> = [\n {\n key: \"density-comfortable\",\n label: \"宽松\",\n mode: \"comfortable\",\n rowHeight: 56,\n },\n { key: \"density-middle\", label: \"中等\", mode: \"middle\", rowHeight: 48 },\n { key: \"density-compact\", label: \"紧凑\", mode: \"compact\", rowHeight: 32 },\n {\n key: \"density-ultra-compact\",\n label: \"超紧凑\",\n mode: \"ultra-compact\",\n rowHeight: 26,\n },\n { key: \"density-auto\", label: \"自适应\", mode: \"auto\", rowHeight: \"auto\" },\n];\n","import {\n Fragment,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport {\n ConditionalFormatDialog,\n describeConditionalRule,\n} from \"./conditional-format-dialog\";\nimport { buildCacheMenuItems } from \"./cache-menu\";\nimport { ChartDialog } from \"./chart-dialog\";\nimport { TABLE_DENSITY_OPTIONS } from \"../density/density-options\";\nimport type {\n HeaderContextMenuColumnItem,\n HeaderContextMenuColumnDraft,\n HeaderContextMenuConfig,\n HeaderContextMenuDensity,\n ListTableDataFormat,\n ListTableDataFormatType,\n ListTableSummaryRoundingMode,\n} from \"@canvas-components/list-table\";\nimport {\n formatDateTimeValue,\n isDateTimeFormatPattern,\n} from \"@canvas-components/utils/date\";\nimport {\n formatCustomNumberPattern,\n formatNumberValue,\n formatPercentValue,\n formatScientificValue,\n} from \"@canvas-components/utils/number\";\nimport {\n ReactButton,\n ReactCheckbox,\n ReactInput,\n ReactInputNumber,\n ReactModal,\n ReactPopconfirm,\n ReactPopup,\n ReactSelect,\n ReactScrollbarSettingsDialog,\n ReactScrollbarPositionDialog,\n} from \"@canvas-components/react-components\";\n\nconst CONTEXT_MENU_SURFACE_STYLE: CSSProperties = {\n padding: 8,\n background: \"#ffffff\",\n boxShadow: \"0 8px 24px rgba(15, 23, 42, 0.16)\",\n fontSize: 14,\n};\n\nfunction ScrollbarModeMenu(props: {\n request: HeaderContextMenuConfig;\n onOpenSettings: () => void;\n}) {\n const { request, onOpenSettings } = props;\n return (\n <MenuSubmenu\n label=\"滚动条模式\"\n items={(\n [\n [\"scrollbar\", \"滚动条\"],\n [\"button\", \"按钮\"],\n ] as const\n ).map(([mode, label]) => ({\n key: `scrollbar-mode-${mode}`,\n label,\n selected: (request.scrollbar?.mode ?? \"scrollbar\") === mode,\n onClick: () => {\n request.onChangeScrollbar?.({\n ...request.scrollbar,\n mode,\n horizontal:\n request.scrollbar?.horizontal === false\n ? false\n : { ...request.scrollbar?.horizontal, mode },\n vertical:\n request.scrollbar?.vertical === false\n ? false\n : { ...request.scrollbar?.vertical, mode },\n });\n request.onClose();\n },\n }))}\n footer={\n <ReactButton onClick={onOpenSettings} style={{ width: \"100%\" }}>\n 配置滚动条属性\n </ReactButton>\n }\n />\n );\n}\n\nfunction ResetMenu(props: { request: HeaderContextMenuConfig }) {\n const { request } = props;\n return (\n <MenuSubmenu\n label=\"重置\"\n items={[\n {\n key: \"reset-filter\",\n label: \"重置筛选\",\n onClick: request.onResetFilter,\n },\n { key: \"reset-sort\", label: \"重置排序\", onClick: request.onResetSort },\n {\n key: \"reset-header\",\n label: \"重置表头配置\",\n onClick: request.onResetHeader,\n },\n {\n key: \"reset-grouping\",\n label: \"重置分组\",\n onClick: request.onResetGrouping,\n },\n {\n key: \"reset-summary\",\n label: \"重置汇总\",\n onClick: request.onResetSummary,\n },\n {\n key: \"reset-alignment\",\n label: \"重置对齐\",\n onClick: request.onResetAlignment,\n },\n {\n key: \"reset-data-format\",\n label: \"重置格式\",\n onClick: request.onResetDataFormat,\n },\n {\n key: \"reset-scrollbar\",\n label: \"重置滚动配置\",\n onClick: () => {\n request.onResetScrollbar?.();\n request.onClose();\n },\n },\n ]}\n />\n );\n}\n\nexport function ReactTableContextMenuView(props: {\n request: HeaderContextMenuConfig | null;\n}) {\n const { request } = props;\n const [closedRequest, setClosedRequest] =\n useState<HeaderContextMenuConfig | null>(null);\n const menuOpen = request !== null && closedRequest !== request;\n const setMenuOpen = (open: boolean) => {\n setClosedRequest(open ? null : request);\n };\n const [conditionalEditor, setConditionalEditor] = useState<{\n request: HeaderContextMenuConfig;\n index: number | null;\n } | null>(null);\n const conditionalDialog = conditionalEditor ? (\n <ConditionalFormatDialog\n {...conditionalEditor}\n onClose={() => {\n setConditionalEditor(null);\n conditionalEditor.request.onClose();\n }}\n />\n ) : null;\n const [moreFormatRequest, setMoreFormatRequest] =\n useState<HeaderContextMenuConfig | null>(null);\n const [scrollbarSettingsRequest, setScrollbarSettingsRequest] =\n useState<HeaderContextMenuConfig | null>(null);\n const [scrollbarPositionRequest, setScrollbarPositionRequest] =\n useState<HeaderContextMenuConfig | null>(null);\n const scrollbarDialog = scrollbarSettingsRequest ? (\n <ReactScrollbarSettingsDialog\n value={scrollbarSettingsRequest.scrollbar}\n onConfirm={(value) => {\n scrollbarSettingsRequest.onChangeScrollbar?.({\n ...scrollbarSettingsRequest.scrollbar,\n ...value,\n });\n setScrollbarSettingsRequest(null);\n }}\n onClose={() => setScrollbarSettingsRequest(null)}\n />\n ) : null;\n const scrollbarPositionDialog = scrollbarPositionRequest ? (\n <ReactScrollbarPositionDialog\n rowCount={scrollbarPositionRequest.scrollbarRowCount ?? 0}\n columnCount={scrollbarPositionRequest.scrollbarColumnCount ?? 0}\n onConfirm={(row, column) =>\n scrollbarPositionRequest.onScrollToPosition?.(row, column)\n }\n onClose={() => setScrollbarPositionRequest(null)}\n />\n ) : null;\n const [customSelectionRequest, setCustomSelectionRequest] =\n useState<HeaderContextMenuConfig | null>(null);\n const [chartRequest, setChartRequest] = useState<{\n request: HeaderContextMenuConfig;\n data: ReturnType<NonNullable<HeaderContextMenuConfig[\"onCreateChart\"]>>;\n } | null>(null);\n const [columnEditor, setColumnEditor] = useState<{\n request: HeaderContextMenuConfig;\n item: HeaderContextMenuColumnItem | null;\n parentItem: HeaderContextMenuColumnItem | null;\n } | null>(null);\n const columnDialogs = (\n <>\n {columnEditor ? (\n <ColumnEditorDialog\n key={columnEditor.item?.key ?? \"new\"}\n request={columnEditor.request}\n item={columnEditor.item}\n parentItem={columnEditor.parentItem}\n onClose={() => {\n setColumnEditor(null);\n columnEditor.request.onClose();\n }}\n />\n ) : null}\n </>\n );\n\n if (!request) {\n return (\n <>\n {scrollbarDialog}\n {scrollbarPositionDialog}\n {conditionalDialog}\n {columnDialogs}\n {moreFormatRequest ? (\n <MoreFormatDialog\n request={moreFormatRequest}\n onClose={() => setMoreFormatRequest(null)}\n />\n ) : null}\n {customSelectionRequest ? (\n <CustomSelectionDialog\n request={customSelectionRequest}\n onClose={() => {\n setCustomSelectionRequest(null);\n customSelectionRequest.onClose();\n }}\n />\n ) : null}\n {chartRequest ? (\n <ChartDialog\n data={chartRequest.data}\n getData={chartRequest.request.onCreateChart}\n onClose={() => {\n chartRequest.request.onClose();\n setChartRequest(null);\n }}\n />\n ) : null}\n </>\n );\n }\n\n const openScrollbarSettings = () => {\n setScrollbarSettingsRequest(request);\n request.onClose();\n };\n\n if (request.scrollbarArea) {\n return (\n <>\n {scrollbarDialog}\n {scrollbarPositionDialog}\n <ReactPopup\n constrainHeight\n open={menuOpen}\n anchorRect={{ x: request.x, y: request.y, width: 0, height: 0 }}\n minWidth={260}\n onOpenChange={(open) => {\n setMenuOpen(open);\n if (!open) request.onClose();\n }}\n surfaceStyle={{ ...CONTEXT_MENU_SURFACE_STYLE, width: 260 }}\n >\n <ScrollbarModeMenu\n request={request}\n onOpenSettings={openScrollbarSettings}\n />\n <MenuAction\n label=\"滚动到指定行 / 列\"\n onClick={() => {\n setScrollbarPositionRequest(request);\n request.onClose();\n }}\n />\n <ResetMenu request={request} />\n {buildCacheMenuItems(request).length > 0 ? (\n <MenuSubmenu\n label=\"缓存到本地\"\n items={buildCacheMenuItems(request)}\n />\n ) : null}\n </ReactPopup>\n </>\n );\n }\n\n const surfaceStyle: CSSProperties = {\n ...CONTEXT_MENU_SURFACE_STYLE,\n width: 260,\n };\n\n return (\n <>\n {scrollbarDialog}\n {scrollbarPositionDialog}\n {conditionalDialog}\n {columnDialogs}\n <ReactPopup\n constrainHeight\n open={menuOpen}\n anchorRect={{ x: request.x, y: request.y, width: 0, height: 0 }}\n minWidth={260}\n onOpenChange={(open) => {\n setMenuOpen(open);\n if (\n !open &&\n !moreFormatRequest &&\n !customSelectionRequest &&\n !chartRequest &&\n !conditionalEditor &&\n !columnEditor\n ) {\n request.onClose();\n }\n }}\n surfaceStyle={surfaceStyle}\n >\n <div>\n <MenuSubmenu\n label=\"复制\"\n items={[\n {\n key: \"copy-cell\",\n label: \"复制单元格\",\n onClick: request.onCopyCell,\n },\n {\n key: \"copy-column\",\n label: \"复制整列\",\n onClick: request.onCopyColumn,\n },\n {\n key: \"copy-row-text\",\n label: \"复制当前行文本\",\n onClick: request.onCopyRowText,\n },\n {\n key: \"copy-row-json\",\n label: \"复制当前行 JSON\",\n onClick: request.onCopyRowJson,\n },\n {\n key: \"copy-selection\",\n label: \"复制选区\",\n onClick: request.onCopySelection,\n },\n ...(request.onCopyImage\n ? [\n {\n key: \"copy-image-all\",\n label: \"复制为图片 · 所有区域\",\n separatorBefore: true,\n title:\n \"当前已加载并经过排序过滤的全部数据,不请求未加载的服务端数据\",\n onClick: () => request.onCopyImage?.(\"all\"),\n },\n {\n key: \"copy-image-selection\",\n label: \"复制为图片 · 选中区域\",\n disabled: !request.canCopySelectionImage,\n onClick: () => request.onCopyImage?.(\"selection\"),\n },\n {\n key: \"copy-image-viewport\",\n label: \"复制为图片 · 视口区域\",\n title:\n \"当前可见表格,包含表头和汇总行,不包含分页器和菜单\",\n onClick: () => request.onCopyImage?.(\"viewport\"),\n },\n ]\n : []),\n ]}\n >\n <CustomSelectionMenu\n request={request}\n onOpen={() => {\n setCustomSelectionRequest(request);\n setMenuOpen(false);\n }}\n />\n </MenuSubmenu>\n <MenuAction label=\"查找\" onClick={request.onOpenSearch} />\n <MenuAction\n label=\"创建图表\"\n onClick={\n request.onCreateChart\n ? () => {\n setChartRequest({\n request,\n data: request.onCreateChart?.() ?? null,\n });\n setMenuOpen(false);\n }\n : undefined\n }\n />\n <MenuSubmenu\n label=\"导出\"\n items={[\n {\n key: \"export-txt\",\n label: \"导出 TXT\",\n onClick: request.onExportTxt,\n },\n {\n key: \"export-csv\",\n label: \"导出 CSV\",\n onClick: request.onExportCsv,\n },\n {\n key: \"export-xlsx\",\n label: \"导出 XLSX\",\n onClick: request.onExportXlsx,\n },\n {\n key: \"export-json\",\n label: \"导出 JSON\",\n onClick: request.onExportJson,\n },\n ...(request.onExportImage\n ? [\n {\n key: \"export-image-all\",\n label: \"导出图片 · 所有区域\",\n separatorBefore: true,\n onClick: () => request.onExportImage?.(\"all\"),\n },\n {\n key: \"export-image-selection\",\n label: \"导出图片 · 选中区域\",\n disabled: !request.canCopySelectionImage,\n onClick: () => request.onExportImage?.(\"selection\"),\n },\n {\n key: \"export-image-viewport\",\n label: \"导出图片 · 视口区域\",\n onClick: () => request.onExportImage?.(\"viewport\"),\n },\n ]\n : []),\n ]}\n />\n <MenuAction\n label={request.downloadContentLabel ?? \"\"}\n onClick={request.onDownloadContent}\n />\n <MenuAction\n label={request.toggleExpandRowLabel ?? \"\"}\n onClick={request.onToggleExpandRow}\n />\n <MenuAction\n label=\"取消全部折叠行\"\n onClick={request.onExpandAllCollapsedRows}\n />\n <MenuAction\n label={request.toggleColumnLabel ?? \"\"}\n onClick={request.onToggleCurrentColumn}\n />\n <MenuSubmenu\n label=\"自动调整列宽\"\n items={[\n {\n key: \"auto-fit-current\",\n label: \"当前列\",\n onClick: request.onAutoFitCurrentColumn,\n },\n {\n key: \"auto-fit-all\",\n label: \"全部列\",\n onClick: request.onAutoFitAllColumns,\n },\n {\n key: \"auto-fit-fill-container\",\n label: \"自动铺满容器\",\n onClick: request.onAutoFitFillContainer,\n },\n ]}\n />\n <MenuAction\n label={request.groupingBarVisible ? \"隐藏分组栏\" : \"显示分组栏\"}\n onClick={request.onToggleGroupingBar}\n />\n <MenuAction\n label=\"取消全部折叠列\"\n onClick={request.onExpandAllCollapsedColumns}\n />\n <MenuAction\n label={request.summaryVisible ? \"隐藏汇总栏\" : \"显示汇总栏\"}\n onClick={request.onToggleSummary}\n />\n <SummaryMenu request={request} />\n <AlignmentMenu request={request} />\n {request.onChangeConditionalFormats && (\n <MenuSubmenu\n label=\"条件格式\"\n items={[\n {\n key: \"add-rule\",\n label: \"新增规则\",\n onClick: () => {\n setConditionalEditor({ request, index: null });\n setMenuOpen(false);\n },\n },\n {\n key: \"reset-rules\",\n label: \"重置条件格式\",\n disabled: !request.conditionalFormats?.length,\n onClick: () => request.onChangeConditionalFormats?.([]),\n },\n ]}\n header={\n <div style={{ display: \"grid\", gap: 4, paddingBottom: 8 }}>\n {request.conditionalFormats?.length ? (\n request.conditionalFormats.map((rule, index) => (\n <MenuAction\n key={rule.id}\n label={rule.name?.trim() || `规则 ${index + 1}`}\n colorSwatch={rule.backgroundColor}\n title={`${rule.name?.trim() || `规则 ${index + 1}`}:${describeConditionalRule(rule)}`}\n onClick={() => {\n setConditionalEditor({ request, index });\n setMenuOpen(false);\n }}\n />\n ))\n ) : (\n <span style={{ color: \"#64748b\", padding: 8 }}>\n 暂无规则\n </span>\n )}\n </div>\n }\n />\n )}\n <DataFormatMenu\n request={request}\n onOpenMoreFormat={() => {\n setMoreFormatRequest(request);\n setMenuOpen(false);\n }}\n />\n <MenuSubmenu\n label=\"冻结\"\n items={[\n {\n key: \"freeze-top\",\n label: \"冻结到顶部\",\n onClick: request.onFreezeRowTop,\n },\n {\n key: \"freeze-bottom\",\n label: \"冻结到底部\",\n onClick: request.onFreezeRowBottom,\n },\n {\n key: \"unfreeze\",\n label: \"取消冻结\",\n onClick: request.onUnfreezeRow,\n },\n ]}\n />\n <MenuSubmenu\n label=\"排序\"\n items={[\n {\n key: \"sort-ascend\",\n label: \"升序\",\n onClick: request.onSortAscend,\n },\n {\n key: \"sort-descend\",\n label: \"降序\",\n onClick: request.onSortDescend,\n },\n {\n key: \"sort-clear\",\n label: \"取消排序\",\n onClick: request.onClearSort,\n },\n ]}\n />\n <MenuSubmenu\n label=\"固定\"\n items={[\n {\n key: \"fix-left\",\n label: \"左侧\",\n onClick: request.onFixLeft,\n },\n {\n key: \"fix-right\",\n label: \"右侧\",\n onClick: request.onFixRight,\n },\n {\n key: \"unfix\",\n label: \"取消固定\",\n onClick: request.onUnfix,\n },\n ]}\n />\n <ResetMenu request={request} />\n <ScrollbarModeMenu\n request={request}\n onOpenSettings={openScrollbarSettings}\n />\n <MenuAction\n label=\"滚动到指定行 / 列\"\n onClick={() => {\n setScrollbarPositionRequest(request);\n request.onClose();\n }}\n />\n <DensityMenu\n value={request.density ?? \"middle\"}\n onChange={request.onChangeDensity}\n />\n <ZoomMenu value={request.zoom ?? 1} onChange={request.onChangeZoom} />\n <MenuSubmenu\n label=\"缓存到本地\"\n items={buildCacheMenuItems(request)}\n />\n {request.columns && request.onToggleColumn ? (\n <>\n <MenuDivider />\n <ColumnVisibilityMenu\n columns={request.columns}\n onToggle={request.onToggleColumn}\n onAdd={() => {\n setColumnEditor({ request, item: null, parentItem: null });\n setMenuOpen(false);\n }}\n onAddChild={(parentItem) => {\n setColumnEditor({ request, item: null, parentItem });\n setMenuOpen(false);\n }}\n onEdit={(item) => {\n setColumnEditor({ request, item, parentItem: null });\n setMenuOpen(false);\n }}\n onDelete={(item) => {\n request.onDeleteColumn?.(item.key);\n request.onClose();\n }}\n />\n </>\n ) : null}\n </div>\n </ReactPopup>\n {moreFormatRequest ? (\n <MoreFormatDialog\n request={moreFormatRequest}\n onClose={() => {\n setMoreFormatRequest(null);\n request.onClose();\n }}\n />\n ) : null}\n {customSelectionRequest ? (\n <CustomSelectionDialog\n request={customSelectionRequest}\n onClose={() => {\n setCustomSelectionRequest(null);\n customSelectionRequest.onClose();\n }}\n />\n ) : null}\n {chartRequest ? (\n <ChartDialog\n data={chartRequest.data}\n getData={chartRequest.request.onCreateChart}\n onClose={() => {\n chartRequest.request.onClose();\n setChartRequest(null);\n }}\n />\n ) : null}\n </>\n );\n}\n\nfunction MenuAction(props: {\n label: string;\n colorSwatch?: string;\n title?: string;\n preview?: string;\n onClick?: () => void;\n selected?: boolean;\n disabled?: boolean;\n reserveSelectionIcon?: boolean;\n}) {\n const { label, preview, onClick, selected, disabled, reserveSelectionIcon } =\n props;\n if (!onClick && !disabled) {\n return null;\n }\n\n return (\n <button\n type=\"button\"\n onClick={disabled ? undefined : onClick}\n disabled={disabled}\n title={props.title}\n className=\"react-list-table-menu-action\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n height: 32,\n padding: \"0 10px\",\n border: \"none\",\n borderRadius: 8,\n background: \"transparent\",\n color: disabled ? \"#9ca3af\" : \"#374151\",\n textAlign: \"left\",\n cursor: disabled ? \"default\" : \"pointer\",\n }}\n >\n {reserveSelectionIcon ? (\n <span\n aria-hidden=\"true\"\n style={{\n width: 16,\n flex: \"0 0 16px\",\n marginRight: 6,\n textAlign: \"center\",\n }}\n >\n {selected ? \"✓\" : \"\"}\n </span>\n ) : null}\n {props.colorSwatch ? (\n <span\n aria-hidden=\"true\"\n style={{\n width: 14,\n height: 14,\n flex: \"0 0 14px\",\n marginRight: 8,\n borderRadius: 2,\n backgroundColor: props.colorSwatch,\n boxShadow: \"inset 0 0 0 1px rgba(0, 0, 0, 0.12)\",\n }}\n />\n ) : null}\n <span\n style={{\n flex: 1,\n whiteSpace: \"nowrap\",\n ...(props.colorSwatch\n ? {\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }\n : null),\n }}\n >\n {label}\n </span>\n {preview ? (\n <span\n style={{ marginLeft: 16, color: \"#9ca3af\", whiteSpace: \"nowrap\" }}\n >\n {preview}\n </span>\n ) : null}\n </button>\n );\n}\n\ninterface MenuSubmenuItem {\n key: string;\n title?: string;\n label: string;\n preview?: string;\n selected?: boolean;\n disabled?: boolean;\n separatorBefore?: boolean;\n onClick?: () => void;\n}\n\nfunction MenuSubmenu(props: {\n label: string;\n items: MenuSubmenuItem[];\n header?: ReactNode;\n footer?: ReactNode;\n children?: ReactNode;\n minWidth?: number;\n}) {\n const { label, items, header, footer, children, minWidth = 220 } = props;\n const menuItems = items.filter((item) => item.onClick || item.disabled);\n const reserveSelectionIcon = menuItems.some(\n (item) => typeof item.selected === \"boolean\",\n );\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const [open, setOpen] = useState(false);\n const closeTimerRef = useRef<number | null>(null);\n\n if (!menuItems.length && !header && !footer && !children) {\n return null;\n }\n\n const clearCloseTimer = () => {\n if (closeTimerRef.current != null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n };\n\n const scheduleClose = () => {\n clearCloseTimer();\n closeTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n closeTimerRef.current = null;\n }, 120);\n };\n\n return (\n <div\n onMouseEnter={() => {\n clearCloseTimer();\n setOpen(true);\n }}\n onMouseLeave={() => {\n scheduleClose();\n }}\n >\n <button\n ref={triggerRef}\n type=\"button\"\n className=\"react-list-table-menu-action react-list-table-menu-action-submenu\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n height: 32,\n padding: \"0 10px\",\n border: \"none\",\n borderRadius: 8,\n background: \"transparent\",\n color: \"#374151\",\n textAlign: \"left\",\n cursor: \"pointer\",\n }}\n >\n <span>{label}</span>\n <span\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\n aria-hidden=\"true\"\n />\n </button>\n <ReactPopup\n constrainHeight\n open={open}\n anchorRef={triggerRef}\n placement=\"rightTop\"\n offset={2}\n minWidth={minWidth}\n onOpenChange={setOpen}\n surfaceStyle={{\n ...CONTEXT_MENU_SURFACE_STYLE,\n width: minWidth,\n }}\n >\n <div\n onMouseEnter={() => {\n clearCloseTimer();\n }}\n onMouseLeave={() => {\n scheduleClose();\n }}\n >\n {header}\n {menuItems.map((item) => (\n <Fragment key={item.key}>\n {item.separatorBefore ? <MenuDivider /> : null}\n <MenuAction\n label={item.label}\n title={item.title}\n preview={item.preview}\n onClick={item.onClick}\n selected={item.selected}\n disabled={item.disabled}\n reserveSelectionIcon={reserveSelectionIcon}\n />\n </Fragment>\n ))}\n {children}\n {footer}\n </div>\n </ReactPopup>\n </div>\n );\n}\n\nfunction DensityMenu(props: {\n value: HeaderContextMenuDensity;\n onChange?: (density: HeaderContextMenuDensity) => void;\n}) {\n const { value, onChange } = props;\n if (!onChange) {\n return null;\n }\n\n return (\n <MenuSubmenu\n label=\"表格密度\"\n items={TABLE_DENSITY_OPTIONS.map((option) => ({\n key: option.key,\n label: option.label,\n selected: value === option.mode,\n onClick: () => onChange(option.mode),\n }))}\n />\n );\n}\n\nconst CONTEXT_MENU_ZOOM_MIN = 50;\nconst CONTEXT_MENU_ZOOM_MAX = 200;\nconst CONTEXT_MENU_ZOOM_STEP = 10;\n\nfunction ZoomMenu(props: { value: number; onChange?: (zoom: number) => void }) {\n const { value, onChange } = props;\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const [open, setOpen] = useState(false);\n const closeTimerRef = useRef<number | null>(null);\n\n if (!onChange) {\n return null;\n }\n\n const percent = Math.round(value * 100);\n\n const clearCloseTimer = () => {\n if (closeTimerRef.current != null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n };\n\n const scheduleClose = () => {\n clearCloseTimer();\n closeTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n closeTimerRef.current = null;\n }, 120);\n };\n\n return (\n <div\n onMouseEnter={() => {\n clearCloseTimer();\n setOpen(true);\n }}\n onMouseLeave={() => {\n scheduleClose();\n }}\n >\n <button\n ref={triggerRef}\n type=\"button\"\n className=\"react-list-table-menu-action react-list-table-menu-action-submenu\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n height: 32,\n padding: \"0 10px\",\n border: \"none\",\n borderRadius: 8,\n background: \"transparent\",\n color: \"#374151\",\n textAlign: \"left\",\n cursor: \"pointer\",\n }}\n >\n <span>缩放</span>\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 8,\n color: \"#6b7280\",\n fontSize: 14,\n }}\n >\n <span>{percent}%</span>\n <span\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\n aria-hidden=\"true\"\n />\n </span>\n </button>\n <ReactPopup\n constrainHeight\n open={open}\n anchorRef={triggerRef}\n placement=\"rightTop\"\n offset={2}\n minWidth={280}\n onOpenChange={setOpen}\n surfaceStyle={{\n ...CONTEXT_MENU_SURFACE_STYLE,\n width: 280,\n }}\n >\n <div\n onMouseEnter={() => {\n clearCloseTimer();\n }}\n onMouseLeave={() => {\n scheduleClose();\n }}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n padding: \"4px 2px\",\n }}\n >\n <div\n style={{\n color: \"#6b7280\",\n fontSize: 14,\n padding: \"0 8px\",\n }}\n >\n 表格缩放(50% - 200%)\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"stretch\",\n gap: 6,\n padding: \"0 8px 4px\",\n }}\n >\n <ReactInputNumber\n value={percent}\n min={CONTEXT_MENU_ZOOM_MIN}\n max={CONTEXT_MENU_ZOOM_MAX}\n step={CONTEXT_MENU_ZOOM_STEP}\n precision={0}\n addonAfter=\"%\"\n style={{ flex: \"1 1 auto\", minWidth: 0 }}\n onChange={(next) => {\n if (next == null || !Number.isFinite(next)) {\n return;\n }\n onChange(Math.round(next) / 100);\n }}\n />\n <button\n type=\"button\"\n disabled={percent === 100}\n onClick={() => {\n onChange(1);\n }}\n className=\"react-list-table-menu-action\"\n style={{\n flex: \"0 0 52px\",\n height: 32,\n padding: 0,\n border: \"1px solid #d1d5db\",\n borderRadius: 6,\n background: \"#ffffff\",\n color: percent === 100 ? \"#9ca3af\" : \"#374151\",\n textAlign: \"center\",\n cursor: percent === 100 ? \"not-allowed\" : \"pointer\",\n }}\n >\n 重置\n </button>\n </div>\n </div>\n </ReactPopup>\n </div>\n );\n}\n\nfunction ColumnEditorDialog(props: {\n request: HeaderContextMenuConfig;\n item: HeaderContextMenuColumnItem | null;\n parentItem: HeaderContextMenuColumnItem | null;\n onClose: () => void;\n}) {\n const { item, parentItem, request } = props;\n const isUserColumn = item == null || item.userDefined === true;\n const [draft, setDraft] = useState<HeaderContextMenuColumnDraft>(() => ({\n key: item?.key,\n parentKey: parentItem?.key,\n title: item?.title ?? \"\",\n dataIndex: item?.dataIndex ?? \"\",\n width: item?.width ?? 160,\n minWidth: item?.minWidth ?? Math.min(40, item?.width ?? 160),\n maxWidth: item?.maxWidth ?? Math.max(2000, item?.width ?? 160),\n fixed: item?.fixed,\n sortOrder:\n item && (item.sortable === false || item.children?.length)\n ? undefined\n : item\n ? (request.sortState?.find((entry) => entry.key === item.key)\n ?.order ?? null)\n : null,\n order:\n item?.order ??\n (parentItem?.children?.length ?? request.columns?.length ?? 0) + 1,\n }));\n const [error, setError] = useState<string | null>(null);\n const update = (patch: Partial<HeaderContextMenuColumnDraft>) => {\n setDraft((current) => ({ ...current, ...patch }));\n setError(null);\n };\n const fieldStyle: CSSProperties = {\n display: \"grid\",\n gap: 6,\n color: \"#475569\",\n fontSize: 13,\n };\n\n return (\n <ReactModal\n open\n title={item ? \"编辑列\" : parentItem ? \"新增子列\" : \"新增列\"}\n width={440}\n centered\n fullscreenable={false}\n onCancel={props.onClose}\n onOk={() => {\n const nextError = request.onSaveColumn\n ? request.onSaveColumn(draft)\n : \"无法保存列配置\";\n if (nextError) {\n setError(nextError);\n } else {\n props.onClose();\n }\n }}\n bodyStyle={{ padding: \"4px 20px 20px\" }}\n >\n <div style={{ display: \"grid\", gap: 14 }}>\n <label style={fieldStyle}>\n <span>列名称</span>\n <ReactInput\n autoFocus\n value={draft.title}\n placeholder=\"请输入列名称\"\n onChange={(event) => update({ title: event.target.value })}\n />\n </label>\n {isUserColumn ? (\n <label style={fieldStyle}>\n <span>dataIndex(必填)</span>\n <ReactSelect\n value={draft.dataIndex ?? \"\"}\n placeholder=\"请选择数据字段\"\n showSearch\n allowClear={false}\n options={(request.dataIndexOptions ?? []).map((option) => ({\n label:\n option.disabled && option.label\n ? `${option.value}(${option.label})`\n : option.value,\n value: option.value,\n disabled: option.disabled && option.value !== item?.dataIndex,\n }))}\n onChange={(value) => update({ dataIndex: value })}\n />\n </label>\n ) : null}\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(3, minmax(0, 1fr))\",\n gap: 10,\n }}\n >\n {(\n [\n [\"默认宽度\", \"width\"],\n [\"最小宽度\", \"minWidth\"],\n [\"最大宽度\", \"maxWidth\"],\n ] as const\n ).map(([label, key]) => (\n <div key={key} style={fieldStyle}>\n <span>{label}(px)</span>\n <ReactInputNumber\n value={draft[key]}\n min={1}\n precision={0}\n onChange={(value) => update({ [key]: value ?? undefined })}\n style={{ width: \"100%\" }}\n />\n </div>\n ))}\n </div>\n <div style={fieldStyle}>\n <span>列顺序(同级,从 1 开始)</span>\n <ReactInputNumber\n value={draft.order}\n min={1}\n max={\n item?.siblingCount ??\n (parentItem?.children?.length ?? request.columns?.length ?? 0) + 1\n }\n precision={0}\n onChange={(value) => update({ order: value ?? undefined })}\n style={{ width: \"100%\" }}\n />\n </div>\n <div style={fieldStyle}>\n <span>排序方式</span>\n <ReactSelect\n value={draft.sortOrder ?? \"default\"}\n allowClear={false}\n disabled={\n item?.sortable === false || Boolean(item?.children?.length)\n }\n options={[\n { label: \"默认排序\", value: \"default\" },\n { label: \"升序\", value: \"ascend\" },\n { label: \"降序\", value: \"descend\" },\n ]}\n onChange={(value) =>\n update({\n sortOrder:\n value === \"ascend\" || value === \"descend\" ? value : null,\n })\n }\n />\n </div>\n {isUserColumn ? (\n <label style={fieldStyle}>\n <span>固定位置</span>\n <ReactSelect\n value={draft.fixed ?? \"none\"}\n allowClear={false}\n options={[\n { label: \"不固定\", value: \"none\" },\n { label: \"固定左侧\", value: \"left\" },\n { label: \"固定右侧\", value: \"right\" },\n ]}\n onChange={(value) =>\n update({\n fixed:\n value === \"none\" ? undefined : (value as \"left\" | \"right\"),\n })\n }\n />\n </label>\n ) : (\n <div style={{ color: \"#64748b\", fontSize: 12 }}>\n 代码传入的列不可修改 dataIndex、固定位置或删除。\n </div>\n )}\n {error ? (\n <div role=\"alert\" style={{ color: \"#dc2626\", fontSize: 12 }}>\n {error}\n </div>\n ) : null}\n </div>\n </ReactModal>\n );\n}\n\nfunction ColumnVisibilityMenu(props: {\n columns: HeaderContextMenuColumnItem[];\n onToggle: (columnKey: string, visible: boolean) => void;\n onAdd: () => void;\n onAddChild: (parent: HeaderContextMenuColumnItem) => void;\n onEdit: (item: HeaderContextMenuColumnItem) => void;\n onDelete: (item: HeaderContextMenuColumnItem) => void;\n}) {\n const { columns, onToggle, onAdd, onAddChild, onEdit, onDelete } = props;\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const [open, setOpen] = useState(false);\n const [deleteConfirmKey, setDeleteConfirmKey] = useState<string | null>(null);\n const closeTimerRef = useRef<number | null>(null);\n // 勾选列后锁定当前子菜单,允许继续调整其它列;点击外部时由 Popup 关闭。\n const keepOpenAfterToggleRef = useRef(false);\n\n const clearCloseTimer = () => {\n if (closeTimerRef.current != null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n };\n\n const scheduleClose = () => {\n if (deleteConfirmKey || keepOpenAfterToggleRef.current) return;\n clearCloseTimer();\n closeTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n closeTimerRef.current = null;\n }, 120);\n };\n\n const handleToggle = (columnKey: string, visible: boolean) => {\n clearCloseTimer();\n keepOpenAfterToggleRef.current = true;\n setOpen(true);\n onToggle(columnKey, visible);\n };\n\n return (\n <div\n onMouseEnter={() => {\n clearCloseTimer();\n setOpen(true);\n }}\n onMouseLeave={() => {\n scheduleClose();\n }}\n >\n <button\n ref={triggerRef}\n type=\"button\"\n className=\"react-list-table-menu-action react-list-table-menu-action-submenu\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n height: 32,\n padding: \"0 10px\",\n border: \"none\",\n borderRadius: 8,\n background: \"transparent\",\n color: \"#374151\",\n textAlign: \"left\",\n cursor: \"pointer\",\n }}\n >\n <span>列显示</span>\n <span\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\n aria-hidden=\"true\"\n />\n </button>\n <ReactPopup\n constrainHeight\n open={open}\n anchorRef={triggerRef}\n placement=\"rightTop\"\n offset={2}\n minWidth={300}\n onOpenChange={(nextOpen) => {\n if (!nextOpen) keepOpenAfterToggleRef.current = false;\n setOpen(nextOpen);\n }}\n surfaceClassName=\"canvas-react-scrollbar\"\n surfaceStyle={{\n ...CONTEXT_MENU_SURFACE_STYLE,\n maxHeight: 360,\n overflow: \"auto\",\n }}\n >\n <div\n onMouseEnter={() => {\n clearCloseTimer();\n }}\n onMouseLeave={() => {\n scheduleClose();\n }}\n >\n <div style={{ padding: \"4px 10px\" }}>\n <ReactButton\n type=\"default\"\n size=\"small\"\n onClick={onAdd}\n style={{ height: 32, width: \"100%\", padding: \"0 8px\" }}\n >\n 新增列\n </ReactButton>\n </div>\n <div style={{ borderTop: \"1px solid #e5e7eb\", margin: \"4px 0\" }} />\n {columns.map((column) => (\n <ColumnVisibilityItem\n key={column.key}\n item={column}\n onToggle={handleToggle}\n onAddChild={onAddChild}\n onEdit={onEdit}\n onDelete={onDelete}\n deleteConfirmKey={deleteConfirmKey}\n onDeleteConfirmOpenChange={(key) => {\n setDeleteConfirmKey(key);\n if (!key) setOpen(false);\n }}\n />\n ))}\n </div>\n </ReactPopup>\n </div>\n );\n}\n\nfunction ColumnVisibilityItem(props: {\n item: HeaderContextMenuColumnItem;\n onToggle: (columnKey: string, visible: boolean) => void;\n onAddChild: (parent: HeaderContextMenuColumnItem) => void;\n onEdit: (item: HeaderContextMenuColumnItem) => void;\n onDelete: (item: HeaderContextMenuColumnItem) => void;\n deleteConfirmKey: string | null;\n onDeleteConfirmOpenChange: (key: string | null) => void;\n}) {\n const {\n item,\n onToggle,\n onAddChild,\n onEdit,\n onDelete,\n deleteConfirmKey,\n onDeleteConfirmOpenChange,\n } = props;\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const [open, setOpen] = useState(false);\n const closeTimerRef = useRef<number | null>(null);\n // 多级表头的子菜单与顶层列显示菜单保持相同的连续勾选行为。\n const keepOpenAfterToggleRef = useRef(false);\n const hasChildren = !!item.children?.length;\n\n const clearCloseTimer = () => {\n if (closeTimerRef.current != null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n };\n\n const scheduleClose = () => {\n if (deleteConfirmKey || keepOpenAfterToggleRef.current) return;\n clearCloseTimer();\n closeTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n closeTimerRef.current = null;\n }, 120);\n };\n\n const handleToggle = (columnKey: string, visible: boolean) => {\n clearCloseTimer();\n keepOpenAfterToggleRef.current = true;\n onToggle(columnKey, visible);\n };\n\n return (\n <div\n ref={triggerRef}\n className=\"react-list-table-menu-row\"\n onMouseEnter={() => {\n if (hasChildren) {\n clearCloseTimer();\n setOpen(true);\n }\n }}\n onMouseLeave={() => {\n if (hasChildren) {\n scheduleClose();\n }\n }}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 8,\n minHeight: 32,\n padding: \"0 10px\",\n borderRadius: 8,\n color: item.disabled ? \"#9ca3af\" : \"#374151\",\n fontSize: 14,\n }}\n >\n <div style={{ flex: \"1 1 auto\", minWidth: 0 }}>\n <ReactCheckbox\n checked={item.checked}\n disabled={item.disabled}\n indeterminate={!!item.indeterminate}\n onChange={(event) => {\n handleToggle(item.key, !!event.target.checked);\n }}\n >\n {item.title}\n {item.dataIndex ? `(${item.dataIndex})` : \"\"}\n </ReactCheckbox>\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n flex: \"none\",\n marginLeft: \"auto\",\n }}\n >\n {item.userDefined ? (\n <ReactPopconfirm\n title={`确定删除列“${item.title}”吗?`}\n placement=\"rightTop\"\n okText=\"删除\"\n open={deleteConfirmKey === item.key}\n onOpenChange={(nextOpen) =>\n onDeleteConfirmOpenChange(nextOpen ? item.key : null)\n }\n onConfirm={() => onDelete(item)}\n >\n <a\n href=\"#\"\n title=\"删除列\"\n onClick={(event) => event.preventDefault()}\n style={{ color: \"#ff4d4f\", fontSize: 12, textDecoration: \"none\" }}\n >\n 删除\n </a>\n </ReactPopconfirm>\n ) : null}\n <a\n href=\"#\"\n title=\"编辑列\"\n onClick={(event) => {\n event.preventDefault();\n onEdit(item);\n }}\n style={{ color: \"#1677ff\", fontSize: 12, textDecoration: \"none\" }}\n >\n 编辑\n </a>\n {hasChildren ? (\n <span\n className={`react-list-table-menu-chevron${open ? \" react-list-table-menu-chevron-active\" : \"\"}`}\n aria-hidden=\"true\"\n />\n ) : null}\n </div>\n {hasChildren ? (\n <ReactPopup\n constrainHeight\n open={open}\n anchorRef={triggerRef}\n placement=\"rightTop\"\n offset={2}\n minWidth={300}\n onOpenChange={(nextOpen) => {\n if (!nextOpen) keepOpenAfterToggleRef.current = false;\n setOpen(nextOpen);\n }}\n surfaceClassName=\"canvas-react-scrollbar\"\n surfaceStyle={{\n ...CONTEXT_MENU_SURFACE_STYLE,\n maxHeight: 320,\n overflow: \"auto\",\n }}\n >\n <div\n onMouseEnter={() => {\n clearCloseTimer();\n }}\n onMouseLeave={() => {\n scheduleClose();\n }}\n >\n <div style={{ padding: \"4px 10px\" }}>\n <ReactButton\n type=\"default\"\n size=\"small\"\n onClick={() => onAddChild(item)}\n style={{ height: 32, width: \"100%\", padding: \"0 8px\" }}\n >\n 新增子列\n </ReactButton>\n </div>\n <div style={{ borderTop: \"1px solid #e5e7eb\", margin: \"4px 0\" }} />\n {item.children!.map((child) => (\n <ColumnVisibilityItem\n key={child.key}\n item={child}\n onToggle={handleToggle}\n onAddChild={onAddChild}\n onEdit={onEdit}\n onDelete={onDelete}\n deleteConfirmKey={deleteConfirmKey}\n onDeleteConfirmOpenChange={onDeleteConfirmOpenChange}\n />\n ))}\n </div>\n </ReactPopup>\n ) : null}\n </div>\n );\n}\n\nfunction MenuDivider() {\n return (\n <div\n style={{\n height: 1,\n margin: \"6px 0\",\n background: \"#f0f0f0\",\n }}\n />\n );\n}\n\nfunction CustomSelectionMenu(props: {\n request: HeaderContextMenuConfig;\n onOpen: () => void;\n}) {\n const { request } = props;\n if (!request.onCopyCustomSelection || !request.customSelection) {\n return null;\n }\n\n return <MenuAction label=\"复制自定义选区\" onClick={props.onOpen} />;\n}\n\nfunction CustomSelectionDialog(props: {\n request: HeaderContextMenuConfig;\n onClose: () => void;\n}) {\n const { request } = props;\n const initial = request.customSelection ?? {\n startRow: 1,\n startColumn: 1,\n endRow: 1,\n endColumn: 1,\n rowCount: 0,\n columnCount: 0,\n };\n const [range, setRange] = useState(initial);\n\n useEffect(() => {\n setRange(initial);\n }, [\n initial.startRow,\n initial.startColumn,\n initial.endRow,\n initial.endColumn,\n ]);\n\n if (!request.onCopyCustomSelection || !request.customSelection) {\n return null;\n }\n\n const update = (key: keyof typeof range, value: number | null) => {\n setRange((current) => ({\n ...current,\n [key]: value == null ? 1 : Math.floor(value),\n }));\n };\n\n return (\n <ReactModal\n open\n title=\"复制自定义选区\"\n width={360}\n centered\n fullscreenable={false}\n onCancel={props.onClose}\n onOk={() => {\n request.onCopyCustomSelection?.({\n startRow: Math.max(range.startRow, 1),\n startColumn: Math.max(range.startColumn, 1),\n endRow: Math.max(range.endRow, 1),\n endColumn: Math.max(range.endColumn, 1),\n });\n props.onClose();\n }}\n bodyStyle={{ padding: \"4px 20px 18px\" }}\n >\n <div style={{ color: \"#6b7280\", fontSize: 14, marginBottom: 10 }}>\n 输入起始位置和结束位置\n </div>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"38px 1fr 1fr\",\n gap: 8,\n marginBottom: 6,\n color: \"#6b7280\",\n fontSize: 14,\n textAlign: \"center\",\n }}\n >\n <span />\n <span>行</span>\n <span>列</span>\n </div>\n <CustomSelectionRow\n label=\"起始\"\n row={range.startRow}\n column={range.startColumn}\n onRowChange={(value) => update(\"startRow\", value)}\n onColumnChange={(value) => update(\"startColumn\", value)}\n />\n <CustomSelectionRow\n label=\"结束\"\n row={range.endRow}\n column={range.endColumn}\n onRowChange={(value) => update(\"endRow\", value)}\n onColumnChange={(value) => update(\"endColumn\", value)}\n />\n </ReactModal>\n );\n}\n\nfunction CustomSelectionRow(props: {\n label: string;\n row: number;\n column: number;\n onRowChange: (value: number | null) => void;\n onColumnChange: (value: number | null) => void;\n}) {\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"38px 1fr 1fr\",\n gap: 6,\n alignItems: \"center\",\n marginBottom: 6,\n }}\n >\n <span style={{ color: \"#374151\", fontSize: 14 }}>{props.label}</span>\n <ReactInputNumber\n className=\"react-list-table-custom-selection-input\"\n value={props.row}\n min={1}\n step={1}\n precision={0}\n placeholder=\"行\"\n onChange={props.onRowChange}\n />\n <ReactInputNumber\n className=\"react-list-table-custom-selection-input\"\n value={props.column}\n min={1}\n step={1}\n precision={0}\n placeholder=\"列\"\n onChange={props.onColumnChange}\n />\n </div>\n );\n}\n\nfunction SummaryMenu(props: { request: HeaderContextMenuConfig }) {\n const { request } = props;\n const [title, setTitle] = useState(request.summaryTitle ?? \"\");\n const [precision, setPrecision] = useState<number | null>(\n request.summaryPrecision ?? null,\n );\n const [roundingMode, setRoundingMode] =\n useState<ListTableSummaryRoundingMode>(\n request.summaryRoundingMode ?? \"round\",\n );\n const [preserveTrailingZeros, setPreserveTrailingZeros] = useState(\n request.summaryPreserveTrailingZeros ?? false,\n );\n\n useEffect(() => {\n setTitle(request.summaryTitle ?? \"\");\n setPrecision(request.summaryPrecision ?? null);\n setRoundingMode(request.summaryRoundingMode ?? \"round\");\n setPreserveTrailingZeros(request.summaryPreserveTrailingZeros ?? false);\n }, [\n request.summaryColumnKey,\n request.summaryTitle,\n request.summaryPrecision,\n request.summaryRoundingMode,\n request.summaryPreserveTrailingZeros,\n ]);\n\n if (!request.summaryColumnKey) {\n return null;\n }\n\n const summaryTypes: Array<{\n key: string;\n label: string;\n value: NonNullable<HeaderContextMenuConfig[\"summaryType\"]>;\n }> = [\n { key: \"sum\", label: \"求和\", value: \"sum\" },\n { key: \"avg\", label: \"平均值\", value: \"avg\" },\n { key: \"count\", label: \"计数\", value: \"count\" },\n { key: \"unionCount\", label: \"去重计数\", value: \"unionCount\" },\n { key: \"rowCount\", label: \"行数\", value: \"rowCount\" },\n { key: \"mergedRowCount\", label: \"合并行数\", value: \"mergedRowCount\" },\n { key: \"min\", label: \"最小值\", value: \"min\" },\n { key: \"max\", label: \"最大值\", value: \"max\" },\n ];\n return (\n <MenuSubmenu\n label=\"汇总方式\"\n minWidth={268}\n header={\n request.onChangeSummaryTitle ? (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"56px 1fr\",\n gap: 8,\n alignItems: \"center\",\n padding: \"2px 10px 10px\",\n marginBottom: 4,\n borderBottom: \"1px solid #e5e7eb\",\n }}\n >\n <span style={{ color: \"#374151\", fontSize: 14 }}>标题:</span>\n <ReactInput\n value={title}\n placeholder=\"请输入标题\"\n onChange={(event) => {\n const value = event.target.value;\n setTitle(value);\n request.onChangeSummaryTitle?.(value);\n }}\n />\n </div>\n ) : undefined\n }\n items={[\n ...summaryTypes.map((item) => ({\n key: item.key,\n label: item.label,\n selected: request.summaryType === item.value,\n onClick: () => request.onChangeSummaryType?.(item.value),\n })),\n {\n key: \"show-summary-type-prefix\",\n label: \"展示汇总方式前缀\",\n separatorBefore: true,\n selected: request.summaryShowTypePrefix !== false,\n disabled: !request.summaryType,\n onClick: request.onChangeSummaryShowTypePrefix\n ? () =>\n request.onChangeSummaryShowTypePrefix?.(\n request.summaryShowTypePrefix === false,\n )\n : undefined,\n },\n {\n key: \"clear-summary\",\n label: \"取消汇总\",\n separatorBefore: true,\n onClick: request.onClearSummary,\n },\n ]}\n footer={\n request.onChangeSummaryPrecision ||\n request.onChangeSummaryRoundingMode ||\n request.onChangeSummaryPreserveTrailingZeros ? (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"72px 1fr\",\n gap: 8,\n alignItems: \"center\",\n marginTop: 4,\n padding: \"10px 10px 2px\",\n borderTop: \"1px solid #e5e7eb\",\n }}\n >\n {request.onChangeSummaryPrecision ? (\n <>\n <span style={{ color: \"#374151\", fontSize: 14 }}>小数位数</span>\n <ReactInputNumber\n value={precision}\n min={0}\n max={20}\n step={1}\n precision={0}\n placeholder=\"默认\"\n onChange={setPrecision}\n onCommit={(value) => {\n request.onChangeSummaryPrecision?.(value ?? undefined);\n }}\n />\n </>\n ) : null}\n {request.onChangeSummaryRoundingMode ? (\n <>\n <span style={{ color: \"#374151\", fontSize: 14 }}>取整方式</span>\n <ReactSelect\n value={roundingMode}\n options={[\n { label: \"四舍五入\", value: \"round\" },\n { label: \"向下取整\", value: \"floor\" },\n { label: \"向上取整\", value: \"ceil\" },\n { label: \"舍去不处理\", value: \"truncate\" },\n ]}\n onChange={(value) => {\n const mode = value as ListTableSummaryRoundingMode;\n setRoundingMode(mode);\n request.onChangeSummaryRoundingMode?.(mode);\n }}\n />\n </>\n ) : null}\n {request.onChangeSummaryPreserveTrailingZeros ? (\n <>\n <span style={{ color: \"#374151\", fontSize: 14 }}>\n 保留无效零\n </span>\n <ReactSelect\n value={preserveTrailingZeros ? \"true\" : \"false\"}\n options={[\n { label: \"不保留\", value: \"false\" },\n { label: \"保留\", value: \"true\" },\n ]}\n onChange={(selectedValue) => {\n const value = selectedValue === \"true\";\n setPreserveTrailingZeros(value);\n request.onChangeSummaryPreserveTrailingZeros?.(value);\n }}\n />\n </>\n ) : null}\n </div>\n ) : undefined\n }\n />\n );\n}\n\nfunction AlignmentMenu(props: { request: HeaderContextMenuConfig }) {\n const { request } = props;\n if (!request.alignment || !request.onChangeAlignment) {\n return null;\n }\n\n return (\n <MenuSubmenu\n label=\"对齐方式\"\n items={[]}\n footer={\n <div style={{ display: \"grid\", gap: 10, padding: \"4px 8px\" }}>\n <AlignmentGroup\n label=\"表头\"\n horizontal={request.alignment.headerHorizontal}\n vertical={request.alignment.headerVertical}\n onHorizontalChange={(value) =>\n request.onChangeAlignment?.(\"header\", \"horizontal\", value)\n }\n onVerticalChange={(value) =>\n request.onChangeAlignment?.(\"header\", \"vertical\", value)\n }\n />\n <AlignmentGroup\n label=\"表体\"\n horizontal={request.alignment.bodyHorizontal}\n vertical={request.alignment.bodyVertical}\n onHorizontalChange={(value) =>\n request.onChangeAlignment?.(\"body\", \"horizontal\", value)\n }\n onVerticalChange={(value) =>\n request.onChangeAlignment?.(\"body\", \"vertical\", value)\n }\n />\n </div>\n }\n />\n );\n}\n\nfunction AlignmentGroup(props: {\n label: string;\n horizontal: \"left\" | \"center\" | \"right\";\n vertical: \"top\" | \"middle\" | \"bottom\";\n onHorizontalChange: (value: \"left\" | \"center\" | \"right\") => void;\n onVerticalChange: (value: \"top\" | \"middle\" | \"bottom\") => void;\n}) {\n return (\n <div style={{ display: \"grid\", gap: 6 }}>\n <strong style={{ color: \"#374151\", fontSize: 14 }}>{props.label}</strong>\n <AlignmentSegment\n label=\"水平\"\n value={props.horizontal}\n options={[\n { label: \"左\", value: \"left\" },\n { label: \"中\", value: \"center\" },\n { label: \"右\", value: \"right\" },\n ]}\n onChange={props.onHorizontalChange}\n />\n <AlignmentSegment\n label=\"垂直\"\n value={props.vertical}\n options={[\n { label: \"上\", value: \"top\" },\n { label: \"中\", value: \"middle\" },\n { label: \"下\", value: \"bottom\" },\n ]}\n onChange={props.onVerticalChange}\n />\n </div>\n );\n}\n\nfunction AlignmentSegment<Value extends string>(props: {\n label: string;\n value: Value;\n options: Array<{ label: string; value: Value }>;\n onChange: (value: Value) => void;\n}) {\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"40px repeat(3, 1fr)\",\n gap: 4,\n alignItems: \"center\",\n }}\n >\n <span style={{ color: \"#6b7280\", fontSize: 14 }}>{props.label}</span>\n {props.options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n className=\"react-list-table-menu-action\"\n style={{\n height: 28,\n border: \"1px solid #d1d5db\",\n borderRadius: 4,\n background: props.value === option.value ? \"#e8f3ff\" : \"#ffffff\",\n color: props.value === option.value ? \"#1677ff\" : \"#374151\",\n cursor: \"pointer\",\n }}\n onClick={() => props.onChange(option.value)}\n >\n {option.label}\n </button>\n ))}\n </div>\n );\n}\n\nfunction DataFormatMenu(props: {\n request: HeaderContextMenuConfig;\n onOpenMoreFormat: () => void;\n}) {\n const { request } = props;\n\n if (!request.onChangeDataFormat) {\n return null;\n }\n\n return (\n <>\n <MenuSubmenu\n label=\"格式\"\n minWidth={340}\n items={(\n [\n { key: \"default\", label: \"常规\", value: \"default\" },\n { key: \"text\", label: \"纯文本\", value: \"text\" },\n {\n key: \"number\",\n label: \"数字\",\n preview: \"1024\",\n value: \"number\",\n separatorBefore: true,\n },\n {\n key: \"thousands\",\n label: \"数字(千分位)\",\n preview: \"1,024\",\n value: \"thousands\",\n },\n {\n key: \"decimal\",\n label: \"数字(千分位,小数点)\",\n preview: \"1,024.56\",\n value: \"decimal\",\n },\n {\n key: \"percent\",\n label: \"百分比\",\n preview: \"10%\",\n value: \"percent\",\n separatorBefore: true,\n },\n {\n key: \"percentDecimal\",\n label: \"百分比(小数点)\",\n preview: \"10.24%\",\n value: \"percentDecimal\",\n },\n {\n key: \"scientific\",\n label: \"科学记数\",\n preview: \"1.02E+003\",\n value: \"scientific\",\n },\n {\n key: \"numberToChineseUpper\",\n label: \"数字转大写\",\n preview: \"玖拾壹万捌仟\",\n value: \"numberToChineseUpper\",\n },\n {\n key: \"chineseUpperToNumber\",\n label: \"大写转数字\",\n preview: \"918000\",\n value: \"chineseUpperToNumber\",\n },\n {\n key: \"cny\",\n label: \"人民币\",\n preview: \"¥1,024\",\n value: \"cny\",\n separatorBefore: true,\n },\n {\n key: \"cnyDecimal\",\n label: \"人民币(小数点)\",\n preview: \"¥1,024.56\",\n value: \"cnyDecimal\",\n },\n {\n key: \"usd\",\n label: \"美元\",\n preview: \"$1,024\",\n value: \"usd\",\n },\n {\n key: \"usdDecimal\",\n label: \"美元(小数点)\",\n preview: \"$1,024.56\",\n value: \"usdDecimal\",\n },\n {\n key: \"dateSlash\",\n label: \"日期(斜杠)\",\n preview: \"2017/08/01\",\n value: \"dateSlash\",\n separatorBefore: true,\n },\n {\n key: \"dateDash\",\n label: \"日期(短横线)\",\n preview: \"2017-08-01\",\n value: \"dateDash\",\n },\n {\n key: \"dateFullCN\",\n label: \"日期(中文)\",\n preview: \"2017年8月1日\",\n value: \"dateFullCN\",\n },\n { key: \"time\", label: \"时间\", preview: \"23:24:25\", value: \"time\" },\n {\n key: \"timeShort\",\n label: \"时间(分)\",\n preview: \"23:24\",\n value: \"timeShort\",\n },\n {\n key: \"datetime\",\n label: \"日期时间\",\n preview: \"2017/08/01 23:24:25\",\n value: \"datetime\",\n },\n {\n key: \"datetime12\",\n label: \"日期时间(上下)\",\n preview: \"2017/08/01 下午11:24\",\n value: \"datetime12\",\n },\n {\n key: \"more\",\n label: \"更多格式\",\n separatorBefore: true,\n onClick: props.onOpenMoreFormat,\n },\n ] as const\n ).map((item) => ({\n key: `data-format-${item.key}`,\n label: item.label,\n preview: \"preview\" in item ? item.preview : undefined,\n separatorBefore:\n \"separatorBefore\" in item ? item.separatorBefore : undefined,\n disabled: \"disabled\" in item && item.disabled === true,\n selected: \"value\" in item && request.dataFormat === item.value,\n onClick:\n \"onClick\" in item\n ? item.onClick\n : \"value\" in item\n ? () => request.onChangeDataFormat?.(item.value)\n : undefined,\n }))}\n />\n </>\n );\n}\n\nfunction MoreFormatDialog(props: {\n request: HeaderContextMenuConfig;\n onClose: () => void;\n}) {\n const { request } = props;\n const [category, setCategory] = useState(() =>\n resolveMoreFormatCategory(request.dataFormat),\n );\n const [customPattern, setCustomPattern] = useState(() =>\n typeof request.dataFormat === \"object\" &&\n request.dataFormat.type === \"custom\"\n ? (request.dataFormat.pattern ?? \"#,##0.00\")\n : \"#,##0.00\",\n );\n const [decimalPlaces, setDecimalPlaces] = useState(() =>\n typeof request.dataFormat === \"object\"\n ? (request.dataFormat.decimalPlaces ?? 2)\n : 2,\n );\n const [useGrouping, setUseGrouping] = useState(() =>\n typeof request.dataFormat === \"object\"\n ? (request.dataFormat.useGrouping ?? false)\n : false,\n );\n const [currency, setCurrency] = useState(() =>\n typeof request.dataFormat === \"object\"\n ? (request.dataFormat.symbol ?? \"¥\")\n : \"¥\",\n );\n const [datePattern, setDatePattern] = useState(() =>\n resolveInitialFormatPattern(request.dataFormat, \"date\"),\n );\n const [timePattern, setTimePattern] = useState(() =>\n resolveInitialFormatPattern(request.dataFormat, \"time\"),\n );\n\n return (\n <ReactModal\n open\n title=\"设置单元格数字格式\"\n width={480}\n centered\n fullscreenable={false}\n onCancel={props.onClose}\n onOk={() => {\n request.onChangeDataFormat?.(\n resolveMoreFormatValue(\n category,\n customPattern,\n decimalPlaces,\n currency,\n datePattern,\n timePattern,\n useGrouping,\n ),\n );\n props.onClose();\n }}\n bodyStyle={{ padding: \"0 20px 18px\" }}\n >\n <MoreFormatDialogBody\n category={category}\n customPattern={customPattern}\n decimalPlaces={decimalPlaces}\n useGrouping={useGrouping}\n currency={currency}\n datePattern={datePattern}\n timePattern={timePattern}\n onCategoryChange={setCategory}\n onCustomPatternChange={setCustomPattern}\n onDecimalPlacesChange={setDecimalPlaces}\n onGroupingChange={setUseGrouping}\n onCurrencyChange={setCurrency}\n onDatePatternChange={setDatePattern}\n onTimePatternChange={setTimePattern}\n />\n </ReactModal>\n );\n}\n\ntype MoreFormatCategory =\n | \"general\"\n | \"number\"\n | \"currency\"\n | \"date\"\n | \"time\"\n | \"percent\"\n | \"scientific\"\n | \"text\"\n | \"custom\";\n\nconst MORE_FORMAT_CATEGORIES: Array<{\n key: MoreFormatCategory;\n label: string;\n}> = [\n { key: \"general\", label: \"常规\" },\n { key: \"number\", label: \"数值\" },\n { key: \"currency\", label: \"货币\" },\n { key: \"date\", label: \"日期\" },\n { key: \"time\", label: \"时间\" },\n { key: \"percent\", label: \"百分比\" },\n { key: \"scientific\", label: \"科学记数\" },\n { key: \"text\", label: \"文本\" },\n { key: \"custom\", label: \"自定义\" },\n];\n\nfunction MoreFormatDialogBody(props: {\n category: MoreFormatCategory;\n customPattern: string;\n decimalPlaces: number;\n useGrouping: boolean;\n currency: string;\n datePattern: string;\n timePattern: string;\n onCategoryChange: (category: MoreFormatCategory) => void;\n onCustomPatternChange: (pattern: string) => void;\n onDecimalPlacesChange: (value: number) => void;\n onGroupingChange: (value: boolean) => void;\n onCurrencyChange: (value: string) => void;\n onDatePatternChange: (value: string) => void;\n onTimePatternChange: (value: string) => void;\n}) {\n const sample = resolveMoreFormatSample(\n props.category,\n props.customPattern,\n props.decimalPlaces,\n props.currency,\n props.datePattern,\n props.timePattern,\n props.useGrouping,\n );\n return (\n <div style={{ display: \"grid\", gap: 14 }}>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"120px 1fr\",\n gap: 18,\n alignItems: \"stretch\",\n height: 320,\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n <div style={moreFormatLabelStyle}>类别</div>\n <div style={{ ...moreFormatCategoryListStyle, flex: 1 }}>\n {MORE_FORMAT_CATEGORIES.map((item) => (\n <button\n key={item.key}\n type=\"button\"\n onClick={() => props.onCategoryChange(item.key)}\n style={{\n ...moreFormatCategoryButtonStyle,\n ...(props.category === item.key\n ? moreFormatCategorySelectedStyle\n : null),\n }}\n >\n {item.label}\n </button>\n ))}\n </div>\n </div>\n <div>\n <div style={moreFormatLabelStyle}>示例</div>\n <div style={moreFormatExampleStyle}>{sample}</div>\n <MoreFormatOptions {...props} />\n </div>\n </div>\n <div style={moreFormatDescriptionStyle}>\n 常规单元格格式不包含任何特定的数字格式\n </div>\n </div>\n );\n}\n\nfunction MoreFormatOptions(props: Parameters<typeof MoreFormatDialogBody>[0]) {\n if (\n props.category === \"number\" ||\n props.category === \"percent\" ||\n props.category === \"scientific\"\n ) {\n return (\n <div style={moreFormatOptionsStyle}>\n <span style={moreFormatLabelStyle}>小数位数</span>\n <ReactInputNumber\n value={props.decimalPlaces}\n min={0}\n max={20}\n precision={0}\n onChange={(value) => props.onDecimalPlacesChange(value ?? 0)}\n style={{ width: 96 }}\n />\n {props.category === \"number\" ? (\n <ReactCheckbox\n checked={props.useGrouping}\n onChange={(event) => props.onGroupingChange(event.target.checked)}\n >\n 显示千分位分隔符(,)\n </ReactCheckbox>\n ) : null}\n </div>\n );\n }\n if (props.category === \"currency\") {\n return (\n <div style={moreFormatOptionsStyle}>\n <span style={moreFormatLabelStyle}>小数位数</span>\n <ReactInputNumber\n value={props.decimalPlaces}\n min={0}\n max={20}\n precision={0}\n onChange={(value) => props.onDecimalPlacesChange(value ?? 0)}\n style={{ width: 96 }}\n />\n <span style={moreFormatLabelStyle}>货币符号</span>\n <ReactSelect\n value={props.currency}\n options={[\n { label: \"¥\", value: \"¥\" },\n { label: \"$\", value: \"$\" },\n ]}\n onChange={props.onCurrencyChange}\n style={{ width: 150 }}\n />\n </div>\n );\n }\n if (props.category === \"date\") {\n return (\n <FormatChoiceList\n label=\"类型\"\n value={props.datePattern}\n options={DATE_FORMAT_OPTIONS}\n onChange={props.onDatePatternChange}\n allowInput\n inputLabel=\"自定义格式\"\n inputPlaceholder=\"例如:YYYY-MM-DD HH:mm:ss\"\n />\n );\n }\n if (props.category === \"time\") {\n return (\n <FormatChoiceList\n label=\"类型\"\n value={props.timePattern}\n options={TIME_FORMAT_OPTIONS}\n onChange={props.onTimePatternChange}\n />\n );\n }\n if (props.category === \"custom\") {\n return (\n <FormatChoiceList\n label=\"类型\"\n value={props.customPattern}\n options={[\n \"@\",\n \"G/通用格式\",\n '0,\"万\"',\n '0.0,\"万\"',\n '0.00,\"万\"',\n '\"**********\"',\n \"0\",\n \"0.0\",\n \"0.00\",\n \"0.000\",\n \"#,##0\",\n \"#,##0.0\",\n \"#,##0.00\",\n \"#,##0.000\",\n \"#,##0;[红色]-#,##0\",\n \"0%\",\n \"0.0%\",\n \"0.00%\",\n \"¥#,##0\",\n \"¥#,##0.00\",\n \"$#,##0\",\n \"$#,##0.00\",\n \"0.00E+00\",\n \"YYYY/M/D\",\n \"YYYY/MM/DD\",\n \"YYYY-MM-DD\",\n \"HH:mm\",\n \"HH:mm:ss\",\n \"Ah:mm\",\n \"Ah:mm:ss\",\n \"YYYY/M/D HH:mm\",\n \"YYYY-MM-DD HH:mm:ss\",\n ]}\n onChange={props.onCustomPatternChange}\n allowInput\n />\n );\n }\n return null;\n}\n\nfunction FormatChoiceList(props: {\n label: string;\n value: string;\n options: Array<string | { label: string; value: string }>;\n onChange: (value: string) => void;\n allowInput?: boolean;\n inputLabel?: string;\n inputPlaceholder?: string;\n}) {\n return (\n <div style={{ marginTop: 16 }}>\n {props.allowInput ? (\n <>\n <div style={moreFormatLabelStyle}>\n {props.inputLabel ?? props.label}\n </div>\n <ReactInput\n value={props.value}\n placeholder={props.inputPlaceholder}\n onChange={(event) => props.onChange(event.target.value)}\n />\n </>\n ) : null}\n <div\n style={{\n ...moreFormatLabelStyle,\n marginTop: props.allowInput ? 14 : 0,\n }}\n >\n {props.label}\n </div>\n <div className=\"canvas-react-scrollbar\" style={moreFormatChoiceListStyle}>\n {props.options.map((option) => {\n const value = typeof option === \"string\" ? option : option.value;\n const label = typeof option === \"string\" ? option : option.label;\n return (\n <button\n key={value}\n type=\"button\"\n onClick={() => props.onChange(value)}\n style={{\n ...moreFormatChoiceStyle,\n ...(props.value === value\n ? moreFormatChoiceSelectedStyle\n : null),\n }}\n >\n {label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction resolveMoreFormatCategory(\n dataFormat: HeaderContextMenuConfig[\"dataFormat\"],\n): MoreFormatCategory {\n const type = typeof dataFormat === \"object\" ? dataFormat.type : dataFormat;\n if (type === \"custom\") return \"custom\";\n if (type === \"percent\" || type === \"percentDecimal\") return \"percent\";\n if (\n type === \"cny\" ||\n type === \"cnyDecimal\" ||\n type === \"usd\" ||\n type === \"usdDecimal\" ||\n type === \"money\"\n )\n return \"currency\";\n if (\n type === \"dateSlash\" ||\n type === \"dateDash\" ||\n type === \"dateFullCN\" ||\n type === \"dateYearMonthCN\" ||\n type === \"dateMonthDayCN\" ||\n type === \"dateSlashWeek\" ||\n type === \"dateDashWeek\" ||\n type === \"dateWeekdayCNFull\" ||\n type === \"dateWeekdayCNShort\" ||\n type === \"datetime\" ||\n type === \"datetime12\" ||\n type === \"datetime12Seconds\"\n )\n return \"date\";\n if (\n type === \"time\" ||\n type === \"timeShort\" ||\n type === \"time12\" ||\n type === \"time12Seconds\" ||\n type === \"timeMillisecond\" ||\n type === \"time12Millisecond\" ||\n type === \"timeChineseHour\" ||\n type === \"timeChineseSecond\" ||\n type === \"time12ChineseHour\" ||\n type === \"time12ChineseSecond\"\n )\n return \"time\";\n if (type === \"scientific\") return \"scientific\";\n if (type === \"text\") return \"text\";\n if (\n type === \"number\" ||\n type === \"thousands\" ||\n type === \"decimal\" ||\n type === \"numberToChineseUpper\" ||\n type === \"chineseUpperToNumber\"\n )\n return \"number\";\n return \"general\";\n}\n\ninterface DateTimeFormatOption {\n label: string;\n value: string;\n type: ListTableDataFormatType;\n}\n\nconst DATE_FORMAT_OPTIONS: DateTimeFormatOption[] = [\n { label: \"2012/3/14\", value: \"YYYY/M/D\", type: \"dateSlash\" },\n { label: \"2012/03/14\", value: \"YYYY/MM/DD\", type: \"dateSlash\" },\n { label: \"2012-3-14\", value: \"YYYY-M-D\", type: \"dateDash\" },\n { label: \"2012-03-14\", value: \"YYYY-MM-DD\", type: \"dateDash\" },\n { label: \"2012.03.14\", value: \"YYYY.MM.DD\", type: \"dateSlash\" },\n { label: \"14/03/2012\", value: \"DD/MM/YYYY\", type: \"dateSlash\" },\n { label: \"03/14/2012\", value: \"MM/DD/YYYY\", type: \"dateSlash\" },\n { label: \"12年3月14日\", value: \"YY年M月D日\", type: \"dateFullCN\" },\n { label: \"2012年3月14日\", value: \"YYYY年M月D日\", type: \"dateFullCN\" },\n { label: \"2012年3月\", value: \"YYYY年M月\", type: \"dateYearMonthCN\" },\n { label: \"3月14日\", value: \"M月D日\", type: \"dateMonthDayCN\" },\n { label: \"星期三\", value: \"dddd\", type: \"dateWeekdayCNFull\" },\n { label: \"周三\", value: \"ddd\", type: \"dateWeekdayCNShort\" },\n { label: \"2012/3/14 星期三\", value: \"YYYY/M/D dddd\", type: \"dateSlashWeek\" },\n {\n label: \"2012-03-14 星期三\",\n value: \"YYYY-MM-DD dddd\",\n type: \"dateDashWeek\",\n },\n { label: \"2012/3/14 14:30\", value: \"YYYY/M/D HH:mm\", type: \"datetime\" },\n { label: \"2012/3/14 14:30:55\", value: \"YYYY/M/D HH:mm:ss\", type: \"datetime\" },\n {\n label: \"2012-03-14 14:30:55\",\n value: \"YYYY-MM-DD HH:mm:ss\",\n type: \"datetime\",\n },\n { label: \"2012/3/14 下午2:30\", value: \"YYYY/M/D Ah:mm\", type: \"datetime12\" },\n {\n label: \"2012/3/14 下午2:30:55\",\n value: \"YYYY/M/D Ah:mm:ss\",\n type: \"datetime12Seconds\",\n },\n];\n\nconst TIME_FORMAT_OPTIONS: DateTimeFormatOption[] = [\n { label: \"14:30\", value: \"HH:mm\", type: \"timeShort\" },\n { label: \"14:30:55\", value: \"HH:mm:ss\", type: \"time\" },\n { label: \"14:30:55.123\", value: \"HH:mm:ss.SSS\", type: \"timeMillisecond\" },\n { label: \"下午2:30\", value: \"Ah:mm\", type: \"time12\" },\n { label: \"下午2:30:55\", value: \"Ah:mm:ss\", type: \"time12Seconds\" },\n {\n label: \"下午2:30:55.123\",\n value: \"Ah:mm:ss.SSS\",\n type: \"time12Millisecond\",\n },\n { label: \"14时30分\", value: \"H时mm分\", type: \"timeChineseHour\" },\n { label: \"14时30分55秒\", value: \"H时mm分ss秒\", type: \"timeChineseSecond\" },\n { label: \"下午2时30分\", value: \"Ah时mm分\", type: \"time12ChineseHour\" },\n {\n label: \"下午2时30分55秒\",\n value: \"Ah时mm分ss秒\",\n type: \"time12ChineseSecond\",\n },\n];\n\nconst DATE_TIME_FORMAT_SAMPLE = new Date(2012, 2, 14, 14, 30, 55, 123);\n\n/** 根据当前数据格式推导“更多格式”弹窗中日期/时间类型的初始选中项。 */\nfunction resolveInitialFormatPattern(\n dataFormat: HeaderContextMenuConfig[\"dataFormat\"],\n kind: \"date\" | \"time\",\n) {\n if (typeof dataFormat === \"object\" && dataFormat.pattern) {\n return dataFormat.pattern;\n }\n if (typeof dataFormat === \"string\") {\n const source = kind === \"date\" ? DATE_FORMAT_OPTIONS : TIME_FORMAT_OPTIONS;\n const match = source.find((option) => option.type === dataFormat);\n if (match) return match.value;\n }\n return kind === \"date\" ? \"YYYY/M/D\" : \"HH:mm\";\n}\n\nfunction resolveMoreFormatValue(\n category: MoreFormatCategory,\n customPattern: string,\n decimalPlaces = 2,\n currency = \"¥\",\n datePattern = \"YYYY/M/D\",\n timePattern = \"HH:mm\",\n useGrouping = false,\n): ListTableDataFormat {\n if (category === \"number\")\n return { type: \"number\", decimalPlaces, useGrouping };\n if (category === \"currency\") {\n return {\n type: currency === \"$\" ? \"usd\" : \"cny\",\n decimalPlaces,\n useGrouping: true,\n symbol: currency,\n };\n }\n if (category === \"date\") {\n return {\n type:\n DATE_FORMAT_OPTIONS.find((option) => option.value === datePattern)\n ?.type ?? \"datetime\",\n pattern: datePattern,\n };\n }\n if (category === \"time\") {\n return {\n type:\n TIME_FORMAT_OPTIONS.find((option) => option.value === timePattern)\n ?.type ?? \"time\",\n pattern: timePattern,\n };\n }\n if (category === \"percent\") return { type: \"percent\", decimalPlaces };\n if (category === \"scientific\") return { type: \"scientific\", decimalPlaces };\n if (category === \"text\") return \"text\";\n if (category === \"custom\") return { type: \"custom\", pattern: customPattern };\n return \"default\";\n}\n\nfunction resolveMoreFormatSample(\n category: MoreFormatCategory,\n customPattern: string,\n decimalPlaces = 2,\n currency = \"¥\",\n datePattern = \"YYYY/M/D\",\n timePattern = \"HH:mm\",\n useGrouping = false,\n) {\n if (category === \"date\") {\n return formatDateTimeValue(DATE_TIME_FORMAT_SAMPLE, datePattern) ?? \"\";\n }\n if (category === \"time\") {\n return formatDateTimeValue(DATE_TIME_FORMAT_SAMPLE, timePattern) ?? \"\";\n }\n if (category === \"number\") {\n return formatNumberValue(1024.56, {\n decimalPlaces,\n thousandsSeparator: useGrouping,\n });\n }\n if (category === \"currency\") {\n return formatNumberValue(1024.56, {\n decimalPlaces,\n thousandsSeparator: true,\n symbol: currency,\n });\n }\n if (category === \"percent\") return formatPercentValue(0.1024, decimalPlaces);\n if (category === \"scientific\") {\n return formatScientificValue(1024, decimalPlaces);\n }\n if (category === \"custom\") {\n return isDateTimeFormatPattern(customPattern)\n ? (formatDateTimeValue(DATE_TIME_FORMAT_SAMPLE, customPattern) ?? \"\")\n : formatCustomNumberPattern(1024.56, customPattern);\n }\n const format = resolveMoreFormatValue(\n category,\n customPattern,\n decimalPlaces,\n currency,\n datePattern,\n );\n const samples: Record<string, string> = {\n default: \"\",\n text: \"1024\",\n number: \"1024\",\n thousands: \"1,024\",\n decimal: \"1,024.56\",\n percent: \"10%\",\n percentDecimal: \"10.24%\",\n scientific: \"1.02E+003\",\n numberToChineseUpper: \"玖拾壹万捌仟\",\n chineseUpperToNumber: \"918000\",\n cny: \"¥1,024\",\n cnyDecimal: \"¥1,024.56\",\n usd: \"$1,024\",\n usdDecimal: \"$1,024.56\",\n dateSlash: \"2017/08/01\",\n dateDash: \"2017-08-01\",\n dateFullCN: \"2017年8月1日\",\n dateYearMonthCN: \"2017年8月\",\n dateMonthDayCN: \"8月1日\",\n dateSlashWeek: \"2017/08/01 星期二\",\n dateDashWeek: \"2017-08-01 星期二\",\n dateWeekdayCNFull: \"星期二\",\n dateWeekdayCNShort: \"周二\",\n time: \"23:24:25\",\n timeShort: \"23:24\",\n time12: \"下午11:24\",\n time12Seconds: \"下午11:24:25\",\n timeMillisecond: \"23:24:25.123\",\n time12Millisecond: \"下午11:24:25.123\",\n timeChineseHour: \"23时24分\",\n timeChineseSecond: \"23时24分25秒\",\n time12ChineseHour: \"下午11时24分\",\n time12ChineseSecond: \"下午11时24分25秒\",\n datetime: \"2017/08/01 23:24:25\",\n datetime12: \"2017/08/01 下午11:24\",\n datetime12Seconds: \"2017/08/01 下午11:24:25\",\n money: \"1,024.00\",\n };\n return samples[typeof format === \"string\" ? format : format.type] ?? \"\";\n}\n\nconst moreFormatLabelStyle = {\n marginBottom: 6,\n color: \"#4b5563\",\n fontSize: 14,\n};\nconst moreFormatCategoryListStyle = {\n display: \"grid\",\n gap: 2,\n padding: 4,\n border: \"1px solid #d1d5db\",\n borderRadius: 4,\n};\nconst moreFormatCategoryButtonStyle = {\n height: 28,\n padding: \"0 8px\",\n border: 0,\n borderRadius: 4,\n background: \"transparent\",\n color: \"#374151\",\n textAlign: \"left\" as const,\n cursor: \"pointer\",\n};\nconst moreFormatCategorySelectedStyle = {\n background: \"#dbeafe\",\n color: \"#1677ff\",\n};\nconst moreFormatExampleStyle = {\n height: 32,\n padding: \"0 10px\",\n display: \"flex\",\n alignItems: \"center\",\n border: \"1px solid #d1d5db\",\n borderRadius: 4,\n color: \"#374151\",\n background: \"#f8fafc\",\n};\nconst moreFormatDescriptionStyle = {\n color: \"#6b7280\",\n fontSize: 14,\n};\nconst moreFormatOptionsStyle = {\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\" as const,\n gap: 8,\n marginTop: 16,\n};\nconst moreFormatChoiceListStyle = {\n display: \"grid\",\n gap: 2,\n maxHeight: 150,\n overflow: \"auto\",\n padding: 4,\n border: \"1px solid #d1d5db\",\n borderRadius: 4,\n};\nconst moreFormatChoiceStyle = {\n minHeight: 26,\n padding: \"3px 8px\",\n border: 0,\n borderRadius: 3,\n background: \"transparent\",\n color: \"#1f2937\",\n textAlign: \"left\" as const,\n cursor: \"pointer\",\n};\nconst moreFormatChoiceSelectedStyle = {\n background: \"#f3f4f6\",\n color: \"#1677ff\",\n};\n","import { useEffect, useState, type CSSProperties } from \"react\";\nimport type {\n ListTableSearchMode,\n ListTableSearchRequest,\n} from \"@canvas-components/list-table\";\nimport {\n ReactCheckbox,\n ReactInput,\n ReactModal,\n ReactSelect,\n} from \"@canvas-components/react-components\";\n\nconst SEARCH_MODAL_BODY_STYLE: CSSProperties = {\n padding: 12,\n};\n\n/** ListTable 的无遮罩查找弹窗。 */\nexport function ReactListTableSearchDialog(props: {\n request: ListTableSearchRequest;\n}) {\n const { request } = props;\n const [keyword, setKeyword] = useState(request.keyword);\n const [mode, setMode] = useState(request.mode);\n const [caseSensitive, setCaseSensitive] = useState(request.caseSensitive);\n\n useEffect(() => {\n setKeyword(request.keyword);\n setMode(request.mode);\n setCaseSensitive(request.caseSensitive);\n }, [request.keyword, request.mode, request.caseSensitive]);\n\n const isDirty =\n keyword !== request.keyword ||\n mode !== request.mode ||\n caseSensitive !== request.caseSensitive;\n const submit = () => request.onSubmit(keyword, { mode, caseSensitive });\n\n const matchText = request.error\n ? \"表达式无效\"\n : request.matchCount > 0\n ? `${request.currentIndex + 1} / ${request.matchCount}`\n : \"未找到\";\n\n return (\n <ReactModal\n open\n title=\"查找\"\n width={420}\n mask={false}\n centered={false}\n draggable\n fullscreenable={false}\n footer={false}\n onCancel={request.onClose}\n bodyStyle={SEARCH_MODAL_BODY_STYLE}\n style={{ marginTop: 96 }}\n >\n <div style={searchContentStyle}>\n <ReactInput\n autoFocus\n value={keyword}\n placeholder=\"查找内容\"\n style={{ flex: \"1 1 0\", minWidth: 0 }}\n onChange={(event) => {\n const value = event.target.value;\n setKeyword(value);\n }}\n onPressEnter={submit}\n />\n <span style={matchTextStyle}>{matchText}</span>\n <button\n type=\"button\"\n title=\"上一个\"\n onClick={() => {\n if (isDirty) {\n submit();\n } else {\n request.onNavigate(\"previous\");\n }\n }}\n disabled={request.matchCount === 0 && !isDirty}\n style={toolButtonStyle}\n >\n ‹\n </button>\n <button\n type=\"button\"\n title=\"下一个\"\n onClick={() => {\n if (isDirty) {\n submit();\n } else {\n request.onNavigate(\"next\");\n }\n }}\n disabled={request.matchCount === 0 && !isDirty}\n style={toolButtonStyle}\n >\n ›\n </button>\n </div>\n <div style={searchOptionsStyle}>\n <ReactSelect\n value={mode}\n allowClear={false}\n options={[\n { label: \"模糊匹配\", value: \"fuzzy\" },\n { label: \"精确匹配\", value: \"exact\" },\n { label: \"通配符 (* ?)\", value: \"wildcard\" },\n { label: \"正则匹配\", value: \"regex\" },\n ]}\n style={{ width: 150 }}\n onChange={(value) => {\n const nextMode = value as ListTableSearchMode;\n setMode(nextMode);\n request.onSubmit(keyword, { mode: nextMode, caseSensitive });\n }}\n />\n <ReactCheckbox\n checked={caseSensitive}\n style={{ whiteSpace: \"nowrap\", flex: \"none\" }}\n onChange={(event) => {\n const nextCaseSensitive = event.target.checked;\n setCaseSensitive(nextCaseSensitive);\n request.onSubmit(keyword, {\n mode,\n caseSensitive: nextCaseSensitive,\n });\n }}\n >\n 区分大小写\n </ReactCheckbox>\n </div>\n {request.error ? (\n <div style={searchErrorStyle}>{request.error}</div>\n ) : null}\n </ReactModal>\n );\n}\n\nconst searchContentStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n};\n\nconst searchOptionsStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n gap: 12,\n marginTop: 10,\n};\n\nconst searchErrorStyle: CSSProperties = {\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 6,\n};\n\nconst matchTextStyle: CSSProperties = {\n minWidth: 58,\n color: \"#64748b\",\n fontSize: 14,\n whiteSpace: \"nowrap\",\n};\n\nconst toolButtonStyle: CSSProperties = {\n width: 32,\n minWidth: 32,\n flex: \"0 0 32px\",\n height: 32,\n padding: 0,\n border: \"1px solid #d1d5db\",\n borderRadius: 4,\n background: \"#ffffff\",\n color: \"#475569\",\n fontSize: 18,\n lineHeight: 1,\n cursor: \"pointer\",\n};\n","import { useId, useMemo, useState, type ReactNode } from \"react\";\nimport {\n ROW_SELECTION_COLUMN,\n type ListTableExportColumnChoice,\n type ListTableExportNameRequest,\n type ListTableExportSummarySettings,\n} from \"@canvas-components/list-table\";\nimport {\n ReactCheckbox,\n ReactInput,\n ReactModal,\n} from \"@canvas-components/react-components\";\nimport type {\n ReactListTableColumnsType,\n ReactListTableProps,\n} from \"../../types\";\n\ninterface ExportDialogRow {\n key: string;\n title: string;\n sortOrder: \"default\" | \"ascend\" | \"descend\";\n sortIndex?: number;\n sortPriority?: number;\n summaryType: ListTableExportSummarySettings[\"type\"];\n showTypePrefix: \"yes\" | \"no\";\n precision?: number;\n roundingMode: ListTableExportSummarySettings[\"roundingMode\"];\n preserveTrailingZeros: \"yes\" | \"no\";\n}\n\nconst sortOptions = [\n { value: \"default\", label: \"默认\" },\n { value: \"ascend\", label: \"升序\" },\n { value: \"descend\", label: \"降序\" },\n];\nconst summaryOptions = [\n { value: \"original\", label: \"原汇总\" },\n { value: \"none\", label: \"无汇总\" },\n { value: \"title\", label: \"标题\" },\n { value: \"sum\", label: \"求和\" },\n { value: \"avg\", label: \"平均值\" },\n { value: \"count\", label: \"计数\" },\n { value: \"unionCount\", label: \"去重计数\" },\n { value: \"rowCount\", label: \"行数\" },\n { value: \"mergedRowCount\", label: \"合并行数\" },\n { value: \"min\", label: \"最小值\" },\n { value: \"max\", label: \"最大值\" },\n];\nconst roundingOptions = [\n { value: \"round\", label: \"四舍五入\" },\n { value: \"floor\", label: \"向下取整\" },\n { value: \"ceil\", label: \"向上取整\" },\n { value: \"truncate\", label: \"截断\" },\n];\nconst booleanOptions = [\n { value: \"yes\", label: \"是\" },\n { value: \"no\", label: \"否\" },\n];\n\n/** 将导出请求的列配置映射为弹窗内独立、可编辑的表格行。 */\nexport function createExportDialogRows(\n columns: ListTableExportColumnChoice[],\n): ExportDialogRow[] {\n return columns.map((column) => ({\n key: column.key,\n title: column.title,\n sortOrder: column.sortOrder,\n sortIndex: column.sortIndex,\n sortPriority: column.sortPriority,\n summaryType: column.summary.type,\n showTypePrefix: column.summary.showTypePrefix ? \"yes\" : \"no\",\n precision: column.summary.precision,\n roundingMode: column.summary.roundingMode,\n preserveTrailingZeros: column.summary.preserveTrailingZeros ? \"yes\" : \"no\",\n }));\n}\n\n/** 保持来源表排序、隐藏列勾选状态和逐列汇总设置互不影响。 */\nexport function buildExportDialogSettings(\n rows: ExportDialogRow[],\n selectedKeys: readonly (string | number)[],\n includeSummary: boolean,\n) {\n const selected = new Set(selectedKeys.map(String));\n return {\n columnKeys: rows.filter((row) => selected.has(row.key)).map((row) => row.key),\n sortState: rows\n .filter((row) => selected.has(row.key) && row.sortOrder !== \"default\")\n .sort(\n (a, b) =>\n (a.sortIndex ?? Number.MAX_SAFE_INTEGER) -\n (b.sortIndex ?? Number.MAX_SAFE_INTEGER),\n )\n .map((row) => ({\n key: row.key,\n order: row.sortOrder as \"ascend\" | \"descend\",\n ...(row.sortPriority != null ? { priority: row.sortPriority } : {}),\n })),\n summaries: Object.fromEntries(\n rows.map((row) => [\n row.key,\n {\n type: row.summaryType,\n showTypePrefix: row.showTypePrefix === \"yes\",\n precision: row.precision,\n roundingMode: row.roundingMode,\n preserveTrailingZeros: row.preserveTrailingZeros === \"yes\",\n },\n ]),\n ),\n includeSummary,\n };\n}\n\n/** 使用 ReactListTable 承载大量导出列的弹窗。 */\nexport function ReactListTableExportNameDialog({\n request,\n onClose,\n renderTable,\n}: {\n request: ListTableExportNameRequest;\n onClose?: () => void;\n renderTable: (props: ReactListTableProps<ExportDialogRow>) => ReactNode;\n}) {\n const tableId = useId();\n const extension = request.fileName.match(/\\.(xlsx|csv|txt|json)$/i)?.[0] ?? \"\";\n const [fileName, setFileName] = useState(\n extension ? request.fileName.slice(0, -extension.length) : request.fileName,\n );\n const [rows, setRows] = useState(() => createExportDialogRows(request.columns ?? []));\n const [selectedKeys, setSelectedKeys] = useState<Array<string | number>>(\n () => (request.columns ?? []).filter((column) => column.selected !== false).map((column) => column.key),\n );\n const [includeSummary, setIncludeSummary] = useState(request.includeSummary ?? false);\n const [error, setError] = useState(\"\");\n const columns = useMemo<ReactListTableColumnsType<ExportDialogRow>>(\n () => [\n { key: \"position\", dataIndex: \"key\", title: \"列顺序(拖动行排序)\", width: 160,\n render: (_value, _row, index) => String(index + 1), headerAlign: \"center\", align: \"center\" },\n ROW_SELECTION_COLUMN,\n { key: \"title\", dataIndex: \"title\", title: \"列名称\", width: 190 },\n { key: \"sortOrder\", dataIndex: \"sortOrder\", title: \"数据排序\", width: 120,\n editable: true, formItemProps: { valueType: \"select\", clickCount: 1, options: sortOptions },\n render: (value) => sortOptions.find((option) => option.value === value)?.label ?? \"默认\" },\n ...(includeSummary ? [{\n key: \"summary-group\", dataIndex: \"summaryType\" as const, title: \"汇总\",\n children: [\n { key: \"summaryType\", dataIndex: \"summaryType\", title: \"汇总方式\", width: 135,\n editable: true, formItemProps: { valueType: \"select\" as const, clickCount: 1, options: summaryOptions.filter((option) => option.value !== \"original\" || request.columns?.some((column) => column.summary.type === \"original\")) },\n render: (value: unknown) => summaryOptions.find((option) => option.value === value)?.label ?? \"无汇总\" },\n { key: \"showTypePrefix\", dataIndex: \"showTypePrefix\", title: \"汇总前缀\", width: 115,\n editable: true, formItemProps: { valueType: \"select\" as const, clickCount: 1, options: booleanOptions },\n render: (value: unknown) => value === \"yes\" ? \"是\" : \"否\" },\n { key: \"precision\", dataIndex: \"precision\", title: \"汇总小数位数\", width: 135,\n editable: true, formItemProps: { valueType: \"number\" as const, clickCount: 1, min: 0, max: 20 } },\n { key: \"roundingMode\", dataIndex: \"roundingMode\", title: \"取整方式\", width: 130,\n editable: true, formItemProps: { valueType: \"select\" as const, clickCount: 1, options: roundingOptions },\n render: (value: unknown) => roundingOptions.find((option) => option.value === value)?.label ?? \"四舍五入\" },\n { key: \"preserveTrailingZeros\", dataIndex: \"preserveTrailingZeros\", title: \"保留无效零\", width: 125,\n editable: true, formItemProps: { valueType: \"select\" as const, clickCount: 1, options: booleanOptions },\n render: (value: unknown) => value === \"yes\" ? \"是\" : \"否\" },\n ],\n }] : []),\n ],\n [includeSummary, request.columns],\n );\n const confirm = () => {\n if (!fileName.trim()) return setError(\"请输入文件名称\");\n if (request.columns && !selectedKeys.length) return setError(\"请至少选择一列\");\n request.onConfirm(\n `${fileName.trim()}${extension}`,\n request.columns ? buildExportDialogSettings(rows, selectedKeys, includeSummary) : undefined,\n );\n onClose?.();\n };\n return (\n <ReactModal open title=\"导出文件\" width={request.columns ? 1180 : 420}\n fullscreenable={false} onOk={confirm} okText=\"导出\" cancelText=\"取消\"\n onCancel={() => { onClose?.(); request.onCancel(); }}>\n <label style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n 文件名称\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <ReactInput autoFocus value={fileName} placeholder=\"请输入文件名称\"\n onFocus={(event) => event.target.select()}\n onChange={(event) => { setFileName(event.target.value); setError(\"\"); }}\n onPressEnter={confirm} />\n <span aria-label=\"文件后缀\">{extension}</span>\n </span>\n </label>\n {request.columns ? <div style={{ marginTop: 16 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 16, marginBottom: 8 }}>\n <span style={{ fontWeight: 600 }}>导出表格列</span>\n <label style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6 }}>\n <ReactCheckbox checked={includeSummary} aria-label=\"导出汇总行\"\n onChange={(event) => setIncludeSummary(event.target.checked)} />导出汇总行\n </label>\n </div>\n <div style={{ height: \"min(45vh, 520px)\", minHeight: 250, overflow: \"hidden\" }}>\n {renderTable({\n tableId,\n columns,\n dataSource: rows,\n rowKey: \"key\",\n rowHeight: 42,\n headerRowHeight: 38,\n toolbar: false,\n contextMenu: false,\n pagination: false,\n resizable: true,\n draggable: true,\n rowSelection: {\n type: \"checkbox\",\n selectedRowKeys: selectedKeys,\n selectRowByClick: false,\n columnWidth: 54,\n onChange: (keys) => { setSelectedKeys(keys); setError(\"\"); },\n },\n rowDrag: {\n enabled: true,\n droppable: true,\n allowSelfDrop: true,\n mode: \"move\",\n onDrop: ({ rows: dragged, insertIndex, source }) => {\n if (source.tableId !== tableId || insertIndex == null) return;\n const draggedKeys = new Set(dragged.map((row) => row.key));\n setRows((current) => {\n const moved = current.filter((row) => draggedKeys.has(row.key));\n const preceding = current.slice(0, insertIndex).filter((row) => !draggedKeys.has(row.key)).length;\n const remaining = current.filter((row) => !draggedKeys.has(row.key));\n remaining.splice(preceding, 0, ...moved);\n return remaining;\n });\n },\n },\n style: { width: \"100%\", height: \"100%\" },\n })}\n </div>\n </div> : null}\n {error ? <div role=\"alert\" style={{ color: \"#ff4d4f\", marginTop: 8 }}>{error}</div> : null}\n </ReactModal>\n );\n}\n","import type { ListTableEditorRequest } from \"@canvas-components/list-table\";\n\nexport function toNumberValue(value: unknown) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n const nextValue = Number(value);\n return Number.isFinite(nextValue) ? nextValue : null;\n }\n return null;\n}\n\nexport function toNumericProp(value?: string | number) {\n if (typeof value === \"number\") {\n return value;\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n const nextValue = Number(value);\n return Number.isFinite(nextValue) ? nextValue : undefined;\n }\n return undefined;\n}\n\nfunction resolvePadding(value: number | undefined, fallback = 0) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0\n ? value\n : fallback;\n}\n\nfunction resolveEditorControlSize(request: ListTableEditorRequest) {\n const targetRect = request.hostRect ?? request.rect;\n const height = Math.max(targetRect.height - 2, 1);\n const fontSize =\n typeof request.theme.fontSize === \"number\" &&\n Number.isFinite(request.theme.fontSize) &&\n request.theme.fontSize > 0\n ? request.theme.fontSize\n : undefined;\n const paddingInline = resolvePadding(request.theme.paddingInline);\n const paddingBlock = resolvePadding(request.theme.paddingBlock);\n const contentZoom =\n typeof request.theme.contentZoom === \"number\" &&\n Number.isFinite(request.theme.contentZoom) &&\n request.theme.contentZoom > 0\n ? request.theme.contentZoom\n : 1;\n return { height, fontSize, paddingInline, paddingBlock, contentZoom };\n}\n\n/**\n * 编辑表单控件样式:使用缩放后的像素尺寸覆盖默认 32px 控件高度。\n * 时间 / 颜色 / 下拉等嵌套组件不能依赖 `height: 100%` 的 CSS 变量回退。\n */\nexport function getEditorInputStyle(request: ListTableEditorRequest) {\n const { height, fontSize, paddingInline, paddingBlock, contentZoom } =\n resolveEditorControlSize(request);\n\n return {\n width: \"100%\",\n height,\n minHeight: height,\n color: request.theme.cellColor ?? request.theme.textColor,\n fontFamily: request.theme.fontFamily,\n fontSize,\n // 用像素 token,确保 select/time/color 触发器与内部 Input 同步缩放。\n [\"--canvas-react-control-height\" as string]: `${height}px`,\n [\"--canvas-react-font-size\" as string]:\n fontSize != null ? `${fontSize}px` : undefined,\n [\"--canvas-react-control-padding-inline\" as string]: `${paddingInline}px`,\n [\"--canvas-react-control-padding-block\" as string]: `${paddingBlock}px`,\n [\"--canvas-react-content-zoom\" as string]: String(contentZoom),\n [\"--canvas-react-radius-sm\" as string]: \"0px\",\n borderRadius: 0,\n boxSizing: \"border-box\" as const,\n };\n}\n\n/**\n * 编辑浮层容器样式。\n * 尺寸跟随单元格(含缩放后的 hostRect),并注入表单组件 CSS 变量。\n */\nexport function resolveEditorOverlayStyle(params: {\n rect: ListTableEditorRequest[\"rect\"];\n hostRect?: ListTableEditorRequest[\"hostRect\"];\n fontSize?: number;\n paddingInline?: number;\n paddingBlock?: number;\n contentZoom?: number;\n}) {\n const { rect, hostRect, fontSize, paddingInline, paddingBlock, contentZoom } =\n params;\n const targetRect = hostRect ?? rect;\n const height = Math.max(targetRect.height - 2, 1);\n const resolvedFontSize =\n typeof fontSize === \"number\" && Number.isFinite(fontSize) && fontSize > 0\n ? fontSize\n : undefined;\n const resolvedPaddingInline = resolvePadding(paddingInline);\n const resolvedPaddingBlock = resolvePadding(paddingBlock);\n const resolvedContentZoom =\n typeof contentZoom === \"number\" &&\n Number.isFinite(contentZoom) &&\n contentZoom > 0\n ? contentZoom\n : 1;\n\n return {\n position: hostRect ? (\"absolute\" as const) : (\"fixed\" as const),\n left: targetRect.x,\n top: targetRect.y + 1,\n width: Math.max(targetRect.width, 1),\n height,\n minHeight: height,\n zIndex: 1200,\n boxSizing: \"border-box\" as const,\n // 覆盖表单组件 token,使输入框高度/字号/内边距跟随表格缩放。\n [\"--canvas-react-control-height\" as string]: `${height}px`,\n [\"--canvas-react-control-padding-inline\" as string]: `${resolvedPaddingInline}px`,\n [\"--canvas-react-control-padding-block\" as string]: `${resolvedPaddingBlock}px`,\n [\"--canvas-react-content-zoom\" as string]: String(resolvedContentZoom),\n [\"--canvas-react-radius-sm\" as string]: \"0px\",\n borderRadius: 0,\n ...(resolvedFontSize != null\n ? {\n [\"--canvas-react-font-size\" as string]: `${resolvedFontSize}px`,\n fontSize: resolvedFontSize,\n }\n : null),\n };\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n} from \"react\";\nimport type {\n ListTableEditorNavigateDirection,\n ListTableEditorRequest,\n} from \"@canvas-components/list-table\";\nimport {\n ReactContentScaleProvider,\n ReactDatePicker,\n ReactDateRangePicker,\n ReactDateTimePicker,\n ReactDateTimeRangePicker,\n ReactColorPicker,\n ReactAutoComplete,\n ReactInput,\n ReactInputRange,\n ReactMonthPicker,\n ReactNumberInput,\n ReactQuarterPicker,\n ReactSelect,\n ReactCascader,\n ReactTreeSelect,\n type ReactTreeSelectValue,\n ReactTimePicker,\n ReactTimeRangePicker,\n ReactYearPicker,\n} from \"@canvas-components/react-components\";\nimport {\n getEditorInputStyle,\n resolveEditorOverlayStyle,\n toNumberValue,\n toNumericProp,\n} from \"./utils\";\n\nexport function ReactTableEditorOverlay(props: {\n request: ListTableEditorRequest;\n}) {\n const { request } = props;\n const editorHostRef = useRef<HTMLDivElement | null>(null);\n const style = resolveEditorOverlayStyle({\n rect: request.rect,\n hostRect: request.hostRect,\n fontSize: request.theme.fontSize,\n paddingInline: request.theme.paddingInline,\n paddingBlock: request.theme.paddingBlock,\n contentZoom: request.theme.contentZoom,\n });\n const contentZoom =\n typeof request.theme.contentZoom === \"number\" &&\n Number.isFinite(request.theme.contentZoom) &&\n request.theme.contentZoom > 0\n ? request.theme.contentZoom\n : 1;\n\n useLayoutEffect(() => {\n const input =\n editorHostRef.current?.querySelector<HTMLInputElement>(\"input\");\n if (!input) {\n return;\n }\n focusAndSelectEditorInput(input, request.selectOnFocus);\n }, [request]);\n\n // 弹层挂载到 document.body,需要通过 ContentScale 同步表格缩放。\n return (\n <ReactContentScaleProvider scale={contentZoom}>\n <div key={request.editorKey} ref={editorHostRef}>\n {renderEditorByType(request, style)}\n </div>\n </ReactContentScaleProvider>\n );\n}\n\nfunction renderEditorByType(\n request: ListTableEditorRequest,\n style: CSSProperties,\n) {\n switch (request.config.valueType ?? \"text\") {\n case \"tree-select\":\n return <TreeSelectEditor request={request} style={style} />;\n case \"cascader\":\n return <CascaderEditor request={request} style={style} />;\n case \"number\":\n return <NumberEditor request={request} style={style} />;\n case \"input-range\":\n return <InputRangeEditor request={request} style={style} />;\n case \"year\":\n return <YearEditor request={request} style={style} />;\n case \"quarter\":\n return <QuarterEditor request={request} style={style} />;\n case \"month\":\n return <MonthEditor request={request} style={style} />;\n case \"date\":\n return <DateEditor request={request} style={style} />;\n case \"date-range\":\n return <DateRangeEditor request={request} style={style} />;\n case \"time\":\n return <TimeEditor request={request} style={style} />;\n case \"datetime\":\n return <DateTimeEditor request={request} style={style} />;\n case \"datetime-range\":\n return <DateTimeRangeEditor request={request} style={style} />;\n case \"timerange\":\n return <TimeRangeEditor request={request} style={style} />;\n case \"color\":\n return <ColorEditor request={request} style={style} />;\n case \"select\":\n return <SelectEditor request={request} style={style} />;\n case \"auto-complete\":\n return <AutoCompleteEditor request={request} style={style} />;\n default:\n return <TextEditor request={request} style={style} />;\n }\n}\n\nfunction TextEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(String(request.value ?? \"\"));\n const hostRef = useRef<HTMLDivElement | null>(null);\n const skipBlurCommitRef = useRef(false);\n\n useLayoutEffect(() => {\n const input = hostRef.current?.querySelector<HTMLInputElement>(\"input\");\n focusAndSelectEditorInput(input, request.selectOnFocus);\n }, [request]);\n\n useEffect(() => {\n setValue(String(request.value ?? \"\"));\n }, [request.value]);\n\n return (\n <div ref={hostRef} style={style}>\n <ReactInput\n value={value}\n placeholder={request.config.placeholder ?? \"\"}\n onChange={(event) => {\n const nextValue = event.target.value;\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onPressEnter={() => {\n request.onCommit({ restoreTableFocus: true });\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction NumberEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState<number | null>(\n toNumberValue(request.value),\n );\n const hostRef = useRef<HTMLDivElement | null>(null);\n const skipBlurCommitRef = useRef(false);\n\n useLayoutEffect(() => {\n const input = hostRef.current?.querySelector<HTMLInputElement>(\"input\");\n focusAndSelectEditorInput(input, request.selectOnFocus);\n }, [request]);\n\n useEffect(() => {\n setValue(toNumberValue(request.value));\n }, [request.value]);\n\n return (\n <div ref={hostRef} style={style}>\n <ReactNumberInput\n value={value}\n min={toNumericProp(request.config.min)}\n max={toNumericProp(request.config.max)}\n step={toNumericProp(request.config.step)}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onPressEnter={() => {\n request.onCommit({ restoreTableFocus: true });\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction InputRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState<[number | null, number | null]>(\n toNumberRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toNumberRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactInputRange\n value={value}\n autoFocus\n min={toNumericProp(request.config.min)}\n max={toNumericProp(request.config.max)}\n step={toNumericProp(request.config.step)}\n rangeSeparator={request.config.rangeSeparator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onPressEnter={() => {\n request.onCommit({ restoreTableFocus: true });\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction YearEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactYearPicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction QuarterEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactQuarterPicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction MonthEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactMonthPicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactDatePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\n/** 树选择保留单选标量/多选数组,仅单选完成时立即提交。 */\nfunction TreeSelectEditor({\n request,\n style,\n}: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const [value, setValue] = useState<ReactTreeSelectValue>(\n (request.value as ReactTreeSelectValue) ?? null,\n );\n const skipBlurCommitRef = useRef(false);\n useEffect(() => {\n setValue((request.value as ReactTreeSelectValue) ?? null);\n }, [request.value]);\n return (\n <div style={style}>\n <ReactTreeSelect\n autoFocus\n value={value}\n treeData={request.config.treeData}\n multiple={request.config.multiple}\n showSearch={request.config.showSearch}\n treeDefaultExpandAll={request.config.treeDefaultExpandAll}\n treeDefaultExpandedKeys={request.config.treeDefaultExpandedKeys}\n allowClear={request.config.allowClear}\n placeholder={request.config.placeholder}\n style={getEditorInputStyle(request)}\n onChange={(next, _nodes, info) => {\n setValue(next);\n request.onChange(next);\n if (info.complete && info.trigger !== \"clear\") {\n skipBlurCommitRef.current = true;\n request.onCommit();\n }\n }}\n onBlur={(event) => handleEditorBlur(event, skipBlurCommitRef, request)}\n onKeyDown={(event) => {\n if (event.key === \"Tab\")\n handleEditorNavigationKey(event, request, skipBlurCommitRef);\n if (event.key === \"Escape\") {\n skipBlurCommitRef.current = true;\n handleEditorEscapeKey(event, request);\n }\n }}\n />\n </div>\n );\n}\n\n/** 级联选择自行处理方向键;仅完成路径选择时提交单元格。 */\nfunction CascaderEditor({\n request,\n style,\n}: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const [value, setValue] = useState<\n (string | number)[] | (string | number)[][]\n >(Array.isArray(request.value) ? request.value : []);\n const skipBlurCommitRef = useRef(false);\n useEffect(() => {\n setValue(Array.isArray(request.value) ? request.value : []);\n }, [request.value]);\n return (\n <div style={style}>\n <ReactCascader\n value={value}\n options={request.config.options}\n autoFocus\n placeholder={request.config.placeholder}\n showSearch={request.config.showSearch}\n allowClear={request.config.allowClear}\n changeOnSelect={request.config.changeOnSelect}\n multiple={request.config.multiple}\n showCheckedStrategy={request.config.showCheckedStrategy}\n expandTrigger={request.config.expandTrigger}\n displayRender={request.config.displayRender}\n style={getEditorInputStyle(request)}\n onChange={(next, _options, info) => {\n setValue(next);\n request.onChange(next);\n // 清空只更新编辑草稿,保留焦点供继续选择或取消。\n if (info.complete && info.trigger !== \"clear\") {\n skipBlurCommitRef.current = true;\n request.onCommit();\n }\n }}\n onBlur={(event) => handleEditorBlur(event, skipBlurCommitRef, request)}\n onKeyDown={(event) => {\n if (event.key === \"Tab\")\n handleEditorNavigationKey(event, request, skipBlurCommitRef);\n if (event.key === \"Escape\") {\n skipBlurCommitRef.current = true;\n handleEditorEscapeKey(event, request);\n }\n }}\n />\n </div>\n );\n}\n\nfunction SelectEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const options = request.config.options ?? [];\n const [value, setValue] = useState<string | undefined>(\n request.value == null ? undefined : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? undefined : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactSelect\n value={value}\n autoFocus\n showArrow={false}\n showSearch={request.config.showSearch}\n filterOption={request.config.filterOption}\n options={options}\n onChange={(nextValue, info) => {\n const resolvedValue = String(nextValue);\n setValue(resolvedValue);\n request.onChange(\n options.find((option) => String(option.value) === resolvedValue)\n ?.value ?? resolvedValue,\n );\n if (info.trigger === \"mouse\") {\n request.onCommit();\n }\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction AutoCompleteEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState<string | number>(\n request.value == null ? \"\" : String(request.value),\n );\n const [options, setOptions] = useState(request.config.options ?? []);\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactAutoComplete\n value={value}\n autoFocus\n showArrow={false}\n options={options}\n placeholder={request.config.placeholder ?? \"\"}\n onChange={(nextValue, info) => {\n setValue(nextValue);\n request.onChange(nextValue);\n if (info.trigger === \"mouse\") {\n request.onCommit();\n }\n }}\n onPressEnter={async (input) => {\n const nextOptions = await request.config.onPressEnter?.(input);\n if (nextOptions) {\n setOptions(nextOptions);\n }\n return nextOptions;\n }}\n onBlur={() => {\n if (!skipBlurCommitRef.current) request.onCommit();\n skipBlurCommitRef.current = false;\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction ColorEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactColorPicker\n value={value}\n autoFocus\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const separator = request.config.rangeSeparator ?? \" ~ \";\n const [value, setValue] = useState<[string, string]>(\n toRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactDateRangePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n rangeSeparator={separator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction TimeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactTimePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateTimeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const [value, setValue] = useState(\n request.value == null ? \"\" : String(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(request.value == null ? \"\" : String(request.value));\n }, [request.value]);\n\n return (\n <div style={style}>\n <ReactDateTimePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n request.onCommit();\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction DateTimeRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const separator = request.config.rangeSeparator ?? \" ~ \";\n const [value, setValue] = useState<[string, string]>(\n toRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactDateTimeRangePicker\n value={value}\n autoFocus\n allowClear={false}\n showArrow={false}\n rangeSeparator={separator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction TimeRangeEditor(props: {\n request: ListTableEditorRequest;\n style: CSSProperties;\n}) {\n const { request, style } = props;\n const separator = request.config.rangeSeparator ?? \" ~ \";\n const [value, setValue] = useState<[string, string]>(\n toRangeTuple(request.value),\n );\n const skipBlurCommitRef = useRef(false);\n\n useEffect(() => {\n setValue(toRangeTuple(request.value));\n }, [request.value]);\n\n return (\n <div data-list-table-range-editor style={style}>\n <ReactTimeRangePicker\n value={value}\n autoFocus\n showArrow={false}\n rangeSeparator={separator}\n onChange={(nextValue) => {\n setValue(nextValue);\n request.onChange(nextValue);\n }}\n onBlur={(event) => {\n handleEditorBlur(event, skipBlurCommitRef, request);\n }}\n onKeyDown={(event) => {\n if (handleRangeInputTab(event)) {\n return;\n }\n if (handleEditorNavigationKey(event, request, skipBlurCommitRef)) {\n return;\n }\n handleEditorEscapeKey(event, request);\n }}\n style={getEditorInputStyle(request)}\n />\n </div>\n );\n}\n\nfunction handleEditorNavigationKey(\n event: KeyboardEvent<HTMLInputElement>,\n request: ListTableEditorRequest,\n skipBlurCommitRef: { current: boolean },\n) {\n const direction = resolveNavigationDirection(event);\n if (!direction || !request.onNavigate) {\n return false;\n }\n\n event.preventDefault();\n skipBlurCommitRef.current = true;\n request.onNavigate(direction);\n return true;\n}\n\nfunction handleRangeInputTab(event: KeyboardEvent<HTMLInputElement>) {\n if (event.key !== \"Tab\") {\n return false;\n }\n const host = event.currentTarget.closest<HTMLElement>(\n \"[data-list-table-range-editor]\",\n );\n const inputs = Array.from(\n host?.querySelectorAll<HTMLInputElement>(\"input\") ?? [],\n );\n const currentIndex = inputs.indexOf(event.currentTarget);\n const nextIndex = event.shiftKey ? currentIndex - 1 : currentIndex + 1;\n const nextInput = inputs[nextIndex];\n if (!nextInput) {\n return false;\n }\n\n event.preventDefault();\n focusAndSelectEditorInput(nextInput);\n return true;\n}\n\nfunction focusAndSelectEditorInput(input?: HTMLInputElement | null, selectOnFocus = true) {\n if (!input) {\n return;\n }\n input.focus();\n try {\n if (selectOnFocus) input.select();\n else input.setSelectionRange(input.value.length, input.value.length);\n } catch {\n // number 等输入类型不支持文本选择,但仍需保持焦点。\n }\n}\n\nfunction handleEditorEscapeKey(\n event: KeyboardEvent<HTMLInputElement>,\n request: ListTableEditorRequest,\n) {\n if (event.key !== \"Escape\") {\n return;\n }\n\n event.preventDefault();\n request.onCancel();\n}\n\nfunction toRangeTuple(value: unknown): [string, string] {\n if (!Array.isArray(value)) {\n return [\"\", \"\"];\n }\n\n return [String(value[0] ?? \"\"), String(value[1] ?? \"\")];\n}\n\nfunction toNumberRangeTuple(value: unknown): [number | null, number | null] {\n if (!Array.isArray(value)) {\n return [null, null];\n }\n return [toNumberValue(value[0]), toNumberValue(value[1])];\n}\n\nfunction handleEditorBlur(\n _event: FocusEvent<HTMLInputElement>,\n skipBlurCommitRef: { current: boolean },\n request: ListTableEditorRequest,\n) {\n if (skipBlurCommitRef.current) {\n skipBlurCommitRef.current = false;\n return;\n }\n\n request.onCommit();\n}\n\nfunction resolveNavigationDirection(\n event: KeyboardEvent<HTMLInputElement>,\n): ListTableEditorNavigateDirection | null {\n if (event.key === \"ArrowUp\") {\n return \"up\";\n }\n\n if (event.key === \"ArrowDown\") {\n return \"down\";\n }\n\n if (event.key === \"Tab\") {\n return event.shiftKey ? \"prev\" : \"next\";\n }\n\n return null;\n}\n","import { useState, type CSSProperties } from \"react\";\r\nimport type { FixedPopupConfig } from \"@canvas-components/list-table\";\r\nimport { ReactPopup } from \"@canvas-components/react-components\";\r\n\r\nexport function ReactTableFixedPopupView(props: {\r\n request: FixedPopupConfig | null;\r\n}) {\r\n const { request } = props;\r\n\r\n if (!request) {\r\n return null;\r\n }\r\n\r\n const surfaceStyle: CSSProperties = {\r\n minWidth: 160,\r\n padding: 8,\r\n };\r\n\r\n return (\r\n <ReactPopup\r\n open\r\n anchorRect={request.anchorRect}\r\n offset={8}\r\n minWidth={160}\r\n onOpenChange={(open) => {\r\n if (!open) {\r\n request.onClose();\r\n }\r\n }}\r\n surfaceStyle={surfaceStyle}\r\n >\r\n <div>\r\n <PopupAction\r\n active={request.currentFixed === \"left\"}\r\n onClick={() => request.onSelect(\"left\")}\r\n >\r\n 固定到左侧\r\n </PopupAction>\r\n <PopupAction\r\n active={request.currentFixed === \"right\"}\r\n onClick={() => request.onSelect(\"right\")}\r\n >\r\n 固定到右侧\r\n </PopupAction>\r\n <PopupAction onClick={() => request.onSelect(\"none\")}>取消固定</PopupAction>\r\n </div>\r\n </ReactPopup>\r\n );\r\n}\r\n\r\nfunction PopupAction(props: {\r\n active?: boolean;\r\n onClick: () => void;\r\n children: string;\r\n}) {\r\n const { active = false, onClick, children } = props;\r\n const [hovered, setHovered] = useState(false);\r\n const backgroundColor = active\r\n ? hovered\r\n ? \"#bae0ff\"\r\n : \"#e6f4ff\"\r\n : hovered\r\n ? \"#f5faff\"\r\n : \"transparent\";\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={onClick}\r\n onMouseEnter={() => {\r\n setHovered(true);\r\n }}\r\n onMouseLeave={() => {\r\n setHovered(false);\r\n }}\r\n style={{\r\n display: \"block\",\r\n width: \"100%\",\r\n height: 32,\r\n marginBottom: 4,\r\n border: \"none\",\r\n borderRadius: 8,\r\n background: backgroundColor,\r\n color: active ? \"#1677ff\" : \"#374151\",\r\n textAlign: \"left\",\r\n padding: \"0 10px\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n {children}\r\n </button>\r\n );\r\n}\r\n","import type { FilterPanelConfig } from \"@canvas-components/list-table\";\nimport {\n ReactFilterPanel,\n type ReactFilterPanelRequest,\n} from \"@canvas-components/react-components\";\n\n/** 将 ListTable 过滤请求接入共享过滤面板。 */\nexport function ReactTableFilterPanelView(props: {\n request: FilterPanelConfig | null;\n}) {\n return (\n <ReactFilterPanel\n request={props.request as ReactFilterPanelRequest | null}\n />\n );\n}\n","import type { CSSProperties } from \"react\";\nimport type { ReactPaginationProps } from \"@canvas-components/react-components\";\n\nexport interface ReactListTablePaginationLayout {\n size: NonNullable<ReactPaginationProps[\"size\"]>;\n height: number;\n paddingTop: number;\n}\n\n/**\n * 根据表格密度解析分页器尺寸及其布局占位。\n */\nexport function resolveReactListTablePaginationLayout(\n density?: number | \"auto\",\n): ReactListTablePaginationLayout {\n if (typeof density === \"number\" && density <= 26) {\n return { size: \"small\", height: 32, paddingTop: 8 };\n }\n if (typeof density === \"number\" && density >= 48) {\n return { size: \"large\", height: 52, paddingTop: 12 };\n }\n return { size: \"middle\", height: 44, paddingTop: 12 };\n}\n\r\n/**\r\n * 生成 Canvas 宿主布局样式,并在 React 分页器显示时预留真实占位高度。\r\n */\r\nexport function resolveReactListTableHostStyle(\n hasPagination: boolean,\n paginationHeight = resolveReactListTablePaginationLayout().height,\n): CSSProperties {\n return {\r\n position: \"relative\",\r\n flex: 1,\r\n minWidth: 0,\r\n width: \"100%\",\r\n minHeight: 0,\r\n boxSizing: \"border-box\",\r\n paddingBottom: hasPagination ? paginationHeight : undefined,\n };\n}\n","import type { PaginationConfig } from \"@canvas-components/list-table\";\nimport {\n ReactPagination,\n type ReactPaginationStyles,\n} from \"@canvas-components/react-components\";\nimport { resolveReactListTablePaginationLayout } from \"../../components/react-list-table-layout\";\n\nexport function ReactTablePaginationView(props: {\n config: PaginationConfig | null;\n density?: number | \"auto\";\n}) {\n const { config, density } = props;\n\n if (!config) {\n return null;\n }\n const layout = resolveReactListTablePaginationLayout(density);\n\n return (\n <div\n style={{\n position: \"absolute\",\n right: 0,\n bottom: 0,\n display: \"flex\",\n justifyContent: \"flex-end\",\n paddingTop: layout.paddingTop,\n height: layout.height,\n boxSizing: \"border-box\",\n }}\n >\n <ReactPagination\n styles={config.styles as ReactPaginationStyles}\n size={layout.size}\n current={config.current}\n total={config.total}\n pageSize={config.pageSize}\n pageSizeOptions={config.pageSizeOptions}\n disabled={config.disabled}\n showSizeChanger={config.showSizeChanger}\n showQuickJumper={config.showQuickJumper}\n showLessItems={config.showLessItems}\n simple={config.simple}\n showTotal={config.showTotal}\n onChange={(page, pageSize) => {\n config.onChange?.(page, pageSize);\n }}\n onPageSizeChange={(page, pageSize) => {\n config.onPageSizeChange?.(page, pageSize);\n }}\n />\n </div>\n );\n}\n","import { useEffect, useRef } from \"react\";\r\nimport type { ListTableDangerConfirmRequest } from \"@canvas-components/list-table\";\r\nimport { ReactPopconfirm } from \"@canvas-components/react-components\";\r\n\r\nexport function ReactTableDangerConfirmView(props: {\r\n request: ListTableDangerConfirmRequest | null;\r\n onClose: () => void;\r\n}) {\r\n const { request, onClose } = props;\r\n const confirmingRef = useRef(false);\r\n\r\n useEffect(() => {\r\n confirmingRef.current = false;\r\n }, [request]);\r\n\r\n if (!request) {\r\n return null;\r\n }\r\n\r\n return (\r\n <ReactPopconfirm\r\n open\r\n title={request.title}\r\n description={request.description}\r\n okText={request.okText}\r\n cancelText={request.cancelText}\r\n placement=\"topLeft\"\r\n onConfirm={() => {\r\n confirmingRef.current = true;\r\n try {\r\n request.onConfirm();\r\n } finally {\r\n onClose();\r\n }\r\n }}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n return;\r\n }\r\n if (confirmingRef.current) {\r\n confirmingRef.current = false;\r\n return;\r\n }\r\n request.onCancel();\r\n onClose();\r\n }}\r\n style={{\r\n position: \"fixed\",\r\n left: request.anchorRect.x,\r\n top: request.anchorRect.y,\r\n width: Math.max(request.anchorRect.width, 1),\r\n height: Math.max(request.anchorRect.height, 1),\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <span aria-hidden=\"true\" />\r\n </ReactPopconfirm>\r\n );\r\n}\r\n","import { useLayoutEffect, useRef, type CSSProperties } from \"react\";\nimport type { ListTableTooltipRequest } from \"@canvas-components/list-table\";\n\n/**\n * 表格 tooltip 视图,字号与内边距跟随表格 contentZoom。\n */\nexport function ReactTableTooltipView(props: {\n request: ListTableTooltipRequest | null;\n}) {\n const { request } = props;\n const tooltipRef = useRef<HTMLDivElement>(null);\n useLayoutEffect(() => {\n const tooltip = tooltipRef.current;\n if (!tooltip || !request || typeof window === \"undefined\") return;\n const width = tooltip.getBoundingClientRect().width;\n const viewportWidth = window.innerWidth;\n tooltip.style.left = `${Math.max(8, Math.min(request.x - width / 2, viewportWidth - width - 8))}px`;\n }, [request]);\n if (!request) {\n return null;\n }\n\n const zoom =\n typeof request.contentZoom === \"number\" &&\n Number.isFinite(request.contentZoom) &&\n request.contentZoom > 0\n ? request.contentZoom\n : 1;\n const fontSize = 14 * zoom;\n const paddingBlock = 6 * zoom;\n const paddingInline = 10 * zoom;\n const borderRadius = 6 * zoom;\n const maxWidth = 320 * zoom;\n\n const style: CSSProperties = {\n position: \"fixed\",\n left: request.x,\n top: request.y,\n maxWidth:\n request.variant === \"resize\"\n ? \"calc(100vw - 16px)\"\n : `min(${maxWidth}px, calc(100vw - 16px))`,\n padding: `${paddingBlock}px ${paddingInline}px`,\n borderRadius,\n background:\n request.variant === \"error\" ? \"#ffffff\" : \"rgba(17, 24, 39, 0.92)\",\n color: request.variant === \"error\" ? \"#ff4d4f\" : \"#fff\",\n fontSize,\n lineHeight: 1.5,\n boxShadow:\n request.variant === \"error\"\n ? \"0 10px 30px rgba(255, 77, 79, 0.16)\"\n : \"0 10px 30px rgba(15, 23, 42, 0.18)\",\n border:\n request.variant === \"error\" ? \"1px solid rgba(255, 77, 79, 0.2)\" : \"none\",\n pointerEvents: \"none\",\n zIndex: 1200,\n whiteSpace: request.variant === \"resize\" ? \"nowrap\" : \"pre-wrap\",\n wordBreak: \"break-word\",\n overflow: \"hidden\",\n textOverflow: request.variant === \"resize\" ? \"ellipsis\" : undefined,\n };\n\n return (\n <div ref={tooltipRef} style={style}>\n {request.content}\n </div>\n );\n}\n","import type { SVGProps } from \"react\";\r\n\r\nfunction ToolbarIcon(props: SVGProps<SVGSVGElement> & { path: string }) {\r\n const { path, ...svgProps } = props;\r\n return (\r\n <svg\r\n viewBox=\"64 64 896 896\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n {...svgProps}\r\n >\r\n <path d={path} />\r\n </svg>\r\n );\r\n}\r\n\r\nexport function FullscreenOutlined() {\r\n return <ToolbarIcon path=\"M290 236.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0013.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 000 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 00-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z\" />;\r\n}\r\n\r\nexport function FullscreenExitOutlined() {\r\n return <ToolbarIcon path=\"M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 00-11.3 0l-42.4 42.3a8.03 8.03 0 000 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 004.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 000 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 00391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 00-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 00-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 00-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z\" />;\r\n}\r\n\r\nexport function ReloadOutlined() {\r\n return <ToolbarIcon path=\"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z\" />;\r\n}\r\n\r\nexport function ExportOutlined() {\r\n return <ToolbarIcon path=\"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM770.87 199.13l-52.2-52.2a8.01 8.01 0 014.7-13.6l179.4-21c5.1-.6 9.5 3.7 8.9 8.9l-21 179.4c-.8 6.6-8.9 9.4-13.6 4.7l-52.4-52.4-256.2 256.2a8.03 8.03 0 01-11.3 0l-42.4-42.4a8.03 8.03 0 010-11.3l256.1-256.3z\" />;\r\n}\r\n\r\nexport function ColumnHeightOutlined() {\r\n return <ToolbarIcon path=\"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 00-11.3 0L403.6 366.3a7.23 7.23 0 005.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z\" />;\r\n}\r\n\r\nexport function SettingOutlined() {\r\n return <ToolbarIcon path=\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\" />;\r\n}\r\n\r\nexport function HolderOutlined() {\r\n return (\r\n <ToolbarIcon path=\"M300 276.5a56 56 0 1056-97 56 56 0 00-56 97zm0 284a56 56 0 1056-97 56 56 0 00-56 97zM640 228a56 56 0 10112 0 56 56 0 00-112 0zm0 284a56 56 0 10112 0 56 56 0 00-112 0zM300 844.5a56 56 0 1056-97 56 56 0 00-56 97zM640 796a56 56 0 10112 0 56 56 0 00-112 0z\" />\r\n );\r\n}\r\n","/** 表格进入全屏时,将浮层挂到包含表格的全屏节点。 */\nexport function resolveFullscreenPortalContainer(host: HTMLElement | null) {\n const fullscreenElement = document.fullscreenElement;\n return fullscreenElement instanceof HTMLElement &&\n host &&\n fullscreenElement.contains(host)\n ? fullscreenElement\n : document.body;\n}\n","import {\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { resolveFullscreenPortalContainer } from \"../../components/fullscreen-portal\";\n\nexport interface SortableListItem {\n key: string;\n parentKey: string;\n label: ReactNode;\n}\n\nexport function SortableList<T extends SortableListItem>(props: {\n items: T[];\n onOrderChange: (parentKey: string, orderedKeys: string[]) => void;\n renderItem: (\n item: T,\n handleProps: {\n onPointerDown: (event: ReactPointerEvent<HTMLElement>) => void;\n },\n ) => ReactNode;\n}) {\n const { items, onOrderChange } = props;\n const rootRef = useRef<HTMLDivElement | null>(null);\n const dragRef = useRef<{\n source: T;\n target: T;\n layouts: SortableItemLayout[];\n offsetY: number;\n width: number;\n left: number;\n height: number;\n } | null>(null);\n const [dragState, setDragState] = useState<{\n sourceKey: string;\n targetKey: string;\n pointerY: number;\n } | null>(null);\n\n useEffect(\n () => () => {\n document.body.classList.remove(\"react-list-table-sorting\");\n document.body.style.removeProperty(\"user-select\");\n },\n [],\n );\n\n useEffect(() => {\n if (!dragState) return;\n const handleMove = (event: PointerEvent) => {\n const current = dragRef.current;\n if (!current) return;\n const target = resolveClosestSortableItem({\n items,\n parentKey: current.source.parentKey,\n layouts: current.layouts,\n overlayCenterY: event.clientY - current.offsetY + current.height / 2,\n });\n if (target) {\n current.target = target;\n }\n setDragState({\n sourceKey: current.source.key,\n targetKey: current.target.key,\n pointerY: event.clientY,\n });\n };\n const handleEnd = () => {\n const current = dragRef.current;\n if (current && current.source.key !== current.target.key) {\n const siblings = items.filter(\n (item) => item.parentKey === current.source.parentKey,\n );\n const orderedKeys = resolveNextSortableOrder(\n siblings.map((item) => item.key),\n current.source.key,\n current.target.key,\n );\n if (orderedKeys) {\n onOrderChange(current.source.parentKey, orderedKeys);\n }\n }\n dragRef.current = null;\n setDragState(null);\n document.body.classList.remove(\"react-list-table-sorting\");\n document.body.style.removeProperty(\"user-select\");\n };\n window.addEventListener(\"pointermove\", handleMove);\n window.addEventListener(\"pointerup\", handleEnd, { once: true });\n window.addEventListener(\"pointercancel\", handleEnd, { once: true });\n return () => {\n window.removeEventListener(\"pointermove\", handleMove);\n window.removeEventListener(\"pointerup\", handleEnd);\n window.removeEventListener(\"pointercancel\", handleEnd);\n };\n }, [dragState != null, items, onOrderChange]);\n\n const sourceIndex = dragState\n ? items.findIndex((item) => item.key === dragState.sourceKey)\n : -1;\n const targetIndex = dragState\n ? items.findIndex((item) => item.key === dragState.targetKey)\n : -1;\n\n return (\n <div ref={rootRef}>\n {items.map((item, index) => {\n const style = resolveSortableTransform(\n index,\n sourceIndex,\n targetIndex,\n dragRef.current?.height ?? 0,\n );\n return (\n <div\n key={item.key}\n data-sortable-key={item.key}\n className={dragState?.sourceKey === item.key ? \"dragging\" : \"\"}\n style={style}\n >\n {props.renderItem(item, {\n onPointerDown: (event) => {\n if (event.button !== 0) return;\n const row = event.currentTarget.closest<HTMLElement>(\n \"[data-sortable-key]\",\n );\n if (!row) return;\n const rect = row.getBoundingClientRect();\n dragRef.current = {\n source: item,\n target: item,\n layouts: collectSortableItemLayouts(rootRef.current),\n offsetY: event.clientY - rect.top,\n width: rect.width,\n left: rect.left,\n height: rect.height,\n };\n setDragState({\n sourceKey: item.key,\n targetKey: item.key,\n pointerY: event.clientY,\n });\n document.body.classList.add(\"react-list-table-sorting\");\n document.body.style.userSelect = \"none\";\n event.preventDefault();\n },\n })}\n </div>\n );\n })}\n {dragState && dragRef.current\n ? createPortal(\n <div\n className=\"react-list-table-sort-overlay\"\n style={{\n left: dragRef.current.left,\n top: dragState.pointerY - dragRef.current.offsetY,\n width: dragRef.current.width,\n height: dragRef.current.height,\n }}\n >\n {props.renderItem(dragRef.current.source, {\n onPointerDown: (event) => event.preventDefault(),\n })}\n </div>,\n resolveFullscreenPortalContainer(rootRef.current),\n )\n : null}\n </div>\n );\n}\n\nexport function resolveNextSortableOrder(\n currentKeys: string[],\n sourceKey: string,\n targetKey: string,\n) {\n const sourceIndex = currentKeys.indexOf(sourceKey);\n const targetIndex = currentKeys.indexOf(targetKey);\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\n return null;\n }\n const nextKeys = [...currentKeys];\n const [source] = nextKeys.splice(sourceIndex, 1);\n nextKeys.splice(targetIndex, 0, source);\n return nextKeys;\n}\n\ninterface SortableItemLayout {\n key: string;\n centerY: number;\n}\n\nfunction collectSortableItemLayouts(root: HTMLDivElement | null) {\n if (!root) return [];\n return Array.from(\n root.querySelectorAll<HTMLElement>(\"[data-sortable-key]\"),\n ).map((element) => {\n const rect = element.getBoundingClientRect();\n return {\n key: element.dataset.sortableKey ?? \"\",\n centerY: rect.top + rect.height / 2,\n };\n });\n}\n\nexport function resolveClosestSortableItem<T extends SortableListItem>(params: {\n items: T[];\n parentKey: string;\n layouts: SortableItemLayout[];\n overlayCenterY: number;\n}) {\n let closestItem: T | null = null;\n let closestDistance = Number.POSITIVE_INFINITY;\n params.layouts.forEach((layout) => {\n const item = params.items.find((candidate) => candidate.key === layout.key);\n if (!item || item.parentKey !== params.parentKey) return;\n const distance = Math.abs(params.overlayCenterY - layout.centerY);\n if (distance < closestDistance) {\n closestDistance = distance;\n closestItem = item;\n }\n });\n return closestItem;\n}\n\nfunction resolveSortableTransform(\n index: number,\n sourceIndex: number,\n targetIndex: number,\n height: number,\n): CSSProperties {\n let translateY = 0;\n if (\n sourceIndex < targetIndex &&\n index > sourceIndex &&\n index <= targetIndex\n ) {\n translateY = -height;\n } else if (\n sourceIndex > targetIndex &&\n index >= targetIndex &&\n index < sourceIndex\n ) {\n translateY = height;\n }\n return {\n transform: translateY ? `translate3d(0, ${translateY}px, 0)` : undefined,\n transition: sourceIndex >= 0 ? \"transform 180ms ease\" : undefined,\n };\n}\n","import styleInject from '#style-inject';styleInject(\".react-list-table-shell {\\n background: #fff;\\n font-size: 14px;\\n}\\n.react-list-table-titlebar {\\n height: 44px;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 12px 0;\\n box-sizing: border-box;\\n background: #fff;\\n}\\n.react-list-table-shell-fullscreen {\\n width: 100% !important;\\n height: 100% !important;\\n}\\n.react-list-table-shell-fullscreen .canvas-list-table-root {\\n height: 100% !important;\\n}\\n.react-list-table-title {\\n min-width: 0;\\n color: #1f2937;\\n font-size: 14px;\\n font-weight: 600;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.react-list-table-tools {\\n display: flex;\\n align-items: center;\\n gap: 14px;\\n color: #475569;\\n}\\n.react-list-table-tool-wrap {\\n position: relative;\\n display: inline-flex;\\n}\\n.react-list-table-tool {\\n width: 20px;\\n height: 24px;\\n padding: 0;\\n border: 0;\\n color: inherit;\\n background: transparent;\\n font: 16px/24px sans-serif;\\n cursor: pointer;\\n}\\n.react-list-table-tool:hover {\\n color: #1677ff;\\n}\\n.react-list-table-tool-menu,\\n.react-list-table-column-setting {\\n position: absolute;\\n z-index: 120;\\n top: 28px;\\n right: 0;\\n min-width: 112px;\\n padding: 6px;\\n border: 1px solid #e5e7eb;\\n border-radius: 6px;\\n background: #fff;\\n box-shadow: 0 8px 24px rgba(15, 23, 42, 0.14);\\n}\\n.react-list-table-tool-menu button {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n width: 100%;\\n height: 32px;\\n padding: 0 10px;\\n border: 0;\\n border-radius: 8px;\\n background: transparent;\\n color: #374151;\\n font-size: 14px;\\n text-align: left;\\n cursor: pointer;\\n}\\n.react-list-table-tool-menu {\\n width: max-content;\\n min-width: 0;\\n padding: 8px;\\n border-radius: 8px;\\n}\\n.react-list-table-tool-menu-check {\\n width: 16px;\\n flex: 0 0 16px;\\n margin-right: 6px;\\n text-align: center;\\n}\\n.react-list-table-tool-menu button:hover {\\n background: #f3f4f6;\\n}\\n.react-list-table-column-setting {\\n width: 328px;\\n max-height: 360px;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n}\\n.react-list-table-column-setting-head {\\n display: flex;\\n gap: 12px;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: space-between;\\n padding: 4px 6px 8px;\\n border-bottom: 1px solid #f0f0f0;\\n flex: 0 0 auto;\\n}\\n.react-list-table-column-setting-head button {\\n border: 0;\\n color: #1677ff;\\n background: transparent;\\n cursor: pointer;\\n}\\n.react-list-table-column-setting-body {\\n flex: 1 1 auto;\\n min-height: 0;\\n overflow: auto;\\n}\\n.react-list-table-column-item {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n justify-content: space-between;\\n padding: 7px 6px;\\n box-sizing: border-box;\\n cursor: pointer;\\n}\\n.react-list-table-column-main,\\n.react-list-table-column-actions {\\n display: inline-flex;\\n align-items: center;\\n gap: 8px;\\n}\\n.react-list-table-column-main {\\n min-width: 0;\\n}\\n.react-list-table-column-actions {\\n flex: 0 0 auto;\\n}\\n.react-list-table-column-actions > .canvas-react-select-wrap {\\n flex: 0 0 96px;\\n width: 96px;\\n height: 24px;\\n}\\n.react-list-table-column-label {\\n min-width: 64px;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.react-list-table-column-width-input {\\n height: 22px;\\n padding-inline: 5px;\\n}\\n.react-list-table-column-fixed-input {\\n height: 22px;\\n padding-inline: 6px;\\n font-size: 14px;\\n}\\n.react-list-table-column-sort-input {\\n height: 22px;\\n padding-inline: 6px;\\n font-size: 14px;\\n}\\n.react-list-table-column-setting label.dragging {\\n opacity: 0.45;\\n background: #e6f4ff;\\n}\\n.react-list-table-column-setting [data-sortable-key].dragging {\\n opacity: 0.28;\\n}\\n.react-list-table-column-drag {\\n color: #94a3b8;\\n display: inline-flex;\\n font-size: 14px;\\n cursor: grab;\\n user-select: none;\\n}\\nbody.react-list-table-sorting,\\nbody.react-list-table-sorting * {\\n cursor: grabbing !important;\\n}\\n.react-list-table-sort-overlay {\\n position: fixed;\\n z-index: 1400;\\n display: block;\\n padding: 0;\\n box-sizing: border-box;\\n color: #334155;\\n background: #fff;\\n border: 1px solid #91caff;\\n border-radius: 6px;\\n box-shadow: 0 8px 24px rgba(15, 23, 42, 0.18);\\n pointer-events: none;\\n}\\n.react-list-table-sort-overlay .react-list-table-column-item {\\n width: 100%;\\n height: 100%;\\n}\\n\")","import { useEffect, useRef, useState, type ReactNode } from \"react\";\nimport {\n ColumnHeightOutlined,\n ExportOutlined,\n FullscreenExitOutlined,\n FullscreenOutlined,\n HolderOutlined,\n ReloadOutlined,\n SettingOutlined,\n} from \"./toolbar-icons\";\nimport type {\n ListTableColumn,\n ListTableDensity,\n ListTableExportXlsxOptions,\n ListTableSortState,\n} from \"@canvas-components/list-table\";\nimport {\n ReactNumberInput,\n ReactCheckbox,\n ReactSelect,\n} from \"@canvas-components/react-components\";\nimport type { ReactListTableToolbarOptions } from \"../../types\";\nimport { SortableList } from \"./sortable-list\";\nimport { TABLE_DENSITY_OPTIONS } from \"../density/density-options\";\nimport \"./style.css\";\n\nexport function ReactTableToolbar<RecordType>(props: {\n title?: ReactNode;\n toolbar?: false | ReactListTableToolbarOptions;\n columns: ListTableColumn<RecordType>[];\n sortState: ListTableSortState;\n onColumnSettingsOpen: () => void;\n onColumnSortChange: (\n columnKey: string,\n order: \"ascend\" | \"descend\" | null,\n ) => void;\n density: number | \"auto\" | undefined;\n hostRef: React.RefObject<HTMLDivElement | null>;\n onFullscreenChange?: (isFullscreen: boolean) => void;\n onDensityChange: (rowHeight: ListTableDensity) => void;\n onExport: (options?: ListTableExportXlsxOptions) => void;\n onColumnVisibilityChange: (columnKey: string, visible: boolean) => void;\n onColumnWidthChange: (columnKey: string, width: number) => void;\n onColumnFixedChange: (\n columnKey: string,\n fixed: \"left\" | \"right\" | undefined,\n ) => void;\n onColumnOrderChange: (parentKey: string, orderedKeys: string[]) => void;\n onResetColumns: () => void;\n cacheColumnSettings?: boolean;\n columnSettingsCacheAvailable?: boolean;\n onColumnSettingsCacheChange?: (enabled: boolean) => void;\n}) {\n const { toolbar, title } = props;\n const [densityOpen, setDensityOpen] = useState(false);\n const [settingOpen, setSettingOpen] = useState(false);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const hasToolbar = toolbar !== undefined && toolbar !== false;\n\n useEffect(() => {\n const close = (event: MouseEvent) => {\n if (\n (event.target as HTMLElement | null)?.closest(\".canvas-react-popup\")\n ) {\n return;\n }\n if (!rootRef.current?.contains(event.target as Node)) {\n setDensityOpen(false);\n setSettingOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", close);\n return () => document.removeEventListener(\"mousedown\", close);\n }, []);\n\n useEffect(() => {\n const handleFullscreenChange = () => {\n const fullscreenNode =\n (typeof toolbar === \"object\" ? toolbar.getFullscreenNode?.() : null) ??\n props.hostRef.current;\n const nextIsFullscreen = document.fullscreenElement === fullscreenNode;\n setIsFullscreen(nextIsFullscreen);\n props.onFullscreenChange?.(nextIsFullscreen);\n };\n handleFullscreenChange();\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () =>\n document.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n }, [props.hostRef, props.onFullscreenChange, toolbar]);\n\n if (!title && !hasToolbar) return null;\n const config: ReactListTableToolbarOptions =\n typeof toolbar === \"object\" ? toolbar : {};\n return (\n <div className=\"react-list-table-titlebar\" ref={rootRef}>\n <div className=\"react-list-table-title\">{title}</div>\n {hasToolbar ? (\n <div className=\"react-list-table-tools\">\n {config.extra}\n {config.showFullscreen !== false ? (\n <ToolButton\n label={isFullscreen ? \"退出全屏\" : \"全屏\"}\n onClick={() => {\n if (isFullscreen) {\n void document.exitFullscreen?.();\n } else {\n const fullscreenNode =\n config.getFullscreenNode?.() ?? props.hostRef.current;\n void fullscreenNode?.requestFullscreen?.();\n }\n }}\n >\n {isFullscreen ? (\n <FullscreenExitOutlined />\n ) : (\n <FullscreenOutlined />\n )}\n </ToolButton>\n ) : null}\n {config.showRefresh !== false ? (\n <ToolButton\n label=\"刷新\"\n iconSize={14}\n onClick={() => config.onRefresh?.()}\n >\n <ReloadOutlined />\n </ToolButton>\n ) : null}\n {config.showExport ? (\n <ToolButton\n label=\"导出\"\n iconSize={14}\n onClick={() => {\n if (config.onExport) {\n config.onExport();\n } else {\n props.onExport(config.exportOptions);\n }\n }}\n >\n <ExportOutlined />\n </ToolButton>\n ) : null}\n {config.showDensity !== false ? (\n <div className=\"react-list-table-tool-wrap\">\n <ToolButton\n label=\"表格密度\"\n onClick={() => setDensityOpen((v) => !v)}\n >\n <ColumnHeightOutlined />\n </ToolButton>\n {densityOpen ? (\n <div className=\"react-list-table-tool-menu\">\n {TABLE_DENSITY_OPTIONS.map((option) => (\n <button\n type=\"button\"\n key={option.key}\n className={\n props.density === option.rowHeight ? \"active\" : \"\"\n }\n onClick={() => {\n props.onDensityChange(option.rowHeight);\n setDensityOpen(false);\n }}\n >\n <span\n className=\"react-list-table-tool-menu-check\"\n aria-hidden=\"true\"\n >\n {props.density === option.rowHeight ? \"✓\" : \"\"}\n </span>\n <span>{option.label}</span>\n </button>\n ))}\n </div>\n ) : null}\n </div>\n ) : null}\n {config.showColumnSetting !== false ? (\n <div className=\"react-list-table-tool-wrap\">\n <ToolButton\n label=\"列设置\"\n onClick={() => {\n if (!settingOpen) props.onColumnSettingsOpen();\n setSettingOpen((v) => !v);\n }}\n >\n <SettingOutlined />\n </ToolButton>\n {settingOpen ? (\n <div\n className=\"react-list-table-column-setting\"\n style={{ width: config.columnSettingWidth ?? 430 }}\n >\n <div className=\"react-list-table-column-setting-head\">\n <strong>列设置</strong>\n <ReactCheckbox\n checked={props.cacheColumnSettings === true}\n disabled={!props.columnSettingsCacheAvailable}\n title={\n props.columnSettingsCacheAvailable\n ? \"缓存列宽、显隐、固定和顺序\"\n : \"配置 storageKey 后可缓存列设置\"\n }\n onChange={(event) =>\n props.onColumnSettingsCacheChange?.(\n event.target.checked,\n )\n }\n >\n 缓存到本地\n </ReactCheckbox>\n <span style={{ marginLeft: \"auto\" }}>\n {config.columnSettingHeaderExtra}\n </span>\n <button type=\"button\" onClick={props.onResetColumns}>\n 重置\n </button>\n </div>\n <div className=\"react-list-table-column-setting-body canvas-react-scrollbar\">\n <SortableList\n items={flattenColumns(props.columns)}\n onOrderChange={props.onColumnOrderChange}\n renderItem={(column, handleProps) => (\n <div className=\"react-list-table-column-item\">\n <span\n className=\"react-list-table-column-main\"\n style={{ paddingLeft: column.level * 16 }}\n >\n <span\n className=\"react-list-table-column-drag\"\n {...handleProps}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n >\n <HolderOutlined />\n </span>\n <input\n type=\"checkbox\"\n checked={!column.hidden}\n disabled={column.disableHide}\n onChange={(event) =>\n props.onColumnVisibilityChange(\n column.key,\n event.target.checked,\n )\n }\n />\n <span className=\"react-list-table-column-label\">\n {column.label}\n </span>\n </span>\n {!column.isGroup ? (\n <span className=\"react-list-table-column-actions\">\n <ReactNumberInput\n className=\"react-list-table-column-width-input\"\n min={column.minWidth}\n max={column.maxWidth}\n value={column.width}\n allowClear={false}\n aria-label={`${column.label}列宽`}\n style={{ width: 80, height: 24 }}\n onChange={(width) => {\n if (\n width != null &&\n Number.isFinite(width) &&\n width > 0 &&\n (column.minWidth == null ||\n width >= column.minWidth) &&\n (column.maxWidth == null ||\n width <= column.maxWidth)\n ) {\n props.onColumnWidthChange(\n column.key,\n width,\n );\n }\n }}\n />\n <ReactSelect\n className=\"react-list-table-column-sort-input\"\n value={\n props.sortState.find(\n (item) => item.key === column.key,\n )?.order ?? \"default\"\n }\n options={[\n { label: \"默认排序\", value: \"default\" },\n { label: \"升序\", value: \"ascend\" },\n { label: \"降序\", value: \"descend\" },\n ]}\n disabled={!column.sortable}\n allowClear={false}\n showSearch={false}\n style={{ width: \"100%\", height: 24 }}\n aria-label={`${column.label}排序方式`}\n onChange={(value) =>\n props.onColumnSortChange(\n column.key,\n value === \"ascend\" || value === \"descend\"\n ? value\n : null,\n )\n }\n />\n <ReactSelect\n className=\"react-list-table-column-fixed-input\"\n value={column.fixed ?? \"none\"}\n options={[\n { label: \"不固定\", value: \"none\" },\n { label: \"固定左侧\", value: \"left\" },\n { label: \"固定右侧\", value: \"right\" },\n ]}\n allowClear={false}\n showSearch={false}\n style={{ width: \"100%\", height: 24 }}\n aria-label={`${column.label}固定方向`}\n onChange={(value) => {\n props.onColumnFixedChange(\n column.key,\n value === \"left\" || value === \"right\"\n ? value\n : undefined,\n );\n }}\n />\n </span>\n ) : null}\n </div>\n )}\n />\n </div>\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction ToolButton(props: {\n label: string;\n children: ReactNode;\n iconSize?: number;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n className=\"react-list-table-tool\"\n style={{ fontSize: props.iconSize ?? 16 }}\n title={props.label}\n aria-label={props.label}\n onClick={props.onClick}\n >\n {props.children}\n </button>\n );\n}\n\nfunction flattenColumns<RecordType>(\n columns: ListTableColumn<RecordType>[],\n parentKey = \"root\",\n level = 0,\n): Array<{\n key: string;\n label: string;\n hidden: boolean;\n parentKey: string;\n width: number;\n minWidth?: number;\n maxWidth?: number;\n fixed?: \"left\" | \"right\";\n level: number;\n isGroup: boolean;\n disableHide: boolean;\n sortable: boolean;\n}> {\n return columns.flatMap((column) => {\n if (column.hideInSetting) {\n return [];\n }\n const key = String(column.key ?? column.dataIndex);\n const label =\n column.settingTitle ??\n (typeof column.title === \"string\" ? column.title : key);\n const current = {\n key,\n label,\n hidden: column.hidden === true,\n parentKey,\n width: Number(column.width) || 160,\n minWidth:\n typeof column.minWidth === \"number\" ? column.minWidth : undefined,\n maxWidth:\n typeof column.maxWidth === \"number\" ? column.maxWidth : undefined,\n fixed: column.fixed,\n level,\n isGroup: Boolean(column.children?.length),\n disableHide: column.disableHide === true,\n sortable: column.allowSort !== false && column.sorter !== false,\n };\n return column.children?.length\n ? [current, ...flattenColumns(column.children, key, level + 1)]\n : [current];\n });\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n ListTableDangerConfirmRequest,\n ListTableExportNameRequest,\n ListTableEditorRequest,\n ListTableLoadingRequest,\n ListTableImagePreviewRequest,\n ListTableOptions,\n ListTableTooltipRequest,\n FixedPopupConfig,\n FilterPanelConfig,\n HeaderContextMenuConfig,\n ListTableSearchRequest,\n PaginationConfig,\n} from \"@canvas-components/list-table\";\nimport { ListTable } from \"@canvas-components/list-table\";\n\nexport function useReactListTableState<RecordType>(\n options: ListTableOptions<RecordType>,\n) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const tableRef = useRef<ListTable<RecordType> | null>(null);\n const [editorRequest, setEditorRequest] =\n useState<ListTableEditorRequest | null>(null);\n const [paginationConfig, setPaginationConfig] =\n useState<PaginationConfig | null>(null);\n const [tooltipRequest, setTooltipRequest] =\n useState<ListTableTooltipRequest | null>(null);\n const [loadingRequest, setLoadingRequest] =\n useState<ListTableLoadingRequest | null>(null);\n const [filterPanelRequest, setFilterPanelRequest] =\n useState<FilterPanelConfig | null>(null);\n const [fixedPopupRequest, setFixedPopupRequest] =\n useState<FixedPopupConfig | null>(null);\n const [headerContextMenuRequest, setHeaderContextMenuRequest] =\n useState<HeaderContextMenuConfig | null>(null);\n const [searchRequest, setSearchRequest] =\n useState<ListTableSearchRequest | null>(null);\n const [imagePreviewRequest, setImagePreviewRequest] =\n useState<ListTableImagePreviewRequest | null>(null);\n const [dangerConfirmRequest, setDangerConfirmRequest] =\n useState<ListTableDangerConfirmRequest | null>(null);\n const [exportNameRequest, setExportNameRequest] =\n useState<ListTableExportNameRequest | null>(null);\n\n const uiOptions = useMemo(\n () => ({\n ...options.ui,\n onExportNameRequest: (request: ListTableExportNameRequest | null) => {\n setExportNameRequest(request);\n options.ui?.onExportNameRequest?.(request);\n },\n onEditorRequest: (request: ListTableEditorRequest | null) => {\n setEditorRequest(request);\n options.ui?.onEditorRequest?.(request);\n },\n onPaginationRender: (config: PaginationConfig | null) => {\n setPaginationConfig(config);\n options.ui?.onPaginationRender?.(config);\n },\n onTooltipRequest: (request: ListTableTooltipRequest | null) => {\n setTooltipRequest(request);\n options.ui?.onTooltipRequest?.(request);\n },\n onLoadingRequest: (request: ListTableLoadingRequest | null) => {\n setLoadingRequest(request);\n options.ui?.onLoadingRequest?.(request);\n },\n onFilterPanelRequest: (request: FilterPanelConfig | null) => {\n setFilterPanelRequest(request);\n options.ui?.onFilterPanelRequest?.(request);\n },\n onFixedPopupRequest: (request: FixedPopupConfig | null) => {\n setFixedPopupRequest(request);\n options.ui?.onFixedPopupRequest?.(request);\n },\n onHeaderContextMenuRequest: (request: HeaderContextMenuConfig | null) => {\n setHeaderContextMenuRequest(request);\n options.ui?.onHeaderContextMenuRequest?.(request);\n },\n onSearchRequest: (request: ListTableSearchRequest | null) => {\n setSearchRequest(request);\n options.ui?.onSearchRequest?.(request);\n },\n onImagePreviewRequest: (request: ListTableImagePreviewRequest | null) => {\n setImagePreviewRequest(request);\n options.ui?.onImagePreviewRequest?.(request);\n },\n onDangerConfirmRequest: (\n request: ListTableDangerConfirmRequest | null,\n ) => {\n setDangerConfirmRequest(request);\n options.ui?.onDangerConfirmRequest?.(request);\n },\n }),\n [options.ui],\n );\n const appliedOptionsRef = useRef<{\n options: ListTableOptions<RecordType>;\n uiOptions: typeof uiOptions;\n } | null>(null);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const table = new ListTable(container, {\n ...options,\n ui: uiOptions,\n });\n appliedOptionsRef.current = { options, uiOptions };\n table.mount();\n tableRef.current = table;\n\n return () => {\n table.destroy();\n tableRef.current = null;\n appliedOptionsRef.current = null;\n setEditorRequest(null);\n setPaginationConfig(null);\n setTooltipRequest(null);\n setLoadingRequest(null);\n setFilterPanelRequest(null);\n setFixedPopupRequest(null);\n setHeaderContextMenuRequest(null);\n setSearchRequest(null);\n setImagePreviewRequest(null);\n setDangerConfirmRequest(null);\n setExportNameRequest(null);\n };\n }, []);\n\n useEffect(() => {\n if (\n appliedOptionsRef.current?.options === options &&\n appliedOptionsRef.current.uiOptions === uiOptions\n ) {\n return;\n }\n appliedOptionsRef.current = { options, uiOptions };\n tableRef.current?.updateOptions({\n ...options,\n ui: uiOptions,\n });\n }, [options, uiOptions]);\n\n return {\n containerRef,\n tableRef,\n editorRequest,\n paginationConfig,\n tooltipRequest,\n loadingRequest,\n filterPanelRequest,\n fixedPopupRequest,\n headerContextMenuRequest,\n searchRequest,\n imagePreviewRequest,\n dangerConfirmRequest,\n exportNameRequest,\n closeExportNameRequest: () => {\n setExportNameRequest(null);\n },\n closeDangerConfirmRequest: () => {\n setDangerConfirmRequest(null);\n options.ui?.onDangerConfirmRequest?.(null);\n },\n };\n}\n","import type { ListTableOptions } from \"@canvas-components/list-table\";\nimport type { ReactListTableProps } from \"../types\";\n\n/**\n * 解析随密度切换的关联行高;自适应密度只接管未显式配置的高度。\n */\nexport function resolveDensityLinkedHeight(\n densityOverride: 26 | 32 | 48 | 56 | \"auto\" | null,\n configuredHeight: number | undefined,\n) {\n return typeof densityOverride === \"number\"\n ? densityOverride\n : configuredHeight;\n}\n\n/**\n * 全屏时使用宿主容器尺寸,退出全屏后恢复用户配置尺寸。\n */\nexport function resolveFullscreenTableSize(\n width: number | string | undefined,\n height: number | string | undefined,\n isFullscreen: boolean,\n) {\n return isFullscreen\n ? { width: \"100%\" as const, height: \"100%\" as const }\n : { width, height };\n}\n\nexport function buildListTableOptions<RecordType>(\n props: Omit<ReactListTableProps<RecordType>, \"className\" | \"style\">,\n): ListTableOptions<RecordType> {\n const {\n width,\n height,\n emptyText,\n scroll,\n locale,\n onChange,\n query,\n ...restProps\n } = props;\n\n return {\n type: \"list\",\n ...restProps,\n rowHeight: restProps.rowHeight ?? 32,\n width: scroll?.x === true ? \"100%\" : (scroll?.x ?? width),\n height: scroll?.y ?? height,\n emptyText: locale?.emptyText ?? emptyText,\n query: onChange\n ? {\n ...query,\n onChange,\n }\n : query,\n };\n}\n","import { createContext, useContext, type PropsWithChildren } from \"react\";\nimport type { ListTableDebugOptions } from \"@canvas-components/list-table\";\n\nconst ReactListTableDebugContext = createContext(false);\n\nconst INHERITED_DEBUG_DEFAULTS = {\n enabled: true,\n showHeaderBounds: true,\n showBodyBounds: true,\n showFixedSplitLines: true,\n showHitTarget: true,\n showHeaderActionOverlay: true,\n} satisfies ListTableDebugOptions;\n\n/** ReactListTable 调试模式上下文属性。 */\nexport interface ReactListTableDebugProviderProps extends PropsWithChildren {\n enabled: boolean;\n}\n\n/**\n * 为后代 ReactListTable 统一切换核心调试模式。\n *\n * @param props 上下文属性。\n * @returns 调试模式上下文节点。\n */\nexport function ReactListTableDebugProvider(\n props: ReactListTableDebugProviderProps,\n) {\n return (\n <ReactListTableDebugContext.Provider value={props.enabled}>\n {props.children}\n </ReactListTableDebugContext.Provider>\n );\n}\n\n/** 获取上层统一设置的 ReactListTable 调试状态。 */\nexport function useReactListTableDebugEnabled() {\n return useContext(ReactListTableDebugContext);\n}\n\n/**\n * 合并表格自身调试配置与上层统一调试状态。\n *\n * @param debug 表格自身调试配置。\n * @param inheritedEnabled 上层统一调试状态。\n * @returns 最终传给 ListTable 核心的调试配置。\n */\nexport function resolveReactListTableDebugOptions(\n debug: ListTableDebugOptions | undefined,\n inheritedEnabled: boolean,\n) {\n if (!inheritedEnabled) return debug;\n return {\n ...INHERITED_DEBUG_DEFAULTS,\n ...debug,\n enabled: true,\n } satisfies ListTableDebugOptions;\n}\n","import type { ReactListTableColumnType, ReactListTableProps } from \"../types\";\n\n/** 将列设置面板的局部修改覆盖到当前列树,未修改列保持恢复后的配置。 */\nexport function applyColumnManagerState<RecordType>(\n columns: ReactListTableProps<RecordType>[\"columns\"],\n visibility: Map<string, boolean>,\n orders: Map<string, string[]>,\n config: Map<string, { width?: number; fixed?: \"left\" | \"right\" | null }>,\n parentKey = \"root\",\n): ReactListTableProps<RecordType>[\"columns\"] {\n const order = orders.get(parentKey);\n const sortedColumns = order\n ? applyManagedColumnOrder(columns, order)\n : columns;\n return sortedColumns.map((column: ReactListTableColumnType<RecordType>) => {\n const key = resolveColumnKey(column);\n const managedConfig = config.get(key);\n return {\n ...column,\n hidden: visibility.has(key)\n ? visibility.get(key) === false\n : (column.hidden ?? column.initialHide),\n width: managedConfig?.width ?? column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n fixed:\n managedConfig?.fixed === null\n ? undefined\n : (managedConfig?.fixed ?? column.fixed),\n children: column.children\n ? applyColumnManagerState(\n column.children,\n visibility,\n orders,\n config,\n key,\n )\n : undefined,\n };\n });\n}\n\nfunction applyManagedColumnOrder<RecordType>(\n columns: ReactListTableProps<RecordType>[\"columns\"],\n orderedKeys: string[],\n) {\n const managedKeySet = new Set(orderedKeys);\n const managedSlots = columns\n .map((column, index) =>\n managedKeySet.has(resolveColumnKey(column)) ? index : -1,\n )\n .filter((index) => index >= 0);\n const columnByKey = new Map(\n columns.map((column) => [resolveColumnKey(column), column]),\n );\n const next = [...columns];\n\n orderedKeys.forEach((key, index) => {\n const slot = managedSlots[index];\n const column = columnByKey.get(key);\n if (slot != null && column) {\n next[slot] = column;\n }\n });\n\n return next;\n}\n\nfunction resolveColumnKey<RecordType>(\n column: ReactListTableProps<RecordType>[\"columns\"][number],\n) {\n return String(column.key ?? column.dataIndex);\n}\n\n/** 比较列设置所关心的结构,避免恢复回调引发无意义的重复更新。 */\nexport function getColumnSettingsSignature<RecordType>(\n columns: ReactListTableProps<RecordType>[\"columns\"],\n): string {\n return JSON.stringify(\n columns.map((column) => ({\n key: resolveColumnKey(column),\n title: String(\n column.settingTitle ??\n (typeof column.title === \"string\" ? column.title : \"\"),\n ),\n dataIndex: column.dataIndex,\n userDefined: column.userDefined,\n hidden: column.hidden,\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n fixed: column.fixed,\n children: column.children\n ? getColumnSettingsSignature(column.children)\n : undefined,\n })),\n );\n}\n","import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type ForwardedRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n ReactImagePreview,\n getSharedScrollbarSettings,\n setSharedScrollbarSettings,\n subscribeSharedScrollbarSettings,\n} from \"@canvas-components/react-components\";\nimport {\n EXPAND_COLUMN,\n ROW_SELECTION_COLUMN,\n SELECTION_COLUMN,\n resetListTableStoredColumnConfig,\n type ListTableScrollbarOptions,\n type ListTableSortState,\n} from \"@canvas-components/list-table\";\nimport { ReactTableContextMenuView } from \"../features/context-menu/context-menu-view\";\nimport { ReactListTableSearchDialog } from \"../features/search/search-dialog\";\nimport { ReactListTableExportNameDialog } from \"../features/export/export-name-dialog\";\nimport { ReactTableEditorOverlay } from \"../features/editor/editor-overlay\";\nimport { ReactTableFixedPopupView } from \"../features/fixed-popup/fixed-popup-view\";\nimport { ReactTableFilterPanelView } from \"../features/filter-panel/filter-panel-view\";\nimport { ReactTablePaginationView } from \"../features/pagination/pagination-view\";\nimport { ReactTableDangerConfirmView } from \"../features/popconfirm/popconfirm-view\";\nimport { ReactTableTooltipView } from \"../features/tooltip/tooltip-view\";\nimport { ReactTableToolbar } from \"../features/toolbar/table-toolbar\";\nimport { useReactListTableState } from \"../hooks/use-react-list-table-state\";\nimport type { ReactListTableProps, ReactListTableRef } from \"../types\";\nimport {\n buildListTableOptions,\n resolveDensityLinkedHeight,\n resolveFullscreenTableSize,\n} from \"./build-list-table-options\";\nimport {\n resolveReactListTableDebugOptions,\n useReactListTableDebugEnabled,\n} from \"./react-list-table-debug-context\";\nimport {\n resolveReactListTableHostStyle,\n resolveReactListTablePaginationLayout,\n} from \"./react-list-table-layout\";\nimport { resolveFullscreenPortalContainer } from \"./fullscreen-portal\";\nimport {\n applyColumnManagerState,\n getColumnSettingsSignature,\n} from \"./column-manager-state\";\n\n/**\n * ListTable 的 React 宿主组件。\n */\nfunction ReactListTableInner<RecordType = Record<string, unknown>>(\n props: ReactListTableProps<RecordType>,\n ref: ForwardedRef<ReactListTableRef<RecordType>>,\n) {\n const {\n className,\n style,\n width,\n height,\n emptyText,\n scroll,\n locale,\n onChange,\n rowKey,\n columns,\n showCollapsedColumnIcon,\n dataSource,\n loading,\n onRow,\n theme,\n styles,\n striped,\n highlightMode,\n keyboardNavigation,\n contextMenu,\n grouping,\n rowHeight,\n headerRowHeight,\n summaryRowHeight,\n overscanRowCount,\n query,\n experimental,\n rowSelector,\n rowSelection,\n expandable,\n pagination,\n scrollbar,\n carouselScroll,\n stretchColumns,\n resizable,\n storageKey,\n cacheColumnSettings,\n cachePreferences,\n draggable,\n tableId,\n rowDrag,\n debug,\n title,\n toolbar,\n exportOptions,\n } = props;\n const inheritedDebugEnabled = useReactListTableDebugEnabled();\n const resolvedDebug = useMemo(\n () => resolveReactListTableDebugOptions(debug, inheritedDebugEnabled),\n [debug, inheritedDebugEnabled],\n );\n const shellRef = useRef<HTMLDivElement | null>(null);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [scrollbarOverride, setScrollbarOverride] =\n useState<ListTableScrollbarOptions | null>(null);\n const [sharedScrollbar, setSharedScrollbar] = useState(\n getSharedScrollbarSettings,\n );\n useEffect(\n () =>\n subscribeSharedScrollbarSettings(() =>\n setSharedScrollbar(getSharedScrollbarSettings()),\n ),\n [],\n );\n const effectiveScrollbar = sharedScrollbar.shared\n ? sharedScrollbar.value\n : (scrollbarOverride ?? scrollbar);\n const [densityOverride, setDensityOverride] = useState<\n 26 | 32 | 48 | 56 | \"auto\" | null\n >(null);\n const [columnVisibility, setColumnVisibility] = useState<\n Map<string, boolean>\n >(() => new Map());\n const [columnOrders, setColumnOrders] = useState<Map<string, string[]>>(\n () => new Map(),\n );\n const [columnConfig, setColumnConfig] = useState<\n Map<string, { width?: number; fixed?: \"left\" | \"right\" | null }>\n >(() => new Map());\n const restoredColumnTreeRef = useRef<{\n sourceColumns: typeof columns;\n storageKey?: string;\n columns: typeof columns;\n signature: string;\n } | null>(null);\n const [restoredColumnTree, setRestoredColumnTree] = useState(\n restoredColumnTreeRef.current,\n );\n const [columnConfigRevision, setColumnConfigRevision] = useState(0);\n const [toolbarSortState, setToolbarSortState] = useState<ListTableSortState>(\n [],\n );\n const [columnSettingsCacheOverride, setColumnSettingsCacheOverride] =\n useState<{ storageKey?: string; value: boolean } | null>(null);\n const resolvedColumnSettingsCache =\n (columnSettingsCacheOverride?.storageKey === storageKey\n ? columnSettingsCacheOverride?.value\n : undefined) ??\n cacheColumnSettings ??\n true;\n const [cachePreferencesOverride, setCachePreferencesOverride] = useState<{\n storageKey?: string;\n value: typeof cachePreferences;\n }>();\n const resolvedCachePreferences =\n (cachePreferencesOverride?.storageKey === storageKey\n ? cachePreferencesOverride?.value\n : undefined) ?? cachePreferences;\n const [columnConfigResetRevision, setColumnConfigResetRevision] = useState(0);\n const resolvedColumns = useMemo(\n () =>\n applyColumnManagerState(\n restoredColumnTree?.sourceColumns === columns &&\n restoredColumnTree.storageKey === storageKey\n ? restoredColumnTree.columns\n : columns,\n columnVisibility,\n columnOrders,\n columnConfig,\n ),\n [\n columns,\n storageKey,\n restoredColumnTree,\n columnVisibility,\n columnOrders,\n columnConfig,\n ],\n );\n const resolvedRowHeight = densityOverride ?? rowHeight;\n const resolvedHeaderRowHeight = resolveDensityLinkedHeight(\n densityOverride,\n headerRowHeight,\n );\n const resolvedSummaryRowHeight = resolveDensityLinkedHeight(\n densityOverride,\n summaryRowHeight,\n );\n const options = useMemo(() => {\n const nextOptions = buildListTableOptions({\n exportOptions,\n width,\n height,\n emptyText,\n scroll,\n locale,\n onChange,\n rowKey,\n columns: resolvedColumns,\n showCollapsedColumnIcon,\n dataSource,\n loading,\n onRow,\n theme,\n styles,\n striped,\n highlightMode,\n keyboardNavigation,\n contextMenu,\n grouping,\n rowHeight: resolvedRowHeight,\n headerRowHeight: resolvedHeaderRowHeight,\n summaryRowHeight: resolvedSummaryRowHeight,\n overscanRowCount,\n query,\n experimental,\n rowSelector,\n rowSelection,\n expandable,\n pagination,\n scrollbar: effectiveScrollbar,\n carouselScroll,\n stretchColumns,\n resizable,\n storageKey,\n cacheColumnSettings: resolvedColumnSettingsCache,\n cachePreferences: resolvedCachePreferences,\n draggable,\n tableId,\n rowDrag,\n debug: resolvedDebug,\n });\n const fullscreenSize = resolveFullscreenTableSize(\n nextOptions.width,\n nextOptions.height,\n isFullscreen,\n );\n return {\n ...nextOptions,\n ...fullscreenSize,\n columnConfigRevision,\n columnConfigResetRevision,\n ui: {\n ...nextOptions.ui,\n onDensityChange: setDensityOverride,\n onScrollbarChange: setScrollbarOverride,\n onColumnSettingsChange: (restoredColumns: typeof columns) => {\n const signature = getColumnSettingsSignature(restoredColumns);\n const current = restoredColumnTreeRef.current;\n if (\n current?.sourceColumns === columns &&\n current.storageKey === storageKey &&\n current.signature === signature\n )\n return;\n const next = {\n sourceColumns: columns,\n storageKey,\n columns: restoredColumns,\n signature,\n };\n restoredColumnTreeRef.current = next;\n setRestoredColumnTree(next);\n setColumnVisibility(new Map());\n setColumnOrders(new Map());\n setColumnConfig(new Map());\n },\n onColumnSettingsCacheChange: (value: boolean) =>\n setColumnSettingsCacheOverride((current) =>\n current?.storageKey === storageKey && current?.value === value\n ? current\n : { storageKey, value },\n ),\n onCachePreferencesChange: (\n next: NonNullable<typeof cachePreferences>,\n ) =>\n setCachePreferencesOverride((current) =>\n current?.storageKey === storageKey &&\n JSON.stringify(current?.value ?? {}) === JSON.stringify(next)\n ? current\n : { storageKey, value: next },\n ),\n },\n };\n }, [\n exportOptions,\n width,\n height,\n emptyText,\n scroll,\n locale,\n onChange,\n rowKey,\n resolvedColumns,\n showCollapsedColumnIcon,\n dataSource,\n loading,\n onRow,\n theme,\n styles,\n striped,\n highlightMode,\n keyboardNavigation,\n contextMenu,\n grouping,\n resolvedRowHeight,\n resolvedHeaderRowHeight,\n resolvedSummaryRowHeight,\n overscanRowCount,\n query,\n experimental,\n rowSelector,\n rowSelection,\n expandable,\n pagination,\n effectiveScrollbar,\n carouselScroll,\n stretchColumns,\n resizable,\n storageKey,\n resolvedColumnSettingsCache,\n resolvedCachePreferences,\n draggable,\n tableId,\n rowDrag,\n resolvedDebug,\n isFullscreen,\n columnConfigRevision,\n columnConfigResetRevision,\n ]);\n const {\n containerRef,\n tableRef,\n editorRequest,\n paginationConfig,\n tooltipRequest,\n loadingRequest,\n filterPanelRequest,\n fixedPopupRequest,\n headerContextMenuRequest,\n searchRequest,\n imagePreviewRequest,\n dangerConfirmRequest,\n exportNameRequest,\n closeExportNameRequest,\n closeDangerConfirmRequest,\n } = useReactListTableState(options);\n const hasPagination = paginationConfig != null;\n const paginationLayout =\n resolveReactListTablePaginationLayout(resolvedRowHeight);\n const portalContainer = resolveFullscreenPortalContainer(shellRef.current);\n\n useImperativeHandle(\n ref,\n () => ({\n validate: () => tableRef.current?.validate() ?? Promise.resolve([]),\n exportXlsx: (options) => {\n tableRef.current?.exportXlsx(options);\n },\n scrollTo: (options) => {\n tableRef.current?.scrollTo(options);\n },\n getDebugSnapshot: () => tableRef.current?.getDebugSnapshot() ?? null,\n resetSorter: () => {\n tableRef.current?.resetSorter();\n },\n resetFilter: () => {\n tableRef.current?.resetFilter();\n },\n retryQuery: () => tableRef.current?.retryQuery() ?? false,\n }),\n [],\n );\n\n return (\n <>\n <div\n ref={shellRef}\n className={[\n \"react-list-table-shell\",\n isFullscreen ? \"react-list-table-shell-fullscreen\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n style={{\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n ...style,\n }}\n >\n <ReactTableToolbar\n title={title}\n toolbar={toolbar}\n cacheColumnSettings={\n Boolean(storageKey) && resolvedColumnSettingsCache\n }\n columnSettingsCacheAvailable={Boolean(storageKey)}\n onColumnSettingsCacheChange={(enabled) =>\n tableRef.current?.setColumnSettingsCache(enabled)\n }\n columns={resolvedColumns}\n sortState={toolbarSortState}\n onColumnSettingsOpen={() =>\n setToolbarSortState(tableRef.current?.getSortState() ?? [])\n }\n onColumnSortChange={(columnKey, order) => {\n tableRef.current?.setSortOrder(columnKey, order);\n setToolbarSortState(tableRef.current?.getSortState() ?? []);\n }}\n density={resolvedRowHeight ?? 32}\n hostRef={shellRef}\n onFullscreenChange={setIsFullscreen}\n onExport={(options) => tableRef.current?.exportXlsx(options)}\n onDensityChange={(density) => {\n tableRef.current?.changeDensity(density);\n setDensityOverride(density);\n if (toolbar) {\n toolbar.onDensityChange?.(density);\n }\n }}\n onColumnVisibilityChange={(columnKey, visible) => {\n setColumnVisibility((current) => {\n const next = new Map(current);\n next.set(columnKey, visible);\n return next;\n });\n setColumnConfigRevision((current) => current + 1);\n }}\n onColumnOrderChange={(parentKey, orderedKeys) => {\n setColumnOrders((current) => {\n const next = new Map(current);\n next.set(parentKey, orderedKeys);\n return next;\n });\n setColumnConfigRevision((current) => current + 1);\n }}\n onColumnWidthChange={(columnKey, width) => {\n setColumnConfig((current) => {\n const next = new Map(current);\n next.set(columnKey, {\n ...next.get(columnKey),\n width,\n });\n return next;\n });\n setColumnConfigRevision((current) => current + 1);\n }}\n onColumnFixedChange={(columnKey, fixed) => {\n setColumnConfig((current) => {\n const next = new Map(current);\n next.set(columnKey, {\n ...next.get(columnKey),\n fixed: fixed ?? null,\n });\n return next;\n });\n setColumnConfigRevision((current) => current + 1);\n }}\n onResetColumns={() => {\n const initialColumns = applyColumnManagerState(\n columns,\n new Map(),\n new Map(),\n new Map(),\n );\n void resetListTableStoredColumnConfig({\n storageKey,\n columns: initialColumns,\n }).finally(() => {\n setColumnVisibility(new Map());\n setColumnOrders(new Map());\n setColumnConfig(new Map());\n restoredColumnTreeRef.current = null;\n setRestoredColumnTree(null);\n setColumnConfigResetRevision((current) => current + 1);\n setColumnConfigRevision((current) => current + 1);\n });\n }}\n />\n <div\n ref={containerRef}\n className=\"react-list-table-host\"\n style={resolveReactListTableHostStyle(\n hasPagination,\n paginationLayout.height,\n )}\n >\n <ReactTablePaginationView\n config={paginationConfig}\n density={resolvedRowHeight}\n />\n </div>\n {loading || loadingRequest ? (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: \"rgba(255, 255, 255, 0.68)\",\n color: \"#475569\",\n fontSize: 14,\n pointerEvents: \"auto\",\n cursor: \"progress\",\n }}\n >\n {loading ? \"数据加载中…\" : (loadingRequest?.text ?? \"处理中…\")}\n </div>\n ) : null}\n </div>\n {tooltipRequest\n ? createPortal(\n <ReactTableTooltipView request={tooltipRequest} />,\n portalContainer,\n )\n : null}\n {filterPanelRequest\n ? createPortal(\n <ReactTableFilterPanelView request={filterPanelRequest} />,\n portalContainer,\n )\n : null}\n {fixedPopupRequest\n ? createPortal(\n <ReactTableFixedPopupView request={fixedPopupRequest} />,\n portalContainer,\n )\n : null}\n {createPortal(\n <ReactTableContextMenuView\n request={\n headerContextMenuRequest\n ? {\n ...headerContextMenuRequest,\n scrollbar: effectiveScrollbar,\n onChangeScrollbar: (value) => {\n headerContextMenuRequest.onChangeScrollbar?.(value);\n setScrollbarOverride(value);\n if (getSharedScrollbarSettings().shared)\n setSharedScrollbarSettings({ shared: true, value });\n },\n onResetScrollbar: () => {\n headerContextMenuRequest.onResetScrollbar?.();\n setScrollbarOverride(null);\n if (getSharedScrollbarSettings().shared)\n setSharedScrollbarSettings({ shared: true, value: {} });\n },\n }\n : null\n }\n />,\n portalContainer,\n )}\n {searchRequest\n ? createPortal(\n <ReactListTableSearchDialog request={searchRequest} />,\n portalContainer,\n )\n : null}\n {exportNameRequest\n ? createPortal(\n <ReactListTableExportNameDialog\n request={exportNameRequest}\n onClose={closeExportNameRequest}\n renderTable={(tableProps) => <ReactListTable {...tableProps} />}\n />,\n portalContainer,\n )\n : null}\n {dangerConfirmRequest\n ? createPortal(\n <ReactTableDangerConfirmView\n request={dangerConfirmRequest}\n onClose={closeDangerConfirmRequest}\n />,\n portalContainer,\n )\n : null}\n {editorRequest\n ? createPortal(\n <ReactTableEditorOverlay request={editorRequest} />,\n editorRequest.hostElement &&\n portalContainer.contains(editorRequest.hostElement)\n ? editorRequest.hostElement\n : portalContainer,\n )\n : null}\n {imagePreviewRequest\n ? createPortal(\n <ReactImagePreview\n open\n src={imagePreviewRequest.src}\n alt={imagePreviewRequest.alt}\n onClose={imagePreviewRequest.onClose}\n />,\n portalContainer,\n )\n : null}\n </>\n );\n}\n\ninterface ReactListTableComponent {\n <RecordType = Record<string, unknown>>(\n props: ReactListTableProps<RecordType> & {\n ref?: ForwardedRef<ReactListTableRef<RecordType>>;\n },\n ): ReturnType<typeof ReactListTableInner>;\n EXPAND_COLUMN: typeof EXPAND_COLUMN;\n SELECTION_COLUMN: typeof SELECTION_COLUMN;\n ROW_SELECTION_COLUMN: typeof ROW_SELECTION_COLUMN;\n}\n\nexport const ReactListTable = forwardRef(\n ReactListTableInner,\n) as unknown as ReactListTableComponent;\nReactListTable.EXPAND_COLUMN = EXPAND_COLUMN;\nReactListTable.SELECTION_COLUMN = SELECTION_COLUMN;\nReactListTable.ROW_SELECTION_COLUMN = ROW_SELECTION_COLUMN;\n"]}
|