@erpsquad/common 1.8.26 → 1.8.27
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/_virtual/index/index.esm.js +4 -2
- package/dist/_virtual/index/index.esm.js.map +1 -1
- package/dist/_virtual/index/index.esm2.js +2 -4
- package/dist/_virtual/index/index.esm2.js.map +1 -1
- package/dist/_virtual/index/index.js +1 -1
- package/dist/_virtual/index/index2.js +1 -1
- package/dist/components/accordion/accordion.d.ts +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
- package/dist/components/action-bar/action-bar/index.js +1 -1
- package/dist/components/action-bar/action-bar/index.js.map +1 -1
- package/dist/components/action-bar/action-bar.d.ts +1 -1
- package/dist/components/checkbox/checkbox.d.ts +1 -1
- package/dist/components/date-picker/date-picker.d.ts +1 -1
- package/dist/components/editor/custom-editor/index.esm.js +1 -1
- package/dist/components/editor/custom-editor/index.esm.js.map +1 -1
- package/dist/components/editor/custom-editor/index.js +1 -1
- package/dist/components/editor/custom-editor/index.js.map +1 -1
- package/dist/components/filter/filter/index.esm.js +1 -1
- package/dist/components/filter/filter/index.esm.js.map +1 -1
- package/dist/components/filter/filter/index.js +1 -1
- package/dist/components/filter/filter/index.js.map +1 -1
- package/dist/components/footer/footer.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
- package/dist/components/form-control/form-parser/form-switcher.d.ts +1 -1
- package/dist/components/header/header/index.esm.js +1 -1
- package/dist/components/header/header/index.esm.js.map +1 -1
- package/dist/components/header/header/index.js +1 -1
- package/dist/components/header/header/index.js.map +1 -1
- package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/header/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/header/redux/actionCreator/index.js +1 -1
- package/dist/components/header/redux/actionCreator/index.js.map +1 -1
- package/dist/components/icons/action-arrow.d.ts +3 -3
- package/dist/components/icons/add-circle.d.ts +3 -3
- package/dist/components/icons/arrow-bidirectional.d.ts +3 -3
- package/dist/components/icons/arrow-circle-down.d.ts +3 -3
- package/dist/components/icons/arrow-down-three.d.ts +3 -3
- package/dist/components/icons/arrow-down-two.d.ts +3 -3
- package/dist/components/icons/arrow-down.d.ts +3 -3
- package/dist/components/icons/arrow-up-down.d.ts +3 -3
- package/dist/components/icons/arrow-up-two.d.ts +3 -3
- package/dist/components/icons/assignments.d.ts +3 -3
- package/dist/components/icons/blank-circle.d.ts +3 -3
- package/dist/components/icons/block-filled.d.ts +3 -3
- package/dist/components/icons/calendar-add.d.ts +3 -3
- package/dist/components/icons/calendar.d.ts +3 -3
- package/dist/components/icons/checkbox-square.d.ts +3 -3
- package/dist/components/icons/circular-arrow-setting.d.ts +3 -3
- package/dist/components/icons/clock.d.ts +3 -3
- package/dist/components/icons/close.d.ts +3 -3
- package/dist/components/icons/coin-outline.d.ts +3 -3
- package/dist/components/icons/copy.d.ts +3 -3
- package/dist/components/icons/coupon.d.ts +3 -3
- package/dist/components/icons/cross-hire.d.ts +3 -3
- package/dist/components/icons/custom-styled-icon.d.ts +3 -3
- package/dist/components/icons/dashboard.d.ts +3 -3
- package/dist/components/icons/document-download.d.ts +3 -3
- package/dist/components/icons/document.d.ts +3 -3
- package/dist/components/icons/dollar-circle-filled.d.ts +3 -3
- package/dist/components/icons/dollar-circle.d.ts +3 -3
- package/dist/components/icons/edit.d.ts +3 -3
- package/dist/components/icons/email.d.ts +3 -3
- package/dist/components/icons/export.d.ts +3 -3
- package/dist/components/icons/eye-off.d.ts +3 -3
- package/dist/components/icons/eye-plus-circle.d.ts +3 -3
- package/dist/components/icons/eye.d.ts +3 -3
- package/dist/components/icons/filled-circle.d.ts +3 -3
- package/dist/components/icons/filter-remove.d.ts +3 -3
- package/dist/components/icons/filter.d.ts +3 -3
- package/dist/components/icons/folder-save.d.ts +3 -3
- package/dist/components/icons/grid.d.ts +3 -3
- package/dist/components/icons/hashtag.d.ts +3 -3
- package/dist/components/icons/image.d.ts +3 -3
- package/dist/components/icons/import.d.ts +3 -3
- package/dist/components/icons/info-circle.d.ts +3 -3
- package/dist/components/icons/info.d.ts +3 -3
- package/dist/components/icons/link-horizontal.d.ts +3 -3
- package/dist/components/icons/link.d.ts +3 -3
- package/dist/components/icons/location.d.ts +3 -3
- package/dist/components/icons/lowest-lead-time.d.ts +3 -3
- package/dist/components/icons/lowest-min-qty.d.ts +3 -3
- package/dist/components/icons/lowest-price.d.ts +3 -3
- package/dist/components/icons/more.d.ts +3 -3
- package/dist/components/icons/notification.d.ts +3 -3
- package/dist/components/icons/paper-clip.d.ts +3 -3
- package/dist/components/icons/paragraph.d.ts +3 -3
- package/dist/components/icons/payment-request.d.ts +3 -3
- package/dist/components/icons/phone.d.ts +3 -3
- package/dist/components/icons/printer.d.ts +3 -3
- package/dist/components/icons/process-calendar.d.ts +3 -3
- package/dist/components/icons/promotion.d.ts +3 -3
- package/dist/components/icons/radio-button.d.ts +3 -3
- package/dist/components/icons/receipt-filled.d.ts +3 -3
- package/dist/components/icons/receipt-outline.d.ts +3 -3
- package/dist/components/icons/receipt.d.ts +3 -3
- package/dist/components/icons/refresh-icon.d.ts +3 -3
- package/dist/components/icons/replace.d.ts +3 -3
- package/dist/components/icons/save.d.ts +3 -3
- package/dist/components/icons/search-status.d.ts +3 -3
- package/dist/components/icons/search.d.ts +3 -3
- package/dist/components/icons/settings-fallback.d.ts +3 -3
- package/dist/components/icons/sort-arrow-icon.d.ts +3 -3
- package/dist/components/icons/stacked-layer.d.ts +3 -3
- package/dist/components/icons/start-filled.d.ts +3 -3
- package/dist/components/icons/three-dot-icon.d.ts +3 -3
- package/dist/components/icons/tick-circle-filled.d.ts +3 -3
- package/dist/components/icons/tick-circle.d.ts +3 -3
- package/dist/components/icons/tick-octagon.d.ts +3 -3
- package/dist/components/icons/tick.d.ts +3 -3
- package/dist/components/icons/toggle-switch.d.ts +3 -3
- package/dist/components/icons/trash.d.ts +3 -3
- package/dist/components/icons/wave.d.ts +3 -3
- package/dist/components/icons/with-out-tick-octagon.d.ts +3 -3
- package/dist/components/icons/work-centre.d.ts +3 -3
- package/dist/components/index.d.ts +1 -2
- package/dist/components/index.esm.js +429 -435
- package/dist/components/index.esm.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/location-select.d.ts +1 -1
- package/dist/components/material-table/aggregation-fns/index/index.esm.js +0 -10
- package/dist/components/material-table/aggregation-fns/index/index.esm.js.map +1 -1
- package/dist/components/material-table/aggregation-fns/index/index.js +1 -1
- package/dist/components/material-table/aggregation-fns/index/index.js.map +1 -1
- package/dist/components/material-table/material-table.d.ts +1 -1
- package/dist/components/phone-input/phone-input.d.ts +1 -1
- package/dist/components/radio/radio.d.ts +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/select/select.d.ts +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js.map +1 -1
- package/dist/components/switches/android-12-switch.d.ts +3 -1
- package/dist/components/text-field/text-field.d.ts +1 -1
- package/dist/components/time-picker/time-picker.d.ts +1 -1
- package/dist/components/upload/upload/index.esm.js +2 -2
- package/dist/components/upload/upload/index.esm.js.map +1 -1
- package/dist/components/upload/upload/index.js +2 -2
- package/dist/components/upload/upload/index.js.map +1 -1
- package/dist/components/upload-media/upload-media.d.ts +1 -1
- package/dist/contexts/AuthContext/index.esm.js +2 -2
- package/dist/contexts/AuthContext/index.esm.js.map +1 -1
- package/dist/contexts/AuthContext/index.js +1 -1
- package/dist/contexts/AuthContext/index.js.map +1 -1
- package/dist/contexts/languageContext/index.esm.js +1 -1
- package/dist/contexts/languageContext/index.esm.js.map +1 -1
- package/dist/contexts/languageContext/index.js +1 -1
- package/dist/contexts/languageContext/index.js.map +1 -1
- package/dist/index.esm.js +521 -533
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/node_modules/@glideapps/glide-data-grid/dist/js/index/index.esm.js +0 -32
- package/dist/node_modules/@glideapps/glide-data-grid/dist/js/index/index.esm.js.map +1 -1
- package/dist/node_modules/@glideapps/glide-data-grid/dist/js/index/index.js +36 -36
- package/dist/node_modules/@glideapps/glide-data-grid/dist/js/index/index.js.map +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js.map +1 -1
- package/dist/node_modules/prop-types/index/index.esm.js +1 -1
- package/dist/node_modules/prop-types/index/index.js +1 -1
- package/dist/node_modules/prop-types/index/index.js.map +1 -1
- package/dist/style.css +2 -4
- package/dist/utils/api/index.esm.js +4 -4
- package/dist/utils/api/index.esm.js.map +1 -1
- package/dist/utils/api/index.js +1 -1
- package/dist/utils/api/index.js.map +1 -1
- package/dist/utils/common/index.esm.js +8 -8
- package/dist/utils/common/index.esm.js.map +1 -1
- package/dist/utils/common/index.js +1 -1
- package/dist/utils/common/index.js.map +1 -1
- package/dist/utils/common-utility.d.ts +1 -1
- package/dist/utils/index.d.ts +1 -2
- package/dist/utils/index.esm.js +50 -54
- package/dist/utils/index.esm.js.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.esm.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js.map +1 -1
- package/dist/views/form-builder/redux/reducer/index.esm.js +0 -8
- package/dist/views/form-builder/redux/reducer/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/reducer/index.js +1 -1
- package/dist/views/form-builder/redux/reducer/index.js.map +1 -1
- package/dist/views/index.esm.js +0 -2
- package/dist/views/index.esm.js.map +1 -1
- package/dist/views/index.js +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.esm.js +3 -3
- package/dist/views/template-editor/components/EditorSidebar/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.js +14 -14
- package/dist/views/template-editor/components/EditorSidebar/index.js.map +1 -1
- package/dist/views/template-editor/templates/index.esm.js +1 -1
- package/dist/views/template-editor/templates/index.esm.js.map +1 -1
- package/dist/views/template-editor/templates/index.js +1 -1
- package/dist/views/template-editor/templates/index.js.map +1 -1
- package/package.json +3 -2
- package/dist/_virtual/ArrowBack/index.esm.js +0 -5
- package/dist/_virtual/ArrowBack/index.esm.js.map +0 -1
- package/dist/_virtual/ArrowBack/index.js +0 -2
- package/dist/_virtual/ArrowBack/index.js.map +0 -1
- package/dist/_virtual/ArrowForward/index.esm.js +0 -5
- package/dist/_virtual/ArrowForward/index.esm.js.map +0 -1
- package/dist/_virtual/ArrowForward/index.js +0 -2
- package/dist/_virtual/ArrowForward/index.js.map +0 -1
- package/dist/_virtual/IndeterminateCheckBox/index.esm.js +0 -5
- package/dist/_virtual/IndeterminateCheckBox/index.esm.js.map +0 -1
- package/dist/_virtual/IndeterminateCheckBox/index.js +0 -2
- package/dist/_virtual/IndeterminateCheckBox/index.js.map +0 -1
- package/dist/_virtual/NorthEast/index.esm.js +0 -5
- package/dist/_virtual/NorthEast/index.esm.js.map +0 -1
- package/dist/_virtual/NorthEast/index.js +0 -2
- package/dist/_virtual/NorthEast/index.js.map +0 -1
- package/dist/_virtual/Visibility/index.esm.js +0 -5
- package/dist/_virtual/Visibility/index.esm.js.map +0 -1
- package/dist/_virtual/Visibility/index.js +0 -2
- package/dist/_virtual/Visibility/index.js.map +0 -1
- package/dist/components/charts/line-chart/area-line-chart/index.esm.js +0 -40
- package/dist/components/charts/line-chart/area-line-chart/index.esm.js.map +0 -1
- package/dist/components/charts/line-chart/area-line-chart/index.js +0 -2
- package/dist/components/charts/line-chart/area-line-chart/index.js.map +0 -1
- package/dist/components/filter/fields/index.esm.js +0 -180
- package/dist/components/filter/fields/index.esm.js.map +0 -1
- package/dist/components/filter/fields/index.js +0 -2
- package/dist/components/filter/fields/index.js.map +0 -1
- package/dist/components/material-editable-table/aggregation-fns/index.d.ts +0 -13
- package/dist/components/material-editable-table/components/default-aggregation.d.ts +0 -9
- package/dist/components/material-editable-table/components/header-cell.d.ts +0 -5
- package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js +0 -312
- package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js.map +0 -1
- package/dist/components/material-editable-table/components/inline-edit-fields/index.js +0 -4
- package/dist/components/material-editable-table/components/inline-edit-fields/index.js.map +0 -1
- package/dist/components/material-editable-table/components/inline-edit-fields.d.ts +0 -17
- package/dist/components/material-editable-table/components/number-aggregation.d.ts +0 -9
- package/dist/components/material-editable-table/material-editable-table/index.esm.js +0 -1164
- package/dist/components/material-editable-table/material-editable-table/index.esm.js.map +0 -1
- package/dist/components/material-editable-table/material-editable-table/index.js +0 -28
- package/dist/components/material-editable-table/material-editable-table/index.js.map +0 -1
- package/dist/components/material-editable-table/material-editable-table.d.ts +0 -40
- package/dist/components/material-table/components/number-aggregation/index.esm.js +0 -133
- package/dist/components/material-table/components/number-aggregation/index.esm.js.map +0 -1
- package/dist/components/material-table/components/number-aggregation/index.js +0 -5
- package/dist/components/material-table/components/number-aggregation/index.js.map +0 -1
- package/dist/node_modules/@mui/icons-material/ArrowBack/index.esm.js +0 -18
- package/dist/node_modules/@mui/icons-material/ArrowBack/index.esm.js.map +0 -1
- package/dist/node_modules/@mui/icons-material/ArrowBack/index.js +0 -2
- package/dist/node_modules/@mui/icons-material/ArrowBack/index.js.map +0 -1
- package/dist/node_modules/@mui/icons-material/ArrowForward/index.esm.js +0 -18
- package/dist/node_modules/@mui/icons-material/ArrowForward/index.esm.js.map +0 -1
- package/dist/node_modules/@mui/icons-material/ArrowForward/index.js +0 -2
- package/dist/node_modules/@mui/icons-material/ArrowForward/index.js.map +0 -1
- package/dist/node_modules/@mui/icons-material/IndeterminateCheckBox/index.esm.js +0 -18
- package/dist/node_modules/@mui/icons-material/IndeterminateCheckBox/index.esm.js.map +0 -1
- package/dist/node_modules/@mui/icons-material/IndeterminateCheckBox/index.js +0 -2
- package/dist/node_modules/@mui/icons-material/IndeterminateCheckBox/index.js.map +0 -1
- package/dist/node_modules/@mui/icons-material/NorthEast/index.esm.js +0 -18
- package/dist/node_modules/@mui/icons-material/NorthEast/index.esm.js.map +0 -1
- package/dist/node_modules/@mui/icons-material/NorthEast/index.js +0 -2
- package/dist/node_modules/@mui/icons-material/NorthEast/index.js.map +0 -1
- package/dist/node_modules/@mui/icons-material/Visibility/index.esm.js +0 -18
- package/dist/node_modules/@mui/icons-material/Visibility/index.esm.js.map +0 -1
- package/dist/node_modules/@mui/icons-material/Visibility/index.js +0 -2
- package/dist/node_modules/@mui/icons-material/Visibility/index.js.map +0 -1
- package/dist/utils/fileSize/index.esm.js +0 -22
- package/dist/utils/fileSize/index.esm.js.map +0 -1
- package/dist/utils/fileSize/index.js +0 -2
- package/dist/utils/fileSize/index.js.map +0 -1
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.esm.js +0 -48
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.js +0 -2
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.js.map +0 -1
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.esm.js +0 -50
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.js +0 -2
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.js.map +0 -1
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.esm.js +0 -57
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.js +0 -2
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.js.map +0 -1
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.esm.js +0 -41
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.js +0 -2
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.js.map +0 -1
- package/dist/views/beforeAuth/components/index/index.esm.js +0 -1144
- package/dist/views/beforeAuth/components/index/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/index/index.js +0 -206
- package/dist/views/beforeAuth/components/index/index.js.map +0 -1
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.esm.js +0 -72
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.js +0 -2
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.js.map +0 -1
- package/dist/views/beforeAuth/components/list-content/column-raw/index.esm.js +0 -54
- package/dist/views/beforeAuth/components/list-content/column-raw/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/list-content/column-raw/index.js +0 -2
- package/dist/views/beforeAuth/components/list-content/column-raw/index.js.map +0 -1
- package/dist/views/beforeAuth/components/list-content/list-data/index.esm.js +0 -61
- package/dist/views/beforeAuth/components/list-content/list-data/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/list-content/list-data/index.js +0 -2
- package/dist/views/beforeAuth/components/list-content/list-data/index.js.map +0 -1
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.esm.js +0 -21
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.js +0 -2
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.js.map +0 -1
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.esm.js +0 -21
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.js +0 -2
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.js.map +0 -1
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.esm.js +0 -306
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.esm.js.map +0 -1
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.js +0 -2
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../../../../../node_modules/@glideapps/glide-data-grid/dist/js/index.js"],"sourcesContent":["import {\n styled_default\n} from \"./chunk-XFANKXD6.js\";\n\n// src/data-editor/data-editor.tsx\nimport * as React35 from \"react\";\n\n// src/common/support.ts\nfunction proveType(_val) {\n}\nfunction panic(message = \"This should not happen\") {\n throw new Error(message);\n}\nfunction assert(fact, message = \"Assertion failed\") {\n if (fact)\n return;\n return panic(message);\n}\nfunction assertNever(_never, msg) {\n return panic(msg != null ? msg : \"Hell froze over\");\n}\nfunction maybe(fn, defaultValue) {\n try {\n return fn();\n } catch (e) {\n return defaultValue;\n }\n}\nvar has = Object.prototype.hasOwnProperty;\nfunction deepEqual(foo, bar) {\n let ctor, len;\n if (foo === bar)\n return true;\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date)\n return foo.getTime() === bar.getTime();\n if (ctor === RegExp)\n return foo.toString() === bar.toString();\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && deepEqual(foo[len], bar[len]))\n ;\n }\n return len === -1;\n }\n if (!ctor || typeof foo === \"object\") {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor))\n return false;\n if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor]))\n return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n return foo !== foo && bar !== bar;\n}\n\n// src/data-editor/data-editor.tsx\nimport clamp5 from \"lodash/clamp.js\";\nimport uniq from \"lodash/uniq.js\";\nimport flatten from \"lodash/flatten.js\";\nimport range from \"lodash/range.js\";\nimport debounce2 from \"lodash/debounce.js\";\n\n// src/data-grid-overlay-editor/data-grid-overlay-editor.tsx\nimport * as React4 from \"react\";\nimport { createPortal } from \"react-dom\";\n\n// src/click-outside-container/click-outside-container.tsx\nimport * as React from \"react\";\nvar ClickOutsideContainer = class extends React.PureComponent {\n constructor() {\n super(...arguments);\n this.wrapperRef = React.createRef();\n this.clickOutside = (event) => {\n if (this.props.isOutsideClick && !this.props.isOutsideClick(event)) {\n return;\n }\n if (this.wrapperRef.current !== null && !this.wrapperRef.current.contains(event.target)) {\n let node = event.target;\n while (node !== null) {\n if (node.classList.contains(\"click-outside-ignore\")) {\n return;\n }\n node = node.parentElement;\n }\n this.props.onClickOutside();\n }\n };\n }\n componentDidMount() {\n document.addEventListener(\"touchend\", this.clickOutside, true);\n document.addEventListener(\"mousedown\", this.clickOutside, true);\n document.addEventListener(\"contextmenu\", this.clickOutside, true);\n }\n componentWillUnmount() {\n document.removeEventListener(\"touchend\", this.clickOutside, true);\n document.removeEventListener(\"mousedown\", this.clickOutside, true);\n document.removeEventListener(\"contextmenu\", this.clickOutside, true);\n }\n render() {\n const { onClickOutside, isOutsideClick, ...rest } = this.props;\n return /* @__PURE__ */ React.createElement(\"div\", { ...rest, ref: this.wrapperRef }, this.props.children);\n }\n};\n\n// src/common/styles.ts\nimport React2 from \"react\";\nfunction makeCSSStyle(theme) {\n var _a, _b;\n return {\n \"--gdg-accent-color\": theme.accentColor,\n \"--gdg-accent-fg\": theme.accentFg,\n \"--gdg-accent-light\": theme.accentLight,\n \"--gdg-text-dark\": theme.textDark,\n \"--gdg-text-medium\": theme.textMedium,\n \"--gdg-text-light\": theme.textLight,\n \"--gdg-text-bubble\": theme.textBubble,\n \"--gdg-bg-icon-header\": theme.bgIconHeader,\n \"--gdg-fg-icon-header\": theme.fgIconHeader,\n \"--gdg-text-header\": theme.textHeader,\n \"--gdg-text-group-header\": (_a = theme.textGroupHeader) != null ? _a : theme.textHeader,\n \"--gdg-text-header-selected\": theme.textHeaderSelected,\n \"--gdg-bg-cell\": theme.bgCell,\n \"--gdg-bg-cell-medium\": theme.bgCellMedium,\n \"--gdg-bg-header\": theme.bgHeader,\n \"--gdg-bg-header-has-focus\": theme.bgHeaderHasFocus,\n \"--gdg-bg-header-hovered\": theme.bgHeaderHovered,\n \"--gdg-bg-bubble\": theme.bgBubble,\n \"--gdg-bg-bubble-selected\": theme.bgBubbleSelected,\n \"--gdg-bg-search-result\": theme.bgSearchResult,\n \"--gdg-border-color\": theme.borderColor,\n \"--gdg-horizontal-border-color\": (_b = theme.horizontalBorderColor) != null ? _b : theme.borderColor,\n \"--gdg-drilldown-border\": theme.drilldownBorder,\n \"--gdg-link-color\": theme.linkColor,\n \"--gdg-cell-horizontal-padding\": `${theme.cellHorizontalPadding}px`,\n \"--gdg-cell-vertical-padding\": `${theme.cellVerticalPadding}px`,\n \"--gdg-header-font-style\": theme.headerFontStyle,\n \"--gdg-base-font-style\": theme.baseFontStyle,\n \"--gdg-marker-font-style\": theme.markerFontStyle,\n \"--gdg-font-family\": theme.fontFamily,\n \"--gdg-editor-font-size\": theme.editorFontSize\n };\n}\nvar dataEditorBaseTheme = {\n accentColor: \"#4F5DFF\",\n accentFg: \"#FFFFFF\",\n accentLight: \"rgba(62, 116, 253, 0.1)\",\n textDark: \"#313139\",\n textMedium: \"#737383\",\n textLight: \"#B2B2C0\",\n textBubble: \"#313139\",\n bgIconHeader: \"#737383\",\n fgIconHeader: \"#FFFFFF\",\n textHeader: \"#313139\",\n textGroupHeader: \"#313139BB\",\n textHeaderSelected: \"#FFFFFF\",\n bgCell: \"#FFFFFF\",\n bgCellMedium: \"#FAFAFB\",\n bgHeader: \"#F7F7F8\",\n bgHeaderHasFocus: \"#E9E9EB\",\n bgHeaderHovered: \"#EFEFF1\",\n bgBubble: \"#EDEDF3\",\n bgBubbleSelected: \"#FFFFFF\",\n bgSearchResult: \"#fff9e3\",\n borderColor: \"rgba(115, 116, 131, 0.16)\",\n drilldownBorder: \"rgba(0, 0, 0, 0)\",\n linkColor: \"#4F5DFF\",\n cellHorizontalPadding: 8,\n cellVerticalPadding: 3,\n headerIconSize: 18,\n headerFontStyle: \"600 13px\",\n baseFontStyle: \"13px\",\n markerFontStyle: \"9px\",\n fontFamily: \"Inter, Roboto, -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, noto, arial, sans-serif\",\n editorFontSize: \"13px\",\n lineHeight: 1.4\n //unitless scaler depends on your font\n};\nfunction getDataEditorTheme() {\n return dataEditorBaseTheme;\n}\nvar ThemeContext = React2.createContext(dataEditorBaseTheme);\nfunction useTheme() {\n return React2.useContext(ThemeContext);\n}\n\n// src/data-grid/data-grid-types.ts\nimport has2 from \"lodash/has.js\";\nfunction gridSelectionHasItem(sel, item) {\n const [col, row] = item;\n if (sel.columns.hasIndex(col) || sel.rows.hasIndex(row))\n return true;\n if (sel.current !== void 0) {\n if (sel.current.cell[0] === col && sel.current.cell[1] === row)\n return true;\n const toCheck = [sel.current.range, ...sel.current.rangeStack];\n for (const r of toCheck) {\n if (col >= r.x && col < r.x + r.width && row >= r.y && row < r.y + r.height)\n return true;\n }\n }\n return false;\n}\nvar BooleanEmpty = null;\nvar BooleanIndeterminate = void 0;\nvar headerKind = \"header\";\nvar groupHeaderKind = \"group-header\";\nvar outOfBoundsKind = \"out-of-bounds\";\nvar GridCellKind = /* @__PURE__ */ ((GridCellKind2) => {\n GridCellKind2[\"Uri\"] = \"uri\";\n GridCellKind2[\"Text\"] = \"text\";\n GridCellKind2[\"Image\"] = \"image\";\n GridCellKind2[\"RowID\"] = \"row-id\";\n GridCellKind2[\"Number\"] = \"number\";\n GridCellKind2[\"Bubble\"] = \"bubble\";\n GridCellKind2[\"Boolean\"] = \"boolean\";\n GridCellKind2[\"Loading\"] = \"loading\";\n GridCellKind2[\"Markdown\"] = \"markdown\";\n GridCellKind2[\"Drilldown\"] = \"drilldown\";\n GridCellKind2[\"Protected\"] = \"protected\";\n GridCellKind2[\"Custom\"] = \"custom\";\n return GridCellKind2;\n})(GridCellKind || {});\nvar GridColumnIcon = /* @__PURE__ */ ((GridColumnIcon2) => {\n GridColumnIcon2[\"HeaderRowID\"] = \"headerRowID\";\n GridColumnIcon2[\"HeaderCode\"] = \"headerCode\";\n GridColumnIcon2[\"HeaderNumber\"] = \"headerNumber\";\n GridColumnIcon2[\"HeaderString\"] = \"headerString\";\n GridColumnIcon2[\"HeaderBoolean\"] = \"headerBoolean\";\n GridColumnIcon2[\"HeaderAudioUri\"] = \"headerAudioUri\";\n GridColumnIcon2[\"HeaderVideoUri\"] = \"headerVideoUri\";\n GridColumnIcon2[\"HeaderEmoji\"] = \"headerEmoji\";\n GridColumnIcon2[\"HeaderImage\"] = \"headerImage\";\n GridColumnIcon2[\"HeaderUri\"] = \"headerUri\";\n GridColumnIcon2[\"HeaderPhone\"] = \"headerPhone\";\n GridColumnIcon2[\"HeaderMarkdown\"] = \"headerMarkdown\";\n GridColumnIcon2[\"HeaderDate\"] = \"headerDate\";\n GridColumnIcon2[\"HeaderTime\"] = \"headerTime\";\n GridColumnIcon2[\"HeaderEmail\"] = \"headerEmail\";\n GridColumnIcon2[\"HeaderReference\"] = \"headerReference\";\n GridColumnIcon2[\"HeaderIfThenElse\"] = \"headerIfThenElse\";\n GridColumnIcon2[\"HeaderSingleValue\"] = \"headerSingleValue\";\n GridColumnIcon2[\"HeaderLookup\"] = \"headerLookup\";\n GridColumnIcon2[\"HeaderTextTemplate\"] = \"headerTextTemplate\";\n GridColumnIcon2[\"HeaderMath\"] = \"headerMath\";\n GridColumnIcon2[\"HeaderRollup\"] = \"headerRollup\";\n GridColumnIcon2[\"HeaderJoinStrings\"] = \"headerJoinStrings\";\n GridColumnIcon2[\"HeaderSplitString\"] = \"headerSplitString\";\n GridColumnIcon2[\"HeaderGeoDistance\"] = \"headerGeoDistance\";\n GridColumnIcon2[\"HeaderArray\"] = \"headerArray\";\n GridColumnIcon2[\"RowOwnerOverlay\"] = \"rowOwnerOverlay\";\n GridColumnIcon2[\"ProtectedColumnOverlay\"] = \"protectedColumnOverlay\";\n return GridColumnIcon2;\n})(GridColumnIcon || {});\nvar headerCellCheckboxPrefix = \"___gdg_header_cell_\";\nvar headerCellCheckedMarker = headerCellCheckboxPrefix + \"checked\";\nvar headerCellUnheckedMarker = headerCellCheckboxPrefix + \"unchecked\";\nvar headerCellIndeterminateMarker = headerCellCheckboxPrefix + \"indeterminate\";\nfunction isSizedGridColumn(c) {\n return \"width\" in c && typeof c.width === \"number\";\n}\nasync function resolveCellsThunk(thunk) {\n if (typeof thunk === \"object\")\n return thunk;\n return await thunk();\n}\nfunction isEditableGridCell(cell) {\n if (cell.kind === \"loading\" || cell.kind === \"bubble\" || cell.kind === \"row-id\" || cell.kind === \"protected\" || cell.kind === \"drilldown\") {\n return false;\n }\n proveType(cell);\n return true;\n}\nfunction isTextEditableGridCell(cell) {\n if (cell.kind === \"loading\" || cell.kind === \"bubble\" || cell.kind === \"row-id\" || cell.kind === \"protected\" || cell.kind === \"drilldown\" || cell.kind === \"boolean\" || cell.kind === \"image\" || cell.kind === \"custom\") {\n return false;\n }\n proveType(cell);\n return true;\n}\nfunction isInnerOnlyCell(cell) {\n return cell.kind === \"marker\" || cell.kind === \"new-row\";\n}\nfunction isReadWriteCell(cell) {\n if (!isEditableGridCell(cell) || cell.kind === \"image\")\n return false;\n if (cell.kind === \"text\" || cell.kind === \"number\" || cell.kind === \"markdown\" || cell.kind === \"uri\" || cell.kind === \"custom\" || cell.kind === \"boolean\") {\n return cell.readonly !== true;\n }\n assertNever(cell, \"A cell was passed with an invalid kind\");\n}\nfunction isObjectEditorCallbackResult(obj) {\n return has2(obj, \"editor\");\n}\nfunction booleanCellIsEditable(cell) {\n var _a;\n return !((_a = cell.readonly) != null ? _a : false);\n}\nvar InnerGridCellKind = /* @__PURE__ */ ((InnerGridCellKind2) => {\n InnerGridCellKind2[\"NewRow\"] = \"new-row\";\n InnerGridCellKind2[\"Marker\"] = \"marker\";\n return InnerGridCellKind2;\n})(InnerGridCellKind || {});\nfunction mergeRanges(input) {\n if (input.length === 0) {\n return [];\n }\n const ranges = [...input];\n const stack = [];\n ranges.sort(function(a, b) {\n return a[0] - b[0];\n });\n stack.push([...ranges[0]]);\n for (const range2 of ranges.slice(1)) {\n const top = stack[stack.length - 1];\n if (top[1] < range2[0]) {\n stack.push([...range2]);\n } else if (top[1] < range2[1]) {\n top[1] = range2[1];\n }\n }\n return stack;\n}\nvar emptyCompactSelection;\nvar _CompactSelection = class _CompactSelection {\n constructor(items) {\n this.items = items;\n }\n offset(amount) {\n if (amount === 0)\n return this;\n const newItems = this.items.map((x) => [x[0] + amount, x[1] + amount]);\n return new _CompactSelection(newItems);\n }\n add(selection) {\n const slice = typeof selection === \"number\" ? [selection, selection + 1] : selection;\n const newItems = mergeRanges([...this.items, slice]);\n return new _CompactSelection(newItems);\n }\n remove(selection) {\n const items = [...this.items];\n const selMin = typeof selection === \"number\" ? selection : selection[0];\n const selMax = typeof selection === \"number\" ? selection + 1 : selection[1];\n for (const [i, slice] of items.entries()) {\n const [start, end] = slice;\n if (start <= selMax && selMin <= end) {\n const toAdd = [];\n if (start < selMin) {\n toAdd.push([start, selMin]);\n }\n if (selMax < end) {\n toAdd.push([selMax, end]);\n }\n items.splice(i, 1, ...toAdd);\n }\n }\n return new _CompactSelection(items);\n }\n first() {\n if (this.items.length === 0)\n return void 0;\n return this.items[0][0];\n }\n last() {\n if (this.items.length === 0)\n return void 0;\n return this.items.slice(-1)[0][1] - 1;\n }\n hasIndex(index) {\n for (let i = 0; i < this.items.length; i++) {\n const [start, end] = this.items[i];\n if (index >= start && index < end)\n return true;\n }\n return false;\n }\n hasAll(index) {\n for (let x = index[0]; x < index[1]; x++) {\n if (!this.hasIndex(x))\n return false;\n }\n return true;\n }\n some(predicate) {\n for (const i of this) {\n if (predicate(i))\n return true;\n }\n return false;\n }\n equals(other) {\n if (other === this)\n return true;\n if (other.items.length !== this.items.length)\n return false;\n for (let i = 0; i < this.items.length; i++) {\n const left = other.items[i];\n const right = this.items[i];\n if (left[0] !== right[0] || left[1] !== right[1])\n return false;\n }\n return true;\n }\n // Really old JS wont have access to the iterator and babel will stop people using it\n // when trying to support browsers so old we don't support them anyway. What goes on\n // between an engineer and their bundler in the privacy of their CI server is none of\n // my business anyway.\n toArray() {\n const result = [];\n for (const [start, end] of this.items) {\n for (let x = start; x < end; x++) {\n result.push(x);\n }\n }\n return result;\n }\n get length() {\n let len = 0;\n for (const [start, end] of this.items) {\n len += end - start;\n }\n return len;\n }\n *[Symbol.iterator]() {\n for (const [start, end] of this.items) {\n for (let x = start; x < end; x++) {\n yield x;\n }\n }\n }\n};\n_CompactSelection.empty = () => {\n return emptyCompactSelection != null ? emptyCompactSelection : emptyCompactSelection = new _CompactSelection([]);\n};\n_CompactSelection.fromSingleSelection = (selection) => {\n return _CompactSelection.empty().add(selection);\n};\nvar CompactSelection = _CompactSelection;\n\n// src/data-grid-overlay-editor/data-grid-overlay-editor-style.tsx\nvar _exp = () => (p) => p.targetY;\nvar _exp2 = () => (p) => p.targetX - 1;\nvar _exp3 = () => (p) => p.targetY - 1;\nvar _exp4 = () => (p) => p.targetWidth + 2;\nvar _exp5 = () => (p) => p.targetHeight + 2;\nvar _exp6 = () => (p) => p.targetY + 10;\nvar _exp7 = () => (p) => Math.max(0, (p.targetHeight - 28) / 2);\nvar DataGridOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"DataGridOverlayEditorStyle\",\n class: \"d1t1th9s\",\n propsAsIs: false,\n vars: {\n \"d1t1th9s-0\": [_exp(), \"px\"],\n \"d1t1th9s-1\": [_exp2(), \"px\"],\n \"d1t1th9s-2\": [_exp3(), \"px\"],\n \"d1t1th9s-3\": [_exp4(), \"px\"],\n \"d1t1th9s-4\": [_exp5(), \"px\"],\n \"d1t1th9s-5\": [_exp6(), \"px\"],\n \"d1t1th9s-6\": [_exp7(), \"px\"]\n }\n});\n\n// src/data-grid-overlay-editor/use-stay-on-screen.ts\nimport * as React3 from \"react\";\nfunction useRefState() {\n const [refState, setRefState] = React3.useState();\n return [refState != null ? refState : void 0, setRefState];\n}\nfunction useStayOnScreen() {\n const [ref, setRef] = useRefState();\n const [xOffset, setXOffset] = React3.useState(0);\n const [isIntersecting, setIsIntersecting] = React3.useState(true);\n React3.useLayoutEffect(() => {\n if (ref === void 0)\n return;\n if (!(\"IntersectionObserver\" in window))\n return;\n const observer = new IntersectionObserver(\n (ents) => {\n if (ents.length === 0)\n return;\n setIsIntersecting(ents[0].isIntersecting);\n },\n { threshold: 1 }\n );\n observer.observe(ref);\n return () => observer.disconnect();\n }, [ref]);\n React3.useEffect(() => {\n if (isIntersecting || ref === void 0)\n return;\n let rafHandle;\n const fn = () => {\n const { right: refRight } = ref.getBoundingClientRect();\n setXOffset((cv) => Math.min(cv + window.innerWidth - refRight - 10, 0));\n rafHandle = requestAnimationFrame(fn);\n };\n rafHandle = requestAnimationFrame(fn);\n return () => {\n if (rafHandle !== void 0) {\n cancelAnimationFrame(rafHandle);\n }\n };\n }, [ref, isIntersecting]);\n const style = React3.useMemo(() => {\n return { transform: `translateX(${xOffset}px)` };\n }, [xOffset]);\n return {\n ref: setRef,\n style\n };\n}\n\n// src/data-grid-overlay-editor/data-grid-overlay-editor.tsx\nvar DataGridOverlayEditor = (p) => {\n const {\n target,\n content,\n onFinishEditing: onFinishEditingIn,\n forceEditMode,\n initialValue,\n imageEditorOverride,\n markdownDivCreateNode,\n highlight,\n className,\n theme,\n id,\n cell,\n validateCell,\n getCellRenderer,\n provideEditor,\n isOutsideClick\n } = p;\n const [tempValue, setTempValueRaw] = React4.useState(forceEditMode ? content : void 0);\n const lastValueRef = React4.useRef(tempValue != null ? tempValue : content);\n lastValueRef.current = tempValue != null ? tempValue : content;\n const [isValid, setIsValid] = React4.useState(() => {\n if (validateCell === void 0)\n return true;\n return !(isEditableGridCell(content) && (validateCell == null ? void 0 : validateCell(cell, content, lastValueRef.current)) === false);\n });\n const onFinishEditing = React4.useCallback(\n (newCell, movement) => {\n onFinishEditingIn(isValid ? newCell : void 0, movement);\n },\n [isValid, onFinishEditingIn]\n );\n const setTempValue = React4.useCallback(\n (newVal) => {\n if (validateCell !== void 0 && newVal !== void 0 && isEditableGridCell(newVal)) {\n const validResult = validateCell(cell, newVal, lastValueRef.current);\n if (validResult === false) {\n setIsValid(false);\n } else if (typeof validResult === \"object\") {\n newVal = validResult;\n setIsValid(true);\n } else {\n setIsValid(true);\n }\n }\n setTempValueRaw(newVal);\n },\n [cell, validateCell]\n );\n const finished = React4.useRef(false);\n const customMotion = React4.useRef(void 0);\n const onClickOutside = React4.useCallback(() => {\n onFinishEditing(tempValue, [0, 0]);\n finished.current = true;\n }, [tempValue, onFinishEditing]);\n const onEditorFinished = React4.useCallback(\n (newValue, movement) => {\n var _a;\n onFinishEditing(newValue, (_a = movement != null ? movement : customMotion.current) != null ? _a : [0, 0]);\n finished.current = true;\n },\n [onFinishEditing]\n );\n const onKeyDown = React4.useCallback(\n async (event) => {\n let save = false;\n if (event.key === \"Escape\") {\n event.stopPropagation();\n event.preventDefault();\n customMotion.current = [0, 0];\n } else if (event.key === \"Enter\" && !event.shiftKey) {\n event.stopPropagation();\n event.preventDefault();\n customMotion.current = [0, 1];\n save = true;\n } else if (event.key === \"Tab\") {\n event.stopPropagation();\n event.preventDefault();\n customMotion.current = [event.shiftKey ? -1 : 1, 0];\n save = true;\n }\n window.setTimeout(() => {\n if (!finished.current && customMotion.current !== void 0) {\n onFinishEditing(save ? tempValue : void 0, customMotion.current);\n finished.current = true;\n }\n }, 0);\n },\n [onFinishEditing, tempValue]\n );\n const targetValue = tempValue != null ? tempValue : content;\n const [editorProvider, useLabel] = React4.useMemo(() => {\n var _a, _b;\n if (isInnerOnlyCell(content))\n return [];\n const external = provideEditor == null ? void 0 : provideEditor(content);\n if (external !== void 0)\n return [external, false];\n return [(_b = (_a = getCellRenderer(content)) == null ? void 0 : _a.provideEditor) == null ? void 0 : _b.call(_a, content), false];\n }, [content, getCellRenderer, provideEditor]);\n const { ref, style: stayOnScreenStyle } = useStayOnScreen();\n let pad = true;\n let editor;\n let style = true;\n let styleOverride;\n if (editorProvider !== void 0) {\n pad = editorProvider.disablePadding !== true;\n style = editorProvider.disableStyling !== true;\n const isObjectEditor = isObjectEditorCallbackResult(editorProvider);\n if (isObjectEditor) {\n styleOverride = editorProvider.styleOverride;\n }\n const CustomEditor = isObjectEditor ? editorProvider.editor : editorProvider;\n editor = /* @__PURE__ */ React4.createElement(\n CustomEditor,\n {\n isHighlighted: highlight,\n onChange: setTempValue,\n value: targetValue,\n initialValue,\n onFinishedEditing: onEditorFinished,\n validatedSelection: isEditableGridCell(targetValue) ? targetValue.selectionRange : void 0,\n forceEditMode,\n target,\n imageEditorOverride,\n markdownDivCreateNode,\n isValid\n }\n );\n }\n styleOverride = { ...styleOverride, ...stayOnScreenStyle };\n const portalElement = document.getElementById(\"portal\");\n if (portalElement === null) {\n console.error(\n 'Cannot open Data Grid overlay editor, because portal not found. Please add `<div id=\"portal\" />` as the last child of your `<body>`.'\n );\n return null;\n }\n let classWrap = style ? \"gdg-style\" : \"gdg-unstyle\";\n if (!isValid) {\n classWrap += \" invalid\";\n }\n if (pad) {\n classWrap += \" pad\";\n }\n return createPortal(\n /* @__PURE__ */ React4.createElement(ThemeContext.Provider, { value: theme }, /* @__PURE__ */ React4.createElement(\n ClickOutsideContainer,\n {\n style: makeCSSStyle(theme),\n className,\n onClickOutside,\n isOutsideClick\n },\n /* @__PURE__ */ React4.createElement(\n DataGridOverlayEditorStyle,\n {\n ref,\n id,\n className: classWrap,\n style: styleOverride,\n as: useLabel === true ? \"label\" : void 0,\n targetX: target.x,\n targetY: target.y,\n targetWidth: target.width,\n targetHeight: target.height\n },\n /* @__PURE__ */ React4.createElement(\"div\", { className: \"clip-region\", onKeyDown }, editor)\n )\n )),\n portalElement\n );\n};\nvar data_grid_overlay_editor_default = DataGridOverlayEditor;\n\n// src/data-grid-search/data-grid-search.tsx\nimport * as React12 from \"react\";\n\n// src/scrolling-data-grid/scrolling-data-grid.tsx\nimport * as React11 from \"react\";\n\n// src/data-grid-dnd/data-grid-dnd.tsx\nimport clamp3 from \"lodash/clamp.js\";\nimport * as React9 from \"react\";\n\n// src/data-grid/data-grid.tsx\nimport * as React8 from \"react\";\n\n// src/common/image-window-loader.ts\nimport throttle from \"lodash/throttle.js\";\nvar rowShift = 1 << 16;\nvar imgPool = [];\nfunction packColRowToNumber(col, row) {\n return row * rowShift + col;\n}\nfunction unpackCol(packed) {\n return packed % rowShift;\n}\nfunction unpackRow(packed, col) {\n return (packed - col) / rowShift;\n}\nfunction unpackNumberToColRow(packed) {\n const col = unpackCol(packed);\n const row = unpackRow(packed, col);\n return [col, row];\n}\nvar ImageWindowLoaderImpl = class {\n constructor() {\n this.imageLoaded = () => void 0;\n this.loadedLocations = [];\n this.visibleWindow = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.freezeCols = 0;\n this.isInWindow = (packed) => {\n const col = unpackCol(packed);\n const row = unpackRow(packed, col);\n const w = this.visibleWindow;\n if (col < this.freezeCols && row >= w.y && row <= w.y + w.height)\n return true;\n return col >= w.x && col <= w.x + w.width && row >= w.y && row <= w.y + w.height;\n };\n this.cache = {};\n // eslint-disable-next-line unicorn/consistent-function-scoping\n this.sendLoaded = throttle(() => {\n this.imageLoaded(this.loadedLocations);\n this.loadedLocations = [];\n }, 20);\n this.clearOutOfWindow = () => {\n const keys = Object.keys(this.cache);\n for (const key of keys) {\n const obj = this.cache[key];\n let keep = false;\n for (let j = 0; j < obj.cells.length; j++) {\n const packed = obj.cells[j];\n if (this.isInWindow(packed)) {\n keep = true;\n break;\n }\n }\n if (keep) {\n obj.cells = obj.cells.filter(this.isInWindow);\n } else {\n obj.cancel();\n delete this.cache[key];\n }\n }\n };\n }\n setCallback(imageLoaded) {\n this.imageLoaded = imageLoaded;\n }\n setWindow(newWindow, freezeCols) {\n if (this.visibleWindow.x === newWindow.x && this.visibleWindow.y === newWindow.y && this.visibleWindow.width === newWindow.width && this.visibleWindow.height === newWindow.height && this.freezeCols === freezeCols)\n return;\n this.visibleWindow = newWindow;\n this.freezeCols = freezeCols;\n this.clearOutOfWindow();\n }\n loadImage(url, col, row, key) {\n var _a;\n let loaded = false;\n const img = (_a = imgPool.pop()) != null ? _a : new Image();\n let canceled = false;\n const result = {\n img: void 0,\n cells: [packColRowToNumber(col, row)],\n url,\n cancel: () => {\n if (canceled)\n return;\n canceled = true;\n if (imgPool.length < 12) {\n imgPool.unshift(img);\n } else if (!loaded) {\n img.src = \"\";\n }\n }\n };\n const loadPromise = new Promise((r) => img.addEventListener(\"load\", () => r(null)));\n requestAnimationFrame(async () => {\n try {\n img.src = url;\n await loadPromise;\n await img.decode();\n const toWrite = this.cache[key];\n if (toWrite !== void 0 && !canceled) {\n toWrite.img = img;\n for (const packed of toWrite.cells) {\n this.loadedLocations.push(unpackNumberToColRow(packed));\n }\n loaded = true;\n this.sendLoaded();\n }\n } catch (e) {\n result.cancel();\n }\n });\n this.cache[key] = result;\n }\n loadOrGetImage(url, col, row) {\n const key = url;\n const current = this.cache[key];\n if (current !== void 0) {\n const packed = packColRowToNumber(col, row);\n if (!current.cells.includes(packed)) {\n current.cells.push(packed);\n }\n return current.img;\n } else {\n this.loadImage(url, col, row, key);\n }\n return void 0;\n }\n};\nvar image_window_loader_default = ImageWindowLoaderImpl;\n\n// src/common/utils.tsx\nimport * as React5 from \"react\";\nimport debounce from \"lodash/debounce.js\";\nfunction useEventListener(eventName, handler, element, passive, capture = false) {\n const savedHandler = React5.useRef();\n savedHandler.current = handler;\n React5.useEffect(\n () => {\n if (element === null || element.addEventListener === void 0)\n return;\n const el = element;\n const eventListener = (event) => {\n var _a;\n (_a = savedHandler.current) == null ? void 0 : _a.call(el, event);\n };\n el.addEventListener(eventName, eventListener, { passive, capture });\n return () => {\n el.removeEventListener(eventName, eventListener, { capture });\n };\n },\n [eventName, element, passive, capture]\n // Re-run if eventName or element changes\n );\n}\nfunction whenDefined(obj, result) {\n return obj === void 0 ? void 0 : result;\n}\nvar PI = Math.PI;\nfunction degreesToRadians(degrees) {\n return degrees * PI / 180;\n}\nvar getSquareBB = (posX, posY, squareSideLength) => ({\n x1: posX - squareSideLength / 2,\n y1: posY - squareSideLength / 2,\n x2: posX + squareSideLength / 2,\n y2: posY + squareSideLength / 2\n});\nvar getSquareXPosFromAlign = (alignment, containerX, containerWidth, horizontalPadding, squareWidth) => {\n switch (alignment) {\n case \"left\":\n return Math.floor(containerX) + horizontalPadding + squareWidth / 2;\n case \"center\":\n return Math.floor(containerX + containerWidth / 2);\n case \"right\":\n return Math.floor(containerX + containerWidth) - horizontalPadding - squareWidth / 2;\n }\n};\nvar getSquareWidth = (maxSize, containerHeight, verticalPadding) => Math.min(maxSize, containerHeight - verticalPadding * 2);\nvar pointIsWithinBB = (x, y, bb) => bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2;\nvar EditPencil = (props) => {\n var _a;\n const fg = (_a = props.fgColor) != null ? _a : \"currentColor\";\n return /* @__PURE__ */ React5.createElement(\"svg\", { viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, /* @__PURE__ */ React5.createElement(\n \"path\",\n {\n d: \"M12.7073 7.05029C7.87391 11.8837 10.4544 9.30322 6.03024 13.7273C5.77392 13.9836 5.58981 14.3071 5.50189 14.6587L4.52521 18.5655C4.38789 19.1148 4.88543 19.6123 5.43472 19.475L9.34146 18.4983C9.69313 18.4104 10.0143 18.2286 10.2706 17.9722L16.9499 11.2929\",\n stroke: fg,\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\",\n vectorEffect: \"non-scaling-stroke\"\n }\n ), /* @__PURE__ */ React5.createElement(\n \"path\",\n {\n d: \"M20.4854 4.92901L19.0712 3.5148C18.2901 2.73375 17.0238 2.73375 16.2428 3.5148L14.475 5.28257C15.5326 7.71912 16.4736 8.6278 18.7176 9.52521L20.4854 7.75744C21.2665 6.97639 21.2665 5.71006 20.4854 4.92901Z\",\n stroke: fg,\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\",\n vectorEffect: \"non-scaling-stroke\"\n }\n ));\n};\nvar Checkmark = (props) => {\n var _a;\n const fg = (_a = props.fgColor) != null ? _a : \"currentColor\";\n return /* @__PURE__ */ React5.createElement(\"svg\", { viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, /* @__PURE__ */ React5.createElement(\n \"path\",\n {\n d: \"M19 6L10.3802 17L5.34071 11.8758\",\n vectorEffect: \"non-scaling-stroke\",\n stroke: fg,\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n ));\n};\nfunction useDebouncedMemo(factory, deps, time) {\n const [state, setState] = React5.useState(factory);\n const mountedRef = React5.useRef(true);\n React5.useEffect(\n () => () => {\n mountedRef.current = false;\n },\n []\n );\n const debouncedSetState = React5.useRef(\n debounce((x) => {\n if (mountedRef.current) {\n setState(x);\n }\n }, time)\n );\n React5.useLayoutEffect(() => {\n if (mountedRef.current) {\n debouncedSetState.current(() => factory());\n }\n }, deps);\n return state;\n}\nvar rtlRange = \"\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC\";\nvar ltrRange = \"A-Za-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C\\uFE00-\\uFE6F\\uFEFD-\\uFFFF\";\nvar rtl = new RegExp(\"^[^\" + ltrRange + \"]*[\" + rtlRange + \"]\");\nvar ltr = new RegExp(\"^[^\" + rtlRange + \"]*[\" + ltrRange + \"]\");\nfunction direction(value) {\n return rtl.test(value) ? \"rtl\" : ltr.test(value) ? \"ltr\" : \"neutral\";\n}\nvar scrollbarWidthCache = void 0;\nfunction getScrollBarWidth() {\n if (scrollbarWidthCache !== void 0)\n return scrollbarWidthCache;\n const inner = document.createElement(\"p\");\n inner.style.width = \"100%\";\n inner.style.height = \"200px\";\n const outer = document.createElement(\"div\");\n outer.id = \"testScrollbar\";\n outer.style.position = \"absolute\";\n outer.style.top = \"0px\";\n outer.style.left = \"0px\";\n outer.style.visibility = \"hidden\";\n outer.style.width = \"200px\";\n outer.style.height = \"150px\";\n outer.style.overflow = \"hidden\";\n outer.append(inner);\n document.body.append(outer);\n const w1 = inner.offsetWidth;\n outer.style.overflow = \"scroll\";\n let w2 = inner.offsetWidth;\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n outer.remove();\n scrollbarWidthCache = w1 - w2;\n return scrollbarWidthCache;\n}\nvar empty = Symbol();\nfunction useStateWithReactiveInput(inputState) {\n const inputStateRef = React5.useRef([empty, inputState]);\n if (inputStateRef.current[1] !== inputState) {\n inputStateRef.current[0] = inputState;\n }\n inputStateRef.current[1] = inputState;\n const [state, setState] = React5.useState(inputState);\n const [, forceRender] = React5.useState();\n const setStateOuter = React5.useCallback((nv) => {\n const s = inputStateRef.current[0];\n if (s !== empty) {\n nv = typeof nv === \"function\" ? nv(s) : nv;\n if (nv === s)\n return;\n }\n if (s !== empty)\n forceRender({});\n setState((pv) => {\n if (typeof nv === \"function\") {\n return nv(s === empty ? pv : s);\n }\n return nv;\n });\n inputStateRef.current[0] = empty;\n }, []);\n const onEmpty = React5.useCallback(() => {\n inputStateRef.current[0] = empty;\n forceRender({});\n }, []);\n return [inputStateRef.current[0] === empty ? state : inputStateRef.current[0], setStateOuter, onEmpty];\n}\nfunction makeAccessibilityStringForArray(arr) {\n if (arr.length === 0) {\n return \"\";\n }\n let index = 0;\n let count = 0;\n for (const str of arr) {\n count += str.length;\n if (count > 1e4)\n break;\n index++;\n }\n return arr.slice(0, index).join(\", \");\n}\n\n// src/data-grid/data-grid-lib.ts\nimport React6 from \"react\";\nimport { split as splitText, clearCache } from \"canvas-hypertxt\";\nfunction useMappedColumns(columns, freezeColumns) {\n return React6.useMemo(\n () => columns.map((c, i) => ({\n ...c,\n sourceIndex: i,\n sticky: i < freezeColumns\n })),\n [columns, freezeColumns]\n );\n}\nfunction isGroupEqual(left, right) {\n return (left != null ? left : \"\") === (right != null ? right : \"\");\n}\nfunction cellIsSelected(location, cell, selection) {\n if ((selection == null ? void 0 : selection.current) === void 0)\n return false;\n const [col, row] = selection.current.cell;\n const [cellCol, cellRow] = location;\n if (cellRow !== row)\n return false;\n if (cell.span === void 0) {\n return col === cellCol;\n }\n return col >= cell.span[0] && col <= cell.span[1];\n}\nfunction cellIsInRect(location, cell, rect) {\n const startX = rect.x;\n const endX = rect.x + rect.width - 1;\n const startY = rect.y;\n const endY = rect.y + rect.height - 1;\n const [cellCol, cellRow] = location;\n if (cellRow < startY || cellRow > endY)\n return false;\n if (cell.span === void 0) {\n return cellCol >= startX && cellCol <= endX;\n }\n const [spanStart, spanEnd] = cell.span;\n return spanStart >= startX && spanStart <= endX || spanEnd >= startX && spanStart <= endX || spanStart < startX && spanEnd > endX;\n}\nfunction cellIsInRange(location, cell, selection) {\n let result = 0;\n if (selection.current === void 0)\n return result;\n if (cellIsInRect(location, cell, selection.current.range))\n result++;\n for (const r of selection.current.rangeStack) {\n if (cellIsInRect(location, cell, r)) {\n result++;\n }\n }\n return result;\n}\nfunction remapForDnDState(columns, dndState) {\n let mappedCols = columns;\n if (dndState !== void 0) {\n let writable = [...columns];\n const temp = mappedCols[dndState.src];\n if (dndState.src > dndState.dest) {\n writable.splice(dndState.src, 1);\n writable.splice(dndState.dest, 0, temp);\n } else {\n writable.splice(dndState.dest + 1, 0, temp);\n writable.splice(dndState.src, 1);\n }\n writable = writable.map((c, i) => ({\n ...c,\n sticky: columns[i].sticky\n }));\n mappedCols = writable;\n }\n return mappedCols;\n}\nfunction getStickyWidth(columns, dndState) {\n let result = 0;\n const remapped = remapForDnDState(columns, dndState);\n for (let i = 0; i < remapped.length; i++) {\n const c = remapped[i];\n if (c.sticky)\n result += c.width;\n else\n break;\n }\n return result;\n}\nfunction getEffectiveColumns(columns, cellXOffset, width, dndState, tx) {\n const mappedCols = remapForDnDState(columns, dndState);\n const sticky = [];\n for (const c of mappedCols) {\n if (c.sticky) {\n sticky.push(c);\n } else {\n break;\n }\n }\n if (sticky.length > 0) {\n for (const c of sticky) {\n width -= c.width;\n }\n }\n let endIndex = cellXOffset;\n let curX = tx != null ? tx : 0;\n while (curX <= width && endIndex < mappedCols.length) {\n curX += mappedCols[endIndex].width;\n endIndex++;\n }\n for (let i = cellXOffset; i < endIndex; i++) {\n const c = mappedCols[i];\n if (!c.sticky) {\n sticky.push(c);\n }\n }\n return sticky;\n}\nfunction getColumnIndexForX(targetX, effectiveColumns, translateX) {\n let x = 0;\n for (const c of effectiveColumns) {\n const cx = c.sticky ? x : x + (translateX != null ? translateX : 0);\n if (targetX <= cx + c.width) {\n return c.sourceIndex;\n }\n x += c.width;\n }\n return -1;\n}\nfunction getRowIndexForY(targetY, height, hasGroups, headerHeight, groupHeaderHeight, rows, rowHeight, cellYOffset, translateY, lastRowSticky) {\n const totalHeaderHeight = headerHeight + groupHeaderHeight;\n if (hasGroups && targetY <= groupHeaderHeight)\n return -2;\n if (targetY <= totalHeaderHeight)\n return -1;\n const lastRowHeight = typeof rowHeight === \"number\" ? rowHeight : rowHeight(rows - 1);\n if (lastRowSticky && targetY > height - lastRowHeight) {\n return rows - 1;\n }\n const effectiveRows = rows - (lastRowSticky ? 1 : 0);\n const ty = targetY - (translateY != null ? translateY : 0);\n if (typeof rowHeight === \"number\") {\n const target = Math.floor((ty - totalHeaderHeight) / rowHeight) + cellYOffset;\n if (target >= effectiveRows)\n return void 0;\n return target;\n } else {\n let curY = totalHeaderHeight;\n for (let i = cellYOffset; i < effectiveRows; i++) {\n const rh = rowHeight(i);\n if (ty <= curY + rh)\n return i;\n curY += rh;\n }\n return void 0;\n }\n}\nvar metricsSize = 0;\nvar metricsCache = {};\nvar isSSR = typeof window === \"undefined\";\nasync function clearCacheOnLoad() {\n var _a;\n if (isSSR || ((_a = document == null ? void 0 : document.fonts) == null ? void 0 : _a.ready) === void 0)\n return;\n await document.fonts.ready;\n metricsSize = 0;\n metricsCache = {};\n clearCache();\n}\nvoid clearCacheOnLoad();\nfunction makeCacheKey(s, ctx, baseline, font) {\n return `${s}_${font != null ? font : ctx.font}_${baseline}`;\n}\nfunction measureTextCached(s, ctx, font) {\n const key = makeCacheKey(s, ctx, \"middle\", font);\n let metrics = metricsCache[key];\n if (metrics === void 0) {\n metrics = ctx.measureText(s);\n metricsCache[key] = metrics;\n metricsSize++;\n }\n if (metricsSize > 1e4) {\n metricsCache = {};\n metricsSize = 0;\n }\n return metrics;\n}\nfunction getMiddleCenterBias(ctx, font) {\n if (typeof font !== \"string\") {\n font = `${font.baseFontStyle} ${font.fontFamily}`;\n }\n return getMiddleCenterBiasInner(ctx, font);\n}\nfunction loadMetric(ctx, baseline) {\n const sample = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n ctx.save();\n ctx.textBaseline = baseline;\n const result = ctx.measureText(sample);\n ctx.restore();\n return result;\n}\nvar biasCache = [];\nfunction getMiddleCenterBiasInner(ctx, font) {\n for (const x of biasCache) {\n if (x.key === font)\n return x.val;\n }\n const alphabeticMetrics = loadMetric(ctx, \"alphabetic\");\n const middleMetrics = loadMetric(ctx, \"middle\");\n const bias = -(middleMetrics.actualBoundingBoxDescent - alphabeticMetrics.actualBoundingBoxDescent) + alphabeticMetrics.actualBoundingBoxAscent / 2;\n biasCache.push({\n key: font,\n val: bias\n });\n return bias;\n}\nfunction drawWithLastUpdate(args, lastUpdate, frameTime, lastPrep, draw) {\n const { ctx, rect, theme } = args;\n let progress = Number.MAX_SAFE_INTEGER;\n const animTime = 500;\n if (lastUpdate !== void 0) {\n progress = frameTime - lastUpdate;\n if (progress < animTime) {\n const fade = 1 - progress / animTime;\n ctx.globalAlpha = fade;\n ctx.fillStyle = theme.bgSearchResult;\n ctx.fillRect(rect.x, rect.y, rect.width, rect.height);\n ctx.globalAlpha = 1;\n if (lastPrep !== void 0) {\n lastPrep.fillStyle = theme.bgSearchResult;\n }\n }\n }\n draw();\n return progress < animTime;\n}\nfunction prepTextCell(args, lastPrep, overrideColor) {\n const { ctx, theme } = args;\n const result = lastPrep != null ? lastPrep : {};\n const newFill = overrideColor != null ? overrideColor : theme.textDark;\n if (newFill !== result.fillStyle) {\n ctx.fillStyle = newFill;\n result.fillStyle = newFill;\n }\n return result;\n}\nfunction drawTextCellExternal(args, data, contentAlign) {\n const { rect, ctx, theme } = args;\n ctx.fillStyle = theme.textDark;\n drawTextCell(\n {\n ctx,\n rect,\n theme\n },\n data,\n contentAlign\n );\n}\nfunction drawSingleTextLine(ctx, data, x, y, w, h, bias, theme, contentAlign) {\n if (contentAlign === \"right\") {\n ctx.fillText(data, x + w - (theme.cellHorizontalPadding + 0.5), y + h / 2 + bias);\n } else if (contentAlign === \"center\") {\n ctx.fillText(data, x + w / 2, y + h / 2 + bias);\n } else {\n ctx.fillText(data, x + theme.cellHorizontalPadding + 0.5, y + h / 2 + bias);\n }\n}\nfunction getEmHeight(ctx, fontStyle) {\n const textMetrics = measureTextCached(\"ABCi09jgqpy\", ctx, fontStyle);\n return textMetrics.actualBoundingBoxAscent + textMetrics.actualBoundingBoxDescent;\n}\nfunction drawTextCell(args, data, contentAlign, allowWrapping, hyperWrapping) {\n const { ctx, rect, theme } = args;\n const { x, y, width: w, height: h } = rect;\n allowWrapping = allowWrapping != null ? allowWrapping : false;\n if (!allowWrapping) {\n if (data.includes(\"\\n\")) {\n data = data.split(/\\r?\\n/)[0];\n }\n const max = w / 4;\n if (data.length > max) {\n data = data.slice(0, max);\n }\n }\n const bias = getMiddleCenterBias(ctx, theme);\n const isRtl = direction(data) === \"rtl\";\n if (contentAlign === void 0 && isRtl) {\n contentAlign = \"right\";\n }\n if (isRtl) {\n ctx.direction = \"rtl\";\n }\n if (data.length > 0) {\n let changed = false;\n if (contentAlign === \"right\") {\n ctx.textAlign = \"right\";\n changed = true;\n } else if (contentAlign !== void 0 && contentAlign !== \"left\") {\n ctx.textAlign = contentAlign;\n changed = true;\n }\n if (!allowWrapping) {\n drawSingleTextLine(ctx, data, x, y, w, h, bias, theme, contentAlign);\n } else {\n const fontStyle = `${theme.fontFamily} ${theme.baseFontStyle}`;\n const split = splitText(ctx, data, fontStyle, w - theme.cellHorizontalPadding * 2, hyperWrapping != null ? hyperWrapping : false);\n const emHeight = getEmHeight(ctx, fontStyle);\n const lineHeight = theme.lineHeight * emHeight;\n const actualHeight = emHeight + lineHeight * (split.length - 1);\n const mustClip = actualHeight + theme.cellVerticalPadding > h;\n if (mustClip) {\n ctx.save();\n ctx.rect(x, y, w, h);\n ctx.clip();\n }\n const optimalY = y + h / 2 - actualHeight / 2;\n let drawY = Math.max(y + theme.cellVerticalPadding, optimalY);\n for (const line of split) {\n drawSingleTextLine(ctx, line, x, drawY, w, emHeight, bias, theme, contentAlign);\n drawY += lineHeight;\n if (drawY > y + h)\n break;\n }\n if (mustClip) {\n ctx.restore();\n }\n }\n if (changed) {\n ctx.textAlign = \"start\";\n }\n if (isRtl) {\n ctx.direction = \"inherit\";\n }\n }\n}\nfunction drawNewRowCell(args, data, icon) {\n const { ctx, rect, hoverAmount, theme, spriteManager } = args;\n const { x, y, width: w, height: h } = rect;\n ctx.beginPath();\n ctx.globalAlpha = hoverAmount;\n ctx.rect(x, y, w, h);\n ctx.fillStyle = theme.bgHeaderHovered;\n ctx.fill();\n ctx.globalAlpha = 1;\n ctx.beginPath();\n const alwaysShowIcon = data !== \"\";\n let textX = 0;\n if (icon !== void 0) {\n const padding = 8;\n const size = h - padding;\n const px = x + padding / 2;\n const py = y + padding / 2;\n spriteManager.drawSprite(icon, \"normal\", ctx, px, py, size, theme, alwaysShowIcon ? 1 : hoverAmount);\n textX = size;\n } else {\n textX = 24;\n const finalLineSize = 12;\n const lineSize = alwaysShowIcon ? finalLineSize : hoverAmount * finalLineSize;\n const xTranslate = alwaysShowIcon ? 0 : (1 - hoverAmount) * finalLineSize * 0.5;\n const padPlus = theme.cellHorizontalPadding + 4;\n if (lineSize > 0) {\n ctx.moveTo(x + padPlus + xTranslate, y + h / 2);\n ctx.lineTo(x + padPlus + xTranslate + lineSize, y + h / 2);\n ctx.moveTo(x + padPlus + xTranslate + lineSize * 0.5, y + h / 2 - lineSize * 0.5);\n ctx.lineTo(x + padPlus + xTranslate + lineSize * 0.5, y + h / 2 + lineSize * 0.5);\n ctx.lineWidth = 2;\n ctx.strokeStyle = theme.bgIconHeader;\n ctx.lineCap = \"round\";\n ctx.stroke();\n }\n }\n ctx.fillStyle = theme.textMedium;\n ctx.fillText(data, textX + x + theme.cellHorizontalPadding + 0.5, y + h / 2 + getMiddleCenterBias(ctx, theme));\n ctx.beginPath();\n}\nfunction drawCheckbox(ctx, theme, checked, x, y, width, height, highlighted, hoverX = -20, hoverY = -20, maxSize = 32, alignment = \"center\") {\n const centerY = Math.floor(y + height / 2);\n const rectBordRadius = 4;\n const checkBoxWidth = getSquareWidth(maxSize, height, theme.cellVerticalPadding);\n const checkBoxHalfWidth = checkBoxWidth / 2;\n const posX = getSquareXPosFromAlign(alignment, x, width, theme.cellHorizontalPadding, checkBoxWidth);\n const bb = getSquareBB(posX, centerY, checkBoxWidth);\n const hovered = pointIsWithinBB(x + hoverX, y + hoverY, bb);\n switch (checked) {\n case true: {\n ctx.beginPath();\n roundedRect(\n ctx,\n posX - checkBoxWidth / 2,\n centerY - checkBoxWidth / 2,\n checkBoxWidth,\n checkBoxWidth,\n rectBordRadius\n );\n ctx.fillStyle = highlighted ? theme.accentColor : theme.textMedium;\n ctx.fill();\n ctx.beginPath();\n ctx.moveTo(\n posX - checkBoxHalfWidth + checkBoxWidth / 4.23,\n centerY - checkBoxHalfWidth + checkBoxWidth / 1.97\n );\n ctx.lineTo(\n posX - checkBoxHalfWidth + checkBoxWidth / 2.42,\n centerY - checkBoxHalfWidth + checkBoxWidth / 1.44\n );\n ctx.lineTo(\n posX - checkBoxHalfWidth + checkBoxWidth / 1.29,\n centerY - checkBoxHalfWidth + checkBoxWidth / 3.25\n );\n ctx.strokeStyle = theme.bgCell;\n ctx.lineJoin = \"round\";\n ctx.lineCap = \"round\";\n ctx.lineWidth = 1.9;\n ctx.stroke();\n break;\n }\n case BooleanEmpty:\n case false: {\n ctx.beginPath();\n roundedRect(\n ctx,\n posX - checkBoxWidth / 2 + 0.5,\n centerY - checkBoxWidth / 2 + 0.5,\n checkBoxWidth - 1,\n checkBoxWidth - 1,\n rectBordRadius\n );\n ctx.lineWidth = 1;\n ctx.strokeStyle = hovered ? theme.textDark : theme.textMedium;\n ctx.stroke();\n break;\n }\n case BooleanIndeterminate: {\n ctx.beginPath();\n roundedRect(\n ctx,\n posX - checkBoxWidth / 2,\n centerY - checkBoxWidth / 2,\n checkBoxWidth,\n checkBoxWidth,\n rectBordRadius\n );\n ctx.fillStyle = hovered ? theme.textMedium : theme.textLight;\n ctx.fill();\n ctx.beginPath();\n ctx.moveTo(posX - checkBoxWidth / 3, centerY);\n ctx.lineTo(posX + checkBoxWidth / 3, centerY);\n ctx.strokeStyle = theme.bgCell;\n ctx.lineCap = \"round\";\n ctx.lineWidth = 1.9;\n ctx.stroke();\n break;\n }\n default:\n assertNever(checked);\n }\n}\nfunction prepMarkerRowCell(args, lastPrep) {\n const { ctx, theme } = args;\n const newFont = `9px ${theme.fontFamily}`;\n const result = lastPrep != null ? lastPrep : {};\n if ((result == null ? void 0 : result.font) !== newFont) {\n ctx.font = newFont;\n result.font = newFont;\n }\n result.deprep = deprepMarkerRowCell;\n ctx.textAlign = \"center\";\n return result;\n}\nfunction deprepMarkerRowCell(args) {\n const { ctx } = args;\n ctx.textAlign = \"start\";\n}\nfunction drawMarkerRowCell(args, index, checked, markerKind, drawHandle) {\n const { ctx, rect, hoverAmount, theme } = args;\n const { x, y, width, height } = rect;\n const checkedboxAlpha = checked ? 1 : markerKind === \"checkbox-visible\" ? 0.6 + 0.4 * hoverAmount : hoverAmount;\n if (markerKind !== \"number\" && checkedboxAlpha > 0) {\n ctx.globalAlpha = checkedboxAlpha;\n const offsetAmount = 7 * (checked ? hoverAmount : 1);\n drawCheckbox(\n ctx,\n theme,\n checked,\n drawHandle ? x + offsetAmount : x,\n y,\n drawHandle ? width - offsetAmount : width,\n height,\n true,\n void 0,\n void 0,\n 18\n );\n if (drawHandle) {\n ctx.globalAlpha = hoverAmount;\n ctx.beginPath();\n for (const xOffset of [3, 6]) {\n for (const yOffset of [-5, -1, 3]) {\n ctx.rect(x + xOffset, y + height / 2 + yOffset, 2, 2);\n }\n }\n ctx.fillStyle = theme.textLight;\n ctx.fill();\n ctx.beginPath();\n }\n ctx.globalAlpha = 1;\n }\n if (markerKind === \"number\" || markerKind === \"both\" && !checked) {\n const text = index.toString();\n const fontStyle = `${theme.markerFontStyle} ${theme.fontFamily}`;\n const start = x + width / 2;\n if (markerKind === \"both\" && hoverAmount !== 0) {\n ctx.globalAlpha = 1 - hoverAmount;\n }\n ctx.fillStyle = theme.textLight;\n ctx.font = fontStyle;\n ctx.fillText(text, start, y + height / 2 + getMiddleCenterBias(ctx, fontStyle));\n if (hoverAmount !== 0) {\n ctx.globalAlpha = 1;\n }\n }\n}\nfunction drawProtectedCell(args) {\n const { ctx, theme, rect } = args;\n const { x, y, height: h } = rect;\n ctx.beginPath();\n const radius = 2.5;\n let xStart = x + theme.cellHorizontalPadding + radius;\n const center = y + h / 2;\n const p = Math.cos(degreesToRadians(30)) * radius;\n const q = Math.sin(degreesToRadians(30)) * radius;\n for (let i = 0; i < 12; i++) {\n ctx.moveTo(xStart, center - radius);\n ctx.lineTo(xStart, center + radius);\n ctx.moveTo(xStart + p, center - q);\n ctx.lineTo(xStart - p, center + q);\n ctx.moveTo(xStart - p, center - q);\n ctx.lineTo(xStart + p, center + q);\n xStart += 8;\n }\n ctx.lineWidth = 1.1;\n ctx.lineCap = \"square\";\n ctx.strokeStyle = theme.textLight;\n ctx.stroke();\n}\nfunction roundedRect(ctx, x, y, width, height, radius) {\n if (typeof radius === \"number\") {\n radius = { tl: radius, tr: radius, br: radius, bl: radius };\n }\n radius = {\n tl: Math.min(radius.tl, height / 2, width / 2),\n tr: Math.min(radius.tr, height / 2, width / 2),\n bl: Math.min(radius.bl, height / 2, width / 2),\n br: Math.min(radius.br, height / 2, width / 2)\n };\n ctx.moveTo(x + radius.tl, y);\n ctx.arcTo(x + width, y, x + width, y + radius.tr, radius.tr);\n ctx.arcTo(x + width, y + height, x + width - radius.br, y + height, radius.br);\n ctx.arcTo(x, y + height, x, y + height - radius.bl, radius.bl);\n ctx.arcTo(x, y, x + radius.tl, y, radius.tl);\n}\nfunction drawBoolean(args, data, canEdit, maxSize) {\n if (!canEdit && data === BooleanEmpty) {\n return;\n }\n const {\n ctx,\n hoverAmount,\n theme,\n rect,\n highlighted,\n hoverX,\n hoverY,\n cell: { contentAlign }\n } = args;\n const { x, y, width: w, height: h } = rect;\n const hoverEffect = 0.35;\n let alpha = canEdit ? 1 - hoverEffect + hoverEffect * hoverAmount : 0.4;\n if (data === BooleanEmpty) {\n alpha *= hoverAmount;\n }\n if (alpha === 0) {\n return;\n }\n ctx.globalAlpha = alpha;\n drawCheckbox(ctx, theme, data, x, y, w, h, highlighted, hoverX, hoverY, maxSize, contentAlign);\n ctx.globalAlpha = 1;\n}\nvar itemMargin = 4;\nfunction drawBubbles(args, data) {\n const { rect, theme, ctx, highlighted } = args;\n const { x, y, width: w, height: h } = rect;\n const bubbleHeight = 20;\n const bubblePad = 8;\n const bubbleMargin = itemMargin;\n let renderX = x + theme.cellHorizontalPadding;\n const renderBoxes = [];\n for (const s of data) {\n if (renderX > x + w)\n break;\n const textWidth = measureTextCached(s, ctx, `${theme.baseFontStyle} ${theme.fontFamily}`).width;\n renderBoxes.push({\n x: renderX,\n width: textWidth\n });\n renderX += textWidth + bubblePad * 2 + bubbleMargin;\n }\n ctx.beginPath();\n for (const rectInfo of renderBoxes) {\n roundedRect(\n ctx,\n rectInfo.x,\n y + (h - bubbleHeight) / 2,\n rectInfo.width + bubblePad * 2,\n bubbleHeight,\n bubbleHeight / 2\n );\n }\n ctx.fillStyle = highlighted ? theme.bgBubbleSelected : theme.bgBubble;\n ctx.fill();\n for (const [i, rectInfo] of renderBoxes.entries()) {\n ctx.beginPath();\n ctx.fillStyle = theme.textBubble;\n ctx.fillText(data[i], rectInfo.x + bubblePad, y + h / 2 + getMiddleCenterBias(ctx, theme));\n }\n}\nvar drilldownCache = {};\nfunction getAndCacheDrilldownBorder(bgCell, border, height) {\n const dpr = Math.ceil(window.devicePixelRatio);\n const shadowBlur = 5;\n const targetHeight = height - shadowBlur * 2;\n const middleWidth = 4;\n const rounding = 6;\n const innerHeight = height * dpr;\n const sideWidth = rounding + shadowBlur;\n const targetWidth = rounding * 3;\n const innerWidth = (targetWidth + shadowBlur * 2) * dpr;\n const key = `${bgCell},${border},${dpr},${height}`;\n if (drilldownCache[key] !== void 0) {\n return {\n el: drilldownCache[key],\n height: innerHeight,\n width: innerWidth,\n middleWidth: middleWidth * dpr,\n sideWidth: sideWidth * dpr,\n padding: shadowBlur * dpr,\n dpr\n };\n }\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (ctx === null)\n return null;\n canvas.width = innerWidth;\n canvas.height = innerHeight;\n ctx.scale(dpr, dpr);\n drilldownCache[key] = canvas;\n const trueRounding = Math.min(rounding, targetWidth / 2, targetHeight / 2);\n ctx.beginPath();\n roundedRect(ctx, shadowBlur, shadowBlur, targetWidth, targetHeight, trueRounding);\n ctx.shadowColor = \"rgba(24, 25, 34, 0.4)\";\n ctx.shadowBlur = 1;\n ctx.fillStyle = bgCell;\n ctx.fill();\n ctx.shadowColor = \"rgba(24, 25, 34, 0.3)\";\n ctx.shadowOffsetY = 1;\n ctx.shadowBlur = 5;\n ctx.fillStyle = bgCell;\n ctx.fill();\n ctx.shadowOffsetY = 0;\n ctx.shadowBlur = 0;\n ctx.shadowBlur = 0;\n ctx.beginPath();\n roundedRect(ctx, shadowBlur + 0.5, shadowBlur + 0.5, targetWidth, targetHeight, trueRounding);\n ctx.strokeStyle = border;\n ctx.lineWidth = 1;\n ctx.stroke();\n return {\n el: canvas,\n height: innerHeight,\n width: innerWidth,\n sideWidth: sideWidth * dpr,\n middleWidth: rounding * dpr,\n padding: shadowBlur * dpr,\n dpr\n };\n}\nfunction drawDrilldownCell(args, data) {\n const { rect, theme, ctx, imageLoader, col, row } = args;\n const { x, width: w } = rect;\n const font = `${theme.baseFontStyle} ${theme.fontFamily}`;\n const emHeight = getEmHeight(ctx, font);\n const h = Math.min(rect.height, Math.max(16, Math.ceil(emHeight * theme.lineHeight) * 2));\n const y = Math.floor(rect.y + (rect.height - h) / 2);\n const bubbleHeight = h - 10;\n const bubblePad = 8;\n const bubbleMargin = itemMargin;\n let renderX = x + theme.cellHorizontalPadding;\n const tileMap = getAndCacheDrilldownBorder(theme.bgCell, theme.drilldownBorder, h);\n const renderBoxes = [];\n for (const el of data) {\n if (renderX > x + w)\n break;\n const textMetrics = measureTextCached(el.text, ctx, font);\n const textWidth = textMetrics.width;\n let imgWidth = 0;\n if (el.img !== void 0) {\n const img = imageLoader.loadOrGetImage(el.img, col, row);\n if (img !== void 0) {\n imgWidth = bubbleHeight - 8 + 4;\n }\n }\n const renderWidth = textWidth + imgWidth + bubblePad * 2;\n renderBoxes.push({\n x: renderX,\n width: renderWidth\n });\n renderX += renderWidth + bubbleMargin;\n }\n if (tileMap !== null) {\n const { el, height, middleWidth, sideWidth, width, dpr, padding } = tileMap;\n const outerSideWidth = sideWidth / dpr;\n const outerPadding = padding / dpr;\n for (const rectInfo of renderBoxes) {\n const rx = Math.floor(rectInfo.x);\n const rw = Math.floor(rectInfo.width);\n const outerMiddleWidth = rw - (outerSideWidth - outerPadding) * 2;\n ctx.imageSmoothingEnabled = false;\n ctx.drawImage(el, 0, 0, sideWidth, height, rx - outerPadding, y, outerSideWidth, h);\n if (outerMiddleWidth > 0)\n ctx.drawImage(\n el,\n sideWidth,\n 0,\n middleWidth,\n height,\n rx + (outerSideWidth - outerPadding),\n y,\n outerMiddleWidth,\n h\n );\n ctx.drawImage(\n el,\n width - sideWidth,\n 0,\n sideWidth,\n height,\n rx + rw - (outerSideWidth - outerPadding),\n y,\n outerSideWidth,\n h\n );\n ctx.imageSmoothingEnabled = true;\n }\n }\n ctx.beginPath();\n for (const [i, rectInfo] of renderBoxes.entries()) {\n const d = data[i];\n let drawX = rectInfo.x + bubblePad;\n if (d.img !== void 0) {\n const img = imageLoader.loadOrGetImage(d.img, col, row);\n if (img !== void 0) {\n const imgSize = bubbleHeight - 8;\n let srcX = 0;\n let srcY = 0;\n let srcWidth = img.width;\n let srcHeight = img.height;\n if (srcWidth > srcHeight) {\n srcX += (srcWidth - srcHeight) / 2;\n srcWidth = srcHeight;\n } else if (srcHeight > srcWidth) {\n srcY += (srcHeight - srcWidth) / 2;\n srcHeight = srcWidth;\n }\n ctx.beginPath();\n roundedRect(ctx, drawX, y + h / 2 - imgSize / 2, imgSize, imgSize, 3);\n ctx.save();\n ctx.clip();\n ctx.drawImage(img, srcX, srcY, srcWidth, srcHeight, drawX, y + h / 2 - imgSize / 2, imgSize, imgSize);\n ctx.restore();\n drawX += imgSize + 4;\n }\n }\n ctx.beginPath();\n ctx.fillStyle = theme.textBubble;\n ctx.fillText(d.text, drawX, y + h / 2 + getMiddleCenterBias(ctx, theme));\n }\n}\nfunction drawImage(args, data, rounding = 4, contentAlign) {\n const { rect, col, row, theme, ctx, imageLoader } = args;\n const { x, y, height: h, width: w } = rect;\n const imgHeight = h - theme.cellVerticalPadding * 2;\n const images = [];\n let totalWidth = 0;\n for (let index = 0; index < data.length; index++) {\n const i = data[index];\n if (i.length === 0)\n continue;\n const img = imageLoader.loadOrGetImage(i, col, row);\n if (img !== void 0) {\n images[index] = img;\n const imgWidth = img.width * (imgHeight / img.height);\n totalWidth += imgWidth + itemMargin;\n }\n }\n if (totalWidth === 0)\n return;\n totalWidth -= itemMargin;\n let drawX = x + theme.cellHorizontalPadding;\n if (contentAlign === \"right\")\n drawX = Math.floor(x + w - theme.cellHorizontalPadding - totalWidth);\n else if (contentAlign === \"center\")\n drawX = Math.floor(x + w / 2 - totalWidth / 2);\n for (const img of images) {\n if (img === void 0)\n continue;\n const imgWidth = img.width * (imgHeight / img.height);\n if (rounding > 0) {\n roundedRect(ctx, drawX, y + theme.cellVerticalPadding, imgWidth, imgHeight, rounding);\n ctx.save();\n ctx.clip();\n }\n ctx.drawImage(img, drawX, y + theme.cellVerticalPadding, imgWidth, imgHeight);\n if (rounding > 0) {\n ctx.restore();\n }\n drawX += imgWidth + itemMargin;\n }\n}\nfunction roundedPoly(ctx, points, radiusAll) {\n const asVec = function(p, pp) {\n const vx = pp.x - p.x;\n const vy = pp.y - p.y;\n const vlen = Math.sqrt(vx * vx + vy * vy);\n const vnx = vx / vlen;\n const vny = vy / vlen;\n return {\n x: vx,\n y: pp.y - p.y,\n len: vlen,\n nx: vnx,\n ny: vny,\n ang: Math.atan2(vny, vnx)\n };\n };\n let radius;\n const len = points.length;\n let p1 = points[len - 1];\n for (let i = 0; i < len; i++) {\n let p2 = points[i % len];\n const p3 = points[(i + 1) % len];\n const v1 = asVec(p2, p1);\n const v2 = asVec(p2, p3);\n const sinA = v1.nx * v2.ny - v1.ny * v2.nx;\n const sinA90 = v1.nx * v2.nx - v1.ny * -v2.ny;\n let angle = Math.asin(sinA < -1 ? -1 : sinA > 1 ? 1 : sinA);\n let radDirection = 1;\n let drawDirection = false;\n if (sinA90 < 0) {\n if (angle < 0) {\n angle = Math.PI + angle;\n } else {\n angle = Math.PI - angle;\n radDirection = -1;\n drawDirection = true;\n }\n } else {\n if (angle > 0) {\n radDirection = -1;\n drawDirection = true;\n }\n }\n radius = p2.radius !== void 0 ? p2.radius : radiusAll;\n const halfAngle = angle / 2;\n let lenOut = Math.abs(Math.cos(halfAngle) * radius / Math.sin(halfAngle));\n let cRadius;\n if (lenOut > Math.min(v1.len / 2, v2.len / 2)) {\n lenOut = Math.min(v1.len / 2, v2.len / 2);\n cRadius = Math.abs(lenOut * Math.sin(halfAngle) / Math.cos(halfAngle));\n } else {\n cRadius = radius;\n }\n let x = p2.x + v2.nx * lenOut;\n let y = p2.y + v2.ny * lenOut;\n x += -v2.ny * cRadius * radDirection;\n y += v2.nx * cRadius * radDirection;\n ctx.arc(\n x,\n y,\n cRadius,\n v1.ang + Math.PI / 2 * radDirection,\n v2.ang - Math.PI / 2 * radDirection,\n drawDirection\n );\n p1 = p2;\n p2 = p3;\n }\n ctx.closePath();\n}\nfunction computeBounds(col, row, width, height, groupHeaderHeight, totalHeaderHeight, cellXOffset, cellYOffset, translateX, translateY, rows, freezeColumns, lastRowSticky, mappedColumns, rowHeight) {\n const result = {\n x: 0,\n y: totalHeaderHeight + translateY,\n width: 0,\n height: 0\n };\n const headerHeight = totalHeaderHeight - groupHeaderHeight;\n if (col >= freezeColumns) {\n const dir = cellXOffset > col ? -1 : 1;\n const freezeWidth = getStickyWidth(mappedColumns);\n result.x += freezeWidth + translateX;\n for (let i = cellXOffset; i !== col; i += dir) {\n result.x += mappedColumns[dir === 1 ? i : i - 1].width * dir;\n }\n } else {\n for (let i = 0; i < col; i++) {\n result.x += mappedColumns[i].width;\n }\n }\n result.width = mappedColumns[col].width + 1;\n if (row === -1) {\n result.y = groupHeaderHeight;\n result.height = headerHeight;\n } else if (row === -2) {\n result.y = 0;\n result.height = groupHeaderHeight;\n let start = col;\n const group = mappedColumns[col].group;\n const sticky = mappedColumns[col].sticky;\n while (start > 0 && isGroupEqual(mappedColumns[start - 1].group, group) && mappedColumns[start - 1].sticky === sticky) {\n const c = mappedColumns[start - 1];\n result.x -= c.width;\n result.width += c.width;\n start--;\n }\n let end = col;\n while (end + 1 < mappedColumns.length && isGroupEqual(mappedColumns[end + 1].group, group) && mappedColumns[end + 1].sticky === sticky) {\n const c = mappedColumns[end + 1];\n result.width += c.width;\n end++;\n }\n if (!sticky) {\n const freezeWidth = getStickyWidth(mappedColumns);\n const clip = result.x - freezeWidth;\n if (clip < 0) {\n result.x -= clip;\n result.width += clip;\n }\n if (result.x + result.width > width) {\n result.width = width - result.x;\n }\n }\n } else if (lastRowSticky && row === rows - 1) {\n const stickyHeight = typeof rowHeight === \"number\" ? rowHeight : rowHeight(row);\n result.y = height - stickyHeight;\n result.height = stickyHeight;\n } else {\n const dir = cellYOffset > row ? -1 : 1;\n if (typeof rowHeight === \"number\") {\n const delta = row - cellYOffset;\n result.y += delta * rowHeight;\n } else {\n for (let r = cellYOffset; r !== row; r += dir) {\n result.y += rowHeight(r) * dir;\n }\n }\n result.height = (typeof rowHeight === \"number\" ? rowHeight : rowHeight(row)) + 1;\n }\n return result;\n}\n\n// src/data-grid/sprites.ts\nvar iconHead = `<svg width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">`;\nvar headerRowID = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}<rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/><path d=\"M15.75 4h-1.5a.25.25 0 0 0-.177.074L9.308 8.838a3.75 3.75 0 1 0 1.854 1.854l1.155-1.157.967.322a.5.5 0 0 0 .65-.55l-.18-1.208.363-.363.727.331a.5.5 0 0 0 .69-.59l-.254-.904.647-.647A.25.25 0 0 0 16 5.75v-1.5a.25.25 0 0 0-.25-.25zM7.5 13.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0z\" fill=\"${fg}\"/></svg>`;\n};\nvar headerCode = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}<rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"4\" fill=\"${bg}\"/><path d=\"m12.223 13.314 3.052-2.826a.65.65 0 0 0 0-.984l-3.052-2.822c-.27-.25-.634-.242-.865.022-.232.263-.206.636.056.882l2.601 2.41-2.601 2.41c-.262.245-.288.619-.056.882.231.263.595.277.865.026Zm-4.444.005c.266.25.634.241.866-.027.231-.263.206-.636-.06-.882L5.983 10l2.602-2.405c.266-.25.291-.62.06-.887-.232-.263-.596-.272-.866-.022L4.723 9.51a.653.653 0 0 0 0 .983l3.056 2.827Z\" fill=\"${fg}\"/></svg>`;\n};\nvar headerNumber = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2z\" fill=\"${bg}\"/>\n <path d=\"M6.52 12.78H5.51V8.74l-1.33.47v-.87l2.29-.83h.05v5.27zm5.2 0H8.15v-.69l1.7-1.83a6.38 6.38 0 0 0 .34-.4c.09-.11.16-.22.22-.32s.1-.19.12-.27a.9.9 0 0 0 0-.56.63.63 0 0 0-.15-.23.58.58 0 0 0-.22-.15.75.75 0 0 0-.29-.05c-.27 0-.48.08-.62.23a.95.95 0 0 0-.2.65H8.03c0-.24.04-.46.13-.67a1.67 1.67 0 0 1 .97-.91c.23-.1.49-.14.77-.14.26 0 .5.04.7.11.21.08.38.18.52.32.14.13.25.3.32.48a1.74 1.74 0 0 1 .03 1.13 2.05 2.05 0 0 1-.24.47 4.16 4.16 0 0 1-.35.47l-.47.5-1 1.05h2.32v.8zm1.8-3.08h.55c.28 0 .48-.06.61-.2a.76.76 0 0 0 .2-.55.8.8 0 0 0-.05-.28.56.56 0 0 0-.13-.22.6.6 0 0 0-.23-.15.93.93 0 0 0-.32-.05.92.92 0 0 0-.29.05.72.72 0 0 0-.23.12.57.57 0 0 0-.21.46H12.4a1.3 1.3 0 0 1 .5-1.04c.15-.13.33-.23.54-.3a2.48 2.48 0 0 1 1.4 0c.2.06.4.15.55.28.15.13.27.28.36.47.08.19.13.4.13.65a1.15 1.15 0 0 1-.2.65 1.36 1.36 0 0 1-.58.49c.15.05.28.12.38.2a1.14 1.14 0 0 1 .43.62c.03.13.05.26.05.4 0 .25-.05.47-.14.66a1.42 1.42 0 0 1-.4.49c-.16.13-.35.23-.58.3a2.51 2.51 0 0 1-.73.1c-.22 0-.44-.03-.65-.09a1.8 1.8 0 0 1-.57-.28 1.43 1.43 0 0 1-.4-.47 1.41 1.41 0 0 1-.15-.66h1a.66.66 0 0 0 .22.5.87.87 0 0 0 .58.2c.25 0 .45-.07.6-.2a.71.71 0 0 0 .21-.56.97.97 0 0 0-.06-.36.61.61 0 0 0-.18-.25.74.74 0 0 0-.28-.15 1.33 1.33 0 0 0-.37-.04h-.55V9.7z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerString = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n <path d=\"M8.182 12.4h3.636l.655 1.6H14l-3.454-8H9.455L6 14h1.527l.655-1.6zM10 7.44l1.36 3.651H8.64L10 7.441z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerBoolean = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path\n d=\"M16.2222 2H3.77778C2.8 2 2 2.8 2 3.77778V16.2222C2 17.2 2.8 18 3.77778 18H16.2222C17.2 18 17.9911 17.2 17.9911 16.2222L18 3.77778C18 2.8 17.2 2 16.2222 2Z\"\n fill=\"${bg}\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.66667 6.66669C5.73368 6.66669 4.16667 8.15907 4.16667 10C4.16667 11.841 5.73368 13.3334 7.66667 13.3334H12.3333C14.2663 13.3334 15.8333 11.841 15.8333 10C15.8333 8.15907 14.2663 6.66669 12.3333 6.66669H7.66667ZM12.5 12.5C13.8807 12.5 15 11.3807 15 10C15 8.61931 13.8807 7.50002 12.5 7.50002C11.1193 7.50002 10 8.61931 10 10C10 11.3807 11.1193 12.5 12.5 12.5Z\"\n fill=\"${fg}\"\n />\n</svg>`;\n};\nvar headerUri = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n<path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10.29 4.947a3.368 3.368 0 014.723.04 3.375 3.375 0 01.041 4.729l-.009.009-1.596 1.597a3.367 3.367 0 01-5.081-.364.71.71 0 011.136-.85 1.95 1.95 0 002.942.21l1.591-1.593a1.954 1.954 0 00-.027-2.733 1.95 1.95 0 00-2.732-.027l-.91.907a.709.709 0 11-1.001-1.007l.915-.911.007-.007z\" fill=\"${fg}\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.55 8.678a3.368 3.368 0 015.082.364.71.71 0 01-1.136.85 1.95 1.95 0 00-2.942-.21l-1.591 1.593a1.954 1.954 0 00.027 2.733 1.95 1.95 0 002.73.028l.906-.906a.709.709 0 111.003 1.004l-.91.91-.008.01a3.368 3.368 0 01-4.724-.042 3.375 3.375 0 01-.041-4.728l.009-.009L6.55 8.678z\" fill=\"${fg}\"/>\n</svg>\n `;\n};\nvar renameIcon = (props) => {\n const bg = props.bgColor;\n return `${iconHead}\n <path stroke=\"${bg}\" stroke-width=\"2\" d=\"M12 3v14\"/>\n <path stroke=\"${bg}\" stroke-width=\"2\" stroke-linecap=\"round\" d=\"M10 4h4m-4 12h4\"/>\n <path d=\"M11 14h4a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3h-4v2h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4v2ZM9.5 8H5a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h4.5v2H5a3 3 0 0 1-3-3V9a3 3 0 0 1 3-3h4.5v2Z\" fill=\"${bg}\"/>\n </svg>\n`;\n};\nvar headerAudioUri = headerUri;\nvar headerVideoUri = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7 13.138a.5.5 0 00.748.434l5.492-3.138a.5.5 0 000-.868L7.748 6.427A.5.5 0 007 6.862v6.276z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerEmoji = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <path d=\"M10 5a5 5 0 1 0 0 10 5 5 0 0 0 0-10zm0 9.17A4.17 4.17 0 0 1 5.83 10 4.17 4.17 0 0 1 10 5.83 4.17 4.17 0 0 1 14.17 10 4.17 4.17 0 0 1 10 14.17z\" fill=\"${fg}\"/>\n <path d=\"M8.33 8.21a.83.83 0 1 0-.03 1.67.83.83 0 0 0 .03-1.67zm3.34 0a.83.83 0 1 0-.04 1.67.83.83 0 0 0 .04-1.67z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.53 13.9a2.82 2.82 0 0 1-5.06 0l.77-.38a1.97 1.97 0 0 0 3.52 0l.77.39z\" fill=\"${fg}\"/>\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2z\" fill=\"${bg}\"/>\n <path d=\"M10 4a6 6 0 1 0 0 12 6 6 0 0 0 0-12zm0 11a5 5 0 1 1 .01-10.01A5 5 0 0 1 10 15z\" fill=\"${fg}\"/>\n <path d=\"M8 7.86a1 1 0 1 0-.04 2 1 1 0 0 0 .04-2zm4 0a1 1 0 1 0-.04 2 1 1 0 0 0 .04-2z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.53 11.9a2.82 2.82 0 0 1-5.06 0l.77-.38a1.97 1.97 0 0 0 3.52 0l.77.39z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerImage = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n <path opacity=\".5\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.499 10.801a.5.5 0 01.835 0l2.698 4.098a.5.5 0 01-.418.775H10.22a.5.5 0 01-.417-.775l2.697-4.098z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.07 8.934a.5.5 0 01.824 0l4.08 5.958a.5.5 0 01-.412.782h-8.16a.5.5 0 01-.413-.782l4.08-5.958zM13.75 8.333a2.083 2.083 0 100-4.166 2.083 2.083 0 000 4.166z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerPhone = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <path fill=\"${fg}\" d=\"M3 3h14v14H3z\"/>\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2zm-7.24 9.78h1.23c.15 0 .27.06.36.18l.98 1.28a.43.43 0 0 1-.05.58l-1.2 1.21a.45.45 0 0 1-.6.04A6.72 6.72 0 0 1 7.33 10c0-.61.1-1.2.25-1.78a6.68 6.68 0 0 1 2.12-3.3.44.44 0 0 1 .6.04l1.2 1.2c.16.17.18.42.05.59l-.98 1.29a.43.43 0 0 1-.36.17H8.98A5.38 5.38 0 0 0 8.67 10c0 .62.11 1.23.3 1.79z\" fill=\"${bg}\"/>\n </svg>`;\n};\nvar headerMarkdown = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2z\" fill=\"${bg}\"/>\n <path d=\"m13.49 13.15-2.32-3.27h1.4V7h1.86v2.88h1.4l-2.34 3.27zM11 13H9v-3l-1.5 1.92L6 10v3H4V7h2l1.5 2L9 7h2v6z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerDate = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n <path d=\"M14.8 4.182h-.6V3H13v1.182H7V3H5.8v1.182h-.6c-.66 0-1.2.532-1.2 1.182v9.454C4 15.468 4.54 16 5.2 16h9.6c.66 0 1.2-.532 1.2-1.182V5.364c0-.65-.54-1.182-1.2-1.182zm0 10.636H5.2V7.136h9.6v7.682z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerTime = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2z\" fill=\"${bg}\"/>\n <path d=\"M10 4a6 6 0 0 0-6 6 6 6 0 0 0 6 6 6 6 0 0 0 6-6 6 6 0 0 0-6-6zm0 10.8A4.8 4.8 0 0 1 5.2 10a4.8 4.8 0 1 1 4.8 4.8z\" fill=\"${fg}\"/>\n <path d=\"M10 7H9v3.93L12.5 13l.5-.8-3-1.76V7z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerEmail = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10 8.643a1.357 1.357 0 100 2.714 1.357 1.357 0 000-2.714zM7.357 10a2.643 2.643 0 115.286 0 2.643 2.643 0 01-5.286 0z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.589 4.898A5.643 5.643 0 0115.643 10v.5a2.143 2.143 0 01-4.286 0V8a.643.643 0 011.286 0v2.5a.857.857 0 001.714 0V10a4.357 4.357 0 10-1.708 3.46.643.643 0 01.782 1.02 5.643 5.643 0 11-5.842-9.582z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerReference = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <rect x=\"2\" y=\"8\" width=\"10\" height=\"8\" rx=\"2\" fill=\"${bg}\"/>\n <rect x=\"8\" y=\"4\" width=\"10\" height=\"8\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M10.68 7.73V6l2.97 3.02-2.97 3.02v-1.77c-2.13 0-3.62.7-4.68 2.2.43-2.15 1.7-4.31 4.68-4.74z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerIfThenElse = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path fill=\"${fg}\" d=\"M4 3h12v14H4z\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.6 2A1.6 1.6 0 002 3.6v12.8A1.6 1.6 0 003.6 18h12.8a1.6 1.6 0 001.6-1.6V3.6A1.6 1.6 0 0016.4 2H3.6zm11.3 10.8a.7.7 0 01.7.7v1.4a.7.7 0 01-.7.7h-1.4a.7.7 0 01-.7-.7v-1.4a.7.7 0 01.6-.693.117.117 0 00.1-.115V10.35a.117.117 0 00-.117-.116h-2.8a.117.117 0 00-.117.116v2.333c0 .064.053.117.117.117h.117a.7.7 0 01.7.7v1.4a.7.7 0 01-.7.7H9.3a.7.7 0 01-.7-.7v-1.4a.7.7 0 01.7-.7h.117a.117.117 0 00.117-.117V10.35a.117.117 0 00-.117-.117h-2.8a.117.117 0 00-.117.117v2.342c0 .058.042.106.1.115a.7.7 0 01.6.693v1.4a.7.7 0 01-.7.7H5.1a.7.7 0 01-.7-.7v-1.4a.7.7 0 01.7-.7h.35a.116.116 0 00.116-.117v-2.45c0-.515.418-.933.934-.933h2.917a.117.117 0 00.117-.117V6.85a.117.117 0 00-.117-.116h-2.45a.7.7 0 01-.7-.7V5.1a.7.7 0 01.7-.7h6.067a.7.7 0 01.7.7v.934a.7.7 0 01-.7.7h-2.45a.117.117 0 00-.118.116v2.333c0 .064.053.117.117.117H13.5c.516 0 .934.418.934.934v2.45c0 .063.052.116.116.116h.35z\" fill=\"${bg}\"/>\n</svg>`;\n};\nvar headerSingleValue = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M9.98 13.33c.45 0 .74-.3.73-.75l-.01-.1-.16-1.67 1.45 1.05a.81.81 0 0 0 .5.18c.37 0 .72-.32.72-.76 0-.3-.17-.54-.49-.68l-1.63-.77 1.63-.77c.32-.14.49-.37.49-.67 0-.45-.34-.76-.71-.76a.81.81 0 0 0-.5.18l-1.47 1.03.16-1.74.01-.08c.01-.46-.27-.76-.72-.76-.46 0-.76.32-.75.76l.01.08.16 1.74-1.47-1.03a.77.77 0 0 0-.5-.18.74.74 0 0 0-.72.76c0 .3.17.53.49.67l1.63.77-1.62.77c-.32.14-.5.37-.5.68 0 .44.35.75.72.75a.78.78 0 0 0 .5-.17L9.4 10.8l-.16 1.68v.09c-.02.44.28.75.74.75z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerLookup = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M8 5.83H5.83a.83.83 0 0 0 0 1.67h1.69A4.55 4.55 0 0 1 8 5.83zm-.33 3.34H5.83a.83.83 0 0 0 0 1.66h2.72a4.57 4.57 0 0 1-.88-1.66zM5.83 12.5a.83.83 0 0 0 0 1.67h7.5a.83.83 0 1 0 0-1.67h-7.5zm8.8-2.9a3.02 3.02 0 0 0 .46-1.6c0-1.66-1.32-3-2.94-3C10.52 5 9.2 6.34 9.2 8s1.31 3 2.93 3c.58 0 1.11-.17 1.56-.47l2.04 2.08.93-.94-2.04-2.08zm-2.48.07c-.9 0-1.63-.75-1.63-1.67s.73-1.67 1.63-1.67c.9 0 1.63.75 1.63 1.67s-.73 1.67-1.63 1.67z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerTextTemplate = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M7.676 4.726V3l2.976 3.021-2.976 3.022v-1.77c-2.125 0-3.613.69-4.676 2.201.425-2.158 1.7-4.316 4.676-4.748zM10.182 14.4h3.636l.655 1.6H16l-3.454-8h-1.091L8 16h1.527l.655-1.6zM12 9.44l1.36 3.65h-2.72L12 9.44z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerMath = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.167 5.417a.833.833 0 100 1.666h4.166a.833.833 0 100-1.666H4.167z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.083 4.167a.833.833 0 10-1.666 0v4.166a.833.833 0 101.666 0V4.167zM11.667 5.417a.833.833 0 100 1.666h4.166a.833.833 0 100-1.666h-4.166zM5.367 11.688a.833.833 0 00-1.179 1.179l2.947 2.946a.833.833 0 001.178-1.178l-2.946-2.947z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.313 12.867a.833.833 0 10-1.178-1.179l-2.947 2.947a.833.833 0 101.179 1.178l2.946-2.946z\" fill=\"${fg}\"/>\n <path d=\"M10.833 12.5c0-.46.373-.833.834-.833h4.166a.833.833 0 110 1.666h-4.166a.833.833 0 01-.834-.833zM10.833 15c0-.46.373-.833.834-.833h4.166a.833.833 0 110 1.666h-4.166a.833.833 0 01-.834-.833z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerRollup = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2z\" fill=\"${bg}\"/>\n <path d=\"M10 8.84a1.16 1.16 0 1 0 0 2.32 1.16 1.16 0 0 0 0-2.32zm3.02 3.61a3.92 3.92 0 0 0 .78-3.28.49.49 0 1 0-.95.2c.19.87-.02 1.78-.58 2.47a2.92 2.92 0 1 1-4.13-4.08 2.94 2.94 0 0 1 2.43-.62.49.49 0 1 0 .17-.96 3.89 3.89 0 1 0 2.28 6.27zM10 4.17a5.84 5.84 0 0 0-5.44 7.93.49.49 0 1 0 .9-.35 4.86 4.86 0 1 1 2.5 2.67.49.49 0 1 0-.4.88c.76.35 1.6.54 2.44.53a5.83 5.83 0 0 0 0-11.66zm3.02 3.5a.7.7 0 1 0-1.4 0 .7.7 0 0 0 1.4 0zm-6.97 5.35a.7.7 0 1 1 0 1.4.7.7 0 0 1 0-1.4z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerJoinStrings = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M12.4 13.565c1.865-.545 3.645-2.083 3.645-4.396 0-1.514-.787-2.604-2.071-2.604C12.69 6.565 12 7.63 12 8.939c1.114.072 1.865.726 1.865 1.683 0 .933-.8 1.647-1.84 2.023l.375.92zM4 5h6v2H4zM4 9h5v2H4zM4 13h4v2H4z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerSplitString = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M12.4 13.56c1.86-.54 3.65-2.08 3.65-4.4 0-1.5-.8-2.6-2.08-2.6S12 7.64 12 8.95c1.11.07 1.86.73 1.86 1.68 0 .94-.8 1.65-1.83 2.03l.37.91zM4 5h6v2H4zm0 4h5v2H4zm0 4h4v2H4z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerGeoDistance = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n <path d=\"M10 7a1 1 0 100-2v2zm0 6a1 1 0 100 2v-2zm0-8H7v2h3V5zm-3 6h5V9H7v2zm5 2h-2v2h2v-2zm1-1a1 1 0 01-1 1v2a3 3 0 003-3h-2zm-1-1a1 1 0 011 1h2a3 3 0 00-3-3v2zM4 8a3 3 0 003 3V9a1 1 0 01-1-1H4zm3-3a3 3 0 00-3 3h2a1 1 0 011-1V5z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.856 12.014a.5.5 0 00-.712.702L5.409 14l-1.265 1.284a.5.5 0 00.712.702l1.255-1.274 1.255 1.274a.5.5 0 00.712-.702L6.813 14l1.265-1.284a.5.5 0 00-.712-.702L6.11 13.288l-1.255-1.274zM12.856 4.014a.5.5 0 00-.712.702L13.409 6l-1.265 1.284a.5.5 0 10.712.702l1.255-1.274 1.255 1.274a.5.5 0 10.712-.702L14.813 6l1.265-1.284a.5.5 0 00-.712-.702L14.11 5.288l-1.255-1.274z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerArray = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.25 7.25a.75.75 0 000-1.5h-6.5a.75.75 0 100 1.5h6.5zM15 10a.75.75 0 01-.75.75h-6.5a.75.75 0 010-1.5h6.5A.75.75 0 0115 10zm-.75 4.25a.75.75 0 000-1.5h-6.5a.75.75 0 000 1.5h6.5zm-8.987-7a.75.75 0 100-1.5.75.75 0 000 1.5zm.75 2.75a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm-.75 4.25a.75.75 0 100-1.5.75.75 0 000 1.5z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar rowOwnerOverlay = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n <svg width=\"18\" height=\"18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 15v1h14v-2.5c0-.87-.44-1.55-.98-2.04a6.19 6.19 0 0 0-1.9-1.14 12.1 12.1 0 0 0-2.48-.67A4 4 0 1 0 5 6a4 4 0 0 0 2.36 3.65c-.82.13-1.7.36-2.48.67-.69.28-1.37.65-1.9 1.13A2.8 2.8 0 0 0 2 13.5V15z\" fill=\"${bg}\" stroke=\"${fg}\" stroke-width=\"2\"/>\n </svg>`;\n};\nvar protectedColumnOverlay = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n <svg width=\"18\" height=\"18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.43 6.04v-.18a3.86 3.86 0 0 0-7.72 0v.18A2.15 2.15 0 0 0 3 8.14v5.72C3 15.04 3.96 16 5.14 16H12c1.18 0 2.14-.96 2.14-2.14V8.14c0-1.03-.73-1.9-1.71-2.1zM7.86 6v-.14a.71.71 0 1 1 1.43 0V6H7.86z\" fill=\"${bg}\" stroke=\"${fg}\" stroke-width=\"2\"/>\n </svg>\n`;\n};\nvar sprites = {\n headerRowID,\n headerNumber,\n headerCode,\n headerString,\n headerBoolean,\n headerAudioUri,\n headerVideoUri,\n headerEmoji,\n headerImage,\n headerUri,\n headerPhone,\n headerMarkdown,\n headerDate,\n headerTime,\n headerEmail,\n headerReference,\n headerIfThenElse,\n headerSingleValue,\n headerLookup,\n headerTextTemplate,\n headerMath,\n headerRollup,\n headerJoinStrings,\n headerSplitString,\n headerGeoDistance,\n headerArray,\n rowOwnerOverlay,\n protectedColumnOverlay,\n renameIcon\n};\n\n// src/data-grid/data-grid-sprites.ts\nfunction getColors(variant, theme) {\n if (variant === \"normal\") {\n return [theme.bgIconHeader, theme.fgIconHeader];\n } else if (variant === \"selected\") {\n return [\"white\", theme.accentColor];\n } else {\n return [theme.accentColor, theme.bgHeader];\n }\n}\nvar SpriteManager = class {\n constructor(headerIcons, onSettled) {\n this.spriteMap = /* @__PURE__ */ new Map();\n this.inFlight = 0;\n this.onSettled = onSettled;\n this.headerIcons = {\n ...sprites,\n ...headerIcons\n };\n }\n drawSprite(sprite, variant, ctx, x, y, size, theme, alpha = 1) {\n const [bgColor, fgColor] = getColors(variant, theme);\n const rSize = size * Math.ceil(window.devicePixelRatio);\n const key = `${bgColor}_${fgColor}_${rSize}_${sprite}`;\n let spriteCanvas = this.spriteMap.get(key);\n if (spriteCanvas === void 0) {\n const spriteCb = this.headerIcons[sprite];\n if (spriteCb === void 0)\n return;\n spriteCanvas = document.createElement(\"canvas\");\n const spriteCtx = spriteCanvas.getContext(\"2d\");\n if (spriteCtx === null)\n return;\n const imgSource = new Image();\n imgSource.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(spriteCb({ fgColor, bgColor }))}`;\n this.spriteMap.set(key, spriteCanvas);\n const promise = imgSource.decode();\n if (promise === void 0)\n return;\n this.inFlight++;\n promise.then(() => {\n spriteCtx.drawImage(imgSource, 0, 0, rSize, rSize);\n }).finally(() => {\n this.inFlight--;\n if (this.inFlight === 0) {\n this.onSettled();\n }\n });\n } else {\n if (alpha < 1) {\n ctx.globalAlpha = alpha;\n }\n ctx.drawImage(spriteCanvas, 0, 0, rSize, rSize, x, y, size, size);\n if (alpha < 1) {\n ctx.globalAlpha = 1;\n }\n }\n }\n};\n\n// src/data-grid/data-grid.tsx\nimport clamp2 from \"lodash/clamp.js\";\nimport makeRange from \"lodash/range.js\";\n\n// src/data-grid/data-grid-render.tsx\nimport groupBy from \"lodash/groupBy.js\";\n\n// src/data-grid/color-parser.ts\nvar cache = {};\nvar div = null;\nfunction createDiv() {\n const d = document.createElement(\"div\");\n d.style.opacity = \"0\";\n d.style.pointerEvents = \"none\";\n d.style.position = \"fixed\";\n document.body.append(d);\n return d;\n}\nfunction parseToRgba(color) {\n const normalizedColor = color.toLowerCase().trim();\n if (cache[normalizedColor] !== void 0)\n return cache[normalizedColor];\n div = div || createDiv();\n div.style.color = \"#000\";\n div.style.color = normalizedColor;\n const control = getComputedStyle(div).color;\n div.style.color = \"#fff\";\n div.style.color = normalizedColor;\n const computedColor = getComputedStyle(div).color;\n if (computedColor !== control)\n return [0, 0, 0, 1];\n let result = computedColor.replace(/[^\\d.,]/g, \"\").split(\",\").map(Number.parseFloat);\n if (result.length < 4) {\n result.push(1);\n }\n result = result.map((x) => {\n const isNaN = Number.isNaN(x);\n if (isNaN) {\n console.warn(\"Could not parse color\", color);\n }\n return isNaN ? 0 : x;\n });\n cache[normalizedColor] = result;\n return result;\n}\nfunction withAlpha(color, alpha) {\n const [r, g, b] = parseToRgba(color);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\nfunction blend(color, background) {\n if (background === void 0)\n return color;\n const [r, g, b, a] = parseToRgba(color);\n if (a === 1)\n return color;\n const [br, bg, bb, ba] = parseToRgba(background);\n const ao = a + ba * (1 - a);\n const ro = (a * r + ba * br * (1 - a)) / ao;\n const go = (a * g + ba * bg * (1 - a)) / ao;\n const bo = (a * b + ba * bb * (1 - a)) / ao;\n return `rgba(${ro}, ${go}, ${bo}, ${ao})`;\n}\nfunction interpolateColors(leftColor, rightColor, val) {\n if (val <= 0)\n return leftColor;\n if (val >= 1)\n return rightColor;\n const left = [...parseToRgba(leftColor)];\n left[0] = left[0] * left[3];\n left[1] = left[1] * left[3];\n left[2] = left[2] * left[3];\n const right = [...parseToRgba(rightColor)];\n right[0] = right[0] * right[3];\n right[1] = right[1] * right[3];\n right[2] = right[2] * right[3];\n const hScaler = val;\n const nScaler = 1 - val;\n const a = left[3] * nScaler + right[3] * hScaler;\n const r = Math.floor((left[0] * nScaler + right[0] * hScaler) / a);\n const g = Math.floor((left[1] * nScaler + right[1] * hScaler) / a);\n const b = Math.floor((left[2] * nScaler + right[2] * hScaler) / a);\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\n// src/data-grid/data-grid-render.tsx\nvar loadingCell = {\n kind: GridCellKind.Loading,\n allowOverlay: false\n};\nfunction drawCell(ctx, row, cell, col, x, y, w, h, highlighted, theme, drawCustomCell, imageLoader, spriteManager, hoverAmount, hoverInfo, hyperWrapping, frameTime, lastPrep, enqueue, getCellRenderer) {\n let hoverX;\n let hoverY;\n if (hoverInfo !== void 0 && hoverInfo[0][0] === col && hoverInfo[0][1] === row) {\n hoverX = hoverInfo[1][0];\n hoverY = hoverInfo[1][1];\n }\n let result = void 0;\n const args = {\n ctx,\n theme,\n col,\n row,\n cell,\n rect: { x, y, width: w, height: h },\n highlighted,\n hoverAmount,\n hoverX,\n hoverY,\n imageLoader,\n spriteManager,\n hyperWrapping,\n requestAnimationFrame: () => {\n forceAnim = true;\n }\n };\n let forceAnim = false;\n const needsAnim = drawWithLastUpdate(args, cell.lastUpdated, frameTime, lastPrep, () => {\n var _a, _b;\n const drawn = isInnerOnlyCell(cell) ? false : (drawCustomCell == null ? void 0 : drawCustomCell(args)) === true;\n if (!drawn) {\n const r = getCellRenderer(cell);\n if (r !== void 0) {\n if ((lastPrep == null ? void 0 : lastPrep.renderer) !== r) {\n (_a = lastPrep == null ? void 0 : lastPrep.deprep) == null ? void 0 : _a.call(lastPrep, args);\n lastPrep = void 0;\n }\n const partialPrepResult = (_b = r.drawPrep) == null ? void 0 : _b.call(r, args, lastPrep);\n r.draw(args, cell);\n result = {\n deprep: partialPrepResult == null ? void 0 : partialPrepResult.deprep,\n fillStyle: partialPrepResult == null ? void 0 : partialPrepResult.fillStyle,\n font: partialPrepResult == null ? void 0 : partialPrepResult.font,\n renderer: r\n };\n }\n }\n });\n if (needsAnim || forceAnim)\n enqueue == null ? void 0 : enqueue([col, row]);\n return result;\n}\nfunction blitLastFrame(ctx, canvas, last, cellXOffset, cellYOffset, translateX, translateY, lastRowSticky, width, height, rows, totalHeaderHeight, dpr, mappedColumns, effectiveCols, getRowHeight, doubleBuffer) {\n const drawRegions = [];\n let blittedYOnly = false;\n ctx.imageSmoothingEnabled = false;\n const minY = Math.min(last.cellYOffset, cellYOffset);\n const maxY = Math.max(last.cellYOffset, cellYOffset);\n let deltaY = 0;\n if (typeof getRowHeight === \"number\") {\n deltaY += (maxY - minY) * getRowHeight;\n } else {\n for (let i = minY; i < maxY; i++) {\n deltaY += getRowHeight(i);\n }\n }\n if (cellYOffset > last.cellYOffset) {\n deltaY = -deltaY;\n }\n deltaY += translateY - last.translateY;\n const minX = Math.min(last.cellXOffset, cellXOffset);\n const maxX = Math.max(last.cellXOffset, cellXOffset);\n let deltaX = 0;\n for (let i = minX; i < maxX; i++) {\n deltaX += mappedColumns[i].width;\n }\n if (cellXOffset > last.cellXOffset) {\n deltaX = -deltaX;\n }\n deltaX += translateX - last.translateX;\n let stickyWidth = getStickyWidth(effectiveCols);\n if (stickyWidth > 0)\n stickyWidth++;\n if (deltaX !== 0 && deltaY !== 0) {\n return {\n regions: [],\n yOnly: false\n };\n }\n const stickyRowHeight = lastRowSticky ? typeof getRowHeight === \"number\" ? getRowHeight : getRowHeight(rows - 1) : 0;\n const blitWidth = width - stickyWidth - Math.abs(deltaX);\n const blitHeight = height - totalHeaderHeight - stickyRowHeight - Math.abs(deltaY) - 1;\n if (blitWidth > 150 && blitHeight > 150) {\n blittedYOnly = deltaX === 0;\n const args = {\n sx: 0,\n sy: 0,\n sw: width * dpr,\n sh: height * dpr,\n dx: 0,\n dy: 0,\n dw: width * dpr,\n dh: height * dpr\n };\n if (deltaY > 0) {\n args.sy = (totalHeaderHeight + 1) * dpr;\n args.sh = blitHeight * dpr;\n args.dy = (deltaY + totalHeaderHeight + 1) * dpr;\n args.dh = blitHeight * dpr;\n drawRegions.push({\n x: 0,\n y: totalHeaderHeight,\n width,\n height: deltaY + 1\n });\n } else if (deltaY < 0) {\n args.sy = (-deltaY + totalHeaderHeight + 1) * dpr;\n args.sh = blitHeight * dpr;\n args.dy = (totalHeaderHeight + 1) * dpr;\n args.dh = blitHeight * dpr;\n drawRegions.push({\n x: 0,\n y: height + deltaY - stickyRowHeight,\n width,\n height: -deltaY + stickyRowHeight\n });\n }\n if (deltaX > 0) {\n args.sx = stickyWidth * dpr;\n args.sw = blitWidth * dpr;\n args.dx = (deltaX + stickyWidth) * dpr;\n args.dw = blitWidth * dpr;\n drawRegions.push({\n x: stickyWidth - 1,\n y: 0,\n width: deltaX + 2,\n // extra width to account for first col not drawing a left side border\n height\n });\n } else if (deltaX < 0) {\n args.sx = (stickyWidth - deltaX) * dpr;\n args.sw = blitWidth * dpr;\n args.dx = stickyWidth * dpr;\n args.dw = blitWidth * dpr;\n drawRegions.push({\n x: width + deltaX,\n y: 0,\n width: -deltaX,\n height\n });\n }\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n if (stickyWidth > 0 && deltaX !== 0 && deltaY === 0 && doubleBuffer) {\n ctx.drawImage(canvas, 0, 0, stickyWidth * dpr, height * dpr, 0, 0, stickyWidth * dpr, height * dpr);\n }\n ctx.drawImage(canvas, args.sx, args.sy, args.sw, args.sh, args.dx, args.dy, args.dw, args.dh);\n ctx.scale(dpr, dpr);\n }\n ctx.imageSmoothingEnabled = true;\n return {\n regions: drawRegions,\n yOnly: blittedYOnly\n };\n}\nfunction blitResizedCol(last, cellXOffset, cellYOffset, translateX, translateY, width, height, totalHeaderHeight, effectiveCols, resizedIndex) {\n const drawRegions = [];\n if (cellXOffset !== last.cellXOffset || cellYOffset !== last.cellYOffset || translateX !== last.translateX || translateY !== last.translateY) {\n return drawRegions;\n }\n walkColumns(effectiveCols, cellYOffset, translateX, translateY, totalHeaderHeight, (c, drawX, _drawY, clipX) => {\n if (c.sourceIndex === resizedIndex) {\n const x = Math.max(drawX, clipX) + 1;\n drawRegions.push({\n x,\n y: 0,\n width: width - x,\n height\n });\n return true;\n }\n });\n return drawRegions;\n}\nfunction drawGridLines(ctx, effectiveCols, cellYOffset, translateX, translateY, width, height, drawRegions, spans, groupHeaderHeight, totalHeaderHeight, getRowHeight, getRowThemeOverride, verticalBorder, trailingRowType, rows, theme, verticalOnly = false) {\n var _a, _b, _c;\n if (spans !== void 0) {\n ctx.beginPath();\n ctx.save();\n ctx.rect(0, 0, width, height);\n for (const span of spans) {\n ctx.rect(span.x + 1, span.y + 1, span.width - 1, span.height - 1);\n }\n ctx.clip(\"evenodd\");\n }\n const hColor = (_a = theme.horizontalBorderColor) != null ? _a : theme.borderColor;\n const vColor = theme.borderColor;\n let minX = 0;\n let maxX = width;\n let minY = 0;\n let maxY = height;\n if (drawRegions !== void 0 && drawRegions.length > 0) {\n minX = Number.MAX_SAFE_INTEGER;\n minY = Number.MAX_SAFE_INTEGER;\n maxX = Number.MIN_SAFE_INTEGER;\n maxY = Number.MIN_SAFE_INTEGER;\n for (const r of drawRegions) {\n minX = Math.min(minX, r.x - 1);\n maxX = Math.max(maxX, r.x + r.width + 1);\n minY = Math.min(minY, r.y - 1);\n maxY = Math.max(maxY, r.y + r.height + 1);\n }\n }\n const toDraw = [];\n ctx.beginPath();\n let x = 0.5;\n for (let index = 0; index < effectiveCols.length; index++) {\n const c = effectiveCols[index];\n if (c.width === 0)\n continue;\n x += c.width;\n const tx = c.sticky ? x : x + translateX;\n if (tx >= minX && tx <= maxX && verticalBorder(index + 1)) {\n toDraw.push({\n x1: tx,\n y1: Math.max(groupHeaderHeight, minY),\n x2: tx,\n y2: Math.min(height, maxY),\n color: vColor\n });\n }\n }\n const stickyHeight = getRowHeight(rows - 1);\n const stickyRowY = height - stickyHeight + 0.5;\n const lastRowSticky = trailingRowType === \"sticky\";\n if (lastRowSticky) {\n toDraw.push({ x1: minX, y1: stickyRowY, x2: maxX, y2: stickyRowY, color: hColor });\n }\n if (verticalOnly !== true) {\n let y = totalHeaderHeight + 0.5;\n let row = cellYOffset;\n const target = lastRowSticky ? height - stickyHeight : height;\n while (y + translateY <= target) {\n const ty = y + translateY;\n if (ty >= minY && ty <= maxY - 1 && (!lastRowSticky || row !== rows - 1 || Math.abs(ty - stickyRowY) > 1)) {\n const rowTheme = getRowThemeOverride == null ? void 0 : getRowThemeOverride(row);\n toDraw.push({\n x1: minX,\n y1: ty,\n x2: maxX,\n y2: ty,\n color: (_c = (_b = rowTheme == null ? void 0 : rowTheme.horizontalBorderColor) != null ? _b : rowTheme == null ? void 0 : rowTheme.borderColor) != null ? _c : hColor\n });\n }\n y += getRowHeight(row);\n row++;\n }\n }\n const groups = groupBy(toDraw, (line) => line.color);\n for (const g of Object.keys(groups)) {\n ctx.strokeStyle = g;\n for (const line of groups[g]) {\n ctx.moveTo(line.x1, line.y1);\n ctx.lineTo(line.x2, line.y2);\n }\n ctx.stroke();\n ctx.beginPath();\n }\n if (spans !== void 0) {\n ctx.restore();\n }\n}\nfunction getActionBoundsForGroup(box, actions) {\n const result = [];\n let x = box.x + box.width - 26 * actions.length;\n const y = box.y + box.height / 2 - 13;\n const height = 26;\n const width = 26;\n for (let i = 0; i < actions.length; i++) {\n result.push({\n x,\n y,\n width,\n height\n });\n x += 26;\n }\n return result;\n}\nfunction pointInRect(rect, x, y) {\n return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height;\n}\nfunction drawGroups(ctx, effectiveCols, width, translateX, groupHeaderHeight, hovered, theme, spriteManager, _hoverValues, verticalBorder, getGroupDetails, damage) {\n var _a;\n const xPad = 8;\n const [hCol, hRow] = (_a = hovered == null ? void 0 : hovered[0]) != null ? _a : [];\n let finalX = 0;\n walkGroups(effectiveCols, width, translateX, groupHeaderHeight, (span, groupName, x, y, w, h) => {\n var _a2, _b;\n if (damage !== void 0 && !damage.some((d) => d[1] === -2 && d[0] >= span[0] && d[0] <= span[1]))\n return;\n ctx.save();\n ctx.beginPath();\n ctx.rect(x, y, w, h);\n ctx.clip();\n const group = getGroupDetails(groupName);\n const groupTheme = (group == null ? void 0 : group.overrideTheme) === void 0 ? theme : { ...theme, ...group.overrideTheme };\n const isHovered = hRow === -2 && hCol !== void 0 && hCol >= span[0] && hCol <= span[1];\n const fillColor = isHovered ? groupTheme.bgHeaderHovered : groupTheme.bgHeader;\n if (fillColor !== theme.bgHeader) {\n ctx.fillStyle = fillColor;\n ctx.fill();\n }\n ctx.fillStyle = (_a2 = groupTheme.textGroupHeader) != null ? _a2 : groupTheme.textHeader;\n if (group !== void 0) {\n let drawX = x;\n if (group.icon !== void 0) {\n spriteManager.drawSprite(\n group.icon,\n \"normal\",\n ctx,\n drawX + xPad,\n (groupHeaderHeight - 20) / 2,\n 20,\n groupTheme\n );\n drawX += 26;\n }\n ctx.fillText(\n group.name,\n drawX + xPad,\n groupHeaderHeight / 2 + getMiddleCenterBias(ctx, `${theme.headerFontStyle} ${theme.fontFamily}`)\n );\n if (group.actions !== void 0 && isHovered) {\n const actionBoxes = getActionBoundsForGroup({ x, y, width: w, height: h }, group.actions);\n ctx.beginPath();\n const fadeStartX = actionBoxes[0].x - 10;\n const fadeWidth = x + w - fadeStartX;\n ctx.rect(fadeStartX, 0, fadeWidth, groupHeaderHeight);\n const grad = ctx.createLinearGradient(fadeStartX, 0, fadeStartX + fadeWidth, 0);\n const trans = withAlpha(fillColor, 0);\n grad.addColorStop(0, trans);\n grad.addColorStop(10 / fadeWidth, fillColor);\n grad.addColorStop(1, fillColor);\n ctx.fillStyle = grad;\n ctx.fill();\n ctx.globalAlpha = 0.6;\n const [mouseX, mouseY] = (_b = hovered == null ? void 0 : hovered[1]) != null ? _b : [-1, -1];\n for (let i = 0; i < group.actions.length; i++) {\n const action = group.actions[i];\n const box = actionBoxes[i];\n const actionHovered = pointInRect(box, mouseX + x, mouseY);\n if (actionHovered) {\n ctx.globalAlpha = 1;\n }\n spriteManager.drawSprite(\n action.icon,\n \"normal\",\n ctx,\n box.x + box.width / 2 - 10,\n box.y + box.height / 2 - 10,\n 20,\n groupTheme\n );\n if (actionHovered) {\n ctx.globalAlpha = 0.6;\n }\n }\n ctx.globalAlpha = 1;\n }\n }\n if (x !== 0 && verticalBorder(span[0])) {\n ctx.beginPath();\n ctx.moveTo(x + 0.5, 0);\n ctx.lineTo(x + 0.5, groupHeaderHeight);\n ctx.strokeStyle = theme.borderColor;\n ctx.lineWidth = 1;\n ctx.stroke();\n }\n ctx.restore();\n finalX = x + w;\n });\n ctx.beginPath();\n ctx.moveTo(finalX + 0.5, 0);\n ctx.lineTo(finalX + 0.5, groupHeaderHeight);\n ctx.moveTo(0, groupHeaderHeight + 0.5);\n ctx.lineTo(width, groupHeaderHeight + 0.5);\n ctx.strokeStyle = theme.borderColor;\n ctx.lineWidth = 1;\n ctx.stroke();\n}\nvar menuButtonSize = 30;\nfunction getHeaderMenuBounds(x, y, width, height, isRtl) {\n if (isRtl)\n return { x, y, width: menuButtonSize, height: Math.min(menuButtonSize, height) };\n return {\n x: x + width - menuButtonSize,\n // right align\n y: Math.max(y, y + height / 2 - menuButtonSize / 2),\n // center vertically\n width: menuButtonSize,\n height: Math.min(menuButtonSize, height)\n };\n}\nfunction drawHeader(ctx, x, y, width, height, c, selected, theme, isHovered, hasSelectedCell, hoverAmount, spriteManager, drawHeaderCallback, touchMode) {\n const isCheckboxHeader = c.title.startsWith(headerCellCheckboxPrefix);\n const isRtl = direction(c.title) === \"rtl\";\n const menuBounds = getHeaderMenuBounds(x, y, width, height, isRtl);\n if (drawHeaderCallback !== void 0) {\n let passCol = c;\n if (isCheckboxHeader) {\n passCol = {\n ...c,\n title: \"\"\n };\n }\n if (drawHeaderCallback({\n ctx,\n theme,\n rect: { x, y, width, height },\n column: passCol,\n columnIndex: passCol.sourceIndex,\n isSelected: selected,\n hoverAmount,\n isHovered,\n hasSelectedCell,\n spriteManager,\n menuBounds\n })) {\n return;\n }\n }\n if (isCheckboxHeader) {\n let checked = void 0;\n if (c.title === headerCellCheckedMarker)\n checked = true;\n if (c.title === headerCellUnheckedMarker)\n checked = false;\n if (checked !== true) {\n ctx.globalAlpha = hoverAmount;\n }\n drawCheckbox(ctx, theme, checked, x, y, width, height, false, void 0, void 0, 18);\n if (checked !== true) {\n ctx.globalAlpha = 1;\n }\n return;\n }\n const xPad = theme.cellHorizontalPadding;\n const fillStyle = selected ? theme.textHeaderSelected : theme.textHeader;\n const shouldDrawMenu = c.hasMenu === true && (isHovered || touchMode && selected);\n const dirScalar = isRtl ? -1 : 1;\n let drawX = isRtl ? x + width - xPad : x + xPad;\n if (c.icon !== void 0) {\n let variant = selected ? \"selected\" : \"normal\";\n if (c.style === \"highlight\") {\n variant = selected ? \"selected\" : \"special\";\n }\n const headerSize = theme.headerIconSize;\n spriteManager.drawSprite(\n c.icon,\n variant,\n ctx,\n isRtl ? drawX - headerSize : drawX,\n y + (height - headerSize) / 2,\n headerSize,\n theme\n );\n if (c.overlayIcon !== void 0) {\n spriteManager.drawSprite(\n c.overlayIcon,\n selected ? \"selected\" : \"special\",\n ctx,\n isRtl ? drawX - headerSize + 9 : drawX + 9,\n y + ((height - 18) / 2 + 6),\n 18,\n theme\n );\n }\n drawX += Math.ceil(headerSize * 1.3) * dirScalar;\n }\n if (shouldDrawMenu && c.hasMenu === true && width > 35) {\n const fadeWidth = 35;\n const fadeStart = isRtl ? fadeWidth : width - fadeWidth;\n const fadeEnd = isRtl ? fadeWidth * 0.7 : width - fadeWidth * 0.7;\n const fadeStartPercent = fadeStart / width;\n const fadeEndPercent = fadeEnd / width;\n const grad = ctx.createLinearGradient(x, 0, x + width, 0);\n const trans = withAlpha(fillStyle, 0);\n grad.addColorStop(isRtl ? 1 : 0, fillStyle);\n grad.addColorStop(fadeStartPercent, fillStyle);\n grad.addColorStop(fadeEndPercent, trans);\n grad.addColorStop(isRtl ? 0 : 1, trans);\n ctx.fillStyle = grad;\n } else {\n ctx.fillStyle = fillStyle;\n }\n if (isRtl) {\n ctx.textAlign = \"right\";\n }\n ctx.fillText(\n c.title,\n drawX,\n y + height / 2 + getMiddleCenterBias(ctx, `${theme.headerFontStyle} ${theme.fontFamily}`)\n );\n if (isRtl) {\n ctx.textAlign = \"left\";\n }\n if (shouldDrawMenu && c.hasMenu === true) {\n ctx.beginPath();\n const triangleX = menuBounds.x + menuBounds.width / 2 - 5.5;\n const triangleY = menuBounds.y + menuBounds.height / 2 - 3;\n roundedPoly(\n ctx,\n [\n {\n x: triangleX,\n y: triangleY\n },\n {\n x: triangleX + 11,\n y: triangleY\n },\n {\n x: triangleX + 5.5,\n y: triangleY + 6\n }\n ],\n 1\n );\n ctx.fillStyle = fillStyle;\n ctx.fill();\n }\n}\nfunction drawGridHeaders(ctx, effectiveCols, enableGroups, hovered, width, translateX, headerHeight, groupHeaderHeight, dragAndDropState, isResizing, selection, outerTheme, spriteManager, hoverValues, verticalBorder, getGroupDetails, damage, drawHeaderCallback, touchMode) {\n var _a;\n const totalHeaderHeight = headerHeight + groupHeaderHeight;\n if (totalHeaderHeight <= 0)\n return;\n ctx.fillStyle = outerTheme.bgHeader;\n ctx.fillRect(0, 0, width, totalHeaderHeight);\n const [hCol, hRow] = (_a = hovered == null ? void 0 : hovered[0]) != null ? _a : [];\n const font = `${outerTheme.headerFontStyle} ${outerTheme.fontFamily}`;\n ctx.font = font;\n walkColumns(effectiveCols, 0, translateX, 0, totalHeaderHeight, (c, x, _y, clipX) => {\n var _a2, _b, _c;\n if (damage !== void 0 && !damage.some((d) => d[1] === -1 && d[0] === c.sourceIndex))\n return;\n const diff = Math.max(0, clipX - x);\n ctx.save();\n ctx.beginPath();\n ctx.rect(x + diff, groupHeaderHeight, c.width - diff, headerHeight);\n ctx.clip();\n const groupTheme = getGroupDetails((_a2 = c.group) != null ? _a2 : \"\").overrideTheme;\n const theme = c.themeOverride === void 0 && groupTheme === void 0 ? outerTheme : { ...outerTheme, ...groupTheme, ...c.themeOverride };\n if (theme.bgHeader !== outerTheme.bgHeader) {\n ctx.fillStyle = theme.bgHeader;\n ctx.fill();\n }\n const f = `${theme.headerFontStyle} ${theme.fontFamily}`;\n if (font !== f) {\n ctx.font = f;\n }\n const selected = selection.columns.hasIndex(c.sourceIndex);\n const noHover = dragAndDropState !== void 0 || isResizing;\n const hoveredBoolean = !noHover && hRow === -1 && hCol === c.sourceIndex;\n const hover = noHover ? 0 : (_c = (_b = hoverValues.find((s) => s.item[0] === c.sourceIndex && s.item[1] === -1)) == null ? void 0 : _b.hoverAmount) != null ? _c : 0;\n const hasSelectedCell = (selection == null ? void 0 : selection.current) !== void 0 && selection.current.cell[0] === c.sourceIndex;\n const bgFillStyle = selected ? theme.accentColor : hasSelectedCell ? theme.bgHeaderHasFocus : theme.bgHeader;\n const y = enableGroups ? groupHeaderHeight : 0;\n const xOffset = c.sourceIndex === 0 ? 0 : 1;\n if (selected) {\n ctx.fillStyle = bgFillStyle;\n ctx.fillRect(x + xOffset, y, c.width - xOffset, headerHeight);\n } else if (hasSelectedCell || hover > 0) {\n ctx.beginPath();\n ctx.rect(x + xOffset, y, c.width - xOffset, headerHeight);\n if (hasSelectedCell) {\n ctx.fillStyle = theme.bgHeaderHasFocus;\n ctx.fill();\n }\n if (hover > 0) {\n ctx.globalAlpha = hover;\n ctx.fillStyle = theme.bgHeaderHovered;\n ctx.fill();\n ctx.globalAlpha = 1;\n }\n }\n drawHeader(\n ctx,\n x,\n y,\n c.width,\n headerHeight,\n c,\n selected,\n theme,\n hoveredBoolean,\n hasSelectedCell,\n hover,\n spriteManager,\n drawHeaderCallback,\n touchMode\n );\n ctx.restore();\n });\n if (enableGroups) {\n drawGroups(\n ctx,\n effectiveCols,\n width,\n translateX,\n groupHeaderHeight,\n hovered,\n outerTheme,\n spriteManager,\n hoverValues,\n verticalBorder,\n getGroupDetails,\n damage\n );\n }\n}\nfunction intersectRect(x1, y1, w1, h1, x2, y2, w2, h2) {\n return x1 <= x2 + w2 && x2 <= x1 + w1 && y1 <= y2 + h2 && y2 <= y1 + h1;\n}\nfunction clipDamage(ctx, effectiveColumns, width, height, groupHeaderHeight, totalHeaderHeight, translateX, translateY, cellYOffset, rows, getRowHeight, trailingRowType, damage, includeCells) {\n if (damage === void 0 || damage.length === 0)\n return;\n const stickyRowHeight = trailingRowType === \"sticky\" ? getRowHeight(rows - 1) : 0;\n ctx.beginPath();\n walkGroups(effectiveColumns, width, translateX, groupHeaderHeight, (span, _group, x, y, w, h) => {\n for (let i = 0; i < damage.length; i++) {\n const d = damage[i];\n if (d[1] === -2 && d[0] >= span[0] && d[0] <= span[1]) {\n ctx.rect(x, y, w, h);\n break;\n }\n }\n });\n walkColumns(\n effectiveColumns,\n cellYOffset,\n translateX,\n translateY,\n totalHeaderHeight,\n (c, drawX, colDrawY, clipX, startRow) => {\n const diff = Math.max(0, clipX - drawX);\n const finalX = drawX + diff + 1;\n const finalWidth = c.width - diff - 1;\n for (let i = 0; i < damage.length; i++) {\n const d = damage[i];\n if (d[0] === c.sourceIndex && (d[1] === -1 || d[1] === void 0)) {\n ctx.rect(finalX, groupHeaderHeight, finalWidth, totalHeaderHeight - groupHeaderHeight);\n break;\n }\n }\n if (!includeCells)\n return;\n walkRowsInCol(\n startRow,\n colDrawY,\n height,\n rows,\n getRowHeight,\n trailingRowType,\n (drawY, row, rh, isSticky) => {\n let isDamaged = false;\n for (let i = 0; i < damage.length; i++) {\n const d = damage[i];\n if (d[0] === c.sourceIndex && d[1] === row) {\n isDamaged = true;\n break;\n }\n }\n if (isDamaged) {\n const top = drawY + 1;\n const bottom = isSticky ? top + rh - 1 : Math.min(top + rh - 1, height - stickyRowHeight);\n const h = bottom - top;\n if (h > 0) {\n ctx.rect(finalX, top, finalWidth, h);\n }\n }\n }\n );\n }\n );\n ctx.clip();\n}\nfunction getSpanBounds(span, cellX, cellY, cellW, cellH, column, allColumns) {\n var _a, _b;\n const [startCol, endCol] = span;\n let frozenRect;\n let contentRect;\n const firstNonSticky = (_b = (_a = allColumns.find((x) => !x.sticky)) == null ? void 0 : _a.sourceIndex) != null ? _b : 0;\n if (endCol > firstNonSticky) {\n const renderFromCol = Math.max(startCol, firstNonSticky);\n let tempX = cellX;\n let tempW = cellW;\n for (let x = column.sourceIndex - 1; x >= renderFromCol; x--) {\n tempX -= allColumns[x].width;\n tempW += allColumns[x].width;\n }\n for (let x = column.sourceIndex + 1; x <= endCol; x++) {\n tempW += allColumns[x].width;\n }\n contentRect = {\n x: tempX,\n y: cellY,\n width: tempW,\n height: cellH\n };\n }\n if (firstNonSticky > startCol) {\n const renderToCol = Math.min(endCol, firstNonSticky - 1);\n let tempX = cellX;\n let tempW = cellW;\n for (let x = column.sourceIndex - 1; x >= startCol; x--) {\n tempX -= allColumns[x].width;\n tempW += allColumns[x].width;\n }\n for (let x = column.sourceIndex + 1; x <= renderToCol; x++) {\n tempW += allColumns[x].width;\n }\n frozenRect = {\n x: tempX,\n y: cellY,\n width: tempW,\n height: cellH\n };\n }\n return [frozenRect, contentRect];\n}\nfunction drawCells(ctx, effectiveColumns, allColumns, height, totalHeaderHeight, translateX, translateY, cellYOffset, rows, getRowHeight, getCellContent, getGroupDetails, getRowThemeOverride, disabledRows, isFocused, drawFocus, trailingRowType, drawRegions, damage, selection, prelightCells, highlightRegions, drawCustomCell, imageLoader, spriteManager, hoverValues, hoverInfo, hyperWrapping, outerTheme, enqueue, getCellRenderer) {\n var _a;\n let toDraw = (_a = damage == null ? void 0 : damage.length) != null ? _a : Number.MAX_SAFE_INTEGER;\n const frameTime = performance.now();\n let font = `${outerTheme.baseFontStyle} ${outerTheme.fontFamily}`;\n ctx.font = font;\n let result;\n const handledSpans = /* @__PURE__ */ new Set();\n walkColumns(\n effectiveColumns,\n cellYOffset,\n translateX,\n translateY,\n totalHeaderHeight,\n (c, drawX, colDrawStartY, clipX, startRow) => {\n var _a2;\n const diff = Math.max(0, clipX - drawX);\n const colDrawX = drawX + diff;\n const colDrawY = totalHeaderHeight + 1;\n const colWidth = c.width - diff;\n const colHeight = height - totalHeaderHeight - 1;\n if (drawRegions.length > 0) {\n let found = false;\n for (let i = 0; i < drawRegions.length; i++) {\n const dr = drawRegions[i];\n if (intersectRect(colDrawX, colDrawY, colWidth, colHeight, dr.x, dr.y, dr.width, dr.height)) {\n found = true;\n break;\n }\n }\n if (!found)\n return;\n }\n const reclip = () => {\n ctx.save();\n ctx.beginPath();\n ctx.rect(colDrawX, colDrawY, colWidth, colHeight);\n ctx.clip();\n };\n const colSelected = selection.columns.hasIndex(c.sourceIndex);\n const groupTheme = getGroupDetails((_a2 = c.group) != null ? _a2 : \"\").overrideTheme;\n const colTheme = c.themeOverride === void 0 && groupTheme === void 0 ? outerTheme : { ...outerTheme, ...groupTheme, ...c.themeOverride };\n const colFont = `${colTheme.baseFontStyle} ${colTheme.fontFamily}`;\n if (colFont !== font) {\n font = colFont;\n ctx.font = colFont;\n }\n reclip();\n let prepResult = void 0;\n walkRowsInCol(\n startRow,\n colDrawStartY,\n height,\n rows,\n getRowHeight,\n trailingRowType,\n (drawY, row, rh, isSticky, isTrailingRow) => {\n var _a3, _b, _c, _d;\n if (row < 0)\n return;\n if (damage !== void 0) {\n let found = false;\n for (let i = 0; i < damage.length; i++) {\n const d = damage[i];\n if (d[0] === c.sourceIndex && d[1] === row) {\n found = true;\n break;\n }\n }\n if (!found)\n return;\n }\n if (drawRegions.length > 0) {\n let found = false;\n for (let i = 0; i < drawRegions.length; i++) {\n const dr = drawRegions[i];\n if (intersectRect(drawX, drawY, c.width, rh, dr.x, dr.y, dr.width, dr.height)) {\n found = true;\n break;\n }\n }\n if (!found)\n return;\n }\n const rowSelected = selection.rows.hasIndex(row);\n const rowDisabled = disabledRows.hasIndex(row);\n const cell = row < rows ? getCellContent([c.sourceIndex, row]) : loadingCell;\n let cellX = drawX;\n let cellWidth = c.width;\n let drawingSpan = false;\n let skipContents = false;\n if (cell.span !== void 0) {\n const [startCol, endCol] = cell.span;\n const spanKey = `${row},${startCol},${endCol},${c.sticky}`;\n if (!handledSpans.has(spanKey)) {\n const areas = getSpanBounds(cell.span, drawX, drawY, c.width, rh, c, allColumns);\n const area = c.sticky ? areas[0] : areas[1];\n if (!c.sticky && areas[0] !== void 0) {\n skipContents = true;\n }\n if (area !== void 0) {\n cellX = area.x;\n cellWidth = area.width;\n handledSpans.add(spanKey);\n ctx.restore();\n prepResult = void 0;\n ctx.save();\n ctx.beginPath();\n const d = Math.max(0, clipX - area.x);\n ctx.rect(area.x + d, drawY, area.width - d, rh);\n if (result === void 0) {\n result = [];\n }\n result.push({\n x: area.x + d,\n y: drawY,\n width: area.width - d,\n height: rh\n });\n ctx.clip();\n drawingSpan = true;\n }\n } else {\n toDraw--;\n return;\n }\n }\n const rowTheme = getRowThemeOverride == null ? void 0 : getRowThemeOverride(row);\n const trailingTheme = isTrailingRow && ((_a3 = c.trailingRowOptions) == null ? void 0 : _a3.themeOverride) !== void 0 ? (_b = c.trailingRowOptions) == null ? void 0 : _b.themeOverride : void 0;\n const theme = cell.themeOverride === void 0 && rowTheme === void 0 && trailingTheme === void 0 ? colTheme : { ...colTheme, ...rowTheme, ...trailingTheme, ...cell.themeOverride };\n ctx.beginPath();\n const cellIndex = [c.sourceIndex, row];\n const isSelected = cellIsSelected(cellIndex, cell, selection);\n let accentCount = cellIsInRange(cellIndex, cell, selection);\n const spanIsHighlighted = cell.span !== void 0 && selection.columns.some(\n (index) => cell.span !== void 0 && index >= cell.span[0] && index <= cell.span[1]\n );\n if (isSelected && !isFocused && drawFocus) {\n accentCount = 0;\n } else if (isSelected) {\n accentCount = Math.max(accentCount, 1);\n }\n if (spanIsHighlighted) {\n accentCount++;\n }\n if (!isSelected) {\n if (rowSelected)\n accentCount++;\n if (colSelected && !isSticky)\n accentCount++;\n }\n const bgCell = cell.kind === GridCellKind.Protected ? theme.bgCellMedium : theme.bgCell;\n let fill;\n if (isSticky || bgCell !== outerTheme.bgCell) {\n fill = blend(bgCell, fill);\n }\n if (accentCount > 0 || rowDisabled) {\n if (rowDisabled) {\n fill = blend(theme.bgHeader, fill);\n }\n for (let i = 0; i < accentCount; i++) {\n fill = blend(theme.accentLight, fill);\n }\n } else {\n if ((prelightCells == null ? void 0 : prelightCells.some((pre) => pre[0] === c.sourceIndex && pre[1] === row)) === true) {\n fill = blend(theme.bgSearchResult, fill);\n }\n }\n if (highlightRegions !== void 0) {\n for (const region of highlightRegions) {\n const r = region.range;\n if (r.x <= c.sourceIndex && c.sourceIndex < r.x + r.width && r.y <= row && row < r.y + r.height) {\n fill = blend(region.color, fill);\n }\n }\n }\n if (fill !== void 0) {\n ctx.fillStyle = fill;\n if (prepResult !== void 0) {\n prepResult.fillStyle = fill;\n }\n ctx.fillRect(cellX, drawY, cellWidth, rh);\n }\n if (cell.style === \"faded\") {\n ctx.globalAlpha = 0.6;\n }\n const hoverValue = hoverValues.find((hv) => hv.item[0] === c.sourceIndex && hv.item[1] === row);\n if (cellWidth > 10 && !skipContents) {\n const cellFont = `${theme.baseFontStyle} ${theme.fontFamily}`;\n if (cellFont !== font) {\n ctx.font = cellFont;\n font = cellFont;\n }\n prepResult = drawCell(\n ctx,\n row,\n cell,\n c.sourceIndex,\n cellX,\n drawY,\n cellWidth,\n rh,\n accentCount > 0,\n theme,\n drawCustomCell,\n imageLoader,\n spriteManager,\n (_c = hoverValue == null ? void 0 : hoverValue.hoverAmount) != null ? _c : 0,\n hoverInfo,\n hyperWrapping,\n frameTime,\n prepResult,\n enqueue,\n getCellRenderer\n );\n }\n if (cell.style === \"faded\") {\n ctx.globalAlpha = 1;\n }\n toDraw--;\n if (drawingSpan) {\n ctx.restore();\n (_d = prepResult == null ? void 0 : prepResult.deprep) == null ? void 0 : _d.call(prepResult, { ctx });\n prepResult = void 0;\n reclip();\n font = colFont;\n ctx.font = colFont;\n }\n return toDraw <= 0;\n }\n );\n ctx.restore();\n return toDraw <= 0;\n }\n );\n return result;\n}\nfunction drawBlanks(ctx, effectiveColumns, allColumns, width, height, totalHeaderHeight, translateX, translateY, cellYOffset, rows, getRowHeight, getRowTheme, selectedRows, disabledRows, trailingRowType, drawRegions, damage, theme) {\n if (damage !== void 0 || effectiveColumns[effectiveColumns.length - 1] !== allColumns[effectiveColumns.length - 1])\n return;\n walkColumns(\n effectiveColumns,\n cellYOffset,\n translateX,\n translateY,\n totalHeaderHeight,\n (c, drawX, colDrawY, clipX, startRow) => {\n if (c !== effectiveColumns[effectiveColumns.length - 1])\n return;\n drawX += c.width;\n const x = Math.max(drawX, clipX);\n if (x > width)\n return;\n ctx.save();\n ctx.beginPath();\n ctx.rect(x, totalHeaderHeight + 1, 1e4, height - totalHeaderHeight - 1);\n ctx.clip();\n walkRowsInCol(\n startRow,\n colDrawY,\n height,\n rows,\n getRowHeight,\n trailingRowType,\n (drawY, row, rh, isSticky) => {\n if (!isSticky && drawRegions.length > 0 && !drawRegions.some(\n (dr) => intersectRect(drawX, drawY, 1e4, rh, dr.x, dr.y, dr.width, dr.height)\n )) {\n return;\n }\n const rowSelected = selectedRows.hasIndex(row);\n const rowDisabled = disabledRows.hasIndex(row);\n ctx.beginPath();\n const rowTheme = getRowTheme == null ? void 0 : getRowTheme(row);\n const blankTheme = rowTheme === void 0 ? theme : { ...theme, ...rowTheme };\n if (blankTheme.bgCell !== theme.bgCell) {\n ctx.fillStyle = blankTheme.bgCell;\n ctx.fillRect(drawX, drawY, 1e4, rh);\n }\n if (rowDisabled) {\n ctx.fillStyle = blankTheme.bgHeader;\n ctx.fillRect(drawX, drawY, 1e4, rh);\n }\n if (rowSelected) {\n ctx.fillStyle = blankTheme.accentLight;\n ctx.fillRect(drawX, drawY, 1e4, rh);\n }\n }\n );\n ctx.restore();\n }\n );\n}\nfunction overdrawStickyBoundaries(ctx, effectiveCols, width, height, lastRowSticky, rows, verticalBorder, getRowHeight, theme) {\n var _a;\n let drawFreezeBorder = false;\n for (const c of effectiveCols) {\n if (c.sticky)\n continue;\n drawFreezeBorder = verticalBorder(c.sourceIndex);\n break;\n }\n const hColor = (_a = theme.horizontalBorderColor) != null ? _a : theme.borderColor;\n const vColor = theme.borderColor;\n const drawX = drawFreezeBorder ? getStickyWidth(effectiveCols) : 0;\n if (drawX !== 0) {\n ctx.beginPath();\n ctx.moveTo(drawX + 0.5, 0);\n ctx.lineTo(drawX + 0.5, height);\n ctx.strokeStyle = blend(vColor, theme.bgCell);\n ctx.stroke();\n }\n if (lastRowSticky) {\n const h = getRowHeight(rows - 1);\n ctx.beginPath();\n ctx.moveTo(0, height - h + 0.5);\n ctx.lineTo(width, height - h + 0.5);\n ctx.strokeStyle = blend(hColor, theme.bgCell);\n ctx.stroke();\n }\n}\nfunction drawHighlightRings(ctx, width, height, cellXOffset, cellYOffset, translateX, translateY, mappedColumns, freezeColumns, headerHeight, groupHeaderHeight, rowHeight, lastRowSticky, rows, allHighlightRegions) {\n const highlightRegions = allHighlightRegions == null ? void 0 : allHighlightRegions.filter((x) => x.style !== \"no-outline\");\n if (highlightRegions === void 0 || highlightRegions.length === 0)\n return void 0;\n const drawRects = highlightRegions.map((h) => {\n var _a, _b, _c, _d, _e;\n const r = h.range;\n const topLeftBounds = computeBounds(\n r.x,\n r.y,\n width,\n height,\n groupHeaderHeight,\n headerHeight + groupHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n lastRowSticky,\n mappedColumns,\n rowHeight\n );\n if (r.width === 1 && r.height === 1) {\n if (r.x < freezeColumns) {\n return [{ color: h.color, style: (_a = h.style) != null ? _a : \"dashed\", rect: topLeftBounds }, void 0];\n }\n return [void 0, { color: h.color, style: (_b = h.style) != null ? _b : \"dashed\", rect: topLeftBounds }];\n }\n const bottomRightBounds = computeBounds(\n r.x + r.width - 1,\n r.y + r.height - 1,\n width,\n height,\n groupHeaderHeight,\n headerHeight + groupHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n lastRowSticky,\n mappedColumns,\n rowHeight\n );\n if (r.x < freezeColumns && r.x + r.width >= freezeColumns) {\n const freezeSectionRightBounds = computeBounds(\n freezeColumns - 1,\n r.y + r.height - 1,\n width,\n height,\n groupHeaderHeight,\n headerHeight + groupHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n lastRowSticky,\n mappedColumns,\n rowHeight\n );\n const unfreezeSectionleftBounds = computeBounds(\n freezeColumns,\n r.y + r.height - 1,\n width,\n height,\n groupHeaderHeight,\n headerHeight + groupHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n lastRowSticky,\n mappedColumns,\n rowHeight\n );\n return [\n {\n color: h.color,\n style: (_c = h.style) != null ? _c : \"dashed\",\n rect: {\n x: topLeftBounds.x,\n y: topLeftBounds.y,\n width: freezeSectionRightBounds.x + freezeSectionRightBounds.width - topLeftBounds.x,\n height: freezeSectionRightBounds.y + freezeSectionRightBounds.height - topLeftBounds.y\n }\n },\n {\n color: h.color,\n style: (_d = h.style) != null ? _d : \"dashed\",\n rect: {\n x: unfreezeSectionleftBounds.x,\n y: unfreezeSectionleftBounds.y,\n width: bottomRightBounds.x + bottomRightBounds.width - unfreezeSectionleftBounds.x,\n height: bottomRightBounds.y + bottomRightBounds.height - unfreezeSectionleftBounds.y\n }\n }\n ];\n } else {\n return [\n void 0,\n {\n color: h.color,\n style: (_e = h.style) != null ? _e : \"dashed\",\n rect: {\n x: topLeftBounds.x,\n y: topLeftBounds.y,\n width: bottomRightBounds.x + bottomRightBounds.width - topLeftBounds.x,\n height: bottomRightBounds.y + bottomRightBounds.height - topLeftBounds.y\n }\n }\n ];\n }\n });\n const stickyWidth = getStickyWidth(mappedColumns);\n const drawCb = () => {\n ctx.beginPath();\n ctx.save();\n let dashed = false;\n const setDashed = (dash) => {\n if (dashed === dash)\n return;\n ctx.setLineDash(dash ? [5, 3] : []);\n dashed = dash;\n };\n ctx.lineWidth = 1;\n for (const dr of drawRects) {\n const [s] = dr;\n if (s !== void 0 && intersectRect(0, 0, width, height, s.rect.x, s.rect.y, s.rect.width, s.rect.height)) {\n setDashed(s.style === \"dashed\");\n ctx.strokeStyle = withAlpha(s.color, 1);\n ctx.strokeRect(s.rect.x + 1, s.rect.y + 1, s.rect.width - 2, s.rect.height - 2);\n }\n }\n let clipped = false;\n for (const dr of drawRects) {\n const [, s] = dr;\n if (s !== void 0 && intersectRect(0, 0, width, height, s.rect.x, s.rect.y, s.rect.width, s.rect.height)) {\n setDashed(s.style === \"dashed\");\n if (!clipped && s.rect.x < stickyWidth) {\n ctx.rect(stickyWidth, 0, width, height);\n ctx.clip();\n clipped = true;\n }\n ctx.strokeStyle = withAlpha(s.color, 1);\n ctx.strokeRect(s.rect.x + 1, s.rect.y + 1, s.rect.width - 2, s.rect.height - 2);\n }\n }\n ctx.restore();\n };\n drawCb();\n return drawCb;\n}\nfunction drawFocusRing(ctx, width, height, cellYOffset, translateX, translateY, effectiveCols, allColumns, theme, totalHeaderHeight, selectedCell, getRowHeight, getCellContent, trailingRowType, fillHandle, rows) {\n var _a;\n if (selectedCell.current === void 0 || !effectiveCols.some((c) => {\n var _a2;\n return c.sourceIndex === ((_a2 = selectedCell.current) == null ? void 0 : _a2.cell[0]);\n }))\n return void 0;\n const [targetCol, targetRow] = selectedCell.current.cell;\n const cell = getCellContent(selectedCell.current.cell);\n const targetColSpan = (_a = cell.span) != null ? _a : [targetCol, targetCol];\n const isStickyRow = trailingRowType === \"sticky\" && targetRow === rows - 1;\n const stickRowHeight = trailingRowType === \"sticky\" && !isStickyRow ? getRowHeight(rows - 1) - 1 : 0;\n let drawCb = void 0;\n walkColumns(\n effectiveCols,\n cellYOffset,\n translateX,\n translateY,\n totalHeaderHeight,\n (col, drawX, colDrawY, clipX, startRow) => {\n if (col.sticky && targetCol > col.sourceIndex)\n return;\n if (col.sourceIndex < targetColSpan[0] || col.sourceIndex > targetColSpan[1]) {\n return;\n }\n walkRowsInCol(startRow, colDrawY, height, rows, getRowHeight, trailingRowType, (drawY, row, rh) => {\n if (row !== targetRow)\n return;\n let cellX = drawX;\n let cellWidth = col.width;\n if (cell.span !== void 0) {\n const areas = getSpanBounds(cell.span, drawX, drawY, col.width, rh, col, allColumns);\n const area = col.sticky ? areas[0] : areas[1];\n if (area !== void 0) {\n cellX = area.x;\n cellWidth = area.width;\n }\n }\n drawCb = () => {\n var _a2, _b, _c, _d;\n if (clipX > cellX && !col.sticky) {\n ctx.beginPath();\n ctx.rect(clipX, 0, width - clipX, height);\n ctx.clip();\n }\n ctx.beginPath();\n ctx.rect(cellX + 0.5, drawY + 0.5, cellWidth, rh);\n ctx.strokeStyle = (_b = (_a2 = col.themeOverride) == null ? void 0 : _a2.accentColor) != null ? _b : theme.accentColor;\n ctx.lineWidth = 1;\n ctx.stroke();\n if (fillHandle) {\n ctx.beginPath();\n ctx.rect(cellX + cellWidth - 4, drawY + rh - 4, 4, 4);\n ctx.fillStyle = (_d = (_c = col.themeOverride) == null ? void 0 : _c.accentColor) != null ? _d : theme.accentColor;\n ctx.fill();\n }\n };\n return true;\n });\n return true;\n }\n );\n if (drawCb === void 0)\n return void 0;\n const result = () => {\n ctx.save();\n ctx.beginPath();\n ctx.rect(0, totalHeaderHeight, width, height - totalHeaderHeight - stickRowHeight);\n ctx.clip();\n drawCb == null ? void 0 : drawCb();\n ctx.restore();\n };\n result();\n return result;\n}\nfunction getLastRow(effectiveColumns, height, totalHeaderHeight, translateX, translateY, cellYOffset, rows, getRowHeight, trailingRowType) {\n let result = 0;\n walkColumns(\n effectiveColumns,\n cellYOffset,\n translateX,\n translateY,\n totalHeaderHeight,\n (_c, __drawX, colDrawY, _clipX, startRow) => {\n walkRowsInCol(\n startRow,\n colDrawY,\n height,\n rows,\n getRowHeight,\n trailingRowType,\n (_drawY, row, _rh, isSticky) => {\n if (!isSticky) {\n result = Math.max(row, result);\n }\n }\n );\n return true;\n }\n );\n return result;\n}\nfunction computeCanBlit(current, last) {\n if (last === void 0)\n return false;\n if (current.width !== last.width || current.height !== last.height || current.theme !== last.theme || current.headerHeight !== last.headerHeight || current.rowHeight !== last.rowHeight || current.rows !== last.rows || current.getRowThemeOverride !== last.getRowThemeOverride || current.isFocused !== last.isFocused || current.isResizing !== last.isResizing || current.verticalBorder !== last.verticalBorder || current.getCellContent !== last.getCellContent || current.highlightRegions !== last.highlightRegions || current.selection !== last.selection || current.dragAndDropState !== last.dragAndDropState || current.prelightCells !== last.prelightCells || current.touchMode !== last.touchMode || current.scrolling !== last.scrolling) {\n return false;\n }\n if (current.mappedColumns !== last.mappedColumns) {\n if (current.mappedColumns.length > 100 || current.mappedColumns.length !== last.mappedColumns.length) {\n return false;\n }\n let resized;\n for (let i = 0; i < current.mappedColumns.length; i++) {\n const curCol = current.mappedColumns[i];\n const lastCol = last.mappedColumns[i];\n if (deepEqual(curCol, lastCol))\n continue;\n if (resized !== void 0)\n return false;\n if (curCol.width === lastCol.width)\n return false;\n const { width, ...curRest } = curCol;\n const { width: lastWidth, ...lastRest } = lastCol;\n if (!deepEqual(curRest, lastRest))\n return false;\n resized = i;\n }\n if (resized === void 0) {\n return true;\n }\n return resized;\n }\n return true;\n}\nfunction drawGrid(arg, lastArg) {\n var _a, _b;\n const {\n canvas,\n headerCanvas,\n width,\n height,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n mappedColumns,\n enableGroups,\n freezeColumns,\n dragAndDropState,\n theme,\n drawFocus,\n headerHeight,\n groupHeaderHeight,\n disabledRows,\n rowHeight,\n verticalBorder,\n isResizing,\n selection,\n fillHandle,\n lastRowSticky: trailingRowType,\n rows,\n getCellContent,\n getGroupDetails,\n getRowThemeOverride,\n isFocused,\n drawCustomCell,\n drawHeaderCallback,\n prelightCells,\n highlightRegions,\n imageLoader,\n lastBlitData,\n hoverValues,\n hyperWrapping,\n hoverInfo,\n spriteManager,\n scrolling,\n touchMode,\n enqueue,\n getCellRenderer,\n renderStrategy,\n bufferA,\n bufferB\n } = arg;\n let { damage } = arg;\n if (width === 0 || height === 0)\n return;\n const doubleBuffer = renderStrategy === \"double-buffer\";\n const dpr = scrolling ? 1 : Math.ceil((_a = window.devicePixelRatio) != null ? _a : 1);\n const canBlit = renderStrategy !== \"direct\" && computeCanBlit(arg, lastArg);\n if (canvas.width !== width * dpr || canvas.height !== height * dpr) {\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvas.style.width = width + \"px\";\n canvas.style.height = height + \"px\";\n }\n const overlayCanvas = headerCanvas;\n const totalHeaderHeight = enableGroups ? groupHeaderHeight + headerHeight : headerHeight;\n const overlayHeight = totalHeaderHeight + 1;\n if (overlayCanvas.width !== width * dpr || overlayCanvas.height !== overlayHeight * dpr) {\n overlayCanvas.width = width * dpr;\n overlayCanvas.height = overlayHeight * dpr;\n overlayCanvas.style.width = width + \"px\";\n overlayCanvas.style.height = overlayHeight + \"px\";\n }\n if (doubleBuffer && (bufferA.width !== width * dpr || bufferA.height !== height * dpr)) {\n bufferA.width = width * dpr;\n bufferA.height = height * dpr;\n }\n if (doubleBuffer && (bufferB.width !== width * dpr || bufferB.height !== height * dpr)) {\n bufferB.width = width * dpr;\n bufferB.height = height * dpr;\n }\n const last = lastBlitData.current;\n if (canBlit === true && cellXOffset === (last == null ? void 0 : last.cellXOffset) && cellYOffset === (last == null ? void 0 : last.cellYOffset) && translateX === (last == null ? void 0 : last.translateX) && translateY === (last == null ? void 0 : last.translateY))\n return;\n let mainCtx = null;\n if (doubleBuffer) {\n mainCtx = canvas.getContext(\"2d\", {\n alpha: false\n });\n }\n const overlayCtx = overlayCanvas.getContext(\"2d\", {\n alpha: false\n });\n let targetBuffer;\n if (!doubleBuffer) {\n targetBuffer = canvas;\n } else if (damage !== void 0) {\n targetBuffer = (last == null ? void 0 : last.lastBuffer) === \"b\" ? bufferB : bufferA;\n } else {\n targetBuffer = (last == null ? void 0 : last.lastBuffer) === \"b\" ? bufferA : bufferB;\n }\n const targetCtx = targetBuffer.getContext(\"2d\", {\n alpha: false\n });\n const blitSource = doubleBuffer ? targetBuffer === bufferA ? bufferB : bufferA : canvas;\n if (overlayCtx === null || targetCtx === null)\n return;\n const getRowHeight = typeof rowHeight === \"number\" ? () => rowHeight : rowHeight;\n overlayCtx.save();\n overlayCtx.beginPath();\n targetCtx.save();\n targetCtx.beginPath();\n overlayCtx.textBaseline = \"middle\";\n targetCtx.textBaseline = \"middle\";\n if (dpr !== 1) {\n overlayCtx.scale(dpr, dpr);\n targetCtx.scale(dpr, dpr);\n }\n const effectiveCols = getEffectiveColumns(mappedColumns, cellXOffset, width, dragAndDropState, translateX);\n let drawRegions = [];\n const mustDrawFocusOnHeader = drawFocus && ((_b = selection.current) == null ? void 0 : _b.cell[1]) === cellYOffset && translateY === 0;\n const drawHeaderTexture = () => {\n var _a2, _b2;\n drawGridHeaders(\n overlayCtx,\n effectiveCols,\n enableGroups,\n hoverInfo,\n width,\n translateX,\n headerHeight,\n groupHeaderHeight,\n dragAndDropState,\n isResizing,\n selection,\n theme,\n spriteManager,\n hoverValues,\n verticalBorder,\n getGroupDetails,\n damage,\n drawHeaderCallback,\n touchMode\n );\n drawGridLines(\n overlayCtx,\n effectiveCols,\n cellYOffset,\n translateX,\n translateY,\n width,\n height,\n void 0,\n void 0,\n groupHeaderHeight,\n totalHeaderHeight,\n getRowHeight,\n getRowThemeOverride,\n verticalBorder,\n trailingRowType,\n rows,\n theme,\n true\n );\n overlayCtx.beginPath();\n overlayCtx.moveTo(0, overlayHeight - 0.5);\n overlayCtx.lineTo(width, overlayHeight - 0.5);\n overlayCtx.strokeStyle = blend(\n (_b2 = (_a2 = theme.headerBottomBorderColor) != null ? _a2 : theme.horizontalBorderColor) != null ? _b2 : theme.borderColor,\n theme.bgHeader\n );\n overlayCtx.stroke();\n if (mustDrawFocusOnHeader) {\n drawFocusRing(\n overlayCtx,\n width,\n height,\n cellYOffset,\n translateX,\n translateY,\n effectiveCols,\n mappedColumns,\n theme,\n totalHeaderHeight,\n selection,\n getRowHeight,\n getCellContent,\n trailingRowType,\n fillHandle,\n rows\n );\n }\n };\n if (damage !== void 0) {\n let doHeaders = false;\n damage = damage.filter((x) => {\n doHeaders = doHeaders || x[1] < 0;\n return x[1] < 0 || intersectRect(cellXOffset, cellYOffset, effectiveCols.length, 300, x[0], x[1], 1, 1) || intersectRect(0, cellYOffset, freezeColumns, 300, x[0], x[1], 1, 1) || trailingRowType && intersectRect(cellXOffset, rows - 1, effectiveCols.length, 1, x[0], x[1], 1, 1);\n });\n if (damage.length > 0) {\n clipDamage(\n targetCtx,\n effectiveCols,\n width,\n height,\n groupHeaderHeight,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n trailingRowType,\n damage,\n true\n );\n targetCtx.fillStyle = theme.bgCell;\n targetCtx.fillRect(0, totalHeaderHeight + 1, width, height - totalHeaderHeight - 1);\n drawCells(\n targetCtx,\n effectiveCols,\n mappedColumns,\n height,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n getCellContent,\n getGroupDetails,\n getRowThemeOverride,\n disabledRows,\n isFocused,\n drawFocus,\n trailingRowType,\n drawRegions,\n damage,\n selection,\n prelightCells,\n highlightRegions,\n drawCustomCell,\n imageLoader,\n spriteManager,\n hoverValues,\n hoverInfo,\n hyperWrapping,\n theme,\n enqueue,\n getCellRenderer\n );\n if (fillHandle && drawFocus && selection.current !== void 0 && damage.some((x) => {\n var _a2, _b2;\n return x[0] === ((_a2 = selection.current) == null ? void 0 : _a2.cell[0]) && x[1] === ((_b2 = selection.current) == null ? void 0 : _b2.cell[1]);\n })) {\n drawFocusRing(\n targetCtx,\n width,\n height,\n cellYOffset,\n translateX,\n translateY,\n effectiveCols,\n mappedColumns,\n theme,\n totalHeaderHeight,\n selection,\n getRowHeight,\n getCellContent,\n trailingRowType,\n fillHandle,\n rows\n );\n }\n }\n if (doHeaders) {\n clipDamage(\n overlayCtx,\n effectiveCols,\n width,\n totalHeaderHeight,\n groupHeaderHeight,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n trailingRowType,\n damage,\n false\n );\n drawHeaderTexture();\n }\n targetCtx.restore();\n overlayCtx.restore();\n if (mainCtx !== null) {\n mainCtx.fillStyle = theme.bgCell;\n mainCtx.fillRect(0, 0, width, height);\n mainCtx.drawImage(targetCtx.canvas, 0, 0);\n }\n return;\n }\n if (canBlit !== true || cellXOffset !== (last == null ? void 0 : last.cellXOffset) || translateX !== (last == null ? void 0 : last.translateX) || mustDrawFocusOnHeader !== (last == null ? void 0 : last.mustDrawFocusOnHeader)) {\n drawHeaderTexture();\n }\n if (canBlit === true) {\n assert(blitSource !== void 0 && last !== void 0);\n const { regions } = blitLastFrame(\n targetCtx,\n blitSource,\n last,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n trailingRowType === \"sticky\",\n width,\n height,\n rows,\n totalHeaderHeight,\n dpr,\n mappedColumns,\n effectiveCols,\n rowHeight,\n doubleBuffer\n );\n drawRegions = regions;\n } else if (canBlit !== false) {\n assert(last !== void 0);\n const resizedCol = canBlit;\n drawRegions = blitResizedCol(\n last,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n width,\n height,\n totalHeaderHeight,\n effectiveCols,\n resizedCol\n );\n }\n overdrawStickyBoundaries(\n targetCtx,\n effectiveCols,\n width,\n height,\n trailingRowType === \"sticky\",\n rows,\n verticalBorder,\n getRowHeight,\n theme\n );\n const focusRedraw = drawFocus ? drawFocusRing(\n targetCtx,\n width,\n height,\n cellYOffset,\n translateX,\n translateY,\n effectiveCols,\n mappedColumns,\n theme,\n totalHeaderHeight,\n selection,\n getRowHeight,\n getCellContent,\n trailingRowType,\n fillHandle,\n rows\n ) : void 0;\n const highlightRedraw = drawHighlightRings(\n targetCtx,\n width,\n height,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n mappedColumns,\n freezeColumns,\n headerHeight,\n groupHeaderHeight,\n rowHeight,\n trailingRowType === \"sticky\",\n rows,\n highlightRegions\n );\n targetCtx.fillStyle = theme.bgCell;\n if (drawRegions.length > 0) {\n targetCtx.beginPath();\n for (const r of drawRegions) {\n targetCtx.rect(r.x, r.y, r.width, r.height);\n }\n targetCtx.clip();\n targetCtx.fill();\n targetCtx.beginPath();\n } else {\n targetCtx.fillRect(0, 0, width, height);\n }\n const spans = drawCells(\n targetCtx,\n effectiveCols,\n mappedColumns,\n height,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n getCellContent,\n getGroupDetails,\n getRowThemeOverride,\n disabledRows,\n isFocused,\n drawFocus,\n trailingRowType,\n drawRegions,\n damage,\n selection,\n prelightCells,\n highlightRegions,\n drawCustomCell,\n imageLoader,\n spriteManager,\n hoverValues,\n hoverInfo,\n hyperWrapping,\n theme,\n enqueue,\n getCellRenderer\n );\n drawBlanks(\n targetCtx,\n effectiveCols,\n mappedColumns,\n width,\n height,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n getRowThemeOverride,\n selection.rows,\n disabledRows,\n trailingRowType,\n drawRegions,\n damage,\n theme\n );\n drawGridLines(\n targetCtx,\n effectiveCols,\n cellYOffset,\n translateX,\n translateY,\n width,\n height,\n drawRegions,\n spans,\n groupHeaderHeight,\n totalHeaderHeight,\n getRowHeight,\n getRowThemeOverride,\n verticalBorder,\n trailingRowType,\n rows,\n theme\n );\n focusRedraw == null ? void 0 : focusRedraw();\n highlightRedraw == null ? void 0 : highlightRedraw();\n if (mainCtx !== null) {\n mainCtx.fillStyle = theme.bgCell;\n mainCtx.fillRect(0, 0, width, height);\n mainCtx.drawImage(targetCtx.canvas, 0, 0);\n }\n const lastRowDrawn = getLastRow(\n effectiveCols,\n height,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n trailingRowType\n );\n imageLoader == null ? void 0 : imageLoader.setWindow(\n {\n x: cellXOffset,\n y: cellYOffset,\n width: effectiveCols.length,\n height: lastRowDrawn - cellYOffset\n },\n freezeColumns\n );\n lastBlitData.current = {\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n mustDrawFocusOnHeader,\n lastBuffer: doubleBuffer ? targetBuffer === bufferA ? \"a\" : \"b\" : void 0\n };\n targetCtx.restore();\n overlayCtx.restore();\n}\nfunction walkRowsInCol(startRow, drawY, height, rows, getRowHeight, trailingRowType, cb) {\n let y = drawY;\n let row = startRow;\n let doSticky = trailingRowType === \"sticky\";\n while (y < height || doSticky) {\n const doingSticky = doSticky && y >= height;\n if (doingSticky) {\n doSticky = false;\n row = rows - 1;\n }\n const rh = getRowHeight(row);\n if (doingSticky) {\n y = height - rh;\n }\n const isMovedStickyRow = doSticky && row === rows - 1;\n if (!isMovedStickyRow && cb(y, row, rh, doingSticky, trailingRowType !== \"none\" && row === rows - 1) === true) {\n break;\n }\n if (doingSticky) {\n break;\n }\n y += rh;\n row++;\n }\n}\nfunction walkColumns(effectiveCols, cellYOffset, translateX, translateY, totalHeaderHeight, cb) {\n let x = 0;\n let clipX = 0;\n const drawY = totalHeaderHeight + translateY;\n for (const c of effectiveCols) {\n const drawX = c.sticky ? clipX : x + translateX;\n if (cb(c, drawX, drawY, clipX, cellYOffset) === true) {\n break;\n }\n x += c.width;\n clipX += c.sticky ? c.width : 0;\n }\n}\nfunction walkGroups(effectiveCols, width, translateX, groupHeaderHeight, cb) {\n var _a;\n let x = 0;\n let clipX = 0;\n for (let index = 0; index < effectiveCols.length; index++) {\n const startCol = effectiveCols[index];\n let end = index + 1;\n let boxWidth = startCol.width;\n if (startCol.sticky) {\n clipX += boxWidth;\n }\n while (end < effectiveCols.length && isGroupEqual(effectiveCols[end].group, startCol.group) && effectiveCols[end].sticky === effectiveCols[index].sticky) {\n const endCol = effectiveCols[end];\n boxWidth += endCol.width;\n end++;\n index++;\n if (endCol.sticky) {\n clipX += endCol.width;\n }\n }\n const t = startCol.sticky ? 0 : translateX;\n const localX = x + t;\n const delta = startCol.sticky ? 0 : Math.max(0, clipX - localX);\n const w = Math.min(boxWidth - delta, width - (localX + delta));\n cb(\n [startCol.sourceIndex, effectiveCols[end - 1].sourceIndex],\n (_a = startCol.group) != null ? _a : \"\",\n localX + delta,\n 0,\n w,\n groupHeaderHeight\n );\n x += boxWidth;\n }\n}\n\n// src/data-grid/animation-manager.ts\nimport clamp from \"lodash/clamp.js\";\nvar hoverTime = 80;\nfunction easeOutCubic(x) {\n const x1 = x - 1;\n return x1 * x1 * x1 + 1;\n}\nvar AnimationManager = class {\n constructor(callback) {\n this.currentHoveredItem = void 0;\n this.leavingItems = [];\n this.areSameItems = (left, right) => {\n return (left == null ? void 0 : left[0]) === (right == null ? void 0 : right[0]) && (left == null ? void 0 : left[1]) === (right == null ? void 0 : right[1]);\n };\n this.addToLeavingItems = (item) => {\n const isAlreadyLeaving = this.leavingItems.some((i) => this.areSameItems(i.item, item.item));\n if (isAlreadyLeaving) {\n return;\n }\n this.leavingItems.push(item);\n };\n /**\n * @returns the hover amount of the item, if it was leaving (0 if not).\n */\n this.removeFromLeavingItems = (item) => {\n var _a;\n const leavingItem = this.leavingItems.find((e) => this.areSameItems(e.item, item));\n this.leavingItems = this.leavingItems.filter((i) => i !== leavingItem);\n return (_a = leavingItem == null ? void 0 : leavingItem.hoverAmount) != null ? _a : 0;\n };\n this.cleanUpLeavingElements = () => {\n this.leavingItems = this.leavingItems.filter((i) => i.hoverAmount > 0);\n };\n this.shouldStep = () => {\n const hasLeavingItems = this.leavingItems.length > 0;\n const currentHoveredIsAnimating = this.currentHoveredItem !== void 0 && this.currentHoveredItem.hoverAmount < 1;\n return hasLeavingItems || currentHoveredIsAnimating;\n };\n this.getAnimatingItems = () => {\n if (this.currentHoveredItem !== void 0) {\n return [...this.leavingItems, this.currentHoveredItem];\n }\n return this.leavingItems.map((x) => ({ ...x, hoverAmount: easeOutCubic(x.hoverAmount) }));\n };\n this.step = (timestamp) => {\n if (this.lastAnimationTime === void 0) {\n this.lastAnimationTime = timestamp;\n } else {\n const step = timestamp - this.lastAnimationTime;\n const delta = step / hoverTime;\n for (const item of this.leavingItems) {\n item.hoverAmount = clamp(item.hoverAmount - delta, 0, 1);\n }\n if (this.currentHoveredItem !== void 0) {\n this.currentHoveredItem.hoverAmount = clamp(this.currentHoveredItem.hoverAmount + delta, 0, 1);\n }\n const animating = this.getAnimatingItems();\n this.callback(animating);\n this.cleanUpLeavingElements();\n }\n if (this.shouldStep()) {\n this.lastAnimationTime = timestamp;\n window.requestAnimationFrame(this.step);\n } else {\n this.lastAnimationTime = void 0;\n }\n };\n this.setHovered = (item) => {\n var _a;\n if (this.areSameItems((_a = this.currentHoveredItem) == null ? void 0 : _a.item, item)) {\n return;\n }\n if (this.currentHoveredItem !== void 0) {\n this.addToLeavingItems(this.currentHoveredItem);\n }\n if (item !== void 0) {\n const hoverAmount = this.removeFromLeavingItems(item);\n this.currentHoveredItem = {\n item,\n hoverAmount\n };\n } else {\n this.currentHoveredItem = void 0;\n }\n if (this.lastAnimationTime === void 0) {\n window.requestAnimationFrame(this.step);\n }\n };\n this.callback = callback;\n }\n};\n\n// src/common/browser-detect.ts\nvar Lazy = class {\n constructor(fn) {\n this.fn = fn;\n }\n get value() {\n var _a;\n return (_a = this.val) != null ? _a : this.val = this.fn();\n }\n};\nfunction lazy(fn) {\n return new Lazy(fn);\n}\nvar browserIsFirefox = lazy(() => window.navigator.userAgent.includes(\"Firefox\"));\nvar browserIsSafari = lazy(\n () => window.navigator.userAgent.includes(\"Mac OS\") && window.navigator.userAgent.includes(\"Safari\") && !window.navigator.userAgent.includes(\"Chrome\")\n);\nvar browserIsOSX = lazy(() => window.navigator.platform.toLowerCase().startsWith(\"mac\"));\n\n// src/data-grid/use-animation-queue.ts\nimport * as React7 from \"react\";\nfunction hasItem(arr, item) {\n for (const element of arr) {\n if (element[0] === item[0] && element[1] === item[1])\n return true;\n }\n return false;\n}\nfunction useAnimationQueue(draw) {\n const queue = React7.useRef([]);\n const seq = React7.useRef(0);\n const drawRef = React7.useRef(draw);\n drawRef.current = draw;\n const loop = React7.useCallback(() => {\n const requeue = () => window.requestAnimationFrame(fn);\n const fn = () => {\n const toDraw = queue.current;\n queue.current = [];\n drawRef.current(toDraw);\n if (queue.current.length > 0) {\n seq.current++;\n } else {\n seq.current = 0;\n }\n };\n window.requestAnimationFrame(seq.current > 600 ? requeue : fn);\n }, []);\n return React7.useCallback(\n (item) => {\n if (hasItem(queue.current, item))\n return;\n if (queue.current.length === 0) {\n loop();\n }\n queue.current.push(item);\n },\n [loop]\n );\n}\n\n// src/data-grid/data-grid.tsx\nvar getRowData = (cell, getCellRenderer) => {\n var _a;\n if (cell.kind === GridCellKind.Custom)\n return cell.copyData;\n const r = getCellRenderer == null ? void 0 : getCellRenderer(cell);\n return (_a = r == null ? void 0 : r.getAccessibilityString(cell)) != null ? _a : \"\";\n};\nvar DataGrid = (p, forwardedRef) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const {\n width,\n height,\n accessibilityHeight,\n columns,\n cellXOffset: cellXOffsetReal,\n cellYOffset,\n headerHeight,\n fillHandle = false,\n groupHeaderHeight,\n rowHeight,\n rows,\n getCellContent,\n getRowThemeOverride,\n onHeaderMenuClick,\n enableGroups,\n isFilling,\n onCanvasFocused,\n onCanvasBlur,\n isFocused,\n selection,\n freezeColumns,\n onContextMenu,\n trailingRowType,\n fixedShadowX = true,\n fixedShadowY = true,\n drawFocusRing: drawFocusRing2 = true,\n onMouseDown,\n onMouseUp,\n onMouseMoveRaw,\n onMouseMove,\n onItemHovered,\n dragAndDropState,\n firstColAccessible,\n onKeyDown,\n onKeyUp,\n highlightRegions,\n canvasRef,\n onDragStart,\n onDragEnd,\n eventTargetRef,\n isResizing,\n isDragging,\n isDraggable = false,\n allowResize,\n disabledRows,\n getGroupDetails,\n theme,\n prelightCells,\n headerIcons,\n verticalBorder,\n drawHeader: drawHeaderCallback,\n drawCustomCell,\n onCellFocused,\n onDragOverCell,\n onDrop,\n onDragLeave,\n imageWindowLoader,\n smoothScrollX = false,\n smoothScrollY = false,\n experimental,\n getCellRenderer\n } = p;\n const translateX = (_a = p.translateX) != null ? _a : 0;\n const translateY = (_b = p.translateY) != null ? _b : 0;\n const cellXOffset = Math.max(freezeColumns, Math.min(columns.length - 1, cellXOffsetReal));\n const ref = React8.useRef(null);\n const imageWindowLoaderInternal = React8.useMemo(() => new image_window_loader_default(), []);\n const imageLoader = imageWindowLoader != null ? imageWindowLoader : imageWindowLoaderInternal;\n const damageRegion = React8.useRef();\n const [scrolling, setScrolling] = React8.useState(false);\n const hoverValues = React8.useRef([]);\n const lastBlitData = React8.useRef();\n const [hoveredItemInfo, setHoveredItemInfo] = React8.useState();\n const [hoveredOnEdge, setHoveredOnEdge] = React8.useState();\n const overlayRef = React8.useRef(null);\n const [lastWasTouch, setLastWasTouch] = React8.useState(false);\n const lastWasTouchRef = React8.useRef(lastWasTouch);\n lastWasTouchRef.current = lastWasTouch;\n const spriteManager = React8.useMemo(\n () => new SpriteManager(headerIcons, () => {\n lastArgsRef.current = void 0;\n lastDrawRef.current();\n }),\n [headerIcons]\n );\n const totalHeaderHeight = enableGroups ? groupHeaderHeight + headerHeight : headerHeight;\n const scrollingStopRef = React8.useRef(-1);\n const disableFirefoxRescaling = (experimental == null ? void 0 : experimental.enableFirefoxRescaling) !== true;\n React8.useLayoutEffect(() => {\n if (!browserIsFirefox.value || window.devicePixelRatio === 1 || disableFirefoxRescaling)\n return;\n if (scrollingStopRef.current !== -1) {\n setScrolling(true);\n }\n window.clearTimeout(scrollingStopRef.current);\n scrollingStopRef.current = window.setTimeout(() => {\n setScrolling(false);\n scrollingStopRef.current = -1;\n }, 200);\n }, [cellYOffset, cellXOffset, translateX, translateY, disableFirefoxRescaling]);\n const mappedColumns = useMappedColumns(columns, freezeColumns);\n const getBoundsForItem = React8.useCallback(\n (canvas, col, row) => {\n const rect = canvas.getBoundingClientRect();\n if (col >= mappedColumns.length || row >= rows) {\n return void 0;\n }\n const scale = rect.width / width;\n const result = computeBounds(\n col,\n row,\n width,\n height,\n groupHeaderHeight,\n totalHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n trailingRowType === \"sticky\",\n mappedColumns,\n rowHeight\n );\n if (scale !== 1) {\n result.x *= scale;\n result.y *= scale;\n result.width *= scale;\n result.height *= scale;\n }\n result.x += rect.x;\n result.y += rect.y;\n return result;\n },\n [\n width,\n height,\n groupHeaderHeight,\n totalHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n trailingRowType,\n mappedColumns,\n rowHeight\n ]\n );\n const getMouseArgsForPosition = React8.useCallback(\n (canvas, posX, posY, ev) => {\n var _a2, _b2;\n const rect = canvas.getBoundingClientRect();\n const scale = rect.width / width;\n const x = (posX - rect.left) / scale;\n const y = (posY - rect.top) / scale;\n const edgeDetectionBuffer = 5;\n const effectiveCols = getEffectiveColumns(mappedColumns, cellXOffset, width, void 0, translateX);\n let button = 0;\n if (ev instanceof MouseEvent) {\n button = ev.button;\n }\n const col = getColumnIndexForX(x, effectiveCols, translateX);\n const row = getRowIndexForY(\n y,\n height,\n enableGroups,\n headerHeight,\n groupHeaderHeight,\n rows,\n rowHeight,\n cellYOffset,\n translateY,\n trailingRowType === \"sticky\"\n );\n const shiftKey = (ev == null ? void 0 : ev.shiftKey) === true;\n const ctrlKey = (ev == null ? void 0 : ev.ctrlKey) === true;\n const metaKey = (ev == null ? void 0 : ev.metaKey) === true;\n const isTouch = ev !== void 0 && !(ev instanceof MouseEvent) || (ev == null ? void 0 : ev.pointerType) === \"touch\";\n const edgeSize = 20;\n const scrollEdge = [\n Math.abs(x) < edgeSize ? -1 : Math.abs(rect.width - x) < edgeSize ? 1 : 0,\n Math.abs(y) < edgeSize ? -1 : Math.abs(rect.height - y) < edgeSize ? 1 : 0\n ];\n let result;\n if (col === -1 || y < 0 || x < 0 || row === void 0 || x > width || y > height) {\n const horizontal = x > width ? -1 : x < 0 ? 1 : 0;\n const vertical = y > height ? 1 : y < 0 ? -1 : 0;\n let isEdge = false;\n if (col === -1 && row === -1) {\n const b = getBoundsForItem(canvas, mappedColumns.length - 1, -1);\n assert(b !== void 0);\n isEdge = posX < b.x + b.width + edgeDetectionBuffer;\n }\n const isMaybeScrollbar = x > width && x < width + getScrollBarWidth() || y > height && y < height + getScrollBarWidth();\n result = {\n kind: outOfBoundsKind,\n location: [col !== -1 ? col : x < 0 ? 0 : mappedColumns.length - 1, row != null ? row : rows - 1],\n direction: [horizontal, vertical],\n shiftKey,\n ctrlKey,\n metaKey,\n isEdge,\n isTouch,\n button,\n scrollEdge,\n isMaybeScrollbar\n };\n } else if (row <= -1) {\n let bounds = getBoundsForItem(canvas, col, row);\n assert(bounds !== void 0);\n let isEdge = bounds !== void 0 && bounds.x + bounds.width - posX <= edgeDetectionBuffer;\n const previousCol = col - 1;\n if (posX - bounds.x <= edgeDetectionBuffer && previousCol >= 0) {\n isEdge = true;\n bounds = getBoundsForItem(canvas, previousCol, row);\n assert(bounds !== void 0);\n result = {\n kind: enableGroups && row === -2 ? groupHeaderKind : headerKind,\n location: [previousCol, row],\n bounds,\n group: (_a2 = mappedColumns[previousCol].group) != null ? _a2 : \"\",\n isEdge,\n shiftKey,\n ctrlKey,\n metaKey,\n isTouch,\n localEventX: posX - bounds.x,\n localEventY: posY - bounds.y,\n button,\n scrollEdge\n };\n } else {\n result = {\n kind: enableGroups && row === -2 ? groupHeaderKind : headerKind,\n group: (_b2 = mappedColumns[col].group) != null ? _b2 : \"\",\n location: [col, row],\n bounds,\n isEdge,\n shiftKey,\n ctrlKey,\n metaKey,\n isTouch,\n localEventX: posX - bounds.x,\n localEventY: posY - bounds.y,\n button,\n scrollEdge\n };\n }\n } else {\n const bounds = getBoundsForItem(canvas, col, row);\n assert(bounds !== void 0);\n const isEdge = bounds !== void 0 && bounds.x + bounds.width - posX < edgeDetectionBuffer;\n const isFillHandle = fillHandle && bounds !== void 0 && bounds.x + bounds.width - posX < 6 && bounds.y + bounds.height - posY < 6;\n result = {\n kind: \"cell\",\n location: [col, row],\n bounds,\n isEdge,\n shiftKey,\n ctrlKey,\n isFillHandle,\n metaKey,\n isTouch,\n localEventX: posX - bounds.x,\n localEventY: posY - bounds.y,\n button,\n scrollEdge\n };\n }\n return result;\n },\n [\n mappedColumns,\n cellXOffset,\n width,\n translateX,\n height,\n enableGroups,\n headerHeight,\n groupHeaderHeight,\n rows,\n rowHeight,\n cellYOffset,\n translateY,\n trailingRowType,\n getBoundsForItem,\n fillHandle\n ]\n );\n function isSameItem(item, other) {\n if (item === other)\n return true;\n return (item == null ? void 0 : item.kind) === (other == null ? void 0 : other.kind) && (item == null ? void 0 : item.location[0]) === (other == null ? void 0 : other.location[0]) && (item == null ? void 0 : item.location[1]) === (other == null ? void 0 : other.location[1]);\n }\n const [hoveredItem] = hoveredItemInfo != null ? hoveredItemInfo : [];\n const enqueueRef = React8.useRef((_item) => {\n });\n const hoverInfoRef = React8.useRef(hoveredItemInfo);\n hoverInfoRef.current = hoveredItemInfo;\n const [bufferA, bufferB] = React8.useMemo(() => {\n const a = document.createElement(\"canvas\");\n const b = document.createElement(\"canvas\");\n a.style[\"display\"] = \"none\";\n a.style[\"opacity\"] = \"0\";\n a.style[\"position\"] = \"fixed\";\n b.style[\"display\"] = \"none\";\n b.style[\"opacity\"] = \"0\";\n b.style[\"position\"] = \"fixed\";\n return [a, b];\n }, []);\n React8.useLayoutEffect(() => {\n document.documentElement.append(bufferA);\n document.documentElement.append(bufferB);\n return () => {\n bufferA.remove();\n bufferB.remove();\n };\n }, [bufferA, bufferB]);\n const lastArgsRef = React8.useRef();\n const draw = React8.useCallback(() => {\n var _a2, _b2;\n const canvas = ref.current;\n const overlay = overlayRef.current;\n if (canvas === null || overlay === null)\n return;\n const last = lastArgsRef.current;\n const current = {\n canvas,\n bufferA,\n bufferB,\n headerCanvas: overlay,\n width,\n height,\n cellXOffset,\n cellYOffset,\n translateX: Math.round(translateX),\n translateY: Math.round(translateY),\n mappedColumns,\n enableGroups,\n freezeColumns,\n dragAndDropState,\n theme,\n headerHeight,\n groupHeaderHeight,\n disabledRows: disabledRows != null ? disabledRows : CompactSelection.empty(),\n rowHeight,\n verticalBorder,\n isResizing,\n isFocused,\n selection,\n fillHandle,\n lastRowSticky: trailingRowType,\n rows,\n drawFocus: drawFocusRing2,\n getCellContent,\n getGroupDetails: getGroupDetails != null ? getGroupDetails : (name) => ({ name }),\n getRowThemeOverride,\n drawCustomCell,\n drawHeaderCallback,\n prelightCells,\n highlightRegions,\n imageLoader,\n lastBlitData,\n damage: damageRegion.current,\n hoverValues: hoverValues.current,\n hoverInfo: hoverInfoRef.current,\n spriteManager,\n scrolling,\n hyperWrapping: (_a2 = experimental == null ? void 0 : experimental.hyperWrapping) != null ? _a2 : false,\n touchMode: lastWasTouch,\n enqueue: enqueueRef.current,\n renderStrategy: (_b2 = experimental == null ? void 0 : experimental.renderStrategy) != null ? _b2 : browserIsSafari.value ? \"double-buffer\" : \"single-buffer\",\n getCellRenderer\n };\n if (current.damage === void 0) {\n lastArgsRef.current = current;\n drawGrid(current, last);\n } else {\n drawGrid(current, void 0);\n }\n }, [\n bufferA,\n bufferB,\n width,\n height,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n mappedColumns,\n enableGroups,\n freezeColumns,\n dragAndDropState,\n theme,\n headerHeight,\n groupHeaderHeight,\n disabledRows,\n rowHeight,\n verticalBorder,\n isResizing,\n isFocused,\n selection,\n fillHandle,\n trailingRowType,\n rows,\n drawFocusRing2,\n getCellContent,\n getGroupDetails,\n getRowThemeOverride,\n drawCustomCell,\n drawHeaderCallback,\n prelightCells,\n highlightRegions,\n imageLoader,\n spriteManager,\n scrolling,\n experimental == null ? void 0 : experimental.hyperWrapping,\n experimental == null ? void 0 : experimental.renderStrategy,\n lastWasTouch,\n getCellRenderer\n ]);\n const lastDrawRef = React8.useRef(draw);\n React8.useLayoutEffect(() => {\n draw();\n lastDrawRef.current = draw;\n }, [draw]);\n React8.useLayoutEffect(() => {\n const fn = async () => {\n var _a2;\n if (((_a2 = document == null ? void 0 : document.fonts) == null ? void 0 : _a2.ready) === void 0)\n return;\n await document.fonts.ready;\n lastArgsRef.current = void 0;\n lastDrawRef.current();\n };\n void fn();\n }, []);\n const damageInternal = React8.useCallback((locations) => {\n damageRegion.current = locations;\n lastDrawRef.current();\n damageRegion.current = void 0;\n }, []);\n const enqueue = useAnimationQueue(damageInternal);\n enqueueRef.current = enqueue;\n const damage = React8.useCallback(\n (cells) => {\n damageInternal(cells.map((x) => x.cell));\n },\n [damageInternal]\n );\n imageLoader.setCallback(damageInternal);\n const [overFill, setOverFill] = React8.useState(false);\n const [hCol, hRow] = hoveredItem != null ? hoveredItem : [];\n const headerHovered = hCol !== void 0 && hRow === -1;\n const groupHeaderHovered = hCol !== void 0 && hRow === -2;\n let clickableInnerCellHovered = false;\n let editableBoolHovered = false;\n let cursorOverride;\n if (hCol !== void 0 && hRow !== void 0 && hRow > -1) {\n const cell = getCellContent([hCol, hRow], true);\n clickableInnerCellHovered = cell.kind === InnerGridCellKind.NewRow || cell.kind === InnerGridCellKind.Marker && cell.markerKind !== \"number\";\n editableBoolHovered = cell.kind === GridCellKind.Boolean && booleanCellIsEditable(cell);\n cursorOverride = cell.cursor;\n }\n const canDrag = hoveredOnEdge != null ? hoveredOnEdge : false;\n const cursor = isDragging ? \"grabbing\" : canDrag || isResizing ? \"col-resize\" : overFill || isFilling ? \"crosshair\" : cursorOverride !== void 0 ? cursorOverride : headerHovered || clickableInnerCellHovered || editableBoolHovered || groupHeaderHovered ? \"pointer\" : \"default\";\n const style = React8.useMemo(\n () => ({\n // width,\n // height,\n contain: \"strict\",\n display: \"block\",\n cursor\n }),\n [cursor]\n );\n const lastSetCursor = React8.useRef(\"default\");\n const target = eventTargetRef == null ? void 0 : eventTargetRef.current;\n if (target !== null && target !== void 0 && lastSetCursor.current !== style.cursor) {\n target.style.cursor = lastSetCursor.current = style.cursor;\n }\n const groupHeaderActionForEvent = React8.useCallback(\n (group, bounds, localEventX, localEventY) => {\n if (getGroupDetails === void 0)\n return void 0;\n const groupDesc = getGroupDetails(group);\n if (groupDesc.actions !== void 0) {\n const boxes = getActionBoundsForGroup(bounds, groupDesc.actions);\n for (const [i, box] of boxes.entries()) {\n if (pointInRect(box, localEventX + bounds.x, localEventY + box.y)) {\n return groupDesc.actions[i];\n }\n }\n }\n return void 0;\n },\n [getGroupDetails]\n );\n const isOverHeaderMenu = React8.useCallback(\n (canvas, col, clientX, clientY) => {\n const header = columns[col];\n if (!isDragging && !isResizing && header.hasMenu === true && !(hoveredOnEdge != null ? hoveredOnEdge : false)) {\n const headerBounds = getBoundsForItem(canvas, col, -1);\n assert(headerBounds !== void 0);\n const menuBounds = getHeaderMenuBounds(\n headerBounds.x,\n headerBounds.y,\n headerBounds.width,\n headerBounds.height,\n direction(header.title) === \"rtl\"\n );\n if (clientX > menuBounds.x && clientX < menuBounds.x + menuBounds.width && clientY > menuBounds.y && clientY < menuBounds.y + menuBounds.height) {\n return headerBounds;\n }\n }\n return void 0;\n },\n [columns, getBoundsForItem, hoveredOnEdge, isDragging, isResizing]\n );\n const downTime = React8.useRef(0);\n const downPosition = React8.useRef();\n const mouseDown = React8.useRef(false);\n const onMouseDownImpl = React8.useCallback(\n (ev) => {\n const canvas = ref.current;\n const eventTarget = eventTargetRef == null ? void 0 : eventTargetRef.current;\n if (canvas === null || ev.target !== canvas && ev.target !== eventTarget)\n return;\n mouseDown.current = true;\n let clientX;\n let clientY;\n if (ev instanceof MouseEvent) {\n clientX = ev.clientX;\n clientY = ev.clientY;\n } else {\n clientX = ev.touches[0].clientX;\n clientY = ev.touches[0].clientY;\n }\n if (ev.target === eventTarget && eventTarget !== null) {\n const bounds = eventTarget.getBoundingClientRect();\n if (clientX > bounds.right || clientY > bounds.bottom)\n return;\n }\n const args = getMouseArgsForPosition(canvas, clientX, clientY, ev);\n downPosition.current = args.location;\n if (args.isTouch) {\n downTime.current = Date.now();\n }\n if (lastWasTouchRef.current !== args.isTouch) {\n setLastWasTouch(args.isTouch);\n }\n if (args.kind === headerKind && isOverHeaderMenu(canvas, args.location[0], clientX, clientY) !== void 0) {\n return;\n } else if (args.kind === groupHeaderKind) {\n const action = groupHeaderActionForEvent(args.group, args.bounds, args.localEventX, args.localEventY);\n if (action !== void 0) {\n return;\n }\n }\n onMouseDown == null ? void 0 : onMouseDown(args);\n if (!args.isTouch && isDraggable !== true && isDraggable !== args.kind) {\n ev.preventDefault();\n }\n },\n [eventTargetRef, isDraggable, getMouseArgsForPosition, groupHeaderActionForEvent, isOverHeaderMenu, onMouseDown]\n );\n useEventListener(\"touchstart\", onMouseDownImpl, window, false);\n useEventListener(\"mousedown\", onMouseDownImpl, window, false);\n const onMouseUpImpl = React8.useCallback(\n (ev) => {\n var _a2, _b2;\n const canvas = ref.current;\n mouseDown.current = false;\n if (onMouseUp === void 0 || canvas === null)\n return;\n const eventTarget = eventTargetRef == null ? void 0 : eventTargetRef.current;\n const isOutside = ev.target !== canvas && ev.target !== eventTarget;\n let clientX;\n let clientY;\n if (ev instanceof MouseEvent) {\n clientX = ev.clientX;\n clientY = ev.clientY;\n if (ev.pointerType === \"touch\") {\n return;\n }\n } else {\n clientX = ev.changedTouches[0].clientX;\n clientY = ev.changedTouches[0].clientY;\n }\n let args = getMouseArgsForPosition(canvas, clientX, clientY, ev);\n if (args.isTouch && downTime.current !== 0 && Date.now() - downTime.current > 500) {\n args = {\n ...args,\n isLongTouch: true\n };\n }\n if (lastWasTouchRef.current !== args.isTouch) {\n setLastWasTouch(args.isTouch);\n }\n if (!isOutside && ev.cancelable) {\n ev.preventDefault();\n }\n const [col] = args.location;\n const headerBounds = isOverHeaderMenu(canvas, col, clientX, clientY);\n if (args.kind === headerKind && headerBounds !== void 0) {\n if (args.button !== 0 || ((_a2 = downPosition.current) == null ? void 0 : _a2[0]) !== col || ((_b2 = downPosition.current) == null ? void 0 : _b2[1]) !== -1) {\n onMouseUp(args, true);\n }\n return;\n } else if (args.kind === groupHeaderKind) {\n const action = groupHeaderActionForEvent(args.group, args.bounds, args.localEventX, args.localEventY);\n if (action !== void 0) {\n if (args.button === 0) {\n action.onClick(args);\n }\n return;\n }\n }\n onMouseUp(args, isOutside);\n },\n [onMouseUp, eventTargetRef, getMouseArgsForPosition, isOverHeaderMenu, groupHeaderActionForEvent]\n );\n useEventListener(\"mouseup\", onMouseUpImpl, window, false);\n useEventListener(\"touchend\", onMouseUpImpl, window, false);\n const onClickImpl = React8.useCallback(\n (ev) => {\n var _a2, _b2;\n const canvas = ref.current;\n if (canvas === null)\n return;\n const eventTarget = eventTargetRef == null ? void 0 : eventTargetRef.current;\n const isOutside = ev.target !== canvas && ev.target !== eventTarget;\n let clientX;\n let clientY;\n if (ev instanceof MouseEvent) {\n clientX = ev.clientX;\n clientY = ev.clientY;\n } else {\n clientX = ev.changedTouches[0].clientX;\n clientY = ev.changedTouches[0].clientY;\n }\n const args = getMouseArgsForPosition(canvas, clientX, clientY, ev);\n if (lastWasTouchRef.current !== args.isTouch) {\n setLastWasTouch(args.isTouch);\n }\n if (!isOutside && ev.cancelable) {\n ev.preventDefault();\n }\n const [col] = args.location;\n const headerBounds = isOverHeaderMenu(canvas, col, clientX, clientY);\n if (args.kind === headerKind && headerBounds !== void 0) {\n if (args.button === 0 && ((_a2 = downPosition.current) == null ? void 0 : _a2[0]) === col && ((_b2 = downPosition.current) == null ? void 0 : _b2[1]) === -1) {\n onHeaderMenuClick == null ? void 0 : onHeaderMenuClick(col, headerBounds);\n }\n } else if (args.kind === groupHeaderKind) {\n const action = groupHeaderActionForEvent(args.group, args.bounds, args.localEventX, args.localEventY);\n if (action !== void 0 && args.button === 0) {\n action.onClick(args);\n }\n }\n },\n [eventTargetRef, getMouseArgsForPosition, isOverHeaderMenu, onHeaderMenuClick, groupHeaderActionForEvent]\n );\n useEventListener(\"click\", onClickImpl, window, false);\n const onContextMenuImpl = React8.useCallback(\n (ev) => {\n const canvas = ref.current;\n if (canvas === null || onContextMenu === void 0)\n return;\n const args = getMouseArgsForPosition(canvas, ev.clientX, ev.clientY, ev);\n onContextMenu(args, () => {\n if (ev.cancelable)\n ev.preventDefault();\n });\n },\n [getMouseArgsForPosition, onContextMenu]\n );\n useEventListener(\"contextmenu\", onContextMenuImpl, (_c = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _c : null, false);\n const onAnimationFrame = React8.useCallback((values) => {\n damageRegion.current = values.map((x) => x.item);\n hoverValues.current = values;\n lastDrawRef.current();\n damageRegion.current = void 0;\n }, []);\n const animManagerValue = React8.useMemo(() => new AnimationManager(onAnimationFrame), [onAnimationFrame]);\n const animationManager = React8.useRef(animManagerValue);\n animationManager.current = animManagerValue;\n React8.useLayoutEffect(() => {\n const am = animationManager.current;\n if (hoveredItem === void 0 || hoveredItem[1] < 0) {\n am.setHovered(hoveredItem);\n return;\n }\n const cell = getCellContent(hoveredItem);\n const r = getCellRenderer(cell);\n am.setHovered(\n r === void 0 && cell.kind === GridCellKind.Custom || (r == null ? void 0 : r.needsHover) === true ? hoveredItem : void 0\n );\n }, [getCellContent, getCellRenderer, hoveredItem]);\n const hoveredRef = React8.useRef();\n const onMouseMoveImpl = React8.useCallback(\n (ev) => {\n var _a2;\n const canvas = ref.current;\n if (canvas === null)\n return;\n const eventTarget = eventTargetRef == null ? void 0 : eventTargetRef.current;\n const isIndirect = ev.target !== canvas && ev.target !== eventTarget;\n const args = getMouseArgsForPosition(canvas, ev.clientX, ev.clientY, ev);\n if (args.kind !== \"out-of-bounds\" && isIndirect && !mouseDown.current && !args.isTouch) {\n return;\n }\n if (!isSameItem(args, hoveredRef.current)) {\n onItemHovered == null ? void 0 : onItemHovered(args);\n setHoveredItemInfo(\n args.kind === outOfBoundsKind ? void 0 : [args.location, [args.localEventX, args.localEventY]]\n );\n hoveredRef.current = args;\n } else if (args.kind === \"cell\" || args.kind === headerKind || args.kind === groupHeaderKind) {\n const newInfo = [args.location, [args.localEventX, args.localEventY]];\n setHoveredItemInfo(newInfo);\n hoverInfoRef.current = newInfo;\n if (args.kind === \"cell\") {\n const toCheck = getCellContent(args.location);\n if (toCheck.kind === GridCellKind.Custom || ((_a2 = getCellRenderer(toCheck)) == null ? void 0 : _a2.needsHoverPosition) === true) {\n damageInternal([args.location]);\n }\n } else if (args.kind === groupHeaderKind) {\n damageInternal([args.location]);\n }\n }\n const notRowMarkerCol = args.location[0] >= (firstColAccessible ? 0 : 1);\n setHoveredOnEdge(args.kind === headerKind && args.isEdge && notRowMarkerCol && allowResize === true);\n if (fillHandle && selection.current !== void 0) {\n const [col, row] = selection.current.cell;\n const sb = getBoundsForItem(canvas, col, row);\n const x = ev.clientX;\n const y = ev.clientY;\n assert(sb !== void 0);\n setOverFill(\n x >= sb.x + sb.width - 6 && x <= sb.x + sb.width && y >= sb.y + sb.height - 6 && y <= sb.y + sb.height\n );\n } else {\n setOverFill(false);\n }\n onMouseMoveRaw == null ? void 0 : onMouseMoveRaw(ev);\n onMouseMove(args);\n },\n [\n eventTargetRef,\n getMouseArgsForPosition,\n firstColAccessible,\n allowResize,\n fillHandle,\n selection,\n onMouseMoveRaw,\n onMouseMove,\n onItemHovered,\n getCellContent,\n getCellRenderer,\n damageInternal,\n getBoundsForItem\n ]\n );\n useEventListener(\"mousemove\", onMouseMoveImpl, window, true);\n const onKeyDownImpl = React8.useCallback(\n (event) => {\n const canvas = ref.current;\n if (canvas === null)\n return;\n let bounds;\n let location = void 0;\n if (selection.current !== void 0) {\n bounds = getBoundsForItem(canvas, selection.current.cell[0], selection.current.cell[1]);\n location = selection.current.cell;\n }\n onKeyDown == null ? void 0 : onKeyDown({\n bounds,\n stopPropagation: () => event.stopPropagation(),\n preventDefault: () => event.preventDefault(),\n cancel: () => void 0,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n key: event.key,\n keyCode: event.keyCode,\n rawEvent: event,\n location\n });\n },\n [onKeyDown, selection, getBoundsForItem]\n );\n const onKeyUpImpl = React8.useCallback(\n (event) => {\n const canvas = ref.current;\n if (canvas === null)\n return;\n let bounds;\n let location = void 0;\n if (selection.current !== void 0) {\n bounds = getBoundsForItem(canvas, selection.current.cell[0], selection.current.cell[1]);\n location = selection.current.cell;\n }\n onKeyUp == null ? void 0 : onKeyUp({\n bounds,\n stopPropagation: () => event.stopPropagation(),\n preventDefault: () => event.preventDefault(),\n cancel: () => void 0,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n key: event.key,\n keyCode: event.keyCode,\n rawEvent: event,\n location\n });\n },\n [onKeyUp, selection, getBoundsForItem]\n );\n const refImpl = React8.useCallback(\n (instance) => {\n ref.current = instance;\n if (canvasRef !== void 0) {\n canvasRef.current = instance;\n }\n },\n [canvasRef]\n );\n const onDragStartImpl = React8.useCallback(\n (event) => {\n var _a2;\n const canvas = ref.current;\n if (canvas === null || isDraggable === false || isResizing) {\n event.preventDefault();\n return;\n }\n let dragMime;\n let dragData;\n const args = getMouseArgsForPosition(canvas, event.clientX, event.clientY);\n if (isDraggable !== true && args.kind !== isDraggable) {\n event.preventDefault();\n return;\n }\n const setData = (mime, payload) => {\n dragMime = mime;\n dragData = payload;\n };\n let dragImage;\n let dragImageX;\n let dragImageY;\n const setDragImage = (image, x, y) => {\n dragImage = image;\n dragImageX = x;\n dragImageY = y;\n };\n let prevented = false;\n onDragStart == null ? void 0 : onDragStart({\n ...args,\n setData,\n setDragImage,\n preventDefault: () => prevented = true,\n defaultPrevented: () => prevented\n });\n if (!prevented && dragMime !== void 0 && dragData !== void 0 && event.dataTransfer !== null) {\n event.dataTransfer.setData(dragMime, dragData);\n event.dataTransfer.effectAllowed = \"copyLink\";\n if (dragImage !== void 0 && dragImageX !== void 0 && dragImageY !== void 0) {\n event.dataTransfer.setDragImage(dragImage, dragImageX, dragImageY);\n } else {\n const [col, row] = args.location;\n if (row !== void 0) {\n const offscreen = document.createElement(\"canvas\");\n const boundsForDragTarget = getBoundsForItem(canvas, col, row);\n assert(boundsForDragTarget !== void 0);\n const dpr = Math.ceil((_a2 = window.devicePixelRatio) != null ? _a2 : 1);\n offscreen.width = boundsForDragTarget.width * dpr;\n offscreen.height = boundsForDragTarget.height * dpr;\n const ctx = offscreen.getContext(\"2d\");\n if (ctx !== null) {\n ctx.scale(dpr, dpr);\n ctx.textBaseline = \"middle\";\n if (row === -1) {\n ctx.font = `${theme.headerFontStyle} ${theme.fontFamily}`;\n ctx.fillStyle = theme.bgHeader;\n ctx.fillRect(0, 0, offscreen.width, offscreen.height);\n drawHeader(\n ctx,\n 0,\n 0,\n boundsForDragTarget.width,\n boundsForDragTarget.height,\n mappedColumns[col],\n false,\n theme,\n false,\n false,\n 0,\n spriteManager,\n drawHeaderCallback,\n false\n );\n } else {\n ctx.font = `${theme.baseFontStyle} ${theme.fontFamily}`;\n ctx.fillStyle = theme.bgCell;\n ctx.fillRect(0, 0, offscreen.width, offscreen.height);\n drawCell(\n ctx,\n row,\n getCellContent([col, row]),\n 0,\n 0,\n 0,\n boundsForDragTarget.width,\n boundsForDragTarget.height,\n false,\n theme,\n drawCustomCell,\n imageLoader,\n spriteManager,\n 1,\n void 0,\n false,\n 0,\n void 0,\n void 0,\n getCellRenderer\n );\n }\n }\n offscreen.style.left = \"-100%\";\n offscreen.style.position = \"absolute\";\n offscreen.style.width = `${boundsForDragTarget.width}px`;\n offscreen.style.height = `${boundsForDragTarget.height}px`;\n document.body.append(offscreen);\n event.dataTransfer.setDragImage(\n offscreen,\n boundsForDragTarget.width / 2,\n boundsForDragTarget.height / 2\n );\n window.setTimeout(() => {\n offscreen.remove();\n }, 0);\n }\n }\n } else {\n event.preventDefault();\n }\n },\n [\n isDraggable,\n isResizing,\n getMouseArgsForPosition,\n onDragStart,\n getBoundsForItem,\n theme,\n mappedColumns,\n spriteManager,\n drawHeaderCallback,\n getCellContent,\n drawCustomCell,\n imageLoader,\n getCellRenderer\n ]\n );\n useEventListener(\"dragstart\", onDragStartImpl, (_d = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _d : null, false, false);\n const activeDropTarget = React8.useRef();\n const onDragOverImpl = React8.useCallback(\n (event) => {\n var _a2;\n const canvas = ref.current;\n if (onDrop !== void 0) {\n event.preventDefault();\n }\n if (canvas === null || onDragOverCell === void 0) {\n return;\n }\n const args = getMouseArgsForPosition(canvas, event.clientX, event.clientY);\n const [rawCol, row] = args.location;\n const col = rawCol - (firstColAccessible ? 0 : 1);\n const [activeCol, activeRow] = (_a2 = activeDropTarget.current) != null ? _a2 : [];\n if (activeCol !== col || activeRow !== row) {\n activeDropTarget.current = [col, row];\n onDragOverCell([col, row], event.dataTransfer);\n }\n },\n [firstColAccessible, getMouseArgsForPosition, onDragOverCell, onDrop]\n );\n useEventListener(\"dragover\", onDragOverImpl, (_e = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _e : null, false, false);\n const onDragEndImpl = React8.useCallback(() => {\n activeDropTarget.current = void 0;\n onDragEnd == null ? void 0 : onDragEnd();\n }, [onDragEnd]);\n useEventListener(\"dragend\", onDragEndImpl, (_f = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _f : null, false, false);\n const onDropImpl = React8.useCallback(\n (event) => {\n const canvas = ref.current;\n if (canvas === null || onDrop === void 0) {\n return;\n }\n event.preventDefault();\n const args = getMouseArgsForPosition(canvas, event.clientX, event.clientY);\n const [rawCol, row] = args.location;\n const col = rawCol - (firstColAccessible ? 0 : 1);\n onDrop([col, row], event.dataTransfer);\n },\n [firstColAccessible, getMouseArgsForPosition, onDrop]\n );\n useEventListener(\"drop\", onDropImpl, (_g = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _g : null, false, false);\n const onDragLeaveImpl = React8.useCallback(() => {\n onDragLeave == null ? void 0 : onDragLeave();\n }, [onDragLeave]);\n useEventListener(\"dragleave\", onDragLeaveImpl, (_h = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _h : null, false, false);\n const selectionRef = React8.useRef(selection);\n selectionRef.current = selection;\n const focusRef = React8.useRef(null);\n const focusElement = React8.useCallback(\n (el) => {\n var _a2;\n if (ref.current === null || !ref.current.contains(document.activeElement))\n return;\n if (el === null && selectionRef.current.current !== void 0) {\n (_a2 = canvasRef == null ? void 0 : canvasRef.current) == null ? void 0 : _a2.focus({\n preventScroll: true\n });\n } else if (el !== null) {\n el.focus({\n preventScroll: true\n });\n }\n focusRef.current = el;\n },\n [canvasRef]\n );\n React8.useImperativeHandle(\n forwardedRef,\n () => ({\n focus: () => {\n var _a2;\n const el = focusRef.current;\n if (el === null || !document.contains(el)) {\n (_a2 = canvasRef == null ? void 0 : canvasRef.current) == null ? void 0 : _a2.focus({\n preventScroll: true\n });\n } else {\n el.focus({\n preventScroll: true\n });\n }\n },\n getBounds: (col, row) => {\n if (canvasRef === void 0 || canvasRef.current === null) {\n return void 0;\n }\n return getBoundsForItem(canvasRef.current, col != null ? col : 0, row != null ? row : -1);\n },\n damage\n }),\n [canvasRef, damage, getBoundsForItem]\n );\n const lastFocusedSubdomNode = React8.useRef();\n const accessibilityTree = useDebouncedMemo(\n () => {\n var _a2, _b2, _c2, _d2;\n if (width < 50)\n return null;\n let effectiveCols = getEffectiveColumns(mappedColumns, cellXOffset, width, dragAndDropState, translateX);\n const colOffset = firstColAccessible ? 0 : -1;\n if (!firstColAccessible && ((_a2 = effectiveCols[0]) == null ? void 0 : _a2.sourceIndex) === 0) {\n effectiveCols = effectiveCols.slice(1);\n }\n const [fCol, fRow] = (_c2 = (_b2 = selection.current) == null ? void 0 : _b2.cell) != null ? _c2 : [];\n const range2 = (_d2 = selection.current) == null ? void 0 : _d2.range;\n const visibleCols = effectiveCols.map((c) => c.sourceIndex);\n const visibleRows = makeRange(cellYOffset, Math.min(rows, cellYOffset + accessibilityHeight));\n if (fCol !== void 0 && fRow !== void 0 && !(visibleCols.includes(fCol) && visibleRows.includes(fRow))) {\n focusElement(null);\n }\n return /* @__PURE__ */ React8.createElement(\n \"table\",\n {\n key: \"access-tree\",\n role: \"grid\",\n \"aria-rowcount\": rows + 1,\n \"aria-multiselectable\": \"true\",\n \"aria-colcount\": mappedColumns.length + colOffset\n },\n /* @__PURE__ */ React8.createElement(\"thead\", { role: \"rowgroup\" }, /* @__PURE__ */ React8.createElement(\"tr\", { role: \"row\", \"aria-rowindex\": 1 }, effectiveCols.map((c) => /* @__PURE__ */ React8.createElement(\n \"th\",\n {\n role: \"columnheader\",\n \"aria-selected\": selection.columns.hasIndex(c.sourceIndex),\n \"aria-colindex\": c.sourceIndex + 1 + colOffset,\n tabIndex: -1,\n onFocus: (e) => {\n if (e.target === focusRef.current)\n return;\n return onCellFocused == null ? void 0 : onCellFocused([c.sourceIndex, -1]);\n },\n key: c.sourceIndex\n },\n c.title\n )))),\n /* @__PURE__ */ React8.createElement(\"tbody\", { role: \"rowgroup\" }, visibleRows.map((row) => /* @__PURE__ */ React8.createElement(\n \"tr\",\n {\n role: \"row\",\n \"aria-selected\": selection.rows.hasIndex(row),\n key: row,\n \"aria-rowindex\": row + 2\n },\n effectiveCols.map((c) => {\n const col = c.sourceIndex;\n const key = `${col},${row}`;\n const focused = fCol === col && fRow === row;\n const selected = range2 !== void 0 && col >= range2.x && col < range2.x + range2.width && row >= range2.y && row < range2.y + range2.height;\n const id = `glide-cell-${col}-${row}`;\n const location = [col, row];\n const cellContent = getCellContent(location, true);\n return /* @__PURE__ */ React8.createElement(\n \"td\",\n {\n key,\n role: \"gridcell\",\n \"aria-colindex\": col + 1 + colOffset,\n \"aria-selected\": selected,\n \"aria-readonly\": isInnerOnlyCell(cellContent) || !isReadWriteCell(cellContent),\n id,\n \"data-testid\": id,\n onClick: () => {\n const canvas = canvasRef == null ? void 0 : canvasRef.current;\n if (canvas === null || canvas === void 0)\n return;\n return onKeyDown == null ? void 0 : onKeyDown({\n bounds: getBoundsForItem(canvas, col, row),\n cancel: () => void 0,\n preventDefault: () => void 0,\n stopPropagation: () => void 0,\n ctrlKey: false,\n key: \"Enter\",\n keyCode: 13,\n metaKey: false,\n shiftKey: false,\n altKey: false,\n rawEvent: void 0,\n location\n });\n },\n onFocusCapture: (e) => {\n var _a3, _b3;\n if (e.target === focusRef.current || ((_a3 = lastFocusedSubdomNode.current) == null ? void 0 : _a3[0]) === col && ((_b3 = lastFocusedSubdomNode.current) == null ? void 0 : _b3[1]) === row)\n return;\n lastFocusedSubdomNode.current = location;\n return onCellFocused == null ? void 0 : onCellFocused(location);\n },\n ref: focused ? focusElement : void 0,\n tabIndex: -1\n },\n getRowData(cellContent, getCellRenderer)\n );\n })\n )))\n );\n },\n [\n width,\n mappedColumns,\n cellXOffset,\n dragAndDropState,\n translateX,\n rows,\n cellYOffset,\n accessibilityHeight,\n selection,\n focusElement,\n getCellContent,\n canvasRef,\n onKeyDown,\n getBoundsForItem,\n onCellFocused\n ],\n 200\n );\n const stickyX = fixedShadowX ? getStickyWidth(mappedColumns, dragAndDropState) : 0;\n const opacityX = freezeColumns === 0 || !fixedShadowX ? 0 : cellXOffset > freezeColumns ? 1 : clamp2(-translateX / 100, 0, 1);\n const absoluteOffsetY = -cellYOffset * 32 + translateY;\n const opacityY = !fixedShadowY ? 0 : clamp2(-absoluteOffsetY / 100, 0, 1);\n const stickyShadow = React8.useMemo(() => {\n if (!opacityX && !opacityY) {\n return null;\n }\n const styleX = {\n position: \"absolute\",\n top: 0,\n left: stickyX,\n width: width - stickyX,\n height,\n opacity: opacityX,\n pointerEvents: \"none\",\n transition: !smoothScrollX ? \"opacity 0.2s\" : void 0,\n boxShadow: \"inset 13px 0 10px -13px rgba(0, 0, 0, 0.2)\"\n };\n const styleY = {\n position: \"absolute\",\n top: totalHeaderHeight,\n left: 0,\n width,\n height,\n opacity: opacityY,\n pointerEvents: \"none\",\n transition: !smoothScrollY ? \"opacity 0.2s\" : void 0,\n boxShadow: \"inset 0 13px 10px -13px rgba(0, 0, 0, 0.2)\"\n };\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, opacityX > 0 && /* @__PURE__ */ React8.createElement(\"div\", { id: \"shadow-x\", style: styleX }), opacityY > 0 && /* @__PURE__ */ React8.createElement(\"div\", { id: \"shadow-y\", style: styleY }));\n }, [opacityX, opacityY, stickyX, width, smoothScrollX, totalHeaderHeight, height, smoothScrollY]);\n const overlayStyle = React8.useMemo(\n () => ({\n position: \"absolute\",\n top: 0,\n left: 0\n }),\n []\n );\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(\n \"canvas\",\n {\n \"data-testid\": \"data-grid-canvas\",\n tabIndex: 0,\n onKeyDown: onKeyDownImpl,\n onKeyUp: onKeyUpImpl,\n onFocus: onCanvasFocused,\n onBlur: onCanvasBlur,\n ref: refImpl,\n style\n },\n accessibilityTree\n ), /* @__PURE__ */ React8.createElement(\"canvas\", { ref: overlayRef, style: overlayStyle }), stickyShadow);\n};\nvar data_grid_default = React8.memo(React8.forwardRef(DataGrid));\n\n// src/data-grid-dnd/data-grid-dnd.tsx\nfunction offsetColumnSize(column, width, min, max) {\n var _a;\n return clamp3(Math.round(width - ((_a = column.growOffset) != null ? _a : 0)), Math.ceil(min), Math.floor(max));\n}\nvar DataGridDnd = (p) => {\n var _a;\n const [resizeColStartX, setResizeColStartX] = React9.useState();\n const [resizeCol, setResizeCol] = React9.useState();\n const [dragCol, setDragCol] = React9.useState();\n const [dropCol, setDropCol] = React9.useState();\n const [dragColActive, setDragColActive] = React9.useState(false);\n const [dragStartX, setDragStartX] = React9.useState();\n const [dragRow, setDragRow] = React9.useState();\n const [dropRow, setDropRow] = React9.useState();\n const [dragRowActive, setDragRowActive] = React9.useState(false);\n const [dragStartY, setDragStartY] = React9.useState();\n const {\n onHeaderMenuClick,\n getCellContent,\n onColumnMoved,\n onColumnResize,\n onColumnResizeStart,\n onColumnResizeEnd,\n gridRef,\n maxColumnWidth,\n minColumnWidth,\n onRowMoved,\n lockColumns,\n onMouseDown,\n onMouseUp,\n onItemHovered,\n onDragStart,\n canvasRef\n } = p;\n const canResize = ((_a = onColumnResize != null ? onColumnResize : onColumnResizeEnd) != null ? _a : onColumnResizeStart) !== void 0;\n const { columns, selection } = p;\n const selectedColumns = selection.columns;\n const onItemHoveredImpl = React9.useCallback(\n (args) => {\n const [col, row] = args.location;\n if (dragCol !== void 0 && dropCol !== col && col >= lockColumns) {\n setDragColActive(true);\n setDropCol(col);\n } else if (dragRow !== void 0 && row !== void 0) {\n setDragRowActive(true);\n setDropRow(Math.max(0, row));\n } else {\n onItemHovered == null ? void 0 : onItemHovered(args);\n }\n },\n [dragCol, dragRow, dropCol, onItemHovered, lockColumns]\n );\n const canDragCol = onColumnMoved !== void 0;\n const onMouseDownImpl = React9.useCallback(\n (args) => {\n var _a2, _b;\n if (args.button === 0) {\n const [col, row] = args.location;\n if (args.kind === \"out-of-bounds\" && args.isEdge && canResize) {\n const bounds = (_a2 = gridRef == null ? void 0 : gridRef.current) == null ? void 0 : _a2.getBounds(columns.length - 1, -1);\n if (bounds !== void 0) {\n setResizeColStartX(bounds.x);\n setResizeCol(columns.length - 1);\n }\n } else if (args.kind === \"header\" && col >= lockColumns) {\n const canvas = canvasRef == null ? void 0 : canvasRef.current;\n if (args.isEdge && canResize && canvas) {\n setResizeColStartX(args.bounds.x);\n setResizeCol(col);\n const rect = canvas.getBoundingClientRect();\n const scale = rect.width / canvas.offsetWidth;\n const width = args.bounds.width / scale;\n onColumnResizeStart == null ? void 0 : onColumnResizeStart(columns[col], width, col, width + ((_b = columns[col].growOffset) != null ? _b : 0));\n } else if (args.kind === \"header\" && canDragCol) {\n setDragStartX(args.bounds.x);\n setDragCol(col);\n }\n } else if (args.kind === \"cell\" && lockColumns > 0 && col === 0 && row !== void 0 && onRowMoved !== void 0) {\n setDragStartY(args.bounds.y);\n setDragRow(row);\n }\n }\n onMouseDown == null ? void 0 : onMouseDown(args);\n },\n [onMouseDown, canResize, lockColumns, onRowMoved, gridRef, columns, canDragCol, onColumnResizeStart, canvasRef]\n );\n const onHeaderMenuClickMangled = React9.useCallback(\n (col, screenPosition) => {\n if (dragColActive || dragRowActive)\n return;\n onHeaderMenuClick == null ? void 0 : onHeaderMenuClick(col, screenPosition);\n },\n [dragColActive, dragRowActive, onHeaderMenuClick]\n );\n const lastResizeWidthRef = React9.useRef(-1);\n const clearAll = React9.useCallback(() => {\n lastResizeWidthRef.current = -1;\n setDragRow(void 0);\n setDropRow(void 0);\n setDragStartY(void 0);\n setDragRowActive(false);\n setDragCol(void 0);\n setDropCol(void 0);\n setDragStartX(void 0);\n setDragColActive(false);\n setResizeCol(void 0);\n setResizeColStartX(void 0);\n }, []);\n const onMouseUpImpl = React9.useCallback(\n (args, isOutside) => {\n var _a2, _b, _c;\n if (args.button === 0) {\n if (resizeCol !== void 0) {\n if ((selectedColumns == null ? void 0 : selectedColumns.hasIndex(resizeCol)) === true) {\n for (const c of selectedColumns) {\n if (c === resizeCol)\n continue;\n const col = columns[c];\n const newSize = offsetColumnSize(\n col,\n lastResizeWidthRef.current,\n minColumnWidth,\n maxColumnWidth\n );\n onColumnResize == null ? void 0 : onColumnResize(col, newSize, c, newSize + ((_a2 = col.growOffset) != null ? _a2 : 0));\n }\n }\n const ns = offsetColumnSize(\n columns[resizeCol],\n lastResizeWidthRef.current,\n minColumnWidth,\n maxColumnWidth\n );\n onColumnResizeEnd == null ? void 0 : onColumnResizeEnd(columns[resizeCol], ns, resizeCol, ns + ((_b = columns[resizeCol].growOffset) != null ? _b : 0));\n if (selectedColumns.hasIndex(resizeCol)) {\n for (const c of selectedColumns) {\n if (c === resizeCol)\n continue;\n const col = columns[c];\n const s = offsetColumnSize(col, lastResizeWidthRef.current, minColumnWidth, maxColumnWidth);\n onColumnResizeEnd == null ? void 0 : onColumnResizeEnd(col, s, c, s + ((_c = col.growOffset) != null ? _c : 0));\n }\n }\n }\n clearAll();\n if (dragCol !== void 0 && dropCol !== void 0) {\n onColumnMoved == null ? void 0 : onColumnMoved(dragCol, dropCol);\n }\n if (dragRow !== void 0 && dropRow !== void 0) {\n onRowMoved == null ? void 0 : onRowMoved(dragRow, dropRow);\n }\n }\n onMouseUp == null ? void 0 : onMouseUp(args, isOutside);\n },\n [\n onMouseUp,\n resizeCol,\n dragCol,\n dropCol,\n dragRow,\n dropRow,\n selectedColumns,\n onColumnResizeEnd,\n columns,\n minColumnWidth,\n maxColumnWidth,\n onColumnResize,\n onColumnMoved,\n onRowMoved,\n clearAll\n ]\n );\n const dragOffset = React9.useMemo(() => {\n if (dragCol === void 0 || dropCol === void 0)\n return void 0;\n if (dragCol === dropCol)\n return void 0;\n return {\n src: dragCol,\n dest: dropCol\n };\n }, [dragCol, dropCol]);\n const onMouseMove = React9.useCallback(\n (event) => {\n var _a2, _b;\n const canvas = canvasRef == null ? void 0 : canvasRef.current;\n if (dragCol !== void 0 && dragStartX !== void 0) {\n const diff = Math.abs(event.clientX - dragStartX);\n if (diff > 20) {\n setDragColActive(true);\n }\n } else if (dragRow !== void 0 && dragStartY !== void 0) {\n const diff = Math.abs(event.clientY - dragStartY);\n if (diff > 20) {\n setDragRowActive(true);\n }\n } else if (resizeCol !== void 0 && resizeColStartX !== void 0 && canvas) {\n const rect = canvas.getBoundingClientRect();\n const scale = rect.width / canvas.offsetWidth;\n const newWidth = (event.clientX - resizeColStartX) / scale;\n const column = columns[resizeCol];\n const ns = offsetColumnSize(column, newWidth, minColumnWidth, maxColumnWidth);\n onColumnResize == null ? void 0 : onColumnResize(column, ns, resizeCol, ns + ((_a2 = column.growOffset) != null ? _a2 : 0));\n lastResizeWidthRef.current = newWidth;\n if ((selectedColumns == null ? void 0 : selectedColumns.first()) === resizeCol) {\n for (const c of selectedColumns) {\n if (c === resizeCol)\n continue;\n const col = columns[c];\n const s = offsetColumnSize(col, lastResizeWidthRef.current, minColumnWidth, maxColumnWidth);\n onColumnResize == null ? void 0 : onColumnResize(col, s, c, s + ((_b = col.growOffset) != null ? _b : 0));\n }\n }\n }\n },\n [\n dragCol,\n dragStartX,\n dragRow,\n dragStartY,\n resizeCol,\n resizeColStartX,\n columns,\n minColumnWidth,\n maxColumnWidth,\n onColumnResize,\n selectedColumns,\n canvasRef\n ]\n );\n const getMangledCellContent = React9.useCallback(\n (cell, forceStrict) => {\n if (dragRow === void 0 || dropRow === void 0)\n return getCellContent(cell, forceStrict);\n let [col, row] = cell;\n if (row === dropRow) {\n row = dragRow;\n } else {\n if (row > dropRow)\n row -= 1;\n if (row >= dragRow)\n row += 1;\n }\n return getCellContent([col, row], forceStrict);\n },\n [dragRow, dropRow, getCellContent]\n );\n const onDragStartImpl = React9.useCallback(\n (args) => {\n onDragStart == null ? void 0 : onDragStart(args);\n if (!args.defaultPrevented()) {\n clearAll();\n }\n },\n [clearAll, onDragStart]\n );\n return /* @__PURE__ */ React9.createElement(\n data_grid_default,\n {\n accessibilityHeight: p.accessibilityHeight,\n canvasRef: p.canvasRef,\n cellXOffset: p.cellXOffset,\n cellYOffset: p.cellYOffset,\n columns: p.columns,\n disabledRows: p.disabledRows,\n drawCustomCell: p.drawCustomCell,\n drawFocusRing: p.drawFocusRing,\n drawHeader: p.drawHeader,\n enableGroups: p.enableGroups,\n eventTargetRef: p.eventTargetRef,\n experimental: p.experimental,\n fillHandle: p.fillHandle,\n firstColAccessible: p.firstColAccessible,\n fixedShadowX: p.fixedShadowX,\n fixedShadowY: p.fixedShadowY,\n freezeColumns: p.freezeColumns,\n getCellRenderer: p.getCellRenderer,\n getGroupDetails: p.getGroupDetails,\n getRowThemeOverride: p.getRowThemeOverride,\n groupHeaderHeight: p.groupHeaderHeight,\n headerHeight: p.headerHeight,\n headerIcons: p.headerIcons,\n height: p.height,\n highlightRegions: p.highlightRegions,\n imageWindowLoader: p.imageWindowLoader,\n isDraggable: p.isDraggable,\n isFilling: p.isFilling,\n isFocused: p.isFocused,\n onCanvasBlur: p.onCanvasBlur,\n onCanvasFocused: p.onCanvasFocused,\n onCellFocused: p.onCellFocused,\n onContextMenu: p.onContextMenu,\n onDragEnd: p.onDragEnd,\n onDragLeave: p.onDragLeave,\n onDragOverCell: p.onDragOverCell,\n onDrop: p.onDrop,\n onKeyDown: p.onKeyDown,\n onKeyUp: p.onKeyUp,\n onMouseMove: p.onMouseMove,\n prelightCells: p.prelightCells,\n rowHeight: p.rowHeight,\n rows: p.rows,\n selection: p.selection,\n smoothScrollX: p.smoothScrollX,\n smoothScrollY: p.smoothScrollY,\n theme: p.theme,\n trailingRowType: p.trailingRowType,\n translateX: p.translateX,\n translateY: p.translateY,\n verticalBorder: p.verticalBorder,\n width: p.width,\n getCellContent: getMangledCellContent,\n isResizing: resizeCol !== void 0,\n onHeaderMenuClick: onHeaderMenuClickMangled,\n isDragging: dragColActive,\n onItemHovered: onItemHoveredImpl,\n onDragStart: onDragStartImpl,\n onMouseDown: onMouseDownImpl,\n allowResize: canResize,\n onMouseUp: onMouseUpImpl,\n dragAndDropState: dragOffset,\n onMouseMoveRaw: onMouseMove,\n ref: gridRef\n }\n );\n};\nvar data_grid_dnd_default = DataGridDnd;\n\n// src/scrolling-data-grid/infinite-scroller.tsx\nimport * as React10 from \"react\";\n\n// src/common/resize-detector.ts\nimport { useLayoutEffect as useLayoutEffect4, useState as useState6, useRef as useRef6 } from \"react\";\nfunction useResizeDetector(initialSize) {\n const ref = useRef6(null);\n const [size, setSize] = useState6({\n width: initialSize == null ? void 0 : initialSize[0],\n height: initialSize == null ? void 0 : initialSize[1]\n });\n useLayoutEffect4(() => {\n const resizeCallback = (entries) => {\n for (const entry of entries) {\n const { width, height } = entry && entry.contentRect || {};\n setSize((cv) => cv.width === width && cv.height === height ? cv : { width, height });\n }\n };\n const resizeObserver = new window.ResizeObserver(resizeCallback);\n if (ref.current) {\n resizeObserver.observe(ref.current, void 0);\n }\n return () => {\n resizeObserver.disconnect();\n };\n }, [ref.current]);\n return { ref, ...size };\n}\n\n// src/scrolling-data-grid/infinite-scroller.tsx\nvar _exp8 = () => (p) => p.isSafari ? \"scroll\" : \"auto\";\nvar ScrollRegionStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"ScrollRegionStyle\",\n class: \"s1jz82f8\",\n propsAsIs: false,\n vars: {\n \"s1jz82f8-0\": [_exp8()]\n }\n});\nfunction useTouchUpDelayed(delay) {\n const [hasTouches, setHasTouches] = React10.useState(false);\n const cbTimer = React10.useRef(0);\n useEventListener(\"touchstart\", React10.useCallback(() => {\n window.clearTimeout(cbTimer.current);\n setHasTouches(true);\n }, []), window, true, false);\n useEventListener(\"touchend\", React10.useCallback((e) => {\n if (e.touches.length === 0) {\n cbTimer.current = window.setTimeout(() => setHasTouches(false), delay);\n }\n }, [delay]), window, true, false);\n return hasTouches;\n}\nvar InfiniteScroller = (p) => {\n var _a, _b, _c, _d;\n const {\n children,\n clientHeight,\n scrollHeight,\n scrollWidth,\n update,\n draggable,\n className,\n preventDiagonalScrolling = false,\n paddingBottom = 0,\n paddingRight = 0,\n rightElement,\n rightElementProps,\n scrollRef,\n scrollToEnd,\n initialSize,\n minimap\n } = p;\n const padders = [];\n const rightElementSticky = (_a = rightElementProps == null ? void 0 : rightElementProps.sticky) != null ? _a : false;\n const rightElementFill = (_b = rightElementProps == null ? void 0 : rightElementProps.fill) != null ? _b : false;\n const offsetY = React10.useRef(0);\n const lastScrollY = React10.useRef(0);\n const scroller = React10.useRef(null);\n const dpr = window.devicePixelRatio;\n React10.useEffect(() => {\n const el = scroller.current;\n if (el === null || scrollToEnd !== true)\n return;\n el.scrollLeft = el.scrollWidth - el.clientWidth;\n }, [scrollToEnd]);\n const lastScrollPosition = React10.useRef({\n scrollLeft: 0,\n scrollTop: 0,\n lockDirection: void 0\n });\n const rightWrapRef = React10.useRef(null);\n const hasTouches = useTouchUpDelayed(200);\n const [isIdle, setIsIdle] = React10.useState(true);\n const idleTimer = React10.useRef(0);\n React10.useEffect(() => {\n if (!isIdle || hasTouches || lastScrollPosition.current.lockDirection === void 0)\n return;\n const el = scroller.current;\n if (el === null)\n return;\n const [lx, ly] = lastScrollPosition.current.lockDirection;\n if (lx !== void 0) {\n el.scrollLeft = lx;\n } else if (ly !== void 0) {\n el.scrollTop = ly;\n }\n lastScrollPosition.current.lockDirection = void 0;\n }, [hasTouches, isIdle]);\n const onScroll = React10.useCallback(() => {\n var _a2, _b2, _c2, _d2;\n const el = scroller.current;\n if (el === null)\n return;\n let scrollTop = el.scrollTop;\n let scrollLeft = el.scrollLeft;\n const lastScrollTop = lastScrollPosition.current.scrollTop;\n const lastScrollLeft = lastScrollPosition.current.scrollLeft;\n const dx = scrollLeft - lastScrollLeft;\n const dy = scrollTop - lastScrollTop;\n if (hasTouches && dx !== 0 && dy !== 0 && (Math.abs(dx) > 3 || Math.abs(dy) > 3) && preventDiagonalScrolling && lastScrollPosition.current.lockDirection === void 0) {\n lastScrollPosition.current.lockDirection = Math.abs(dx) < Math.abs(dy) ? [lastScrollLeft, void 0] : [void 0, lastScrollTop];\n }\n const lock = lastScrollPosition.current.lockDirection;\n scrollLeft = (_a2 = lock == null ? void 0 : lock[0]) != null ? _a2 : scrollLeft;\n scrollTop = (_b2 = lock == null ? void 0 : lock[1]) != null ? _b2 : scrollTop;\n lastScrollPosition.current.scrollLeft = scrollLeft;\n lastScrollPosition.current.scrollTop = scrollTop;\n const newY = scrollTop;\n const delta = lastScrollY.current - newY;\n const scrollableHeight = el.scrollHeight - el.clientHeight;\n lastScrollY.current = newY;\n if (scrollableHeight > 0 && (Math.abs(delta) > 2e3 || newY === 0 || newY === scrollableHeight) && scrollHeight > el.scrollHeight + 5) {\n const prog = newY / scrollableHeight;\n const recomputed = (scrollHeight - el.clientHeight) * prog;\n offsetY.current = recomputed - newY;\n }\n if (lock !== void 0) {\n window.clearTimeout(idleTimer.current);\n setIsIdle(false);\n idleTimer.current = window.setTimeout(() => setIsIdle(true), 200);\n }\n update({\n x: scrollLeft,\n y: newY + offsetY.current,\n width: el.clientWidth - paddingRight,\n height: el.clientHeight - paddingBottom,\n paddingRight: (_d2 = (_c2 = rightWrapRef.current) == null ? void 0 : _c2.clientWidth) != null ? _d2 : 0\n });\n }, [paddingBottom, paddingRight, scrollHeight, update, preventDiagonalScrolling, hasTouches]);\n const onScrollRef = React10.useRef(onScroll);\n onScrollRef.current = onScroll;\n const lastProps = React10.useRef();\n const didFirstScroll = React10.useRef(false);\n React10.useEffect(() => {\n if (didFirstScroll.current)\n onScroll();\n else\n didFirstScroll.current = true;\n }, [onScroll, paddingBottom, paddingRight]);\n const setRefs = React10.useCallback((instance) => {\n scroller.current = instance;\n if (scrollRef !== void 0) {\n scrollRef.current = instance;\n }\n }, [scrollRef]);\n let key = 0;\n let h = 0;\n padders.push(/* @__PURE__ */ React10.createElement(\"div\", {\n key: key++,\n style: {\n width: scrollWidth,\n height: 0\n }\n }));\n while (h < scrollHeight) {\n const toAdd = Math.min(5e6, scrollHeight - h);\n padders.push(/* @__PURE__ */ React10.createElement(\"div\", {\n key: key++,\n style: {\n width: 0,\n height: toAdd\n }\n }));\n h += toAdd;\n }\n const {\n ref,\n width,\n height\n } = useResizeDetector(initialSize);\n if (((_c = lastProps.current) == null ? void 0 : _c.height) !== height || ((_d = lastProps.current) == null ? void 0 : _d.width) !== width) {\n window.setTimeout(() => onScrollRef.current(), 0);\n lastProps.current = {\n width,\n height\n };\n }\n if ((width != null ? width : 0) === 0 || (height != null ? height : 0) === 0)\n return /* @__PURE__ */ React10.createElement(\"div\", {\n ref\n });\n return /* @__PURE__ */ React10.createElement(\"div\", {\n ref\n }, /* @__PURE__ */ React10.createElement(ScrollRegionStyle, {\n isSafari: browserIsSafari.value\n }, minimap, /* @__PURE__ */ React10.createElement(\"div\", {\n className: \"dvn-underlay\"\n }, children), /* @__PURE__ */ React10.createElement(\"div\", {\n ref: setRefs,\n style: lastProps.current,\n draggable,\n onDragStart: (e) => {\n if (!draggable) {\n e.stopPropagation();\n e.preventDefault();\n }\n },\n className: \"dvn-scroller \" + (className != null ? className : \"\"),\n onScroll\n }, /* @__PURE__ */ React10.createElement(\"div\", {\n className: \"dvn-scroll-inner\" + (rightElement === void 0 ? \" hidden\" : \"\")\n }, /* @__PURE__ */ React10.createElement(\"div\", {\n className: \"dvn-stack\"\n }, padders), rightElement !== void 0 && /* @__PURE__ */ React10.createElement(React10.Fragment, null, !rightElementFill && /* @__PURE__ */ React10.createElement(\"div\", {\n className: \"dvn-spacer\"\n }), /* @__PURE__ */ React10.createElement(\"div\", {\n ref: rightWrapRef,\n style: {\n height,\n maxHeight: clientHeight - Math.ceil(dpr % 1),\n position: \"sticky\",\n top: 0,\n paddingLeft: 1,\n marginBottom: -40,\n marginRight: paddingRight,\n flexGrow: rightElementFill ? 1 : void 0,\n right: rightElementSticky ? paddingRight != null ? paddingRight : 0 : void 0,\n pointerEvents: \"auto\"\n }\n }, rightElement))))));\n};\n\n// src/scrolling-data-grid/scrolling-data-grid.tsx\nimport clamp4 from \"lodash/clamp.js\";\nvar MinimapStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"MinimapStyle\",\n class: \"m15w2ly5\",\n propsAsIs: false\n});\nvar GridScroller = (p) => {\n var _a, _b, _c;\n const {\n columns,\n rows,\n rowHeight,\n headerHeight,\n groupHeaderHeight,\n enableGroups,\n freezeColumns,\n experimental,\n clientSize,\n className,\n onVisibleRegionChanged,\n scrollToEnd,\n scrollRef,\n preventDiagonalScrolling,\n rightElement,\n rightElementProps,\n overscrollX,\n overscrollY,\n showMinimap = false,\n initialSize,\n smoothScrollX = false,\n smoothScrollY = false,\n isDraggable\n } = p;\n const {\n paddingRight,\n paddingBottom\n } = experimental != null ? experimental : {};\n const [clientWidth, clientHeight] = clientSize;\n const last = React11.useRef();\n const lastX = React11.useRef();\n const lastY = React11.useRef();\n const lastSize = React11.useRef();\n const width = React11.useMemo(() => {\n let r = Math.max(0, overscrollX != null ? overscrollX : 0);\n for (const c of columns) {\n r += c.width;\n }\n return r;\n }, [columns, overscrollX]);\n let height = enableGroups ? headerHeight + groupHeaderHeight : headerHeight;\n if (typeof rowHeight === \"number\") {\n height += rows * rowHeight;\n } else {\n for (let r = 0; r < rows; r++) {\n height += rowHeight(r);\n }\n }\n if (overscrollY !== void 0) {\n height += overscrollY;\n }\n const lastArgs = React11.useRef();\n const processArgs = React11.useCallback(() => {\n var _a2, _b2, _c2;\n if (lastArgs.current === void 0)\n return;\n const args = {\n ...lastArgs.current\n };\n let x = 0;\n let tx = args.x < 0 ? -args.x : 0;\n let cellRight = 0;\n let cellX = 0;\n args.x = args.x < 0 ? 0 : args.x;\n let stickyColWidth = 0;\n for (let i = 0; i < freezeColumns; i++) {\n stickyColWidth += columns[i].width;\n }\n for (const c of columns) {\n const cx = x - stickyColWidth;\n if (args.x >= cx + c.width) {\n x += c.width;\n cellX++;\n cellRight++;\n } else if (args.x > cx) {\n x += c.width;\n if (smoothScrollX) {\n tx += cx - args.x;\n } else {\n cellX++;\n }\n cellRight++;\n } else if (args.x + args.width > cx) {\n x += c.width;\n cellRight++;\n } else {\n break;\n }\n }\n let ty = 0;\n let cellY = 0;\n let cellBottom = 0;\n if (typeof rowHeight === \"number\") {\n if (smoothScrollY) {\n cellY = Math.floor(args.y / rowHeight);\n ty = cellY * rowHeight - args.y;\n } else {\n cellY = Math.ceil(args.y / rowHeight);\n }\n cellBottom = Math.ceil(args.height / rowHeight) + cellY;\n if (ty < 0)\n cellBottom++;\n } else {\n let y = 0;\n for (let row = 0; row < rows; row++) {\n const rh = rowHeight(row);\n const cy = y + (smoothScrollY ? 0 : rh / 2);\n if (args.y >= y + rh) {\n y += rh;\n cellY++;\n cellBottom++;\n } else if (args.y > cy) {\n y += rh;\n if (smoothScrollY) {\n ty += cy - args.y;\n } else {\n cellY++;\n }\n cellBottom++;\n } else if (args.y + args.height > rh / 2 + y) {\n y += rh;\n cellBottom++;\n } else {\n break;\n }\n }\n }\n const rect = {\n x: cellX,\n y: cellY,\n width: cellRight - cellX,\n height: cellBottom - cellY\n };\n const oldRect = last.current;\n if (oldRect === void 0 || oldRect.y !== rect.y || oldRect.x !== rect.x || oldRect.height !== rect.height || oldRect.width !== rect.width || lastX.current !== tx || lastY.current !== ty || args.width !== ((_a2 = lastSize.current) == null ? void 0 : _a2[0]) || args.height !== ((_b2 = lastSize.current) == null ? void 0 : _b2[1])) {\n onVisibleRegionChanged == null ? void 0 : onVisibleRegionChanged({\n x: cellX,\n y: cellY,\n width: cellRight - cellX,\n height: cellBottom - cellY\n }, args.width, args.height, (_c2 = args.paddingRight) != null ? _c2 : 0, tx, ty);\n last.current = rect;\n lastX.current = tx;\n lastY.current = ty;\n lastSize.current = [args.width, args.height];\n }\n }, [columns, rowHeight, rows, onVisibleRegionChanged, freezeColumns, smoothScrollX, smoothScrollY]);\n const onScrollUpdate = React11.useCallback((args) => {\n lastArgs.current = args;\n processArgs();\n }, [processArgs]);\n React11.useEffect(() => {\n processArgs();\n }, [processArgs]);\n const scroller = (_a = scrollRef == null ? void 0 : scrollRef.current) != null ? _a : void 0;\n const aspect = clamp4(width / height, 2 / 3, 1.5);\n const maxSize = 200;\n const w = aspect > 1 ? maxSize : Math.ceil(maxSize * aspect);\n const h = aspect > 1 ? Math.ceil(maxSize / aspect) : maxSize;\n const hRatio = w / width;\n const vRatio = h / height;\n const vWidth = Math.min(clientWidth * Math.max(hRatio, 0.01), w);\n const vHeight = Math.min(clientHeight * Math.max(vRatio, 0.01), h);\n const left = ((_b = scroller == null ? void 0 : scroller.scrollLeft) != null ? _b : 0) / (width - clientWidth) * (w - vWidth);\n const top = ((_c = scroller == null ? void 0 : scroller.scrollTop) != null ? _c : 0) / (height - clientHeight) * (h - vHeight);\n const minimap = React11.useMemo(() => {\n if (!showMinimap || vWidth === 0 || vHeight === 0)\n return void 0;\n const handleMouse = (e) => {\n if (scroller === void 0)\n return;\n const bounds = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - bounds.x - vWidth / 2;\n const y = e.clientY - bounds.y - vHeight / 2;\n const newScrollLeft = (width - scroller.clientWidth) * (x / (w - vWidth));\n const newScrollTop = (height - scroller.clientHeight) * (y / (h - vHeight));\n scroller.scrollTo({\n left: newScrollLeft,\n top: newScrollTop,\n behavior: e.type === \"mousemove\" ? \"auto\" : \"smooth\"\n });\n };\n return /* @__PURE__ */ React11.createElement(MinimapStyle, {\n style: {\n width: w,\n height: h\n },\n \"data-testid\": \"minimap-container\",\n onMouseMove: (e) => {\n if (e.buttons !== 1)\n return;\n handleMouse(e);\n },\n onClick: handleMouse\n }, /* @__PURE__ */ React11.createElement(\"div\", {\n className: \"header\"\n }), /* @__PURE__ */ React11.createElement(\"div\", {\n className: \"locationMarker\",\n onDragStart: (e) => e.preventDefault(),\n style: {\n left,\n top,\n width: vWidth,\n height: vHeight,\n borderRadius: Math.min(vWidth, vHeight * 0.2, 9)\n }\n }));\n }, [h, height, left, scroller, showMinimap, top, vHeight, vWidth, w, width]);\n return /* @__PURE__ */ React11.createElement(InfiniteScroller, {\n scrollRef,\n minimap,\n className,\n preventDiagonalScrolling,\n draggable: isDraggable === true || typeof isDraggable === \"string\",\n scrollWidth: width + (paddingRight != null ? paddingRight : 0),\n scrollHeight: height + (paddingBottom != null ? paddingBottom : 0),\n clientHeight,\n rightElement,\n paddingBottom,\n paddingRight,\n rightElementProps,\n update: onScrollUpdate,\n initialSize,\n scrollToEnd\n }, /* @__PURE__ */ React11.createElement(data_grid_dnd_default, {\n eventTargetRef: scrollRef,\n width: clientWidth,\n height: clientHeight,\n accessibilityHeight: p.accessibilityHeight,\n canvasRef: p.canvasRef,\n cellXOffset: p.cellXOffset,\n cellYOffset: p.cellYOffset,\n columns: p.columns,\n disabledRows: p.disabledRows,\n enableGroups: p.enableGroups,\n fillHandle: p.fillHandle,\n firstColAccessible: p.firstColAccessible,\n fixedShadowX: p.fixedShadowX,\n fixedShadowY: p.fixedShadowY,\n freezeColumns: p.freezeColumns,\n getCellContent: p.getCellContent,\n getCellRenderer: p.getCellRenderer,\n getGroupDetails: p.getGroupDetails,\n getRowThemeOverride: p.getRowThemeOverride,\n groupHeaderHeight: p.groupHeaderHeight,\n headerHeight: p.headerHeight,\n highlightRegions: p.highlightRegions,\n imageWindowLoader: p.imageWindowLoader,\n isFilling: p.isFilling,\n isFocused: p.isFocused,\n lockColumns: p.lockColumns,\n maxColumnWidth: p.maxColumnWidth,\n minColumnWidth: p.minColumnWidth,\n onHeaderMenuClick: p.onHeaderMenuClick,\n onMouseMove: p.onMouseMove,\n prelightCells: p.prelightCells,\n rowHeight: p.rowHeight,\n rows: p.rows,\n selection: p.selection,\n theme: p.theme,\n trailingRowType: p.trailingRowType,\n translateX: p.translateX,\n translateY: p.translateY,\n verticalBorder: p.verticalBorder,\n drawCustomCell: p.drawCustomCell,\n drawFocusRing: p.drawFocusRing,\n drawHeader: p.drawHeader,\n experimental: p.experimental,\n gridRef: p.gridRef,\n headerIcons: p.headerIcons,\n isDraggable: p.isDraggable,\n onCanvasBlur: p.onCanvasBlur,\n onCanvasFocused: p.onCanvasFocused,\n onCellFocused: p.onCellFocused,\n onColumnMoved: p.onColumnMoved,\n onColumnResize: p.onColumnResize,\n onColumnResizeEnd: p.onColumnResizeEnd,\n onColumnResizeStart: p.onColumnResizeStart,\n onContextMenu: p.onContextMenu,\n onDragEnd: p.onDragEnd,\n onDragLeave: p.onDragLeave,\n onDragOverCell: p.onDragOverCell,\n onDragStart: p.onDragStart,\n onDrop: p.onDrop,\n onItemHovered: p.onItemHovered,\n onKeyDown: p.onKeyDown,\n onKeyUp: p.onKeyUp,\n onMouseDown: p.onMouseDown,\n onMouseUp: p.onMouseUp,\n onRowMoved: p.onRowMoved,\n smoothScrollX: p.smoothScrollX,\n smoothScrollY: p.smoothScrollY\n }));\n};\nvar scrolling_data_grid_default = GridScroller;\n\n// src/data-grid-search/data-grid-search-style.tsx\nvar _exp9 = () => (p) => p.showSearch ? 0 : 400;\nvar SearchWrapper = /* @__PURE__ */ styled_default(\"div\")({\n name: \"SearchWrapper\",\n class: \"sxep88s\",\n propsAsIs: false,\n vars: {\n \"sxep88s-0\": [_exp9(), \"px\"]\n }\n});\n\n// src/data-grid-search/data-grid-search.tsx\nvar upArrow = /* @__PURE__ */ React12.createElement(\"svg\", { className: \"button-icon\", viewBox: \"0 0 512 512\" }, /* @__PURE__ */ React12.createElement(\n \"path\",\n {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"48\",\n d: \"M112 244l144-144 144 144M256 120v292\"\n }\n));\nvar downArrow = /* @__PURE__ */ React12.createElement(\"svg\", { className: \"button-icon\", viewBox: \"0 0 512 512\" }, /* @__PURE__ */ React12.createElement(\n \"path\",\n {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"48\",\n d: \"M112 268l144 144 144-144M256 392V100\"\n }\n));\nvar closeX = /* @__PURE__ */ React12.createElement(\"svg\", { className: \"button-icon\", viewBox: \"0 0 512 512\" }, /* @__PURE__ */ React12.createElement(\n \"path\",\n {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"32\",\n d: \"M368 368L144 144M368 144L144 368\"\n }\n));\nvar targetSearchTimeMS = 10;\nvar DataGridSearch = (p) => {\n const {\n canvasRef,\n cellYOffset,\n rows,\n columns,\n searchInputRef,\n searchValue,\n searchResults: searchResultsIn,\n onSearchValueChange,\n getCellsForSelection,\n onSearchResultsChanged,\n showSearch = false,\n onSearchClose\n } = p;\n const [searchID] = React12.useState(() => \"search-box-\" + Math.round(Math.random() * 1e3));\n const [searchStringInner, setSearchStringInner] = React12.useState(\"\");\n const searchString = searchValue != null ? searchValue : searchStringInner;\n const setSearchString = React12.useCallback(\n (newVal) => {\n setSearchStringInner(newVal);\n onSearchValueChange == null ? void 0 : onSearchValueChange(newVal);\n },\n [onSearchValueChange]\n );\n const [searchStatus, setSearchStatus] = React12.useState();\n const searchStatusRef = React12.useRef(searchStatus);\n searchStatusRef.current = searchStatus;\n React12.useEffect(() => {\n if (searchResultsIn === void 0)\n return;\n if (searchResultsIn.length > 0) {\n setSearchStatus((cv) => {\n var _a;\n return {\n rowsSearched: rows,\n results: searchResultsIn.length,\n selectedIndex: (_a = cv == null ? void 0 : cv.selectedIndex) != null ? _a : -1\n };\n });\n } else {\n setSearchStatus(void 0);\n }\n }, [rows, searchResultsIn]);\n const abortControllerRef = React12.useRef(new AbortController());\n const searchHandle = React12.useRef();\n const [searchResultsInner, setSearchResultsInner] = React12.useState([]);\n const searchResults = searchResultsIn != null ? searchResultsIn : searchResultsInner;\n const cancelSearch = React12.useCallback(() => {\n if (searchHandle.current !== void 0) {\n window.cancelAnimationFrame(searchHandle.current);\n searchHandle.current = void 0;\n abortControllerRef.current.abort();\n }\n }, []);\n const cellYOffsetRef = React12.useRef(cellYOffset);\n cellYOffsetRef.current = cellYOffset;\n const beginSearch = React12.useCallback(\n (str) => {\n const regex = new RegExp(str.replace(/([$()*+.?[\\\\\\]^{|}-])/g, \"\\\\$1\"), \"i\");\n let startY = cellYOffsetRef.current;\n let searchStride = Math.min(10, rows);\n let rowsSearched = 0;\n setSearchStatus(void 0);\n setSearchResultsInner([]);\n const runningResult = [];\n const tick = async () => {\n var _a, _b;\n if (getCellsForSelection === void 0)\n return;\n const tStart = performance.now();\n const rowsLeft = rows - rowsSearched;\n let data = getCellsForSelection(\n {\n x: 0,\n y: startY,\n width: columns.length,\n height: Math.min(searchStride, rowsLeft, rows - startY)\n },\n abortControllerRef.current.signal\n );\n if (typeof data === \"function\") {\n data = await data();\n }\n let added = false;\n for (const [row, d] of data.entries()) {\n for (const [col, cell] of d.entries()) {\n let testString;\n switch (cell.kind) {\n case GridCellKind.Text:\n case GridCellKind.Number:\n testString = cell.displayData;\n break;\n case GridCellKind.Uri:\n case GridCellKind.Markdown:\n testString = cell.data;\n break;\n case GridCellKind.Boolean:\n testString = typeof cell.data === \"boolean\" ? cell.data.toString() : void 0;\n break;\n case GridCellKind.Image:\n case GridCellKind.Bubble:\n testString = cell.data.join(\"\\u{1F433}\");\n break;\n case GridCellKind.Custom:\n testString = cell.copyData;\n break;\n }\n if (testString !== void 0 && regex.test(testString)) {\n runningResult.push([col, row + startY]);\n added = true;\n }\n }\n }\n const tEnd = performance.now();\n if (added) {\n setSearchResultsInner([...runningResult]);\n }\n rowsSearched += data.length;\n assert(rowsSearched <= rows);\n const selectedIndex = (_b = (_a = searchStatusRef.current) == null ? void 0 : _a.selectedIndex) != null ? _b : -1;\n setSearchStatus({\n results: runningResult.length,\n rowsSearched,\n selectedIndex\n });\n onSearchResultsChanged == null ? void 0 : onSearchResultsChanged(runningResult, selectedIndex);\n if (startY + searchStride >= rows) {\n startY = 0;\n } else {\n startY += searchStride;\n }\n const tElapsed = tEnd - tStart;\n const rounded = Math.max(tElapsed, 1);\n const scalar = targetSearchTimeMS / rounded;\n searchStride = Math.ceil(searchStride * scalar);\n if (rowsSearched < rows && runningResult.length < 1e3) {\n searchHandle.current = window.requestAnimationFrame(tick);\n }\n };\n cancelSearch();\n searchHandle.current = window.requestAnimationFrame(tick);\n },\n [cancelSearch, columns.length, getCellsForSelection, onSearchResultsChanged, rows]\n );\n const onClose = React12.useCallback(() => {\n var _a;\n onSearchClose == null ? void 0 : onSearchClose();\n setSearchStatus(void 0);\n setSearchResultsInner([]);\n onSearchResultsChanged == null ? void 0 : onSearchResultsChanged([], -1);\n cancelSearch();\n (_a = canvasRef == null ? void 0 : canvasRef.current) == null ? void 0 : _a.focus();\n }, [cancelSearch, canvasRef, onSearchClose, onSearchResultsChanged]);\n const onSearchChange = React12.useCallback(\n (event) => {\n setSearchString(event.target.value);\n if (searchResultsIn !== void 0)\n return;\n if (event.target.value === \"\") {\n setSearchStatus(void 0);\n setSearchResultsInner([]);\n cancelSearch();\n } else {\n beginSearch(event.target.value);\n }\n },\n [beginSearch, cancelSearch, setSearchString, searchResultsIn]\n );\n React12.useEffect(() => {\n if (showSearch && searchInputRef.current !== null) {\n setSearchString(\"\");\n searchInputRef.current.focus({ preventScroll: true });\n }\n }, [showSearch, searchInputRef, setSearchString]);\n const onNext = React12.useCallback(\n (ev) => {\n var _a;\n (_a = ev == null ? void 0 : ev.stopPropagation) == null ? void 0 : _a.call(ev);\n if (searchStatus === void 0)\n return;\n const newIndex = (searchStatus.selectedIndex + 1) % searchStatus.results;\n setSearchStatus({\n ...searchStatus,\n selectedIndex: newIndex\n });\n onSearchResultsChanged == null ? void 0 : onSearchResultsChanged(searchResults, newIndex);\n },\n [searchStatus, onSearchResultsChanged, searchResults]\n );\n const onPrev = React12.useCallback(\n (ev) => {\n var _a;\n (_a = ev == null ? void 0 : ev.stopPropagation) == null ? void 0 : _a.call(ev);\n if (searchStatus === void 0)\n return;\n let newIndex = (searchStatus.selectedIndex - 1) % searchStatus.results;\n if (newIndex < 0)\n newIndex += searchStatus.results;\n setSearchStatus({\n ...searchStatus,\n selectedIndex: newIndex\n });\n onSearchResultsChanged == null ? void 0 : onSearchResultsChanged(searchResults, newIndex);\n },\n [onSearchResultsChanged, searchResults, searchStatus]\n );\n const onSearchKeyDown = React12.useCallback(\n (event) => {\n if ((event.ctrlKey || event.metaKey) && event.nativeEvent.code === \"KeyF\" || event.key === \"Escape\") {\n onClose();\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === \"Enter\") {\n if (event.shiftKey) {\n onPrev();\n } else {\n onNext();\n }\n }\n },\n [onClose, onNext, onPrev]\n );\n React12.useEffect(() => {\n return () => {\n cancelSearch();\n };\n }, [cancelSearch]);\n const searchbox = React12.useMemo(() => {\n var _a, _b, _c;\n let resultString;\n if (searchStatus !== void 0) {\n resultString = searchStatus.results >= 1e3 ? `over 1000` : `${searchStatus.results} result${searchStatus.results !== 1 ? \"s\" : \"\"}`;\n if (searchStatus.selectedIndex >= 0) {\n resultString = `${searchStatus.selectedIndex + 1} of ${resultString}`;\n }\n }\n const cancelEvent = (ev) => {\n ev.stopPropagation();\n };\n const rowsSearchedProgress = Math.floor(((_a = searchStatus == null ? void 0 : searchStatus.rowsSearched) != null ? _a : 0) / rows * 100);\n const progressStyle = {\n width: `${rowsSearchedProgress}%`\n };\n return /* @__PURE__ */ React12.createElement(\n SearchWrapper,\n {\n showSearch,\n onMouseDown: cancelEvent,\n onMouseMove: cancelEvent,\n onMouseUp: cancelEvent,\n onClick: cancelEvent\n },\n /* @__PURE__ */ React12.createElement(\"div\", { className: \"search-bar-inner\" }, /* @__PURE__ */ React12.createElement(\n \"input\",\n {\n id: searchID,\n \"aria-hidden\": !showSearch,\n \"data-testid\": \"search-input\",\n ref: searchInputRef,\n onChange: onSearchChange,\n value: searchString,\n tabIndex: showSearch ? void 0 : -1,\n onKeyDownCapture: onSearchKeyDown\n }\n ), /* @__PURE__ */ React12.createElement(\n \"button\",\n {\n \"aria-label\": \"Previous Result\",\n \"aria-hidden\": !showSearch,\n tabIndex: showSearch ? void 0 : -1,\n onClick: onPrev,\n disabled: ((_b = searchStatus == null ? void 0 : searchStatus.results) != null ? _b : 0) === 0\n },\n upArrow\n ), /* @__PURE__ */ React12.createElement(\n \"button\",\n {\n \"aria-label\": \"Next Result\",\n \"aria-hidden\": !showSearch,\n tabIndex: showSearch ? void 0 : -1,\n onClick: onNext,\n disabled: ((_c = searchStatus == null ? void 0 : searchStatus.results) != null ? _c : 0) === 0\n },\n downArrow\n ), onSearchClose !== void 0 && /* @__PURE__ */ React12.createElement(\n \"button\",\n {\n \"aria-label\": \"Close Search\",\n \"aria-hidden\": !showSearch,\n \"data-testid\": \"search-close-button\",\n tabIndex: showSearch ? void 0 : -1,\n onClick: onClose\n },\n closeX\n )),\n searchStatus !== void 0 ? /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(\"div\", { className: \"search-status\" }, /* @__PURE__ */ React12.createElement(\"div\", { \"data-testid\": \"search-result-area\" }, resultString)), /* @__PURE__ */ React12.createElement(\"div\", { className: \"search-progress\", style: progressStyle })) : /* @__PURE__ */ React12.createElement(\"div\", { className: \"search-status\" }, /* @__PURE__ */ React12.createElement(\"label\", { htmlFor: searchID }, \"Type to search\"))\n );\n }, [\n onClose,\n onNext,\n onPrev,\n onSearchChange,\n onSearchClose,\n onSearchKeyDown,\n rows,\n searchStatus,\n searchString,\n showSearch,\n searchID,\n searchInputRef\n ]);\n return /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(\n scrolling_data_grid_default,\n {\n prelightCells: searchResults,\n accessibilityHeight: p.accessibilityHeight,\n canvasRef: p.canvasRef,\n cellXOffset: p.cellXOffset,\n cellYOffset: p.cellYOffset,\n className: p.className,\n clientSize: p.clientSize,\n columns: p.columns,\n disabledRows: p.disabledRows,\n enableGroups: p.enableGroups,\n fillHandle: p.fillHandle,\n firstColAccessible: p.firstColAccessible,\n fixedShadowX: p.fixedShadowX,\n fixedShadowY: p.fixedShadowY,\n freezeColumns: p.freezeColumns,\n getCellContent: p.getCellContent,\n getCellRenderer: p.getCellRenderer,\n getGroupDetails: p.getGroupDetails,\n getRowThemeOverride: p.getRowThemeOverride,\n groupHeaderHeight: p.groupHeaderHeight,\n headerHeight: p.headerHeight,\n highlightRegions: p.highlightRegions,\n imageWindowLoader: p.imageWindowLoader,\n initialSize: p.initialSize,\n isFilling: p.isFilling,\n isFocused: p.isFocused,\n lockColumns: p.lockColumns,\n maxColumnWidth: p.maxColumnWidth,\n minColumnWidth: p.minColumnWidth,\n onHeaderMenuClick: p.onHeaderMenuClick,\n onMouseMove: p.onMouseMove,\n onVisibleRegionChanged: p.onVisibleRegionChanged,\n overscrollX: p.overscrollX,\n overscrollY: p.overscrollY,\n preventDiagonalScrolling: p.preventDiagonalScrolling,\n rightElement: p.rightElement,\n rightElementProps: p.rightElementProps,\n rowHeight: p.rowHeight,\n rows: p.rows,\n scrollRef: p.scrollRef,\n selection: p.selection,\n showMinimap: p.showMinimap,\n theme: p.theme,\n trailingRowType: p.trailingRowType,\n translateX: p.translateX,\n translateY: p.translateY,\n verticalBorder: p.verticalBorder,\n drawCustomCell: p.drawCustomCell,\n drawFocusRing: p.drawFocusRing,\n drawHeader: p.drawHeader,\n experimental: p.experimental,\n gridRef: p.gridRef,\n headerIcons: p.headerIcons,\n isDraggable: p.isDraggable,\n onCanvasBlur: p.onCanvasBlur,\n onCanvasFocused: p.onCanvasFocused,\n onCellFocused: p.onCellFocused,\n onColumnMoved: p.onColumnMoved,\n onColumnResize: p.onColumnResize,\n onColumnResizeEnd: p.onColumnResizeEnd,\n onColumnResizeStart: p.onColumnResizeStart,\n onContextMenu: p.onContextMenu,\n onDragEnd: p.onDragEnd,\n onDragLeave: p.onDragLeave,\n onDragOverCell: p.onDragOverCell,\n onDragStart: p.onDragStart,\n onDrop: p.onDrop,\n onItemHovered: p.onItemHovered,\n onKeyDown: p.onKeyDown,\n onKeyUp: p.onKeyUp,\n onMouseDown: p.onMouseDown,\n onMouseUp: p.onMouseUp,\n onRowMoved: p.onRowMoved,\n smoothScrollX: p.smoothScrollX,\n smoothScrollY: p.smoothScrollY,\n scrollToEnd: p.scrollToEnd\n }\n ), searchbox);\n};\nvar data_grid_search_default = DataGridSearch;\n\n// src/data-editor/group-rename.tsx\nimport React13 from \"react\";\nvar _exp10 = () => (p) => Math.max(16, p.targetHeight - 10);\nvar RenameInput = /* @__PURE__ */ styled_default(\"input\")({\n name: \"RenameInput\",\n class: \"r1kzy40b\",\n propsAsIs: false,\n vars: {\n \"r1kzy40b-0\": [_exp10(), \"px\"]\n }\n});\nvar GroupRename = (p) => {\n const {\n bounds,\n group,\n onClose,\n canvasBounds,\n onFinish\n } = p;\n const [value, setValue] = React13.useState(group);\n return /* @__PURE__ */ React13.createElement(ClickOutsideContainer, {\n style: {\n position: \"absolute\",\n left: bounds.x - canvasBounds.left + 1,\n top: bounds.y - canvasBounds.top,\n width: bounds.width - 2,\n height: bounds.height\n },\n className: \"c1sqdbw3\",\n onClickOutside: onClose\n }, /* @__PURE__ */ React13.createElement(RenameInput, {\n targetHeight: bounds.height,\n \"data-testid\": \"group-rename-input\",\n value,\n onBlur: onClose,\n onFocus: (e) => e.target.setSelectionRange(0, value.length),\n onChange: (e) => setValue(e.target.value),\n onKeyDown: (e) => {\n if (e.key === \"Enter\") {\n onFinish(value);\n } else if (e.key === \"Escape\") {\n onClose();\n }\n },\n autoFocus: true\n }));\n};\n\n// src/data-editor/use-column-sizer.ts\nimport * as React14 from \"react\";\nvar defaultSize = 150;\nfunction measureCell(ctx, cell, theme, getCellRenderer) {\n var _a, _b;\n const r = getCellRenderer(cell);\n return (_b = (_a = r == null ? void 0 : r.measure) == null ? void 0 : _a.call(r, ctx, cell, theme)) != null ? _b : defaultSize;\n}\nfunction measureColumn(ctx, theme, c, colIndex, selectedData, minColumnWidth, maxColumnWidth, removeOutliers, getCellRenderer) {\n let sizes = [];\n if (selectedData !== void 0) {\n sizes.push(\n ...selectedData.map((row) => row[colIndex]).map((cell) => measureCell(ctx, cell, theme, getCellRenderer))\n );\n }\n if (sizes.length > 5 && removeOutliers) {\n const average = sizes.reduce((a, b) => a + b) / sizes.length;\n sizes = sizes.filter((a) => a < average * 2);\n }\n sizes.push(ctx.measureText(c.title).width + 16 + (c.icon === void 0 ? 0 : 28));\n const biggest = Math.max(...sizes);\n const final = Math.max(Math.ceil(minColumnWidth), Math.min(Math.floor(maxColumnWidth), Math.ceil(biggest)));\n return {\n ...c,\n width: final\n };\n}\nfunction useColumnSizer(columns, rows, getCellsForSelection, clientWidth, minColumnWidth, maxColumnWidth, theme, getCellRenderer, abortController) {\n const rowsRef = React14.useRef(rows);\n const getCellsForSelectionRef = React14.useRef(getCellsForSelection);\n const themeRef = React14.useRef(theme);\n rowsRef.current = rows;\n getCellsForSelectionRef.current = getCellsForSelection;\n themeRef.current = theme;\n const [canvas, ctx] = React14.useMemo(() => {\n if (typeof window === \"undefined\")\n return [null, null];\n const offscreen = document.createElement(\"canvas\");\n offscreen.style[\"display\"] = \"none\";\n offscreen.style[\"opacity\"] = \"0\";\n offscreen.style[\"position\"] = \"fixed\";\n return [offscreen, offscreen.getContext(\"2d\", { alpha: false })];\n }, []);\n React14.useLayoutEffect(() => {\n if (canvas)\n document.documentElement.append(canvas);\n return () => {\n canvas == null ? void 0 : canvas.remove();\n };\n }, [canvas]);\n const memoMap = React14.useRef({});\n const lastColumns = React14.useRef();\n const [selectedData, setSelectionData] = React14.useState();\n React14.useLayoutEffect(() => {\n const getCells = getCellsForSelectionRef.current;\n if (getCells === void 0 || columns.every(isSizedGridColumn))\n return;\n let computeRows = Math.max(1, 10 - Math.floor(columns.length / 1e4));\n let tailRows = 0;\n if (computeRows < rowsRef.current && computeRows > 1) {\n computeRows--;\n tailRows = 1;\n }\n const computeArea = {\n x: 0,\n y: 0,\n width: columns.length,\n height: Math.min(rowsRef.current, computeRows)\n };\n const tailComputeArea = {\n x: 0,\n y: rowsRef.current - 1,\n width: columns.length,\n height: 1\n };\n const fn = async () => {\n const getResult = getCells(computeArea, abortController.signal);\n const tailGetResult = tailRows > 0 ? getCells(tailComputeArea, abortController.signal) : void 0;\n let toSet;\n if (typeof getResult === \"object\") {\n toSet = getResult;\n } else {\n toSet = await resolveCellsThunk(getResult);\n }\n if (tailGetResult !== void 0) {\n if (typeof tailGetResult === \"object\") {\n toSet = [...toSet, ...tailGetResult];\n } else {\n toSet = [...toSet, ...await resolveCellsThunk(tailGetResult)];\n }\n }\n lastColumns.current = columns;\n setSelectionData(toSet);\n };\n void fn();\n }, [abortController.signal, columns]);\n return React14.useMemo(() => {\n var _a;\n const getRaw = () => {\n if (columns.every(isSizedGridColumn)) {\n return columns;\n }\n if (ctx === null) {\n return columns.map((c) => {\n if (isSizedGridColumn(c))\n return c;\n return {\n ...c,\n width: defaultSize\n };\n });\n }\n ctx.font = `${themeRef.current.baseFontStyle} ${themeRef.current.fontFamily}`;\n return columns.map((c, colIndex) => {\n if (isSizedGridColumn(c))\n return c;\n if (memoMap.current[c.id] !== void 0) {\n return {\n ...c,\n width: memoMap.current[c.id]\n };\n }\n if (selectedData === void 0 || lastColumns.current !== columns || c.id === void 0) {\n return {\n ...c,\n width: defaultSize\n };\n }\n const r = measureColumn(\n ctx,\n theme,\n c,\n colIndex,\n selectedData,\n minColumnWidth,\n maxColumnWidth,\n true,\n getCellRenderer\n );\n memoMap.current[c.id] = r.width;\n return r;\n });\n };\n let result = getRaw();\n let totalWidth = 0;\n let totalGrow = 0;\n const distribute = [];\n for (const [i, c] of result.entries()) {\n totalWidth += c.width;\n if (c.grow !== void 0 && c.grow > 0) {\n totalGrow += c.grow;\n distribute.push(i);\n }\n }\n if (totalWidth < clientWidth && distribute.length > 0) {\n const writeable = [...result];\n const extra = clientWidth - totalWidth;\n let remaining = extra;\n for (let di = 0; di < distribute.length; di++) {\n const i = distribute[di];\n const weighted = ((_a = result[i].grow) != null ? _a : 0) / totalGrow;\n const toAdd = di === distribute.length - 1 ? remaining : Math.min(remaining, Math.floor(extra * weighted));\n writeable[i] = {\n ...result[i],\n growOffset: toAdd,\n width: result[i].width + toAdd\n };\n remaining -= toAdd;\n }\n result = writeable;\n }\n return result;\n }, [clientWidth, columns, ctx, selectedData, theme, minColumnWidth, maxColumnWidth, getCellRenderer]);\n}\n\n// src/common/is-hotkey.ts\nfunction checkKey(key, args) {\n if (key === void 0)\n return false;\n if (key.length > 1 && key.startsWith(\"_\")) {\n const keycode = Number.parseInt(key.slice(1));\n if (keycode !== args.keyCode)\n return false;\n } else {\n if (key !== args.key)\n return false;\n }\n return true;\n}\nfunction isHotkey(hotkey, args) {\n if (hotkey.length === 0)\n return false;\n let wantCtrl = false;\n let wantShift = false;\n let wantAlt = false;\n let wantMeta = false;\n const split = hotkey.split(\"+\");\n const key = split.pop();\n if (!checkKey(key, args))\n return false;\n for (const accel of split) {\n switch (accel) {\n case \"ctrl\":\n wantCtrl = true;\n break;\n case \"shift\":\n wantShift = true;\n break;\n case \"alt\":\n wantAlt = true;\n break;\n case \"meta\":\n wantMeta = true;\n break;\n case \"primary\":\n if (browserIsOSX.value) {\n wantMeta = true;\n } else {\n wantCtrl = true;\n }\n break;\n }\n }\n return args.altKey === wantAlt && args.ctrlKey === wantCtrl && args.shiftKey === wantShift && args.metaKey === wantMeta;\n}\n\n// src/data-grid/use-selection-behavior.ts\nimport React15 from \"react\";\nfunction useSelectionBehavior(gridSelection, setGridSelection, rangeBehavior, columnBehavior, rowBehavior, rangeSelect) {\n const setCurrent = React15.useCallback(\n (value, expand, append, trigger) => {\n var _a, _b;\n if ((rangeSelect === \"cell\" || rangeSelect === \"multi-cell\") && value !== void 0) {\n value = {\n ...value,\n range: {\n x: value.cell[0],\n y: value.cell[1],\n width: 1,\n height: 1\n }\n };\n }\n const rangeMixable = rangeBehavior === \"mixed\" && (append || trigger === \"drag\");\n const allowColumnCoSelect = columnBehavior === \"mixed\" && rangeMixable;\n const allowRowCoSelect = rowBehavior === \"mixed\" && rangeMixable;\n let newVal = {\n current: value === void 0 ? void 0 : {\n ...value,\n rangeStack: trigger === \"drag\" ? (_b = (_a = gridSelection.current) == null ? void 0 : _a.rangeStack) != null ? _b : [] : []\n },\n columns: allowColumnCoSelect ? gridSelection.columns : CompactSelection.empty(),\n rows: allowRowCoSelect ? gridSelection.rows : CompactSelection.empty()\n };\n const addLastRange = append && (rangeSelect === \"multi-rect\" || rangeSelect === \"multi-cell\");\n if (addLastRange && newVal.current !== void 0 && gridSelection.current !== void 0) {\n newVal = {\n ...newVal,\n current: {\n ...newVal.current,\n rangeStack: [...gridSelection.current.rangeStack, gridSelection.current.range]\n }\n };\n }\n setGridSelection(newVal, expand);\n },\n [columnBehavior, gridSelection, rangeBehavior, rangeSelect, rowBehavior, setGridSelection]\n );\n const setSelectedRows = React15.useCallback(\n (newRows, append, allowMixed) => {\n newRows = newRows != null ? newRows : gridSelection.rows;\n if (append !== void 0) {\n newRows = newRows.add(append);\n }\n let newVal;\n if (rowBehavior === \"exclusive\" && newRows.length > 0) {\n newVal = {\n current: void 0,\n columns: CompactSelection.empty(),\n rows: newRows\n };\n } else {\n const rangeMixed = allowMixed && rangeBehavior === \"mixed\";\n const columnMixed = allowMixed && columnBehavior === \"mixed\";\n const current = !rangeMixed ? void 0 : gridSelection.current;\n newVal = {\n current,\n columns: columnMixed ? gridSelection.columns : CompactSelection.empty(),\n rows: newRows\n };\n }\n setGridSelection(newVal, false);\n },\n [columnBehavior, gridSelection, rangeBehavior, rowBehavior, setGridSelection]\n );\n const setSelectedColumns = React15.useCallback(\n (newCols, append, allowMixed) => {\n newCols = newCols != null ? newCols : gridSelection.columns;\n if (append !== void 0) {\n newCols = newCols.add(append);\n }\n let newVal;\n if (columnBehavior === \"exclusive\" && newCols.length > 0) {\n newVal = {\n current: void 0,\n rows: CompactSelection.empty(),\n columns: newCols\n };\n } else {\n const rangeMixed = allowMixed && rangeBehavior === \"mixed\";\n const rowMixed = allowMixed && rowBehavior === \"mixed\";\n const current = !rangeMixed ? void 0 : gridSelection.current;\n newVal = {\n current,\n rows: rowMixed ? gridSelection.rows : CompactSelection.empty(),\n columns: newCols\n };\n }\n setGridSelection(newVal, false);\n },\n [columnBehavior, gridSelection, rangeBehavior, rowBehavior, setGridSelection]\n );\n return [setCurrent, setSelectedRows, setSelectedColumns];\n}\n\n// src/data-editor/use-cells-for-selection.ts\nimport * as React16 from \"react\";\nfunction useCellsForSelection(getCellsForSelectionIn, getCellContent, rowMarkerOffset, abortController, rows) {\n const getCellsForSelectionDirectWhenValid = React16.useCallback(\n (rect) => {\n var _a;\n if (getCellsForSelectionIn === true) {\n const result = [];\n for (let y = rect.y; y < rect.y + rect.height; y++) {\n const row = [];\n for (let x = rect.x; x < rect.x + rect.width; x++) {\n if (x < 0 || y >= rows) {\n row.push({\n kind: GridCellKind.Loading,\n allowOverlay: false\n });\n } else {\n row.push(getCellContent([x, y]));\n }\n }\n result.push(row);\n }\n return result;\n }\n return (_a = getCellsForSelectionIn == null ? void 0 : getCellsForSelectionIn(rect, abortController.signal)) != null ? _a : [];\n },\n [abortController.signal, getCellContent, getCellsForSelectionIn, rows]\n );\n const getCellsForSelectionDirect = getCellsForSelectionIn !== void 0 ? getCellsForSelectionDirectWhenValid : void 0;\n const getCellsForSelectionMangled = React16.useCallback(\n (rect) => {\n if (getCellsForSelectionDirect === void 0)\n return [];\n const newRect = {\n ...rect,\n x: rect.x - rowMarkerOffset\n };\n if (newRect.x < 0) {\n newRect.x = 0;\n newRect.width--;\n const r = getCellsForSelectionDirect(newRect, abortController.signal);\n if (typeof r === \"function\") {\n return async () => (\n // eslint-disable-next-line unicorn/no-await-expression-member\n (await r()).map((row) => [\n { kind: GridCellKind.Loading, allowOverlay: false },\n ...row\n ])\n );\n }\n return r.map((row) => [{ kind: GridCellKind.Loading, allowOverlay: false }, ...row]);\n }\n return getCellsForSelectionDirect(newRect, abortController.signal);\n },\n [abortController.signal, getCellsForSelectionDirect, rowMarkerOffset]\n );\n const getCellsForSelection = getCellsForSelectionIn !== void 0 ? getCellsForSelectionMangled : void 0;\n return [getCellsForSelection, getCellsForSelectionDirect];\n}\n\n// src/data-editor/copy-paste.ts\nfunction convertCellToBuffer(cell) {\n var _a, _b;\n if (cell.copyData !== void 0) {\n return {\n formatted: cell.copyData,\n rawValue: cell.copyData,\n format: \"string\"\n };\n }\n switch (cell.kind) {\n case GridCellKind.Boolean:\n return {\n formatted: cell.data === true ? \"TRUE\" : cell.data === false ? \"FALSE\" : cell.data === BooleanIndeterminate ? \"INDETERMINATE\" : \"\",\n rawValue: cell.data,\n format: \"boolean\"\n };\n case GridCellKind.Custom:\n return {\n formatted: cell.copyData,\n rawValue: cell.copyData,\n format: \"string\"\n };\n case GridCellKind.Image:\n case GridCellKind.Bubble:\n return {\n formatted: cell.data,\n rawValue: cell.data,\n format: \"string-array\"\n };\n case GridCellKind.Drilldown:\n return {\n formatted: cell.data.map((x) => x.text),\n rawValue: cell.data.map((x) => x.text),\n format: \"string-array\"\n };\n case GridCellKind.Text:\n return {\n formatted: (_a = cell.displayData) != null ? _a : cell.data,\n rawValue: cell.data,\n format: \"string\"\n };\n case GridCellKind.Uri:\n return {\n formatted: (_b = cell.displayData) != null ? _b : cell.data,\n rawValue: cell.data,\n format: \"url\"\n };\n case GridCellKind.Markdown:\n case GridCellKind.RowID:\n return {\n formatted: cell.data,\n rawValue: cell.data,\n format: \"string\"\n };\n case GridCellKind.Number:\n return {\n formatted: cell.displayData,\n rawValue: cell.data,\n format: \"number\"\n };\n case GridCellKind.Loading:\n return {\n formatted: \"#LOADING\",\n rawValue: \"\",\n format: \"string\"\n };\n case GridCellKind.Protected:\n return {\n formatted: \"************\",\n rawValue: \"\",\n format: \"string\"\n };\n default:\n assertNever(cell);\n }\n}\nfunction createBufferFromGridCells(cells, columnIndexes) {\n const copyBuffer = cells.map((row, index) => {\n const mappedIndex = columnIndexes[index];\n return row.map((cell) => {\n if (cell.span !== void 0 && cell.span[0] !== mappedIndex)\n return {\n formatted: \"\",\n rawValue: \"\",\n format: \"string\"\n };\n return convertCellToBuffer(cell);\n });\n });\n return copyBuffer;\n}\nfunction escapeIfNeeded(str, withComma) {\n if ((withComma ? /[\\t\\n\",]/ : /[\\t\\n\"]/).test(str)) {\n str = `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\nfunction createTextBuffer(copyBuffer) {\n var _a, _b;\n const lines = [];\n for (const row of copyBuffer) {\n const line = [];\n for (const cell of row) {\n if (cell.format === \"url\") {\n line.push((_b = (_a = cell.rawValue) == null ? void 0 : _a.toString()) != null ? _b : \"\");\n } else if (cell.format === \"string-array\") {\n line.push(cell.formatted.map((x) => escapeIfNeeded(x, true)).join(\",\"));\n } else {\n line.push(escapeIfNeeded(cell.formatted, false));\n }\n }\n lines.push(line.join(\"\t\"));\n }\n return lines.join(\"\\n\");\n}\nfunction formatHtmlTextContent(text) {\n return text.replace(/\\t/g, \" \").replace(/ {2,}/g, (match) => \"<span> </span>\".repeat(match.length));\n}\nfunction formatHtmlAttributeContent(attrText) {\n return '\"' + attrText.replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/</g, \"<\").replace(/>/g, \">\") + '\"';\n}\nfunction restoreHtmlEntities(str) {\n return str.replace(/"/g, '\"').replace(/</g, \"<\").replace(/>/g, \">\").replace(/&/g, \"&\");\n}\nfunction createHtmlBuffer(copyBuffer) {\n var _a, _b;\n const lines = [];\n lines.push(`<style type=\"text/css\"><!--br {mso-data-placement:same-cell;}--></style>`, \"<table><tbody>\");\n for (const row of copyBuffer) {\n lines.push(\"<tr>\");\n for (const cell of row) {\n const formatStr = `gdg-format=\"${cell.format}\"`;\n if (cell.format === \"url\") {\n lines.push(\n `<td ${formatStr}><a href=\"${cell.rawValue}\">${formatHtmlTextContent(cell.formatted)}</a></td>`\n );\n } else {\n if (cell.format === \"string-array\") {\n lines.push(\n `<td ${formatStr}><ol>${cell.formatted.map(\n (x, ind) => `<li gdg-raw-value=${formatHtmlAttributeContent(cell.rawValue[ind])}>` + formatHtmlTextContent(x) + \"</li>\"\n ).join(\"\")}</ol></td>`\n );\n } else {\n lines.push(\n `<td gdg-raw-value=${formatHtmlAttributeContent(\n (_b = (_a = cell.rawValue) == null ? void 0 : _a.toString()) != null ? _b : \"\"\n )} ${formatStr}>${formatHtmlTextContent(cell.formatted)}</td>`\n );\n }\n }\n }\n lines.push(\"</tr>\");\n }\n lines.push(\"</tbody></table>\");\n return lines.join(\"\");\n}\nfunction getCopyBufferContents(cells, columnIndexes) {\n const copyBuffer = createBufferFromGridCells(cells, columnIndexes);\n const textPlain = createTextBuffer(copyBuffer);\n const textHtml = createHtmlBuffer(copyBuffer);\n return {\n textPlain,\n textHtml\n };\n}\nfunction decodeHTML(html) {\n var _a, _b, _c, _d, _e, _f;\n const fragment = document.createElement(\"html\");\n fragment.innerHTML = html.replace(/ /g, \" \");\n const tableEl = fragment.querySelector(\"table\");\n if (tableEl === null)\n return void 0;\n const walkEl = [tableEl];\n const result = [];\n let current;\n while (walkEl.length > 0) {\n const el = walkEl.pop();\n if (el === void 0)\n break;\n if (el instanceof HTMLTableElement || el.nodeName === \"TBODY\") {\n walkEl.push(...[...el.children].reverse());\n } else if (el instanceof HTMLTableRowElement) {\n if (current !== void 0) {\n result.push(current);\n }\n current = [];\n walkEl.push(...[...el.children].reverse());\n } else if (el instanceof HTMLTableCellElement) {\n const clone = el.cloneNode(true);\n const firstTagIsPara = clone.children.length === 1 && clone.children[0].nodeName === \"P\";\n const para = firstTagIsPara ? clone.children[0] : null;\n const isAppleNumbers = (para == null ? void 0 : para.children.length) === 1 && para.children[0].nodeName === \"FONT\";\n const brs = clone.querySelectorAll(\"br\");\n for (const br of brs) {\n br.replaceWith(\"\\n\");\n }\n const attributeValue = clone.getAttribute(\"gdg-raw-value\");\n const formatValue = (_a = clone.getAttribute(\"gdg-format\")) != null ? _a : \"string\";\n if (clone.querySelector(\"a\") !== null) {\n current == null ? void 0 : current.push({\n // raw value is the href\n rawValue: (_c = (_b = clone.querySelector(\"a\")) == null ? void 0 : _b.getAttribute(\"href\")) != null ? _c : \"\",\n formatted: (_d = clone.textContent) != null ? _d : \"\",\n format: formatValue\n });\n } else if (clone.querySelector(\"ol\") !== null) {\n const rawValues = clone.querySelectorAll(\"li\");\n current == null ? void 0 : current.push({\n rawValue: [...rawValues].map((x) => {\n var _a2;\n return (_a2 = x.getAttribute(\"gdg-raw-value\")) != null ? _a2 : \"\";\n }),\n formatted: [...rawValues].map((x) => {\n var _a2;\n return (_a2 = x.textContent) != null ? _a2 : \"\";\n }),\n format: \"string-array\"\n });\n } else if (attributeValue !== null) {\n current == null ? void 0 : current.push({\n rawValue: restoreHtmlEntities(attributeValue),\n formatted: (_e = clone.textContent) != null ? _e : \"\",\n format: formatValue\n });\n } else {\n let textContent = (_f = clone.textContent) != null ? _f : \"\";\n if (isAppleNumbers) {\n textContent = textContent.replace(/\\n(?!\\n)/g, \"\");\n }\n current == null ? void 0 : current.push({\n rawValue: textContent != null ? textContent : \"\",\n formatted: textContent != null ? textContent : \"\",\n format: formatValue\n });\n }\n }\n }\n if (current !== void 0) {\n result.push(current);\n }\n return result;\n}\n\n// src/data-editor/data-editor-fns.ts\nfunction expandSelection(newVal, getCellsForSelection, rowMarkerOffset, spanRangeBehavior, abortController) {\n var _a, _b;\n const origVal = newVal;\n if (spanRangeBehavior === \"allowPartial\" || newVal.current === void 0 || getCellsForSelection === void 0)\n return newVal;\n let isFilled = false;\n do {\n if ((newVal == null ? void 0 : newVal.current) === void 0)\n break;\n const r = (_a = newVal.current) == null ? void 0 : _a.range;\n const cells = [];\n if (r.width > 2) {\n const leftCells = getCellsForSelection(\n {\n x: r.x,\n y: r.y,\n width: 1,\n height: r.height\n },\n abortController.signal\n );\n if (typeof leftCells === \"function\") {\n return origVal;\n }\n cells.push(...leftCells);\n const rightCells = getCellsForSelection(\n {\n x: r.x + r.width - 1,\n y: r.y,\n width: 1,\n height: r.height\n },\n abortController.signal\n );\n if (typeof rightCells === \"function\") {\n return origVal;\n }\n cells.push(...rightCells);\n } else {\n const rCells = getCellsForSelection(\n {\n x: r.x,\n y: r.y,\n width: r.width,\n height: r.height\n },\n abortController.signal\n );\n if (typeof rCells === \"function\") {\n return origVal;\n }\n cells.push(...rCells);\n }\n let left = r.x - rowMarkerOffset;\n let right = r.x + r.width - 1 - rowMarkerOffset;\n for (const row of cells) {\n for (const cell of row) {\n if (cell.span === void 0)\n continue;\n left = Math.min(cell.span[0], left);\n right = Math.max(cell.span[1], right);\n }\n }\n if (left === r.x - rowMarkerOffset && right === r.x + r.width - 1 - rowMarkerOffset) {\n isFilled = true;\n } else {\n newVal = {\n current: {\n cell: (_b = newVal.current.cell) != null ? _b : [0, 0],\n range: {\n x: left + rowMarkerOffset,\n y: r.y,\n width: right - left + 1,\n height: r.height\n },\n rangeStack: newVal.current.rangeStack\n },\n columns: newVal.columns,\n rows: newVal.rows\n };\n }\n } while (!isFilled);\n return newVal;\n}\nfunction descape(s) {\n if (s.startsWith('\"') && s.endsWith('\"')) {\n s = s.slice(1, -1).replace(/\"\"/g, '\"');\n }\n return s;\n}\nfunction unquote(str) {\n let State;\n ((State2) => {\n State2[State2[\"None\"] = 0] = \"None\";\n State2[State2[\"inString\"] = 1] = \"inString\";\n State2[State2[\"inStringPostQuote\"] = 2] = \"inStringPostQuote\";\n })(State || (State = {}));\n const result = [];\n let current = [];\n let start = 0;\n let state = 0;\n str = str.replace(/\\r\\n/g, \"\\n\");\n let index = 0;\n for (const char of str) {\n switch (state) {\n case 0:\n if (char === \"\t\" || char === \"\\n\") {\n current.push(str.slice(start, index));\n start = index + 1;\n if (char === \"\\n\") {\n result.push(current);\n current = [];\n }\n } else if (char === `\"`) {\n state = 1;\n }\n break;\n case 1:\n if (char === `\"`) {\n state = 2;\n }\n break;\n case 2:\n if (char === '\"') {\n state = 1;\n } else if (char === \"\t\" || char === \"\\n\") {\n current.push(descape(str.slice(start, index)));\n start = index + 1;\n if (char === \"\\n\") {\n result.push(current);\n current = [];\n }\n state = 0;\n } else {\n state = 0;\n }\n break;\n }\n index++;\n }\n if (start < str.length) {\n current.push(descape(str.slice(start, str.length)));\n }\n result.push(current);\n return result.map((r) => r.map((c) => ({ rawValue: c, formatted: c, format: \"string\" })));\n}\nfunction copyToClipboard(cells, columnIndexes, e) {\n var _a;\n const copyBuffer = getCopyBufferContents(cells, columnIndexes);\n const copyWithWriteText = (s) => {\n var _a2;\n void ((_a2 = window.navigator.clipboard) == null ? void 0 : _a2.writeText(s));\n };\n const copyWithWrite = (s, html) => {\n var _a2;\n if (((_a2 = window.navigator.clipboard) == null ? void 0 : _a2.write) === void 0)\n return false;\n void window.navigator.clipboard.write([\n new ClipboardItem({\n // eslint-disable-next-line sonarjs/no-duplicate-string\n \"text/plain\": new Blob([s], { type: \"text/plain\" }),\n \"text/html\": new Blob([html], {\n type: \"text/html\"\n })\n })\n ]);\n return true;\n };\n const copyWithClipboardData = (s, html) => {\n var _a2, _b;\n try {\n if (e === void 0 || e.clipboardData === null)\n throw new Error(\"No clipboard data\");\n (_a2 = e == null ? void 0 : e.clipboardData) == null ? void 0 : _a2.setData(\"text/plain\", s);\n (_b = e == null ? void 0 : e.clipboardData) == null ? void 0 : _b.setData(\"text/html\", html);\n } catch (e2) {\n if (!copyWithWrite(s, html)) {\n copyWithWriteText(s);\n }\n }\n };\n if (((_a = window.navigator.clipboard) == null ? void 0 : _a.write) !== void 0 || (e == null ? void 0 : e.clipboardData) !== void 0) {\n void copyWithClipboardData(copyBuffer.textPlain, copyBuffer.textHtml);\n } else {\n void copyWithWriteText(copyBuffer.textPlain);\n }\n e == null ? void 0 : e.preventDefault();\n}\n\n// src/data-editor-container/data-grid-container.tsx\nimport * as React17 from \"react\";\nfunction toCss(x) {\n if (typeof x === \"string\")\n return x;\n return `${x}px`;\n}\nvar _exp11 = () => (p) => p.innerWidth;\nvar _exp22 = () => (p) => p.innerHeight;\nvar Wrapper = /* @__PURE__ */ styled_default(\"div\")({\n name: \"Wrapper\",\n class: \"wzg2m5k\",\n propsAsIs: false,\n vars: {\n \"wzg2m5k-0\": [_exp11()],\n \"wzg2m5k-1\": [_exp22()]\n }\n});\nvar DataEditorContainer = (p) => {\n const {\n inWidth,\n inHeight,\n children,\n ...rest\n } = p;\n return /* @__PURE__ */ React17.createElement(Wrapper, {\n innerHeight: toCss(inHeight),\n innerWidth: toCss(inWidth),\n ...rest\n }, children);\n};\n\n// src/data-grid/cells/boolean-cell.tsx\nfunction toggleBoolean(data) {\n return data !== true;\n}\nvar defaultCellMaxSize = 20;\nvar booleanCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"false\";\n },\n kind: GridCellKind.Boolean,\n needsHover: true,\n useLabel: false,\n needsHoverPosition: true,\n measure: () => 50,\n draw: (a) => {\n var _a;\n return drawBoolean(a, a.cell.data, booleanCellIsEditable(a.cell), (_a = a.cell.maxSize) != null ? _a : defaultCellMaxSize);\n },\n onDelete: (c) => ({\n ...c,\n data: false\n }),\n onClick: (e) => {\n var _a, _b;\n const { cell, posX: pointerX, posY: pointerY, bounds, theme } = e;\n const { width, height, x: cellX, y: cellY } = bounds;\n const maxWidth = (_a = cell.maxSize) != null ? _a : defaultCellMaxSize;\n const cellCenterY = Math.floor(bounds.y + height / 2);\n const checkBoxWidth = getSquareWidth(maxWidth, height, theme.cellVerticalPadding);\n const posX = getSquareXPosFromAlign(\n (_b = cell.contentAlign) != null ? _b : \"center\",\n cellX,\n width,\n theme.cellHorizontalPadding,\n checkBoxWidth\n );\n const bb = getSquareBB(posX, cellCenterY, checkBoxWidth);\n const checkBoxClicked = pointIsWithinBB(cellX + pointerX, cellY + pointerY, bb);\n if (booleanCellIsEditable(cell) && checkBoxClicked) {\n return {\n ...cell,\n data: toggleBoolean(cell.data)\n };\n }\n return void 0;\n },\n onPaste: (toPaste, cell) => {\n let newVal = BooleanEmpty;\n if (toPaste.toLowerCase() === \"true\") {\n newVal = true;\n } else if (toPaste.toLowerCase() === \"false\") {\n newVal = false;\n } else if (toPaste.toLowerCase() === \"indeterminate\") {\n newVal = BooleanIndeterminate;\n }\n return newVal === cell.data ? void 0 : {\n ...cell,\n data: newVal\n };\n }\n};\n\n// src/data-editor/use-autoscroll.ts\nimport React18 from \"react\";\nvar maxPxPerMs = 2;\nvar msToFullSpeed = 1300;\nfunction useAutoscroll(scrollDirection, scrollRef) {\n const speedScalar = React18.useRef(0);\n const [xDir, yDir] = scrollDirection != null ? scrollDirection : [0, 0];\n React18.useEffect(() => {\n if (xDir === 0 && yDir === 0) {\n speedScalar.current = 0;\n return;\n }\n let lastTime = 0;\n const scrollFn = (curTime) => {\n var _a;\n if (lastTime === 0) {\n lastTime = curTime;\n } else {\n const step = curTime - lastTime;\n speedScalar.current = Math.min(1, speedScalar.current + step / msToFullSpeed);\n const motion = speedScalar.current ** 1.618 * step * maxPxPerMs;\n (_a = scrollRef.current) == null ? void 0 : _a.scrollBy(xDir * motion, yDir * motion);\n lastTime = curTime;\n }\n t = window.requestAnimationFrame(scrollFn);\n };\n let t = window.requestAnimationFrame(scrollFn);\n return () => window.cancelAnimationFrame(t);\n }, [scrollRef, xDir, yDir]);\n}\n\n// src/data-grid/cells/bubble-cell.tsx\nimport * as React20 from \"react\";\n\n// src/data-grid-overlay-editor/private/bubbles-overlay-editor.tsx\nimport * as React19 from \"react\";\n\n// src/data-grid-overlay-editor/private/bubbles-overlay-editor-style.tsx\nvar BubblesOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"BubblesOverlayEditorStyle\",\n class: \"b1bqsp5z\",\n propsAsIs: false\n});\n\n// src/data-grid-overlay-editor/private/bubbles-overlay-editor.tsx\nvar BubblesOverlayEditor = (p) => {\n const { bubbles } = p;\n return /* @__PURE__ */ React19.createElement(BubblesOverlayEditorStyle, null, bubbles.map((b, i) => /* @__PURE__ */ React19.createElement(\"div\", { key: i, className: \"boe-bubble\" }, b)), /* @__PURE__ */ React19.createElement(\"textarea\", { className: \"gdg-input\", autoFocus: true }));\n};\nvar bubbles_overlay_editor_default = BubblesOverlayEditor;\n\n// src/data-grid/cells/bubble-cell.tsx\nvar bubbleCellRenderer = {\n getAccessibilityString: (c) => makeAccessibilityStringForArray(c.data),\n kind: GridCellKind.Bubble,\n needsHover: false,\n useLabel: false,\n needsHoverPosition: false,\n measure: (ctx, cell, t) => cell.data.reduce((acc, data) => ctx.measureText(data).width + acc + 20, 0) + 2 * t.cellHorizontalPadding - 4,\n draw: (a) => drawBubbles(a, a.cell.data),\n provideEditor: () => (p) => {\n const { value } = p;\n return /* @__PURE__ */ React20.createElement(bubbles_overlay_editor_default, { bubbles: value.data });\n },\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/drilldown-cell.tsx\nimport * as React22 from \"react\";\n\n// src/data-grid-overlay-editor/private/drilldown-overlay-editor.tsx\nimport * as React21 from \"react\";\nvar DrilldownOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"DrilldownOverlayEditorStyle\",\n class: \"df2kt4a\",\n propsAsIs: false\n});\nvar DrilldownOverlayEditor = (p) => {\n const {\n drilldowns\n } = p;\n return /* @__PURE__ */ React21.createElement(DrilldownOverlayEditorStyle, null, drilldowns.map((d, i) => /* @__PURE__ */ React21.createElement(\"div\", {\n key: i,\n className: \"doe-bubble\"\n }, d.img !== void 0 && /* @__PURE__ */ React21.createElement(\"img\", {\n src: d.img\n }), /* @__PURE__ */ React21.createElement(\"div\", null, d.text))));\n};\nvar drilldown_overlay_editor_default = DrilldownOverlayEditor;\n\n// src/data-grid/cells/drilldown-cell.tsx\nvar drilldownCellRenderer = {\n getAccessibilityString: (c) => makeAccessibilityStringForArray(c.data.map((d) => d.text)),\n kind: GridCellKind.Drilldown,\n needsHover: false,\n useLabel: false,\n needsHoverPosition: false,\n measure: (ctx, cell, t) => cell.data.reduce(\n (acc, data) => ctx.measureText(data.text).width + acc + 20 + (data.img !== void 0 ? 18 : 0),\n 0\n ) + 2 * t.cellHorizontalPadding - 4,\n draw: (a) => drawDrilldownCell(a, a.cell.data),\n provideEditor: () => (p) => {\n const { value } = p;\n return /* @__PURE__ */ React22.createElement(drilldown_overlay_editor_default, { drilldowns: value.data });\n },\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/image-cell.tsx\nimport * as React24 from \"react\";\n\n// src/data-grid-overlay-editor/private/image-overlay-editor.tsx\nimport * as React23 from \"react\";\n\n// src/data-grid-overlay-editor/private/image-overlay-editor-style.tsx\nvar ImageOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"ImageOverlayEditorStyle\",\n class: \"i1eozt10\",\n propsAsIs: false\n});\n\n// src/data-grid-overlay-editor/private/image-overlay-editor.tsx\nimport { Carousel } from \"react-responsive-carousel\";\nvar ImageOverlayEditor = (p) => {\n const { urls, canWrite, onEditClick, renderImage } = p;\n const filtered = urls.filter((u) => u !== \"\");\n if (filtered.length === 0) {\n return null;\n }\n const allowMove = filtered.length > 1;\n return /* @__PURE__ */ React23.createElement(ImageOverlayEditorStyle, { \"data-testid\": \"GDG-default-image-overlay-editor\" }, /* @__PURE__ */ React23.createElement(\n Carousel,\n {\n showArrows: allowMove,\n showThumbs: false,\n swipeable: allowMove,\n emulateTouch: allowMove,\n infiniteLoop: allowMove\n },\n filtered.map((url) => {\n var _a;\n const innerContent = (_a = renderImage == null ? void 0 : renderImage(url)) != null ? _a : /* @__PURE__ */ React23.createElement(\"img\", { draggable: false, src: url });\n return /* @__PURE__ */ React23.createElement(\"div\", { className: \"centering-container\", key: url }, innerContent);\n })\n ), canWrite && onEditClick && /* @__PURE__ */ React23.createElement(\"button\", { className: \"edit-icon\", onClick: onEditClick }, /* @__PURE__ */ React23.createElement(EditPencil, null)));\n};\n\n// src/data-grid/cells/image-cell.tsx\nvar imageCellRenderer = {\n getAccessibilityString: (c) => c.data.join(\", \"),\n kind: GridCellKind.Image,\n needsHover: false,\n useLabel: false,\n needsHoverPosition: false,\n draw: (a) => {\n var _a;\n return drawImage(a, (_a = a.cell.displayData) != null ? _a : a.cell.data, a.cell.rounding, a.cell.contentAlign);\n },\n measure: (_ctx, cell) => cell.data.length * 50,\n onDelete: (c) => ({\n ...c,\n data: []\n }),\n provideEditor: () => (p) => {\n const { value, onFinishedEditing, imageEditorOverride } = p;\n const ImageEditor = imageEditorOverride != null ? imageEditorOverride : ImageOverlayEditor;\n return /* @__PURE__ */ React24.createElement(\n ImageEditor,\n {\n urls: value.data,\n canWrite: value.allowAdd,\n onCancel: onFinishedEditing,\n onChange: (newImage) => {\n onFinishedEditing({\n ...value,\n data: [newImage]\n });\n }\n }\n );\n },\n onPaste: (toPaste, cell) => {\n toPaste = toPaste.trim();\n const fragments = toPaste.split(\",\");\n const uris = fragments.map((f) => {\n try {\n new URL(f);\n return f;\n } catch (e) {\n return void 0;\n }\n }).filter((x) => x !== void 0);\n if (uris.length === cell.data.length && uris.every((u, i) => u === cell.data[i]))\n return void 0;\n return {\n ...cell,\n data: uris\n };\n }\n};\n\n// src/data-grid/cells/loading-cell.tsx\nvar loadingCellRenderer = {\n getAccessibilityString: () => \"\",\n kind: GridCellKind.Loading,\n needsHover: false,\n useLabel: false,\n needsHoverPosition: false,\n measure: () => 120,\n draw: () => void 0,\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/markdown-cell.tsx\nimport * as React28 from \"react\";\n\n// src/data-grid-overlay-editor/private/markdown-overlay-editor.tsx\nimport * as React27 from \"react\";\n\n// src/markdown-div/markdown-div.tsx\nimport React25 from \"react\";\nimport { marked } from \"marked\";\n\n// src/markdown-div/private/markdown-container.tsx\nvar MarkdownContainer = /* @__PURE__ */ styled_default(\"div\")({\n name: \"MarkdownContainer\",\n class: \"mlbeo71\",\n propsAsIs: false\n});\n\n// src/markdown-div/markdown-div.tsx\nvar MarkdownDiv = class extends React25.PureComponent {\n constructor() {\n super(...arguments);\n this.targetElement = null;\n this.containerRefHook = (element) => {\n this.targetElement = element;\n this.renderMarkdownIntoDiv();\n };\n }\n renderMarkdownIntoDiv() {\n const { targetElement, props } = this;\n if (targetElement === null)\n return;\n const { contents, createNode } = props;\n const innerHTML = marked(contents);\n const childRange = document.createRange();\n childRange.selectNodeContents(targetElement);\n childRange.deleteContents();\n let newChild = createNode == null ? void 0 : createNode(innerHTML);\n if (newChild === void 0) {\n const childDoc = document.createElement(\"template\");\n childDoc.innerHTML = innerHTML;\n newChild = childDoc.content;\n }\n targetElement.append(newChild);\n const tags = targetElement.getElementsByTagName(\"a\");\n for (const tag of tags) {\n tag.target = \"_blank\";\n tag.rel = \"noreferrer noopener\";\n }\n }\n render() {\n this.renderMarkdownIntoDiv();\n return /* @__PURE__ */ React25.createElement(MarkdownContainer, { ref: this.containerRefHook });\n }\n};\n\n// src/growing-entry/growing-entry.tsx\nimport * as React26 from \"react\";\n\n// src/growing-entry/growing-entry-style.tsx\nvar InputBox = /* @__PURE__ */ styled_default(\"textarea\")({\n name: \"InputBox\",\n class: \"ijuk0po\",\n propsAsIs: false\n});\nvar ShadowBox = /* @__PURE__ */ styled_default(\"div\")({\n name: \"ShadowBox\",\n class: \"saq3p5l\",\n propsAsIs: false\n});\nvar GrowingEntryStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"GrowingEntryStyle\",\n class: \"gf8vzix\",\n propsAsIs: false\n});\n\n// src/growing-entry/growing-entry.tsx\nvar globalInputID = 0;\nvar GrowingEntry = (props) => {\n const { placeholder, value, onKeyDown, highlight, altNewline, validatedSelection, ...rest } = props;\n const { onChange, className } = rest;\n const inputRef = React26.useRef(null);\n const useText = value != null ? value : \"\";\n assert(onChange !== void 0, \"GrowingEntry must be a controlled input area\");\n const [inputID] = React26.useState(() => \"input-box-\" + (globalInputID = (globalInputID + 1) % 1e7));\n React26.useEffect(() => {\n const ta = inputRef.current;\n if (ta === null)\n return;\n if (ta.disabled)\n return;\n const length = useText.toString().length;\n ta.focus();\n ta.setSelectionRange(highlight ? 0 : length, length);\n }, []);\n React26.useLayoutEffect(() => {\n var _a;\n if (validatedSelection !== void 0) {\n const range2 = typeof validatedSelection === \"number\" ? [validatedSelection, null] : validatedSelection;\n (_a = inputRef.current) == null ? void 0 : _a.setSelectionRange(range2[0], range2[1]);\n }\n }, [validatedSelection]);\n const onKeyDownInner = React26.useCallback(\n (e) => {\n if (e.key === \"Enter\" && e.shiftKey && altNewline === true) {\n return;\n }\n onKeyDown == null ? void 0 : onKeyDown(e);\n },\n [altNewline, onKeyDown]\n );\n return /* @__PURE__ */ React26.createElement(GrowingEntryStyle, { className: \"gdg-growing-entry\" }, /* @__PURE__ */ React26.createElement(ShadowBox, { className }, useText + \"\\n\"), /* @__PURE__ */ React26.createElement(\n InputBox,\n {\n ...rest,\n className: (className != null ? className : \"\") + \" gdg-input\",\n id: inputID,\n ref: inputRef,\n onKeyDown: onKeyDownInner,\n value: useText,\n placeholder,\n dir: \"auto\"\n }\n ));\n};\n\n// src/data-grid-overlay-editor/private/markdown-overlay-editor-style.tsx\nvar _exp12 = () => (p) => p.targetWidth;\nvar MarkdownOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"MarkdownOverlayEditorStyle\",\n class: \"mdwzdl1\",\n propsAsIs: false,\n vars: {\n \"mdwzdl1-0\": [_exp12(), \"px\"]\n }\n});\n\n// src/data-grid-overlay-editor/private/markdown-overlay-editor.tsx\nvar MarkdownOverlayEditor = (p) => {\n const { value, onChange, forceEditMode, createNode, targetRect, onFinish, validatedSelection } = p;\n const markdown = value.data;\n const readonly = value.readonly === true;\n const [editMode, setEditMode] = React27.useState(markdown === \"\" || forceEditMode);\n const onEditClick = React27.useCallback(() => {\n setEditMode((e) => !e);\n }, []);\n const addLeftPad = markdown ? \"ml-6\" : \"\";\n if (editMode) {\n return /* @__PURE__ */ React27.createElement(MarkdownOverlayEditorStyle, { targetWidth: targetRect.width - 20 }, /* @__PURE__ */ React27.createElement(\n GrowingEntry,\n {\n autoFocus: true,\n highlight: false,\n validatedSelection,\n value: markdown,\n onKeyDown: (e) => {\n if (e.key === \"Enter\")\n e.stopPropagation();\n },\n onChange\n }\n ), /* @__PURE__ */ React27.createElement(\"div\", { className: `edit-icon checkmark-hover ${addLeftPad}`, onClick: () => onFinish(value) }, /* @__PURE__ */ React27.createElement(Checkmark, null)));\n }\n return /* @__PURE__ */ React27.createElement(MarkdownOverlayEditorStyle, { targetWidth: targetRect.width }, /* @__PURE__ */ React27.createElement(MarkdownDiv, { contents: markdown, createNode }), !readonly && /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(\"div\", { className: \"spacer\" }), /* @__PURE__ */ React27.createElement(\"div\", { className: `edit-icon edit-hover ${addLeftPad}`, onClick: onEditClick }, /* @__PURE__ */ React27.createElement(EditPencil, null))), /* @__PURE__ */ React27.createElement(\"textarea\", { className: \"md-edit-textarea gdg-input\", autoFocus: true }));\n};\n\n// src/data-grid/cells/markdown-cell.tsx\nvar markdownCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n },\n kind: GridCellKind.Markdown,\n needsHover: false,\n needsHoverPosition: false,\n drawPrep: prepTextCell,\n measure: (ctx, cell, t) => {\n const firstLine = cell.data.split(\"\\n\")[0];\n return ctx.measureText(firstLine).width + 2 * t.cellHorizontalPadding;\n },\n draw: (a) => drawTextCell(a, a.cell.data, a.cell.contentAlign),\n onDelete: (c) => ({\n ...c,\n data: \"\"\n }),\n provideEditor: () => (p) => {\n const { onChange, value, target, onFinishedEditing, markdownDivCreateNode, forceEditMode, validatedSelection } = p;\n return /* @__PURE__ */ React28.createElement(\n MarkdownOverlayEditor,\n {\n onFinish: onFinishedEditing,\n targetRect: target,\n value,\n validatedSelection,\n onChange: (e) => onChange({\n ...value,\n data: e.target.value\n }),\n forceEditMode,\n createNode: markdownDivCreateNode\n }\n );\n },\n onPaste: (toPaste, cell) => toPaste === cell.data ? void 0 : { ...cell, data: toPaste }\n};\n\n// src/data-grid/cells/marker-cell.tsx\nvar markerCellRenderer = {\n getAccessibilityString: (c) => c.row.toString(),\n kind: InnerGridCellKind.Marker,\n needsHover: true,\n needsHoverPosition: false,\n drawPrep: prepMarkerRowCell,\n measure: () => 44,\n draw: (a) => drawMarkerRowCell(a, a.cell.row, a.cell.checked, a.cell.markerKind, a.cell.drawHandle),\n onClick: (e) => {\n const { bounds, cell, posX: x, posY: y } = e;\n const { width, height } = bounds;\n const centerX = cell.drawHandle ? 7 + (width - 7) / 2 : width / 2;\n const centerY = height / 2;\n if (Math.abs(x - centerX) <= 10 && Math.abs(y - centerY) <= 10) {\n return {\n ...cell,\n checked: !cell.checked\n };\n }\n return void 0;\n },\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/new-row-cell.tsx\nvar newRowCellRenderer = {\n getAccessibilityString: () => \"\",\n kind: InnerGridCellKind.NewRow,\n needsHover: true,\n needsHoverPosition: false,\n measure: () => 200,\n draw: (a) => drawNewRowCell(a, a.cell.hint, a.cell.icon),\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/number-cell.tsx\nimport * as React29 from \"react\";\nvar NumberOverlayEditor = React29.lazy(\n async () => await import(\"./number-overlay-editor-FPDVTUA6.js\")\n);\nvar numberCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n },\n kind: GridCellKind.Number,\n needsHover: false,\n needsHoverPosition: false,\n useLabel: true,\n drawPrep: prepTextCell,\n draw: (a) => drawTextCell(a, a.cell.displayData, a.cell.contentAlign),\n measure: (ctx, cell) => ctx.measureText(cell.displayData).width + 16,\n onDelete: (c) => ({\n ...c,\n data: void 0\n }),\n provideEditor: () => (p) => {\n const { isHighlighted, onChange, value, validatedSelection } = p;\n return /* @__PURE__ */ React29.createElement(React29.Suspense, { fallback: null }, /* @__PURE__ */ React29.createElement(\n NumberOverlayEditor,\n {\n highlight: isHighlighted,\n disabled: value.readonly === true,\n value: value.data,\n fixedDecimals: value.fixedDecimals,\n allowNegative: value.allowNegative,\n thousandSeparator: value.thousandSeparator,\n decimalSeparator: value.decimalSeparator,\n validatedSelection,\n onChange: (x) => {\n var _a;\n return onChange({\n ...value,\n data: Number.isNaN((_a = x.floatValue) != null ? _a : 0) ? 0 : x.floatValue\n });\n }\n }\n ));\n },\n onPaste: (toPaste, cell, details) => {\n var _a;\n const newNumber = typeof details.rawValue === \"number\" ? details.rawValue : Number.parseFloat(typeof details.rawValue === \"string\" ? details.rawValue : toPaste);\n if (Number.isNaN(newNumber) || cell.data === newNumber)\n return void 0;\n return { ...cell, data: newNumber, displayData: (_a = details.formattedString) != null ? _a : cell.displayData };\n }\n};\n\n// src/data-grid/cells/protected-cell.tsx\nvar protectedCellRenderer = {\n getAccessibilityString: () => \"\",\n measure: () => 108,\n kind: GridCellKind.Protected,\n needsHover: false,\n needsHoverPosition: false,\n draw: drawProtectedCell,\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/row-id-cell.tsx\nimport React30 from \"react\";\nvar rowIDCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n },\n kind: GridCellKind.RowID,\n needsHover: false,\n needsHoverPosition: false,\n drawPrep: (a, b) => prepTextCell(a, b, a.theme.textLight),\n draw: (a) => drawTextCell(a, a.cell.data, a.cell.contentAlign),\n measure: (ctx, cell) => ctx.measureText(cell.data).width + 16,\n // eslint-disable-next-line react/display-name\n provideEditor: () => (p) => {\n const { isHighlighted, onChange, value, validatedSelection } = p;\n return /* @__PURE__ */ React30.createElement(\n GrowingEntry,\n {\n highlight: isHighlighted,\n autoFocus: value.readonly !== true,\n disabled: value.readonly !== false,\n value: value.data,\n validatedSelection,\n onChange: (e) => onChange({\n ...value,\n data: e.target.value\n })\n }\n );\n },\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/text-cell.tsx\nimport * as React31 from \"react\";\nvar textCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n },\n kind: GridCellKind.Text,\n needsHover: false,\n needsHoverPosition: false,\n drawPrep: prepTextCell,\n useLabel: true,\n draw: (a) => (drawTextCell(a, a.cell.displayData, a.cell.contentAlign, a.cell.allowWrapping, a.hyperWrapping), true),\n measure: (ctx, cell, t) => {\n const lines = cell.displayData.split(\"\\n\").slice(0, cell.allowWrapping === true ? void 0 : 1);\n return Math.max(...lines.map((l) => ctx.measureText(l).width + 2 * t.cellHorizontalPadding));\n },\n onDelete: (c) => ({\n ...c,\n data: \"\"\n }),\n provideEditor: (cell) => ({\n disablePadding: cell.allowWrapping === true,\n editor: (p) => {\n const { isHighlighted, onChange, value, validatedSelection } = p;\n return /* @__PURE__ */ React31.createElement(\n GrowingEntry,\n {\n style: cell.allowWrapping === true ? { padding: \"3px 8.5px\" } : void 0,\n highlight: isHighlighted,\n autoFocus: value.readonly !== true,\n disabled: value.readonly === true,\n altNewline: true,\n value: value.data,\n validatedSelection,\n onChange: (e) => onChange({\n ...value,\n data: e.target.value\n })\n }\n );\n }\n }),\n onPaste: (toPaste, cell, details) => {\n var _a;\n return toPaste === cell.data ? void 0 : { ...cell, data: toPaste, displayData: (_a = details.formattedString) != null ? _a : cell.displayData };\n }\n};\n\n// src/data-grid/cells/uri-cell.tsx\nimport * as React33 from \"react\";\n\n// src/data-grid-overlay-editor/private/uri-overlay-editor.tsx\nimport * as React32 from \"react\";\n\n// src/data-grid-overlay-editor/private/uri-overlay-editor-style.tsx\nvar UriOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"UriOverlayEditorStyle\",\n class: \"uf0sjo8\",\n propsAsIs: false\n});\n\n// src/data-grid-overlay-editor/private/uri-overlay-editor.tsx\nvar UriOverlayEditor = (p) => {\n const { uri, onChange, forceEditMode, readonly, validatedSelection, preview } = p;\n const [editMode, setEditMode] = React32.useState(uri === \"\" || forceEditMode);\n const onEditClick = React32.useCallback(() => {\n setEditMode(true);\n }, []);\n if (editMode) {\n return /* @__PURE__ */ React32.createElement(\n GrowingEntry,\n {\n validatedSelection,\n highlight: true,\n autoFocus: true,\n value: uri,\n onChange\n }\n );\n }\n return /* @__PURE__ */ React32.createElement(UriOverlayEditorStyle, null, /* @__PURE__ */ React32.createElement(\"a\", { className: \"link-area\", href: uri, target: \"_blank\", rel: \"noopener noreferrer\" }, preview), !readonly && /* @__PURE__ */ React32.createElement(\"div\", { className: \"edit-icon\", onClick: onEditClick }, /* @__PURE__ */ React32.createElement(EditPencil, null)), /* @__PURE__ */ React32.createElement(\"textarea\", { className: \"gdg-input\", autoFocus: true }));\n};\nvar uri_overlay_editor_default = UriOverlayEditor;\n\n// src/data-grid/cells/uri-cell.tsx\nvar uriCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n },\n kind: GridCellKind.Uri,\n needsHover: false,\n needsHoverPosition: false,\n useLabel: true,\n drawPrep: prepTextCell,\n draw: (a) => drawTextCell(a, a.cell.data, a.cell.contentAlign),\n measure: (ctx, cell, theme) => ctx.measureText(cell.data).width + theme.cellHorizontalPadding * 2,\n onDelete: (c) => ({\n ...c,\n data: \"\"\n }),\n provideEditor: () => (p) => {\n var _a;\n const { onChange, value, forceEditMode, validatedSelection } = p;\n return /* @__PURE__ */ React33.createElement(\n uri_overlay_editor_default,\n {\n forceEditMode,\n uri: value.data,\n preview: (_a = value.displayData) != null ? _a : value.data,\n validatedSelection,\n readonly: value.readonly === true,\n onChange: (e) => onChange({\n ...value,\n data: e.target.value\n })\n }\n );\n },\n onPaste: (toPaste, cell, details) => {\n var _a;\n return toPaste === cell.data ? void 0 : { ...cell, data: toPaste, displayData: (_a = details.formattedString) != null ? _a : cell.displayData };\n }\n};\n\n// src/data-grid/cells/index.ts\nvar CellRenderers = {\n [InnerGridCellKind.Marker]: markerCellRenderer,\n [InnerGridCellKind.NewRow]: newRowCellRenderer,\n [GridCellKind.Boolean]: booleanCellRenderer,\n [GridCellKind.Bubble]: bubbleCellRenderer,\n [GridCellKind.Drilldown]: drilldownCellRenderer,\n [GridCellKind.Image]: imageCellRenderer,\n [GridCellKind.Loading]: loadingCellRenderer,\n [GridCellKind.Markdown]: markdownCellRenderer,\n [GridCellKind.Number]: numberCellRenderer,\n [GridCellKind.Protected]: protectedCellRenderer,\n [GridCellKind.RowID]: rowIDCellRenderer,\n [GridCellKind.Text]: textCellRenderer,\n [GridCellKind.Uri]: uriCellRenderer\n};\n\n// src/data-editor/use-rem-adjuster.ts\nimport React34 from \"react\";\nfunction useRemAdjuster({\n rowHeight: rowHeightIn,\n headerHeight: headerHeightIn,\n groupHeaderHeight: groupHeaderHeightIn,\n theme: themeIn,\n overscrollX: overscrollXIn,\n overscrollY: overscrollYIn,\n scaleToRem,\n remSize\n}) {\n const [rowHeight, headerHeight, groupHeaderHeight, theme, overscrollX, overscrollY] = React34.useMemo(() => {\n var _a, _b, _c;\n if (!scaleToRem || remSize === 16)\n return [rowHeightIn, headerHeightIn, groupHeaderHeightIn, themeIn, overscrollXIn, overscrollYIn];\n const scaler = remSize / 16;\n const rh = rowHeightIn;\n const bt = getDataEditorTheme();\n return [\n typeof rh === \"number\" ? rh * scaler : (n) => Math.ceil(rh(n) * scaler),\n Math.ceil(headerHeightIn * scaler),\n Math.ceil(groupHeaderHeightIn * scaler),\n {\n ...themeIn,\n headerIconSize: ((_a = themeIn == null ? void 0 : themeIn.headerIconSize) != null ? _a : bt.headerIconSize) * scaler,\n cellHorizontalPadding: ((_b = themeIn == null ? void 0 : themeIn.cellHorizontalPadding) != null ? _b : bt.cellHorizontalPadding) * scaler,\n cellVerticalPadding: ((_c = themeIn == null ? void 0 : themeIn.cellVerticalPadding) != null ? _c : bt.cellVerticalPadding) * scaler\n },\n Math.ceil((overscrollXIn != null ? overscrollXIn : 0) * scaler),\n Math.ceil((overscrollYIn != null ? overscrollYIn : 0) * scaler)\n ];\n }, [groupHeaderHeightIn, headerHeightIn, overscrollXIn, overscrollYIn, remSize, rowHeightIn, scaleToRem, themeIn]);\n return { rowHeight, headerHeight, groupHeaderHeight, theme, overscrollX, overscrollY };\n}\n\n// src/data-editor/data-editor.tsx\nvar idCounter = 0;\nfunction getSpanStops(cells) {\n return uniq(\n flatten(\n flatten(cells).filter((c) => c.span !== void 0).map((c) => {\n var _a, _b, _c, _d;\n return range(((_b = (_a = c.span) == null ? void 0 : _a[0]) != null ? _b : 0) + 1, ((_d = (_c = c.span) == null ? void 0 : _c[1]) != null ? _d : 0) + 1);\n })\n )\n );\n}\nfunction shiftSelection(input, offset) {\n if (input === void 0 || offset === 0 || input.columns.length === 0 && input.current === void 0)\n return input;\n return {\n current: input.current === void 0 ? void 0 : {\n cell: [input.current.cell[0] + offset, input.current.cell[1]],\n range: {\n ...input.current.range,\n x: input.current.range.x + offset\n },\n rangeStack: input.current.rangeStack.map((r) => ({\n ...r,\n x: r.x + offset\n }))\n },\n rows: input.rows,\n columns: input.columns.offset(offset)\n };\n}\nvar keybindingDefaults = {\n selectAll: true,\n selectRow: true,\n selectColumn: true,\n downFill: false,\n rightFill: false,\n pageUp: false,\n pageDown: false,\n clear: true,\n copy: true,\n paste: true,\n cut: true,\n search: false,\n first: true,\n last: true\n};\nvar loadingCell2 = {\n kind: GridCellKind.Loading,\n allowOverlay: false\n};\nvar emptyGridSelection = {\n columns: CompactSelection.empty(),\n rows: CompactSelection.empty(),\n current: void 0\n};\nvar DataEditorImpl = (p, forwardedRef) => {\n var _a, _b, _c, _d, _e;\n const [gridSelectionInner, setGridSelectionInner] = React35.useState(emptyGridSelection);\n const [overlay, setOverlay] = React35.useState();\n const searchInputRef = React35.useRef(null);\n const canvasRef = React35.useRef(null);\n const [mouseState, setMouseState] = React35.useState();\n const scrollRef = React35.useRef(null);\n const lastSent = React35.useRef();\n const {\n rowMarkers = \"none\",\n rowMarkerWidth: rowMarkerWidthRaw,\n imageEditorOverride,\n getRowThemeOverride,\n markdownDivCreateNode,\n width,\n height,\n columns: columnsIn,\n rows,\n getCellContent,\n onCellClicked,\n onCellActivated,\n onFinishedEditing,\n coercePasteValue,\n drawHeader: drawHeaderIn,\n onHeaderClicked,\n spanRangeBehavior = \"default\",\n onGroupHeaderClicked,\n onCellContextMenu,\n className,\n onHeaderContextMenu,\n getCellsForSelection: getCellsForSelectionIn,\n onGroupHeaderContextMenu,\n onGroupHeaderRenamed,\n onCellEdited,\n onCellsEdited,\n onSearchResultsChanged: onSearchResultsChangedIn,\n searchResults,\n onSearchValueChange,\n searchValue,\n onKeyDown: onKeyDownIn,\n onKeyUp: onKeyUpIn,\n keybindings: keybindingsIn,\n onRowAppended,\n onColumnMoved,\n validateCell: validateCellIn,\n highlightRegions: highlightRegionsIn,\n drawCell: drawCell2,\n rangeSelect = \"rect\",\n columnSelect = \"multi\",\n rowSelect = \"multi\",\n rangeSelectionBlending = \"exclusive\",\n columnSelectionBlending = \"exclusive\",\n rowSelectionBlending = \"exclusive\",\n onDelete: onDeleteIn,\n onDragStart,\n onMouseMove,\n onPaste,\n copyHeaders = false,\n freezeColumns = 0,\n rowSelectionMode = \"auto\",\n rowMarkerStartIndex = 1,\n rowMarkerTheme,\n onHeaderMenuClick,\n getGroupDetails,\n onSearchClose: onSearchCloseIn,\n onItemHovered,\n onSelectionCleared,\n showSearch: showSearchIn,\n onVisibleRegionChanged,\n gridSelection: gridSelectionOuter,\n onGridSelectionChange,\n minColumnWidth: minColumnWidthIn = 50,\n maxColumnWidth: maxColumnWidthIn = 500,\n maxColumnAutoWidth: maxColumnAutoWidthIn,\n provideEditor,\n trailingRowOptions,\n scrollOffsetX,\n scrollOffsetY,\n verticalBorder,\n onDragOverCell,\n onDrop,\n onColumnResize: onColumnResizeIn,\n onColumnResizeEnd: onColumnResizeEndIn,\n onColumnResizeStart: onColumnResizeStartIn,\n customRenderers: additionalRenderers,\n fillHandle,\n drawFocusRing: drawFocusRing2,\n experimental,\n fixedShadowX,\n fixedShadowY,\n headerIcons,\n imageWindowLoader,\n initialSize,\n isDraggable,\n onDragLeave,\n onRowMoved,\n overscrollX: overscrollXIn,\n overscrollY: overscrollYIn,\n preventDiagonalScrolling,\n rightElement,\n rightElementProps,\n showMinimap,\n smoothScrollX,\n smoothScrollY,\n scrollToEnd,\n scaleToRem = false,\n rowHeight: rowHeightIn = 34,\n headerHeight: headerHeightIn = 36,\n groupHeaderHeight: groupHeaderHeightIn = headerHeightIn,\n theme: themeIn,\n isOutsideClick\n } = p;\n const minColumnWidth = Math.max(minColumnWidthIn, 20);\n const maxColumnWidth = Math.max(maxColumnWidthIn, minColumnWidth);\n const maxColumnAutoWidth = Math.max(maxColumnAutoWidthIn != null ? maxColumnAutoWidthIn : maxColumnWidth, minColumnWidth);\n const docStyle = React35.useMemo(() => {\n if (typeof window === \"undefined\")\n return { fontSize: \"16px\" };\n return window.getComputedStyle(document.documentElement);\n }, []);\n const fontSizeStr = docStyle.fontSize;\n const remSize = React35.useMemo(() => Number.parseFloat(fontSizeStr), [fontSizeStr]);\n const { rowHeight, headerHeight, groupHeaderHeight, theme, overscrollX, overscrollY } = useRemAdjuster({\n groupHeaderHeight: groupHeaderHeightIn,\n headerHeight: headerHeightIn,\n overscrollX: overscrollXIn,\n overscrollY: overscrollYIn,\n remSize,\n rowHeight: rowHeightIn,\n scaleToRem,\n theme: themeIn\n });\n const keybindings = React35.useMemo(() => {\n return keybindingsIn === void 0 ? keybindingDefaults : {\n ...keybindingDefaults,\n ...keybindingsIn\n };\n }, [keybindingsIn]);\n const rowMarkerWidth = rowMarkerWidthRaw != null ? rowMarkerWidthRaw : rows > 1e4 ? 48 : rows > 1e3 ? 44 : rows > 100 ? 36 : 32;\n const hasRowMarkers = rowMarkers !== \"none\";\n const rowMarkerOffset = hasRowMarkers ? 1 : 0;\n const showTrailingBlankRow = onRowAppended !== void 0;\n const lastRowSticky = (trailingRowOptions == null ? void 0 : trailingRowOptions.sticky) === true;\n const [showSearchInner, setShowSearchInner] = React35.useState(false);\n const showSearch = showSearchIn != null ? showSearchIn : showSearchInner;\n const onSearchClose = React35.useCallback(() => {\n if (onSearchCloseIn !== void 0) {\n onSearchCloseIn();\n } else {\n setShowSearchInner(false);\n }\n }, [onSearchCloseIn]);\n const gridSelectionOuterMangled = React35.useMemo(() => {\n return gridSelectionOuter === void 0 ? void 0 : shiftSelection(gridSelectionOuter, rowMarkerOffset);\n }, [gridSelectionOuter, rowMarkerOffset]);\n const gridSelection = gridSelectionOuterMangled != null ? gridSelectionOuterMangled : gridSelectionInner;\n const abortControllerRef = React35.useRef(new AbortController());\n React35.useEffect(() => {\n return () => {\n abortControllerRef == null ? void 0 : abortControllerRef.current.abort();\n };\n }, []);\n const [getCellsForSelection, getCellsForSeletionDirect] = useCellsForSelection(\n getCellsForSelectionIn,\n getCellContent,\n rowMarkerOffset,\n abortControllerRef.current,\n rows\n );\n const validateCell = React35.useCallback(\n (cell, newValue, prevValue) => {\n if (validateCellIn === void 0)\n return true;\n const item = [cell[0] - rowMarkerOffset, cell[1]];\n return validateCellIn == null ? void 0 : validateCellIn(item, newValue, prevValue);\n },\n [rowMarkerOffset, validateCellIn]\n );\n const expectedExternalGridSelection = React35.useRef(gridSelectionOuter);\n const setGridSelection = React35.useCallback(\n (newVal, expand) => {\n if (expand) {\n newVal = expandSelection(\n newVal,\n getCellsForSelection,\n rowMarkerOffset,\n spanRangeBehavior,\n abortControllerRef.current\n );\n }\n if (onGridSelectionChange !== void 0) {\n expectedExternalGridSelection.current = shiftSelection(newVal, -rowMarkerOffset);\n onGridSelectionChange(expectedExternalGridSelection.current);\n } else {\n setGridSelectionInner(newVal);\n }\n },\n [onGridSelectionChange, getCellsForSelection, rowMarkerOffset, spanRangeBehavior]\n );\n const onColumnResize = whenDefined(\n onColumnResizeIn,\n React35.useCallback(\n (_, w, ind, wg) => {\n onColumnResizeIn == null ? void 0 : onColumnResizeIn(columnsIn[ind - rowMarkerOffset], w, ind - rowMarkerOffset, wg);\n },\n [onColumnResizeIn, rowMarkerOffset, columnsIn]\n )\n );\n const onColumnResizeEnd = whenDefined(\n onColumnResizeEndIn,\n React35.useCallback(\n (_, w, ind, wg) => {\n onColumnResizeEndIn == null ? void 0 : onColumnResizeEndIn(columnsIn[ind - rowMarkerOffset], w, ind - rowMarkerOffset, wg);\n },\n [onColumnResizeEndIn, rowMarkerOffset, columnsIn]\n )\n );\n const onColumnResizeStart = whenDefined(\n onColumnResizeStartIn,\n React35.useCallback(\n (_, w, ind, wg) => {\n onColumnResizeStartIn == null ? void 0 : onColumnResizeStartIn(columnsIn[ind - rowMarkerOffset], w, ind - rowMarkerOffset, wg);\n },\n [onColumnResizeStartIn, rowMarkerOffset, columnsIn]\n )\n );\n const drawHeader2 = whenDefined(\n drawHeaderIn,\n React35.useCallback(\n (args) => {\n var _a2;\n return (_a2 = drawHeaderIn == null ? void 0 : drawHeaderIn({ ...args, columnIndex: args.columnIndex - rowMarkerOffset })) != null ? _a2 : false;\n },\n [drawHeaderIn, rowMarkerOffset]\n )\n );\n const onDelete = React35.useCallback(\n (sel) => {\n if (onDeleteIn !== void 0) {\n const result = onDeleteIn(shiftSelection(sel, -rowMarkerOffset));\n if (typeof result === \"boolean\") {\n return result;\n }\n return shiftSelection(result, rowMarkerOffset);\n }\n return true;\n },\n [onDeleteIn, rowMarkerOffset]\n );\n const [setCurrent, setSelectedRows, setSelectedColumns] = useSelectionBehavior(\n gridSelection,\n setGridSelection,\n rangeSelectionBlending,\n columnSelectionBlending,\n rowSelectionBlending,\n rangeSelect\n );\n const mergedTheme = React35.useMemo(() => {\n return { ...getDataEditorTheme(), ...theme };\n }, [theme]);\n const [clientSize, setClientSize] = React35.useState([10, 10, 0]);\n const getCellRenderer = React35.useCallback(\n (cell) => {\n if (cell.kind !== GridCellKind.Custom) {\n return CellRenderers[cell.kind];\n }\n return additionalRenderers == null ? void 0 : additionalRenderers.find((x) => x.isMatch(cell));\n },\n [additionalRenderers]\n );\n const columns = useColumnSizer(\n columnsIn,\n rows,\n getCellsForSeletionDirect,\n clientSize[0] - (rowMarkerOffset === 0 ? 0 : rowMarkerWidth) - clientSize[2],\n minColumnWidth,\n maxColumnAutoWidth,\n mergedTheme,\n getCellRenderer,\n abortControllerRef.current\n );\n const enableGroups = React35.useMemo(() => {\n return columns.some((c) => c.group !== void 0);\n }, [columns]);\n const totalHeaderHeight = enableGroups ? headerHeight + groupHeaderHeight : headerHeight;\n const numSelectedRows = gridSelection.rows.length;\n const rowMarkerHeader = rowMarkers === \"none\" ? \"\" : numSelectedRows === 0 ? headerCellUnheckedMarker : numSelectedRows === rows ? headerCellCheckedMarker : headerCellIndeterminateMarker;\n const mangledCols = React35.useMemo(() => {\n if (rowMarkers === \"none\")\n return columns;\n return [\n {\n title: rowMarkerHeader,\n width: rowMarkerWidth,\n icon: void 0,\n hasMenu: false,\n style: \"normal\",\n themeOverride: rowMarkerTheme\n },\n ...columns\n ];\n }, [columns, rowMarkerWidth, rowMarkers, rowMarkerHeader, rowMarkerTheme]);\n const [visibleRegionY, visibleRegionTy] = React35.useMemo(() => {\n return [\n scrollOffsetY !== void 0 && typeof rowHeight === \"number\" ? Math.floor(scrollOffsetY / rowHeight) : 0,\n scrollOffsetY !== void 0 && typeof rowHeight === \"number\" ? -(scrollOffsetY % rowHeight) : 0\n ];\n }, [scrollOffsetY, rowHeight]);\n const visibleRegionRef = React35.useRef({\n height: 1,\n width: 1,\n x: 0,\n y: 0\n });\n const visibleRegionInput = React35.useMemo(\n () => {\n var _a2, _b2;\n return {\n x: visibleRegionRef.current.x,\n y: visibleRegionY,\n width: (_a2 = visibleRegionRef.current.width) != null ? _a2 : 1,\n height: (_b2 = visibleRegionRef.current.height) != null ? _b2 : 1,\n // tx: 'TODO',\n ty: visibleRegionTy\n };\n },\n [visibleRegionTy, visibleRegionY]\n );\n const hasJustScrolled = React35.useRef(false);\n const [visibleRegion, setVisibleRegion, empty2] = useStateWithReactiveInput(visibleRegionInput);\n const vScrollReady = ((_a = visibleRegion.height) != null ? _a : 1) > 1;\n React35.useLayoutEffect(() => {\n if (scrollOffsetY !== void 0 && scrollRef.current !== null && vScrollReady) {\n if (scrollRef.current.scrollTop === scrollOffsetY)\n return;\n scrollRef.current.scrollTop = scrollOffsetY;\n if (scrollRef.current.scrollTop !== scrollOffsetY) {\n empty2();\n }\n hasJustScrolled.current = true;\n }\n }, [scrollOffsetY, vScrollReady, empty2]);\n const hScrollReady = ((_b = visibleRegion.width) != null ? _b : 1) > 1;\n React35.useLayoutEffect(() => {\n if (scrollOffsetX !== void 0 && scrollRef.current !== null && hScrollReady) {\n if (scrollRef.current.scrollLeft === scrollOffsetX)\n return;\n scrollRef.current.scrollLeft = scrollOffsetX;\n if (scrollRef.current.scrollLeft !== scrollOffsetX) {\n empty2();\n }\n hasJustScrolled.current = true;\n }\n }, [scrollOffsetX, hScrollReady, empty2]);\n const cellXOffset = visibleRegion.x + rowMarkerOffset;\n const cellYOffset = visibleRegion.y;\n const gridRef = React35.useRef(null);\n const focus = React35.useCallback((immediate) => {\n var _a2;\n if (immediate === true) {\n (_a2 = gridRef.current) == null ? void 0 : _a2.focus();\n } else {\n window.requestAnimationFrame(() => {\n var _a3;\n (_a3 = gridRef.current) == null ? void 0 : _a3.focus();\n });\n }\n }, []);\n const mangledRows = showTrailingBlankRow ? rows + 1 : rows;\n const mangledOnCellsEdited = React35.useCallback(\n (items) => {\n const mangledItems = rowMarkerOffset === 0 ? items : items.map((x) => ({\n ...x,\n location: [x.location[0] - rowMarkerOffset, x.location[1]]\n }));\n const r = onCellsEdited == null ? void 0 : onCellsEdited(mangledItems);\n if (r !== true) {\n for (const i of mangledItems)\n onCellEdited == null ? void 0 : onCellEdited(i.location, i.value);\n }\n return r;\n },\n [onCellEdited, onCellsEdited, rowMarkerOffset]\n );\n const highlightRegions = React35.useMemo(() => {\n if (highlightRegionsIn === void 0)\n return void 0;\n if (rowMarkerOffset === 0)\n return highlightRegionsIn;\n return highlightRegionsIn.map((r) => {\n const maxWidth = mangledCols.length - r.range.x - rowMarkerOffset;\n if (maxWidth <= 0)\n return void 0;\n return {\n color: r.color,\n range: {\n ...r.range,\n x: r.range.x + rowMarkerOffset,\n width: Math.min(maxWidth, r.range.width)\n },\n style: r.style\n };\n }).filter((x) => x !== void 0);\n }, [highlightRegionsIn, mangledCols.length, rowMarkerOffset]);\n const mangledColsRef = React35.useRef(mangledCols);\n mangledColsRef.current = mangledCols;\n const getMangledCellContent = React35.useCallback(\n ([col, row], forceStrict = false) => {\n var _a2, _b2, _c2, _d2, _e2, _f, _g, _h, _i, _j;\n const isTrailing = showTrailingBlankRow && row === mangledRows - 1;\n const isRowMarkerCol = col === 0 && hasRowMarkers;\n if (isRowMarkerCol) {\n if (isTrailing) {\n return loadingCell2;\n }\n return {\n kind: InnerGridCellKind.Marker,\n allowOverlay: false,\n checked: (gridSelection == null ? void 0 : gridSelection.rows.hasIndex(row)) === true,\n markerKind: rowMarkers === \"clickable-number\" ? \"number\" : rowMarkers,\n row: rowMarkerStartIndex + row,\n drawHandle: onRowMoved !== void 0,\n cursor: rowMarkers === \"clickable-number\" ? \"pointer\" : void 0\n };\n } else if (isTrailing) {\n const isFirst = col === rowMarkerOffset;\n const maybeFirstColumnHint = isFirst ? (_a2 = trailingRowOptions == null ? void 0 : trailingRowOptions.hint) != null ? _a2 : \"\" : \"\";\n const c = mangledColsRef.current[col];\n if (((_b2 = c == null ? void 0 : c.trailingRowOptions) == null ? void 0 : _b2.disabled) === true) {\n return loadingCell2;\n } else {\n const hint = (_d2 = (_c2 = c == null ? void 0 : c.trailingRowOptions) == null ? void 0 : _c2.hint) != null ? _d2 : maybeFirstColumnHint;\n const icon = (_f = (_e2 = c == null ? void 0 : c.trailingRowOptions) == null ? void 0 : _e2.addIcon) != null ? _f : trailingRowOptions == null ? void 0 : trailingRowOptions.addIcon;\n return {\n kind: InnerGridCellKind.NewRow,\n hint,\n allowOverlay: false,\n icon\n };\n }\n } else {\n const outerCol = col - rowMarkerOffset;\n if (forceStrict || (experimental == null ? void 0 : experimental.strict) === true) {\n const vr = visibleRegionRef.current;\n const isOutsideMainArea = vr.x > outerCol || outerCol > vr.x + vr.width || vr.y > row || row > vr.y + vr.height;\n const isSelected = outerCol === ((_h = (_g = vr.extras) == null ? void 0 : _g.selected) == null ? void 0 : _h[0]) && row === ((_i = vr.extras) == null ? void 0 : _i.selected[1]);\n const isOutsideFreezeArea = ((_j = vr.extras) == null ? void 0 : _j.freezeRegion) === void 0 || vr.extras.freezeRegion.x > outerCol || outerCol > vr.extras.freezeRegion.x + vr.extras.freezeRegion.width || vr.extras.freezeRegion.y > row || row > vr.extras.freezeRegion.y + vr.extras.freezeRegion.height;\n if (isOutsideMainArea && !isSelected && isOutsideFreezeArea) {\n return {\n kind: GridCellKind.Loading,\n allowOverlay: false\n };\n }\n }\n let result = getCellContent([outerCol, row]);\n if (rowMarkerOffset !== 0 && result.span !== void 0) {\n result = {\n ...result,\n span: [result.span[0] + rowMarkerOffset, result.span[1] + rowMarkerOffset]\n };\n }\n return result;\n }\n },\n [\n showTrailingBlankRow,\n mangledRows,\n hasRowMarkers,\n gridSelection == null ? void 0 : gridSelection.rows,\n onRowMoved,\n rowMarkers,\n rowMarkerOffset,\n trailingRowOptions == null ? void 0 : trailingRowOptions.hint,\n trailingRowOptions == null ? void 0 : trailingRowOptions.addIcon,\n experimental == null ? void 0 : experimental.strict,\n getCellContent,\n rowMarkerStartIndex\n ]\n );\n const mangledGetGroupDetails = React35.useCallback(\n (group) => {\n var _a2, _b2;\n let result = (_a2 = getGroupDetails == null ? void 0 : getGroupDetails(group)) != null ? _a2 : { name: group };\n if (onGroupHeaderRenamed !== void 0 && group !== \"\") {\n result = {\n icon: result.icon,\n name: result.name,\n overrideTheme: result.overrideTheme,\n actions: [\n ...(_b2 = result.actions) != null ? _b2 : [],\n {\n title: \"Rename\",\n icon: \"renameIcon\",\n onClick: (e) => setRenameGroup({\n group: result.name,\n bounds: e.bounds\n })\n }\n ]\n };\n }\n return result;\n },\n [getGroupDetails, onGroupHeaderRenamed]\n );\n const setOverlaySimple = React35.useCallback(\n (val) => {\n var _a2;\n const [col, row] = val.cell;\n const column = mangledCols[col];\n const groupTheme = (column == null ? void 0 : column.group) !== void 0 ? (_a2 = mangledGetGroupDetails(column.group)) == null ? void 0 : _a2.overrideTheme : void 0;\n const colTheme = column == null ? void 0 : column.themeOverride;\n const rowTheme = getRowThemeOverride == null ? void 0 : getRowThemeOverride(row);\n setOverlay({\n ...val,\n theme: { ...mergedTheme, ...groupTheme, ...colTheme, ...rowTheme, ...val.content.themeOverride }\n });\n },\n [getRowThemeOverride, mangledCols, mangledGetGroupDetails, mergedTheme]\n );\n const reselect = React35.useCallback(\n (bounds, fromKeyboard, initialValue) => {\n var _a2;\n if (gridSelection.current === void 0)\n return;\n const [col, row] = gridSelection.current.cell;\n const c = getMangledCellContent([col, row]);\n if (c.kind !== GridCellKind.Boolean && c.allowOverlay) {\n let content = c;\n if (initialValue !== void 0) {\n switch (content.kind) {\n case GridCellKind.Number: {\n const d = maybe(() => initialValue === \"-\" ? -0 : Number.parseFloat(initialValue), 0);\n content = {\n ...content,\n data: Number.isNaN(d) ? 0 : d\n };\n break;\n }\n case GridCellKind.Text:\n case GridCellKind.Markdown:\n case GridCellKind.Uri:\n content = {\n ...content,\n data: initialValue\n };\n break;\n }\n }\n setOverlaySimple({\n target: bounds,\n content,\n initialValue,\n cell: [col, row],\n highlight: initialValue === void 0,\n forceEditMode: initialValue !== void 0\n });\n } else if (c.kind === GridCellKind.Boolean && fromKeyboard && c.readonly !== true) {\n mangledOnCellsEdited([\n {\n location: gridSelection.current.cell,\n value: {\n ...c,\n data: toggleBoolean(c.data)\n }\n }\n ]);\n (_a2 = gridRef.current) == null ? void 0 : _a2.damage([{ cell: gridSelection.current.cell }]);\n }\n },\n [getMangledCellContent, gridSelection, mangledOnCellsEdited, setOverlaySimple]\n );\n const focusOnRowFromTrailingBlankRow = React35.useCallback(\n (col, row) => {\n var _a2;\n const bounds = (_a2 = gridRef.current) == null ? void 0 : _a2.getBounds(col, row);\n if (bounds === void 0 || scrollRef.current === null) {\n return;\n }\n const content = getMangledCellContent([col, row]);\n if (!content.allowOverlay) {\n return;\n }\n setOverlaySimple({\n target: bounds,\n content,\n initialValue: void 0,\n highlight: true,\n cell: [col, row],\n forceEditMode: true\n });\n },\n [getMangledCellContent, setOverlaySimple]\n );\n const scrollTo = React35.useCallback(\n (col, row, dir = \"both\", paddingX = 0, paddingY = 0, options = void 0) => {\n var _a2;\n if (scrollRef.current !== null) {\n const grid = gridRef.current;\n const canvas = canvasRef.current;\n const trueCol = typeof col !== \"number\" ? col.unit === \"cell\" ? col.amount : void 0 : col;\n const trueRow = typeof row !== \"number\" ? row.unit === \"cell\" ? row.amount : void 0 : row;\n const desiredX = typeof col !== \"number\" && col.unit === \"px\" ? col.amount : void 0;\n const desiredY = typeof row !== \"number\" && row.unit === \"px\" ? row.amount : void 0;\n if (grid !== null && canvas !== null) {\n let targetRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n let scrollX = 0;\n let scrollY = 0;\n if (trueCol !== void 0 || trueRow !== void 0) {\n targetRect = (_a2 = grid.getBounds((trueCol != null ? trueCol : 0) + rowMarkerOffset, trueRow != null ? trueRow : 0)) != null ? _a2 : targetRect;\n if (targetRect.width === 0 || targetRect.height === 0)\n return;\n }\n const scrollBounds = canvas.getBoundingClientRect();\n const scale = scrollBounds.width / canvas.offsetWidth;\n if (desiredX !== void 0) {\n targetRect = {\n ...targetRect,\n x: desiredX - scrollBounds.left - scrollRef.current.scrollLeft,\n width: 1\n };\n }\n if (desiredY !== void 0) {\n targetRect = {\n ...targetRect,\n y: desiredY + scrollBounds.top - scrollRef.current.scrollTop,\n height: 1\n };\n }\n if (targetRect !== void 0) {\n const bounds = {\n x: targetRect.x - paddingX,\n y: targetRect.y - paddingY,\n width: targetRect.width + 2 * paddingX,\n height: targetRect.height + 2 * paddingY\n };\n let frozenWidth = 0;\n for (let i = 0; i < freezeColumns; i++) {\n frozenWidth += columns[i].width;\n }\n let trailingRowHeight = 0;\n if (lastRowSticky) {\n trailingRowHeight = typeof rowHeight === \"number\" ? rowHeight : rowHeight(rows);\n }\n let sLeft = frozenWidth * scale + scrollBounds.left + rowMarkerOffset * rowMarkerWidth * scale;\n let sRight = scrollBounds.right;\n let sTop = scrollBounds.top + totalHeaderHeight * scale;\n let sBottom = scrollBounds.bottom - trailingRowHeight * scale;\n const minx = targetRect.width + paddingX * 2;\n switch (options == null ? void 0 : options.hAlign) {\n case \"start\":\n sRight = sLeft + minx;\n break;\n case \"end\":\n sLeft = sRight - minx;\n break;\n case \"center\":\n sLeft = Math.floor((sLeft + sRight) / 2) - minx / 2;\n sRight = sLeft + minx;\n break;\n }\n const miny = targetRect.height + paddingY * 2;\n switch (options == null ? void 0 : options.vAlign) {\n case \"start\":\n sBottom = sTop + miny;\n break;\n case \"end\":\n sTop = sBottom - miny;\n break;\n case \"center\":\n sTop = Math.floor((sTop + sBottom) / 2) - miny / 2;\n sBottom = sTop + miny;\n break;\n }\n if (sLeft > bounds.x) {\n scrollX = bounds.x - sLeft;\n } else if (sRight < bounds.x + bounds.width) {\n scrollX = bounds.x + bounds.width - sRight;\n }\n if (sTop > bounds.y) {\n scrollY = bounds.y - sTop;\n } else if (sBottom < bounds.y + bounds.height) {\n scrollY = bounds.y + bounds.height - sBottom;\n }\n if (dir === \"vertical\" || typeof col === \"number\" && col < freezeColumns) {\n scrollX = 0;\n } else if (dir === \"horizontal\") {\n scrollY = 0;\n }\n if (scrollX !== 0 || scrollY !== 0) {\n if (scale !== 1) {\n scrollX /= scale;\n scrollY /= scale;\n }\n scrollRef.current.scrollTo(\n scrollX + scrollRef.current.scrollLeft,\n scrollY + scrollRef.current.scrollTop\n );\n }\n }\n }\n }\n },\n [rowMarkerOffset, rowMarkerWidth, totalHeaderHeight, lastRowSticky, freezeColumns, columns, rowHeight, rows]\n );\n const focusCallback = React35.useRef(focusOnRowFromTrailingBlankRow);\n const getCellContentRef = React35.useRef(getCellContent);\n const rowsRef = React35.useRef(rows);\n focusCallback.current = focusOnRowFromTrailingBlankRow;\n getCellContentRef.current = getCellContent;\n rowsRef.current = rows;\n const appendRow = React35.useCallback(\n async (col, openOverlay = true) => {\n var _a2;\n const c = mangledCols[col];\n if (((_a2 = c == null ? void 0 : c.trailingRowOptions) == null ? void 0 : _a2.disabled) === true) {\n return;\n }\n const appendResult = onRowAppended == null ? void 0 : onRowAppended();\n let r = void 0;\n let bottom = true;\n if (appendResult !== void 0) {\n r = await appendResult;\n if (r === \"top\")\n bottom = false;\n if (typeof r === \"number\")\n bottom = false;\n }\n let backoff = 0;\n const doFocus = () => {\n if (rowsRef.current <= rows) {\n if (backoff < 500) {\n window.setTimeout(doFocus, backoff);\n }\n backoff = 50 + backoff * 2;\n return;\n }\n const row = typeof r === \"number\" ? r : bottom ? rows : 0;\n scrollTo(col - rowMarkerOffset, row);\n setCurrent(\n {\n cell: [col, row],\n range: {\n x: col,\n y: row,\n width: 1,\n height: 1\n }\n },\n false,\n false,\n \"edit\"\n );\n const cell = getCellContentRef.current([col - rowMarkerOffset, row]);\n if (cell.allowOverlay && isReadWriteCell(cell) && cell.readonly !== true && openOverlay) {\n window.setTimeout(() => {\n focusCallback.current(col, row);\n }, 0);\n }\n };\n doFocus();\n },\n [mangledCols, onRowAppended, rowMarkerOffset, rows, scrollTo, setCurrent]\n );\n const getCustomNewRowTargetColumn = React35.useCallback(\n (col) => {\n var _a2, _b2, _c2;\n const customTargetColumn = (_c2 = (_b2 = (_a2 = columns[col]) == null ? void 0 : _a2.trailingRowOptions) == null ? void 0 : _b2.targetColumn) != null ? _c2 : trailingRowOptions == null ? void 0 : trailingRowOptions.targetColumn;\n if (typeof customTargetColumn === \"number\") {\n const customTargetOffset = hasRowMarkers ? 1 : 0;\n return customTargetColumn + customTargetOffset;\n }\n if (typeof customTargetColumn === \"object\") {\n const maybeIndex = columnsIn.indexOf(customTargetColumn);\n if (maybeIndex >= 0) {\n const customTargetOffset = hasRowMarkers ? 1 : 0;\n return maybeIndex + customTargetOffset;\n }\n }\n return void 0;\n },\n [columns, columnsIn, hasRowMarkers, trailingRowOptions == null ? void 0 : trailingRowOptions.targetColumn]\n );\n const lastSelectedRowRef = React35.useRef();\n const lastSelectedColRef = React35.useRef();\n const themeForCell = React35.useCallback(\n (cell, pos) => {\n var _a2;\n const [col, row] = pos;\n return {\n ...mergedTheme,\n ...(_a2 = mangledCols[col]) == null ? void 0 : _a2.themeOverride,\n ...getRowThemeOverride == null ? void 0 : getRowThemeOverride(row),\n ...cell.themeOverride\n };\n },\n [getRowThemeOverride, mangledCols, mergedTheme]\n );\n const handleSelect = React35.useCallback(\n (args) => {\n var _a2, _b2, _c2, _d2;\n const isMultiKey = browserIsOSX.value ? args.metaKey : args.ctrlKey;\n const isMultiRow = isMultiKey && rowSelect === \"multi\";\n const isMultiCol = isMultiKey && columnSelect === \"multi\";\n const [col, row] = args.location;\n const selectedColumns = gridSelection.columns;\n const selectedRows = gridSelection.rows;\n const [cellCol, cellRow] = (_b2 = (_a2 = gridSelection.current) == null ? void 0 : _a2.cell) != null ? _b2 : [];\n if (args.kind === \"cell\") {\n lastSelectedColRef.current = void 0;\n lastMouseSelectLocation.current = [col, row];\n if (col === 0 && hasRowMarkers) {\n if (showTrailingBlankRow === true && row === rows || rowMarkers === \"number\" || rowSelect === \"none\")\n return;\n const markerCell = getMangledCellContent(args.location);\n if (markerCell.kind !== InnerGridCellKind.Marker) {\n return;\n }\n if (onRowMoved !== void 0) {\n const renderer = getCellRenderer(markerCell);\n assert((renderer == null ? void 0 : renderer.kind) === InnerGridCellKind.Marker);\n const postClick = (_c2 = renderer == null ? void 0 : renderer.onClick) == null ? void 0 : _c2.call(renderer, {\n ...args,\n cell: markerCell,\n posX: args.localEventX,\n posY: args.localEventY,\n bounds: args.bounds,\n theme: themeForCell(markerCell, args.location),\n preventDefault: () => void 0\n });\n if (postClick === void 0 || postClick.checked === markerCell.checked)\n return;\n }\n setOverlay(void 0);\n focus();\n const isSelected = selectedRows.hasIndex(row);\n const lastHighlighted = lastSelectedRowRef.current;\n if (rowSelect === \"multi\" && (args.shiftKey || args.isLongTouch === true) && lastHighlighted !== void 0 && selectedRows.hasIndex(lastHighlighted)) {\n const newSlice = [Math.min(lastHighlighted, row), Math.max(lastHighlighted, row) + 1];\n if (isMultiRow || rowSelectionMode === \"multi\") {\n setSelectedRows(void 0, newSlice, true);\n } else {\n setSelectedRows(CompactSelection.fromSingleSelection(newSlice), void 0, isMultiRow);\n }\n } else if (isMultiRow || args.isTouch || rowSelectionMode === \"multi\") {\n if (isSelected) {\n setSelectedRows(selectedRows.remove(row), void 0, true);\n } else {\n setSelectedRows(void 0, row, true);\n lastSelectedRowRef.current = row;\n }\n } else if (isSelected && selectedRows.length === 1) {\n setSelectedRows(CompactSelection.empty(), void 0, isMultiKey);\n } else {\n setSelectedRows(CompactSelection.fromSingleSelection(row), void 0, isMultiKey);\n lastSelectedRowRef.current = row;\n }\n } else if (col >= rowMarkerOffset && showTrailingBlankRow && row === rows) {\n const customTargetColumn = getCustomNewRowTargetColumn(col);\n void appendRow(customTargetColumn != null ? customTargetColumn : col);\n } else {\n if (cellCol !== col || cellRow !== row) {\n const cell = getMangledCellContent(args.location);\n const renderer = getCellRenderer(cell);\n if ((renderer == null ? void 0 : renderer.onSelect) !== void 0) {\n let prevented = false;\n renderer.onSelect({\n ...args,\n cell,\n posX: args.localEventX,\n posY: args.localEventY,\n bounds: args.bounds,\n preventDefault: () => prevented = true,\n theme: themeForCell(cell, args.location)\n });\n if (prevented) {\n return;\n }\n }\n const isLastStickyRow = lastRowSticky && row === rows;\n const startedFromLastSticky = lastRowSticky && gridSelection !== void 0 && ((_d2 = gridSelection.current) == null ? void 0 : _d2.cell[1]) === rows;\n if ((args.shiftKey || args.isLongTouch === true) && cellCol !== void 0 && cellRow !== void 0 && gridSelection.current !== void 0 && !startedFromLastSticky) {\n if (isLastStickyRow) {\n return;\n }\n const left = Math.min(col, cellCol);\n const right = Math.max(col, cellCol);\n const top = Math.min(row, cellRow);\n const bottom = Math.max(row, cellRow);\n setCurrent(\n {\n ...gridSelection.current,\n range: {\n x: left,\n y: top,\n width: right - left + 1,\n height: bottom - top + 1\n }\n },\n true,\n isMultiKey,\n \"click\"\n );\n lastSelectedRowRef.current = void 0;\n focus();\n } else {\n setCurrent(\n {\n cell: [col, row],\n range: { x: col, y: row, width: 1, height: 1 }\n },\n true,\n isMultiKey,\n \"click\"\n );\n lastSelectedRowRef.current = void 0;\n setOverlay(void 0);\n focus();\n }\n }\n }\n } else if (args.kind === \"header\") {\n lastMouseSelectLocation.current = [col, row];\n setOverlay(void 0);\n if (hasRowMarkers && col === 0) {\n lastSelectedRowRef.current = void 0;\n lastSelectedColRef.current = void 0;\n if (rowSelect === \"multi\") {\n if (selectedRows.length !== rows) {\n setSelectedRows(CompactSelection.fromSingleSelection([0, rows]), void 0, isMultiKey);\n } else {\n setSelectedRows(CompactSelection.empty(), void 0, isMultiKey);\n }\n focus();\n }\n } else {\n const lastCol = lastSelectedColRef.current;\n if (columnSelect === \"multi\" && (args.shiftKey || args.isLongTouch === true) && lastCol !== void 0 && selectedColumns.hasIndex(lastCol)) {\n const newSlice = [Math.min(lastCol, col), Math.max(lastCol, col) + 1];\n if (isMultiCol) {\n setSelectedColumns(void 0, newSlice, isMultiKey);\n } else {\n setSelectedColumns(CompactSelection.fromSingleSelection(newSlice), void 0, isMultiKey);\n }\n } else if (isMultiCol) {\n if (selectedColumns.hasIndex(col)) {\n setSelectedColumns(selectedColumns.remove(col), void 0, isMultiKey);\n } else {\n setSelectedColumns(void 0, col, isMultiKey);\n }\n lastSelectedColRef.current = col;\n } else if (columnSelect !== \"none\") {\n setSelectedColumns(CompactSelection.fromSingleSelection(col), void 0, isMultiKey);\n lastSelectedColRef.current = col;\n }\n lastSelectedRowRef.current = void 0;\n focus();\n }\n } else if (args.kind === groupHeaderKind) {\n lastMouseSelectLocation.current = [col, row];\n } else if (args.kind === outOfBoundsKind && !args.isMaybeScrollbar) {\n setGridSelection(emptyGridSelection, false);\n setOverlay(void 0);\n focus();\n onSelectionCleared == null ? void 0 : onSelectionCleared();\n lastSelectedRowRef.current = void 0;\n lastSelectedColRef.current = void 0;\n }\n },\n [\n appendRow,\n columnSelect,\n focus,\n getCellRenderer,\n getCustomNewRowTargetColumn,\n getMangledCellContent,\n gridSelection,\n hasRowMarkers,\n lastRowSticky,\n onSelectionCleared,\n onRowMoved,\n rowMarkerOffset,\n rowMarkers,\n rowSelect,\n rowSelectionMode,\n rows,\n setCurrent,\n setGridSelection,\n setSelectedColumns,\n setSelectedRows,\n showTrailingBlankRow,\n themeForCell\n ]\n );\n const isActivelyDraggingHeader = React35.useRef(false);\n const lastMouseSelectLocation = React35.useRef();\n const touchDownArgs = React35.useRef(visibleRegion);\n const mouseDownData = React35.useRef();\n const onMouseDown = React35.useCallback(\n (args) => {\n var _a2, _b2;\n isPrevented.current = false;\n touchDownArgs.current = visibleRegionRef.current;\n if (args.button !== 0 && args.button !== 1) {\n mouseDownData.current = void 0;\n return;\n }\n const time = performance.now();\n const wasDoubleClick = time - ((_b2 = (_a2 = mouseDownData.current) == null ? void 0 : _a2.time) != null ? _b2 : -1e3) < 250;\n mouseDownData.current = {\n wasDoubleClick,\n button: args.button,\n time,\n location: args.location\n };\n if ((args == null ? void 0 : args.kind) === \"header\") {\n isActivelyDraggingHeader.current = true;\n }\n const fh = args.kind === \"cell\" && args.isFillHandle;\n if (!fh && args.kind !== \"cell\" && args.isEdge)\n return;\n setMouseState({\n previousSelection: gridSelection,\n fillHandle: fh\n });\n lastMouseSelectLocation.current = void 0;\n if (!args.isTouch && args.button === 0) {\n handleSelect(args);\n } else if (!args.isTouch && args.button === 1) {\n lastMouseSelectLocation.current = args.location;\n }\n },\n [gridSelection, handleSelect]\n );\n const [renameGroup, setRenameGroup] = React35.useState();\n const handleGroupHeaderSelection = React35.useCallback(\n (args) => {\n if (args.kind !== groupHeaderKind || columnSelect !== \"multi\") {\n return;\n }\n const isMultiKey = browserIsOSX.value ? args.metaKey : args.ctrlKey;\n const [col] = args.location;\n const selectedColumns = gridSelection.columns;\n if (col < rowMarkerOffset)\n return;\n const needle = mangledCols[col];\n let start = col;\n let end = col;\n for (let i = col - 1; i >= rowMarkerOffset; i--) {\n if (!isGroupEqual(needle.group, mangledCols[i].group))\n break;\n start--;\n }\n for (let i = col + 1; i < mangledCols.length; i++) {\n if (!isGroupEqual(needle.group, mangledCols[i].group))\n break;\n end++;\n }\n focus();\n if (isMultiKey) {\n if (selectedColumns.hasAll([start, end + 1])) {\n let newVal = selectedColumns;\n for (let index = start; index <= end; index++) {\n newVal = newVal.remove(index);\n }\n setSelectedColumns(newVal, void 0, isMultiKey);\n } else {\n setSelectedColumns(void 0, [start, end + 1], isMultiKey);\n }\n } else {\n setSelectedColumns(CompactSelection.fromSingleSelection([start, end + 1]), void 0, isMultiKey);\n }\n },\n [columnSelect, focus, gridSelection.columns, mangledCols, rowMarkerOffset, setSelectedColumns]\n );\n const fillDown = React35.useCallback(\n (reverse) => {\n var _a2;\n if (gridSelection.current === void 0)\n return;\n const v = [];\n const r = gridSelection.current.range;\n for (let x = 0; x < r.width; x++) {\n const fillCol = x + r.x;\n const fillVal = getMangledCellContent([fillCol, reverse ? r.y + r.height - 1 : r.y]);\n if (isInnerOnlyCell(fillVal) || !isReadWriteCell(fillVal))\n continue;\n for (let y = 1; y < r.height; y++) {\n const fillRow = reverse ? r.y + r.height - (y + 1) : y + r.y;\n const target = [fillCol, fillRow];\n v.push({\n location: target,\n value: { ...fillVal }\n });\n }\n }\n mangledOnCellsEdited(v);\n (_a2 = gridRef.current) == null ? void 0 : _a2.damage(\n v.map((c) => ({\n cell: c.location\n }))\n );\n },\n [getMangledCellContent, gridSelection, mangledOnCellsEdited]\n );\n const isPrevented = React35.useRef(false);\n const normalSizeColumn = React35.useCallback(\n async (col, force = false) => {\n var _a2;\n if ((((_a2 = mouseDownData.current) == null ? void 0 : _a2.wasDoubleClick) === true || force) && getCellsForSelection !== void 0 && onColumnResize !== void 0) {\n const start = visibleRegionRef.current.y;\n const end = visibleRegionRef.current.height;\n let cells = getCellsForSelection(\n {\n x: col,\n y: start,\n width: 1,\n height: Math.min(end, rows - start)\n },\n abortControllerRef.current.signal\n );\n if (typeof cells !== \"object\") {\n cells = await cells();\n }\n const inputCol = columns[col - rowMarkerOffset];\n const offscreen = document.createElement(\"canvas\");\n const ctx = offscreen.getContext(\"2d\", { alpha: false });\n if (ctx !== null) {\n ctx.font = `${mergedTheme.baseFontStyle} ${mergedTheme.fontFamily}`;\n const newCol = measureColumn(\n ctx,\n mergedTheme,\n inputCol,\n 0,\n cells,\n minColumnWidth,\n maxColumnWidth,\n false,\n getCellRenderer\n );\n onColumnResize == null ? void 0 : onColumnResize(inputCol, newCol.width, col, newCol.width);\n }\n }\n },\n [\n columns,\n getCellsForSelection,\n maxColumnWidth,\n mergedTheme,\n minColumnWidth,\n onColumnResize,\n rowMarkerOffset,\n rows,\n getCellRenderer\n ]\n );\n const [scrollDir, setScrollDir] = React35.useState();\n const onMouseUp = React35.useCallback(\n (args, isOutside) => {\n var _a2, _b2, _c2;\n const mouse = mouseState;\n setMouseState(void 0);\n setScrollDir(void 0);\n isActivelyDraggingHeader.current = false;\n if (isOutside)\n return;\n if ((mouse == null ? void 0 : mouse.fillHandle) === true && gridSelection.current !== void 0) {\n fillDown(gridSelection.current.cell[1] !== gridSelection.current.range.y);\n return;\n }\n const [col, row] = args.location;\n const [lastMouseDownCol, lastMouseDownRow] = (_a2 = lastMouseSelectLocation.current) != null ? _a2 : [];\n const preventDefault = () => {\n isPrevented.current = true;\n };\n const handleMaybeClick = (a) => {\n var _a3, _b3, _c3;\n const isValidClick = a.isTouch || lastMouseDownCol === col && lastMouseDownRow === row;\n if (isValidClick) {\n onCellClicked == null ? void 0 : onCellClicked([col - rowMarkerOffset, row], {\n ...a,\n preventDefault\n });\n }\n if (a.button === 1)\n return !isPrevented.current;\n if (!isPrevented.current) {\n const c = getMangledCellContent(args.location);\n const r = getCellRenderer(c);\n if (r !== void 0 && r.onClick !== void 0 && isValidClick) {\n const newVal = r.onClick({\n ...a,\n cell: c,\n posX: a.localEventX,\n posY: a.localEventY,\n bounds: a.bounds,\n theme: themeForCell(c, args.location),\n preventDefault\n });\n if (newVal !== void 0 && !isInnerOnlyCell(newVal) && isEditableGridCell(newVal)) {\n mangledOnCellsEdited([{ location: a.location, value: newVal }]);\n (_a3 = gridRef.current) == null ? void 0 : _a3.damage([\n {\n cell: a.location\n }\n ]);\n }\n }\n if (!isPrevented.current && ((_c3 = (_b3 = mouse == null ? void 0 : mouse.previousSelection) == null ? void 0 : _b3.current) == null ? void 0 : _c3.cell) !== void 0 && gridSelection.current !== void 0) {\n const [selectedCol, selectedRow] = gridSelection.current.cell;\n const [prevCol, prevRow] = mouse.previousSelection.current.cell;\n if (col === selectedCol && col === prevCol && row === selectedRow && row === prevRow) {\n onCellActivated == null ? void 0 : onCellActivated([col - rowMarkerOffset, row]);\n reselect(a.bounds, false);\n return true;\n }\n }\n }\n return false;\n };\n const clickLocation = args.location[0] - rowMarkerOffset;\n if (args.isTouch) {\n const vr = visibleRegionRef.current;\n const touchVr = touchDownArgs.current;\n if (vr.x !== touchVr.x || vr.y !== touchVr.y) {\n return;\n }\n if (args.isLongTouch === true) {\n if (args.kind === \"cell\" && ((_b2 = gridSelection == null ? void 0 : gridSelection.current) == null ? void 0 : _b2.cell[0]) === col && ((_c2 = gridSelection == null ? void 0 : gridSelection.current) == null ? void 0 : _c2.cell[1]) === row) {\n onCellContextMenu == null ? void 0 : onCellContextMenu([clickLocation, args.location[1]], {\n ...args,\n preventDefault\n });\n return;\n } else if (args.kind === \"header\" && gridSelection.columns.hasIndex(col)) {\n onHeaderContextMenu == null ? void 0 : onHeaderContextMenu(clickLocation, { ...args, preventDefault });\n return;\n } else if (args.kind === groupHeaderKind) {\n if (clickLocation < 0) {\n return;\n }\n onGroupHeaderContextMenu == null ? void 0 : onGroupHeaderContextMenu(clickLocation, { ...args, preventDefault });\n return;\n }\n }\n if (args.kind === \"cell\") {\n if (!handleMaybeClick(args)) {\n handleSelect(args);\n }\n } else if (args.kind === groupHeaderKind) {\n onGroupHeaderClicked == null ? void 0 : onGroupHeaderClicked(clickLocation, { ...args, preventDefault });\n } else {\n if (args.kind === headerKind) {\n onHeaderClicked == null ? void 0 : onHeaderClicked(clickLocation, {\n ...args,\n preventDefault\n });\n }\n handleSelect(args);\n }\n return;\n }\n if (args.kind === \"header\") {\n if (clickLocation < 0) {\n return;\n }\n if (args.isEdge) {\n void normalSizeColumn(col);\n } else if (args.button === 0 && col === lastMouseDownCol && row === lastMouseDownRow) {\n onHeaderClicked == null ? void 0 : onHeaderClicked(clickLocation, { ...args, preventDefault });\n }\n }\n if (args.kind === groupHeaderKind) {\n if (clickLocation < 0) {\n return;\n }\n if (args.button === 0 && col === lastMouseDownCol && row === lastMouseDownRow) {\n onGroupHeaderClicked == null ? void 0 : onGroupHeaderClicked(clickLocation, { ...args, preventDefault });\n if (!isPrevented.current) {\n handleGroupHeaderSelection(args);\n }\n }\n }\n if (args.kind === \"cell\" && (args.button === 0 || args.button === 1)) {\n handleMaybeClick(args);\n }\n lastMouseSelectLocation.current = void 0;\n },\n [\n mouseState,\n rowMarkerOffset,\n gridSelection,\n onCellClicked,\n fillDown,\n getMangledCellContent,\n getCellRenderer,\n themeForCell,\n mangledOnCellsEdited,\n onCellActivated,\n reselect,\n onCellContextMenu,\n onHeaderContextMenu,\n onGroupHeaderContextMenu,\n handleSelect,\n onGroupHeaderClicked,\n normalSizeColumn,\n onHeaderClicked,\n handleGroupHeaderSelection\n ]\n );\n const onMouseMoveImpl = React35.useCallback(\n (args) => {\n const a = {\n ...args,\n location: [args.location[0] - rowMarkerOffset, args.location[1]]\n };\n onMouseMove == null ? void 0 : onMouseMove(a);\n setScrollDir((cv) => {\n var _a2, _b2;\n if (isActivelyDraggingHeader.current)\n return [args.scrollEdge[0], 0];\n if (args.scrollEdge[0] === (cv == null ? void 0 : cv[0]) && args.scrollEdge[1] === cv[1])\n return cv;\n return mouseState === void 0 || ((_b2 = (_a2 = mouseDownData.current) == null ? void 0 : _a2.location[0]) != null ? _b2 : 0) < rowMarkerOffset ? void 0 : args.scrollEdge;\n });\n },\n [mouseState, onMouseMove, rowMarkerOffset]\n );\n useAutoscroll(scrollDir, scrollRef);\n const onHeaderMenuClickInner = React35.useCallback(\n (col, screenPosition) => {\n onHeaderMenuClick == null ? void 0 : onHeaderMenuClick(col - rowMarkerOffset, screenPosition);\n },\n [onHeaderMenuClick, rowMarkerOffset]\n );\n const currentCell = (_c = gridSelection == null ? void 0 : gridSelection.current) == null ? void 0 : _c.cell;\n const onVisibleRegionChangedImpl = React35.useCallback(\n (region, clientWidth, clientHeight, rightElWidth, tx, ty) => {\n hasJustScrolled.current = false;\n let selected = currentCell;\n if (selected !== void 0) {\n selected = [selected[0] - rowMarkerOffset, selected[1]];\n }\n const newRegion = {\n x: region.x - rowMarkerOffset,\n y: region.y,\n width: region.width,\n height: showTrailingBlankRow && region.y + region.height >= rows ? region.height - 1 : region.height,\n tx,\n ty,\n extras: {\n selected,\n freezeRegion: freezeColumns === 0 ? void 0 : {\n x: 0,\n y: region.y,\n width: freezeColumns,\n height: region.height\n }\n }\n };\n visibleRegionRef.current = newRegion;\n setVisibleRegion(newRegion);\n setClientSize([clientWidth, clientHeight, rightElWidth]);\n onVisibleRegionChanged == null ? void 0 : onVisibleRegionChanged(newRegion, newRegion.tx, newRegion.ty, newRegion.extras);\n },\n [\n currentCell,\n rowMarkerOffset,\n showTrailingBlankRow,\n rows,\n freezeColumns,\n setVisibleRegion,\n onVisibleRegionChanged\n ]\n );\n const onColumnMovedImpl = whenDefined(\n onColumnMoved,\n React35.useCallback(\n (startIndex, endIndex) => {\n onColumnMoved == null ? void 0 : onColumnMoved(startIndex - rowMarkerOffset, endIndex - rowMarkerOffset);\n if (columnSelect !== \"none\") {\n setSelectedColumns(CompactSelection.fromSingleSelection(endIndex), void 0, true);\n }\n },\n [columnSelect, onColumnMoved, rowMarkerOffset, setSelectedColumns]\n )\n );\n const isActivelyDragging = React35.useRef(false);\n const onDragStartImpl = React35.useCallback(\n (args) => {\n if (args.location[0] === 0 && rowMarkerOffset > 0) {\n args.preventDefault();\n return;\n }\n onDragStart == null ? void 0 : onDragStart({\n ...args,\n location: [args.location[0] - rowMarkerOffset, args.location[1]]\n });\n if (!args.defaultPrevented()) {\n isActivelyDragging.current = true;\n }\n setMouseState(void 0);\n },\n [onDragStart, rowMarkerOffset]\n );\n const onDragEnd = React35.useCallback(() => {\n isActivelyDragging.current = false;\n }, []);\n const onItemHoveredImpl = React35.useCallback(\n (args) => {\n var _a2, _b2;\n if (((_a2 = mouseDownData == null ? void 0 : mouseDownData.current) == null ? void 0 : _a2.button) !== void 0 && mouseDownData.current.button >= 1)\n return;\n if (mouseState !== void 0 && ((_b2 = mouseDownData.current) == null ? void 0 : _b2.location[0]) === 0 && args.location[0] === 0 && rowMarkerOffset === 1 && rowSelect === \"multi\" && mouseState.previousSelection && !mouseState.previousSelection.rows.hasIndex(mouseDownData.current.location[1]) && gridSelection.rows.hasIndex(mouseDownData.current.location[1])) {\n const start = Math.min(mouseDownData.current.location[1], args.location[1]);\n const end = Math.max(mouseDownData.current.location[1], args.location[1]) + 1;\n setSelectedRows(CompactSelection.fromSingleSelection([start, end]), void 0, false);\n }\n if (mouseState !== void 0 && gridSelection.current !== void 0 && !isActivelyDragging.current && (rangeSelect === \"rect\" || rangeSelect === \"multi-rect\")) {\n const [selectedCol, selectedRow] = gridSelection.current.cell;\n let [col, row] = args.location;\n if (row < 0) {\n row = visibleRegionRef.current.y;\n }\n const startedFromLastStickyRow = lastRowSticky && selectedRow === rows;\n if (startedFromLastStickyRow)\n return;\n const landedOnLastStickyRow = lastRowSticky && row === rows;\n if (landedOnLastStickyRow) {\n if (args.kind === outOfBoundsKind)\n row--;\n else\n return;\n }\n col = Math.max(col, rowMarkerOffset);\n const deltaX = col - selectedCol;\n const deltaY = row - selectedRow;\n const newRange = {\n x: deltaX >= 0 ? selectedCol : col,\n y: deltaY >= 0 ? selectedRow : row,\n width: Math.abs(deltaX) + 1,\n height: Math.abs(deltaY) + 1\n };\n setCurrent(\n {\n ...gridSelection.current,\n range: newRange\n },\n true,\n false,\n \"drag\"\n );\n }\n onItemHovered == null ? void 0 : onItemHovered({ ...args, location: [args.location[0] - rowMarkerOffset, args.location[1]] });\n },\n [\n mouseState,\n rowMarkerOffset,\n rowSelect,\n gridSelection,\n rangeSelect,\n onItemHovered,\n setSelectedRows,\n lastRowSticky,\n rows,\n setCurrent\n ]\n );\n const adjustSelection = React35.useCallback(\n (direction2) => {\n if (gridSelection.current === void 0)\n return;\n const [x, y] = direction2;\n const [col, row] = gridSelection.current.cell;\n const old = gridSelection.current.range;\n let left = old.x;\n let right = old.x + old.width;\n let top = old.y;\n let bottom = old.y + old.height;\n if (y !== 0) {\n switch (y) {\n case 2: {\n bottom = rows;\n top = row;\n scrollTo(0, bottom, \"vertical\");\n break;\n }\n case -2: {\n top = 0;\n bottom = row + 1;\n scrollTo(0, top, \"vertical\");\n break;\n }\n case 1: {\n if (top < row) {\n top++;\n scrollTo(0, top, \"vertical\");\n } else {\n bottom = Math.min(rows, bottom + 1);\n scrollTo(0, bottom, \"vertical\");\n }\n break;\n }\n case -1: {\n if (bottom > row + 1) {\n bottom--;\n scrollTo(0, bottom, \"vertical\");\n } else {\n top = Math.max(0, top - 1);\n scrollTo(0, top, \"vertical\");\n }\n break;\n }\n default: {\n assertNever(y);\n }\n }\n }\n if (x !== 0) {\n if (x === 2) {\n right = mangledCols.length;\n left = col;\n scrollTo(right - 1 - rowMarkerOffset, 0, \"horizontal\");\n } else if (x === -2) {\n left = rowMarkerOffset;\n right = col + 1;\n scrollTo(left - rowMarkerOffset, 0, \"horizontal\");\n } else {\n let disallowed = [];\n if (getCellsForSelection !== void 0) {\n const cells = getCellsForSelection(\n {\n x: left,\n y: top,\n width: right - left - rowMarkerOffset,\n height: bottom - top\n },\n abortControllerRef.current.signal\n );\n if (typeof cells === \"object\") {\n disallowed = getSpanStops(cells);\n }\n }\n if (x === 1) {\n let done = false;\n if (left < col) {\n if (disallowed.length > 0) {\n const target = range(left + 1, col + 1).find(\n (n) => !disallowed.includes(n - rowMarkerOffset)\n );\n if (target !== void 0) {\n left = target;\n done = true;\n }\n } else {\n left++;\n done = true;\n }\n if (done)\n scrollTo(left, 0, \"horizontal\");\n }\n if (!done) {\n right = Math.min(mangledCols.length, right + 1);\n scrollTo(right - 1 - rowMarkerOffset, 0, \"horizontal\");\n }\n } else if (x === -1) {\n let done = false;\n if (right > col + 1) {\n if (disallowed.length > 0) {\n const target = range(right - 1, col, -1).find(\n (n) => !disallowed.includes(n - rowMarkerOffset)\n );\n if (target !== void 0) {\n right = target;\n done = true;\n }\n } else {\n right--;\n done = true;\n }\n if (done)\n scrollTo(right - rowMarkerOffset, 0, \"horizontal\");\n }\n if (!done) {\n left = Math.max(rowMarkerOffset, left - 1);\n scrollTo(left - rowMarkerOffset, 0, \"horizontal\");\n }\n } else {\n assertNever(x);\n }\n }\n }\n setCurrent(\n {\n cell: gridSelection.current.cell,\n range: {\n x: left,\n y: top,\n width: right - left,\n height: bottom - top\n }\n },\n true,\n false,\n \"keyboard-select\"\n );\n },\n [getCellsForSelection, gridSelection, mangledCols.length, rowMarkerOffset, rows, scrollTo, setCurrent]\n );\n const updateSelectedCell = React35.useCallback(\n (col, row, fromEditingTrailingRow, freeMove) => {\n const rowMax = mangledRows - (fromEditingTrailingRow ? 0 : 1);\n col = clamp5(col, rowMarkerOffset, columns.length - 1 + rowMarkerOffset);\n row = clamp5(row, 0, rowMax);\n if (col === (currentCell == null ? void 0 : currentCell[0]) && row === (currentCell == null ? void 0 : currentCell[1]))\n return false;\n if (freeMove && gridSelection.current !== void 0) {\n const newStack = [...gridSelection.current.rangeStack];\n if (gridSelection.current.range.width > 1 || gridSelection.current.range.height > 1) {\n newStack.push(gridSelection.current.range);\n }\n setGridSelection(\n {\n ...gridSelection,\n current: {\n cell: [col, row],\n range: { x: col, y: row, width: 1, height: 1 },\n rangeStack: newStack\n }\n },\n true\n );\n } else {\n setCurrent(\n {\n cell: [col, row],\n range: { x: col, y: row, width: 1, height: 1 }\n },\n true,\n false,\n \"keyboard-nav\"\n );\n }\n if (lastSent.current !== void 0 && lastSent.current[0] === col && lastSent.current[1] === row) {\n lastSent.current = void 0;\n }\n scrollTo(col - rowMarkerOffset, row);\n return true;\n },\n [\n mangledRows,\n rowMarkerOffset,\n columns.length,\n currentCell,\n gridSelection,\n scrollTo,\n setGridSelection,\n setCurrent\n ]\n );\n const onFinishEditing = React35.useCallback(\n (newValue, movement) => {\n if ((overlay == null ? void 0 : overlay.cell) !== void 0 && newValue !== void 0 && isEditableGridCell(newValue)) {\n mangledOnCellsEdited([{ location: overlay.cell, value: newValue }]);\n window.requestAnimationFrame(() => {\n var _a2;\n (_a2 = gridRef.current) == null ? void 0 : _a2.damage([\n {\n cell: overlay.cell\n }\n ]);\n });\n }\n focus(true);\n setOverlay(void 0);\n const [movX, movY] = movement;\n if (gridSelection.current !== void 0 && (movX !== 0 || movY !== 0)) {\n const isEditingTrailingRow = gridSelection.current.cell[1] === mangledRows - 1 && newValue !== void 0;\n updateSelectedCell(\n clamp5(gridSelection.current.cell[0] + movX, 0, mangledCols.length - 1),\n clamp5(gridSelection.current.cell[1] + movY, 0, mangledRows - 1),\n isEditingTrailingRow,\n false\n );\n }\n onFinishedEditing == null ? void 0 : onFinishedEditing(newValue, movement);\n },\n [\n overlay == null ? void 0 : overlay.cell,\n focus,\n gridSelection,\n onFinishedEditing,\n mangledOnCellsEdited,\n mangledRows,\n updateSelectedCell,\n mangledCols.length\n ]\n );\n const overlayID = React35.useMemo(() => {\n return `gdg-overlay-${idCounter++}`;\n }, []);\n const deleteRange = React35.useCallback(\n (r) => {\n var _a2, _b2, _c2, _d2;\n focus();\n const editList = [];\n for (let x = r.x; x < r.x + r.width; x++) {\n for (let y = r.y; y < r.y + r.height; y++) {\n const cellValue = getCellContent([x - rowMarkerOffset, y]);\n if (!cellValue.allowOverlay && cellValue.kind !== GridCellKind.Boolean)\n continue;\n let newVal = void 0;\n if (cellValue.kind === GridCellKind.Custom) {\n const toDelete = getCellRenderer(cellValue);\n const editor = (_a2 = toDelete == null ? void 0 : toDelete.provideEditor) == null ? void 0 : _a2.call(toDelete, cellValue);\n if ((toDelete == null ? void 0 : toDelete.onDelete) !== void 0) {\n newVal = toDelete.onDelete(cellValue);\n } else if (isObjectEditorCallbackResult(editor)) {\n newVal = (_b2 = editor == null ? void 0 : editor.deletedValue) == null ? void 0 : _b2.call(editor, cellValue);\n }\n } else if (isEditableGridCell(cellValue) && cellValue.allowOverlay || cellValue.kind === GridCellKind.Boolean) {\n const toDelete = getCellRenderer(cellValue);\n newVal = (_c2 = toDelete == null ? void 0 : toDelete.onDelete) == null ? void 0 : _c2.call(toDelete, cellValue);\n }\n if (newVal !== void 0 && !isInnerOnlyCell(newVal) && isEditableGridCell(newVal)) {\n editList.push({ location: [x, y], value: newVal });\n }\n }\n }\n mangledOnCellsEdited(editList);\n (_d2 = gridRef.current) == null ? void 0 : _d2.damage(editList.map((x) => ({ cell: x.location })));\n },\n [focus, getCellContent, getCellRenderer, mangledOnCellsEdited, rowMarkerOffset]\n );\n const onKeyDown = React35.useCallback(\n (event) => {\n const fn = async () => {\n var _a2, _b2, _c2, _d2, _e2;\n let cancelled = false;\n if (onKeyDownIn !== void 0) {\n onKeyDownIn({\n ...event,\n cancel: () => {\n cancelled = true;\n }\n });\n }\n if (cancelled)\n return;\n const cancel = () => {\n event.stopPropagation();\n event.preventDefault();\n };\n const overlayOpen = overlay !== void 0;\n const { altKey, shiftKey, metaKey, ctrlKey, key, bounds } = event;\n const isOSX = browserIsOSX.value;\n const isPrimaryKey = isOSX ? metaKey : ctrlKey;\n const isDeleteKey = key === \"Delete\" || isOSX && key === \"Backspace\";\n const vr = visibleRegionRef.current;\n const selectedColumns = gridSelection.columns;\n const selectedRows = gridSelection.rows;\n if (key === \"Escape\") {\n if (overlayOpen) {\n setOverlay(void 0);\n } else if (keybindings.clear) {\n setGridSelection(emptyGridSelection, false);\n onSelectionCleared == null ? void 0 : onSelectionCleared();\n }\n return;\n } else if (isHotkey(\"primary+a\", event) && keybindings.selectAll) {\n if (!overlayOpen) {\n setGridSelection(\n {\n columns: CompactSelection.empty(),\n rows: CompactSelection.empty(),\n current: {\n cell: (_b2 = (_a2 = gridSelection.current) == null ? void 0 : _a2.cell) != null ? _b2 : [rowMarkerOffset, 0],\n range: {\n x: rowMarkerOffset,\n y: 0,\n width: columnsIn.length,\n height: rows\n },\n rangeStack: []\n }\n },\n false\n );\n } else {\n const el = document.getElementById(overlayID);\n if (el !== null) {\n const s = window.getSelection();\n const r = document.createRange();\n r.selectNodeContents(el);\n s == null ? void 0 : s.removeAllRanges();\n s == null ? void 0 : s.addRange(r);\n }\n }\n cancel();\n return;\n } else if (isHotkey(\"primary+f\", event) && keybindings.search) {\n cancel();\n (_c2 = searchInputRef == null ? void 0 : searchInputRef.current) == null ? void 0 : _c2.focus({ preventScroll: true });\n setShowSearchInner(true);\n }\n if (isDeleteKey) {\n const callbackResult = (_d2 = onDelete == null ? void 0 : onDelete(gridSelection)) != null ? _d2 : true;\n cancel();\n if (callbackResult !== false) {\n const toDelete = callbackResult === true ? gridSelection : callbackResult;\n if (toDelete.current !== void 0) {\n deleteRange(toDelete.current.range);\n for (const r of toDelete.current.rangeStack) {\n deleteRange(r);\n }\n }\n for (const r of toDelete.rows) {\n deleteRange({\n x: rowMarkerOffset,\n y: r,\n width: mangledCols.length - rowMarkerOffset,\n height: 1\n });\n }\n for (const col2 of toDelete.columns) {\n deleteRange({\n x: col2,\n y: 0,\n width: 1,\n height: rows\n });\n }\n }\n return;\n }\n if (gridSelection.current === void 0)\n return;\n let [col, row] = gridSelection.current.cell;\n let freeMove = false;\n if (keybindings.selectColumn && isHotkey(\"ctrl+ \", event) && columnSelect !== \"none\") {\n if (selectedColumns.hasIndex(col)) {\n setSelectedColumns(selectedColumns.remove(col), void 0, true);\n } else {\n if (columnSelect === \"single\") {\n setSelectedColumns(CompactSelection.fromSingleSelection(col), void 0, true);\n } else {\n setSelectedColumns(void 0, col, true);\n }\n }\n } else if (keybindings.selectRow && isHotkey(\"shift+ \", event) && rowSelect !== \"none\") {\n if (selectedRows.hasIndex(row)) {\n setSelectedRows(selectedRows.remove(row), void 0, true);\n } else {\n if (rowSelect === \"single\") {\n setSelectedRows(CompactSelection.fromSingleSelection(row), void 0, true);\n } else {\n setSelectedRows(void 0, row, true);\n }\n }\n } else if ((isHotkey(\"Enter\", event) || isHotkey(\" \", event) || isHotkey(\"shift+Enter\", event)) && bounds !== void 0) {\n if (overlayOpen) {\n setOverlay(void 0);\n if (isHotkey(\"Enter\", event)) {\n row++;\n } else if (isHotkey(\"shift+Enter\", event)) {\n row--;\n }\n } else if (row === rows && showTrailingBlankRow) {\n window.setTimeout(() => {\n const customTargetColumn = getCustomNewRowTargetColumn(col);\n void appendRow(customTargetColumn != null ? customTargetColumn : col);\n }, 0);\n } else {\n onCellActivated == null ? void 0 : onCellActivated([col - rowMarkerOffset, row]);\n reselect(bounds, true);\n cancel();\n }\n } else if (keybindings.downFill && isHotkey(\"primary+_68\", event) && gridSelection.current.range.height > 1) {\n fillDown(false);\n cancel();\n } else if (keybindings.rightFill && isHotkey(\"primary+_82\", event) && gridSelection.current.range.width > 1) {\n const editList = [];\n const r = gridSelection.current.range;\n for (let y = 0; y < r.height; y++) {\n const fillRow = y + r.y;\n const fillVal = getMangledCellContent([r.x, fillRow]);\n if (isInnerOnlyCell(fillVal) || !isReadWriteCell(fillVal))\n continue;\n for (let x = 1; x < r.width; x++) {\n const fillCol = x + r.x;\n const target = [fillCol, fillRow];\n editList.push({\n location: target,\n value: { ...fillVal }\n });\n }\n }\n mangledOnCellsEdited(editList);\n (_e2 = gridRef.current) == null ? void 0 : _e2.damage(\n editList.map((c) => ({\n cell: c.location\n }))\n );\n cancel();\n } else if (keybindings.pageDown && isHotkey(\"PageDown\", event)) {\n row += Math.max(1, visibleRegionRef.current.height - 4);\n cancel();\n } else if (keybindings.pageUp && isHotkey(\"PageUp\", event)) {\n row -= Math.max(1, visibleRegionRef.current.height - 4);\n cancel();\n } else if (keybindings.first && isHotkey(\"primary+Home\", event)) {\n setOverlay(void 0);\n row = 0;\n col = 0;\n } else if (keybindings.last && isHotkey(\"primary+End\", event)) {\n setOverlay(void 0);\n row = Number.MAX_SAFE_INTEGER;\n col = Number.MAX_SAFE_INTEGER;\n } else if (keybindings.first && isHotkey(\"primary+shift+Home\", event)) {\n setOverlay(void 0);\n adjustSelection([-2, -2]);\n } else if (keybindings.last && isHotkey(\"primary+shift+End\", event)) {\n setOverlay(void 0);\n adjustSelection([2, 2]);\n } else if (key === \"ArrowDown\") {\n if (ctrlKey && altKey) {\n return;\n }\n setOverlay(void 0);\n if (shiftKey && (rangeSelect === \"rect\" || rangeSelect === \"multi-rect\")) {\n adjustSelection([0, isPrimaryKey && !altKey ? 2 : 1]);\n } else {\n if (altKey && !isPrimaryKey) {\n freeMove = true;\n }\n if (isPrimaryKey && !altKey) {\n row = rows - 1;\n } else {\n row += 1;\n }\n }\n } else if (key === \"ArrowUp\" || key === \"Home\") {\n const asPrimary = key === \"Home\" || isPrimaryKey;\n setOverlay(void 0);\n if (shiftKey && (rangeSelect === \"rect\" || rangeSelect === \"multi-rect\")) {\n adjustSelection([0, asPrimary && !altKey ? -2 : -1]);\n } else {\n if (altKey && !asPrimary) {\n freeMove = true;\n }\n row += asPrimary && !altKey ? Number.MIN_SAFE_INTEGER : -1;\n }\n } else if (key === \"ArrowRight\" || key === \"End\") {\n const asPrimary = key === \"End\" || isPrimaryKey;\n setOverlay(void 0);\n if (shiftKey && (rangeSelect === \"rect\" || rangeSelect === \"multi-rect\")) {\n adjustSelection([asPrimary && !altKey ? 2 : 1, 0]);\n } else {\n if (altKey && !asPrimary) {\n freeMove = true;\n }\n col += asPrimary && !altKey ? Number.MAX_SAFE_INTEGER : 1;\n }\n } else if (key === \"ArrowLeft\") {\n setOverlay(void 0);\n if (shiftKey && (rangeSelect === \"rect\" || rangeSelect === \"multi-rect\")) {\n adjustSelection([isPrimaryKey && !altKey ? -2 : -1, 0]);\n } else {\n if (altKey && !isPrimaryKey) {\n freeMove = true;\n }\n col += isPrimaryKey && !altKey ? Number.MIN_SAFE_INTEGER : -1;\n }\n } else if (key === \"Tab\") {\n setOverlay(void 0);\n if (shiftKey) {\n col--;\n } else {\n col++;\n }\n } else if (!metaKey && !ctrlKey && gridSelection.current !== void 0 && key.length === 1 && /[ -~]/g.test(key) && bounds !== void 0 && isReadWriteCell(getCellContent([col - rowMarkerOffset, Math.max(0, Math.min(row, rows - 1))]))) {\n if ((!lastRowSticky || row !== rows) && (vr.y > row || row > vr.y + vr.height || vr.x > col || col > vr.x + vr.width)) {\n return;\n }\n reselect(bounds, true, key);\n cancel();\n }\n const moved = updateSelectedCell(col, row, false, freeMove);\n if (moved) {\n cancel();\n }\n };\n void fn();\n },\n [\n onKeyDownIn,\n deleteRange,\n overlay,\n gridSelection,\n keybindings.selectAll,\n keybindings.search,\n keybindings.selectColumn,\n keybindings.selectRow,\n keybindings.downFill,\n keybindings.rightFill,\n keybindings.pageDown,\n keybindings.pageUp,\n keybindings.first,\n keybindings.last,\n keybindings.clear,\n columnSelect,\n rowSelect,\n getCellContent,\n rowMarkerOffset,\n updateSelectedCell,\n setGridSelection,\n onSelectionCleared,\n columnsIn.length,\n rows,\n overlayID,\n mangledOnCellsEdited,\n onDelete,\n mangledCols.length,\n setSelectedColumns,\n setSelectedRows,\n showTrailingBlankRow,\n getCustomNewRowTargetColumn,\n appendRow,\n onCellActivated,\n reselect,\n fillDown,\n getMangledCellContent,\n adjustSelection,\n rangeSelect,\n lastRowSticky\n ]\n );\n const onContextMenu = React35.useCallback(\n (args, preventDefault) => {\n const adjustedCol = args.location[0] - rowMarkerOffset;\n if (args.kind === \"header\") {\n onHeaderContextMenu == null ? void 0 : onHeaderContextMenu(adjustedCol, { ...args, preventDefault });\n }\n if (args.kind === groupHeaderKind) {\n if (adjustedCol < 0) {\n return;\n }\n onGroupHeaderContextMenu == null ? void 0 : onGroupHeaderContextMenu(adjustedCol, { ...args, preventDefault });\n }\n if (args.kind === \"cell\") {\n const [col, row] = args.location;\n onCellContextMenu == null ? void 0 : onCellContextMenu([adjustedCol, row], {\n ...args,\n preventDefault\n });\n if (!gridSelectionHasItem(gridSelection, args.location)) {\n updateSelectedCell(col, row, false, false);\n }\n }\n },\n [\n gridSelection,\n onCellContextMenu,\n onGroupHeaderContextMenu,\n onHeaderContextMenu,\n rowMarkerOffset,\n updateSelectedCell\n ]\n );\n const onPasteInternal = React35.useCallback(\n async (e) => {\n var _a2, _b2, _c2, _d2, _e2, _f, _g;\n if (!keybindings.paste)\n return;\n function pasteToCell(inner, target2, rawValue, formatted) {\n var _a3, _b3, _c3, _d3;\n const stringifiedRawValue = typeof rawValue === \"object\" ? (_a3 = rawValue == null ? void 0 : rawValue.join(\"\\n\")) != null ? _a3 : \"\" : (_b3 = rawValue == null ? void 0 : rawValue.toString()) != null ? _b3 : \"\";\n if (!isInnerOnlyCell(inner) && isReadWriteCell(inner) && inner.readonly !== true) {\n const coerced = coercePasteValue == null ? void 0 : coercePasteValue(stringifiedRawValue, inner);\n if (coerced !== void 0 && isEditableGridCell(coerced)) {\n if (coerced.kind !== inner.kind) {\n console.warn(\"Coercion should not change cell kind.\");\n }\n return {\n location: target2,\n value: coerced\n };\n }\n const r = getCellRenderer(inner);\n if (r === void 0)\n return void 0;\n if (r.kind === GridCellKind.Custom) {\n assert(inner.kind === GridCellKind.Custom);\n const newVal = (_c3 = r.onPaste) == null ? void 0 : _c3.call(\n r,\n stringifiedRawValue,\n inner.data\n );\n if (newVal === void 0)\n return void 0;\n return {\n location: target2,\n value: {\n ...inner,\n data: newVal\n }\n };\n } else {\n const newVal = (_d3 = r.onPaste) == null ? void 0 : _d3.call(r, stringifiedRawValue, inner, {\n formatted,\n formattedString: typeof formatted === \"string\" ? formatted : formatted == null ? void 0 : formatted.join(\"\\n\"),\n rawValue\n });\n if (newVal === void 0)\n return void 0;\n assert(newVal.kind === inner.kind);\n return {\n location: target2,\n value: newVal\n };\n }\n }\n return void 0;\n }\n const selectedColumns = gridSelection.columns;\n const selectedRows = gridSelection.rows;\n const focused = ((_a2 = scrollRef.current) == null ? void 0 : _a2.contains(document.activeElement)) === true || ((_b2 = canvasRef.current) == null ? void 0 : _b2.contains(document.activeElement)) === true;\n let target = (_c2 = gridSelection.current) == null ? void 0 : _c2.cell;\n if (target === void 0 && selectedColumns.length === 1) {\n target = [(_d2 = selectedColumns.first()) != null ? _d2 : 0, 0];\n }\n if (target === void 0 && selectedRows.length === 1) {\n target = [rowMarkerOffset, (_e2 = selectedRows.first()) != null ? _e2 : 0];\n }\n if (focused && target !== void 0) {\n let data;\n let text;\n const textPlain = \"text/plain\";\n const textHtml = \"text/html\";\n if (navigator.clipboard.read !== void 0) {\n const clipboardContent = await navigator.clipboard.read();\n for (const item of clipboardContent) {\n if (item.types.includes(textHtml)) {\n const htmlBlob = await item.getType(textHtml);\n const html = await htmlBlob.text();\n const decoded = decodeHTML(html);\n if (decoded !== void 0) {\n data = decoded;\n break;\n }\n }\n if (item.types.includes(textPlain)) {\n text = await (await item.getType(textPlain)).text();\n }\n }\n } else if (navigator.clipboard.readText !== void 0) {\n text = await navigator.clipboard.readText();\n } else if (e !== void 0 && (e == null ? void 0 : e.clipboardData) !== null) {\n if (e.clipboardData.types.includes(textHtml)) {\n const html = e.clipboardData.getData(textHtml);\n data = decodeHTML(html);\n }\n if (data === void 0 && e.clipboardData.types.includes(textPlain)) {\n text = e.clipboardData.getData(textPlain);\n }\n } else {\n return;\n }\n const [gridCol, gridRow] = target;\n const editList = [];\n do {\n if (onPaste === void 0) {\n const cellData = getMangledCellContent(target);\n const rawValue = (_f = text != null ? text : data == null ? void 0 : data.map((r) => r.map((cb) => cb.rawValue).join(\"\t\")).join(\"\t\")) != null ? _f : \"\";\n const newVal = pasteToCell(cellData, target, rawValue, void 0);\n if (newVal !== void 0) {\n editList.push(newVal);\n }\n break;\n }\n if (data === void 0) {\n if (text === void 0)\n return;\n data = unquote(text);\n }\n if (onPaste === false || typeof onPaste === \"function\" && (onPaste == null ? void 0 : onPaste(\n [target[0] - rowMarkerOffset, target[1]],\n data.map((r) => r.map((cb) => {\n var _a3, _b3;\n return (_b3 = (_a3 = cb.rawValue) == null ? void 0 : _a3.toString()) != null ? _b3 : \"\";\n }))\n )) !== true) {\n return;\n }\n for (const [row, dataRow] of data.entries()) {\n if (row + gridRow >= rows)\n break;\n for (const [col, dataItem] of dataRow.entries()) {\n const index = [col + gridCol, row + gridRow];\n const [writeCol, writeRow] = index;\n if (writeCol >= mangledCols.length)\n continue;\n if (writeRow >= mangledRows)\n continue;\n const cellData = getMangledCellContent(index);\n const newVal = pasteToCell(cellData, index, dataItem.rawValue, dataItem.formatted);\n if (newVal !== void 0) {\n editList.push(newVal);\n }\n }\n }\n } while (false);\n mangledOnCellsEdited(editList);\n (_g = gridRef.current) == null ? void 0 : _g.damage(\n editList.map((c) => ({\n cell: c.location\n }))\n );\n }\n },\n [\n coercePasteValue,\n getCellRenderer,\n getMangledCellContent,\n gridSelection,\n keybindings.paste,\n mangledCols.length,\n mangledOnCellsEdited,\n mangledRows,\n onPaste,\n rowMarkerOffset,\n rows\n ]\n );\n useEventListener(\"paste\", onPasteInternal, window, false, true);\n const onCopy = React35.useCallback(\n async (e, ignoreFocus) => {\n var _a2, _b2;\n if (!keybindings.copy)\n return;\n const focused = ignoreFocus === true || ((_a2 = scrollRef.current) == null ? void 0 : _a2.contains(document.activeElement)) === true || ((_b2 = canvasRef.current) == null ? void 0 : _b2.contains(document.activeElement)) === true;\n const selectedColumns = gridSelection.columns;\n const selectedRows = gridSelection.rows;\n const copyToClipboardWithHeaders = (cells, columnIndexes) => {\n if (!copyHeaders) {\n copyToClipboard(cells, columnIndexes, e);\n } else {\n const headers = columnIndexes.map((index) => ({\n kind: GridCellKind.Text,\n data: columnsIn[index].title,\n displayData: columnsIn[index].title,\n allowOverlay: false\n }));\n copyToClipboard([headers, ...cells], columnIndexes, e);\n }\n };\n if (focused && getCellsForSelection !== void 0) {\n if (gridSelection.current !== void 0) {\n let thunk = getCellsForSelection(gridSelection.current.range, abortControllerRef.current.signal);\n if (typeof thunk !== \"object\") {\n thunk = await thunk();\n }\n copyToClipboardWithHeaders(\n thunk,\n range(\n gridSelection.current.range.x - rowMarkerOffset,\n gridSelection.current.range.x + gridSelection.current.range.width - rowMarkerOffset\n )\n );\n } else if (selectedRows !== void 0 && selectedRows.length > 0) {\n const toCopy = [...selectedRows];\n const cells = toCopy.map((rowIndex) => {\n const thunk = getCellsForSelection(\n {\n x: rowMarkerOffset,\n y: rowIndex,\n width: columnsIn.length,\n height: 1\n },\n abortControllerRef.current.signal\n );\n if (typeof thunk === \"object\") {\n return thunk[0];\n }\n return thunk().then((v) => v[0]);\n });\n if (cells.some((x) => x instanceof Promise)) {\n const settled = await Promise.all(cells);\n copyToClipboardWithHeaders(settled, range(columnsIn.length));\n } else {\n copyToClipboardWithHeaders(cells, range(columnsIn.length));\n }\n } else if (selectedColumns.length > 0) {\n const results = [];\n const cols = [];\n for (const col of selectedColumns) {\n let thunk = getCellsForSelection(\n {\n x: col,\n y: 0,\n width: 1,\n height: rows\n },\n abortControllerRef.current.signal\n );\n if (typeof thunk !== \"object\") {\n thunk = await thunk();\n }\n results.push(thunk);\n cols.push(col - rowMarkerOffset);\n }\n if (results.length === 1) {\n copyToClipboardWithHeaders(results[0], cols);\n } else {\n const toCopy = results.reduce((pv, cv) => pv.map((row, index) => [...row, ...cv[index]]));\n copyToClipboardWithHeaders(toCopy, cols);\n }\n }\n }\n },\n [columnsIn, getCellsForSelection, gridSelection, keybindings.copy, rowMarkerOffset, rows, copyHeaders]\n );\n useEventListener(\"copy\", onCopy, window, false, false);\n const onCut = React35.useCallback(\n async (e) => {\n var _a2, _b2;\n if (!keybindings.cut)\n return;\n const focused = ((_a2 = scrollRef.current) == null ? void 0 : _a2.contains(document.activeElement)) === true || ((_b2 = canvasRef.current) == null ? void 0 : _b2.contains(document.activeElement)) === true;\n if (!focused)\n return;\n await onCopy(e);\n if (gridSelection.current !== void 0) {\n deleteRange(gridSelection.current.range);\n }\n },\n [deleteRange, gridSelection, keybindings.cut, onCopy]\n );\n useEventListener(\"cut\", onCut, window, false, false);\n const onSearchResultsChanged = React35.useCallback(\n (results, navIndex) => {\n if (onSearchResultsChangedIn !== void 0) {\n if (rowMarkerOffset !== 0) {\n results = results.map((item) => [item[0] - rowMarkerOffset, item[1]]);\n }\n onSearchResultsChangedIn(results, navIndex);\n return;\n }\n if (results.length === 0 || navIndex === -1)\n return;\n const [col, row] = results[navIndex];\n if (lastSent.current !== void 0 && lastSent.current[0] === col && lastSent.current[1] === row) {\n return;\n }\n lastSent.current = [col, row];\n updateSelectedCell(col, row, false, false);\n },\n [onSearchResultsChangedIn, rowMarkerOffset, updateSelectedCell]\n );\n const [outCol, outRow] = (_e = (_d = gridSelectionOuter == null ? void 0 : gridSelectionOuter.current) == null ? void 0 : _d.cell) != null ? _e : [];\n const scrollToRef = React35.useRef(scrollTo);\n scrollToRef.current = scrollTo;\n React35.useLayoutEffect(() => {\n var _a2, _b2, _c2, _d2;\n if (!hasJustScrolled.current && outCol !== void 0 && outRow !== void 0 && (outCol !== ((_b2 = (_a2 = expectedExternalGridSelection.current) == null ? void 0 : _a2.current) == null ? void 0 : _b2.cell[0]) || outRow !== ((_d2 = (_c2 = expectedExternalGridSelection.current) == null ? void 0 : _c2.current) == null ? void 0 : _d2.cell[1]))) {\n scrollToRef.current(outCol, outRow);\n }\n hasJustScrolled.current = false;\n }, [outCol, outRow]);\n const selectionOutOfBounds = gridSelection.current !== void 0 && (gridSelection.current.cell[0] >= mangledCols.length || gridSelection.current.cell[1] >= mangledRows);\n React35.useLayoutEffect(() => {\n if (selectionOutOfBounds) {\n setGridSelection(emptyGridSelection, false);\n }\n }, [selectionOutOfBounds, setGridSelection]);\n const disabledRows = React35.useMemo(() => {\n if (showTrailingBlankRow === true && (trailingRowOptions == null ? void 0 : trailingRowOptions.tint) === true) {\n return CompactSelection.fromSingleSelection(mangledRows - 1);\n }\n return CompactSelection.empty();\n }, [mangledRows, showTrailingBlankRow, trailingRowOptions == null ? void 0 : trailingRowOptions.tint]);\n const mangledVerticalBorder = React35.useCallback(\n (col) => {\n var _a2;\n return typeof verticalBorder === \"boolean\" ? verticalBorder : (_a2 = verticalBorder == null ? void 0 : verticalBorder(col - rowMarkerOffset)) != null ? _a2 : true;\n },\n [rowMarkerOffset, verticalBorder]\n );\n const renameGroupNode = React35.useMemo(() => {\n if (renameGroup === void 0 || canvasRef.current === null)\n return null;\n const { bounds, group } = renameGroup;\n const canvasBounds = canvasRef.current.getBoundingClientRect();\n return /* @__PURE__ */ React35.createElement(\n GroupRename,\n {\n bounds,\n group,\n canvasBounds,\n onClose: () => setRenameGroup(void 0),\n onFinish: (newVal) => {\n setRenameGroup(void 0);\n onGroupHeaderRenamed == null ? void 0 : onGroupHeaderRenamed(group, newVal);\n }\n }\n );\n }, [onGroupHeaderRenamed, renameGroup]);\n const mangledFreezeColumns = Math.min(mangledCols.length, freezeColumns + (hasRowMarkers ? 1 : 0));\n React35.useImperativeHandle(\n forwardedRef,\n () => ({\n appendRow: (col, openOverlay) => appendRow(col + rowMarkerOffset, openOverlay),\n updateCells: (damageList) => {\n var _a2;\n if (rowMarkerOffset !== 0) {\n damageList = damageList.map((x) => ({ cell: [x.cell[0] + rowMarkerOffset, x.cell[1]] }));\n }\n return (_a2 = gridRef.current) == null ? void 0 : _a2.damage(damageList);\n },\n getBounds: (col, row) => {\n var _a2;\n if ((canvasRef == null ? void 0 : canvasRef.current) === null || (scrollRef == null ? void 0 : scrollRef.current) === null) {\n return void 0;\n }\n if (col === void 0 && row === void 0) {\n const rect = canvasRef.current.getBoundingClientRect();\n const scale = rect.width / scrollRef.current.clientWidth;\n return {\n x: rect.x - scrollRef.current.scrollLeft * scale,\n y: rect.y - scrollRef.current.scrollTop * scale,\n width: scrollRef.current.scrollWidth * scale,\n height: scrollRef.current.scrollHeight * scale\n };\n }\n return (_a2 = gridRef.current) == null ? void 0 : _a2.getBounds(col != null ? col : 0 + rowMarkerOffset, row);\n },\n focus: () => {\n var _a2;\n return (_a2 = gridRef.current) == null ? void 0 : _a2.focus();\n },\n emit: async (e) => {\n switch (e) {\n case \"delete\":\n onKeyDown({\n bounds: void 0,\n cancel: () => void 0,\n stopPropagation: () => void 0,\n preventDefault: () => void 0,\n ctrlKey: false,\n key: \"Delete\",\n keyCode: 46,\n metaKey: false,\n shiftKey: false,\n altKey: false,\n rawEvent: void 0,\n location: void 0\n });\n break;\n case \"fill-right\":\n onKeyDown({\n bounds: void 0,\n cancel: () => void 0,\n stopPropagation: () => void 0,\n preventDefault: () => void 0,\n ctrlKey: true,\n key: \"r\",\n keyCode: 82,\n metaKey: false,\n shiftKey: false,\n altKey: false,\n rawEvent: void 0,\n location: void 0\n });\n break;\n case \"fill-down\":\n onKeyDown({\n bounds: void 0,\n cancel: () => void 0,\n stopPropagation: () => void 0,\n preventDefault: () => void 0,\n ctrlKey: true,\n key: \"d\",\n keyCode: 68,\n metaKey: false,\n shiftKey: false,\n altKey: false,\n rawEvent: void 0,\n location: void 0\n });\n break;\n case \"copy\":\n await onCopy(void 0, true);\n break;\n case \"paste\":\n await onPasteInternal();\n break;\n }\n },\n scrollTo,\n remeasureColumns: (cols) => {\n for (const col of cols) {\n void normalSizeColumn(col + rowMarkerOffset, true);\n }\n }\n }),\n [appendRow, normalSizeColumn, onCopy, onKeyDown, onPasteInternal, rowMarkerOffset, scrollTo]\n );\n const [selCol, selRow] = currentCell != null ? currentCell : [];\n const onCellFocused = React35.useCallback(\n (cell) => {\n const [col, row] = cell;\n if (row === -1) {\n if (columnSelect !== \"none\") {\n setSelectedColumns(CompactSelection.fromSingleSelection(col), void 0, false);\n focus();\n }\n return;\n }\n if (selCol === col && selRow === row)\n return;\n setCurrent(\n {\n cell,\n range: { x: col, y: row, width: 1, height: 1 }\n },\n true,\n false,\n \"keyboard-nav\"\n );\n scrollTo(col, row);\n },\n [columnSelect, focus, scrollTo, selCol, selRow, setCurrent, setSelectedColumns]\n );\n const [isFocused, setIsFocused] = React35.useState(false);\n const setIsFocusedDebounced = React35.useRef(\n debounce2((val) => {\n setIsFocused(val);\n }, 5)\n );\n const onCanvasFocused = React35.useCallback(() => {\n setIsFocusedDebounced.current(true);\n if (gridSelection.current === void 0 && gridSelection.columns.length === 0 && gridSelection.rows.length === 0 && mouseState === void 0) {\n setCurrent(\n {\n cell: [rowMarkerOffset, cellYOffset],\n range: {\n x: rowMarkerOffset,\n y: cellYOffset,\n width: 1,\n height: 1\n }\n },\n true,\n false,\n \"keyboard-select\"\n );\n }\n }, [cellYOffset, gridSelection, mouseState, rowMarkerOffset, setCurrent]);\n const onFocusOut = React35.useCallback(() => {\n setIsFocusedDebounced.current(false);\n }, []);\n const [idealWidth, idealHeight] = React35.useMemo(() => {\n var _a2;\n let h;\n const scrollbarWidth = (_a2 = experimental == null ? void 0 : experimental.scrollbarWidthOverride) != null ? _a2 : getScrollBarWidth();\n const rowsCountWithTrailingRow = rows + (showTrailingBlankRow ? 1 : 0);\n if (typeof rowHeight === \"number\") {\n h = totalHeaderHeight + rowsCountWithTrailingRow * rowHeight;\n } else {\n let avg = 0;\n const toAverage = Math.min(rowsCountWithTrailingRow, 10);\n for (let i = 0; i < toAverage; i++) {\n avg += rowHeight(i);\n }\n avg = Math.floor(avg / toAverage);\n h = totalHeaderHeight + rowsCountWithTrailingRow * avg;\n }\n h += scrollbarWidth;\n const w = mangledCols.reduce((acc, x) => x.width + acc, 0) + scrollbarWidth;\n return [`${Math.min(1e5, w)}px`, `${Math.min(1e5, h)}px`];\n }, [mangledCols, experimental == null ? void 0 : experimental.scrollbarWidthOverride, rowHeight, rows, showTrailingBlankRow, totalHeaderHeight]);\n return /* @__PURE__ */ React35.createElement(ThemeContext.Provider, { value: mergedTheme }, /* @__PURE__ */ React35.createElement(\n DataEditorContainer,\n {\n style: makeCSSStyle(mergedTheme),\n className,\n inWidth: width != null ? width : idealWidth,\n inHeight: height != null ? height : idealHeight\n },\n /* @__PURE__ */ React35.createElement(\n data_grid_search_default,\n {\n fillHandle,\n drawFocusRing: drawFocusRing2,\n experimental,\n fixedShadowX,\n fixedShadowY,\n getRowThemeOverride,\n headerIcons,\n imageWindowLoader,\n initialSize,\n isDraggable,\n onDragLeave,\n onRowMoved,\n overscrollX,\n overscrollY,\n preventDiagonalScrolling,\n rightElement,\n rightElementProps,\n showMinimap,\n smoothScrollX,\n smoothScrollY,\n className,\n enableGroups,\n onCanvasFocused,\n onCanvasBlur: onFocusOut,\n canvasRef,\n onContextMenu,\n theme: mergedTheme,\n cellXOffset,\n cellYOffset,\n accessibilityHeight: visibleRegion.height,\n onDragEnd,\n columns: mangledCols,\n drawCustomCell: drawCell2,\n drawHeader: drawHeader2,\n disabledRows,\n freezeColumns: mangledFreezeColumns,\n lockColumns: rowMarkerOffset,\n firstColAccessible: rowMarkerOffset === 0,\n getCellContent: getMangledCellContent,\n minColumnWidth,\n maxColumnWidth,\n searchInputRef,\n showSearch,\n onSearchClose,\n highlightRegions,\n getCellsForSelection,\n getGroupDetails: mangledGetGroupDetails,\n headerHeight,\n isFocused,\n groupHeaderHeight: enableGroups ? groupHeaderHeight : 0,\n trailingRowType: !showTrailingBlankRow ? \"none\" : (trailingRowOptions == null ? void 0 : trailingRowOptions.sticky) === true ? \"sticky\" : \"appended\",\n onColumnResize,\n onColumnResizeEnd,\n onColumnResizeStart,\n onCellFocused,\n onColumnMoved: onColumnMovedImpl,\n onDragStart: onDragStartImpl,\n onHeaderMenuClick: onHeaderMenuClickInner,\n onItemHovered: onItemHoveredImpl,\n isFilling: (mouseState == null ? void 0 : mouseState.fillHandle) === true,\n onMouseMove: onMouseMoveImpl,\n onKeyDown,\n onKeyUp: onKeyUpIn,\n onMouseDown,\n onMouseUp,\n onDragOverCell,\n onDrop,\n onSearchResultsChanged,\n onVisibleRegionChanged: onVisibleRegionChangedImpl,\n clientSize: [clientSize[0], clientSize[1]],\n rowHeight,\n searchResults,\n searchValue,\n onSearchValueChange,\n rows: mangledRows,\n scrollRef,\n selection: gridSelection,\n translateX: visibleRegion.tx,\n translateY: visibleRegion.ty,\n verticalBorder: mangledVerticalBorder,\n gridRef,\n getCellRenderer,\n scrollToEnd\n }\n ),\n renameGroupNode,\n overlay !== void 0 && /* @__PURE__ */ React35.createElement(\n data_grid_overlay_editor_default,\n {\n ...overlay,\n validateCell,\n id: overlayID,\n getCellRenderer,\n className: (experimental == null ? void 0 : experimental.isSubGrid) === true ? \"click-outside-ignore\" : void 0,\n provideEditor,\n imageEditorOverride,\n onFinishEditing,\n markdownDivCreateNode,\n isOutsideClick\n }\n )\n ));\n};\nvar DataEditor = React35.forwardRef(DataEditorImpl);\n\n// src/data-editor/use-custom-cells.ts\nimport * as React36 from \"react\";\nfunction inflate(input) {\n return {\n ...input,\n kind: GridCellKind.Custom\n };\n}\nfunction useCustomCells(cells) {\n return { customRenderers: React36.useMemo(() => cells.map(inflate), [cells]) };\n}\nexport {\n BooleanEmpty,\n BooleanIndeterminate,\n CompactSelection,\n DataEditor,\n GridCellKind,\n GridColumnIcon,\n ImageOverlayEditor,\n InnerGridCellKind,\n MarkdownDiv,\n GrowingEntry as TextCellEntry,\n blend,\n booleanCellIsEditable,\n DataEditor as default,\n drawTextCellExternal as drawTextCell,\n getDataEditorTheme as getDefaultTheme,\n getMiddleCenterBias,\n gridSelectionHasItem,\n groupHeaderKind,\n headerCellCheckboxPrefix,\n headerCellCheckedMarker,\n headerCellIndeterminateMarker,\n headerCellUnheckedMarker,\n headerKind,\n interpolateColors,\n isEditableGridCell,\n isInnerOnlyCell,\n isObjectEditorCallbackResult,\n isReadWriteCell,\n isSizedGridColumn,\n isTextEditableGridCell,\n measureTextCached,\n outOfBoundsKind,\n parseToRgba,\n resolveCellsThunk,\n useColumnSizer,\n useCustomCells,\n useTheme,\n withAlpha\n};\n//# sourceMappingURL=index.js.map\n"],"names":["React2","_CompactSelection","React3","React4","React5","React6","clearCache","splitText","clamp","React7","React8","makeRange","clamp2","clamp3","React9","useRef6","useState6","useLayoutEffect4","React10","React11","clamp4","React12","React13","React14","React15","React16","React17","React18","React19","React20","React21","React22","React23","React24","React25","React26","React27","React28","React29","React30","React31","React32","React33","React34","React35","_","v","debounce2","React36"],"mappings":";;;;;;;;;;;;;;;AAUA,SAAS,MAAM,UAAU,0BAA0B;AACjD,QAAM,IAAI,MAAM,OAAO;AACzB;AACA,SAAS,OAAO,MAAM,UAAU,oBAAoB;AAClD,MAAI;AACF;AACF,SAAO,MAAM,OAAO;AACtB;AACA,SAAS,YAAY,QAAQ,KAAK;AAChC,SAAO,MAAM,OAAO,OAAO,MAAM,iBAAiB;AACpD;AACA,SAAS,MAAM,IAAI,cAAc;AAC/B,MAAI;AACF,WAAO,GAAE;AAAA,EACX,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AACA,IAAI,MAAM,OAAO,UAAU;AAC3B,SAAS,UAAU,KAAK,KAAK;AAC3B,MAAI,MAAM;AACV,MAAI,QAAQ;AACV,WAAO;AACT,MAAI,OAAO,QAAQ,OAAO,IAAI,iBAAiB,IAAI,aAAa;AAC9D,QAAI,SAAS;AACX,aAAO,IAAI,cAAc,IAAI,QAAO;AACtC,QAAI,SAAS;AACX,aAAO,IAAI,eAAe,IAAI,SAAQ;AACxC,QAAI,SAAS,OAAO;AAClB,WAAK,MAAM,IAAI,YAAY,IAAI,QAAQ;AACrC,eAAO,SAAS,UAAU,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC;AAC1C;AAAA,MACJ;AACA,aAAO,QAAQ;AAAA,IACjB;AACA,QAAI,CAAC,QAAQ,OAAO,QAAQ,UAAU;AACpC,YAAM;AACN,WAAK,QAAQ,KAAK;AAChB,YAAI,IAAI,KAAK,KAAK,IAAI,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI;AACrD,iBAAO;AACT,YAAI,EAAE,QAAQ,QAAQ,CAAC,UAAU,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;AACnD,iBAAO;AAAA,MACX;AACA,aAAO,OAAO,KAAK,GAAG,EAAE,WAAW;AAAA,IACrC;AAAA,EACF;AACA,SAAO,QAAQ,OAAO,QAAQ;AAChC;AAeA,IAAI,wBAAwB,cAAc,MAAM,cAAc;AAAA,EAC5D,cAAc;AACZ,UAAM,GAAG,SAAS;AAClB,SAAK,aAAa,MAAM,UAAS;AACjC,SAAK,eAAe,CAAC,UAAU;AAC7B,UAAI,KAAK,MAAM,kBAAkB,CAAC,KAAK,MAAM,eAAe,KAAK,GAAG;AAClE;AAAA,MACF;AACA,UAAI,KAAK,WAAW,YAAY,QAAQ,CAAC,KAAK,WAAW,QAAQ,SAAS,MAAM,MAAM,GAAG;AACvF,YAAI,OAAO,MAAM;AACjB,eAAO,SAAS,MAAM;AACpB,cAAI,KAAK,UAAU,SAAS,sBAAsB,GAAG;AACnD;AAAA,UACF;AACA,iBAAO,KAAK;AAAA,QACd;AACA,aAAK,MAAM,eAAc;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EACA,oBAAoB;AAClB,aAAS,iBAAiB,YAAY,KAAK,cAAc,IAAI;AAC7D,aAAS,iBAAiB,aAAa,KAAK,cAAc,IAAI;AAC9D,aAAS,iBAAiB,eAAe,KAAK,cAAc,IAAI;AAAA,EAClE;AAAA,EACA,uBAAuB;AACrB,aAAS,oBAAoB,YAAY,KAAK,cAAc,IAAI;AAChE,aAAS,oBAAoB,aAAa,KAAK,cAAc,IAAI;AACjE,aAAS,oBAAoB,eAAe,KAAK,cAAc,IAAI;AAAA,EACrE;AAAA,EACA,SAAS;AACP,UAAM,EAAE,gBAAgB,gBAAgB,GAAG,KAAI,IAAK,KAAK;AACzD,WAAuB,sBAAM,cAAc,OAAO,EAAE,GAAG,MAAM,KAAK,KAAK,WAAU,GAAI,KAAK,MAAM,QAAQ;AAAA,EAC1G;AACF;AAIA,SAAS,aAAa,OAAO;AAC3B,MAAI,IAAI;AACR,SAAO;AAAA,IACL,sBAAsB,MAAM;AAAA,IAC5B,mBAAmB,MAAM;AAAA,IACzB,sBAAsB,MAAM;AAAA,IAC5B,mBAAmB,MAAM;AAAA,IACzB,qBAAqB,MAAM;AAAA,IAC3B,oBAAoB,MAAM;AAAA,IAC1B,qBAAqB,MAAM;AAAA,IAC3B,wBAAwB,MAAM;AAAA,IAC9B,wBAAwB,MAAM;AAAA,IAC9B,qBAAqB,MAAM;AAAA,IAC3B,4BAA4B,KAAK,MAAM,oBAAoB,OAAO,KAAK,MAAM;AAAA,IAC7E,8BAA8B,MAAM;AAAA,IACpC,iBAAiB,MAAM;AAAA,IACvB,wBAAwB,MAAM;AAAA,IAC9B,mBAAmB,MAAM;AAAA,IACzB,6BAA6B,MAAM;AAAA,IACnC,2BAA2B,MAAM;AAAA,IACjC,mBAAmB,MAAM;AAAA,IACzB,4BAA4B,MAAM;AAAA,IAClC,0BAA0B,MAAM;AAAA,IAChC,sBAAsB,MAAM;AAAA,IAC5B,kCAAkC,KAAK,MAAM,0BAA0B,OAAO,KAAK,MAAM;AAAA,IACzF,0BAA0B,MAAM;AAAA,IAChC,oBAAoB,MAAM;AAAA,IAC1B,iCAAiC,GAAG,MAAM,qBAAqB;AAAA,IAC/D,+BAA+B,GAAG,MAAM,mBAAmB;AAAA,IAC3D,2BAA2B,MAAM;AAAA,IACjC,yBAAyB,MAAM;AAAA,IAC/B,2BAA2B,MAAM;AAAA,IACjC,qBAAqB,MAAM;AAAA,IAC3B,0BAA0B,MAAM;AAAA,EACpC;AACA;AACA,IAAI,sBAAsB;AAAA,EACxB,aAAa;AAAA,EACb,UAAU;AAAA,EACV,aAAa;AAAA,EACb,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,YAAY;AAAA;AAEd;AACA,SAAS,qBAAqB;AAC5B,SAAO;AACT;AACA,IAAI,eAAeA,eAAO,cAAc,mBAAmB;AAC3D,SAAS,WAAW;AAClB,SAAOA,eAAO,WAAW,YAAY;AACvC;AAIA,SAAS,qBAAqB,KAAK,MAAM;AACvC,QAAM,CAAC,KAAK,GAAG,IAAI;AACnB,MAAI,IAAI,QAAQ,SAAS,GAAG,KAAK,IAAI,KAAK,SAAS,GAAG;AACpD,WAAO;AACT,MAAI,IAAI,YAAY,QAAQ;AAC1B,QAAI,IAAI,QAAQ,KAAK,CAAC,MAAM,OAAO,IAAI,QAAQ,KAAK,CAAC,MAAM;AACzD,aAAO;AACT,UAAM,UAAU,CAAC,IAAI,QAAQ,OAAO,GAAG,IAAI,QAAQ,UAAU;AAC7D,eAAW,KAAK,SAAS;AACvB,UAAI,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE;AACnE,eAAO;AAAA,IACX;AAAA,EACF;AACA,SAAO;AACT;AACG,IAAC,eAAe;AAChB,IAAC,uBAAuB;AACxB,IAAC,aAAa;AACd,IAAC,kBAAkB;AACnB,IAAC,kBAAkB;AACnB,IAAC,eAAgC,kBAAC,kBAAkB;AACrD,gBAAc,KAAK,IAAI;AACvB,gBAAc,MAAM,IAAI;AACxB,gBAAc,OAAO,IAAI;AACzB,gBAAc,OAAO,IAAI;AACzB,gBAAc,QAAQ,IAAI;AAC1B,gBAAc,QAAQ,IAAI;AAC1B,gBAAc,SAAS,IAAI;AAC3B,gBAAc,SAAS,IAAI;AAC3B,gBAAc,UAAU,IAAI;AAC5B,gBAAc,WAAW,IAAI;AAC7B,gBAAc,WAAW,IAAI;AAC7B,gBAAc,QAAQ,IAAI;AAC1B,SAAO;AACT,GAAG,gBAAgB,CAAA,CAAE;AAClB,IAAC,iBAAkC,kBAAC,oBAAoB;AACzD,kBAAgB,aAAa,IAAI;AACjC,kBAAgB,YAAY,IAAI;AAChC,kBAAgB,cAAc,IAAI;AAClC,kBAAgB,cAAc,IAAI;AAClC,kBAAgB,eAAe,IAAI;AACnC,kBAAgB,gBAAgB,IAAI;AACpC,kBAAgB,gBAAgB,IAAI;AACpC,kBAAgB,aAAa,IAAI;AACjC,kBAAgB,aAAa,IAAI;AACjC,kBAAgB,WAAW,IAAI;AAC/B,kBAAgB,aAAa,IAAI;AACjC,kBAAgB,gBAAgB,IAAI;AACpC,kBAAgB,YAAY,IAAI;AAChC,kBAAgB,YAAY,IAAI;AAChC,kBAAgB,aAAa,IAAI;AACjC,kBAAgB,iBAAiB,IAAI;AACrC,kBAAgB,kBAAkB,IAAI;AACtC,kBAAgB,mBAAmB,IAAI;AACvC,kBAAgB,cAAc,IAAI;AAClC,kBAAgB,oBAAoB,IAAI;AACxC,kBAAgB,YAAY,IAAI;AAChC,kBAAgB,cAAc,IAAI;AAClC,kBAAgB,mBAAmB,IAAI;AACvC,kBAAgB,mBAAmB,IAAI;AACvC,kBAAgB,mBAAmB,IAAI;AACvC,kBAAgB,aAAa,IAAI;AACjC,kBAAgB,iBAAiB,IAAI;AACrC,kBAAgB,wBAAwB,IAAI;AAC5C,SAAO;AACT,GAAG,kBAAkB,CAAA,CAAE;AACpB,IAAC,2BAA2B;AAC5B,IAAC,0BAA0B,2BAA2B;AACtD,IAAC,2BAA2B,2BAA2B;AACvD,IAAC,gCAAgC,2BAA2B;AAC/D,SAAS,kBAAkB,GAAG;AAC5B,SAAO,WAAW,KAAK,OAAO,EAAE,UAAU;AAC5C;AACA,eAAe,kBAAkB,OAAO;AACtC,MAAI,OAAO,UAAU;AACnB,WAAO;AACT,SAAO,MAAM,MAAK;AACpB;AACA,SAAS,mBAAmB,MAAM;AAChC,MAAI,KAAK,SAAS,aAAa,KAAK,SAAS,YAAY,KAAK,SAAS,YAAY,KAAK,SAAS,eAAe,KAAK,SAAS,aAAa;AACzI,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAQA,SAAS,gBAAgB,MAAM;AAC7B,SAAO,KAAK,SAAS,YAAY,KAAK,SAAS;AACjD;AACA,SAAS,gBAAgB,MAAM;AAC7B,MAAI,CAAC,mBAAmB,IAAI,KAAK,KAAK,SAAS;AAC7C,WAAO;AACT,MAAI,KAAK,SAAS,UAAU,KAAK,SAAS,YAAY,KAAK,SAAS,cAAc,KAAK,SAAS,SAAS,KAAK,SAAS,YAAY,KAAK,SAAS,WAAW;AAC1J,WAAO,KAAK,aAAa;AAAA,EAC3B;AACA,cAAY,MAAM,wCAAwC;AAC5D;AACA,SAAS,6BAA6B,KAAK;AACzC,SAAO,KAAK,KAAK,QAAQ;AAC3B;AACA,SAAS,sBAAsB,MAAM;AACnC,MAAI;AACJ,SAAO,GAAG,KAAK,KAAK,aAAa,OAAO,KAAK;AAC/C;AACG,IAAC,oBAAqC,kBAAC,uBAAuB;AAC/D,qBAAmB,QAAQ,IAAI;AAC/B,qBAAmB,QAAQ,IAAI;AAC/B,SAAO;AACT,GAAG,qBAAqB,CAAA,CAAE;AAC1B,SAAS,YAAY,OAAO;AAC1B,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,CAAA;AAAA,EACT;AACA,QAAM,SAAS,CAAC,GAAG,KAAK;AACxB,QAAM,QAAQ,CAAA;AACd,SAAO,KAAK,SAAS,GAAG,GAAG;AACzB,WAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AAAA,EACnB,CAAC;AACD,QAAM,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACzB,aAAW,UAAU,OAAO,MAAM,CAAC,GAAG;AACpC,UAAM,MAAM,MAAM,MAAM,SAAS,CAAC;AAClC,QAAI,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG;AACtB,YAAM,KAAK,CAAC,GAAG,MAAM,CAAC;AAAA,IACxB,WAAW,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG;AAC7B,UAAI,CAAC,IAAI,OAAO,CAAC;AAAA,IACnB;AAAA,EACF;AACA,SAAO;AACT;AACA,IAAI;AACJ,IAAI,oBAAoB,MAAMC,mBAAkB;AAAA,EAC9C,YAAY,OAAO;AACjB,SAAK,QAAQ;AAAA,EACf;AAAA,EACA,OAAO,QAAQ;AACb,QAAI,WAAW;AACb,aAAO;AACT,UAAM,WAAW,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC;AACrE,WAAO,IAAIA,mBAAkB,QAAQ;AAAA,EACvC;AAAA,EACA,IAAI,WAAW;AACb,UAAM,QAAQ,OAAO,cAAc,WAAW,CAAC,WAAW,YAAY,CAAC,IAAI;AAC3E,UAAM,WAAW,YAAY,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC;AACnD,WAAO,IAAIA,mBAAkB,QAAQ;AAAA,EACvC;AAAA,EACA,OAAO,WAAW;AAChB,UAAM,QAAQ,CAAC,GAAG,KAAK,KAAK;AAC5B,UAAM,SAAS,OAAO,cAAc,WAAW,YAAY,UAAU,CAAC;AACtE,UAAM,SAAS,OAAO,cAAc,WAAW,YAAY,IAAI,UAAU,CAAC;AAC1E,eAAW,CAAC,GAAG,KAAK,KAAK,MAAM,QAAO,GAAI;AACxC,YAAM,CAAC,OAAO,GAAG,IAAI;AACrB,UAAI,SAAS,UAAU,UAAU,KAAK;AACpC,cAAM,QAAQ,CAAA;AACd,YAAI,QAAQ,QAAQ;AAClB,gBAAM,KAAK,CAAC,OAAO,MAAM,CAAC;AAAA,QAC5B;AACA,YAAI,SAAS,KAAK;AAChB,gBAAM,KAAK,CAAC,QAAQ,GAAG,CAAC;AAAA,QAC1B;AACA,cAAM,OAAO,GAAG,GAAG,GAAG,KAAK;AAAA,MAC7B;AAAA,IACF;AACA,WAAO,IAAIA,mBAAkB,KAAK;AAAA,EACpC;AAAA,EACA,QAAQ;AACN,QAAI,KAAK,MAAM,WAAW;AACxB,aAAO;AACT,WAAO,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,EACxB;AAAA,EACA,OAAO;AACL,QAAI,KAAK,MAAM,WAAW;AACxB,aAAO;AACT,WAAO,KAAK,MAAM,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA,EACtC;AAAA,EACA,SAAS,OAAO;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,YAAM,CAAC,OAAO,GAAG,IAAI,KAAK,MAAM,CAAC;AACjC,UAAI,SAAS,SAAS,QAAQ;AAC5B,eAAO;AAAA,IACX;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO,OAAO;AACZ,aAAS,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK;AACxC,UAAI,CAAC,KAAK,SAAS,CAAC;AAClB,eAAO;AAAA,IACX;AACA,WAAO;AAAA,EACT;AAAA,EACA,KAAK,WAAW;AACd,eAAW,KAAK,MAAM;AACpB,UAAI,UAAU,CAAC;AACb,eAAO;AAAA,IACX;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO,OAAO;AACZ,QAAI,UAAU;AACZ,aAAO;AACT,QAAI,MAAM,MAAM,WAAW,KAAK,MAAM;AACpC,aAAO;AACT,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,YAAM,OAAO,MAAM,MAAM,CAAC;AAC1B,YAAM,QAAQ,KAAK,MAAM,CAAC;AAC1B,UAAI,KAAK,CAAC,MAAM,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,MAAM,CAAC;AAC7C,eAAO;AAAA,IACX;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,UAAM,SAAS,CAAA;AACf,eAAW,CAAC,OAAO,GAAG,KAAK,KAAK,OAAO;AACrC,eAAS,IAAI,OAAO,IAAI,KAAK,KAAK;AAChC,eAAO,KAAK,CAAC;AAAA,MACf;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,IAAI,SAAS;AACX,QAAI,MAAM;AACV,eAAW,CAAC,OAAO,GAAG,KAAK,KAAK,OAAO;AACrC,aAAO,MAAM;AAAA,IACf;AACA,WAAO;AAAA,EACT;AAAA,EACA,EAAE,OAAO,QAAQ,IAAI;AACnB,eAAW,CAAC,OAAO,GAAG,KAAK,KAAK,OAAO;AACrC,eAAS,IAAI,OAAO,IAAI,KAAK,KAAK;AAChC,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AACA,kBAAkB,QAAQ,MAAM;AAC9B,SAAO,yBAAyB,OAAO,wBAAwB,wBAAwB,IAAI,kBAAkB,EAAE;AACjH;AACA,kBAAkB,sBAAsB,CAAC,cAAc;AACrD,SAAO,kBAAkB,QAAQ,IAAI,SAAS;AAChD;AACG,IAAC,mBAAmB;AAGvB,IAAI,OAAO,MAAM,CAAC,MAAM,EAAE;AAC1B,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,UAAU;AACrC,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,UAAU;AACrC,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,cAAc;AACzC,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,eAAe;AAC1C,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,UAAU;AACrC,IAAI,QAAQ,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,EAAE,eAAe,MAAM,CAAC;AAC9D,IAAI,6BAA6C,+BAAe,KAAK,EAAE;AAAA,EACrE,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,cAAc,CAAC,KAAI,GAAI,IAAI;AAAA,IAC3B,cAAc,CAAC,MAAK,GAAI,IAAI;AAAA,IAC5B,cAAc,CAAC,MAAK,GAAI,IAAI;AAAA,IAC5B,cAAc,CAAC,MAAK,GAAI,IAAI;AAAA,IAC5B,cAAc,CAAC,MAAK,GAAI,IAAI;AAAA,IAC5B,cAAc,CAAC,MAAK,GAAI,IAAI;AAAA,IAC5B,cAAc,CAAC,MAAK,GAAI,IAAI;AAAA,EAChC;AACA,CAAC;AAID,SAAS,cAAc;AACrB,QAAM,CAAC,UAAU,WAAW,IAAIC,MAAO,SAAQ;AAC/C,SAAO,CAAC,YAAY,OAAO,WAAW,QAAQ,WAAW;AAC3D;AACA,SAAS,kBAAkB;AACzB,QAAM,CAAC,KAAK,MAAM,IAAI,YAAW;AACjC,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAO,SAAS,CAAC;AAC/C,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAO,SAAS,IAAI;AAChEA,QAAO,gBAAgB,MAAM;AAC3B,QAAI,QAAQ;AACV;AACF,QAAI,EAAE,0BAA0B;AAC9B;AACF,UAAM,WAAW,IAAI;AAAA,MACnB,CAAC,SAAS;AACR,YAAI,KAAK,WAAW;AAClB;AACF,0BAAkB,KAAK,CAAC,EAAE,cAAc;AAAA,MAC1C;AAAA,MACA,EAAE,WAAW,EAAC;AAAA,IACpB;AACI,aAAS,QAAQ,GAAG;AACpB,WAAO,MAAM,SAAS,WAAU;AAAA,EAClC,GAAG,CAAC,GAAG,CAAC;AACRA,QAAO,UAAU,MAAM;AACrB,QAAI,kBAAkB,QAAQ;AAC5B;AACF,QAAI;AACJ,UAAM,KAAK,MAAM;AACf,YAAM,EAAE,OAAO,aAAa,IAAI,sBAAqB;AACrD,iBAAW,CAAC,OAAO,KAAK,IAAI,KAAK,OAAO,aAAa,WAAW,IAAI,CAAC,CAAC;AACtE,kBAAY,sBAAsB,EAAE;AAAA,IACtC;AACA,gBAAY,sBAAsB,EAAE;AACpC,WAAO,MAAM;AACX,UAAI,cAAc,QAAQ;AACxB,6BAAqB,SAAS;AAAA,MAChC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,cAAc,CAAC;AACxB,QAAM,QAAQA,MAAO,QAAQ,MAAM;AACjC,WAAO,EAAE,WAAW,cAAc,OAAO,MAAK;AAAA,EAChD,GAAG,CAAC,OAAO,CAAC;AACZ,SAAO;AAAA,IACL,KAAK;AAAA,IACL;AAAA,EACJ;AACA;AAGA,IAAI,wBAAwB,CAAC,MAAM;AACjC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,CAAC,WAAW,eAAe,IAAIC,MAAO,SAAS,gBAAgB,UAAU,MAAM;AACrF,QAAM,eAAeA,MAAO,OAAO,aAAa,OAAO,YAAY,OAAO;AAC1E,eAAa,UAAU,aAAa,OAAO,YAAY;AACvD,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAO,SAAS,MAAM;AAClD,QAAI,iBAAiB;AACnB,aAAO;AACT,WAAO,EAAE,mBAAmB,OAAO,MAAM,gBAAgB,OAAO,SAAS,aAAa,MAAM,SAAS,aAAa,OAAO,OAAO;AAAA,EAClI,CAAC;AACD,QAAM,kBAAkBA,MAAO;AAAA,IAC7B,CAAC,SAAS,aAAa;AACrB,wBAAkB,UAAU,UAAU,QAAQ,QAAQ;AAAA,IACxD;AAAA,IACA,CAAC,SAAS,iBAAiB;AAAA,EAC/B;AACE,QAAM,eAAeA,MAAO;AAAA,IAC1B,CAAC,WAAW;AACV,UAAI,iBAAiB,UAAU,WAAW,UAAU,mBAAmB,MAAM,GAAG;AAC9E,cAAM,cAAc,aAAa,MAAM,QAAQ,aAAa,OAAO;AACnE,YAAI,gBAAgB,OAAO;AACzB,qBAAW,KAAK;AAAA,QAClB,WAAW,OAAO,gBAAgB,UAAU;AAC1C,mBAAS;AACT,qBAAW,IAAI;AAAA,QACjB,OAAO;AACL,qBAAW,IAAI;AAAA,QACjB;AAAA,MACF;AACA,sBAAgB,MAAM;AAAA,IACxB;AAAA,IACA,CAAC,MAAM,YAAY;AAAA,EACvB;AACE,QAAM,WAAWA,MAAO,OAAO,KAAK;AACpC,QAAM,eAAeA,MAAO,OAAO,MAAM;AACzC,QAAM,iBAAiBA,MAAO,YAAY,MAAM;AAC9C,oBAAgB,WAAW,CAAC,GAAG,CAAC,CAAC;AACjC,aAAS,UAAU;AAAA,EACrB,GAAG,CAAC,WAAW,eAAe,CAAC;AAC/B,QAAM,mBAAmBA,MAAO;AAAA,IAC9B,CAAC,UAAU,aAAa;AACtB,UAAI;AACJ,sBAAgB,WAAW,KAAK,YAAY,OAAO,WAAW,aAAa,YAAY,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AACzG,eAAS,UAAU;AAAA,IACrB;AAAA,IACA,CAAC,eAAe;AAAA,EACpB;AACE,QAAM,YAAYA,MAAO;AAAA,IACvB,OAAO,UAAU;AACf,UAAI,OAAO;AACX,UAAI,MAAM,QAAQ,UAAU;AAC1B,cAAM,gBAAe;AACrB,cAAM,eAAc;AACpB,qBAAa,UAAU,CAAC,GAAG,CAAC;AAAA,MAC9B,WAAW,MAAM,QAAQ,WAAW,CAAC,MAAM,UAAU;AACnD,cAAM,gBAAe;AACrB,cAAM,eAAc;AACpB,qBAAa,UAAU,CAAC,GAAG,CAAC;AAC5B,eAAO;AAAA,MACT,WAAW,MAAM,QAAQ,OAAO;AAC9B,cAAM,gBAAe;AACrB,cAAM,eAAc;AACpB,qBAAa,UAAU,CAAC,MAAM,WAAW,KAAK,GAAG,CAAC;AAClD,eAAO;AAAA,MACT;AACA,aAAO,WAAW,MAAM;AACtB,YAAI,CAAC,SAAS,WAAW,aAAa,YAAY,QAAQ;AACxD,0BAAgB,OAAO,YAAY,QAAQ,aAAa,OAAO;AAC/D,mBAAS,UAAU;AAAA,QACrB;AAAA,MACF,GAAG,CAAC;AAAA,IACN;AAAA,IACA,CAAC,iBAAiB,SAAS;AAAA,EAC/B;AACE,QAAM,cAAc,aAAa,OAAO,YAAY;AACpD,QAAM,CAAC,gBAAgB,QAAQ,IAAIA,MAAO,QAAQ,MAAM;AACtD,QAAI,IAAI;AACR,QAAI,gBAAgB,OAAO;AACzB,aAAO,CAAA;AACT,UAAM,WAAW,iBAAiB,OAAO,SAAS,cAAc,OAAO;AACvE,QAAI,aAAa;AACf,aAAO,CAAC,UAAU,KAAK;AACzB,WAAO,EAAE,MAAM,KAAK,gBAAgB,OAAO,MAAM,OAAO,SAAS,GAAG,kBAAkB,OAAO,SAAS,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK;AAAA,EACnI,GAAG,CAAC,SAAS,iBAAiB,aAAa,CAAC;AAC5C,QAAM,EAAE,KAAK,OAAO,kBAAiB,IAAK,gBAAe;AACzD,MAAI,MAAM;AACV,MAAI;AACJ,MAAI,QAAQ;AACZ,MAAI;AACJ,MAAI,mBAAmB,QAAQ;AAC7B,UAAM,eAAe,mBAAmB;AACxC,YAAQ,eAAe,mBAAmB;AAC1C,UAAM,iBAAiB,6BAA6B,cAAc;AAClE,QAAI,gBAAgB;AAClB,sBAAgB,eAAe;AAAA,IACjC;AACA,UAAM,eAAe,iBAAiB,eAAe,SAAS;AAC9D,aAAyBA,sBAAO;AAAA,MAC9B;AAAA,MACA;AAAA,QACE,eAAe;AAAA,QACf,UAAU;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA,mBAAmB;AAAA,QACnB,oBAAoB,mBAAmB,WAAW,IAAI,YAAY,iBAAiB;AAAA,QACnF;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR;AAAA,IACA;AAAA,EACE;AACA,kBAAgB,EAAE,GAAG,eAAe,GAAG,kBAAiB;AACxD,QAAM,gBAAgB,SAAS,eAAe,QAAQ;AACtD,MAAI,kBAAkB,MAAM;AAC1B,YAAQ;AAAA,MACN;AAAA,IACN;AACI,WAAO;AAAA,EACT;AACA,MAAI,YAAY,QAAQ,cAAc;AACtC,MAAI,CAAC,SAAS;AACZ,iBAAa;AAAA,EACf;AACA,MAAI,KAAK;AACP,iBAAa;AAAA,EACf;AACA,SAAO;AAAA,IACWA,sBAAO,cAAc,aAAa,UAAU,EAAE,OAAO,MAAK,GAAoBA,sBAAO;AAAA,MACnG;AAAA,MACA;AAAA,QACE,OAAO,aAAa,KAAK;AAAA,QACzB;AAAA,QACA;AAAA,QACA;AAAA,MACR;AAAA,MACsBA,sBAAO;AAAA,QACrB;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA,UACA,WAAW;AAAA,UACX,OAAO;AAAA,UACP,IAAI,aAAa,OAAO,UAAU;AAAA,UAClC,SAAS,OAAO;AAAA,UAChB,SAAS,OAAO;AAAA,UAChB,aAAa,OAAO;AAAA,UACpB,cAAc,OAAO;AAAA,QAC/B;AAAA,QACwBA,sBAAO,cAAc,OAAO,EAAE,WAAW,eAAe,UAAS,GAAI,MAAM;AAAA,MACnG;AAAA,IACA,CAAK;AAAA,IACD;AAAA,EACJ;AACA;AACA,IAAI,mCAAmC;AAiBvC,IAAI,WAAW,KAAK;AACpB,IAAI,UAAU,CAAA;AACd,SAAS,mBAAmB,KAAK,KAAK;AACpC,SAAO,MAAM,WAAW;AAC1B;AACA,SAAS,UAAU,QAAQ;AACzB,SAAO,SAAS;AAClB;AACA,SAAS,UAAU,QAAQ,KAAK;AAC9B,UAAQ,SAAS,OAAO;AAC1B;AACA,SAAS,qBAAqB,QAAQ;AACpC,QAAM,MAAM,UAAU,MAAM;AAC5B,QAAM,MAAM,UAAU,QAAQ,GAAG;AACjC,SAAO,CAAC,KAAK,GAAG;AAClB;AACA,IAAI,wBAAwB,MAAM;AAAA,EAChC,cAAc;AACZ,SAAK,cAAc,MAAM;AACzB,SAAK,kBAAkB,CAAA;AACvB,SAAK,gBAAgB;AAAA,MACnB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AACI,SAAK,aAAa;AAClB,SAAK,aAAa,CAAC,WAAW;AAC5B,YAAM,MAAM,UAAU,MAAM;AAC5B,YAAM,MAAM,UAAU,QAAQ,GAAG;AACjC,YAAM,IAAI,KAAK;AACf,UAAI,MAAM,KAAK,cAAc,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE;AACxD,eAAO;AACT,aAAO,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE;AAAA,IAC5E;AACA,SAAK,QAAQ,CAAA;AAEb,SAAK,aAAa,SAAS,MAAM;AAC/B,WAAK,YAAY,KAAK,eAAe;AACrC,WAAK,kBAAkB,CAAA;AAAA,IACzB,GAAG,EAAE;AACL,SAAK,mBAAmB,MAAM;AAC5B,YAAM,OAAO,OAAO,KAAK,KAAK,KAAK;AACnC,iBAAW,OAAO,MAAM;AACtB,cAAM,MAAM,KAAK,MAAM,GAAG;AAC1B,YAAI,OAAO;AACX,iBAAS,IAAI,GAAG,IAAI,IAAI,MAAM,QAAQ,KAAK;AACzC,gBAAM,SAAS,IAAI,MAAM,CAAC;AAC1B,cAAI,KAAK,WAAW,MAAM,GAAG;AAC3B,mBAAO;AACP;AAAA,UACF;AAAA,QACF;AACA,YAAI,MAAM;AACR,cAAI,QAAQ,IAAI,MAAM,OAAO,KAAK,UAAU;AAAA,QAC9C,OAAO;AACL,cAAI,OAAM;AACV,iBAAO,KAAK,MAAM,GAAG;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,YAAY,aAAa;AACvB,SAAK,cAAc;AAAA,EACrB;AAAA,EACA,UAAU,WAAW,YAAY;AAC/B,QAAI,KAAK,cAAc,MAAM,UAAU,KAAK,KAAK,cAAc,MAAM,UAAU,KAAK,KAAK,cAAc,UAAU,UAAU,SAAS,KAAK,cAAc,WAAW,UAAU,UAAU,KAAK,eAAe;AACxM;AACF,SAAK,gBAAgB;AACrB,SAAK,aAAa;AAClB,SAAK,iBAAgB;AAAA,EACvB;AAAA,EACA,UAAU,KAAK,KAAK,KAAK,KAAK;AAC5B,QAAI;AACJ,QAAI,SAAS;AACb,UAAM,OAAO,KAAK,QAAQ,IAAG,MAAO,OAAO,KAAK,IAAI,MAAK;AACzD,QAAI,WAAW;AACf,UAAM,SAAS;AAAA,MACb,KAAK;AAAA,MACL,OAAO,CAAC,mBAAmB,KAAK,GAAG,CAAC;AAAA,MACpC;AAAA,MACA,QAAQ,MAAM;AACZ,YAAI;AACF;AACF,mBAAW;AACX,YAAI,QAAQ,SAAS,IAAI;AACvB,kBAAQ,QAAQ,GAAG;AAAA,QACrB,WAAW,CAAC,QAAQ;AAClB,cAAI,MAAM;AAAA,QACZ;AAAA,MACF;AAAA,IACN;AACI,UAAM,cAAc,IAAI,QAAQ,CAAC,MAAM,IAAI,iBAAiB,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC;AAClF,0BAAsB,YAAY;AAChC,UAAI;AACF,YAAI,MAAM;AACV,cAAM;AACN,cAAM,IAAI,OAAM;AAChB,cAAM,UAAU,KAAK,MAAM,GAAG;AAC9B,YAAI,YAAY,UAAU,CAAC,UAAU;AACnC,kBAAQ,MAAM;AACd,qBAAW,UAAU,QAAQ,OAAO;AAClC,iBAAK,gBAAgB,KAAK,qBAAqB,MAAM,CAAC;AAAA,UACxD;AACA,mBAAS;AACT,eAAK,WAAU;AAAA,QACjB;AAAA,MACF,SAAS,GAAG;AACV,eAAO,OAAM;AAAA,MACf;AAAA,IACF,CAAC;AACD,SAAK,MAAM,GAAG,IAAI;AAAA,EACpB;AAAA,EACA,eAAe,KAAK,KAAK,KAAK;AAC5B,UAAM,MAAM;AACZ,UAAM,UAAU,KAAK,MAAM,GAAG;AAC9B,QAAI,YAAY,QAAQ;AACtB,YAAM,SAAS,mBAAmB,KAAK,GAAG;AAC1C,UAAI,CAAC,QAAQ,MAAM,SAAS,MAAM,GAAG;AACnC,gBAAQ,MAAM,KAAK,MAAM;AAAA,MAC3B;AACA,aAAO,QAAQ;AAAA,IACjB,OAAO;AACL,WAAK,UAAU,KAAK,KAAK,KAAK,GAAG;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AACF;AACA,IAAI,8BAA8B;AAKlC,SAAS,iBAAiB,WAAW,SAAS,SAAS,SAAS,UAAU,OAAO;AAC/E,QAAM,eAAeC,MAAO,OAAM;AAClC,eAAa,UAAU;AACvBA,QAAO;AAAA,IACL,MAAM;AACJ,UAAI,YAAY,QAAQ,QAAQ,qBAAqB;AACnD;AACF,YAAM,KAAK;AACX,YAAM,gBAAgB,CAAC,UAAU;AAC/B,YAAI;AACJ,SAAC,KAAK,aAAa,YAAY,OAAO,SAAS,GAAG,KAAK,IAAI,KAAK;AAAA,MAClE;AACA,SAAG,iBAAiB,WAAW,eAAe,EAAE,SAAS,SAAS;AAClE,aAAO,MAAM;AACX,WAAG,oBAAoB,WAAW,eAAe,EAAE,QAAO,CAAE;AAAA,MAC9D;AAAA,IACF;AAAA,IACA,CAAC,WAAW,SAAS,SAAS,OAAO;AAAA;AAAA,EAEzC;AACA;AACA,SAAS,YAAY,KAAK,QAAQ;AAChC,SAAO,QAAQ,SAAS,SAAS;AACnC;AACA,IAAI,KAAK,KAAK;AACd,SAAS,iBAAiB,SAAS;AACjC,SAAO,UAAU,KAAK;AACxB;AACA,IAAI,cAAc,CAAC,MAAM,MAAM,sBAAsB;AAAA,EACnD,IAAI,OAAO,mBAAmB;AAAA,EAC9B,IAAI,OAAO,mBAAmB;AAAA,EAC9B,IAAI,OAAO,mBAAmB;AAAA,EAC9B,IAAI,OAAO,mBAAmB;AAChC;AACA,IAAI,yBAAyB,CAAC,WAAW,YAAY,gBAAgB,mBAAmB,gBAAgB;AACtG,UAAQ,WAAS;AAAA,IACf,KAAK;AACH,aAAO,KAAK,MAAM,UAAU,IAAI,oBAAoB,cAAc;AAAA,IACpE,KAAK;AACH,aAAO,KAAK,MAAM,aAAa,iBAAiB,CAAC;AAAA,IACnD,KAAK;AACH,aAAO,KAAK,MAAM,aAAa,cAAc,IAAI,oBAAoB,cAAc;AAAA,EACzF;AACA;AACA,IAAI,iBAAiB,CAAC,SAAS,iBAAiB,oBAAoB,KAAK,IAAI,SAAS,kBAAkB,kBAAkB,CAAC;AAC3H,IAAI,kBAAkB,CAAC,GAAG,GAAG,OAAO,GAAG,MAAM,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,KAAK,KAAK,GAAG;AACtF,IAAI,aAAa,CAAC,UAAU;AAC1B,MAAI;AACJ,QAAM,MAAM,KAAK,MAAM,YAAY,OAAO,KAAK;AAC/C,SAAuBA,sBAAO,cAAc,OAAO,EAAE,SAAS,aAAa,MAAM,QAAQ,OAAO,6BAA4B,GAAoBA,sBAAO;AAAA,IACrJ;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,cAAc;AAAA,IACpB;AAAA,EACA,GAAqBA,sBAAO;AAAA,IACxB;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,cAAc;AAAA,IACpB;AAAA,EACA,CAAG;AACH;AACA,IAAI,YAAY,CAAC,UAAU;AACzB,MAAI;AACJ,QAAM,MAAM,KAAK,MAAM,YAAY,OAAO,KAAK;AAC/C,SAAuBA,sBAAO,cAAc,OAAO,EAAE,SAAS,aAAa,MAAM,QAAQ,OAAO,6BAA4B,GAAoBA,sBAAO;AAAA,IACrJ;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,eAAe;AAAA,MACf,gBAAgB;AAAA,IACtB;AAAA,EACA,CAAG;AACH;AACA,SAAS,iBAAiB,SAAS,MAAM,MAAM;AAC7C,QAAM,CAAC,OAAO,QAAQ,IAAIA,MAAO,SAAS,OAAO;AACjD,QAAM,aAAaA,MAAO,OAAO,IAAI;AACrCA,QAAO;AAAA,IACL,MAAM,MAAM;AACV,iBAAW,UAAU;AAAA,IACvB;AAAA,IACA,CAAA;AAAA,EACJ;AACE,QAAM,oBAAoBA,MAAO;AAAA,IAC/B,SAAS,CAAC,MAAM;AACd,UAAI,WAAW,SAAS;AACtB,iBAAS,CAAC;AAAA,MACZ;AAAA,IACF,GAAG,IAAI;AAAA,EACX;AACEA,QAAO,gBAAgB,MAAM;AAC3B,QAAI,WAAW,SAAS;AACtB,wBAAkB,QAAQ,MAAM,SAAS;AAAA,IAC3C;AAAA,EACF,GAAG,IAAI;AACP,SAAO;AACT;AACA,IAAI,WAAW;AACf,IAAI,WAAW;AACf,IAAI,MAAM,IAAI,OAAO,QAAQ,WAAW,QAAQ,WAAW,GAAG;AAC9D,IAAI,MAAM,IAAI,OAAO,QAAQ,WAAW,QAAQ,WAAW,GAAG;AAC9D,SAAS,UAAU,OAAO;AACxB,SAAO,IAAI,KAAK,KAAK,IAAI,QAAQ,IAAI,KAAK,KAAK,IAAI,QAAQ;AAC7D;AACA,IAAI,sBAAsB;AAC1B,SAAS,oBAAoB;AAC3B,MAAI,wBAAwB;AAC1B,WAAO;AACT,QAAM,QAAQ,SAAS,cAAc,GAAG;AACxC,QAAM,MAAM,QAAQ;AACpB,QAAM,MAAM,SAAS;AACrB,QAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,QAAM,KAAK;AACX,QAAM,MAAM,WAAW;AACvB,QAAM,MAAM,MAAM;AAClB,QAAM,MAAM,OAAO;AACnB,QAAM,MAAM,aAAa;AACzB,QAAM,MAAM,QAAQ;AACpB,QAAM,MAAM,SAAS;AACrB,QAAM,MAAM,WAAW;AACvB,QAAM,OAAO,KAAK;AAClB,WAAS,KAAK,OAAO,KAAK;AAC1B,QAAM,KAAK,MAAM;AACjB,QAAM,MAAM,WAAW;AACvB,MAAI,KAAK,MAAM;AACf,MAAI,OAAO,IAAI;AACb,SAAK,MAAM;AAAA,EACb;AACA,QAAM,OAAM;AACZ,wBAAsB,KAAK;AAC3B,SAAO;AACT;AACA,IAAI,QAAQ,OAAM;AAClB,SAAS,0BAA0B,YAAY;AAC7C,QAAM,gBAAgBA,MAAO,OAAO,CAAC,OAAO,UAAU,CAAC;AACvD,MAAI,cAAc,QAAQ,CAAC,MAAM,YAAY;AAC3C,kBAAc,QAAQ,CAAC,IAAI;AAAA,EAC7B;AACA,gBAAc,QAAQ,CAAC,IAAI;AAC3B,QAAM,CAAC,OAAO,QAAQ,IAAIA,MAAO,SAAS,UAAU;AACpD,QAAM,GAAG,WAAW,IAAIA,MAAO,SAAQ;AACvC,QAAM,gBAAgBA,MAAO,YAAY,CAAC,OAAO;AAC/C,UAAM,IAAI,cAAc,QAAQ,CAAC;AACjC,QAAI,MAAM,OAAO;AACf,WAAK,OAAO,OAAO,aAAa,GAAG,CAAC,IAAI;AACxC,UAAI,OAAO;AACT;AAAA,IACJ;AACA,QAAI,MAAM;AACR,kBAAY,CAAA,CAAE;AAChB,aAAS,CAAC,OAAO;AACf,UAAI,OAAO,OAAO,YAAY;AAC5B,eAAO,GAAG,MAAM,QAAQ,KAAK,CAAC;AAAA,MAChC;AACA,aAAO;AAAA,IACT,CAAC;AACD,kBAAc,QAAQ,CAAC,IAAI;AAAA,EAC7B,GAAG,CAAA,CAAE;AACL,QAAM,UAAUA,MAAO,YAAY,MAAM;AACvC,kBAAc,QAAQ,CAAC,IAAI;AAC3B,gBAAY,CAAA,CAAE;AAAA,EAChB,GAAG,CAAA,CAAE;AACL,SAAO,CAAC,cAAc,QAAQ,CAAC,MAAM,QAAQ,QAAQ,cAAc,QAAQ,CAAC,GAAG,eAAe,OAAO;AACvG;AACA,SAAS,gCAAgC,KAAK;AAC5C,MAAI,IAAI,WAAW,GAAG;AACpB,WAAO;AAAA,EACT;AACA,MAAI,QAAQ;AACZ,MAAI,QAAQ;AACZ,aAAW,OAAO,KAAK;AACrB,aAAS,IAAI;AACb,QAAI,QAAQ;AACV;AACF;AAAA,EACF;AACA,SAAO,IAAI,MAAM,GAAG,KAAK,EAAE,KAAK,IAAI;AACtC;AAKA,SAAS,iBAAiB,SAAS,eAAe;AAChD,SAAOC,eAAO;AAAA,IACZ,MAAM,QAAQ,IAAI,CAAC,GAAG,OAAO;AAAA,MAC3B,GAAG;AAAA,MACH,aAAa;AAAA,MACb,QAAQ,IAAI;AAAA,IAClB,EAAM;AAAA,IACF,CAAC,SAAS,aAAa;AAAA,EAC3B;AACA;AACA,SAAS,aAAa,MAAM,OAAO;AACjC,UAAQ,QAAQ,OAAO,OAAO,SAAS,SAAS,OAAO,QAAQ;AACjE;AACA,SAAS,eAAe,UAAU,MAAM,WAAW;AACjD,OAAK,aAAa,OAAO,SAAS,UAAU,aAAa;AACvD,WAAO;AACT,QAAM,CAAC,KAAK,GAAG,IAAI,UAAU,QAAQ;AACrC,QAAM,CAAC,SAAS,OAAO,IAAI;AAC3B,MAAI,YAAY;AACd,WAAO;AACT,MAAI,KAAK,SAAS,QAAQ;AACxB,WAAO,QAAQ;AAAA,EACjB;AACA,SAAO,OAAO,KAAK,KAAK,CAAC,KAAK,OAAO,KAAK,KAAK,CAAC;AAClD;AACA,SAAS,aAAa,UAAU,MAAM,MAAM;AAC1C,QAAM,SAAS,KAAK;AACpB,QAAM,OAAO,KAAK,IAAI,KAAK,QAAQ;AACnC,QAAM,SAAS,KAAK;AACpB,QAAM,OAAO,KAAK,IAAI,KAAK,SAAS;AACpC,QAAM,CAAC,SAAS,OAAO,IAAI;AAC3B,MAAI,UAAU,UAAU,UAAU;AAChC,WAAO;AACT,MAAI,KAAK,SAAS,QAAQ;AACxB,WAAO,WAAW,UAAU,WAAW;AAAA,EACzC;AACA,QAAM,CAAC,WAAW,OAAO,IAAI,KAAK;AAClC,SAAO,aAAa,UAAU,aAAa,QAAQ,WAAW,UAAU,aAAa,QAAQ,YAAY,UAAU,UAAU;AAC/H;AACA,SAAS,cAAc,UAAU,MAAM,WAAW;AAChD,MAAI,SAAS;AACb,MAAI,UAAU,YAAY;AACxB,WAAO;AACT,MAAI,aAAa,UAAU,MAAM,UAAU,QAAQ,KAAK;AACtD;AACF,aAAW,KAAK,UAAU,QAAQ,YAAY;AAC5C,QAAI,aAAa,UAAU,MAAM,CAAC,GAAG;AACnC;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,iBAAiB,SAAS,UAAU;AAC3C,MAAI,aAAa;AACjB,MAAI,aAAa,QAAQ;AACvB,QAAI,WAAW,CAAC,GAAG,OAAO;AAC1B,UAAM,OAAO,WAAW,SAAS,GAAG;AACpC,QAAI,SAAS,MAAM,SAAS,MAAM;AAChC,eAAS,OAAO,SAAS,KAAK,CAAC;AAC/B,eAAS,OAAO,SAAS,MAAM,GAAG,IAAI;AAAA,IACxC,OAAO;AACL,eAAS,OAAO,SAAS,OAAO,GAAG,GAAG,IAAI;AAC1C,eAAS,OAAO,SAAS,KAAK,CAAC;AAAA,IACjC;AACA,eAAW,SAAS,IAAI,CAAC,GAAG,OAAO;AAAA,MACjC,GAAG;AAAA,MACH,QAAQ,QAAQ,CAAC,EAAE;AAAA,IACzB,EAAM;AACF,iBAAa;AAAA,EACf;AACA,SAAO;AACT;AACA,SAAS,eAAe,SAAS,UAAU;AACzC,MAAI,SAAS;AACb,QAAM,WAAW,iBAAiB,SAAS,QAAQ;AACnD,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,UAAM,IAAI,SAAS,CAAC;AACpB,QAAI,EAAE;AACJ,gBAAU,EAAE;AAAA;AAEZ;AAAA,EACJ;AACA,SAAO;AACT;AACA,SAAS,oBAAoB,SAAS,aAAa,OAAO,UAAU,IAAI;AACtE,QAAM,aAAa,iBAAiB,SAAS,QAAQ;AACrD,QAAM,SAAS,CAAA;AACf,aAAW,KAAK,YAAY;AAC1B,QAAI,EAAE,QAAQ;AACZ,aAAO,KAAK,CAAC;AAAA,IACf,OAAO;AACL;AAAA,IACF;AAAA,EACF;AACA,MAAI,OAAO,SAAS,GAAG;AACrB,eAAW,KAAK,QAAQ;AACtB,eAAS,EAAE;AAAA,IACb;AAAA,EACF;AACA,MAAI,WAAW;AACf,MAAI,OAAO,MAAM,OAAO,KAAK;AAC7B,SAAO,QAAQ,SAAS,WAAW,WAAW,QAAQ;AACpD,YAAQ,WAAW,QAAQ,EAAE;AAC7B;AAAA,EACF;AACA,WAAS,IAAI,aAAa,IAAI,UAAU,KAAK;AAC3C,UAAM,IAAI,WAAW,CAAC;AACtB,QAAI,CAAC,EAAE,QAAQ;AACb,aAAO,KAAK,CAAC;AAAA,IACf;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,mBAAmB,SAAS,kBAAkB,YAAY;AACjE,MAAI,IAAI;AACR,aAAW,KAAK,kBAAkB;AAChC,UAAM,KAAK,EAAE,SAAS,IAAI,KAAK,cAAc,OAAO,aAAa;AACjE,QAAI,WAAW,KAAK,EAAE,OAAO;AAC3B,aAAO,EAAE;AAAA,IACX;AACA,SAAK,EAAE;AAAA,EACT;AACA,SAAO;AACT;AACA,SAAS,gBAAgB,SAAS,QAAQ,WAAW,cAAc,mBAAmB,MAAM,WAAW,aAAa,YAAY,eAAe;AAC7I,QAAM,oBAAoB,eAAe;AACzC,MAAI,aAAa,WAAW;AAC1B,WAAO;AACT,MAAI,WAAW;AACb,WAAO;AACT,QAAM,gBAAgB,OAAO,cAAc,WAAW,YAAY,UAAU,OAAO,CAAC;AACpF,MAAI,iBAAiB,UAAU,SAAS,eAAe;AACrD,WAAO,OAAO;AAAA,EAChB;AACA,QAAM,gBAAgB,QAAQ,gBAAgB,IAAI;AAClD,QAAM,KAAK,WAAW,cAAc,OAAO,aAAa;AACxD,MAAI,OAAO,cAAc,UAAU;AACjC,UAAM,SAAS,KAAK,OAAO,KAAK,qBAAqB,SAAS,IAAI;AAClE,QAAI,UAAU;AACZ,aAAO;AACT,WAAO;AAAA,EACT,OAAO;AACL,QAAI,OAAO;AACX,aAAS,IAAI,aAAa,IAAI,eAAe,KAAK;AAChD,YAAM,KAAK,UAAU,CAAC;AACtB,UAAI,MAAM,OAAO;AACf,eAAO;AACT,cAAQ;AAAA,IACV;AACA,WAAO;AAAA,EACT;AACF;AACA,IAAI,cAAc;AAClB,IAAI,eAAe,CAAA;AACnB,IAAI,QAAQ,OAAO,WAAW;AAC9B,eAAe,mBAAmB;AAChC,MAAI;AACJ,MAAI,WAAW,KAAK,YAAY,OAAO,SAAS,SAAS,UAAU,OAAO,SAAS,GAAG,WAAW;AAC/F;AACF,QAAM,SAAS,MAAM;AACrB,gBAAc;AACd,iBAAe,CAAA;AACfC,IAAU;AACZ;AACA,KAAK,iBAAgB;AACrB,SAAS,aAAa,GAAG,KAAK,UAAU,MAAM;AAC5C,SAAO,GAAG,CAAC,IAAI,QAAQ,OAAO,OAAO,IAAI,IAAI,IAAI,QAAQ;AAC3D;AACA,SAAS,kBAAkB,GAAG,KAAK,MAAM;AACvC,QAAM,MAAM,aAAa,GAAG,KAAK,UAAU,IAAI;AAC/C,MAAI,UAAU,aAAa,GAAG;AAC9B,MAAI,YAAY,QAAQ;AACtB,cAAU,IAAI,YAAY,CAAC;AAC3B,iBAAa,GAAG,IAAI;AACpB;AAAA,EACF;AACA,MAAI,cAAc,KAAK;AACrB,mBAAe,CAAA;AACf,kBAAc;AAAA,EAChB;AACA,SAAO;AACT;AACA,SAAS,oBAAoB,KAAK,MAAM;AACtC,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO,GAAG,KAAK,aAAa,IAAI,KAAK,UAAU;AAAA,EACjD;AACA,SAAO,yBAAyB,KAAK,IAAI;AAC3C;AACA,SAAS,WAAW,KAAK,UAAU;AACjC,QAAM,SAAS;AACf,MAAI,KAAI;AACR,MAAI,eAAe;AACnB,QAAM,SAAS,IAAI,YAAY,MAAM;AACrC,MAAI,QAAO;AACX,SAAO;AACT;AACA,IAAI,YAAY,CAAA;AAChB,SAAS,yBAAyB,KAAK,MAAM;AAC3C,aAAW,KAAK,WAAW;AACzB,QAAI,EAAE,QAAQ;AACZ,aAAO,EAAE;AAAA,EACb;AACA,QAAM,oBAAoB,WAAW,KAAK,YAAY;AACtD,QAAM,gBAAgB,WAAW,KAAK,QAAQ;AAC9C,QAAM,OAAO,EAAE,cAAc,2BAA2B,kBAAkB,4BAA4B,kBAAkB,0BAA0B;AAClJ,YAAU,KAAK;AAAA,IACb,KAAK;AAAA,IACL,KAAK;AAAA,EACT,CAAG;AACD,SAAO;AACT;AACA,SAAS,mBAAmB,MAAM,YAAY,WAAW,UAAU,MAAM;AACvE,QAAM,EAAE,KAAK,MAAM,MAAK,IAAK;AAC7B,MAAI,WAAW,OAAO;AACtB,QAAM,WAAW;AACjB,MAAI,eAAe,QAAQ;AACzB,eAAW,YAAY;AACvB,QAAI,WAAW,UAAU;AACvB,YAAM,OAAO,IAAI,WAAW;AAC5B,UAAI,cAAc;AAClB,UAAI,YAAY,MAAM;AACtB,UAAI,SAAS,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,MAAM;AACpD,UAAI,cAAc;AAClB,UAAI,aAAa,QAAQ;AACvB,iBAAS,YAAY,MAAM;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AACA,OAAI;AACJ,SAAO,WAAW;AACpB;AACA,SAAS,aAAa,MAAM,UAAU,eAAe;AACnD,QAAM,EAAE,KAAK,MAAK,IAAK;AACvB,QAAM,SAAS,YAAY,OAAO,WAAW,CAAA;AAC7C,QAAM,UAAU,iBAAiB,OAAO,gBAAgB,MAAM;AAC9D,MAAI,YAAY,OAAO,WAAW;AAChC,QAAI,YAAY;AAChB,WAAO,YAAY;AAAA,EACrB;AACA,SAAO;AACT;AACA,SAAS,qBAAqB,MAAM,MAAM,cAAc;AACtD,QAAM,EAAE,MAAM,KAAK,MAAK,IAAK;AAC7B,MAAI,YAAY,MAAM;AACtB;AAAA,IACE;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,mBAAmB,KAAK,MAAM,GAAG,GAAG,GAAG,GAAG,MAAM,OAAO,cAAc;AAC5E,MAAI,iBAAiB,SAAS;AAC5B,QAAI,SAAS,MAAM,IAAI,KAAK,MAAM,wBAAwB,MAAM,IAAI,IAAI,IAAI,IAAI;AAAA,EAClF,WAAW,iBAAiB,UAAU;AACpC,QAAI,SAAS,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI;AAAA,EAChD,OAAO;AACL,QAAI,SAAS,MAAM,IAAI,MAAM,wBAAwB,KAAK,IAAI,IAAI,IAAI,IAAI;AAAA,EAC5E;AACF;AACA,SAAS,YAAY,KAAK,WAAW;AACnC,QAAM,cAAc,kBAAkB,eAAe,KAAK,SAAS;AACnE,SAAO,YAAY,0BAA0B,YAAY;AAC3D;AACA,SAAS,aAAa,MAAM,MAAM,cAAc,eAAe,eAAe;AAC5E,QAAM,EAAE,KAAK,MAAM,MAAK,IAAK;AAC7B,QAAM,EAAE,GAAG,GAAG,OAAO,GAAG,QAAQ,EAAC,IAAK;AACtC,kBAAgB,iBAAiB,OAAO,gBAAgB;AACxD,MAAI,CAAC,eAAe;AAClB,QAAI,KAAK,SAAS,IAAI,GAAG;AACvB,aAAO,KAAK,MAAM,OAAO,EAAE,CAAC;AAAA,IAC9B;AACA,UAAM,MAAM,IAAI;AAChB,QAAI,KAAK,SAAS,KAAK;AACrB,aAAO,KAAK,MAAM,GAAG,GAAG;AAAA,IAC1B;AAAA,EACF;AACA,QAAM,OAAO,oBAAoB,KAAK,KAAK;AAC3C,QAAM,QAAQ,UAAU,IAAI,MAAM;AAClC,MAAI,iBAAiB,UAAU,OAAO;AACpC,mBAAe;AAAA,EACjB;AACA,MAAI,OAAO;AACT,QAAI,YAAY;AAAA,EAClB;AACA,MAAI,KAAK,SAAS,GAAG;AACnB,QAAI,UAAU;AACd,QAAI,iBAAiB,SAAS;AAC5B,UAAI,YAAY;AAChB,gBAAU;AAAA,IACZ,WAAW,iBAAiB,UAAU,iBAAiB,QAAQ;AAC7D,UAAI,YAAY;AAChB,gBAAU;AAAA,IACZ;AACA,QAAI,CAAC,eAAe;AAClB,yBAAmB,KAAK,MAAM,GAAG,GAAG,GAAG,GAAG,MAAM,OAAO,YAAY;AAAA,IACrE,OAAO;AACL,YAAM,YAAY,GAAG,MAAM,UAAU,IAAI,MAAM,aAAa;AAC5D,YAAM,QAAQC,EAAU,KAAK,MAAM,WAAW,IAAI,MAAM,wBAAwB,GAAG,iBAAiB,OAAO,gBAAgB,KAAK;AAChI,YAAM,WAAW,YAAY,KAAK,SAAS;AAC3C,YAAM,aAAa,MAAM,aAAa;AACtC,YAAM,eAAe,WAAW,cAAc,MAAM,SAAS;AAC7D,YAAM,WAAW,eAAe,MAAM,sBAAsB;AAC5D,UAAI,UAAU;AACZ,YAAI,KAAI;AACR,YAAI,KAAK,GAAG,GAAG,GAAG,CAAC;AACnB,YAAI,KAAI;AAAA,MACV;AACA,YAAM,WAAW,IAAI,IAAI,IAAI,eAAe;AAC5C,UAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,qBAAqB,QAAQ;AAC5D,iBAAW,QAAQ,OAAO;AACxB,2BAAmB,KAAK,MAAM,GAAG,OAAO,GAAG,UAAU,MAAM,OAAO,YAAY;AAC9E,iBAAS;AACT,YAAI,QAAQ,IAAI;AACd;AAAA,MACJ;AACA,UAAI,UAAU;AACZ,YAAI,QAAO;AAAA,MACb;AAAA,IACF;AACA,QAAI,SAAS;AACX,UAAI,YAAY;AAAA,IAClB;AACA,QAAI,OAAO;AACT,UAAI,YAAY;AAAA,IAClB;AAAA,EACF;AACF;AACA,SAAS,eAAe,MAAM,MAAM,MAAM;AACxC,QAAM,EAAE,KAAK,MAAM,aAAa,OAAO,cAAa,IAAK;AACzD,QAAM,EAAE,GAAG,GAAG,OAAO,GAAG,QAAQ,EAAC,IAAK;AACtC,MAAI,UAAS;AACb,MAAI,cAAc;AAClB,MAAI,KAAK,GAAG,GAAG,GAAG,CAAC;AACnB,MAAI,YAAY,MAAM;AACtB,MAAI,KAAI;AACR,MAAI,cAAc;AAClB,MAAI,UAAS;AACb,QAAM,iBAAiB,SAAS;AAChC,MAAI,QAAQ;AACZ,MAAI,SAAS,QAAQ;AACnB,UAAM,UAAU;AAChB,UAAM,OAAO,IAAI;AACjB,UAAM,KAAK,IAAI,UAAU;AACzB,UAAM,KAAK,IAAI,UAAU;AACzB,kBAAc,WAAW,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,OAAO,iBAAiB,IAAI,WAAW;AACnG,YAAQ;AAAA,EACV,OAAO;AACL,YAAQ;AACR,UAAM,gBAAgB;AACtB,UAAM,WAAW,iBAAiB,gBAAgB,cAAc;AAChE,UAAM,aAAa,iBAAiB,KAAK,IAAI,eAAe,gBAAgB;AAC5E,UAAM,UAAU,MAAM,wBAAwB;AAC9C,QAAI,WAAW,GAAG;AAChB,UAAI,OAAO,IAAI,UAAU,YAAY,IAAI,IAAI,CAAC;AAC9C,UAAI,OAAO,IAAI,UAAU,aAAa,UAAU,IAAI,IAAI,CAAC;AACzD,UAAI,OAAO,IAAI,UAAU,aAAa,WAAW,KAAK,IAAI,IAAI,IAAI,WAAW,GAAG;AAChF,UAAI,OAAO,IAAI,UAAU,aAAa,WAAW,KAAK,IAAI,IAAI,IAAI,WAAW,GAAG;AAChF,UAAI,YAAY;AAChB,UAAI,cAAc,MAAM;AACxB,UAAI,UAAU;AACd,UAAI,OAAM;AAAA,IACZ;AAAA,EACF;AACA,MAAI,YAAY,MAAM;AACtB,MAAI,SAAS,MAAM,QAAQ,IAAI,MAAM,wBAAwB,KAAK,IAAI,IAAI,IAAI,oBAAoB,KAAK,KAAK,CAAC;AAC7G,MAAI,UAAS;AACf;AACA,SAAS,aAAa,KAAK,OAAO,SAAS,GAAG,GAAG,OAAO,QAAQ,aAAa,SAAS,KAAK,SAAS,KAAK,UAAU,IAAI,YAAY,UAAU;AAC3I,QAAM,UAAU,KAAK,MAAM,IAAI,SAAS,CAAC;AACzC,QAAM,iBAAiB;AACvB,QAAM,gBAAgB,eAAe,SAAS,QAAQ,MAAM,mBAAmB;AAC/E,QAAM,oBAAoB,gBAAgB;AAC1C,QAAM,OAAO,uBAAuB,WAAW,GAAG,OAAO,MAAM,uBAAuB,aAAa;AACnG,QAAM,KAAK,YAAY,MAAM,SAAS,aAAa;AACnD,QAAM,UAAU,gBAAgB,IAAI,QAAQ,IAAI,QAAQ,EAAE;AAC1D,UAAQ,SAAO;AAAA,IACb,KAAK,MAAM;AACT,UAAI,UAAS;AACb;AAAA,QACE;AAAA,QACA,OAAO,gBAAgB;AAAA,QACvB,UAAU,gBAAgB;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,MACR;AACM,UAAI,YAAY,cAAc,MAAM,cAAc,MAAM;AACxD,UAAI,KAAI;AACR,UAAI,UAAS;AACb,UAAI;AAAA,QACF,OAAO,oBAAoB,gBAAgB;AAAA,QAC3C,UAAU,oBAAoB,gBAAgB;AAAA,MACtD;AACM,UAAI;AAAA,QACF,OAAO,oBAAoB,gBAAgB;AAAA,QAC3C,UAAU,oBAAoB,gBAAgB;AAAA,MACtD;AACM,UAAI;AAAA,QACF,OAAO,oBAAoB,gBAAgB;AAAA,QAC3C,UAAU,oBAAoB,gBAAgB;AAAA,MACtD;AACM,UAAI,cAAc,MAAM;AACxB,UAAI,WAAW;AACf,UAAI,UAAU;AACd,UAAI,YAAY;AAChB,UAAI,OAAM;AACV;AAAA,IACF;AAAA,IACA,KAAK;AAAA,IACL,KAAK,OAAO;AACV,UAAI,UAAS;AACb;AAAA,QACE;AAAA,QACA,OAAO,gBAAgB,IAAI;AAAA,QAC3B,UAAU,gBAAgB,IAAI;AAAA,QAC9B,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB;AAAA,MACR;AACM,UAAI,YAAY;AAChB,UAAI,cAAc,UAAU,MAAM,WAAW,MAAM;AACnD,UAAI,OAAM;AACV;AAAA,IACF;AAAA,IACA,KAAK,sBAAsB;AACzB,UAAI,UAAS;AACb;AAAA,QACE;AAAA,QACA,OAAO,gBAAgB;AAAA,QACvB,UAAU,gBAAgB;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,MACR;AACM,UAAI,YAAY,UAAU,MAAM,aAAa,MAAM;AACnD,UAAI,KAAI;AACR,UAAI,UAAS;AACb,UAAI,OAAO,OAAO,gBAAgB,GAAG,OAAO;AAC5C,UAAI,OAAO,OAAO,gBAAgB,GAAG,OAAO;AAC5C,UAAI,cAAc,MAAM;AACxB,UAAI,UAAU;AACd,UAAI,YAAY;AAChB,UAAI,OAAM;AACV;AAAA,IACF;AAAA,IACA;AACE,kBAAmB;AAAA,EACzB;AACA;AACA,SAAS,kBAAkB,MAAM,UAAU;AACzC,QAAM,EAAE,KAAK,MAAK,IAAK;AACvB,QAAM,UAAU,OAAO,MAAM,UAAU;AACvC,QAAM,SAAS,YAAY,OAAO,WAAW,CAAA;AAC7C,OAAK,UAAU,OAAO,SAAS,OAAO,UAAU,SAAS;AACvD,QAAI,OAAO;AACX,WAAO,OAAO;AAAA,EAChB;AACA,SAAO,SAAS;AAChB,MAAI,YAAY;AAChB,SAAO;AACT;AACA,SAAS,oBAAoB,MAAM;AACjC,QAAM,EAAE,IAAG,IAAK;AAChB,MAAI,YAAY;AAClB;AACA,SAAS,kBAAkB,MAAM,OAAO,SAAS,YAAY,YAAY;AACvE,QAAM,EAAE,KAAK,MAAM,aAAa,MAAK,IAAK;AAC1C,QAAM,EAAE,GAAG,GAAG,OAAO,OAAM,IAAK;AAChC,QAAM,kBAAkB,UAAU,IAAI,eAAe,qBAAqB,MAAM,MAAM,cAAc;AACpG,MAAI,eAAe,YAAY,kBAAkB,GAAG;AAClD,QAAI,cAAc;AAClB,UAAM,eAAe,KAAK,UAAU,cAAc;AAClD;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,IAAI,eAAe;AAAA,MAChC;AAAA,MACA,aAAa,QAAQ,eAAe;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,QAAI,YAAY;AACd,UAAI,cAAc;AAClB,UAAI,UAAS;AACb,iBAAW,WAAW,CAAC,GAAG,CAAC,GAAG;AAC5B,mBAAW,WAAW,CAAC,IAAI,IAAI,CAAC,GAAG;AACjC,cAAI,KAAK,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC;AAAA,QACtD;AAAA,MACF;AACA,UAAI,YAAY,MAAM;AACtB,UAAI,KAAI;AACR,UAAI,UAAS;AAAA,IACf;AACA,QAAI,cAAc;AAAA,EACpB;AACA,MAAI,eAAe,YAAY,eAAe,UAAU,CAAC,SAAS;AAChE,UAAM,OAAO,MAAM,SAAQ;AAC3B,UAAM,YAAY,GAAG,MAAM,eAAe,IAAI,MAAM,UAAU;AAC9D,UAAM,QAAQ,IAAI,QAAQ;AAC1B,QAAI,eAAe,UAAU,gBAAgB,GAAG;AAC9C,UAAI,cAAc,IAAI;AAAA,IACxB;AACA,QAAI,YAAY,MAAM;AACtB,QAAI,OAAO;AACX,QAAI,SAAS,MAAM,OAAO,IAAI,SAAS,IAAI,oBAAoB,KAAK,SAAS,CAAC;AAC9E,QAAI,gBAAgB,GAAG;AACrB,UAAI,cAAc;AAAA,IACpB;AAAA,EACF;AACF;AACA,SAAS,kBAAkB,MAAM;AAC/B,QAAM,EAAE,KAAK,OAAO,KAAI,IAAK;AAC7B,QAAM,EAAE,GAAG,GAAG,QAAQ,EAAC,IAAK;AAC5B,MAAI,UAAS;AACb,QAAM,SAAS;AACf,MAAI,SAAS,IAAI,MAAM,wBAAwB;AAC/C,QAAM,SAAS,IAAI,IAAI;AACvB,QAAM,IAAI,KAAK,IAAI,iBAAiB,EAAE,CAAC,IAAI;AAC3C,QAAM,IAAI,KAAK,IAAI,iBAAiB,EAAE,CAAC,IAAI;AAC3C,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,QAAI,OAAO,QAAQ,SAAS,MAAM;AAClC,QAAI,OAAO,QAAQ,SAAS,MAAM;AAClC,QAAI,OAAO,SAAS,GAAG,SAAS,CAAC;AACjC,QAAI,OAAO,SAAS,GAAG,SAAS,CAAC;AACjC,QAAI,OAAO,SAAS,GAAG,SAAS,CAAC;AACjC,QAAI,OAAO,SAAS,GAAG,SAAS,CAAC;AACjC,cAAU;AAAA,EACZ;AACA,MAAI,YAAY;AAChB,MAAI,UAAU;AACd,MAAI,cAAc,MAAM;AACxB,MAAI,OAAM;AACZ;AACA,SAAS,YAAY,KAAK,GAAG,GAAG,OAAO,QAAQ,QAAQ;AACrD,MAAI,OAAO,WAAW,UAAU;AAC9B,aAAS,EAAE,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAM;AAAA,EAC3D;AACA,WAAS;AAAA,IACP,IAAI,KAAK,IAAI,OAAO,IAAI,SAAS,GAAG,QAAQ,CAAC;AAAA,IAC7C,IAAI,KAAK,IAAI,OAAO,IAAI,SAAS,GAAG,QAAQ,CAAC;AAAA,IAC7C,IAAI,KAAK,IAAI,OAAO,IAAI,SAAS,GAAG,QAAQ,CAAC;AAAA,IAC7C,IAAI,KAAK,IAAI,OAAO,IAAI,SAAS,GAAG,QAAQ,CAAC;AAAA,EACjD;AACE,MAAI,OAAO,IAAI,OAAO,IAAI,CAAC;AAC3B,MAAI,MAAM,IAAI,OAAO,GAAG,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,EAAE;AAC3D,MAAI,MAAM,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,OAAO,IAAI,IAAI,QAAQ,OAAO,EAAE;AAC7E,MAAI,MAAM,GAAG,IAAI,QAAQ,GAAG,IAAI,SAAS,OAAO,IAAI,OAAO,EAAE;AAC7D,MAAI,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,GAAG,OAAO,EAAE;AAC7C;AACA,SAAS,YAAY,MAAM,MAAM,SAAS,SAAS;AACjD,MAAI,CAAC,WAAW,SAAS,cAAc;AACrC;AAAA,EACF;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,EAAE,aAAY;AAAA,EACxB,IAAM;AACJ,QAAM,EAAE,GAAG,GAAG,OAAO,GAAG,QAAQ,EAAC,IAAK;AACtC,QAAM,cAAc;AACpB,MAAI,QAAQ,UAAU,IAAI,cAAc,cAAc,cAAc;AACpE,MAAI,SAAS,cAAc;AACzB,aAAS;AAAA,EACX;AACA,MAAI,UAAU,GAAG;AACf;AAAA,EACF;AACA,MAAI,cAAc;AAClB,eAAa,KAAK,OAAO,MAAM,GAAG,GAAG,GAAG,GAAG,aAAa,QAAQ,QAAQ,SAAS,YAAY;AAC7F,MAAI,cAAc;AACpB;AACA,IAAI,aAAa;AACjB,SAAS,YAAY,MAAM,MAAM;AAC/B,QAAM,EAAE,MAAM,OAAO,KAAK,YAAW,IAAK;AAC1C,QAAM,EAAE,GAAG,GAAG,OAAO,GAAG,QAAQ,EAAC,IAAK;AACtC,QAAM,eAAe;AACrB,QAAM,YAAY;AAClB,QAAM,eAAe;AACrB,MAAI,UAAU,IAAI,MAAM;AACxB,QAAM,cAAc,CAAA;AACpB,aAAW,KAAK,MAAM;AACpB,QAAI,UAAU,IAAI;AAChB;AACF,UAAM,YAAY,kBAAkB,GAAG,KAAK,GAAG,MAAM,aAAa,IAAI,MAAM,UAAU,EAAE,EAAE;AAC1F,gBAAY,KAAK;AAAA,MACf,GAAG;AAAA,MACH,OAAO;AAAA,IACb,CAAK;AACD,eAAW,YAAY,YAAY,IAAI;AAAA,EACzC;AACA,MAAI,UAAS;AACb,aAAW,YAAY,aAAa;AAClC;AAAA,MACE;AAAA,MACA,SAAS;AAAA,MACT,KAAK,IAAI,gBAAgB;AAAA,MACzB,SAAS,QAAQ,YAAY;AAAA,MAC7B;AAAA,MACA,eAAe;AAAA,IACrB;AAAA,EACE;AACA,MAAI,YAAY,cAAc,MAAM,mBAAmB,MAAM;AAC7D,MAAI,KAAI;AACR,aAAW,CAAC,GAAG,QAAQ,KAAK,YAAY,QAAO,GAAI;AACjD,QAAI,UAAS;AACb,QAAI,YAAY,MAAM;AACtB,QAAI,SAAS,KAAK,CAAC,GAAG,SAAS,IAAI,WAAW,IAAI,IAAI,IAAI,oBAAoB,KAAK,KAAK,CAAC;AAAA,EAC3F;AACF;AACA,IAAI,iBAAiB,CAAA;AACrB,SAAS,2BAA2B,QAAQ,QAAQ,QAAQ;AAC1D,QAAM,MAAM,KAAK,KAAK,OAAO,gBAAgB;AAC7C,QAAM,aAAa;AACnB,QAAM,eAAe,SAAS,aAAa;AAC3C,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,QAAM,cAAc,SAAS;AAC7B,QAAM,YAAY,WAAW;AAC7B,QAAM,cAAc,WAAW;AAC/B,QAAM,cAAc,cAAc,aAAa,KAAK;AACpD,QAAM,MAAM,GAAG,MAAM,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM;AAChD,MAAI,eAAe,GAAG,MAAM,QAAQ;AAClC,WAAO;AAAA,MACL,IAAI,eAAe,GAAG;AAAA,MACtB,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,aAAa,cAAc;AAAA,MAC3B,WAAW,YAAY;AAAA,MACvB,SAAS,aAAa;AAAA,MACtB;AAAA,IACN;AAAA,EACE;AACA,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,QAAM,MAAM,OAAO,WAAW,IAAI;AAClC,MAAI,QAAQ;AACV,WAAO;AACT,SAAO,QAAQ;AACf,SAAO,SAAS;AAChB,MAAI,MAAM,KAAK,GAAG;AAClB,iBAAe,GAAG,IAAI;AACtB,QAAM,eAAe,KAAK,IAAI,UAAU,cAAc,GAAG,eAAe,CAAC;AACzE,MAAI,UAAS;AACb,cAAY,KAAK,YAAY,YAAY,aAAa,cAAc,YAAY;AAChF,MAAI,cAAc;AAClB,MAAI,aAAa;AACjB,MAAI,YAAY;AAChB,MAAI,KAAI;AACR,MAAI,cAAc;AAClB,MAAI,gBAAgB;AACpB,MAAI,aAAa;AACjB,MAAI,YAAY;AAChB,MAAI,KAAI;AACR,MAAI,gBAAgB;AACpB,MAAI,aAAa;AACjB,MAAI,aAAa;AACjB,MAAI,UAAS;AACb,cAAY,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,cAAc,YAAY;AAC5F,MAAI,cAAc;AAClB,MAAI,YAAY;AAChB,MAAI,OAAM;AACV,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW,YAAY;AAAA,IACvB,aAAa,WAAW;AAAA,IACxB,SAAS,aAAa;AAAA,IACtB;AAAA,EACJ;AACA;AACA,SAAS,kBAAkB,MAAM,MAAM;AACrC,QAAM,EAAE,MAAM,OAAO,KAAK,aAAa,KAAK,IAAG,IAAK;AACpD,QAAM,EAAE,GAAG,OAAO,EAAC,IAAK;AACxB,QAAM,OAAO,GAAG,MAAM,aAAa,IAAI,MAAM,UAAU;AACvD,QAAM,WAAW,YAAY,KAAK,IAAI;AACtC,QAAM,IAAI,KAAK,IAAI,KAAK,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,WAAW,MAAM,UAAU,IAAI,CAAC,CAAC;AACxF,QAAM,IAAI,KAAK,MAAM,KAAK,KAAK,KAAK,SAAS,KAAK,CAAC;AACnD,QAAM,eAAe,IAAI;AACzB,QAAM,YAAY;AAClB,QAAM,eAAe;AACrB,MAAI,UAAU,IAAI,MAAM;AACxB,QAAM,UAAU,2BAA2B,MAAM,QAAQ,MAAM,iBAAiB,CAAC;AACjF,QAAM,cAAc,CAAA;AACpB,aAAW,MAAM,MAAM;AACrB,QAAI,UAAU,IAAI;AAChB;AACF,UAAM,cAAc,kBAAkB,GAAG,MAAM,KAAK,IAAI;AACxD,UAAM,YAAY,YAAY;AAC9B,QAAI,WAAW;AACf,QAAI,GAAG,QAAQ,QAAQ;AACrB,YAAM,MAAM,YAAY,eAAe,GAAG,KAAK,KAAK,GAAG;AACvD,UAAI,QAAQ,QAAQ;AAClB,mBAAW,eAAe,IAAI;AAAA,MAChC;AAAA,IACF;AACA,UAAM,cAAc,YAAY,WAAW,YAAY;AACvD,gBAAY,KAAK;AAAA,MACf,GAAG;AAAA,MACH,OAAO;AAAA,IACb,CAAK;AACD,eAAW,cAAc;AAAA,EAC3B;AACA,MAAI,YAAY,MAAM;AACpB,UAAM,EAAE,IAAI,QAAQ,aAAa,WAAW,OAAO,KAAK,QAAO,IAAK;AACpE,UAAM,iBAAiB,YAAY;AACnC,UAAM,eAAe,UAAU;AAC/B,eAAW,YAAY,aAAa;AAClC,YAAM,KAAK,KAAK,MAAM,SAAS,CAAC;AAChC,YAAM,KAAK,KAAK,MAAM,SAAS,KAAK;AACpC,YAAM,mBAAmB,MAAM,iBAAiB,gBAAgB;AAChE,UAAI,wBAAwB;AAC5B,UAAI,UAAU,IAAI,GAAG,GAAG,WAAW,QAAQ,KAAK,cAAc,GAAG,gBAAgB,CAAC;AAClF,UAAI,mBAAmB;AACrB,YAAI;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM,iBAAiB;AAAA,UACvB;AAAA,UACA;AAAA,UACA;AAAA,QACV;AACM,UAAI;AAAA,QACF;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK,MAAM,iBAAiB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,MACR;AACM,UAAI,wBAAwB;AAAA,IAC9B;AAAA,EACF;AACA,MAAI,UAAS;AACb,aAAW,CAAC,GAAG,QAAQ,KAAK,YAAY,QAAO,GAAI;AACjD,UAAM,IAAI,KAAK,CAAC;AAChB,QAAI,QAAQ,SAAS,IAAI;AACzB,QAAI,EAAE,QAAQ,QAAQ;AACpB,YAAM,MAAM,YAAY,eAAe,EAAE,KAAK,KAAK,GAAG;AACtD,UAAI,QAAQ,QAAQ;AAClB,cAAM,UAAU,eAAe;AAC/B,YAAI,OAAO;AACX,YAAI,OAAO;AACX,YAAI,WAAW,IAAI;AACnB,YAAI,YAAY,IAAI;AACpB,YAAI,WAAW,WAAW;AACxB,mBAAS,WAAW,aAAa;AACjC,qBAAW;AAAA,QACb,WAAW,YAAY,UAAU;AAC/B,mBAAS,YAAY,YAAY;AACjC,sBAAY;AAAA,QACd;AACA,YAAI,UAAS;AACb,oBAAY,KAAK,OAAO,IAAI,IAAI,IAAI,UAAU,GAAG,SAAS,SAAS,CAAC;AACpE,YAAI,KAAI;AACR,YAAI,KAAI;AACR,YAAI,UAAU,KAAK,MAAM,MAAM,UAAU,WAAW,OAAO,IAAI,IAAI,IAAI,UAAU,GAAG,SAAS,OAAO;AACpG,YAAI,QAAO;AACX,iBAAS,UAAU;AAAA,MACrB;AAAA,IACF;AACA,QAAI,UAAS;AACb,QAAI,YAAY,MAAM;AACtB,QAAI,SAAS,EAAE,MAAM,OAAO,IAAI,IAAI,IAAI,oBAAoB,KAAK,KAAK,CAAC;AAAA,EACzE;AACF;AACA,SAAS,UAAU,MAAM,MAAM,WAAW,GAAG,cAAc;AACzD,QAAM,EAAE,MAAM,KAAK,KAAK,OAAO,KAAK,YAAW,IAAK;AACpD,QAAM,EAAE,GAAG,GAAG,QAAQ,GAAG,OAAO,EAAC,IAAK;AACtC,QAAM,YAAY,IAAI,MAAM,sBAAsB;AAClD,QAAM,SAAS,CAAA;AACf,MAAI,aAAa;AACjB,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS;AAChD,UAAM,IAAI,KAAK,KAAK;AACpB,QAAI,EAAE,WAAW;AACf;AACF,UAAM,MAAM,YAAY,eAAe,GAAG,KAAK,GAAG;AAClD,QAAI,QAAQ,QAAQ;AAClB,aAAO,KAAK,IAAI;AAChB,YAAM,WAAW,IAAI,SAAS,YAAY,IAAI;AAC9C,oBAAc,WAAW;AAAA,IAC3B;AAAA,EACF;AACA,MAAI,eAAe;AACjB;AACF,gBAAc;AACd,MAAI,QAAQ,IAAI,MAAM;AACtB,MAAI,iBAAiB;AACnB,YAAQ,KAAK,MAAM,IAAI,IAAI,MAAM,wBAAwB,UAAU;AAAA,WAC5D,iBAAiB;AACxB,YAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,aAAa,CAAC;AAC/C,aAAW,OAAO,QAAQ;AACxB,QAAI,QAAQ;AACV;AACF,UAAM,WAAW,IAAI,SAAS,YAAY,IAAI;AAC9C,QAAI,WAAW,GAAG;AAChB,kBAAY,KAAK,OAAO,IAAI,MAAM,qBAAqB,UAAU,WAAW,QAAQ;AACpF,UAAI,KAAI;AACR,UAAI,KAAI;AAAA,IACV;AACA,QAAI,UAAU,KAAK,OAAO,IAAI,MAAM,qBAAqB,UAAU,SAAS;AAC5E,QAAI,WAAW,GAAG;AAChB,UAAI,QAAO;AAAA,IACb;AACA,aAAS,WAAW;AAAA,EACtB;AACF;AACA,SAAS,YAAY,KAAK,QAAQ,WAAW;AAC3C,QAAM,QAAQ,SAAS,GAAG,IAAI;AAC5B,UAAM,KAAK,GAAG,IAAI,EAAE;AACpB,UAAM,KAAK,GAAG,IAAI,EAAE;AACpB,UAAM,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;AACxC,UAAM,MAAM,KAAK;AACjB,UAAM,MAAM,KAAK;AACjB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG,GAAG,IAAI,EAAE;AAAA,MACZ,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA,IAC9B;AAAA,EACE;AACA,MAAI;AACJ,QAAM,MAAM,OAAO;AACnB,MAAI,KAAK,OAAO,MAAM,CAAC;AACvB,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,QAAI,KAAK,OAAO,IAAI,GAAG;AACvB,UAAM,KAAK,QAAQ,IAAI,KAAK,GAAG;AAC/B,UAAM,KAAK,MAAM,IAAI,EAAE;AACvB,UAAM,KAAK,MAAM,IAAI,EAAE;AACvB,UAAM,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG;AACxC,UAAM,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG;AAC3C,QAAI,QAAQ,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,IAAI,IAAI,IAAI;AAC1D,QAAI,eAAe;AACnB,QAAI,gBAAgB;AACpB,QAAI,SAAS,GAAG;AACd,UAAI,QAAQ,GAAG;AACb,gBAAQ,KAAK,KAAK;AAAA,MACpB,OAAO;AACL,gBAAQ,KAAK,KAAK;AAClB,uBAAe;AACf,wBAAgB;AAAA,MAClB;AAAA,IACF,OAAO;AACL,UAAI,QAAQ,GAAG;AACb,uBAAe;AACf,wBAAgB;AAAA,MAClB;AAAA,IACF;AACA,aAAS,GAAG,WAAW,SAAS,GAAG,SAAS;AAC5C,UAAM,YAAY,QAAQ;AAC1B,QAAI,SAAS,KAAK,IAAI,KAAK,IAAI,SAAS,IAAI,SAAS,KAAK,IAAI,SAAS,CAAC;AACxE,QAAI;AACJ,QAAI,SAAS,KAAK,IAAI,GAAG,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AAC7C,eAAS,KAAK,IAAI,GAAG,MAAM,GAAG,GAAG,MAAM,CAAC;AACxC,gBAAU,KAAK,IAAI,SAAS,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,CAAC;AAAA,IACvE,OAAO;AACL,gBAAU;AAAA,IACZ;AACA,QAAI,IAAI,GAAG,IAAI,GAAG,KAAK;AACvB,QAAI,IAAI,GAAG,IAAI,GAAG,KAAK;AACvB,SAAK,CAAC,GAAG,KAAK,UAAU;AACxB,SAAK,GAAG,KAAK,UAAU;AACvB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG,MAAM,KAAK,KAAK,IAAI;AAAA,MACvB,GAAG,MAAM,KAAK,KAAK,IAAI;AAAA,MACvB;AAAA,IACN;AACI,SAAK;AACL,SAAK;AAAA,EACP;AACA,MAAI,UAAS;AACf;AACA,SAAS,cAAc,KAAK,KAAK,OAAO,QAAQ,mBAAmB,mBAAmB,aAAa,aAAa,YAAY,YAAY,MAAM,eAAe,eAAe,eAAe,WAAW;AACpM,QAAM,SAAS;AAAA,IACb,GAAG;AAAA,IACH,GAAG,oBAAoB;AAAA,IACvB,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AACE,QAAM,eAAe,oBAAoB;AACzC,MAAI,OAAO,eAAe;AACxB,UAAM,MAAM,cAAc,MAAM,KAAK;AACrC,UAAM,cAAc,eAAe,aAAa;AAChD,WAAO,KAAK,cAAc;AAC1B,aAAS,IAAI,aAAa,MAAM,KAAK,KAAK,KAAK;AAC7C,aAAO,KAAK,cAAc,QAAQ,IAAI,IAAI,IAAI,CAAC,EAAE,QAAQ;AAAA,IAC3D;AAAA,EACF,OAAO;AACL,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,aAAO,KAAK,cAAc,CAAC,EAAE;AAAA,IAC/B;AAAA,EACF;AACA,SAAO,QAAQ,cAAc,GAAG,EAAE,QAAQ;AAC1C,MAAI,QAAQ,IAAI;AACd,WAAO,IAAI;AACX,WAAO,SAAS;AAAA,EAClB,WAAW,QAAQ,IAAI;AACrB,WAAO,IAAI;AACX,WAAO,SAAS;AAChB,QAAI,QAAQ;AACZ,UAAM,QAAQ,cAAc,GAAG,EAAE;AACjC,UAAM,SAAS,cAAc,GAAG,EAAE;AAClC,WAAO,QAAQ,KAAK,aAAa,cAAc,QAAQ,CAAC,EAAE,OAAO,KAAK,KAAK,cAAc,QAAQ,CAAC,EAAE,WAAW,QAAQ;AACrH,YAAM,IAAI,cAAc,QAAQ,CAAC;AACjC,aAAO,KAAK,EAAE;AACd,aAAO,SAAS,EAAE;AAClB;AAAA,IACF;AACA,QAAI,MAAM;AACV,WAAO,MAAM,IAAI,cAAc,UAAU,aAAa,cAAc,MAAM,CAAC,EAAE,OAAO,KAAK,KAAK,cAAc,MAAM,CAAC,EAAE,WAAW,QAAQ;AACtI,YAAM,IAAI,cAAc,MAAM,CAAC;AAC/B,aAAO,SAAS,EAAE;AAClB;AAAA,IACF;AACA,QAAI,CAAC,QAAQ;AACX,YAAM,cAAc,eAAe,aAAa;AAChD,YAAM,OAAO,OAAO,IAAI;AACxB,UAAI,OAAO,GAAG;AACZ,eAAO,KAAK;AACZ,eAAO,SAAS;AAAA,MAClB;AACA,UAAI,OAAO,IAAI,OAAO,QAAQ,OAAO;AACnC,eAAO,QAAQ,QAAQ,OAAO;AAAA,MAChC;AAAA,IACF;AAAA,EACF,WAAW,iBAAiB,QAAQ,OAAO,GAAG;AAC5C,UAAM,eAAe,OAAO,cAAc,WAAW,YAAY,UAAU,GAAG;AAC9E,WAAO,IAAI,SAAS;AACpB,WAAO,SAAS;AAAA,EAClB,OAAO;AACL,UAAM,MAAM,cAAc,MAAM,KAAK;AACrC,QAAI,OAAO,cAAc,UAAU;AACjC,YAAM,QAAQ,MAAM;AACpB,aAAO,KAAK,QAAQ;AAAA,IACtB,OAAO;AACL,eAAS,IAAI,aAAa,MAAM,KAAK,KAAK,KAAK;AAC7C,eAAO,KAAK,UAAU,CAAC,IAAI;AAAA,MAC7B;AAAA,IACF;AACA,WAAO,UAAU,OAAO,cAAc,WAAW,YAAY,UAAU,GAAG,KAAK;AAAA,EACjF;AACA,SAAO;AACT;AAGA,IAAI,WAAW;AACf,IAAI,cAAc,CAAC,UAAU;AAC3B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ,yDAAyD,EAAE,6SAA6S,EAAE;AACxX;AACA,IAAI,aAAa,CAAC,UAAU;AAC1B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ,yDAAyD,EAAE,4YAA4Y,EAAE;AACvd;AACA,IAAI,eAAe,CAAC,UAAU;AAC5B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,gJAC4H,EAAE;AAAA,uuCACqlC,EAAE;AAAA;AAEzuC;AACA,IAAI,eAAe,CAAC,UAAU;AAC5B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,wJACoI,EAAE;AAAA,wHAClC,EAAE;AAAA;AAE1H;AACA,IAAI,gBAAgB,CAAC,UAAU;AAC7B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA;AAAA;AAAA,gBAGJ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAMF,EAAE;AAAA;AAAA;AAGlB;AACA,IAAI,YAAY,CAAC,UAAU;AACzB,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,sJACkI,EAAE;AAAA,iVACyL,EAAE;AAAA,6UACN,EAAE;AAAA;AAAA;AAG/U;AACA,IAAI,aAAa,CAAC,UAAU;AAC1B,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,oBACA,EAAE;AAAA,oBACF,EAAE;AAAA,2LACqK,EAAE;AAAA;AAAA;AAG7L;AACA,IAAI,iBAAiB;AACrB,IAAI,iBAAiB,CAAC,UAAU;AAC9B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,wJACoI,EAAE;AAAA,wJACF,EAAE;AAAA;AAE1J;AACA,IAAI,cAAc,CAAC,UAAU;AAC3B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ;AAAA,qKACuJ,EAAE;AAAA,gIACvC,EAAE;AAAA,wIACM,EAAE;AAAA,gJACM,EAAE;AAAA,qGAC7C,EAAE;AAAA,oGACH,EAAE;AAAA,wIACkC,EAAE;AAAA;AAE1I;AACA,IAAI,cAAc,CAAC,UAAU;AAC3B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,wJACoI,EAAE;AAAA,8KACoB,EAAE;AAAA,yNACyC,EAAE;AAAA;AAE3N;AACA,IAAI,cAAc,CAAC,UAAU;AAC3B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ;AAAA,kBACI,EAAE;AAAA,gbAC4Z,EAAE;AAAA;AAElb;AACA,IAAI,iBAAiB,CAAC,UAAU;AAC9B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ;AAAA,gJACkI,EAAE;AAAA,8HACpB,EAAE;AAAA;AAEhI;AACA,IAAI,aAAa,CAAC,UAAU;AAC1B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,wJACoI,EAAE;AAAA,oNAC0D,EAAE;AAAA;AAEtN;AACA,IAAI,aAAa,CAAC,UAAU;AAC1B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ;AAAA,gJACkI,EAAE;AAAA,wIACV,EAAE;AAAA,2DAC/E,EAAE;AAAA;AAE7D;AACA,IAAI,cAAc,CAAC,UAAU;AAC3B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,0DACsC,EAAE;AAAA,kLACsH,EAAE;AAAA,kQAC8E,EAAE;AAAA;AAEpQ;AACA,IAAI,kBAAkB,CAAC,UAAU;AAC/B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ;AAAA,2DAC6C,EAAE;AAAA,2DACF,EAAE;AAAA,kHACqD,EAAE;AAAA;AAEpH;AACA,IAAI,mBAAmB,CAAC,UAAU;AAChC,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,gBACJ,EAAE;AAAA,06BACw5B,EAAE;AAAA;AAE56B;AACA,IAAI,oBAAoB,CAAC,UAAU;AACjC,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ;AAAA,4DAC8C,EAAE;AAAA,6eAC+a,EAAE;AAAA;AAE/e;AACA,IAAI,eAAe,CAAC,UAAU;AAC5B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ;AAAA,4DAC8C,EAAE;AAAA,icACmY,EAAE;AAAA;AAEnc;AACA,IAAI,qBAAqB,CAAC,UAAU;AAClC,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,0DACsC,EAAE;AAAA,oOACwK,EAAE;AAAA;AAEtO;AACA,IAAI,aAAa,CAAC,UAAU;AAC1B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,0DACsC,EAAE;AAAA,gIACoE,EAAE;AAAA,gSAC8J,EAAE;AAAA,uJAC3I,EAAE;AAAA,iNACwD,EAAE;AAAA;AAEnN;AACA,IAAI,eAAe,CAAC,UAAU;AAC5B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ;AAAA,gJACkI,EAAE;AAAA,seACoV,EAAE;AAAA;AAExe;AACA,IAAI,oBAAoB,CAAC,UAAU;AACjC,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,0DACsC,EAAE;AAAA,sOAC0K,EAAE;AAAA;AAExO;AACA,IAAI,oBAAoB,CAAC,UAAU;AACjC,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA,MACH,QAAQ;AAAA,4DAC8C,EAAE;AAAA,+LACiI,EAAE;AAAA;AAEjM;AACA,IAAI,oBAAoB,CAAC,UAAU;AACjC,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,wJACoI,EAAE;AAAA,iPACuF,EAAE;AAAA,yaACsL,EAAE;AAAA;AAE3a;AACA,IAAI,cAAc,CAAC,UAAU;AAC3B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO,GAAG,QAAQ;AAAA,0DACsC,EAAE;AAAA,mXACuT,EAAE;AAAA;AAErX;AACA,IAAI,kBAAkB,CAAC,UAAU;AAC/B,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA;AAAA,0NAEiN,EAAE,aAAa,EAAE;AAAA;AAE3O;AACA,IAAI,yBAAyB,CAAC,UAAU;AACtC,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK,MAAM;AACjB,SAAO;AAAA;AAAA,yNAEgN,EAAE,aAAa,EAAE;AAAA;AAAA;AAG1O;AACA,IAAI,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,SAAS,UAAU,SAAS,OAAO;AACjC,MAAI,YAAY,UAAU;AACxB,WAAO,CAAC,MAAM,cAAc,MAAM,YAAY;AAAA,EAChD,WAAW,YAAY,YAAY;AACjC,WAAO,CAAC,SAAS,MAAM,WAAW;AAAA,EACpC,OAAO;AACL,WAAO,CAAC,MAAM,aAAa,MAAM,QAAQ;AAAA,EAC3C;AACF;AACA,IAAI,gBAAgB,MAAM;AAAA,EACxB,YAAY,aAAa,WAAW;AAClC,SAAK,YAA4B,oBAAI,IAAG;AACxC,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,cAAc;AAAA,MACjB,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACE;AAAA,EACA,WAAW,QAAQ,SAAS,KAAK,GAAG,GAAG,MAAM,OAAO,QAAQ,GAAG;AAC7D,UAAM,CAAC,SAAS,OAAO,IAAI,UAAU,SAAS,KAAK;AACnD,UAAM,QAAQ,OAAO,KAAK,KAAK,OAAO,gBAAgB;AACtD,UAAM,MAAM,GAAG,OAAO,IAAI,OAAO,IAAI,KAAK,IAAI,MAAM;AACpD,QAAI,eAAe,KAAK,UAAU,IAAI,GAAG;AACzC,QAAI,iBAAiB,QAAQ;AAC3B,YAAM,WAAW,KAAK,YAAY,MAAM;AACxC,UAAI,aAAa;AACf;AACF,qBAAe,SAAS,cAAc,QAAQ;AAC9C,YAAM,YAAY,aAAa,WAAW,IAAI;AAC9C,UAAI,cAAc;AAChB;AACF,YAAM,YAAY,IAAI,MAAK;AAC3B,gBAAU,MAAM,oCAAoC,mBAAmB,SAAS,EAAE,SAAS,SAAS,CAAC,CAAC;AACtG,WAAK,UAAU,IAAI,KAAK,YAAY;AACpC,YAAM,UAAU,UAAU,OAAM;AAChC,UAAI,YAAY;AACd;AACF,WAAK;AACL,cAAQ,KAAK,MAAM;AACjB,kBAAU,UAAU,WAAW,GAAG,GAAG,OAAO,KAAK;AAAA,MACnD,CAAC,EAAE,QAAQ,MAAM;AACf,aAAK;AACL,YAAI,KAAK,aAAa,GAAG;AACvB,eAAK,UAAS;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,UAAI,QAAQ,GAAG;AACb,YAAI,cAAc;AAAA,MACpB;AACA,UAAI,UAAU,cAAc,GAAG,GAAG,OAAO,OAAO,GAAG,GAAG,MAAM,IAAI;AAChE,UAAI,QAAQ,GAAG;AACb,YAAI,cAAc;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACF;AAUA,IAAI,QAAQ,CAAA;AACZ,IAAI,MAAM;AACV,SAAS,YAAY;AACnB,QAAM,IAAI,SAAS,cAAc,KAAK;AACtC,IAAE,MAAM,UAAU;AAClB,IAAE,MAAM,gBAAgB;AACxB,IAAE,MAAM,WAAW;AACnB,WAAS,KAAK,OAAO,CAAC;AACtB,SAAO;AACT;AACA,SAAS,YAAY,OAAO;AAC1B,QAAM,kBAAkB,MAAM,YAAW,EAAG,KAAI;AAChD,MAAI,MAAM,eAAe,MAAM;AAC7B,WAAO,MAAM,eAAe;AAC9B,QAAM,OAAO,UAAS;AACtB,MAAI,MAAM,QAAQ;AAClB,MAAI,MAAM,QAAQ;AAClB,QAAM,UAAU,iBAAiB,GAAG,EAAE;AACtC,MAAI,MAAM,QAAQ;AAClB,MAAI,MAAM,QAAQ;AAClB,QAAM,gBAAgB,iBAAiB,GAAG,EAAE;AAC5C,MAAI,kBAAkB;AACpB,WAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACpB,MAAI,SAAS,cAAc,QAAQ,YAAY,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,OAAO,UAAU;AACnF,MAAI,OAAO,SAAS,GAAG;AACrB,WAAO,KAAK,CAAC;AAAA,EACf;AACA,WAAS,OAAO,IAAI,CAAC,MAAM;AACzB,UAAM,QAAQ,OAAO,MAAM,CAAC;AAC5B,QAAI,OAAO;AACT,cAAQ,KAAK,yBAAyB,KAAK;AAAA,IAC7C;AACA,WAAO,QAAQ,IAAI;AAAA,EACrB,CAAC;AACD,QAAM,eAAe,IAAI;AACzB,SAAO;AACT;AACA,SAAS,UAAU,OAAO,OAAO;AAC/B,QAAM,CAAC,GAAG,GAAG,CAAC,IAAI,YAAY,KAAK;AACnC,SAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK;AACxC;AACA,SAAS,MAAM,OAAO,YAAY;AAChC,MAAI,eAAe;AACjB,WAAO;AACT,QAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,YAAY,KAAK;AACtC,MAAI,MAAM;AACR,WAAO;AACT,QAAM,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,YAAY,UAAU;AAC/C,QAAM,KAAK,IAAI,MAAM,IAAI;AACzB,QAAM,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,MAAM;AACzC,QAAM,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,MAAM;AACzC,QAAM,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,MAAM;AACzC,SAAO,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACxC;AACA,SAAS,kBAAkB,WAAW,YAAY,KAAK;AACrD,MAAI,OAAO;AACT,WAAO;AACT,MAAI,OAAO;AACT,WAAO;AACT,QAAM,OAAO,CAAC,GAAG,YAAY,SAAS,CAAC;AACvC,OAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;AAC1B,OAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;AAC1B,OAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;AAC1B,QAAM,QAAQ,CAAC,GAAG,YAAY,UAAU,CAAC;AACzC,QAAM,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC;AAC7B,QAAM,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC;AAC7B,QAAM,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC;AAC7B,QAAM,UAAU;AAChB,QAAM,UAAU,IAAI;AACpB,QAAM,IAAI,KAAK,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI;AACzC,QAAM,IAAI,KAAK,OAAO,KAAK,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,WAAW,CAAC;AACjE,QAAM,IAAI,KAAK,OAAO,KAAK,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,WAAW,CAAC;AACjE,QAAM,IAAI,KAAK,OAAO,KAAK,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,WAAW,CAAC;AACjE,SAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC;AAGA,IAAI,cAAc;AAAA,EAChB,MAAM,aAAa;AAAA,EACnB,cAAc;AAChB;AACA,SAAS,SAAS,KAAK,KAAK,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,aAAa,OAAO,gBAAgB,aAAa,eAAe,aAAa,WAAW,eAAe,WAAW,UAAU,SAAS,iBAAiB;AACvM,MAAI;AACJ,MAAI;AACJ,MAAI,cAAc,UAAU,UAAU,CAAC,EAAE,CAAC,MAAM,OAAO,UAAU,CAAC,EAAE,CAAC,MAAM,KAAK;AAC9E,aAAS,UAAU,CAAC,EAAE,CAAC;AACvB,aAAS,UAAU,CAAC,EAAE,CAAC;AAAA,EACzB;AACA,MAAI,SAAS;AACb,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,EAAE,GAAG,GAAG,OAAO,GAAG,QAAQ,EAAC;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,uBAAuB,MAAM;AAC3B,kBAAY;AAAA,IACd;AAAA,EACJ;AACE,MAAI,YAAY;AAChB,QAAM,YAAY,mBAAmB,MAAM,KAAK,aAAa,WAAW,UAAU,MAAM;AACtF,QAAI,IAAI;AACR,UAAM,QAAQ,gBAAgB,IAAI,IAAI,SAAS,kBAAkB,OAAO,SAAS,eAAe,IAAI,OAAO;AAC3G,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,gBAAgB,IAAI;AAC9B,UAAI,MAAM,QAAQ;AAChB,aAAK,YAAY,OAAO,SAAS,SAAS,cAAc,GAAG;AACzD,WAAC,KAAK,YAAY,OAAO,SAAS,SAAS,WAAW,OAAO,SAAS,GAAG,KAAK,UAAU,IAAI;AAC5F,qBAAW;AAAA,QACb;AACA,cAAM,qBAAqB,KAAK,EAAE,aAAa,OAAO,SAAS,GAAG,KAAK,GAAG,MAAM,QAAQ;AACxF,UAAE,KAAK,MAAM,IAAI;AACjB,iBAAS;AAAA,UACP,QAAQ,qBAAqB,OAAO,SAAS,kBAAkB;AAAA,UAC/D,WAAW,qBAAqB,OAAO,SAAS,kBAAkB;AAAA,UAClE,MAAM,qBAAqB,OAAO,SAAS,kBAAkB;AAAA,UAC7D,UAAU;AAAA,QACpB;AAAA,MACM;AAAA,IACF;AAAA,EACF,CAAC;AACD,MAAI,aAAa;AACf,eAAW,OAAO,SAAS,QAAQ,CAAC,KAAK,GAAG,CAAC;AAC/C,SAAO;AACT;AACA,SAAS,cAAc,KAAK,QAAQ,MAAM,aAAa,aAAa,YAAY,YAAY,eAAe,OAAO,QAAQ,MAAM,mBAAmB,KAAK,eAAe,eAAe,cAAc,cAAc;AAChN,QAAM,cAAc,CAAA;AACpB,MAAI,eAAe;AACnB,MAAI,wBAAwB;AAC5B,QAAM,OAAO,KAAK,IAAI,KAAK,aAAa,WAAW;AACnD,QAAM,OAAO,KAAK,IAAI,KAAK,aAAa,WAAW;AACnD,MAAI,SAAS;AACb,MAAI,OAAO,iBAAiB,UAAU;AACpC,eAAW,OAAO,QAAQ;AAAA,EAC5B,OAAO;AACL,aAAS,IAAI,MAAM,IAAI,MAAM,KAAK;AAChC,gBAAU,aAAa,CAAC;AAAA,IAC1B;AAAA,EACF;AACA,MAAI,cAAc,KAAK,aAAa;AAClC,aAAS,CAAC;AAAA,EACZ;AACA,YAAU,aAAa,KAAK;AAC5B,QAAM,OAAO,KAAK,IAAI,KAAK,aAAa,WAAW;AACnD,QAAM,OAAO,KAAK,IAAI,KAAK,aAAa,WAAW;AACnD,MAAI,SAAS;AACb,WAAS,IAAI,MAAM,IAAI,MAAM,KAAK;AAChC,cAAU,cAAc,CAAC,EAAE;AAAA,EAC7B;AACA,MAAI,cAAc,KAAK,aAAa;AAClC,aAAS,CAAC;AAAA,EACZ;AACA,YAAU,aAAa,KAAK;AAC5B,MAAI,cAAc,eAAe,aAAa;AAC9C,MAAI,cAAc;AAChB;AACF,MAAI,WAAW,KAAK,WAAW,GAAG;AAChC,WAAO;AAAA,MACL,SAAS,CAAA;AAAA,MACT,OAAO;AAAA,IACb;AAAA,EACE;AACA,QAAM,kBAAkB,gBAAgB,OAAO,iBAAiB,WAAW,eAAe,aAAa,OAAO,CAAC,IAAI;AACnH,QAAM,YAAY,QAAQ,cAAc,KAAK,IAAI,MAAM;AACvD,QAAM,aAAa,SAAS,oBAAoB,kBAAkB,KAAK,IAAI,MAAM,IAAI;AACrF,MAAI,YAAY,OAAO,aAAa,KAAK;AACvC,mBAAe,WAAW;AAC1B,UAAM,OAAO;AAAA,MACX,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI,QAAQ;AAAA,MACZ,IAAI,SAAS;AAAA,MACb,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI,QAAQ;AAAA,MACZ,IAAI,SAAS;AAAA,IACnB;AACI,QAAI,SAAS,GAAG;AACd,WAAK,MAAM,oBAAoB,KAAK;AACpC,WAAK,KAAK,aAAa;AACvB,WAAK,MAAM,SAAS,oBAAoB,KAAK;AAC7C,WAAK,KAAK,aAAa;AACvB,kBAAY,KAAK;AAAA,QACf,GAAG;AAAA,QACH,GAAG;AAAA,QACH;AAAA,QACA,QAAQ,SAAS;AAAA,MACzB,CAAO;AAAA,IACH,WAAW,SAAS,GAAG;AACrB,WAAK,MAAM,CAAC,SAAS,oBAAoB,KAAK;AAC9C,WAAK,KAAK,aAAa;AACvB,WAAK,MAAM,oBAAoB,KAAK;AACpC,WAAK,KAAK,aAAa;AACvB,kBAAY,KAAK;AAAA,QACf,GAAG;AAAA,QACH,GAAG,SAAS,SAAS;AAAA,QACrB;AAAA,QACA,QAAQ,CAAC,SAAS;AAAA,MAC1B,CAAO;AAAA,IACH;AACA,QAAI,SAAS,GAAG;AACd,WAAK,KAAK,cAAc;AACxB,WAAK,KAAK,YAAY;AACtB,WAAK,MAAM,SAAS,eAAe;AACnC,WAAK,KAAK,YAAY;AACtB,kBAAY,KAAK;AAAA,QACf,GAAG,cAAc;AAAA,QACjB,GAAG;AAAA,QACH,OAAO,SAAS;AAAA;AAAA,QAEhB;AAAA,MACR,CAAO;AAAA,IACH,WAAW,SAAS,GAAG;AACrB,WAAK,MAAM,cAAc,UAAU;AACnC,WAAK,KAAK,YAAY;AACtB,WAAK,KAAK,cAAc;AACxB,WAAK,KAAK,YAAY;AACtB,kBAAY,KAAK;AAAA,QACf,GAAG,QAAQ;AAAA,QACX,GAAG;AAAA,QACH,OAAO,CAAC;AAAA,QACR;AAAA,MACR,CAAO;AAAA,IACH;AACA,QAAI,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACjC,QAAI,cAAc,KAAK,WAAW,KAAK,WAAW,KAAK,cAAc;AACnE,UAAI,UAAU,QAAQ,GAAG,GAAG,cAAc,KAAK,SAAS,KAAK,GAAG,GAAG,cAAc,KAAK,SAAS,GAAG;AAAA,IACpG;AACA,QAAI,UAAU,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;AAC5F,QAAI,MAAM,KAAK,GAAG;AAAA,EACpB;AACA,MAAI,wBAAwB;AAC5B,SAAO;AAAA,IACL,SAAS;AAAA,IACT,OAAO;AAAA,EACX;AACA;AACA,SAAS,eAAe,MAAM,aAAa,aAAa,YAAY,YAAY,OAAO,QAAQ,mBAAmB,eAAe,cAAc;AAC7I,QAAM,cAAc,CAAA;AACpB,MAAI,gBAAgB,KAAK,eAAe,gBAAgB,KAAK,eAAe,eAAe,KAAK,cAAc,eAAe,KAAK,YAAY;AAC5I,WAAO;AAAA,EACT;AACA,cAAY,eAAe,aAAa,YAAY,YAAY,mBAAmB,CAAC,GAAG,OAAO,QAAQ,UAAU;AAC9G,QAAI,EAAE,gBAAgB,cAAc;AAClC,YAAM,IAAI,KAAK,IAAI,OAAO,KAAK,IAAI;AACnC,kBAAY,KAAK;AAAA,QACf;AAAA,QACA,GAAG;AAAA,QACH,OAAO,QAAQ;AAAA,QACf;AAAA,MACR,CAAO;AACD,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACD,SAAO;AACT;AACA,SAAS,cAAc,KAAK,eAAe,aAAa,YAAY,YAAY,OAAO,QAAQ,aAAa,OAAO,mBAAmB,mBAAmB,cAAc,qBAAqB,gBAAgB,iBAAiB,MAAM,OAAO,eAAe,OAAO;AAC9P,MAAI,IAAI,IAAI;AACZ,MAAI,UAAU,QAAQ;AACpB,QAAI,UAAS;AACb,QAAI,KAAI;AACR,QAAI,KAAK,GAAG,GAAG,OAAO,MAAM;AAC5B,eAAW,QAAQ,OAAO;AACxB,UAAI,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,QAAQ,GAAG,KAAK,SAAS,CAAC;AAAA,IAClE;AACA,QAAI,KAAK,SAAS;AAAA,EACpB;AACA,QAAM,UAAU,KAAK,MAAM,0BAA0B,OAAO,KAAK,MAAM;AACvE,QAAM,SAAS,MAAM;AACrB,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,gBAAgB,UAAU,YAAY,SAAS,GAAG;AACpD,WAAO,OAAO;AACd,WAAO,OAAO;AACd,WAAO,OAAO;AACd,WAAO,OAAO;AACd,eAAW,KAAK,aAAa;AAC3B,aAAO,KAAK,IAAI,MAAM,EAAE,IAAI,CAAC;AAC7B,aAAO,KAAK,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;AACvC,aAAO,KAAK,IAAI,MAAM,EAAE,IAAI,CAAC;AAC7B,aAAO,KAAK,IAAI,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AAAA,IAC1C;AAAA,EACF;AACA,QAAM,SAAS,CAAA;AACf,MAAI,UAAS;AACb,MAAI,IAAI;AACR,WAAS,QAAQ,GAAG,QAAQ,cAAc,QAAQ,SAAS;AACzD,UAAM,IAAI,cAAc,KAAK;AAC7B,QAAI,EAAE,UAAU;AACd;AACF,SAAK,EAAE;AACP,UAAM,KAAK,EAAE,SAAS,IAAI,IAAI;AAC9B,QAAI,MAAM,QAAQ,MAAM,QAAQ,eAAe,QAAQ,CAAC,GAAG;AACzD,aAAO,KAAK;AAAA,QACV,IAAI;AAAA,QACJ,IAAI,KAAK,IAAI,mBAAmB,IAAI;AAAA,QACpC,IAAI;AAAA,QACJ,IAAI,KAAK,IAAI,QAAQ,IAAI;AAAA,QACzB,OAAO;AAAA,MACf,CAAO;AAAA,IACH;AAAA,EACF;AACA,QAAM,eAAe,aAAa,OAAO,CAAC;AAC1C,QAAM,aAAa,SAAS,eAAe;AAC3C,QAAM,gBAAgB,oBAAoB;AAC1C,MAAI,eAAe;AACjB,WAAO,KAAK,EAAE,IAAI,MAAM,IAAI,YAAY,IAAI,MAAM,IAAI,YAAY,OAAO,OAAM,CAAE;AAAA,EACnF;AACA,MAAI,iBAAiB,MAAM;AACzB,QAAI,IAAI,oBAAoB;AAC5B,QAAI,MAAM;AACV,UAAM,SAAS,gBAAgB,SAAS,eAAe;AACvD,WAAO,IAAI,cAAc,QAAQ;AAC/B,YAAM,KAAK,IAAI;AACf,UAAI,MAAM,QAAQ,MAAM,OAAO,MAAM,CAAC,iBAAiB,QAAQ,OAAO,KAAK,KAAK,IAAI,KAAK,UAAU,IAAI,IAAI;AACzG,cAAM,WAAW,uBAAuB,OAAO,SAAS,oBAAoB,GAAG;AAC/E,eAAO,KAAK;AAAA,UACV,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,QAAQ,MAAM,KAAK,YAAY,OAAO,SAAS,SAAS,0BAA0B,OAAO,KAAK,YAAY,OAAO,SAAS,SAAS,gBAAgB,OAAO,KAAK;AAAA,QACzK,CAAS;AAAA,MACH;AACA,WAAK,aAAa,GAAG;AACrB;AAAA,IACF;AAAA,EACF;AACA,QAAM,SAAS,QAAQ,QAAQ,CAAC,SAAS,KAAK,KAAK;AACnD,aAAW,KAAK,OAAO,KAAK,MAAM,GAAG;AACnC,QAAI,cAAc;AAClB,eAAW,QAAQ,OAAO,CAAC,GAAG;AAC5B,UAAI,OAAO,KAAK,IAAI,KAAK,EAAE;AAC3B,UAAI,OAAO,KAAK,IAAI,KAAK,EAAE;AAAA,IAC7B;AACA,QAAI,OAAM;AACV,QAAI,UAAS;AAAA,EACf;AACA,MAAI,UAAU,QAAQ;AACpB,QAAI,QAAO;AAAA,EACb;AACF;AACA,SAAS,wBAAwB,KAAK,SAAS;AAC7C,QAAM,SAAS,CAAA;AACf,MAAI,IAAI,IAAI,IAAI,IAAI,QAAQ,KAAK,QAAQ;AACzC,QAAM,IAAI,IAAI,IAAI,IAAI,SAAS,IAAI;AACnC,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AACD,SAAK;AAAA,EACP;AACA,SAAO;AACT;AACA,SAAS,YAAY,MAAM,GAAG,GAAG;AAC/B,SAAO,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,SAAS,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK;AACtF;AACA,SAAS,WAAW,KAAK,eAAe,OAAO,YAAY,mBAAmB,SAAS,OAAO,eAAe,cAAc,gBAAgB,iBAAiB,QAAQ;AAClK,MAAI;AACJ,QAAM,OAAO;AACb,QAAM,CAAC,MAAM,IAAI,KAAK,KAAK,WAAW,OAAO,SAAS,QAAQ,CAAC,MAAM,OAAO,KAAK,CAAA;AACjF,MAAI,SAAS;AACb,aAAW,eAAe,OAAO,YAAY,mBAAmB,CAAC,MAAM,WAAW,GAAG,GAAG,GAAG,MAAM;AAC/F,QAAI,KAAK;AACT,QAAI,WAAW,UAAU,CAAC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;AAC5F;AACF,QAAI,KAAI;AACR,QAAI,UAAS;AACb,QAAI,KAAK,GAAG,GAAG,GAAG,CAAC;AACnB,QAAI,KAAI;AACR,UAAM,QAAQ,gBAAgB,SAAS;AACvC,UAAM,cAAc,SAAS,OAAO,SAAS,MAAM,mBAAmB,SAAS,QAAQ,EAAE,GAAG,OAAO,GAAG,MAAM,cAAa;AACzH,UAAM,YAAY,SAAS,MAAM,SAAS,UAAU,QAAQ,KAAK,CAAC,KAAK,QAAQ,KAAK,CAAC;AACrF,UAAM,YAAY,YAAY,WAAW,kBAAkB,WAAW;AACtE,QAAI,cAAc,MAAM,UAAU;AAChC,UAAI,YAAY;AAChB,UAAI,KAAI;AAAA,IACV;AACA,QAAI,aAAa,MAAM,WAAW,oBAAoB,OAAO,MAAM,WAAW;AAC9E,QAAI,UAAU,QAAQ;AACpB,UAAI,QAAQ;AACZ,UAAI,MAAM,SAAS,QAAQ;AACzB,sBAAc;AAAA,UACZ,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,WACP,oBAAoB,MAAM;AAAA,UAC3B;AAAA,UACA;AAAA,QACV;AACQ,iBAAS;AAAA,MACX;AACA,UAAI;AAAA,QACF,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,oBAAoB,IAAI,oBAAoB,KAAK,GAAG,MAAM,eAAe,IAAI,MAAM,UAAU,EAAE;AAAA,MACvG;AACM,UAAI,MAAM,YAAY,UAAU,WAAW;AACzC,cAAM,cAAc,wBAAwB,EAAE,GAAG,GAAG,OAAO,GAAG,QAAQ,KAAK,MAAM,OAAO;AACxF,YAAI,UAAS;AACb,cAAM,aAAa,YAAY,CAAC,EAAE,IAAI;AACtC,cAAM,YAAY,IAAI,IAAI;AAC1B,YAAI,KAAK,YAAY,GAAG,WAAW,iBAAiB;AACpD,cAAM,OAAO,IAAI,qBAAqB,YAAY,GAAG,aAAa,WAAW,CAAC;AAC9E,cAAM,QAAQ,UAAU,WAAW,CAAC;AACpC,aAAK,aAAa,GAAG,KAAK;AAC1B,aAAK,aAAa,KAAK,WAAW,SAAS;AAC3C,aAAK,aAAa,GAAG,SAAS;AAC9B,YAAI,YAAY;AAChB,YAAI,KAAI;AACR,YAAI,cAAc;AAClB,cAAM,CAAC,QAAQ,MAAM,KAAK,KAAK,WAAW,OAAO,SAAS,QAAQ,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,EAAE;AAC5F,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,QAAQ,KAAK;AAC7C,gBAAM,SAAS,MAAM,QAAQ,CAAC;AAC9B,gBAAM,MAAM,YAAY,CAAC;AACzB,gBAAM,gBAAgB,YAAY,KAAK,SAAS,GAAG,MAAM;AACzD,cAAI,eAAe;AACjB,gBAAI,cAAc;AAAA,UACpB;AACA,wBAAc;AAAA,YACZ,OAAO;AAAA,YACP;AAAA,YACA;AAAA,YACA,IAAI,IAAI,IAAI,QAAQ,IAAI;AAAA,YACxB,IAAI,IAAI,IAAI,SAAS,IAAI;AAAA,YACzB;AAAA,YACA;AAAA,UACZ;AACU,cAAI,eAAe;AACjB,gBAAI,cAAc;AAAA,UACpB;AAAA,QACF;AACA,YAAI,cAAc;AAAA,MACpB;AAAA,IACF;AACA,QAAI,MAAM,KAAK,eAAe,KAAK,CAAC,CAAC,GAAG;AACtC,UAAI,UAAS;AACb,UAAI,OAAO,IAAI,KAAK,CAAC;AACrB,UAAI,OAAO,IAAI,KAAK,iBAAiB;AACrC,UAAI,cAAc,MAAM;AACxB,UAAI,YAAY;AAChB,UAAI,OAAM;AAAA,IACZ;AACA,QAAI,QAAO;AACX,aAAS,IAAI;AAAA,EACf,CAAC;AACD,MAAI,UAAS;AACb,MAAI,OAAO,SAAS,KAAK,CAAC;AAC1B,MAAI,OAAO,SAAS,KAAK,iBAAiB;AAC1C,MAAI,OAAO,GAAG,oBAAoB,GAAG;AACrC,MAAI,OAAO,OAAO,oBAAoB,GAAG;AACzC,MAAI,cAAc,MAAM;AACxB,MAAI,YAAY;AAChB,MAAI,OAAM;AACZ;AACA,IAAI,iBAAiB;AACrB,SAAS,oBAAoB,GAAG,GAAG,OAAO,QAAQ,OAAO;AACvD,MAAI;AACF,WAAO,EAAE,GAAG,GAAG,OAAO,gBAAgB,QAAQ,KAAK,IAAI,gBAAgB,MAAM,EAAC;AAChF,SAAO;AAAA,IACL,GAAG,IAAI,QAAQ;AAAA;AAAA,IAEf,GAAG,KAAK,IAAI,GAAG,IAAI,SAAS,IAAI,iBAAiB,CAAC;AAAA;AAAA,IAElD,OAAO;AAAA,IACP,QAAQ,KAAK,IAAI,gBAAgB,MAAM;AAAA,EAC3C;AACA;AACA,SAAS,WAAW,KAAK,GAAG,GAAG,OAAO,QAAQ,GAAG,UAAU,OAAO,WAAW,iBAAiB,aAAa,eAAe,oBAAoB,WAAW;AACvJ,QAAM,mBAAmB,EAAE,MAAM,WAAW,wBAAwB;AACpE,QAAM,QAAQ,UAAU,EAAE,KAAK,MAAM;AACrC,QAAM,aAAa,oBAAoB,GAAG,GAAG,OAAO,QAAQ,KAAK;AACjE,MAAI,uBAAuB,QAAQ;AACjC,QAAI,UAAU;AACd,QAAI,kBAAkB;AACpB,gBAAU;AAAA,QACR,GAAG;AAAA,QACH,OAAO;AAAA,MACf;AAAA,IACI;AACA,QAAI,mBAAmB;AAAA,MACrB;AAAA,MACA;AAAA,MACA,MAAM,EAAE,GAAG,GAAG,OAAO,OAAM;AAAA,MAC3B,QAAQ;AAAA,MACR,aAAa,QAAQ;AAAA,MACrB,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK,GAAG;AACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,kBAAkB;AACpB,QAAI,UAAU;AACd,QAAI,EAAE,UAAU;AACd,gBAAU;AACZ,QAAI,EAAE,UAAU;AACd,gBAAU;AACZ,QAAI,YAAY,MAAM;AACpB,UAAI,cAAc;AAAA,IACpB;AACA,iBAAa,KAAK,OAAO,SAAS,GAAG,GAAG,OAAO,QAAQ,OAAO,QAAQ,QAAQ,EAAE;AAChF,QAAI,YAAY,MAAM;AACpB,UAAI,cAAc;AAAA,IACpB;AACA;AAAA,EACF;AACA,QAAM,OAAO,MAAM;AACnB,QAAM,YAAY,WAAW,MAAM,qBAAqB,MAAM;AAC9D,QAAM,iBAAiB,EAAE,YAAY,SAAS,aAAa,aAAa;AACxE,QAAM,YAAY,QAAQ,KAAK;AAC/B,MAAI,QAAQ,QAAQ,IAAI,QAAQ,OAAO,IAAI;AAC3C,MAAI,EAAE,SAAS,QAAQ;AACrB,QAAI,UAAU,WAAW,aAAa;AACtC,QAAI,EAAE,UAAU,aAAa;AAC3B,gBAAU,WAAW,aAAa;AAAA,IACpC;AACA,UAAM,aAAa,MAAM;AACzB,kBAAc;AAAA,MACZ,EAAE;AAAA,MACF;AAAA,MACA;AAAA,MACA,QAAQ,QAAQ,aAAa;AAAA,MAC7B,KAAK,SAAS,cAAc;AAAA,MAC5B;AAAA,MACA;AAAA,IACN;AACI,QAAI,EAAE,gBAAgB,QAAQ;AAC5B,oBAAc;AAAA,QACZ,EAAE;AAAA,QACF,WAAW,aAAa;AAAA,QACxB;AAAA,QACA,QAAQ,QAAQ,aAAa,IAAI,QAAQ;AAAA,QACzC,MAAM,SAAS,MAAM,IAAI;AAAA,QACzB;AAAA,QACA;AAAA,MACR;AAAA,IACI;AACA,aAAS,KAAK,KAAK,aAAa,GAAG,IAAI;AAAA,EACzC;AACA,MAAI,kBAAkB,EAAE,YAAY,QAAQ,QAAQ,IAAI;AACtD,UAAM,YAAY;AAClB,UAAM,YAAY,QAAQ,YAAY,QAAQ;AAC9C,UAAM,UAAU,QAAQ,YAAY,MAAM,QAAQ,YAAY;AAC9D,UAAM,mBAAmB,YAAY;AACrC,UAAM,iBAAiB,UAAU;AACjC,UAAM,OAAO,IAAI,qBAAqB,GAAG,GAAG,IAAI,OAAO,CAAC;AACxD,UAAM,QAAQ,UAAU,WAAW,CAAC;AACpC,SAAK,aAAa,QAAQ,IAAI,GAAG,SAAS;AAC1C,SAAK,aAAa,kBAAkB,SAAS;AAC7C,SAAK,aAAa,gBAAgB,KAAK;AACvC,SAAK,aAAa,QAAQ,IAAI,GAAG,KAAK;AACtC,QAAI,YAAY;AAAA,EAClB,OAAO;AACL,QAAI,YAAY;AAAA,EAClB;AACA,MAAI,OAAO;AACT,QAAI,YAAY;AAAA,EAClB;AACA,MAAI;AAAA,IACF,EAAE;AAAA,IACF;AAAA,IACA,IAAI,SAAS,IAAI,oBAAoB,KAAK,GAAG,MAAM,eAAe,IAAI,MAAM,UAAU,EAAE;AAAA,EAC5F;AACE,MAAI,OAAO;AACT,QAAI,YAAY;AAAA,EAClB;AACA,MAAI,kBAAkB,EAAE,YAAY,MAAM;AACxC,QAAI,UAAS;AACb,UAAM,YAAY,WAAW,IAAI,WAAW,QAAQ,IAAI;AACxD,UAAM,YAAY,WAAW,IAAI,WAAW,SAAS,IAAI;AACzD;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,UACE,GAAG;AAAA,UACH,GAAG;AAAA,QACb;AAAA,QACQ;AAAA,UACE,GAAG,YAAY;AAAA,UACf,GAAG;AAAA,QACb;AAAA,QACQ;AAAA,UACE,GAAG,YAAY;AAAA,UACf,GAAG,YAAY;AAAA,QACzB;AAAA,MACA;AAAA,MACM;AAAA,IACN;AACI,QAAI,YAAY;AAChB,QAAI,KAAI;AAAA,EACV;AACF;AACA,SAAS,gBAAgB,KAAK,eAAe,cAAc,SAAS,OAAO,YAAY,cAAc,mBAAmB,kBAAkB,YAAY,WAAW,YAAY,eAAe,aAAa,gBAAgB,iBAAiB,QAAQ,oBAAoB,WAAW;AAC/Q,MAAI;AACJ,QAAM,oBAAoB,eAAe;AACzC,MAAI,qBAAqB;AACvB;AACF,MAAI,YAAY,WAAW;AAC3B,MAAI,SAAS,GAAG,GAAG,OAAO,iBAAiB;AAC3C,QAAM,CAAC,MAAM,IAAI,KAAK,KAAK,WAAW,OAAO,SAAS,QAAQ,CAAC,MAAM,OAAO,KAAK,CAAA;AACjF,QAAM,OAAO,GAAG,WAAW,eAAe,IAAI,WAAW,UAAU;AACnE,MAAI,OAAO;AACX,cAAY,eAAe,GAAG,YAAY,GAAG,mBAAmB,CAAC,GAAG,GAAG,IAAI,UAAU;AACnF,QAAI,KAAK,IAAI;AACb,QAAI,WAAW,UAAU,CAAC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW;AAChF;AACF,UAAM,OAAO,KAAK,IAAI,GAAG,QAAQ,CAAC;AAClC,QAAI,KAAI;AACR,QAAI,UAAS;AACb,QAAI,KAAK,IAAI,MAAM,mBAAmB,EAAE,QAAQ,MAAM,YAAY;AAClE,QAAI,KAAI;AACR,UAAM,aAAa,iBAAiB,MAAM,EAAE,UAAU,OAAO,MAAM,EAAE,EAAE;AACvE,UAAM,QAAQ,EAAE,kBAAkB,UAAU,eAAe,SAAS,aAAa,EAAE,GAAG,YAAY,GAAG,YAAY,GAAG,EAAE,cAAa;AACnI,QAAI,MAAM,aAAa,WAAW,UAAU;AAC1C,UAAI,YAAY,MAAM;AACtB,UAAI,KAAI;AAAA,IACV;AACA,UAAM,IAAI,GAAG,MAAM,eAAe,IAAI,MAAM,UAAU;AACtD,QAAI,SAAS,GAAG;AACd,UAAI,OAAO;AAAA,IACb;AACA,UAAM,WAAW,UAAU,QAAQ,SAAS,EAAE,WAAW;AACzD,UAAM,UAAU,qBAAqB,UAAU;AAC/C,UAAM,iBAAiB,CAAC,WAAW,SAAS,MAAM,SAAS,EAAE;AAC7D,UAAM,QAAQ,UAAU,KAAK,MAAM,KAAK,YAAY,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,OAAO,SAAS,GAAG,gBAAgB,OAAO,KAAK;AACpK,UAAM,mBAAmB,aAAa,OAAO,SAAS,UAAU,aAAa,UAAU,UAAU,QAAQ,KAAK,CAAC,MAAM,EAAE;AACvH,UAAM,cAAc,WAAW,MAAM,cAAc,kBAAkB,MAAM,mBAAmB,MAAM;AACpG,UAAM,IAAI,eAAe,oBAAoB;AAC7C,UAAM,UAAU,EAAE,gBAAgB,IAAI,IAAI;AAC1C,QAAI,UAAU;AACZ,UAAI,YAAY;AAChB,UAAI,SAAS,IAAI,SAAS,GAAG,EAAE,QAAQ,SAAS,YAAY;AAAA,IAC9D,WAAW,mBAAmB,QAAQ,GAAG;AACvC,UAAI,UAAS;AACb,UAAI,KAAK,IAAI,SAAS,GAAG,EAAE,QAAQ,SAAS,YAAY;AACxD,UAAI,iBAAiB;AACnB,YAAI,YAAY,MAAM;AACtB,YAAI,KAAI;AAAA,MACV;AACA,UAAI,QAAQ,GAAG;AACb,YAAI,cAAc;AAClB,YAAI,YAAY,MAAM;AACtB,YAAI,KAAI;AACR,YAAI,cAAc;AAAA,MACpB;AAAA,IACF;AACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA,EAAE;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,QAAI,QAAO;AAAA,EACb,CAAC;AACD,MAAI,cAAc;AAChB;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACE;AACF;AACA,SAAS,cAAc,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACrD,SAAO,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK;AACvE;AACA,SAAS,WAAW,KAAK,kBAAkB,OAAO,QAAQ,mBAAmB,mBAAmB,YAAY,YAAY,aAAa,MAAM,cAAc,iBAAiB,QAAQ,cAAc;AAC9L,MAAI,WAAW,UAAU,OAAO,WAAW;AACzC;AACF,QAAM,kBAAkB,oBAAoB,WAAW,aAAa,OAAO,CAAC,IAAI;AAChF,MAAI,UAAS;AACb,aAAW,kBAAkB,OAAO,YAAY,mBAAmB,CAAC,MAAM,QAAQ,GAAG,GAAG,GAAG,MAAM;AAC/F,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAM,IAAI,OAAO,CAAC;AAClB,UAAI,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG;AACrD,YAAI,KAAK,GAAG,GAAG,GAAG,CAAC;AACnB;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACD;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,GAAG,OAAO,UAAU,OAAO,aAAa;AACvC,YAAM,OAAO,KAAK,IAAI,GAAG,QAAQ,KAAK;AACtC,YAAM,SAAS,QAAQ,OAAO;AAC9B,YAAM,aAAa,EAAE,QAAQ,OAAO;AACpC,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,cAAM,IAAI,OAAO,CAAC;AAClB,YAAI,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC,MAAM,SAAS;AAC9D,cAAI,KAAK,QAAQ,mBAAmB,YAAY,oBAAoB,iBAAiB;AACrF;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC;AACH;AACF;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAAC,OAAO,KAAK,IAAI,aAAa;AAC5B,cAAI,YAAY;AAChB,mBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,kBAAM,IAAI,OAAO,CAAC;AAClB,gBAAI,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,MAAM,KAAK;AAC1C,0BAAY;AACZ;AAAA,YACF;AAAA,UACF;AACA,cAAI,WAAW;AACb,kBAAM,MAAM,QAAQ;AACpB,kBAAM,SAAS,WAAW,MAAM,KAAK,IAAI,KAAK,IAAI,MAAM,KAAK,GAAG,SAAS,eAAe;AACxF,kBAAM,IAAI,SAAS;AACnB,gBAAI,IAAI,GAAG;AACT,kBAAI,KAAK,QAAQ,KAAK,YAAY,CAAC;AAAA,YACrC;AAAA,UACF;AAAA,QACF;AAAA,MACR;AAAA,IACI;AAAA,EACJ;AACE,MAAI,KAAI;AACV;AACA,SAAS,cAAc,MAAM,OAAO,OAAO,OAAO,OAAO,QAAQ,YAAY;AAC3E,MAAI,IAAI;AACR,QAAM,CAAC,UAAU,MAAM,IAAI;AAC3B,MAAI;AACJ,MAAI;AACJ,QAAM,kBAAkB,MAAM,KAAK,WAAW,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,OAAO,SAAS,GAAG,gBAAgB,OAAO,KAAK;AACxH,MAAI,SAAS,gBAAgB;AAC3B,UAAM,gBAAgB,KAAK,IAAI,UAAU,cAAc;AACvD,QAAI,QAAQ;AACZ,QAAI,QAAQ;AACZ,aAAS,IAAI,OAAO,cAAc,GAAG,KAAK,eAAe,KAAK;AAC5D,eAAS,WAAW,CAAC,EAAE;AACvB,eAAS,WAAW,CAAC,EAAE;AAAA,IACzB;AACA,aAAS,IAAI,OAAO,cAAc,GAAG,KAAK,QAAQ,KAAK;AACrD,eAAS,WAAW,CAAC,EAAE;AAAA,IACzB;AACA,kBAAc;AAAA,MACZ,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,EACE;AACA,MAAI,iBAAiB,UAAU;AAC7B,UAAM,cAAc,KAAK,IAAI,QAAQ,iBAAiB,CAAC;AACvD,QAAI,QAAQ;AACZ,QAAI,QAAQ;AACZ,aAAS,IAAI,OAAO,cAAc,GAAG,KAAK,UAAU,KAAK;AACvD,eAAS,WAAW,CAAC,EAAE;AACvB,eAAS,WAAW,CAAC,EAAE;AAAA,IACzB;AACA,aAAS,IAAI,OAAO,cAAc,GAAG,KAAK,aAAa,KAAK;AAC1D,eAAS,WAAW,CAAC,EAAE;AAAA,IACzB;AACA,iBAAa;AAAA,MACX,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,EACE;AACA,SAAO,CAAC,YAAY,WAAW;AACjC;AACA,SAAS,UAAU,KAAK,kBAAkB,YAAY,QAAQ,mBAAmB,YAAY,YAAY,aAAa,MAAM,cAAc,gBAAgB,iBAAiB,qBAAqB,cAAc,WAAW,WAAW,iBAAiB,aAAa,QAAQ,WAAW,eAAe,kBAAkB,gBAAgB,aAAa,eAAe,aAAa,WAAW,eAAe,YAAY,SAAS,iBAAiB;AAC7a,MAAI;AACJ,MAAI,UAAU,KAAK,UAAU,OAAO,SAAS,OAAO,WAAW,OAAO,KAAK,OAAO;AAClF,QAAM,YAAY,YAAY,IAAG;AACjC,MAAI,OAAO,GAAG,WAAW,aAAa,IAAI,WAAW,UAAU;AAC/D,MAAI,OAAO;AACX,MAAI;AACJ,QAAM,eAA+B,oBAAI,IAAG;AAC5C;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,GAAG,OAAO,eAAe,OAAO,aAAa;AAC5C,UAAI;AACJ,YAAM,OAAO,KAAK,IAAI,GAAG,QAAQ,KAAK;AACtC,YAAM,WAAW,QAAQ;AACzB,YAAM,WAAW,oBAAoB;AACrC,YAAM,WAAW,EAAE,QAAQ;AAC3B,YAAM,YAAY,SAAS,oBAAoB;AAC/C,UAAI,YAAY,SAAS,GAAG;AAC1B,YAAI,QAAQ;AACZ,iBAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,gBAAM,KAAK,YAAY,CAAC;AACxB,cAAI,cAAc,UAAU,UAAU,UAAU,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG;AAC3F,oBAAQ;AACR;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAAC;AACH;AAAA,MACJ;AACA,YAAM,SAAS,MAAM;AACnB,YAAI,KAAI;AACR,YAAI,UAAS;AACb,YAAI,KAAK,UAAU,UAAU,UAAU,SAAS;AAChD,YAAI,KAAI;AAAA,MACV;AACA,YAAM,cAAc,UAAU,QAAQ,SAAS,EAAE,WAAW;AAC5D,YAAM,aAAa,iBAAiB,MAAM,EAAE,UAAU,OAAO,MAAM,EAAE,EAAE;AACvE,YAAM,WAAW,EAAE,kBAAkB,UAAU,eAAe,SAAS,aAAa,EAAE,GAAG,YAAY,GAAG,YAAY,GAAG,EAAE,cAAa;AACtI,YAAM,UAAU,GAAG,SAAS,aAAa,IAAI,SAAS,UAAU;AAChE,UAAI,YAAY,MAAM;AACpB,eAAO;AACP,YAAI,OAAO;AAAA,MACb;AACA,aAAM;AACN,UAAI,aAAa;AACjB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAAC,OAAO,KAAK,IAAI,UAAU,kBAAkB;AAC3C,cAAI,KAAK,IAAI,IAAI;AACjB,cAAI,MAAM;AACR;AACF,cAAI,WAAW,QAAQ;AACrB,gBAAI,QAAQ;AACZ,qBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,oBAAM,IAAI,OAAO,CAAC;AAClB,kBAAI,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,MAAM,KAAK;AAC1C,wBAAQ;AACR;AAAA,cACF;AAAA,YACF;AACA,gBAAI,CAAC;AACH;AAAA,UACJ;AACA,cAAI,YAAY,SAAS,GAAG;AAC1B,gBAAI,QAAQ;AACZ,qBAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,oBAAM,KAAK,YAAY,CAAC;AACxB,kBAAI,cAAc,OAAO,OAAO,EAAE,OAAO,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG;AAC7E,wBAAQ;AACR;AAAA,cACF;AAAA,YACF;AACA,gBAAI,CAAC;AACH;AAAA,UACJ;AACA,gBAAM,cAAc,UAAU,KAAK,SAAS,GAAG;AAC/C,gBAAM,cAAc,aAAa,SAAS,GAAG;AAC7C,gBAAM,OAAO,MAAM,OAAO,eAAe,CAAC,EAAE,aAAa,GAAG,CAAC,IAAI;AACjE,cAAI,QAAQ;AACZ,cAAI,YAAY,EAAE;AAClB,cAAI,cAAc;AAClB,cAAI,eAAe;AACnB,cAAI,KAAK,SAAS,QAAQ;AACxB,kBAAM,CAAC,UAAU,MAAM,IAAI,KAAK;AAChC,kBAAM,UAAU,GAAG,GAAG,IAAI,QAAQ,IAAI,MAAM,IAAI,EAAE,MAAM;AACxD,gBAAI,CAAC,aAAa,IAAI,OAAO,GAAG;AAC9B,oBAAM,QAAQ,cAAc,KAAK,MAAM,OAAO,OAAO,EAAE,OAAO,IAAI,GAAG,UAAU;AAC/E,oBAAM,OAAO,EAAE,SAAS,MAAM,CAAC,IAAI,MAAM,CAAC;AAC1C,kBAAI,CAAC,EAAE,UAAU,MAAM,CAAC,MAAM,QAAQ;AACpC,+BAAe;AAAA,cACjB;AACA,kBAAI,SAAS,QAAQ;AACnB,wBAAQ,KAAK;AACb,4BAAY,KAAK;AACjB,6BAAa,IAAI,OAAO;AACxB,oBAAI,QAAO;AACX,6BAAa;AACb,oBAAI,KAAI;AACR,oBAAI,UAAS;AACb,sBAAM,IAAI,KAAK,IAAI,GAAG,QAAQ,KAAK,CAAC;AACpC,oBAAI,KAAK,KAAK,IAAI,GAAG,OAAO,KAAK,QAAQ,GAAG,EAAE;AAC9C,oBAAI,WAAW,QAAQ;AACrB,2BAAS,CAAA;AAAA,gBACX;AACA,uBAAO,KAAK;AAAA,kBACV,GAAG,KAAK,IAAI;AAAA,kBACZ,GAAG;AAAA,kBACH,OAAO,KAAK,QAAQ;AAAA,kBACpB,QAAQ;AAAA,gBAC1B,CAAiB;AACD,oBAAI,KAAI;AACR,8BAAc;AAAA,cAChB;AAAA,YACF,OAAO;AACL;AACA;AAAA,YACF;AAAA,UACF;AACA,gBAAM,WAAW,uBAAuB,OAAO,SAAS,oBAAoB,GAAG;AAC/E,gBAAM,gBAAgB,mBAAmB,MAAM,EAAE,uBAAuB,OAAO,SAAS,IAAI,mBAAmB,UAAU,KAAK,EAAE,uBAAuB,OAAO,SAAS,GAAG,gBAAgB;AAC1L,gBAAM,QAAQ,KAAK,kBAAkB,UAAU,aAAa,UAAU,kBAAkB,SAAS,WAAW,EAAE,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,KAAK,cAAa;AAC/K,cAAI,UAAS;AACb,gBAAM,YAAY,CAAC,EAAE,aAAa,GAAG;AACrC,gBAAM,aAAa,eAAe,WAAW,MAAM,SAAS;AAC5D,cAAI,cAAc,cAAc,WAAW,MAAM,SAAS;AAC1D,gBAAM,oBAAoB,KAAK,SAAS,UAAU,UAAU,QAAQ;AAAA,YAClE,CAAC,UAAU,KAAK,SAAS,UAAU,SAAS,KAAK,KAAK,CAAC,KAAK,SAAS,KAAK,KAAK,CAAC;AAAA,UAC5F;AACU,cAAI,cAAc,CAAC,aAAa,WAAW;AACzC,0BAAc;AAAA,UAChB,WAAW,YAAY;AACrB,0BAAc,KAAK,IAAI,aAAa,CAAC;AAAA,UACvC;AACA,cAAI,mBAAmB;AACrB;AAAA,UACF;AACA,cAAI,CAAC,YAAY;AACf,gBAAI;AACF;AACF,gBAAI,eAAe,CAAC;AAClB;AAAA,UACJ;AACA,gBAAM,SAAS,KAAK,SAAS,aAAa,YAAY,MAAM,eAAe,MAAM;AACjF,cAAI;AACJ,cAAI,YAAY,WAAW,WAAW,QAAQ;AAC5C,mBAAO,MAAM,QAAQ,IAAI;AAAA,UAC3B;AACA,cAAI,cAAc,KAAK,aAAa;AAClC,gBAAI,aAAa;AACf,qBAAO,MAAM,MAAM,UAAU,IAAI;AAAA,YACnC;AACA,qBAAS,IAAI,GAAG,IAAI,aAAa,KAAK;AACpC,qBAAO,MAAM,MAAM,aAAa,IAAI;AAAA,YACtC;AAAA,UACF,OAAO;AACL,iBAAK,iBAAiB,OAAO,SAAS,cAAc,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,CAAC,MAAM,GAAG,OAAO,MAAM;AACvH,qBAAO,MAAM,MAAM,gBAAgB,IAAI;AAAA,YACzC;AAAA,UACF;AACA,cAAI,qBAAqB,QAAQ;AAC/B,uBAAW,UAAU,kBAAkB;AACrC,oBAAM,IAAI,OAAO;AACjB,kBAAI,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,OAAO,MAAM,EAAE,IAAI,EAAE,QAAQ;AAC/F,uBAAO,MAAM,OAAO,OAAO,IAAI;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AACA,cAAI,SAAS,QAAQ;AACnB,gBAAI,YAAY;AAChB,gBAAI,eAAe,QAAQ;AACzB,yBAAW,YAAY;AAAA,YACzB;AACA,gBAAI,SAAS,OAAO,OAAO,WAAW,EAAE;AAAA,UAC1C;AACA,cAAI,KAAK,UAAU,SAAS;AAC1B,gBAAI,cAAc;AAAA,UACpB;AACA,gBAAM,aAAa,YAAY,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,KAAK,CAAC,MAAM,GAAG;AAC9F,cAAI,YAAY,MAAM,CAAC,cAAc;AACnC,kBAAM,WAAW,GAAG,MAAM,aAAa,IAAI,MAAM,UAAU;AAC3D,gBAAI,aAAa,MAAM;AACrB,kBAAI,OAAO;AACX,qBAAO;AAAA,YACT;AACA,yBAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,cACA,EAAE;AAAA,cACF;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,cAAc;AAAA,cACd;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,eACC,KAAK,cAAc,OAAO,SAAS,WAAW,gBAAgB,OAAO,KAAK;AAAA,cAC3E;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACd;AAAA,UACU;AACA,cAAI,KAAK,UAAU,SAAS;AAC1B,gBAAI,cAAc;AAAA,UACpB;AACA;AACA,cAAI,aAAa;AACf,gBAAI,QAAO;AACX,aAAC,KAAK,cAAc,OAAO,SAAS,WAAW,WAAW,OAAO,SAAS,GAAG,KAAK,YAAY,EAAE,IAAG,CAAE;AACrG,yBAAa;AACb,mBAAM;AACN,mBAAO;AACP,gBAAI,OAAO;AAAA,UACb;AACA,iBAAO,UAAU;AAAA,QACnB;AAAA,MACR;AACM,UAAI,QAAO;AACX,aAAO,UAAU;AAAA,IACnB;AAAA,EACJ;AACE,SAAO;AACT;AACA,SAAS,WAAW,KAAK,kBAAkB,YAAY,OAAO,QAAQ,mBAAmB,YAAY,YAAY,aAAa,MAAM,cAAc,aAAa,cAAc,cAAc,iBAAiB,aAAa,QAAQ,OAAO;AACtO,MAAI,WAAW,UAAU,iBAAiB,iBAAiB,SAAS,CAAC,MAAM,WAAW,iBAAiB,SAAS,CAAC;AAC/G;AACF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,GAAG,OAAO,UAAU,OAAO,aAAa;AACvC,UAAI,MAAM,iBAAiB,iBAAiB,SAAS,CAAC;AACpD;AACF,eAAS,EAAE;AACX,YAAM,IAAI,KAAK,IAAI,OAAO,KAAK;AAC/B,UAAI,IAAI;AACN;AACF,UAAI,KAAI;AACR,UAAI,UAAS;AACb,UAAI,KAAK,GAAG,oBAAoB,GAAG,KAAK,SAAS,oBAAoB,CAAC;AACtE,UAAI,KAAI;AACR;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAAC,OAAO,KAAK,IAAI,aAAa;AAC5B,cAAI,CAAC,YAAY,YAAY,SAAS,KAAK,CAAC,YAAY;AAAA,YACtD,CAAC,OAAO,cAAc,OAAO,OAAO,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,MAAM;AAAA,UACxF,GAAa;AACD;AAAA,UACF;AACA,gBAAM,cAAc,aAAa,SAAS,GAAG;AAC7C,gBAAM,cAAc,aAAa,SAAS,GAAG;AAC7C,cAAI,UAAS;AACb,gBAAM,WAAW,eAAe,OAAO,SAAS,YAAY,GAAG;AAC/D,gBAAM,aAAa,aAAa,SAAS,QAAQ,EAAE,GAAG,OAAO,GAAG,SAAQ;AACxE,cAAI,WAAW,WAAW,MAAM,QAAQ;AACtC,gBAAI,YAAY,WAAW;AAC3B,gBAAI,SAAS,OAAO,OAAO,KAAK,EAAE;AAAA,UACpC;AACA,cAAI,aAAa;AACf,gBAAI,YAAY,WAAW;AAC3B,gBAAI,SAAS,OAAO,OAAO,KAAK,EAAE;AAAA,UACpC;AACA,cAAI,aAAa;AACf,gBAAI,YAAY,WAAW;AAC3B,gBAAI,SAAS,OAAO,OAAO,KAAK,EAAE;AAAA,UACpC;AAAA,QACF;AAAA,MACR;AACM,UAAI,QAAO;AAAA,IACb;AAAA,EACJ;AACA;AACA,SAAS,yBAAyB,KAAK,eAAe,OAAO,QAAQ,eAAe,MAAM,gBAAgB,cAAc,OAAO;AAC7H,MAAI;AACJ,MAAI,mBAAmB;AACvB,aAAW,KAAK,eAAe;AAC7B,QAAI,EAAE;AACJ;AACF,uBAAmB,eAAe,EAAE,WAAW;AAC/C;AAAA,EACF;AACA,QAAM,UAAU,KAAK,MAAM,0BAA0B,OAAO,KAAK,MAAM;AACvE,QAAM,SAAS,MAAM;AACrB,QAAM,QAAQ,mBAAmB,eAAe,aAAa,IAAI;AACjE,MAAI,UAAU,GAAG;AACf,QAAI,UAAS;AACb,QAAI,OAAO,QAAQ,KAAK,CAAC;AACzB,QAAI,OAAO,QAAQ,KAAK,MAAM;AAC9B,QAAI,cAAc,MAAM,QAAQ,MAAM,MAAM;AAC5C,QAAI,OAAM;AAAA,EACZ;AACA,MAAI,eAAe;AACjB,UAAM,IAAI,aAAa,OAAO,CAAC;AAC/B,QAAI,UAAS;AACb,QAAI,OAAO,GAAG,SAAS,IAAI,GAAG;AAC9B,QAAI,OAAO,OAAO,SAAS,IAAI,GAAG;AAClC,QAAI,cAAc,MAAM,QAAQ,MAAM,MAAM;AAC5C,QAAI,OAAM;AAAA,EACZ;AACF;AACA,SAAS,mBAAmB,KAAK,OAAO,QAAQ,aAAa,aAAa,YAAY,YAAY,eAAe,eAAe,cAAc,mBAAmB,WAAW,eAAe,MAAM,qBAAqB;AACpN,QAAM,mBAAmB,uBAAuB,OAAO,SAAS,oBAAoB,OAAO,CAAC,MAAM,EAAE,UAAU,YAAY;AAC1H,MAAI,qBAAqB,UAAU,iBAAiB,WAAW;AAC7D,WAAO;AACT,QAAM,YAAY,iBAAiB,IAAI,CAAC,MAAM;AAC5C,QAAI,IAAI,IAAI,IAAI,IAAI;AACpB,UAAM,IAAI,EAAE;AACZ,UAAM,gBAAgB;AAAA,MACpB,EAAE;AAAA,MACF,EAAE;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,QAAI,EAAE,UAAU,KAAK,EAAE,WAAW,GAAG;AACnC,UAAI,EAAE,IAAI,eAAe;AACvB,eAAO,CAAC,EAAE,OAAO,EAAE,OAAO,QAAQ,KAAK,EAAE,UAAU,OAAO,KAAK,UAAU,MAAM,cAAa,GAAI,MAAM;AAAA,MACxG;AACA,aAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,QAAQ,KAAK,EAAE,UAAU,OAAO,KAAK,UAAU,MAAM,eAAe;AAAA,IACxG;AACA,UAAM,oBAAoB;AAAA,MACxB,EAAE,IAAI,EAAE,QAAQ;AAAA,MAChB,EAAE,IAAI,EAAE,SAAS;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,QAAI,EAAE,IAAI,iBAAiB,EAAE,IAAI,EAAE,SAAS,eAAe;AACzD,YAAM,2BAA2B;AAAA,QAC/B,gBAAgB;AAAA,QAChB,EAAE,IAAI,EAAE,SAAS;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR;AACM,YAAM,4BAA4B;AAAA,QAChC;AAAA,QACA,EAAE,IAAI,EAAE,SAAS;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR;AACM,aAAO;AAAA,QACL;AAAA,UACE,OAAO,EAAE;AAAA,UACT,QAAQ,KAAK,EAAE,UAAU,OAAO,KAAK;AAAA,UACrC,MAAM;AAAA,YACJ,GAAG,cAAc;AAAA,YACjB,GAAG,cAAc;AAAA,YACjB,OAAO,yBAAyB,IAAI,yBAAyB,QAAQ,cAAc;AAAA,YACnF,QAAQ,yBAAyB,IAAI,yBAAyB,SAAS,cAAc;AAAA,UACjG;AAAA,QACA;AAAA,QACQ;AAAA,UACE,OAAO,EAAE;AAAA,UACT,QAAQ,KAAK,EAAE,UAAU,OAAO,KAAK;AAAA,UACrC,MAAM;AAAA,YACJ,GAAG,0BAA0B;AAAA,YAC7B,GAAG,0BAA0B;AAAA,YAC7B,OAAO,kBAAkB,IAAI,kBAAkB,QAAQ,0BAA0B;AAAA,YACjF,QAAQ,kBAAkB,IAAI,kBAAkB,SAAS,0BAA0B;AAAA,UAC/F;AAAA,QACA;AAAA,MACA;AAAA,IACI,OAAO;AACL,aAAO;AAAA,QACL;AAAA,QACA;AAAA,UACE,OAAO,EAAE;AAAA,UACT,QAAQ,KAAK,EAAE,UAAU,OAAO,KAAK;AAAA,UACrC,MAAM;AAAA,YACJ,GAAG,cAAc;AAAA,YACjB,GAAG,cAAc;AAAA,YACjB,OAAO,kBAAkB,IAAI,kBAAkB,QAAQ,cAAc;AAAA,YACrE,QAAQ,kBAAkB,IAAI,kBAAkB,SAAS,cAAc;AAAA,UACnF;AAAA,QACA;AAAA,MACA;AAAA,IACI;AAAA,EACF,CAAC;AACD,QAAM,cAAc,eAAe,aAAa;AAChD,QAAM,SAAS,MAAM;AACnB,QAAI,UAAS;AACb,QAAI,KAAI;AACR,QAAI,SAAS;AACb,UAAM,YAAY,CAAC,SAAS;AAC1B,UAAI,WAAW;AACb;AACF,UAAI,YAAY,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;AAClC,eAAS;AAAA,IACX;AACA,QAAI,YAAY;AAChB,eAAW,MAAM,WAAW;AAC1B,YAAM,CAAC,CAAC,IAAI;AACZ,UAAI,MAAM,UAAU,cAAc,GAAG,GAAG,OAAO,QAAQ,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,GAAG;AACvG,kBAAU,EAAE,UAAU,QAAQ;AAC9B,YAAI,cAAc,UAAU,EAAE,OAAO,CAAC;AACtC,YAAI,WAAW,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,QAAQ,GAAG,EAAE,KAAK,SAAS,CAAC;AAAA,MAChF;AAAA,IACF;AACA,QAAI,UAAU;AACd,eAAW,MAAM,WAAW;AAC1B,YAAM,CAAA,EAAG,CAAC,IAAI;AACd,UAAI,MAAM,UAAU,cAAc,GAAG,GAAG,OAAO,QAAQ,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,GAAG;AACvG,kBAAU,EAAE,UAAU,QAAQ;AAC9B,YAAI,CAAC,WAAW,EAAE,KAAK,IAAI,aAAa;AACtC,cAAI,KAAK,aAAa,GAAG,OAAO,MAAM;AACtC,cAAI,KAAI;AACR,oBAAU;AAAA,QACZ;AACA,YAAI,cAAc,UAAU,EAAE,OAAO,CAAC;AACtC,YAAI,WAAW,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,QAAQ,GAAG,EAAE,KAAK,SAAS,CAAC;AAAA,MAChF;AAAA,IACF;AACA,QAAI,QAAO;AAAA,EACb;AACA,SAAM;AACN,SAAO;AACT;AACA,SAAS,cAAc,KAAK,OAAO,QAAQ,aAAa,YAAY,YAAY,eAAe,YAAY,OAAO,mBAAmB,cAAc,cAAc,gBAAgB,iBAAiB,YAAY,MAAM;AAClN,MAAI;AACJ,MAAI,aAAa,YAAY,UAAU,CAAC,cAAc,KAAK,CAAC,MAAM;AAChE,QAAI;AACJ,WAAO,EAAE,kBAAkB,MAAM,aAAa,YAAY,OAAO,SAAS,IAAI,KAAK,CAAC;AAAA,EACtF,CAAC;AACC,WAAO;AACT,QAAM,CAAC,WAAW,SAAS,IAAI,aAAa,QAAQ;AACpD,QAAM,OAAO,eAAe,aAAa,QAAQ,IAAI;AACrD,QAAM,iBAAiB,KAAK,KAAK,SAAS,OAAO,KAAK,CAAC,WAAW,SAAS;AAC3E,QAAM,cAAc,oBAAoB,YAAY,cAAc,OAAO;AACzE,QAAM,iBAAiB,oBAAoB,YAAY,CAAC,cAAc,aAAa,OAAO,CAAC,IAAI,IAAI;AACnG,MAAI,SAAS;AACb;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,KAAK,OAAO,UAAU,OAAO,aAAa;AACzC,UAAI,IAAI,UAAU,YAAY,IAAI;AAChC;AACF,UAAI,IAAI,cAAc,cAAc,CAAC,KAAK,IAAI,cAAc,cAAc,CAAC,GAAG;AAC5E;AAAA,MACF;AACA,oBAAc,UAAU,UAAU,QAAQ,MAAM,cAAc,iBAAiB,CAAC,OAAO,KAAK,OAAO;AACjG,YAAI,QAAQ;AACV;AACF,YAAI,QAAQ;AACZ,YAAI,YAAY,IAAI;AACpB,YAAI,KAAK,SAAS,QAAQ;AACxB,gBAAM,QAAQ,cAAc,KAAK,MAAM,OAAO,OAAO,IAAI,OAAO,IAAI,KAAK,UAAU;AACnF,gBAAM,OAAO,IAAI,SAAS,MAAM,CAAC,IAAI,MAAM,CAAC;AAC5C,cAAI,SAAS,QAAQ;AACnB,oBAAQ,KAAK;AACb,wBAAY,KAAK;AAAA,UACnB;AAAA,QACF;AACA,iBAAS,MAAM;AACb,cAAI,KAAK,IAAI,IAAI;AACjB,cAAI,QAAQ,SAAS,CAAC,IAAI,QAAQ;AAChC,gBAAI,UAAS;AACb,gBAAI,KAAK,OAAO,GAAG,QAAQ,OAAO,MAAM;AACxC,gBAAI,KAAI;AAAA,UACV;AACA,cAAI,UAAS;AACb,cAAI,KAAK,QAAQ,KAAK,QAAQ,KAAK,WAAW,EAAE;AAChD,cAAI,eAAe,MAAM,MAAM,IAAI,kBAAkB,OAAO,SAAS,IAAI,gBAAgB,OAAO,KAAK,MAAM;AAC3G,cAAI,YAAY;AAChB,cAAI,OAAM;AACV,cAAI,YAAY;AACd,gBAAI,UAAS;AACb,gBAAI,KAAK,QAAQ,YAAY,GAAG,QAAQ,KAAK,GAAG,GAAG,CAAC;AACpD,gBAAI,aAAa,MAAM,KAAK,IAAI,kBAAkB,OAAO,SAAS,GAAG,gBAAgB,OAAO,KAAK,MAAM;AACvG,gBAAI,KAAI;AAAA,UACV;AAAA,QACF;AACA,eAAO;AAAA,MACT,CAAC;AACD,aAAO;AAAA,IACT;AAAA,EACJ;AACE,MAAI,WAAW;AACb,WAAO;AACT,QAAM,SAAS,MAAM;AACnB,QAAI,KAAI;AACR,QAAI,UAAS;AACb,QAAI,KAAK,GAAG,mBAAmB,OAAO,SAAS,oBAAoB,cAAc;AACjF,QAAI,KAAI;AACR,cAAU,OAAO,SAAS,OAAM;AAChC,QAAI,QAAO;AAAA,EACb;AACA,SAAM;AACN,SAAO;AACT;AACA,SAAS,WAAW,kBAAkB,QAAQ,mBAAmB,YAAY,YAAY,aAAa,MAAM,cAAc,iBAAiB;AACzI,MAAI,SAAS;AACb;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,IAAI,SAAS,UAAU,QAAQ,aAAa;AAC3C;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAAC,QAAQ,KAAK,KAAK,aAAa;AAC9B,cAAI,CAAC,UAAU;AACb,qBAAS,KAAK,IAAI,KAAK,MAAM;AAAA,UAC/B;AAAA,QACF;AAAA,MACR;AACM,aAAO;AAAA,IACT;AAAA,EACJ;AACE,SAAO;AACT;AACA,SAAS,eAAe,SAAS,MAAM;AACrC,MAAI,SAAS;AACX,WAAO;AACT,MAAI,QAAQ,UAAU,KAAK,SAAS,QAAQ,WAAW,KAAK,UAAU,QAAQ,UAAU,KAAK,SAAS,QAAQ,iBAAiB,KAAK,gBAAgB,QAAQ,cAAc,KAAK,aAAa,QAAQ,SAAS,KAAK,QAAQ,QAAQ,wBAAwB,KAAK,uBAAuB,QAAQ,cAAc,KAAK,aAAa,QAAQ,eAAe,KAAK,cAAc,QAAQ,mBAAmB,KAAK,kBAAkB,QAAQ,mBAAmB,KAAK,kBAAkB,QAAQ,qBAAqB,KAAK,oBAAoB,QAAQ,cAAc,KAAK,aAAa,QAAQ,qBAAqB,KAAK,oBAAoB,QAAQ,kBAAkB,KAAK,iBAAiB,QAAQ,cAAc,KAAK,aAAa,QAAQ,cAAc,KAAK,WAAW;AAC5tB,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,kBAAkB,KAAK,eAAe;AAChD,QAAI,QAAQ,cAAc,SAAS,OAAO,QAAQ,cAAc,WAAW,KAAK,cAAc,QAAQ;AACpG,aAAO;AAAA,IACT;AACA,QAAI;AACJ,aAAS,IAAI,GAAG,IAAI,QAAQ,cAAc,QAAQ,KAAK;AACrD,YAAM,SAAS,QAAQ,cAAc,CAAC;AACtC,YAAM,UAAU,KAAK,cAAc,CAAC;AACpC,UAAI,UAAU,QAAQ,OAAO;AAC3B;AACF,UAAI,YAAY;AACd,eAAO;AACT,UAAI,OAAO,UAAU,QAAQ;AAC3B,eAAO;AACT,YAAM,EAAE,OAAO,GAAG,QAAO,IAAK;AAC9B,YAAM,EAAE,OAAO,WAAW,GAAG,SAAQ,IAAK;AAC1C,UAAI,CAAC,UAAU,SAAS,QAAQ;AAC9B,eAAO;AACT,gBAAU;AAAA,IACZ;AACA,QAAI,YAAY,QAAQ;AACtB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,SAAS,SAAS,KAAK,SAAS;AAC9B,MAAI,IAAI;AACR,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,MAAI,EAAE,OAAM,IAAK;AACjB,MAAI,UAAU,KAAK,WAAW;AAC5B;AACF,QAAM,eAAe,mBAAmB;AACxC,QAAM,MAAM,YAAY,IAAI,KAAK,MAAM,KAAK,OAAO,qBAAqB,OAAO,KAAK,CAAC;AACrF,QAAM,UAAU,mBAAmB,YAAY,eAAe,KAAK,OAAO;AAC1E,MAAI,OAAO,UAAU,QAAQ,OAAO,OAAO,WAAW,SAAS,KAAK;AAClE,WAAO,QAAQ,QAAQ;AACvB,WAAO,SAAS,SAAS;AACzB,WAAO,MAAM,QAAQ,QAAQ;AAC7B,WAAO,MAAM,SAAS,SAAS;AAAA,EACjC;AACA,QAAM,gBAAgB;AACtB,QAAM,oBAAoB,eAAe,oBAAoB,eAAe;AAC5E,QAAM,gBAAgB,oBAAoB;AAC1C,MAAI,cAAc,UAAU,QAAQ,OAAO,cAAc,WAAW,gBAAgB,KAAK;AACvF,kBAAc,QAAQ,QAAQ;AAC9B,kBAAc,SAAS,gBAAgB;AACvC,kBAAc,MAAM,QAAQ,QAAQ;AACpC,kBAAc,MAAM,SAAS,gBAAgB;AAAA,EAC/C;AACA,MAAI,iBAAiB,QAAQ,UAAU,QAAQ,OAAO,QAAQ,WAAW,SAAS,MAAM;AACtF,YAAQ,QAAQ,QAAQ;AACxB,YAAQ,SAAS,SAAS;AAAA,EAC5B;AACA,MAAI,iBAAiB,QAAQ,UAAU,QAAQ,OAAO,QAAQ,WAAW,SAAS,MAAM;AACtF,YAAQ,QAAQ,QAAQ;AACxB,YAAQ,SAAS,SAAS;AAAA,EAC5B;AACA,QAAM,OAAO,aAAa;AAC1B,MAAI,YAAY,QAAQ,iBAAiB,QAAQ,OAAO,SAAS,KAAK,gBAAgB,iBAAiB,QAAQ,OAAO,SAAS,KAAK,gBAAgB,gBAAgB,QAAQ,OAAO,SAAS,KAAK,eAAe,gBAAgB,QAAQ,OAAO,SAAS,KAAK;AAC3P;AACF,MAAI,UAAU;AACd,MAAI,cAAc;AAChB,cAAU,OAAO,WAAW,MAAM;AAAA,MAChC,OAAO;AAAA,IACb,CAAK;AAAA,EACH;AACA,QAAM,aAAa,cAAc,WAAW,MAAM;AAAA,IAChD,OAAO;AAAA,EACX,CAAG;AACD,MAAI;AACJ,MAAI,CAAC,cAAc;AACjB,mBAAe;AAAA,EACjB,WAAW,WAAW,QAAQ;AAC5B,oBAAgB,QAAQ,OAAO,SAAS,KAAK,gBAAgB,MAAM,UAAU;AAAA,EAC/E,OAAO;AACL,oBAAgB,QAAQ,OAAO,SAAS,KAAK,gBAAgB,MAAM,UAAU;AAAA,EAC/E;AACA,QAAM,YAAY,aAAa,WAAW,MAAM;AAAA,IAC9C,OAAO;AAAA,EACX,CAAG;AACD,QAAM,aAAa,eAAe,iBAAiB,UAAU,UAAU,UAAU;AACjF,MAAI,eAAe,QAAQ,cAAc;AACvC;AACF,QAAM,eAAe,OAAO,cAAc,WAAW,MAAM,YAAY;AACvE,aAAW,KAAI;AACf,aAAW,UAAS;AACpB,YAAU,KAAI;AACd,YAAU,UAAS;AACnB,aAAW,eAAe;AAC1B,YAAU,eAAe;AACzB,MAAI,QAAQ,GAAG;AACb,eAAW,MAAM,KAAK,GAAG;AACzB,cAAU,MAAM,KAAK,GAAG;AAAA,EAC1B;AACA,QAAM,gBAAgB,oBAAoB,eAAe,aAAa,OAAO,kBAAkB,UAAU;AACzG,MAAI,cAAc,CAAA;AAClB,QAAM,wBAAwB,eAAe,KAAK,UAAU,YAAY,OAAO,SAAS,GAAG,KAAK,CAAC,OAAO,eAAe,eAAe;AACtI,QAAM,oBAAoB,MAAM;AAC9B,QAAI,KAAK;AACT;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,eAAW,UAAS;AACpB,eAAW,OAAO,GAAG,gBAAgB,GAAG;AACxC,eAAW,OAAO,OAAO,gBAAgB,GAAG;AAC5C,eAAW,cAAc;AAAA,OACtB,OAAO,MAAM,MAAM,4BAA4B,OAAO,MAAM,MAAM,0BAA0B,OAAO,MAAM,MAAM;AAAA,MAChH,MAAM;AAAA,IACZ;AACI,eAAW,OAAM;AACjB,QAAI,uBAAuB;AACzB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR;AAAA,IACI;AAAA,EACF;AACA,MAAI,WAAW,QAAQ;AACrB,QAAI,YAAY;AAChB,aAAS,OAAO,OAAO,CAAC,MAAM;AAC5B,kBAAY,aAAa,EAAE,CAAC,IAAI;AAChC,aAAO,EAAE,CAAC,IAAI,KAAK,cAAc,aAAa,aAAa,cAAc,QAAQ,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,cAAc,GAAG,aAAa,eAAe,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,mBAAmB,cAAc,aAAa,OAAO,GAAG,cAAc,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;AAAA,IACrR,CAAC;AACD,QAAI,OAAO,SAAS,GAAG;AACrB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR;AACM,gBAAU,YAAY,MAAM;AAC5B,gBAAU,SAAS,GAAG,oBAAoB,GAAG,OAAO,SAAS,oBAAoB,CAAC;AAClF;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR;AACM,UAAI,cAAc,aAAa,UAAU,YAAY,UAAU,OAAO,KAAK,CAAC,MAAM;AAChF,YAAI,KAAK;AACT,eAAO,EAAE,CAAC,QAAQ,MAAM,UAAU,YAAY,OAAO,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,MAAM,UAAU,YAAY,OAAO,SAAS,IAAI,KAAK,CAAC;AAAA,MACjJ,CAAC,GAAG;AACF;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACV;AAAA,MACM;AAAA,IACF;AACA,QAAI,WAAW;AACb;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR;AACM,wBAAiB;AAAA,IACnB;AACA,cAAU,QAAO;AACjB,eAAW,QAAO;AAClB,QAAI,YAAY,MAAM;AACpB,cAAQ,YAAY,MAAM;AAC1B,cAAQ,SAAS,GAAG,GAAG,OAAO,MAAM;AACpC,cAAQ,UAAU,UAAU,QAAQ,GAAG,CAAC;AAAA,IAC1C;AACA;AAAA,EACF;AACA,MAAI,YAAY,QAAQ,iBAAiB,QAAQ,OAAO,SAAS,KAAK,gBAAgB,gBAAgB,QAAQ,OAAO,SAAS,KAAK,eAAe,2BAA2B,QAAQ,OAAO,SAAS,KAAK,wBAAwB;AAChO,sBAAiB;AAAA,EACnB;AACA,MAAI,YAAY,MAAM;AACpB,WAAO,eAAe,UAAU,SAAS,MAAM;AAC/C,UAAM,EAAE,QAAO,IAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,oBAAoB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,kBAAc;AAAA,EAChB,WAAW,YAAY,OAAO;AAC5B,WAAO,SAAS,MAAM;AACtB,UAAM,aAAa;AACnB,kBAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACE;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACE,QAAM,cAAc,YAAY;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,IACpB;AAAA,IACA;AAAA,EACJ;AACE,YAAU,YAAY,MAAM;AAC5B,MAAI,YAAY,SAAS,GAAG;AAC1B,cAAU,UAAS;AACnB,eAAW,KAAK,aAAa;AAC3B,gBAAU,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;AAAA,IAC5C;AACA,cAAU,KAAI;AACd,cAAU,KAAI;AACd,cAAU,UAAS;AAAA,EACrB,OAAO;AACL,cAAU,SAAS,GAAG,GAAG,OAAO,MAAM;AAAA,EACxC;AACA,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACE,iBAAe,OAAO,SAAS,YAAW;AAC1C,qBAAmB,OAAO,SAAS,gBAAe;AAClD,MAAI,YAAY,MAAM;AACpB,YAAQ,YAAY,MAAM;AAC1B,YAAQ,SAAS,GAAG,GAAG,OAAO,MAAM;AACpC,YAAQ,UAAU,UAAU,QAAQ,GAAG,CAAC;AAAA,EAC1C;AACA,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACE,iBAAe,OAAO,SAAS,YAAY;AAAA,IACzC;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO,cAAc;AAAA,MACrB,QAAQ,eAAe;AAAA,IAC7B;AAAA,IACI;AAAA,EACJ;AACE,eAAa,UAAU;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,eAAe,iBAAiB,UAAU,MAAM,MAAM;AAAA,EACtE;AACE,YAAU,QAAO;AACjB,aAAW,QAAO;AACpB;AACA,SAAS,cAAc,UAAU,OAAO,QAAQ,MAAM,cAAc,iBAAiB,IAAI;AACvF,MAAI,IAAI;AACR,MAAI,MAAM;AACV,MAAI,WAAW,oBAAoB;AACnC,SAAO,IAAI,UAAU,UAAU;AAC7B,UAAM,cAAc,YAAY,KAAK;AACrC,QAAI,aAAa;AACf,iBAAW;AACX,YAAM,OAAO;AAAA,IACf;AACA,UAAM,KAAK,aAAa,GAAG;AAC3B,QAAI,aAAa;AACf,UAAI,SAAS;AAAA,IACf;AACA,UAAM,mBAAmB,YAAY,QAAQ,OAAO;AACpD,QAAI,CAAC,oBAAoB,GAAG,GAAG,KAAK,IAAI,aAAa,oBAAoB,UAAU,QAAQ,OAAO,CAAC,MAAM,MAAM;AAC7G;AAAA,IACF;AACA,QAAI,aAAa;AACf;AAAA,IACF;AACA,SAAK;AACL;AAAA,EACF;AACF;AACA,SAAS,YAAY,eAAe,aAAa,YAAY,YAAY,mBAAmB,IAAI;AAC9F,MAAI,IAAI;AACR,MAAI,QAAQ;AACZ,QAAM,QAAQ,oBAAoB;AAClC,aAAW,KAAK,eAAe;AAC7B,UAAM,QAAQ,EAAE,SAAS,QAAQ,IAAI;AACrC,QAAI,GAAG,GAAG,OAAO,OAAO,OAAO,WAAW,MAAM,MAAM;AACpD;AAAA,IACF;AACA,SAAK,EAAE;AACP,aAAS,EAAE,SAAS,EAAE,QAAQ;AAAA,EAChC;AACF;AACA,SAAS,WAAW,eAAe,OAAO,YAAY,mBAAmB,IAAI;AAC3E,MAAI;AACJ,MAAI,IAAI;AACR,MAAI,QAAQ;AACZ,WAAS,QAAQ,GAAG,QAAQ,cAAc,QAAQ,SAAS;AACzD,UAAM,WAAW,cAAc,KAAK;AACpC,QAAI,MAAM,QAAQ;AAClB,QAAI,WAAW,SAAS;AACxB,QAAI,SAAS,QAAQ;AACnB,eAAS;AAAA,IACX;AACA,WAAO,MAAM,cAAc,UAAU,aAAa,cAAc,GAAG,EAAE,OAAO,SAAS,KAAK,KAAK,cAAc,GAAG,EAAE,WAAW,cAAc,KAAK,EAAE,QAAQ;AACxJ,YAAM,SAAS,cAAc,GAAG;AAChC,kBAAY,OAAO;AACnB;AACA;AACA,UAAI,OAAO,QAAQ;AACjB,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF;AACA,UAAM,IAAI,SAAS,SAAS,IAAI;AAChC,UAAM,SAAS,IAAI;AACnB,UAAM,QAAQ,SAAS,SAAS,IAAI,KAAK,IAAI,GAAG,QAAQ,MAAM;AAC9D,UAAM,IAAI,KAAK,IAAI,WAAW,OAAO,SAAS,SAAS,MAAM;AAC7D;AAAA,MACE,CAAC,SAAS,aAAa,cAAc,MAAM,CAAC,EAAE,WAAW;AAAA,OACxD,KAAK,SAAS,UAAU,OAAO,KAAK;AAAA,MACrC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,SAAK;AAAA,EACP;AACF;AAIA,IAAI,YAAY;AAChB,SAAS,aAAa,GAAG;AACvB,QAAM,KAAK,IAAI;AACf,SAAO,KAAK,KAAK,KAAK;AACxB;AACA,IAAI,mBAAmB,MAAM;AAAA,EAC3B,YAAY,UAAU;AACpB,SAAK,qBAAqB;AAC1B,SAAK,eAAe,CAAA;AACpB,SAAK,eAAe,CAAC,MAAM,UAAU;AACnC,cAAQ,QAAQ,OAAO,SAAS,KAAK,CAAC,QAAQ,SAAS,OAAO,SAAS,MAAM,CAAC,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC,QAAQ,SAAS,OAAO,SAAS,MAAM,CAAC;AAAA,IAC7J;AACA,SAAK,oBAAoB,CAAC,SAAS;AACjC,YAAM,mBAAmB,KAAK,aAAa,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;AAC3F,UAAI,kBAAkB;AACpB;AAAA,MACF;AACA,WAAK,aAAa,KAAK,IAAI;AAAA,IAC7B;AAIA,SAAK,yBAAyB,CAAC,SAAS;AACtC,UAAI;AACJ,YAAM,cAAc,KAAK,aAAa,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AACjF,WAAK,eAAe,KAAK,aAAa,OAAO,CAAC,MAAM,MAAM,WAAW;AACrE,cAAQ,KAAK,eAAe,OAAO,SAAS,YAAY,gBAAgB,OAAO,KAAK;AAAA,IACtF;AACA,SAAK,yBAAyB,MAAM;AAClC,WAAK,eAAe,KAAK,aAAa,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC;AAAA,IACvE;AACA,SAAK,aAAa,MAAM;AACtB,YAAM,kBAAkB,KAAK,aAAa,SAAS;AACnD,YAAM,4BAA4B,KAAK,uBAAuB,UAAU,KAAK,mBAAmB,cAAc;AAC9G,aAAO,mBAAmB;AAAA,IAC5B;AACA,SAAK,oBAAoB,MAAM;AAC7B,UAAI,KAAK,uBAAuB,QAAQ;AACtC,eAAO,CAAC,GAAG,KAAK,cAAc,KAAK,kBAAkB;AAAA,MACvD;AACA,aAAO,KAAK,aAAa,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,aAAa,aAAa,EAAE,WAAW,EAAC,EAAG;AAAA,IAC1F;AACA,SAAK,OAAO,CAAC,cAAc;AACzB,UAAI,KAAK,sBAAsB,QAAQ;AACrC,aAAK,oBAAoB;AAAA,MAC3B,OAAO;AACL,cAAM,OAAO,YAAY,KAAK;AAC9B,cAAM,QAAQ,OAAO;AACrB,mBAAW,QAAQ,KAAK,cAAc;AACpC,eAAK,cAAcC,OAAM,KAAK,cAAc,OAAO,GAAG,CAAC;AAAA,QACzD;AACA,YAAI,KAAK,uBAAuB,QAAQ;AACtC,eAAK,mBAAmB,cAAcA,OAAM,KAAK,mBAAmB,cAAc,OAAO,GAAG,CAAC;AAAA,QAC/F;AACA,cAAM,YAAY,KAAK,kBAAiB;AACxC,aAAK,SAAS,SAAS;AACvB,aAAK,uBAAsB;AAAA,MAC7B;AACA,UAAI,KAAK,cAAc;AACrB,aAAK,oBAAoB;AACzB,eAAO,sBAAsB,KAAK,IAAI;AAAA,MACxC,OAAO;AACL,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AACA,SAAK,aAAa,CAAC,SAAS;AAC1B,UAAI;AACJ,UAAI,KAAK,cAAc,KAAK,KAAK,uBAAuB,OAAO,SAAS,GAAG,MAAM,IAAI,GAAG;AACtF;AAAA,MACF;AACA,UAAI,KAAK,uBAAuB,QAAQ;AACtC,aAAK,kBAAkB,KAAK,kBAAkB;AAAA,MAChD;AACA,UAAI,SAAS,QAAQ;AACnB,cAAM,cAAc,KAAK,uBAAuB,IAAI;AACpD,aAAK,qBAAqB;AAAA,UACxB;AAAA,UACA;AAAA,QACV;AAAA,MACM,OAAO;AACL,aAAK,qBAAqB;AAAA,MAC5B;AACA,UAAI,KAAK,sBAAsB,QAAQ;AACrC,eAAO,sBAAsB,KAAK,IAAI;AAAA,MACxC;AAAA,IACF;AACA,SAAK,WAAW;AAAA,EAClB;AACF;AAGA,IAAI,OAAO,MAAM;AAAA,EACf,YAAY,IAAI;AACd,SAAK,KAAK;AAAA,EACZ;AAAA,EACA,IAAI,QAAQ;AACV,QAAI;AACJ,YAAQ,KAAK,KAAK,QAAQ,OAAO,KAAK,KAAK,MAAM,KAAK,GAAE;AAAA,EAC1D;AACF;AACA,SAAS,KAAK,IAAI;AAChB,SAAO,IAAI,KAAK,EAAE;AACpB;AACA,IAAI,mBAAmB,KAAK,MAAM,OAAO,UAAU,UAAU,SAAS,SAAS,CAAC;AAChF,IAAI,kBAAkB;AAAA,EACpB,MAAM,OAAO,UAAU,UAAU,SAAS,QAAQ,KAAK,OAAO,UAAU,UAAU,SAAS,QAAQ,KAAK,CAAC,OAAO,UAAU,UAAU,SAAS,QAAQ;AACvJ;AACA,IAAI,eAAe,KAAK,MAAM,OAAO,UAAU,SAAS,YAAW,EAAG,WAAW,KAAK,CAAC;AAIvF,SAAS,QAAQ,KAAK,MAAM;AAC1B,aAAW,WAAW,KAAK;AACzB,QAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,KAAK,QAAQ,CAAC,MAAM,KAAK,CAAC;AACjD,aAAO;AAAA,EACX;AACA,SAAO;AACT;AACA,SAAS,kBAAkB,MAAM;AAC/B,QAAM,QAAQC,MAAO,OAAO,EAAE;AAC9B,QAAM,MAAMA,MAAO,OAAO,CAAC;AAC3B,QAAM,UAAUA,MAAO,OAAO,IAAI;AAClC,UAAQ,UAAU;AAClB,QAAM,OAAOA,MAAO,YAAY,MAAM;AACpC,UAAM,UAAU,MAAM,OAAO,sBAAsB,EAAE;AACrD,UAAM,KAAK,MAAM;AACf,YAAM,SAAS,MAAM;AACrB,YAAM,UAAU,CAAA;AAChB,cAAQ,QAAQ,MAAM;AACtB,UAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,YAAI;AAAA,MACN,OAAO;AACL,YAAI,UAAU;AAAA,MAChB;AAAA,IACF;AACA,WAAO,sBAAsB,IAAI,UAAU,MAAM,UAAU,EAAE;AAAA,EAC/D,GAAG,CAAA,CAAE;AACL,SAAOA,MAAO;AAAA,IACZ,CAAC,SAAS;AACR,UAAI,QAAQ,MAAM,SAAS,IAAI;AAC7B;AACF,UAAI,MAAM,QAAQ,WAAW,GAAG;AAC9B,aAAI;AAAA,MACN;AACA,YAAM,QAAQ,KAAK,IAAI;AAAA,IACzB;AAAA,IACA,CAAC,IAAI;AAAA,EACT;AACA;AAGA,IAAI,aAAa,CAAC,MAAM,oBAAoB;AAC1C,MAAI;AACJ,MAAI,KAAK,SAAS,aAAa;AAC7B,WAAO,KAAK;AACd,QAAM,IAAI,mBAAmB,OAAO,SAAS,gBAAgB,IAAI;AACjE,UAAQ,KAAK,KAAK,OAAO,SAAS,EAAE,uBAAuB,IAAI,MAAM,OAAO,KAAK;AACnF;AACA,IAAI,WAAW,CAAC,GAAG,iBAAiB;AAClC,MAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAChC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,eAAe;AAAA,IACf,eAAe,iBAAiB;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,cAAc,KAAK,EAAE,eAAe,OAAO,KAAK;AACtD,QAAM,cAAc,KAAK,EAAE,eAAe,OAAO,KAAK;AACtD,QAAM,cAAc,KAAK,IAAI,eAAe,KAAK,IAAI,QAAQ,SAAS,GAAG,eAAe,CAAC;AACzF,QAAM,MAAMC,MAAO,OAAO,IAAI;AAC9B,QAAM,4BAA4BA,MAAO,QAAQ,MAAM,IAAI,4BAA2B,GAAI,EAAE;AAC5F,QAAM,cAAc,qBAAqB,OAAO,oBAAoB;AACpE,QAAM,eAAeA,MAAO,OAAM;AAClC,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAO,SAAS,KAAK;AACvD,QAAM,cAAcA,MAAO,OAAO,EAAE;AACpC,QAAM,eAAeA,MAAO,OAAM;AAClC,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,MAAO,SAAQ;AAC7D,QAAM,CAAC,eAAe,gBAAgB,IAAIA,MAAO,SAAQ;AACzD,QAAM,aAAaA,MAAO,OAAO,IAAI;AACrC,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAO,SAAS,KAAK;AAC7D,QAAM,kBAAkBA,MAAO,OAAO,YAAY;AAClD,kBAAgB,UAAU;AAC1B,QAAM,gBAAgBA,MAAO;AAAA,IAC3B,MAAM,IAAI,cAAc,aAAa,MAAM;AACzC,kBAAY,UAAU;AACtB,kBAAY,QAAO;AAAA,IACrB,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,EAChB;AACE,QAAM,oBAAoB,eAAe,oBAAoB,eAAe;AAC5E,QAAM,mBAAmBA,MAAO,OAAO,EAAE;AACzC,QAAM,2BAA2B,gBAAgB,OAAO,SAAS,aAAa,4BAA4B;AAC1GA,QAAO,gBAAgB,MAAM;AAC3B,QAAI,CAAC,iBAAiB,SAAS,OAAO,qBAAqB,KAAK;AAC9D;AACF,QAAI,iBAAiB,YAAY,IAAI;AACnC,mBAAa,IAAI;AAAA,IACnB;AACA,WAAO,aAAa,iBAAiB,OAAO;AAC5C,qBAAiB,UAAU,OAAO,WAAW,MAAM;AACjD,mBAAa,KAAK;AAClB,uBAAiB,UAAU;AAAA,IAC7B,GAAG,GAAG;AAAA,EACR,GAAG,CAAC,aAAa,aAAa,YAAY,YAAY,uBAAuB,CAAC;AAC9E,QAAM,gBAAgB,iBAAiB,SAAS,aAAa;AAC7D,QAAM,mBAAmBA,MAAO;AAAA,IAC9B,CAAC,QAAQ,KAAK,QAAQ;AACpB,YAAM,OAAO,OAAO,sBAAqB;AACzC,UAAI,OAAO,cAAc,UAAU,OAAO,MAAM;AAC9C,eAAO;AAAA,MACT;AACA,YAAM,QAAQ,KAAK,QAAQ;AAC3B,YAAM,SAAS;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,oBAAoB;AAAA,QACpB;AAAA,QACA;AAAA,MACR;AACM,UAAI,UAAU,GAAG;AACf,eAAO,KAAK;AACZ,eAAO,KAAK;AACZ,eAAO,SAAS;AAChB,eAAO,UAAU;AAAA,MACnB;AACA,aAAO,KAAK,KAAK;AACjB,aAAO,KAAK,KAAK;AACjB,aAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,0BAA0BA,MAAO;AAAA,IACrC,CAAC,QAAQ,MAAM,MAAM,OAAO;AAC1B,UAAI,KAAK;AACT,YAAM,OAAO,OAAO,sBAAqB;AACzC,YAAM,QAAQ,KAAK,QAAQ;AAC3B,YAAM,KAAK,OAAO,KAAK,QAAQ;AAC/B,YAAM,KAAK,OAAO,KAAK,OAAO;AAC9B,YAAM,sBAAsB;AAC5B,YAAM,gBAAgB,oBAAoB,eAAe,aAAa,OAAO,QAAQ,UAAU;AAC/F,UAAI,SAAS;AACb,UAAI,cAAc,YAAY;AAC5B,iBAAS,GAAG;AAAA,MACd;AACA,YAAM,MAAM,mBAAmB,GAAG,eAAe,UAAU;AAC3D,YAAM,MAAM;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,oBAAoB;AAAA,MAC5B;AACM,YAAM,YAAY,MAAM,OAAO,SAAS,GAAG,cAAc;AACzD,YAAM,WAAW,MAAM,OAAO,SAAS,GAAG,aAAa;AACvD,YAAM,WAAW,MAAM,OAAO,SAAS,GAAG,aAAa;AACvD,YAAM,UAAU,OAAO,UAAU,EAAE,cAAc,gBAAgB,MAAM,OAAO,SAAS,GAAG,iBAAiB;AAC3G,YAAM,WAAW;AACjB,YAAM,aAAa;AAAA,QACjB,KAAK,IAAI,CAAC,IAAI,WAAW,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC,IAAI,WAAW,IAAI;AAAA,QACxE,KAAK,IAAI,CAAC,IAAI,WAAW,KAAK,KAAK,IAAI,KAAK,SAAS,CAAC,IAAI,WAAW,IAAI;AAAA,MACjF;AACM,UAAI;AACJ,UAAI,QAAQ,MAAM,IAAI,KAAK,IAAI,KAAK,QAAQ,UAAU,IAAI,SAAS,IAAI,QAAQ;AAC7E,cAAM,aAAa,IAAI,QAAQ,KAAK,IAAI,IAAI,IAAI;AAChD,cAAM,WAAW,IAAI,SAAS,IAAI,IAAI,IAAI,KAAK;AAC/C,YAAI,SAAS;AACb,YAAI,QAAQ,MAAM,QAAQ,IAAI;AAC5B,gBAAM,IAAI,iBAAiB,QAAQ,cAAc,SAAS,GAAG,EAAE;AAC/D,iBAAO,MAAM,MAAM;AACnB,mBAAS,OAAO,EAAE,IAAI,EAAE,QAAQ;AAAA,QAClC;AACA,cAAM,mBAAmB,IAAI,SAAS,IAAI,QAAQ,kBAAiB,KAAM,IAAI,UAAU,IAAI,SAAS,kBAAiB;AACrH,iBAAS;AAAA,UACP,MAAM;AAAA,UACN,UAAU,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,cAAc,SAAS,GAAG,OAAO,OAAO,MAAM,OAAO,CAAC;AAAA,UAChG,WAAW,CAAC,YAAY,QAAQ;AAAA,UAChC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACV;AAAA,MACM,WAAW,OAAO,IAAI;AACpB,YAAI,SAAS,iBAAiB,QAAQ,KAAK,GAAG;AAC9C,eAAO,WAAW,MAAM;AACxB,YAAI,SAAS,WAAW,UAAU,OAAO,IAAI,OAAO,QAAQ,QAAQ;AACpE,cAAM,cAAc,MAAM;AAC1B,YAAI,OAAO,OAAO,KAAK,uBAAuB,eAAe,GAAG;AAC9D,mBAAS;AACT,mBAAS,iBAAiB,QAAQ,aAAa,GAAG;AAClD,iBAAO,WAAW,MAAM;AACxB,mBAAS;AAAA,YACP,MAAM,gBAAgB,QAAQ,KAAK,kBAAkB;AAAA,YACrD,UAAU,CAAC,aAAa,GAAG;AAAA,YAC3B;AAAA,YACA,QAAQ,MAAM,cAAc,WAAW,EAAE,UAAU,OAAO,MAAM;AAAA,YAChE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,aAAa,OAAO,OAAO;AAAA,YAC3B,aAAa,OAAO,OAAO;AAAA,YAC3B;AAAA,YACA;AAAA,UACZ;AAAA,QACQ,OAAO;AACL,mBAAS;AAAA,YACP,MAAM,gBAAgB,QAAQ,KAAK,kBAAkB;AAAA,YACrD,QAAQ,MAAM,cAAc,GAAG,EAAE,UAAU,OAAO,MAAM;AAAA,YACxD,UAAU,CAAC,KAAK,GAAG;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,aAAa,OAAO,OAAO;AAAA,YAC3B,aAAa,OAAO,OAAO;AAAA,YAC3B;AAAA,YACA;AAAA,UACZ;AAAA,QACQ;AAAA,MACF,OAAO;AACL,cAAM,SAAS,iBAAiB,QAAQ,KAAK,GAAG;AAChD,eAAO,WAAW,MAAM;AACxB,cAAM,SAAS,WAAW,UAAU,OAAO,IAAI,OAAO,QAAQ,OAAO;AACrE,cAAM,eAAe,cAAc,WAAW,UAAU,OAAO,IAAI,OAAO,QAAQ,OAAO,KAAK,OAAO,IAAI,OAAO,SAAS,OAAO;AAChI,iBAAS;AAAA,UACP,MAAM;AAAA,UACN,UAAU,CAAC,KAAK,GAAG;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,aAAa,OAAO,OAAO;AAAA,UAC3B,aAAa,OAAO,OAAO;AAAA,UAC3B;AAAA,UACA;AAAA,QACV;AAAA,MACM;AACA,aAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,WAAS,WAAW,MAAM,OAAO;AAC/B,QAAI,SAAS;AACX,aAAO;AACT,YAAQ,QAAQ,OAAO,SAAS,KAAK,WAAW,SAAS,OAAO,SAAS,MAAM,UAAU,QAAQ,OAAO,SAAS,KAAK,SAAS,CAAC,QAAQ,SAAS,OAAO,SAAS,MAAM,SAAS,CAAC,OAAO,QAAQ,OAAO,SAAS,KAAK,SAAS,CAAC,QAAQ,SAAS,OAAO,SAAS,MAAM,SAAS,CAAC;AAAA,EAClR;AACA,QAAM,CAAC,WAAW,IAAI,mBAAmB,OAAO,kBAAkB,CAAA;AAClE,QAAM,aAAaA,MAAO,OAAO,CAAC,UAAU;AAAA,EAC5C,CAAC;AACD,QAAM,eAAeA,MAAO,OAAO,eAAe;AAClD,eAAa,UAAU;AACvB,QAAM,CAAC,SAAS,OAAO,IAAIA,MAAO,QAAQ,MAAM;AAC9C,UAAM,IAAI,SAAS,cAAc,QAAQ;AACzC,UAAM,IAAI,SAAS,cAAc,QAAQ;AACzC,MAAE,MAAM,SAAS,IAAI;AACrB,MAAE,MAAM,SAAS,IAAI;AACrB,MAAE,MAAM,UAAU,IAAI;AACtB,MAAE,MAAM,SAAS,IAAI;AACrB,MAAE,MAAM,SAAS,IAAI;AACrB,MAAE,MAAM,UAAU,IAAI;AACtB,WAAO,CAAC,GAAG,CAAC;AAAA,EACd,GAAG,CAAA,CAAE;AACLA,QAAO,gBAAgB,MAAM;AAC3B,aAAS,gBAAgB,OAAO,OAAO;AACvC,aAAS,gBAAgB,OAAO,OAAO;AACvC,WAAO,MAAM;AACX,cAAQ,OAAM;AACd,cAAQ,OAAM;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,SAAS,OAAO,CAAC;AACrB,QAAM,cAAcA,MAAO,OAAM;AACjC,QAAM,OAAOA,MAAO,YAAY,MAAM;AACpC,QAAI,KAAK;AACT,UAAM,SAAS,IAAI;AACnB,UAAM,UAAU,WAAW;AAC3B,QAAI,WAAW,QAAQ,YAAY;AACjC;AACF,UAAM,OAAO,YAAY;AACzB,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,KAAK,MAAM,UAAU;AAAA,MACjC,YAAY,KAAK,MAAM,UAAU;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,gBAAgB,OAAO,eAAe,iBAAiB,MAAK;AAAA,MAC1E;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA,iBAAiB,mBAAmB,OAAO,kBAAkB,CAAC,UAAU,EAAE;MAC1E;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,aAAa;AAAA,MACrB,aAAa,YAAY;AAAA,MACzB,WAAW,aAAa;AAAA,MACxB;AAAA,MACA;AAAA,MACA,gBAAgB,MAAM,gBAAgB,OAAO,SAAS,aAAa,kBAAkB,OAAO,MAAM;AAAA,MAClG,WAAW;AAAA,MACX,SAAS,WAAW;AAAA,MACpB,iBAAiB,MAAM,gBAAgB,OAAO,SAAS,aAAa,mBAAmB,OAAO,MAAM,gBAAgB,QAAQ,kBAAkB;AAAA,MAC9I;AAAA,IACN;AACI,QAAI,QAAQ,WAAW,QAAQ;AAC7B,kBAAY,UAAU;AACtB,eAAS,SAAS,IAAI;AAAA,IACxB,OAAO;AACL,eAAS,SAAS,MAAM;AAAA,IAC1B;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,OAAO,SAAS,aAAa;AAAA,IAC7C,gBAAgB,OAAO,SAAS,aAAa;AAAA,IAC7C;AAAA,IACA;AAAA,EACJ,CAAG;AACD,QAAM,cAAcA,MAAO,OAAO,IAAI;AACtCA,QAAO,gBAAgB,MAAM;AAC3B,SAAI;AACJ,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,IAAI,CAAC;AACTA,QAAO,gBAAgB,MAAM;AAC3B,UAAM,KAAK,YAAY;AACrB,UAAI;AACJ,YAAM,MAAM,YAAY,OAAO,SAAS,SAAS,UAAU,OAAO,SAAS,IAAI,WAAW;AACxF;AACF,YAAM,SAAS,MAAM;AACrB,kBAAY,UAAU;AACtB,kBAAY,QAAO;AAAA,IACrB;AACA,SAAK,GAAE;AAAA,EACT,GAAG,CAAA,CAAE;AACL,QAAM,iBAAiBA,MAAO,YAAY,CAAC,cAAc;AACvD,iBAAa,UAAU;AACvB,gBAAY,QAAO;AACnB,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAA,CAAE;AACL,QAAM,UAAU,kBAAkB,cAAc;AAChD,aAAW,UAAU;AACrB,QAAM,SAASA,MAAO;AAAA,IACpB,CAAC,UAAU;AACT,qBAAe,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAAA,IACzC;AAAA,IACA,CAAC,cAAc;AAAA,EACnB;AACE,cAAY,YAAY,cAAc;AACtC,QAAM,CAAC,UAAU,WAAW,IAAIA,MAAO,SAAS,KAAK;AACrD,QAAM,CAAC,MAAM,IAAI,IAAI,eAAe,OAAO,cAAc,CAAA;AACzD,QAAM,gBAAgB,SAAS,UAAU,SAAS;AAClD,QAAM,qBAAqB,SAAS,UAAU,SAAS;AACvD,MAAI,4BAA4B;AAChC,MAAI,sBAAsB;AAC1B,MAAI;AACJ,MAAI,SAAS,UAAU,SAAS,UAAU,OAAO,IAAI;AACnD,UAAM,OAAO,eAAe,CAAC,MAAM,IAAI,GAAG,IAAI;AAC9C,gCAA4B,KAAK,SAAS,kBAAkB,UAAU,KAAK,SAAS,kBAAkB,UAAU,KAAK,eAAe;AACpI,0BAAsB,KAAK,SAAS,aAAa,WAAW,sBAAsB,IAAI;AACtF,qBAAiB,KAAK;AAAA,EACxB;AACA,QAAM,UAAU,iBAAiB,OAAO,gBAAgB;AACxD,QAAM,SAAS,aAAa,aAAa,WAAW,aAAa,eAAe,YAAY,YAAY,cAAc,mBAAmB,SAAS,iBAAiB,iBAAiB,6BAA6B,uBAAuB,qBAAqB,YAAY;AACzQ,QAAM,QAAQA,MAAO;AAAA,IACnB,OAAO;AAAA;AAAA;AAAA,MAGL,SAAS;AAAA,MACT,SAAS;AAAA,MACT;AAAA,IACN;AAAA,IACI,CAAC,MAAM;AAAA,EACX;AACE,QAAM,gBAAgBA,MAAO,OAAO,SAAS;AAC7C,QAAM,SAAS,kBAAkB,OAAO,SAAS,eAAe;AAChE,MAAI,WAAW,QAAQ,WAAW,UAAU,cAAc,YAAY,MAAM,QAAQ;AAClF,WAAO,MAAM,SAAS,cAAc,UAAU,MAAM;AAAA,EACtD;AACA,QAAM,4BAA4BA,MAAO;AAAA,IACvC,CAAC,OAAO,QAAQ,aAAa,gBAAgB;AAC3C,UAAI,oBAAoB;AACtB,eAAO;AACT,YAAM,YAAY,gBAAgB,KAAK;AACvC,UAAI,UAAU,YAAY,QAAQ;AAChC,cAAM,QAAQ,wBAAwB,QAAQ,UAAU,OAAO;AAC/D,mBAAW,CAAC,GAAG,GAAG,KAAK,MAAM,QAAO,GAAI;AACtC,cAAI,YAAY,KAAK,cAAc,OAAO,GAAG,cAAc,IAAI,CAAC,GAAG;AACjE,mBAAO,UAAU,QAAQ,CAAC;AAAA,UAC5B;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,eAAe;AAAA,EACpB;AACE,QAAM,mBAAmBA,MAAO;AAAA,IAC9B,CAAC,QAAQ,KAAK,SAAS,YAAY;AACjC,YAAM,SAAS,QAAQ,GAAG;AAC1B,UAAI,CAAC,cAAc,CAAC,cAAc,OAAO,YAAY,QAAQ,EAAE,iBAAiB,OAAO,gBAAgB,QAAQ;AAC7G,cAAM,eAAe,iBAAiB,QAAQ,KAAK,EAAE;AACrD,eAAO,iBAAiB,MAAM;AAC9B,cAAM,aAAa;AAAA,UACjB,aAAa;AAAA,UACb,aAAa;AAAA,UACb,aAAa;AAAA,UACb,aAAa;AAAA,UACb,UAAU,OAAO,KAAK,MAAM;AAAA,QACtC;AACQ,YAAI,UAAU,WAAW,KAAK,UAAU,WAAW,IAAI,WAAW,SAAS,UAAU,WAAW,KAAK,UAAU,WAAW,IAAI,WAAW,QAAQ;AAC/I,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,SAAS,kBAAkB,eAAe,YAAY,UAAU;AAAA,EACrE;AACE,QAAM,WAAWA,MAAO,OAAO,CAAC;AAChC,QAAM,eAAeA,MAAO,OAAM;AAClC,QAAM,YAAYA,MAAO,OAAO,KAAK;AACrC,QAAM,kBAAkBA,MAAO;AAAA,IAC7B,CAAC,OAAO;AACN,YAAM,SAAS,IAAI;AACnB,YAAM,cAAc,kBAAkB,OAAO,SAAS,eAAe;AACrE,UAAI,WAAW,QAAQ,GAAG,WAAW,UAAU,GAAG,WAAW;AAC3D;AACF,gBAAU,UAAU;AACpB,UAAI;AACJ,UAAI;AACJ,UAAI,cAAc,YAAY;AAC5B,kBAAU,GAAG;AACb,kBAAU,GAAG;AAAA,MACf,OAAO;AACL,kBAAU,GAAG,QAAQ,CAAC,EAAE;AACxB,kBAAU,GAAG,QAAQ,CAAC,EAAE;AAAA,MAC1B;AACA,UAAI,GAAG,WAAW,eAAe,gBAAgB,MAAM;AACrD,cAAM,SAAS,YAAY,sBAAqB;AAChD,YAAI,UAAU,OAAO,SAAS,UAAU,OAAO;AAC7C;AAAA,MACJ;AACA,YAAM,OAAO,wBAAwB,QAAQ,SAAS,SAAS,EAAE;AACjE,mBAAa,UAAU,KAAK;AAC5B,UAAI,KAAK,SAAS;AAChB,iBAAS,UAAU,KAAK,IAAG;AAAA,MAC7B;AACA,UAAI,gBAAgB,YAAY,KAAK,SAAS;AAC5C,wBAAgB,KAAK,OAAO;AAAA,MAC9B;AACA,UAAI,KAAK,SAAS,cAAc,iBAAiB,QAAQ,KAAK,SAAS,CAAC,GAAG,SAAS,OAAO,MAAM,QAAQ;AACvG;AAAA,MACF,WAAW,KAAK,SAAS,iBAAiB;AACxC,cAAM,SAAS,0BAA0B,KAAK,OAAO,KAAK,QAAQ,KAAK,aAAa,KAAK,WAAW;AACpG,YAAI,WAAW,QAAQ;AACrB;AAAA,QACF;AAAA,MACF;AACA,qBAAe,OAAO,SAAS,YAAY,IAAI;AAC/C,UAAI,CAAC,KAAK,WAAW,gBAAgB,QAAQ,gBAAgB,KAAK,MAAM;AACtE,WAAG,eAAc;AAAA,MACnB;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,aAAa,yBAAyB,2BAA2B,kBAAkB,WAAW;AAAA,EACnH;AACE,mBAAiB,cAAc,iBAAiB,QAAQ,KAAK;AAC7D,mBAAiB,aAAa,iBAAiB,QAAQ,KAAK;AAC5D,QAAM,gBAAgBA,MAAO;AAAA,IAC3B,CAAC,OAAO;AACN,UAAI,KAAK;AACT,YAAM,SAAS,IAAI;AACnB,gBAAU,UAAU;AACpB,UAAI,cAAc,UAAU,WAAW;AACrC;AACF,YAAM,cAAc,kBAAkB,OAAO,SAAS,eAAe;AACrE,YAAM,YAAY,GAAG,WAAW,UAAU,GAAG,WAAW;AACxD,UAAI;AACJ,UAAI;AACJ,UAAI,cAAc,YAAY;AAC5B,kBAAU,GAAG;AACb,kBAAU,GAAG;AACb,YAAI,GAAG,gBAAgB,SAAS;AAC9B;AAAA,QACF;AAAA,MACF,OAAO;AACL,kBAAU,GAAG,eAAe,CAAC,EAAE;AAC/B,kBAAU,GAAG,eAAe,CAAC,EAAE;AAAA,MACjC;AACA,UAAI,OAAO,wBAAwB,QAAQ,SAAS,SAAS,EAAE;AAC/D,UAAI,KAAK,WAAW,SAAS,YAAY,KAAK,KAAK,IAAG,IAAK,SAAS,UAAU,KAAK;AACjF,eAAO;AAAA,UACL,GAAG;AAAA,UACH,aAAa;AAAA,QACvB;AAAA,MACM;AACA,UAAI,gBAAgB,YAAY,KAAK,SAAS;AAC5C,wBAAgB,KAAK,OAAO;AAAA,MAC9B;AACA,UAAI,CAAC,aAAa,GAAG,YAAY;AAC/B,WAAG,eAAc;AAAA,MACnB;AACA,YAAM,CAAC,GAAG,IAAI,KAAK;AACnB,YAAM,eAAe,iBAAiB,QAAQ,KAAK,SAAS,OAAO;AACnE,UAAI,KAAK,SAAS,cAAc,iBAAiB,QAAQ;AACvD,YAAI,KAAK,WAAW,OAAO,MAAM,aAAa,YAAY,OAAO,SAAS,IAAI,CAAC,OAAO,SAAS,MAAM,aAAa,YAAY,OAAO,SAAS,IAAI,CAAC,OAAO,IAAI;AAC5J,oBAAU,MAAM,IAAI;AAAA,QACtB;AACA;AAAA,MACF,WAAW,KAAK,SAAS,iBAAiB;AACxC,cAAM,SAAS,0BAA0B,KAAK,OAAO,KAAK,QAAQ,KAAK,aAAa,KAAK,WAAW;AACpG,YAAI,WAAW,QAAQ;AACrB,cAAI,KAAK,WAAW,GAAG;AACrB,mBAAO,QAAQ,IAAI;AAAA,UACrB;AACA;AAAA,QACF;AAAA,MACF;AACA,gBAAU,MAAM,SAAS;AAAA,IAC3B;AAAA,IACA,CAAC,WAAW,gBAAgB,yBAAyB,kBAAkB,yBAAyB;AAAA,EACpG;AACE,mBAAiB,WAAW,eAAe,QAAQ,KAAK;AACxD,mBAAiB,YAAY,eAAe,QAAQ,KAAK;AACzD,QAAM,cAAcA,MAAO;AAAA,IACzB,CAAC,OAAO;AACN,UAAI,KAAK;AACT,YAAM,SAAS,IAAI;AACnB,UAAI,WAAW;AACb;AACF,YAAM,cAAc,kBAAkB,OAAO,SAAS,eAAe;AACrE,YAAM,YAAY,GAAG,WAAW,UAAU,GAAG,WAAW;AACxD,UAAI;AACJ,UAAI;AACJ,UAAI,cAAc,YAAY;AAC5B,kBAAU,GAAG;AACb,kBAAU,GAAG;AAAA,MACf,OAAO;AACL,kBAAU,GAAG,eAAe,CAAC,EAAE;AAC/B,kBAAU,GAAG,eAAe,CAAC,EAAE;AAAA,MACjC;AACA,YAAM,OAAO,wBAAwB,QAAQ,SAAS,SAAS,EAAE;AACjE,UAAI,gBAAgB,YAAY,KAAK,SAAS;AAC5C,wBAAgB,KAAK,OAAO;AAAA,MAC9B;AACA,UAAI,CAAC,aAAa,GAAG,YAAY;AAC/B,WAAG,eAAc;AAAA,MACnB;AACA,YAAM,CAAC,GAAG,IAAI,KAAK;AACnB,YAAM,eAAe,iBAAiB,QAAQ,KAAK,SAAS,OAAO;AACnE,UAAI,KAAK,SAAS,cAAc,iBAAiB,QAAQ;AACvD,YAAI,KAAK,WAAW,OAAO,MAAM,aAAa,YAAY,OAAO,SAAS,IAAI,CAAC,OAAO,SAAS,MAAM,aAAa,YAAY,OAAO,SAAS,IAAI,CAAC,OAAO,IAAI;AAC5J,+BAAqB,OAAO,SAAS,kBAAkB,KAAK,YAAY;AAAA,QAC1E;AAAA,MACF,WAAW,KAAK,SAAS,iBAAiB;AACxC,cAAM,SAAS,0BAA0B,KAAK,OAAO,KAAK,QAAQ,KAAK,aAAa,KAAK,WAAW;AACpG,YAAI,WAAW,UAAU,KAAK,WAAW,GAAG;AAC1C,iBAAO,QAAQ,IAAI;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,yBAAyB,kBAAkB,mBAAmB,yBAAyB;AAAA,EAC5G;AACE,mBAAiB,SAAS,aAAa,QAAQ,KAAK;AACpD,QAAM,oBAAoBA,MAAO;AAAA,IAC/B,CAAC,OAAO;AACN,YAAM,SAAS,IAAI;AACnB,UAAI,WAAW,QAAQ,kBAAkB;AACvC;AACF,YAAM,OAAO,wBAAwB,QAAQ,GAAG,SAAS,GAAG,SAAS,EAAE;AACvE,oBAAc,MAAM,MAAM;AACxB,YAAI,GAAG;AACL,aAAG,eAAc;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,IACA,CAAC,yBAAyB,aAAa;AAAA,EAC3C;AACE,mBAAiB,eAAe,oBAAoB,KAAK,kBAAkB,OAAO,SAAS,eAAe,YAAY,OAAO,KAAK,MAAM,KAAK;AAC7I,QAAM,mBAAmBA,MAAO,YAAY,CAAC,WAAW;AACtD,iBAAa,UAAU,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI;AAC/C,gBAAY,UAAU;AACtB,gBAAY,QAAO;AACnB,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAA,CAAE;AACL,QAAM,mBAAmBA,MAAO,QAAQ,MAAM,IAAI,iBAAiB,gBAAgB,GAAG,CAAC,gBAAgB,CAAC;AACxG,QAAM,mBAAmBA,MAAO,OAAO,gBAAgB;AACvD,mBAAiB,UAAU;AAC3BA,QAAO,gBAAgB,MAAM;AAC3B,UAAM,KAAK,iBAAiB;AAC5B,QAAI,gBAAgB,UAAU,YAAY,CAAC,IAAI,GAAG;AAChD,SAAG,WAAW,WAAW;AACzB;AAAA,IACF;AACA,UAAM,OAAO,eAAe,WAAW;AACvC,UAAM,IAAI,gBAAgB,IAAI;AAC9B,OAAG;AAAA,MACD,MAAM,UAAU,KAAK,SAAS,aAAa,WAAW,KAAK,OAAO,SAAS,EAAE,gBAAgB,OAAO,cAAc;AAAA,IACxH;AAAA,EACE,GAAG,CAAC,gBAAgB,iBAAiB,WAAW,CAAC;AACjD,QAAM,aAAaA,MAAO,OAAM;AAChC,QAAM,kBAAkBA,MAAO;AAAA,IAC7B,CAAC,OAAO;AACN,UAAI;AACJ,YAAM,SAAS,IAAI;AACnB,UAAI,WAAW;AACb;AACF,YAAM,cAAc,kBAAkB,OAAO,SAAS,eAAe;AACrE,YAAM,aAAa,GAAG,WAAW,UAAU,GAAG,WAAW;AACzD,YAAM,OAAO,wBAAwB,QAAQ,GAAG,SAAS,GAAG,SAAS,EAAE;AACvE,UAAI,KAAK,SAAS,mBAAmB,cAAc,CAAC,UAAU,WAAW,CAAC,KAAK,SAAS;AACtF;AAAA,MACF;AACA,UAAI,CAAC,WAAW,MAAM,WAAW,OAAO,GAAG;AACzC,yBAAiB,OAAO,SAAS,cAAc,IAAI;AACnD;AAAA,UACE,KAAK,SAAS,kBAAkB,SAAS,CAAC,KAAK,UAAU,CAAC,KAAK,aAAa,KAAK,WAAW,CAAC;AAAA,QACvG;AACQ,mBAAW,UAAU;AAAA,MACvB,WAAW,KAAK,SAAS,UAAU,KAAK,SAAS,cAAc,KAAK,SAAS,iBAAiB;AAC5F,cAAM,UAAU,CAAC,KAAK,UAAU,CAAC,KAAK,aAAa,KAAK,WAAW,CAAC;AACpE,2BAAmB,OAAO;AAC1B,qBAAa,UAAU;AACvB,YAAI,KAAK,SAAS,QAAQ;AACxB,gBAAM,UAAU,eAAe,KAAK,QAAQ;AAC5C,cAAI,QAAQ,SAAS,aAAa,YAAY,MAAM,gBAAgB,OAAO,MAAM,OAAO,SAAS,IAAI,wBAAwB,MAAM;AACjI,2BAAe,CAAC,KAAK,QAAQ,CAAC;AAAA,UAChC;AAAA,QACF,WAAW,KAAK,SAAS,iBAAiB;AACxC,yBAAe,CAAC,KAAK,QAAQ,CAAC;AAAA,QAChC;AAAA,MACF;AACA,YAAM,kBAAkB,KAAK,SAAS,CAAC,MAAM,qBAAqB,IAAI;AACtE,uBAAiB,KAAK,SAAS,cAAc,KAAK,UAAU,mBAAmB,gBAAgB,IAAI;AACnG,UAAI,cAAc,UAAU,YAAY,QAAQ;AAC9C,cAAM,CAAC,KAAK,GAAG,IAAI,UAAU,QAAQ;AACrC,cAAM,KAAK,iBAAiB,QAAQ,KAAK,GAAG;AAC5C,cAAM,IAAI,GAAG;AACb,cAAM,IAAI,GAAG;AACb,eAAO,OAAO,MAAM;AACpB;AAAA,UACE,KAAK,GAAG,IAAI,GAAG,QAAQ,KAAK,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,KAAK,GAAG,IAAI,GAAG;AAAA,QAC1G;AAAA,MACM,OAAO;AACL,oBAAY,KAAK;AAAA,MACnB;AACA,wBAAkB,OAAO,SAAS,eAAe,EAAE;AACnD,kBAAY,IAAI;AAAA,IAClB;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,mBAAiB,aAAa,iBAAiB,QAAQ,IAAI;AAC3D,QAAM,gBAAgBA,MAAO;AAAA,IAC3B,CAAC,UAAU;AACT,YAAM,SAAS,IAAI;AACnB,UAAI,WAAW;AACb;AACF,UAAI;AACJ,UAAI,WAAW;AACf,UAAI,UAAU,YAAY,QAAQ;AAChC,iBAAS,iBAAiB,QAAQ,UAAU,QAAQ,KAAK,CAAC,GAAG,UAAU,QAAQ,KAAK,CAAC,CAAC;AACtF,mBAAW,UAAU,QAAQ;AAAA,MAC/B;AACA,mBAAa,OAAO,SAAS,UAAU;AAAA,QACrC;AAAA,QACA,iBAAiB,MAAM,MAAM,gBAAe;AAAA,QAC5C,gBAAgB,MAAM,MAAM,eAAc;AAAA,QAC1C,QAAQ,MAAM;AAAA,QACd,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,UAAU,MAAM;AAAA,QAChB,QAAQ,MAAM;AAAA,QACd,KAAK,MAAM;AAAA,QACX,SAAS,MAAM;AAAA,QACf,UAAU;AAAA,QACV;AAAA,MACR,CAAO;AAAA,IACH;AAAA,IACA,CAAC,WAAW,WAAW,gBAAgB;AAAA,EAC3C;AACE,QAAM,cAAcA,MAAO;AAAA,IACzB,CAAC,UAAU;AACT,YAAM,SAAS,IAAI;AACnB,UAAI,WAAW;AACb;AACF,UAAI;AACJ,UAAI,WAAW;AACf,UAAI,UAAU,YAAY,QAAQ;AAChC,iBAAS,iBAAiB,QAAQ,UAAU,QAAQ,KAAK,CAAC,GAAG,UAAU,QAAQ,KAAK,CAAC,CAAC;AACtF,mBAAW,UAAU,QAAQ;AAAA,MAC/B;AACA,iBAAW,OAAO,SAAS,QAAQ;AAAA,QACjC;AAAA,QACA,iBAAiB,MAAM,MAAM,gBAAe;AAAA,QAC5C,gBAAgB,MAAM,MAAM,eAAc;AAAA,QAC1C,QAAQ,MAAM;AAAA,QACd,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,UAAU,MAAM;AAAA,QAChB,QAAQ,MAAM;AAAA,QACd,KAAK,MAAM;AAAA,QACX,SAAS,MAAM;AAAA,QACf,UAAU;AAAA,QACV;AAAA,MACR,CAAO;AAAA,IACH;AAAA,IACA,CAAC,SAAS,WAAW,gBAAgB;AAAA,EACzC;AACE,QAAM,UAAUA,MAAO;AAAA,IACrB,CAAC,aAAa;AACZ,UAAI,UAAU;AACd,UAAI,cAAc,QAAQ;AACxB,kBAAU,UAAU;AAAA,MACtB;AAAA,IACF;AAAA,IACA,CAAC,SAAS;AAAA,EACd;AACE,QAAM,kBAAkBA,MAAO;AAAA,IAC7B,CAAC,UAAU;AACT,UAAI;AACJ,YAAM,SAAS,IAAI;AACnB,UAAI,WAAW,QAAQ,gBAAgB,SAAS,YAAY;AAC1D,cAAM,eAAc;AACpB;AAAA,MACF;AACA,UAAI;AACJ,UAAI;AACJ,YAAM,OAAO,wBAAwB,QAAQ,MAAM,SAAS,MAAM,OAAO;AACzE,UAAI,gBAAgB,QAAQ,KAAK,SAAS,aAAa;AACrD,cAAM,eAAc;AACpB;AAAA,MACF;AACA,YAAM,UAAU,CAAC,MAAM,YAAY;AACjC,mBAAW;AACX,mBAAW;AAAA,MACb;AACA,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,YAAM,eAAe,CAAC,OAAO,GAAG,MAAM;AACpC,oBAAY;AACZ,qBAAa;AACb,qBAAa;AAAA,MACf;AACA,UAAI,YAAY;AAChB,qBAAe,OAAO,SAAS,YAAY;AAAA,QACzC,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA,gBAAgB,MAAM,YAAY;AAAA,QAClC,kBAAkB,MAAM;AAAA,MAChC,CAAO;AACD,UAAI,CAAC,aAAa,aAAa,UAAU,aAAa,UAAU,MAAM,iBAAiB,MAAM;AAC3F,cAAM,aAAa,QAAQ,UAAU,QAAQ;AAC7C,cAAM,aAAa,gBAAgB;AACnC,YAAI,cAAc,UAAU,eAAe,UAAU,eAAe,QAAQ;AAC1E,gBAAM,aAAa,aAAa,WAAW,YAAY,UAAU;AAAA,QACnE,OAAO;AACL,gBAAM,CAAC,KAAK,GAAG,IAAI,KAAK;AACxB,cAAI,QAAQ,QAAQ;AAClB,kBAAM,YAAY,SAAS,cAAc,QAAQ;AACjD,kBAAM,sBAAsB,iBAAiB,QAAQ,KAAK,GAAG;AAC7D,mBAAO,wBAAwB,MAAM;AACrC,kBAAM,MAAM,KAAK,MAAM,MAAM,OAAO,qBAAqB,OAAO,MAAM,CAAC;AACvE,sBAAU,QAAQ,oBAAoB,QAAQ;AAC9C,sBAAU,SAAS,oBAAoB,SAAS;AAChD,kBAAM,MAAM,UAAU,WAAW,IAAI;AACrC,gBAAI,QAAQ,MAAM;AAChB,kBAAI,MAAM,KAAK,GAAG;AAClB,kBAAI,eAAe;AACnB,kBAAI,QAAQ,IAAI;AACd,oBAAI,OAAO,GAAG,MAAM,eAAe,IAAI,MAAM,UAAU;AACvD,oBAAI,YAAY,MAAM;AACtB,oBAAI,SAAS,GAAG,GAAG,UAAU,OAAO,UAAU,MAAM;AACpD;AAAA,kBACE;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,oBAAoB;AAAA,kBACpB,oBAAoB;AAAA,kBACpB,cAAc,GAAG;AAAA,kBACjB;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBAClB;AAAA,cACc,OAAO;AACL,oBAAI,OAAO,GAAG,MAAM,aAAa,IAAI,MAAM,UAAU;AACrD,oBAAI,YAAY,MAAM;AACtB,oBAAI,SAAS,GAAG,GAAG,UAAU,OAAO,UAAU,MAAM;AACpD;AAAA,kBACE;AAAA,kBACA;AAAA,kBACA,eAAe,CAAC,KAAK,GAAG,CAAC;AAAA,kBACzB;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,oBAAoB;AAAA,kBACpB,oBAAoB;AAAA,kBACpB;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBAClB;AAAA,cACc;AAAA,YACF;AACA,sBAAU,MAAM,OAAO;AACvB,sBAAU,MAAM,WAAW;AAC3B,sBAAU,MAAM,QAAQ,GAAG,oBAAoB,KAAK;AACpD,sBAAU,MAAM,SAAS,GAAG,oBAAoB,MAAM;AACtD,qBAAS,KAAK,OAAO,SAAS;AAC9B,kBAAM,aAAa;AAAA,cACjB;AAAA,cACA,oBAAoB,QAAQ;AAAA,cAC5B,oBAAoB,SAAS;AAAA,YAC3C;AACY,mBAAO,WAAW,MAAM;AACtB,wBAAU,OAAM;AAAA,YAClB,GAAG,CAAC;AAAA,UACN;AAAA,QACF;AAAA,MACF,OAAO;AACL,cAAM,eAAc;AAAA,MACtB;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,mBAAiB,aAAa,kBAAkB,KAAK,kBAAkB,OAAO,SAAS,eAAe,YAAY,OAAO,KAAK,MAAM,OAAO,KAAK;AAChJ,QAAM,mBAAmBA,MAAO,OAAM;AACtC,QAAM,iBAAiBA,MAAO;AAAA,IAC5B,CAAC,UAAU;AACT,UAAI;AACJ,YAAM,SAAS,IAAI;AACnB,UAAI,WAAW,QAAQ;AACrB,cAAM,eAAc;AAAA,MACtB;AACA,UAAI,WAAW,QAAQ,mBAAmB,QAAQ;AAChD;AAAA,MACF;AACA,YAAM,OAAO,wBAAwB,QAAQ,MAAM,SAAS,MAAM,OAAO;AACzE,YAAM,CAAC,QAAQ,GAAG,IAAI,KAAK;AAC3B,YAAM,MAAM,UAAU,qBAAqB,IAAI;AAC/C,YAAM,CAAC,WAAW,SAAS,KAAK,MAAM,iBAAiB,YAAY,OAAO,MAAM,CAAA;AAChF,UAAI,cAAc,OAAO,cAAc,KAAK;AAC1C,yBAAiB,UAAU,CAAC,KAAK,GAAG;AACpC,uBAAe,CAAC,KAAK,GAAG,GAAG,MAAM,YAAY;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,CAAC,oBAAoB,yBAAyB,gBAAgB,MAAM;AAAA,EACxE;AACE,mBAAiB,YAAY,iBAAiB,KAAK,kBAAkB,OAAO,SAAS,eAAe,YAAY,OAAO,KAAK,MAAM,OAAO,KAAK;AAC9I,QAAM,gBAAgBA,MAAO,YAAY,MAAM;AAC7C,qBAAiB,UAAU;AAC3B,iBAAa,OAAO,SAAS,UAAS;AAAA,EACxC,GAAG,CAAC,SAAS,CAAC;AACd,mBAAiB,WAAW,gBAAgB,KAAK,kBAAkB,OAAO,SAAS,eAAe,YAAY,OAAO,KAAK,MAAM,OAAO,KAAK;AAC5I,QAAM,aAAaA,MAAO;AAAA,IACxB,CAAC,UAAU;AACT,YAAM,SAAS,IAAI;AACnB,UAAI,WAAW,QAAQ,WAAW,QAAQ;AACxC;AAAA,MACF;AACA,YAAM,eAAc;AACpB,YAAM,OAAO,wBAAwB,QAAQ,MAAM,SAAS,MAAM,OAAO;AACzE,YAAM,CAAC,QAAQ,GAAG,IAAI,KAAK;AAC3B,YAAM,MAAM,UAAU,qBAAqB,IAAI;AAC/C,aAAO,CAAC,KAAK,GAAG,GAAG,MAAM,YAAY;AAAA,IACvC;AAAA,IACA,CAAC,oBAAoB,yBAAyB,MAAM;AAAA,EACxD;AACE,mBAAiB,QAAQ,aAAa,KAAK,kBAAkB,OAAO,SAAS,eAAe,YAAY,OAAO,KAAK,MAAM,OAAO,KAAK;AACtI,QAAM,kBAAkBA,MAAO,YAAY,MAAM;AAC/C,mBAAe,OAAO,SAAS,YAAW;AAAA,EAC5C,GAAG,CAAC,WAAW,CAAC;AAChB,mBAAiB,aAAa,kBAAkB,KAAK,kBAAkB,OAAO,SAAS,eAAe,YAAY,OAAO,KAAK,MAAM,OAAO,KAAK;AAChJ,QAAM,eAAeA,MAAO,OAAO,SAAS;AAC5C,eAAa,UAAU;AACvB,QAAM,WAAWA,MAAO,OAAO,IAAI;AACnC,QAAM,eAAeA,MAAO;AAAA,IAC1B,CAAC,OAAO;AACN,UAAI;AACJ,UAAI,IAAI,YAAY,QAAQ,CAAC,IAAI,QAAQ,SAAS,SAAS,aAAa;AACtE;AACF,UAAI,OAAO,QAAQ,aAAa,QAAQ,YAAY,QAAQ;AAC1D,SAAC,MAAM,aAAa,OAAO,SAAS,UAAU,YAAY,OAAO,SAAS,IAAI,MAAM;AAAA,UAClF,eAAe;AAAA,QACzB,CAAS;AAAA,MACH,WAAW,OAAO,MAAM;AACtB,WAAG,MAAM;AAAA,UACP,eAAe;AAAA,QACzB,CAAS;AAAA,MACH;AACA,eAAS,UAAU;AAAA,IACrB;AAAA,IACA,CAAC,SAAS;AAAA,EACd;AACEA,QAAO;AAAA,IACL;AAAA,IACA,OAAO;AAAA,MACL,OAAO,MAAM;AACX,YAAI;AACJ,cAAM,KAAK,SAAS;AACpB,YAAI,OAAO,QAAQ,CAAC,SAAS,SAAS,EAAE,GAAG;AACzC,WAAC,MAAM,aAAa,OAAO,SAAS,UAAU,YAAY,OAAO,SAAS,IAAI,MAAM;AAAA,YAClF,eAAe;AAAA,UAC3B,CAAW;AAAA,QACH,OAAO;AACL,aAAG,MAAM;AAAA,YACP,eAAe;AAAA,UAC3B,CAAW;AAAA,QACH;AAAA,MACF;AAAA,MACA,WAAW,CAAC,KAAK,QAAQ;AACvB,YAAI,cAAc,UAAU,UAAU,YAAY,MAAM;AACtD,iBAAO;AAAA,QACT;AACA,eAAO,iBAAiB,UAAU,SAAS,OAAO,OAAO,MAAM,GAAG,OAAO,OAAO,MAAM,EAAE;AAAA,MAC1F;AAAA,MACA;AAAA,IACN;AAAA,IACI,CAAC,WAAW,QAAQ,gBAAgB;AAAA,EACxC;AACE,QAAM,wBAAwBA,MAAO,OAAM;AAC3C,QAAM,oBAAoB;AAAA,IACxB,MAAM;AACJ,UAAI,KAAK,KAAK,KAAK;AACnB,UAAI,QAAQ;AACV,eAAO;AACT,UAAI,gBAAgB,oBAAoB,eAAe,aAAa,OAAO,kBAAkB,UAAU;AACvG,YAAM,YAAY,qBAAqB,IAAI;AAC3C,UAAI,CAAC,wBAAwB,MAAM,cAAc,CAAC,MAAM,OAAO,SAAS,IAAI,iBAAiB,GAAG;AAC9F,wBAAgB,cAAc,MAAM,CAAC;AAAA,MACvC;AACA,YAAM,CAAC,MAAM,IAAI,KAAK,OAAO,MAAM,UAAU,YAAY,OAAO,SAAS,IAAI,SAAS,OAAO,MAAM,CAAA;AACnG,YAAM,UAAU,MAAM,UAAU,YAAY,OAAO,SAAS,IAAI;AAChE,YAAM,cAAc,cAAc,IAAI,CAAC,MAAM,EAAE,WAAW;AAC1D,YAAM,cAAcC,MAAU,aAAa,KAAK,IAAI,MAAM,cAAc,mBAAmB,CAAC;AAC5F,UAAI,SAAS,UAAU,SAAS,UAAU,EAAE,YAAY,SAAS,IAAI,KAAK,YAAY,SAAS,IAAI,IAAI;AACrG,qBAAa,IAAI;AAAA,MACnB;AACA,aAAuBD,sBAAO;AAAA,QAC5B;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,MAAM;AAAA,UACN,iBAAiB,OAAO;AAAA,UACxB,wBAAwB;AAAA,UACxB,iBAAiB,cAAc,SAAS;AAAA,QAClD;AAAA,QACwBA,sBAAO,cAAc,SAAS,EAAE,MAAM,cAA8BA,sBAAO,cAAc,MAAM,EAAE,MAAM,OAAO,iBAAiB,EAAC,GAAI,cAAc,IAAI,CAAC,MAAsBA,sBAAO;AAAA,UAClM;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,iBAAiB,UAAU,QAAQ,SAAS,EAAE,WAAW;AAAA,YACzD,iBAAiB,EAAE,cAAc,IAAI;AAAA,YACrC,UAAU;AAAA,YACV,SAAS,CAAC,MAAM;AACd,kBAAI,EAAE,WAAW,SAAS;AACxB;AACF,qBAAO,iBAAiB,OAAO,SAAS,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;AAAA,YAC3E;AAAA,YACA,KAAK,EAAE;AAAA,UACnB;AAAA,UACU,EAAE;AAAA,QACZ,CAAS,CAAC,CAAC;AAAA,QACaA,sBAAO,cAAc,SAAS,EAAE,MAAM,cAAc,YAAY,IAAI,CAAC,QAAwBA,sBAAO;AAAA,UAClH;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,iBAAiB,UAAU,KAAK,SAAS,GAAG;AAAA,YAC5C,KAAK;AAAA,YACL,iBAAiB,MAAM;AAAA,UACnC;AAAA,UACU,cAAc,IAAI,CAAC,MAAM;AACvB,kBAAM,MAAM,EAAE;AACd,kBAAM,MAAM,GAAG,GAAG,IAAI,GAAG;AACzB,kBAAM,UAAU,SAAS,OAAO,SAAS;AACzC,kBAAM,WAAW,WAAW,UAAU,OAAO,OAAO,KAAK,MAAM,OAAO,IAAI,OAAO,SAAS,OAAO,OAAO,KAAK,MAAM,OAAO,IAAI,OAAO;AACrI,kBAAM,KAAK,cAAc,GAAG,IAAI,GAAG;AACnC,kBAAM,WAAW,CAAC,KAAK,GAAG;AAC1B,kBAAM,cAAc,eAAe,UAAU,IAAI;AACjD,mBAAuBA,sBAAO;AAAA,cAC5B;AAAA,cACA;AAAA,gBACE;AAAA,gBACA,MAAM;AAAA,gBACN,iBAAiB,MAAM,IAAI;AAAA,gBAC3B,iBAAiB;AAAA,gBACjB,iBAAiB,gBAAgB,WAAW,KAAK,CAAC,gBAAgB,WAAW;AAAA,gBAC7E;AAAA,gBACA,eAAe;AAAA,gBACf,SAAS,MAAM;AACb,wBAAM,SAAS,aAAa,OAAO,SAAS,UAAU;AACtD,sBAAI,WAAW,QAAQ,WAAW;AAChC;AACF,yBAAO,aAAa,OAAO,SAAS,UAAU;AAAA,oBAC5C,QAAQ,iBAAiB,QAAQ,KAAK,GAAG;AAAA,oBACzC,QAAQ,MAAM;AAAA,oBACd,gBAAgB,MAAM;AAAA,oBACtB,iBAAiB,MAAM;AAAA,oBACvB,SAAS;AAAA,oBACT,KAAK;AAAA,oBACL,SAAS;AAAA,oBACT,SAAS;AAAA,oBACT,UAAU;AAAA,oBACV,QAAQ;AAAA,oBACR,UAAU;AAAA,oBACV;AAAA,kBACpB,CAAmB;AAAA,gBACH;AAAA,gBACA,gBAAgB,CAAC,MAAM;AACrB,sBAAI,KAAK;AACT,sBAAI,EAAE,WAAW,SAAS,aAAa,MAAM,sBAAsB,YAAY,OAAO,SAAS,IAAI,CAAC,OAAO,SAAS,MAAM,sBAAsB,YAAY,OAAO,SAAS,IAAI,CAAC,OAAO;AACtL;AACF,wCAAsB,UAAU;AAChC,yBAAO,iBAAiB,OAAO,SAAS,cAAc,QAAQ;AAAA,gBAChE;AAAA,gBACA,KAAK,UAAU,eAAe;AAAA,gBAC9B,UAAU;AAAA,cAC1B;AAAA,cACc,WAAW,aAAa,eAAe;AAAA,YACrD;AAAA,UACU,CAAC;AAAA,QACX,CAAS,CAAC;AAAA,MACV;AAAA,IACI;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,IACI;AAAA,EACJ;AACE,QAAM,UAAU,eAAe,eAAe,eAAe,gBAAgB,IAAI;AACjF,QAAM,WAAW,kBAAkB,KAAK,CAAC,eAAe,IAAI,cAAc,gBAAgB,IAAIE,OAAO,CAAC,aAAa,KAAK,GAAG,CAAC;AAC5H,QAAM,kBAAkB,CAAC,cAAc,KAAK;AAC5C,QAAM,WAAW,CAAC,eAAe,IAAIA,OAAO,CAAC,kBAAkB,KAAK,GAAG,CAAC;AACxE,QAAM,eAAeF,MAAO,QAAQ,MAAM;AACxC,QAAI,CAAC,YAAY,CAAC,UAAU;AAC1B,aAAO;AAAA,IACT;AACA,UAAM,SAAS;AAAA,MACb,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,SAAS;AAAA,MACT,eAAe;AAAA,MACf,YAAY,CAAC,gBAAgB,iBAAiB;AAAA,MAC9C,WAAW;AAAA,IACjB;AACI,UAAM,SAAS;AAAA,MACb,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,eAAe;AAAA,MACf,YAAY,CAAC,gBAAgB,iBAAiB;AAAA,MAC9C,WAAW;AAAA,IACjB;AACI,WAAuBA,sBAAO,cAAcA,MAAO,UAAU,MAAM,WAAW,KAAqBA,sBAAO,cAAc,OAAO,EAAE,IAAI,YAAY,OAAO,OAAM,CAAE,GAAG,WAAW,KAAqBA,sBAAO,cAAc,OAAO,EAAE,IAAI,YAAY,OAAO,OAAM,CAAE,CAAC;AAAA,EACnQ,GAAG,CAAC,UAAU,UAAU,SAAS,OAAO,eAAe,mBAAmB,QAAQ,aAAa,CAAC;AAChG,QAAM,eAAeA,MAAO;AAAA,IAC1B,OAAO;AAAA,MACL,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,IACZ;AAAA,IACI,CAAA;AAAA,EACJ;AACE,SAAuBA,sBAAO,cAAcA,MAAO,UAAU,MAAsBA,sBAAO;AAAA,IACxF;AAAA,IACA;AAAA,MACE,eAAe;AAAA,MACf,UAAU;AAAA,MACV,WAAW;AAAA,MACX,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,KAAK;AAAA,MACL;AAAA,IACN;AAAA,IACI;AAAA,EACJ,GAAqBA,sBAAO,cAAc,UAAU,EAAE,KAAK,YAAY,OAAO,cAAc,GAAG,YAAY;AAC3G;AACA,IAAI,oBAAoBA,MAAO,KAAKA,MAAO,WAAW,QAAQ,CAAC;AAG/D,SAAS,iBAAiB,QAAQ,OAAO,KAAK,KAAK;AACjD,MAAI;AACJ,SAAOG,OAAO,KAAK,MAAM,UAAU,KAAK,OAAO,eAAe,OAAO,KAAK,EAAE,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,MAAM,GAAG,CAAC;AAChH;AACA,IAAI,cAAc,CAAC,MAAM;AACvB,MAAI;AACJ,QAAM,CAAC,iBAAiB,kBAAkB,IAAIC,MAAO,SAAQ;AAC7D,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAO,SAAQ;AACjD,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAO,SAAQ;AAC7C,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAO,SAAQ;AAC7C,QAAM,CAAC,eAAe,gBAAgB,IAAIA,MAAO,SAAS,KAAK;AAC/D,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAO,SAAQ;AACnD,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAO,SAAQ;AAC7C,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAO,SAAQ;AAC7C,QAAM,CAAC,eAAe,gBAAgB,IAAIA,MAAO,SAAS,KAAK;AAC/D,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAO,SAAQ;AACnD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,cAAc,KAAK,kBAAkB,OAAO,iBAAiB,sBAAsB,OAAO,KAAK,yBAAyB;AAC9H,QAAM,EAAE,SAAS,UAAS,IAAK;AAC/B,QAAM,kBAAkB,UAAU;AAClC,QAAM,oBAAoBA,MAAO;AAAA,IAC/B,CAAC,SAAS;AACR,YAAM,CAAC,KAAK,GAAG,IAAI,KAAK;AACxB,UAAI,YAAY,UAAU,YAAY,OAAO,OAAO,aAAa;AAC/D,yBAAiB,IAAI;AACrB,mBAAW,GAAG;AAAA,MAChB,WAAW,YAAY,UAAU,QAAQ,QAAQ;AAC/C,yBAAiB,IAAI;AACrB,mBAAW,KAAK,IAAI,GAAG,GAAG,CAAC;AAAA,MAC7B,OAAO;AACL,yBAAiB,OAAO,SAAS,cAAc,IAAI;AAAA,MACrD;AAAA,IACF;AAAA,IACA,CAAC,SAAS,SAAS,SAAS,eAAe,WAAW;AAAA,EAC1D;AACE,QAAM,aAAa,kBAAkB;AACrC,QAAM,kBAAkBA,MAAO;AAAA,IAC7B,CAAC,SAAS;AACR,UAAI,KAAK;AACT,UAAI,KAAK,WAAW,GAAG;AACrB,cAAM,CAAC,KAAK,GAAG,IAAI,KAAK;AACxB,YAAI,KAAK,SAAS,mBAAmB,KAAK,UAAU,WAAW;AAC7D,gBAAM,UAAU,MAAM,WAAW,OAAO,SAAS,QAAQ,YAAY,OAAO,SAAS,IAAI,UAAU,QAAQ,SAAS,GAAG,EAAE;AACzH,cAAI,WAAW,QAAQ;AACrB,+BAAmB,OAAO,CAAC;AAC3B,yBAAa,QAAQ,SAAS,CAAC;AAAA,UACjC;AAAA,QACF,WAAW,KAAK,SAAS,YAAY,OAAO,aAAa;AACvD,gBAAM,SAAS,aAAa,OAAO,SAAS,UAAU;AACtD,cAAI,KAAK,UAAU,aAAa,QAAQ;AACtC,+BAAmB,KAAK,OAAO,CAAC;AAChC,yBAAa,GAAG;AAChB,kBAAM,OAAO,OAAO,sBAAqB;AACzC,kBAAM,QAAQ,KAAK,QAAQ,OAAO;AAClC,kBAAM,QAAQ,KAAK,OAAO,QAAQ;AAClC,mCAAuB,OAAO,SAAS,oBAAoB,QAAQ,GAAG,GAAG,OAAO,KAAK,UAAU,KAAK,QAAQ,GAAG,EAAE,eAAe,OAAO,KAAK,EAAE;AAAA,UAChJ,WAAW,KAAK,SAAS,YAAY,YAAY;AAC/C,0BAAc,KAAK,OAAO,CAAC;AAC3B,uBAAW,GAAG;AAAA,UAChB;AAAA,QACF,WAAW,KAAK,SAAS,UAAU,cAAc,KAAK,QAAQ,KAAK,QAAQ,UAAU,eAAe,QAAQ;AAC1G,wBAAc,KAAK,OAAO,CAAC;AAC3B,qBAAW,GAAG;AAAA,QAChB;AAAA,MACF;AACA,qBAAe,OAAO,SAAS,YAAY,IAAI;AAAA,IACjD;AAAA,IACA,CAAC,aAAa,WAAW,aAAa,YAAY,SAAS,SAAS,YAAY,qBAAqB,SAAS;AAAA,EAClH;AACE,QAAM,2BAA2BA,MAAO;AAAA,IACtC,CAAC,KAAK,mBAAmB;AACvB,UAAI,iBAAiB;AACnB;AACF,2BAAqB,OAAO,SAAS,kBAAkB,KAAK,cAAc;AAAA,IAC5E;AAAA,IACA,CAAC,eAAe,eAAe,iBAAiB;AAAA,EACpD;AACE,QAAM,qBAAqBA,MAAO,OAAO,EAAE;AAC3C,QAAM,WAAWA,MAAO,YAAY,MAAM;AACxC,uBAAmB,UAAU;AAC7B,eAAW,MAAM;AACjB,eAAW,MAAM;AACjB,kBAAc,MAAM;AACpB,qBAAiB,KAAK;AACtB,eAAW,MAAM;AACjB,eAAW,MAAM;AACjB,kBAAc,MAAM;AACpB,qBAAiB,KAAK;AACtB,iBAAa,MAAM;AACnB,uBAAmB,MAAM;AAAA,EAC3B,GAAG,CAAA,CAAE;AACL,QAAM,gBAAgBA,MAAO;AAAA,IAC3B,CAAC,MAAM,cAAc;AACnB,UAAI,KAAK,IAAI;AACb,UAAI,KAAK,WAAW,GAAG;AACrB,YAAI,cAAc,QAAQ;AACxB,eAAK,mBAAmB,OAAO,SAAS,gBAAgB,SAAS,SAAS,OAAO,MAAM;AACrF,uBAAW,KAAK,iBAAiB;AAC/B,kBAAI,MAAM;AACR;AACF,oBAAM,MAAM,QAAQ,CAAC;AACrB,oBAAM,UAAU;AAAA,gBACd;AAAA,gBACA,mBAAmB;AAAA,gBACnB;AAAA,gBACA;AAAA,cAChB;AACc,gCAAkB,OAAO,SAAS,eAAe,KAAK,SAAS,GAAG,YAAY,MAAM,IAAI,eAAe,OAAO,MAAM,EAAE;AAAA,YACxH;AAAA,UACF;AACA,gBAAM,KAAK;AAAA,YACT,QAAQ,SAAS;AAAA,YACjB,mBAAmB;AAAA,YACnB;AAAA,YACA;AAAA,UACZ;AACU,+BAAqB,OAAO,SAAS,kBAAkB,QAAQ,SAAS,GAAG,IAAI,WAAW,OAAO,KAAK,QAAQ,SAAS,EAAE,eAAe,OAAO,KAAK,EAAE;AACtJ,cAAI,gBAAgB,SAAS,SAAS,GAAG;AACvC,uBAAW,KAAK,iBAAiB;AAC/B,kBAAI,MAAM;AACR;AACF,oBAAM,MAAM,QAAQ,CAAC;AACrB,oBAAM,IAAI,iBAAiB,KAAK,mBAAmB,SAAS,gBAAgB,cAAc;AAC1F,mCAAqB,OAAO,SAAS,kBAAkB,KAAK,GAAG,GAAG,MAAM,KAAK,IAAI,eAAe,OAAO,KAAK,EAAE;AAAA,YAChH;AAAA,UACF;AAAA,QACF;AACA,iBAAQ;AACR,YAAI,YAAY,UAAU,YAAY,QAAQ;AAC5C,2BAAiB,OAAO,SAAS,cAAc,SAAS,OAAO;AAAA,QACjE;AACA,YAAI,YAAY,UAAU,YAAY,QAAQ;AAC5C,wBAAc,OAAO,SAAS,WAAW,SAAS,OAAO;AAAA,QAC3D;AAAA,MACF;AACA,mBAAa,OAAO,SAAS,UAAU,MAAM,SAAS;AAAA,IACxD;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,aAAaA,MAAO,QAAQ,MAAM;AACtC,QAAI,YAAY,UAAU,YAAY;AACpC,aAAO;AACT,QAAI,YAAY;AACd,aAAO;AACT,WAAO;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,IACZ;AAAA,EACE,GAAG,CAAC,SAAS,OAAO,CAAC;AACrB,QAAM,cAAcA,MAAO;AAAA,IACzB,CAAC,UAAU;AACT,UAAI,KAAK;AACT,YAAM,SAAS,aAAa,OAAO,SAAS,UAAU;AACtD,UAAI,YAAY,UAAU,eAAe,QAAQ;AAC/C,cAAM,OAAO,KAAK,IAAI,MAAM,UAAU,UAAU;AAChD,YAAI,OAAO,IAAI;AACb,2BAAiB,IAAI;AAAA,QACvB;AAAA,MACF,WAAW,YAAY,UAAU,eAAe,QAAQ;AACtD,cAAM,OAAO,KAAK,IAAI,MAAM,UAAU,UAAU;AAChD,YAAI,OAAO,IAAI;AACb,2BAAiB,IAAI;AAAA,QACvB;AAAA,MACF,WAAW,cAAc,UAAU,oBAAoB,UAAU,QAAQ;AACvE,cAAM,OAAO,OAAO,sBAAqB;AACzC,cAAM,QAAQ,KAAK,QAAQ,OAAO;AAClC,cAAM,YAAY,MAAM,UAAU,mBAAmB;AACrD,cAAM,SAAS,QAAQ,SAAS;AAChC,cAAM,KAAK,iBAAiB,QAAQ,UAAU,gBAAgB,cAAc;AAC5E,0BAAkB,OAAO,SAAS,eAAe,QAAQ,IAAI,WAAW,OAAO,MAAM,OAAO,eAAe,OAAO,MAAM,EAAE;AAC1H,2BAAmB,UAAU;AAC7B,aAAK,mBAAmB,OAAO,SAAS,gBAAgB,MAAK,OAAQ,WAAW;AAC9E,qBAAW,KAAK,iBAAiB;AAC/B,gBAAI,MAAM;AACR;AACF,kBAAM,MAAM,QAAQ,CAAC;AACrB,kBAAM,IAAI,iBAAiB,KAAK,mBAAmB,SAAS,gBAAgB,cAAc;AAC1F,8BAAkB,OAAO,SAAS,eAAe,KAAK,GAAG,GAAG,MAAM,KAAK,IAAI,eAAe,OAAO,KAAK,EAAE;AAAA,UAC1G;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,wBAAwBA,MAAO;AAAA,IACnC,CAAC,MAAM,gBAAgB;AACrB,UAAI,YAAY,UAAU,YAAY;AACpC,eAAO,eAAe,MAAM,WAAW;AACzC,UAAI,CAAC,KAAK,GAAG,IAAI;AACjB,UAAI,QAAQ,SAAS;AACnB,cAAM;AAAA,MACR,OAAO;AACL,YAAI,MAAM;AACR,iBAAO;AACT,YAAI,OAAO;AACT,iBAAO;AAAA,MACX;AACA,aAAO,eAAe,CAAC,KAAK,GAAG,GAAG,WAAW;AAAA,IAC/C;AAAA,IACA,CAAC,SAAS,SAAS,cAAc;AAAA,EACrC;AACE,QAAM,kBAAkBA,MAAO;AAAA,IAC7B,CAAC,SAAS;AACR,qBAAe,OAAO,SAAS,YAAY,IAAI;AAC/C,UAAI,CAAC,KAAK,oBAAoB;AAC5B,iBAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,CAAC,UAAU,WAAW;AAAA,EAC1B;AACE,SAAuBA,sBAAO;AAAA,IAC5B;AAAA,IACA;AAAA,MACE,qBAAqB,EAAE;AAAA,MACvB,WAAW,EAAE;AAAA,MACb,aAAa,EAAE;AAAA,MACf,aAAa,EAAE;AAAA,MACf,SAAS,EAAE;AAAA,MACX,cAAc,EAAE;AAAA,MAChB,gBAAgB,EAAE;AAAA,MAClB,eAAe,EAAE;AAAA,MACjB,YAAY,EAAE;AAAA,MACd,cAAc,EAAE;AAAA,MAChB,gBAAgB,EAAE;AAAA,MAClB,cAAc,EAAE;AAAA,MAChB,YAAY,EAAE;AAAA,MACd,oBAAoB,EAAE;AAAA,MACtB,cAAc,EAAE;AAAA,MAChB,cAAc,EAAE;AAAA,MAChB,eAAe,EAAE;AAAA,MACjB,iBAAiB,EAAE;AAAA,MACnB,iBAAiB,EAAE;AAAA,MACnB,qBAAqB,EAAE;AAAA,MACvB,mBAAmB,EAAE;AAAA,MACrB,cAAc,EAAE;AAAA,MAChB,aAAa,EAAE;AAAA,MACf,QAAQ,EAAE;AAAA,MACV,kBAAkB,EAAE;AAAA,MACpB,mBAAmB,EAAE;AAAA,MACrB,aAAa,EAAE;AAAA,MACf,WAAW,EAAE;AAAA,MACb,WAAW,EAAE;AAAA,MACb,cAAc,EAAE;AAAA,MAChB,iBAAiB,EAAE;AAAA,MACnB,eAAe,EAAE;AAAA,MACjB,eAAe,EAAE;AAAA,MACjB,WAAW,EAAE;AAAA,MACb,aAAa,EAAE;AAAA,MACf,gBAAgB,EAAE;AAAA,MAClB,QAAQ,EAAE;AAAA,MACV,WAAW,EAAE;AAAA,MACb,SAAS,EAAE;AAAA,MACX,aAAa,EAAE;AAAA,MACf,eAAe,EAAE;AAAA,MACjB,WAAW,EAAE;AAAA,MACb,MAAM,EAAE;AAAA,MACR,WAAW,EAAE;AAAA,MACb,eAAe,EAAE;AAAA,MACjB,eAAe,EAAE;AAAA,MACjB,OAAO,EAAE;AAAA,MACT,iBAAiB,EAAE;AAAA,MACnB,YAAY,EAAE;AAAA,MACd,YAAY,EAAE;AAAA,MACd,gBAAgB,EAAE;AAAA,MAClB,OAAO,EAAE;AAAA,MACT,gBAAgB;AAAA,MAChB,YAAY,cAAc;AAAA,MAC1B,mBAAmB;AAAA,MACnB,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,KAAK;AAAA,IACX;AAAA,EACA;AACA;AACA,IAAI,wBAAwB;AAO5B,SAAS,kBAAkB,aAAa;AACtC,QAAM,MAAMC,OAAQ,IAAI;AACxB,QAAM,CAAC,MAAM,OAAO,IAAIC,SAAU;AAAA,IAChC,OAAO,eAAe,OAAO,SAAS,YAAY,CAAC;AAAA,IACnD,QAAQ,eAAe,OAAO,SAAS,YAAY,CAAC;AAAA,EACxD,CAAG;AACDC,kBAAiB,MAAM;AACrB,UAAM,iBAAiB,CAAC,YAAY;AAClC,iBAAW,SAAS,SAAS;AAC3B,cAAM,EAAE,OAAO,OAAM,IAAK,SAAS,MAAM,eAAe,CAAA;AACxD,gBAAQ,CAAC,OAAO,GAAG,UAAU,SAAS,GAAG,WAAW,SAAS,KAAK,EAAE,OAAO,OAAM,CAAE;AAAA,MACrF;AAAA,IACF;AACA,UAAM,iBAAiB,IAAI,OAAO,eAAe,cAAc;AAC/D,QAAI,IAAI,SAAS;AACf,qBAAe,QAAQ,IAAI,SAAS,MAAM;AAAA,IAC5C;AACA,WAAO,MAAM;AACX,qBAAe,WAAU;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,IAAI,OAAO,CAAC;AAChB,SAAO,EAAE,KAAK,GAAG,KAAI;AACvB;AAGA,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,WAAW;AACjD,IAAI,oBAAoC,+BAAe,KAAK,EAAE;AAAA,EAC5D,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,cAAc,CAAC,MAAK,CAAE;AAAA,EAC1B;AACA,CAAC;AACD,SAAS,kBAAkB,OAAO;AAChC,QAAM,CAAC,YAAY,aAAa,IAAIC,MAAQ,SAAS,KAAK;AAC1D,QAAM,UAAUA,MAAQ,OAAO,CAAC;AAChC,mBAAiB,cAAcA,MAAQ,YAAY,MAAM;AACvD,WAAO,aAAa,QAAQ,OAAO;AACnC,kBAAc,IAAI;AAAA,EACpB,GAAG,CAAA,CAAE,GAAG,QAAQ,MAAM,KAAK;AAC3B,mBAAiB,YAAYA,MAAQ,YAAY,CAAC,MAAM;AACtD,QAAI,EAAE,QAAQ,WAAW,GAAG;AAC1B,cAAQ,UAAU,OAAO,WAAW,MAAM,cAAc,KAAK,GAAG,KAAK;AAAA,IACvE;AAAA,EACF,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,MAAM,KAAK;AAChC,SAAO;AACT;AACA,IAAI,mBAAmB,CAAC,MAAM;AAC5B,MAAI,IAAI,IAAI,IAAI;AAChB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,2BAA2B;AAAA,IAC3B,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,UAAU,CAAA;AAChB,QAAM,sBAAsB,KAAK,qBAAqB,OAAO,SAAS,kBAAkB,WAAW,OAAO,KAAK;AAC/G,QAAM,oBAAoB,KAAK,qBAAqB,OAAO,SAAS,kBAAkB,SAAS,OAAO,KAAK;AAC3G,QAAM,UAAUA,MAAQ,OAAO,CAAC;AAChC,QAAM,cAAcA,MAAQ,OAAO,CAAC;AACpC,QAAM,WAAWA,MAAQ,OAAO,IAAI;AACpC,QAAM,MAAM,OAAO;AACnBA,QAAQ,UAAU,MAAM;AACtB,UAAM,KAAK,SAAS;AACpB,QAAI,OAAO,QAAQ,gBAAgB;AACjC;AACF,OAAG,aAAa,GAAG,cAAc,GAAG;AAAA,EACtC,GAAG,CAAC,WAAW,CAAC;AAChB,QAAM,qBAAqBA,MAAQ,OAAO;AAAA,IACxC,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,eAAe;AAAA,EACnB,CAAG;AACD,QAAM,eAAeA,MAAQ,OAAO,IAAI;AACxC,QAAM,aAAa,kBAAkB,GAAG;AACxC,QAAM,CAAC,QAAQ,SAAS,IAAIA,MAAQ,SAAS,IAAI;AACjD,QAAM,YAAYA,MAAQ,OAAO,CAAC;AAClCA,QAAQ,UAAU,MAAM;AACtB,QAAI,CAAC,UAAU,cAAc,mBAAmB,QAAQ,kBAAkB;AACxE;AACF,UAAM,KAAK,SAAS;AACpB,QAAI,OAAO;AACT;AACF,UAAM,CAAC,IAAI,EAAE,IAAI,mBAAmB,QAAQ;AAC5C,QAAI,OAAO,QAAQ;AACjB,SAAG,aAAa;AAAA,IAClB,WAAW,OAAO,QAAQ;AACxB,SAAG,YAAY;AAAA,IACjB;AACA,uBAAmB,QAAQ,gBAAgB;AAAA,EAC7C,GAAG,CAAC,YAAY,MAAM,CAAC;AACvB,QAAM,WAAWA,MAAQ,YAAY,MAAM;AACzC,QAAI,KAAK,KAAK,KAAK;AACnB,UAAM,KAAK,SAAS;AACpB,QAAI,OAAO;AACT;AACF,QAAI,YAAY,GAAG;AACnB,QAAI,aAAa,GAAG;AACpB,UAAM,gBAAgB,mBAAmB,QAAQ;AACjD,UAAM,iBAAiB,mBAAmB,QAAQ;AAClD,UAAM,KAAK,aAAa;AACxB,UAAM,KAAK,YAAY;AACvB,QAAI,cAAc,OAAO,KAAK,OAAO,MAAM,KAAK,IAAI,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,MAAM,4BAA4B,mBAAmB,QAAQ,kBAAkB,QAAQ;AACnK,yBAAmB,QAAQ,gBAAgB,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,CAAC,gBAAgB,MAAM,IAAI,CAAC,QAAQ,aAAa;AAAA,IAC5H;AACA,UAAM,OAAO,mBAAmB,QAAQ;AACxC,kBAAc,MAAM,QAAQ,OAAO,SAAS,KAAK,CAAC,MAAM,OAAO,MAAM;AACrE,iBAAa,MAAM,QAAQ,OAAO,SAAS,KAAK,CAAC,MAAM,OAAO,MAAM;AACpE,uBAAmB,QAAQ,aAAa;AACxC,uBAAmB,QAAQ,YAAY;AACvC,UAAM,OAAO;AACb,UAAM,QAAQ,YAAY,UAAU;AACpC,UAAM,mBAAmB,GAAG,eAAe,GAAG;AAC9C,gBAAY,UAAU;AACtB,QAAI,mBAAmB,MAAM,KAAK,IAAI,KAAK,IAAI,OAAO,SAAS,KAAK,SAAS,qBAAqB,eAAe,GAAG,eAAe,GAAG;AACpI,YAAM,OAAO,OAAO;AACpB,YAAM,cAAc,eAAe,GAAG,gBAAgB;AACtD,cAAQ,UAAU,aAAa;AAAA,IACjC;AACA,QAAI,SAAS,QAAQ;AACnB,aAAO,aAAa,UAAU,OAAO;AACrC,gBAAU,KAAK;AACf,gBAAU,UAAU,OAAO,WAAW,MAAM,UAAU,IAAI,GAAG,GAAG;AAAA,IAClE;AACA,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG,OAAO,QAAQ;AAAA,MAClB,OAAO,GAAG,cAAc;AAAA,MACxB,QAAQ,GAAG,eAAe;AAAA,MAC1B,eAAe,OAAO,MAAM,aAAa,YAAY,OAAO,SAAS,IAAI,gBAAgB,OAAO,MAAM;AAAA,IAC5G,CAAK;AAAA,EACH,GAAG,CAAC,eAAe,cAAc,cAAc,QAAQ,0BAA0B,UAAU,CAAC;AAC5F,QAAM,cAAcA,MAAQ,OAAO,QAAQ;AAC3C,cAAY,UAAU;AACtB,QAAM,YAAYA,MAAQ,OAAM;AAChC,QAAM,iBAAiBA,MAAQ,OAAO,KAAK;AAC3CA,QAAQ,UAAU,MAAM;AACtB,QAAI,eAAe;AACjB,eAAQ;AAAA;AAER,qBAAe,UAAU;AAAA,EAC7B,GAAG,CAAC,UAAU,eAAe,YAAY,CAAC;AAC1C,QAAM,UAAUA,MAAQ,YAAY,CAAC,aAAa;AAChD,aAAS,UAAU;AACnB,QAAI,cAAc,QAAQ;AACxB,gBAAU,UAAU;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AACd,MAAI,MAAM;AACV,MAAI,IAAI;AACR,UAAQ,KAAqBA,sBAAQ,cAAc,OAAO;AAAA,IACxD,KAAK;AAAA,IACL,OAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,IACd;AAAA,EACA,CAAG,CAAC;AACF,SAAO,IAAI,cAAc;AACvB,UAAM,QAAQ,KAAK,IAAI,KAAK,eAAe,CAAC;AAC5C,YAAQ,KAAqBA,sBAAQ,cAAc,OAAO;AAAA,MACxD,KAAK;AAAA,MACL,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,MAChB;AAAA,IACA,CAAK,CAAC;AACF,SAAK;AAAA,EACP;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM,kBAAkB,WAAW;AACjC,QAAM,KAAK,UAAU,YAAY,OAAO,SAAS,GAAG,YAAY,YAAY,KAAK,UAAU,YAAY,OAAO,SAAS,GAAG,WAAW,OAAO;AAC1I,WAAO,WAAW,MAAM,YAAY,QAAO,GAAI,CAAC;AAChD,cAAU,UAAU;AAAA,MAClB;AAAA,MACA;AAAA,IACN;AAAA,EACE;AACA,OAAK,SAAS,OAAO,QAAQ,OAAO,MAAM,UAAU,OAAO,SAAS,OAAO;AACzE,WAAuBA,sBAAQ,cAAc,OAAO;AAAA,MAClD;AAAA,IACN,CAAK;AACH,SAAuBA,sBAAQ,cAAc,OAAO;AAAA,IAClD;AAAA,EACJ,GAAqBA,sBAAQ,cAAc,mBAAmB;AAAA,IAC1D,UAAU,gBAAgB;AAAA,EAC9B,GAAK,SAAyBA,sBAAQ,cAAc,OAAO;AAAA,IACvD,WAAW;AAAA,EACf,GAAK,QAAQ,GAAmBA,sBAAQ,cAAc,OAAO;AAAA,IACzD,KAAK;AAAA,IACL,OAAO,UAAU;AAAA,IACjB;AAAA,IACA,aAAa,CAAC,MAAM;AAClB,UAAI,CAAC,WAAW;AACd,UAAE,gBAAe;AACjB,UAAE,eAAc;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW,mBAAmB,aAAa,OAAO,YAAY;AAAA,IAC9D;AAAA,EACJ,GAAqBA,sBAAQ,cAAc,OAAO;AAAA,IAC9C,WAAW,sBAAsB,iBAAiB,SAAS,YAAY;AAAA,EAC3E,GAAqBA,sBAAQ,cAAc,OAAO;AAAA,IAC9C,WAAW;AAAA,EACf,GAAK,OAAO,GAAG,iBAAiB,UAA0BA,sBAAQ,cAAcA,MAAQ,UAAU,MAAM,CAAC,oBAAoCA,sBAAQ,cAAc,OAAO;AAAA,IACtK,WAAW;AAAA,EACf,CAAG,GAAmBA,sBAAQ,cAAc,OAAO;AAAA,IAC/C,KAAK;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA,WAAW,eAAe,KAAK,KAAK,MAAM,CAAC;AAAA,MAC3C,UAAU;AAAA,MACV,KAAK;AAAA,MACL,aAAa;AAAA,MACb,cAAc;AAAA,MACd,aAAa;AAAA,MACb,UAAU,mBAAmB,IAAI;AAAA,MACjC,OAAO,qBAAqB,gBAAgB,OAAO,eAAe,IAAI;AAAA,MACtE,eAAe;AAAA,IACrB;AAAA,EACA,GAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB;AAIA,IAAI,eAA+B,+BAAe,KAAK,EAAE;AAAA,EACvD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb,CAAC;AACD,IAAI,eAAe,CAAC,MAAM;AACxB,MAAI,IAAI,IAAI;AACZ,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB;AAAA,EACJ,IAAM;AACJ,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACJ,IAAM,gBAAgB,OAAO,eAAe,CAAA;AAC1C,QAAM,CAAC,aAAa,YAAY,IAAI;AACpC,QAAM,OAAOC,MAAQ,OAAM;AAC3B,QAAM,QAAQA,MAAQ,OAAM;AAC5B,QAAM,QAAQA,MAAQ,OAAM;AAC5B,QAAM,WAAWA,MAAQ,OAAM;AAC/B,QAAM,QAAQA,MAAQ,QAAQ,MAAM;AAClC,QAAI,IAAI,KAAK,IAAI,GAAG,eAAe,OAAO,cAAc,CAAC;AACzD,eAAW,KAAK,SAAS;AACvB,WAAK,EAAE;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,CAAC,SAAS,WAAW,CAAC;AACzB,MAAI,SAAS,eAAe,eAAe,oBAAoB;AAC/D,MAAI,OAAO,cAAc,UAAU;AACjC,cAAU,OAAO;AAAA,EACnB,OAAO;AACL,aAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,gBAAU,UAAU,CAAC;AAAA,IACvB;AAAA,EACF;AACA,MAAI,gBAAgB,QAAQ;AAC1B,cAAU;AAAA,EACZ;AACA,QAAM,WAAWA,MAAQ,OAAM;AAC/B,QAAM,cAAcA,MAAQ,YAAY,MAAM;AAC5C,QAAI,KAAK,KAAK;AACd,QAAI,SAAS,YAAY;AACvB;AACF,UAAM,OAAO;AAAA,MACX,GAAG,SAAS;AAAA,IAClB;AACI,QAAI,IAAI;AACR,QAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;AAChC,QAAI,YAAY;AAChB,QAAI,QAAQ;AACZ,SAAK,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK;AAC/B,QAAI,iBAAiB;AACrB,aAAS,IAAI,GAAG,IAAI,eAAe,KAAK;AACtC,wBAAkB,QAAQ,CAAC,EAAE;AAAA,IAC/B;AACA,eAAW,KAAK,SAAS;AACvB,YAAM,KAAK,IAAI;AACf,UAAI,KAAK,KAAK,KAAK,EAAE,OAAO;AAC1B,aAAK,EAAE;AACP;AACA;AAAA,MACF,WAAW,KAAK,IAAI,IAAI;AACtB,aAAK,EAAE;AACP,YAAI,eAAe;AACjB,gBAAM,KAAK,KAAK;AAAA,QAClB,OAAO;AACL;AAAA,QACF;AACA;AAAA,MACF,WAAW,KAAK,IAAI,KAAK,QAAQ,IAAI;AACnC,aAAK,EAAE;AACP;AAAA,MACF,OAAO;AACL;AAAA,MACF;AAAA,IACF;AACA,QAAI,KAAK;AACT,QAAI,QAAQ;AACZ,QAAI,aAAa;AACjB,QAAI,OAAO,cAAc,UAAU;AACjC,UAAI,eAAe;AACjB,gBAAQ,KAAK,MAAM,KAAK,IAAI,SAAS;AACrC,aAAK,QAAQ,YAAY,KAAK;AAAA,MAChC,OAAO;AACL,gBAAQ,KAAK,KAAK,KAAK,IAAI,SAAS;AAAA,MACtC;AACA,mBAAa,KAAK,KAAK,KAAK,SAAS,SAAS,IAAI;AAClD,UAAI,KAAK;AACP;AAAA,IACJ,OAAO;AACL,UAAI,IAAI;AACR,eAAS,MAAM,GAAG,MAAM,MAAM,OAAO;AACnC,cAAM,KAAK,UAAU,GAAG;AACxB,cAAM,KAAK,KAAK,gBAAgB,IAAI,KAAK;AACzC,YAAI,KAAK,KAAK,IAAI,IAAI;AACpB,eAAK;AACL;AACA;AAAA,QACF,WAAW,KAAK,IAAI,IAAI;AACtB,eAAK;AACL,cAAI,eAAe;AACjB,kBAAM,KAAK,KAAK;AAAA,UAClB,OAAO;AACL;AAAA,UACF;AACA;AAAA,QACF,WAAW,KAAK,IAAI,KAAK,SAAS,KAAK,IAAI,GAAG;AAC5C,eAAK;AACL;AAAA,QACF,OAAO;AACL;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,UAAM,OAAO;AAAA,MACX,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO,YAAY;AAAA,MACnB,QAAQ,aAAa;AAAA,IAC3B;AACI,UAAM,UAAU,KAAK;AACrB,QAAI,YAAY,UAAU,QAAQ,MAAM,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK,QAAQ,WAAW,KAAK,UAAU,QAAQ,UAAU,KAAK,SAAS,MAAM,YAAY,MAAM,MAAM,YAAY,MAAM,KAAK,YAAY,MAAM,SAAS,YAAY,OAAO,SAAS,IAAI,CAAC,MAAM,KAAK,aAAa,MAAM,SAAS,YAAY,OAAO,SAAS,IAAI,CAAC,IAAI;AACvU,gCAA0B,OAAO,SAAS,uBAAuB;AAAA,QAC/D,GAAG;AAAA,QACH,GAAG;AAAA,QACH,OAAO,YAAY;AAAA,QACnB,QAAQ,aAAa;AAAA,MAC7B,GAAS,KAAK,OAAO,KAAK,SAAS,MAAM,KAAK,iBAAiB,OAAO,MAAM,GAAG,IAAI,EAAE;AAC/E,WAAK,UAAU;AACf,YAAM,UAAU;AAChB,YAAM,UAAU;AAChB,eAAS,UAAU,CAAC,KAAK,OAAO,KAAK,MAAM;AAAA,IAC7C;AAAA,EACF,GAAG,CAAC,SAAS,WAAW,MAAM,wBAAwB,eAAe,eAAe,aAAa,CAAC;AAClG,QAAM,iBAAiBA,MAAQ,YAAY,CAAC,SAAS;AACnD,aAAS,UAAU;AACnB,gBAAW;AAAA,EACb,GAAG,CAAC,WAAW,CAAC;AAChBA,QAAQ,UAAU,MAAM;AACtB,gBAAW;AAAA,EACb,GAAG,CAAC,WAAW,CAAC;AAChB,QAAM,YAAY,KAAK,aAAa,OAAO,SAAS,UAAU,YAAY,OAAO,KAAK;AACtF,QAAM,SAASC,OAAO,QAAQ,QAAQ,IAAI,GAAG,GAAG;AAChD,QAAM,UAAU;AAChB,QAAM,IAAI,SAAS,IAAI,UAAU,KAAK,KAAK,UAAU,MAAM;AAC3D,QAAM,IAAI,SAAS,IAAI,KAAK,KAAK,UAAU,MAAM,IAAI;AACrD,QAAM,SAAS,IAAI;AACnB,QAAM,SAAS,IAAI;AACnB,QAAM,SAAS,KAAK,IAAI,cAAc,KAAK,IAAI,QAAQ,IAAI,GAAG,CAAC;AAC/D,QAAM,UAAU,KAAK,IAAI,eAAe,KAAK,IAAI,QAAQ,IAAI,GAAG,CAAC;AACjE,QAAM,SAAS,KAAK,YAAY,OAAO,SAAS,SAAS,eAAe,OAAO,KAAK,MAAM,QAAQ,gBAAgB,IAAI;AACtH,QAAM,QAAQ,KAAK,YAAY,OAAO,SAAS,SAAS,cAAc,OAAO,KAAK,MAAM,SAAS,iBAAiB,IAAI;AACtH,QAAM,UAAUD,MAAQ,QAAQ,MAAM;AACpC,QAAI,CAAC,eAAe,WAAW,KAAK,YAAY;AAC9C,aAAO;AACT,UAAM,cAAc,CAAC,MAAM;AACzB,UAAI,aAAa;AACf;AACF,YAAM,SAAS,EAAE,cAAc,sBAAqB;AACpD,YAAM,IAAI,EAAE,UAAU,OAAO,IAAI,SAAS;AAC1C,YAAM,IAAI,EAAE,UAAU,OAAO,IAAI,UAAU;AAC3C,YAAM,iBAAiB,QAAQ,SAAS,gBAAgB,KAAK,IAAI;AACjE,YAAM,gBAAgB,SAAS,SAAS,iBAAiB,KAAK,IAAI;AAClE,eAAS,SAAS;AAAA,QAChB,MAAM;AAAA,QACN,KAAK;AAAA,QACL,UAAU,EAAE,SAAS,cAAc,SAAS;AAAA,MACpD,CAAO;AAAA,IACH;AACA,WAAuBA,sBAAQ,cAAc,cAAc;AAAA,MACzD,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,MAChB;AAAA,MACM,eAAe;AAAA,MACf,aAAa,CAAC,MAAM;AAClB,YAAI,EAAE,YAAY;AAChB;AACF,oBAAY,CAAC;AAAA,MACf;AAAA,MACA,SAAS;AAAA,IACf,GAAuBA,sBAAQ,cAAc,OAAO;AAAA,MAC9C,WAAW;AAAA,IACjB,CAAK,GAAmBA,sBAAQ,cAAc,OAAO;AAAA,MAC/C,WAAW;AAAA,MACX,aAAa,CAAC,MAAM,EAAE,eAAc;AAAA,MACpC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,cAAc,KAAK,IAAI,QAAQ,UAAU,KAAK,CAAC;AAAA,MACvD;AAAA,IACA,CAAK,CAAC;AAAA,EACJ,GAAG,CAAC,GAAG,QAAQ,MAAM,UAAU,aAAa,KAAK,SAAS,QAAQ,GAAG,KAAK,CAAC;AAC3E,SAAuBA,sBAAQ,cAAc,kBAAkB;AAAA,IAC7D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,gBAAgB,QAAQ,OAAO,gBAAgB;AAAA,IAC1D,aAAa,SAAS,gBAAgB,OAAO,eAAe;AAAA,IAC5D,cAAc,UAAU,iBAAiB,OAAO,gBAAgB;AAAA,IAChE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACJ,GAAqBA,sBAAQ,cAAc,uBAAuB;AAAA,IAC9D,gBAAgB;AAAA,IAChB,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,qBAAqB,EAAE;AAAA,IACvB,WAAW,EAAE;AAAA,IACb,aAAa,EAAE;AAAA,IACf,aAAa,EAAE;AAAA,IACf,SAAS,EAAE;AAAA,IACX,cAAc,EAAE;AAAA,IAChB,cAAc,EAAE;AAAA,IAChB,YAAY,EAAE;AAAA,IACd,oBAAoB,EAAE;AAAA,IACtB,cAAc,EAAE;AAAA,IAChB,cAAc,EAAE;AAAA,IAChB,eAAe,EAAE;AAAA,IACjB,gBAAgB,EAAE;AAAA,IAClB,iBAAiB,EAAE;AAAA,IACnB,iBAAiB,EAAE;AAAA,IACnB,qBAAqB,EAAE;AAAA,IACvB,mBAAmB,EAAE;AAAA,IACrB,cAAc,EAAE;AAAA,IAChB,kBAAkB,EAAE;AAAA,IACpB,mBAAmB,EAAE;AAAA,IACrB,WAAW,EAAE;AAAA,IACb,WAAW,EAAE;AAAA,IACb,aAAa,EAAE;AAAA,IACf,gBAAgB,EAAE;AAAA,IAClB,gBAAgB,EAAE;AAAA,IAClB,mBAAmB,EAAE;AAAA,IACrB,aAAa,EAAE;AAAA,IACf,eAAe,EAAE;AAAA,IACjB,WAAW,EAAE;AAAA,IACb,MAAM,EAAE;AAAA,IACR,WAAW,EAAE;AAAA,IACb,OAAO,EAAE;AAAA,IACT,iBAAiB,EAAE;AAAA,IACnB,YAAY,EAAE;AAAA,IACd,YAAY,EAAE;AAAA,IACd,gBAAgB,EAAE;AAAA,IAClB,gBAAgB,EAAE;AAAA,IAClB,eAAe,EAAE;AAAA,IACjB,YAAY,EAAE;AAAA,IACd,cAAc,EAAE;AAAA,IAChB,SAAS,EAAE;AAAA,IACX,aAAa,EAAE;AAAA,IACf,aAAa,EAAE;AAAA,IACf,cAAc,EAAE;AAAA,IAChB,iBAAiB,EAAE;AAAA,IACnB,eAAe,EAAE;AAAA,IACjB,eAAe,EAAE;AAAA,IACjB,gBAAgB,EAAE;AAAA,IAClB,mBAAmB,EAAE;AAAA,IACrB,qBAAqB,EAAE;AAAA,IACvB,eAAe,EAAE;AAAA,IACjB,WAAW,EAAE;AAAA,IACb,aAAa,EAAE;AAAA,IACf,gBAAgB,EAAE;AAAA,IAClB,aAAa,EAAE;AAAA,IACf,QAAQ,EAAE;AAAA,IACV,eAAe,EAAE;AAAA,IACjB,WAAW,EAAE;AAAA,IACb,SAAS,EAAE;AAAA,IACX,aAAa,EAAE;AAAA,IACf,WAAW,EAAE;AAAA,IACb,YAAY,EAAE;AAAA,IACd,eAAe,EAAE;AAAA,IACjB,eAAe,EAAE;AAAA,EACrB,CAAG,CAAC;AACJ;AACA,IAAI,8BAA8B;AAGlC,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,aAAa,IAAI;AAC5C,IAAI,gBAAgC,+BAAe,KAAK,EAAE;AAAA,EACxD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,aAAa,CAAC,MAAK,GAAI,IAAI;AAAA,EAC/B;AACA,CAAC;AAGD,IAAI,UAA0BE,sBAAQ,cAAc,OAAO,EAAE,WAAW,eAAe,SAAS,iBAAiCA,sBAAQ;AAAA,EACvI;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,GAAG;AAAA,EACP;AACA,CAAC;AACD,IAAI,YAA4BA,sBAAQ,cAAc,OAAO,EAAE,WAAW,eAAe,SAAS,iBAAiCA,sBAAQ;AAAA,EACzI;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,GAAG;AAAA,EACP;AACA,CAAC;AACD,IAAI,SAAyBA,sBAAQ,cAAc,OAAO,EAAE,WAAW,eAAe,SAAS,iBAAiCA,sBAAQ;AAAA,EACtI;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,GAAG;AAAA,EACP;AACA,CAAC;AACD,IAAI,qBAAqB;AACzB,IAAI,iBAAiB,CAAC,MAAM;AAC1B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,EACJ,IAAM;AACJ,QAAM,CAAC,QAAQ,IAAIA,MAAQ,SAAS,MAAM,gBAAgB,KAAK,MAAM,KAAK,OAAM,IAAK,GAAG,CAAC;AACzF,QAAM,CAAC,mBAAmB,oBAAoB,IAAIA,MAAQ,SAAS,EAAE;AACrE,QAAM,eAAe,eAAe,OAAO,cAAc;AACzD,QAAM,kBAAkBA,MAAQ;AAAA,IAC9B,CAAC,WAAW;AACV,2BAAqB,MAAM;AAC3B,6BAAuB,OAAO,SAAS,oBAAoB,MAAM;AAAA,IACnE;AAAA,IACA,CAAC,mBAAmB;AAAA,EACxB;AACE,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAQ,SAAQ;AACxD,QAAM,kBAAkBA,MAAQ,OAAO,YAAY;AACnD,kBAAgB,UAAU;AAC1BA,QAAQ,UAAU,MAAM;AACtB,QAAI,oBAAoB;AACtB;AACF,QAAI,gBAAgB,SAAS,GAAG;AAC9B,sBAAgB,CAAC,OAAO;AACtB,YAAI;AACJ,eAAO;AAAA,UACL,cAAc;AAAA,UACd,SAAS,gBAAgB;AAAA,UACzB,gBAAgB,KAAK,MAAM,OAAO,SAAS,GAAG,kBAAkB,OAAO,KAAK;AAAA,QACtF;AAAA,MACM,CAAC;AAAA,IACH,OAAO;AACL,sBAAgB,MAAM;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,MAAM,eAAe,CAAC;AAC1B,QAAM,qBAAqBA,MAAQ,OAAO,IAAI,gBAAe,CAAE;AAC/D,QAAM,eAAeA,MAAQ,OAAM;AACnC,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA,MAAQ,SAAS,CAAA,CAAE;AACvE,QAAM,gBAAgB,mBAAmB,OAAO,kBAAkB;AAClE,QAAM,eAAeA,MAAQ,YAAY,MAAM;AAC7C,QAAI,aAAa,YAAY,QAAQ;AACnC,aAAO,qBAAqB,aAAa,OAAO;AAChD,mBAAa,UAAU;AACvB,yBAAmB,QAAQ,MAAK;AAAA,IAClC;AAAA,EACF,GAAG,CAAA,CAAE;AACL,QAAM,iBAAiBA,MAAQ,OAAO,WAAW;AACjD,iBAAe,UAAU;AACzB,QAAM,cAAcA,MAAQ;AAAA,IAC1B,CAAC,QAAQ;AACP,YAAM,QAAQ,IAAI,OAAO,IAAI,QAAQ,0BAA0B,MAAM,GAAG,GAAG;AAC3E,UAAI,SAAS,eAAe;AAC5B,UAAI,eAAe,KAAK,IAAI,IAAI,IAAI;AACpC,UAAI,eAAe;AACnB,sBAAgB,MAAM;AACtB,4BAAsB,CAAA,CAAE;AACxB,YAAM,gBAAgB,CAAA;AACtB,YAAM,OAAO,YAAY;AACvB,YAAI,IAAI;AACR,YAAI,yBAAyB;AAC3B;AACF,cAAM,SAAS,YAAY,IAAG;AAC9B,cAAM,WAAW,OAAO;AACxB,YAAI,OAAO;AAAA,UACT;AAAA,YACE,GAAG;AAAA,YACH,GAAG;AAAA,YACH,OAAO,QAAQ;AAAA,YACf,QAAQ,KAAK,IAAI,cAAc,UAAU,OAAO,MAAM;AAAA,UAClE;AAAA,UACU,mBAAmB,QAAQ;AAAA,QACrC;AACQ,YAAI,OAAO,SAAS,YAAY;AAC9B,iBAAO,MAAM,KAAI;AAAA,QACnB;AACA,YAAI,QAAQ;AACZ,mBAAW,CAAC,KAAK,CAAC,KAAK,KAAK,QAAO,GAAI;AACrC,qBAAW,CAAC,KAAK,IAAI,KAAK,EAAE,QAAO,GAAI;AACrC,gBAAI;AACJ,oBAAQ,KAAK,MAAI;AAAA,cACf,KAAK,aAAa;AAAA,cAClB,KAAK,aAAa;AAChB,6BAAa,KAAK;AAClB;AAAA,cACF,KAAK,aAAa;AAAA,cAClB,KAAK,aAAa;AAChB,6BAAa,KAAK;AAClB;AAAA,cACF,KAAK,aAAa;AAChB,6BAAa,OAAO,KAAK,SAAS,YAAY,KAAK,KAAK,SAAQ,IAAK;AACrE;AAAA,cACF,KAAK,aAAa;AAAA,cAClB,KAAK,aAAa;AAChB,6BAAa,KAAK,KAAK,KAAK,IAAW;AACvC;AAAA,cACF,KAAK,aAAa;AAChB,6BAAa,KAAK;AAClB;AAAA,YAChB;AACY,gBAAI,eAAe,UAAU,MAAM,KAAK,UAAU,GAAG;AACnD,4BAAc,KAAK,CAAC,KAAK,MAAM,MAAM,CAAC;AACtC,sBAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AACA,cAAM,OAAO,YAAY,IAAG;AAC5B,YAAI,OAAO;AACT,gCAAsB,CAAC,GAAG,aAAa,CAAC;AAAA,QAC1C;AACA,wBAAgB,KAAK;AACrB,eAAO,gBAAgB,IAAI;AAC3B,cAAM,iBAAiB,MAAM,KAAK,gBAAgB,YAAY,OAAO,SAAS,GAAG,kBAAkB,OAAO,KAAK;AAC/G,wBAAgB;AAAA,UACd,SAAS,cAAc;AAAA,UACvB;AAAA,UACA;AAAA,QACV,CAAS;AACD,kCAA0B,OAAO,SAAS,uBAAuB,eAAe,aAAa;AAC7F,YAAI,SAAS,gBAAgB,MAAM;AACjC,mBAAS;AAAA,QACX,OAAO;AACL,oBAAU;AAAA,QACZ;AACA,cAAM,WAAW,OAAO;AACxB,cAAM,UAAU,KAAK,IAAI,UAAU,CAAC;AACpC,cAAM,SAAS,qBAAqB;AACpC,uBAAe,KAAK,KAAK,eAAe,MAAM;AAC9C,YAAI,eAAe,QAAQ,cAAc,SAAS,KAAK;AACrD,uBAAa,UAAU,OAAO,sBAAsB,IAAI;AAAA,QAC1D;AAAA,MACF;AACA,mBAAY;AACZ,mBAAa,UAAU,OAAO,sBAAsB,IAAI;AAAA,IAC1D;AAAA,IACA,CAAC,cAAc,QAAQ,QAAQ,sBAAsB,wBAAwB,IAAI;AAAA,EACrF;AACE,QAAM,UAAUA,MAAQ,YAAY,MAAM;AACxC,QAAI;AACJ,qBAAiB,OAAO,SAAS,cAAa;AAC9C,oBAAgB,MAAM;AACtB,0BAAsB,CAAA,CAAE;AACxB,8BAA0B,OAAO,SAAS,uBAAuB,CAAA,GAAI,EAAE;AACvE,iBAAY;AACZ,KAAC,KAAK,aAAa,OAAO,SAAS,UAAU,YAAY,OAAO,SAAS,GAAG,MAAK;AAAA,EACnF,GAAG,CAAC,cAAc,WAAW,eAAe,sBAAsB,CAAC;AACnE,QAAM,iBAAiBA,MAAQ;AAAA,IAC7B,CAAC,UAAU;AACT,sBAAgB,MAAM,OAAO,KAAK;AAClC,UAAI,oBAAoB;AACtB;AACF,UAAI,MAAM,OAAO,UAAU,IAAI;AAC7B,wBAAgB,MAAM;AACtB,8BAAsB,CAAA,CAAE;AACxB,qBAAY;AAAA,MACd,OAAO;AACL,oBAAY,MAAM,OAAO,KAAK;AAAA,MAChC;AAAA,IACF;AAAA,IACA,CAAC,aAAa,cAAc,iBAAiB,eAAe;AAAA,EAChE;AACEA,QAAQ,UAAU,MAAM;AACtB,QAAI,cAAc,eAAe,YAAY,MAAM;AACjD,sBAAgB,EAAE;AAClB,qBAAe,QAAQ,MAAM,EAAE,eAAe,KAAI,CAAE;AAAA,IACtD;AAAA,EACF,GAAG,CAAC,YAAY,gBAAgB,eAAe,CAAC;AAChD,QAAM,SAASA,MAAQ;AAAA,IACrB,CAAC,OAAO;AACN,UAAI;AACJ,OAAC,KAAK,MAAM,OAAO,SAAS,GAAG,oBAAoB,OAAO,SAAS,GAAG,KAAK,EAAE;AAC7E,UAAI,iBAAiB;AACnB;AACF,YAAM,YAAY,aAAa,gBAAgB,KAAK,aAAa;AACjE,sBAAgB;AAAA,QACd,GAAG;AAAA,QACH,eAAe;AAAA,MACvB,CAAO;AACD,gCAA0B,OAAO,SAAS,uBAAuB,eAAe,QAAQ;AAAA,IAC1F;AAAA,IACA,CAAC,cAAc,wBAAwB,aAAa;AAAA,EACxD;AACE,QAAM,SAASA,MAAQ;AAAA,IACrB,CAAC,OAAO;AACN,UAAI;AACJ,OAAC,KAAK,MAAM,OAAO,SAAS,GAAG,oBAAoB,OAAO,SAAS,GAAG,KAAK,EAAE;AAC7E,UAAI,iBAAiB;AACnB;AACF,UAAI,YAAY,aAAa,gBAAgB,KAAK,aAAa;AAC/D,UAAI,WAAW;AACb,oBAAY,aAAa;AAC3B,sBAAgB;AAAA,QACd,GAAG;AAAA,QACH,eAAe;AAAA,MACvB,CAAO;AACD,gCAA0B,OAAO,SAAS,uBAAuB,eAAe,QAAQ;AAAA,IAC1F;AAAA,IACA,CAAC,wBAAwB,eAAe,YAAY;AAAA,EACxD;AACE,QAAM,kBAAkBA,MAAQ;AAAA,IAC9B,CAAC,UAAU;AACT,WAAK,MAAM,WAAW,MAAM,YAAY,MAAM,YAAY,SAAS,UAAU,MAAM,QAAQ,UAAU;AACnG,gBAAO;AACP,cAAM,gBAAe;AACrB,cAAM,eAAc;AAAA,MACtB,WAAW,MAAM,QAAQ,SAAS;AAChC,YAAI,MAAM,UAAU;AAClB,iBAAM;AAAA,QACR,OAAO;AACL,iBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,SAAS,QAAQ,MAAM;AAAA,EAC5B;AACEA,QAAQ,UAAU,MAAM;AACtB,WAAO,MAAM;AACX,mBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,YAAY,CAAC;AACjB,QAAM,YAAYA,MAAQ,QAAQ,MAAM;AACtC,QAAI,IAAI,IAAI;AACZ,QAAI;AACJ,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe,aAAa,WAAW,MAAM,cAAc,GAAG,aAAa,OAAO,UAAU,aAAa,YAAY,IAAI,MAAM,EAAE;AACjI,UAAI,aAAa,iBAAiB,GAAG;AACnC,uBAAe,GAAG,aAAa,gBAAgB,CAAC,OAAO,YAAY;AAAA,MACrE;AAAA,IACF;AACA,UAAM,cAAc,CAAC,OAAO;AAC1B,SAAG,gBAAe;AAAA,IACpB;AACA,UAAM,uBAAuB,KAAK,QAAQ,KAAK,gBAAgB,OAAO,SAAS,aAAa,iBAAiB,OAAO,KAAK,KAAK,OAAO,GAAG;AACxI,UAAM,gBAAgB;AAAA,MACpB,OAAO,GAAG,oBAAoB;AAAA,IACpC;AACI,WAAuBA,sBAAQ;AAAA,MAC7B;AAAA,MACA;AAAA,QACE;AAAA,QACA,aAAa;AAAA,QACb,aAAa;AAAA,QACb,WAAW;AAAA,QACX,SAAS;AAAA,MACjB;AAAA,MACsBA,sBAAQ,cAAc,OAAO,EAAE,WAAW,mBAAkB,GAAoBA,sBAAQ;AAAA,QACtG;AAAA,QACA;AAAA,UACE,IAAI;AAAA,UACJ,eAAe,CAAC;AAAA,UAChB,eAAe;AAAA,UACf,KAAK;AAAA,UACL,UAAU;AAAA,UACV,OAAO;AAAA,UACP,UAAU,aAAa,SAAS;AAAA,UAChC,kBAAkB;AAAA,QAC5B;AAAA,MACA,GAAyBA,sBAAQ;AAAA,QACzB;AAAA,QACA;AAAA,UACE,cAAc;AAAA,UACd,eAAe,CAAC;AAAA,UAChB,UAAU,aAAa,SAAS;AAAA,UAChC,SAAS;AAAA,UACT,YAAY,KAAK,gBAAgB,OAAO,SAAS,aAAa,YAAY,OAAO,KAAK,OAAO;AAAA,QACvG;AAAA,QACQ;AAAA,MACR,GAAyBA,sBAAQ;AAAA,QACzB;AAAA,QACA;AAAA,UACE,cAAc;AAAA,UACd,eAAe,CAAC;AAAA,UAChB,UAAU,aAAa,SAAS;AAAA,UAChC,SAAS;AAAA,UACT,YAAY,KAAK,gBAAgB,OAAO,SAAS,aAAa,YAAY,OAAO,KAAK,OAAO;AAAA,QACvG;AAAA,QACQ;AAAA,MACR,GAAS,kBAAkB,UAA0BA,sBAAQ;AAAA,QACrD;AAAA,QACA;AAAA,UACE,cAAc;AAAA,UACd,eAAe,CAAC;AAAA,UAChB,eAAe;AAAA,UACf,UAAU,aAAa,SAAS;AAAA,UAChC,SAAS;AAAA,QACnB;AAAA,QACQ;AAAA,MACR,CAAO;AAAA,MACD,iBAAiB,SAAyBA,sBAAQ,cAAcA,MAAQ,UAAU,MAAsBA,sBAAQ,cAAc,OAAO,EAAE,WAAW,gBAAe,GAAoBA,sBAAQ,cAAc,OAAO,EAAE,eAAe,wBAAwB,YAAY,CAAC,GAAmBA,sBAAQ,cAAc,OAAO,EAAE,WAAW,mBAAmB,OAAO,cAAa,CAAE,CAAC,IAAoBA,sBAAQ,cAAc,OAAO,EAAE,WAAW,gBAAe,GAAoBA,sBAAQ,cAAc,SAAS,EAAE,SAAS,SAAQ,GAAI,gBAAgB,CAAC;AAAA,IAC7hB;AAAA,EACE,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAG;AACD,SAAuBA,sBAAQ,cAAcA,MAAQ,UAAU,MAAsBA,sBAAQ;AAAA,IAC3F;AAAA,IACA;AAAA,MACE,eAAe;AAAA,MACf,qBAAqB,EAAE;AAAA,MACvB,WAAW,EAAE;AAAA,MACb,aAAa,EAAE;AAAA,MACf,aAAa,EAAE;AAAA,MACf,WAAW,EAAE;AAAA,MACb,YAAY,EAAE;AAAA,MACd,SAAS,EAAE;AAAA,MACX,cAAc,EAAE;AAAA,MAChB,cAAc,EAAE;AAAA,MAChB,YAAY,EAAE;AAAA,MACd,oBAAoB,EAAE;AAAA,MACtB,cAAc,EAAE;AAAA,MAChB,cAAc,EAAE;AAAA,MAChB,eAAe,EAAE;AAAA,MACjB,gBAAgB,EAAE;AAAA,MAClB,iBAAiB,EAAE;AAAA,MACnB,iBAAiB,EAAE;AAAA,MACnB,qBAAqB,EAAE;AAAA,MACvB,mBAAmB,EAAE;AAAA,MACrB,cAAc,EAAE;AAAA,MAChB,kBAAkB,EAAE;AAAA,MACpB,mBAAmB,EAAE;AAAA,MACrB,aAAa,EAAE;AAAA,MACf,WAAW,EAAE;AAAA,MACb,WAAW,EAAE;AAAA,MACb,aAAa,EAAE;AAAA,MACf,gBAAgB,EAAE;AAAA,MAClB,gBAAgB,EAAE;AAAA,MAClB,mBAAmB,EAAE;AAAA,MACrB,aAAa,EAAE;AAAA,MACf,wBAAwB,EAAE;AAAA,MAC1B,aAAa,EAAE;AAAA,MACf,aAAa,EAAE;AAAA,MACf,0BAA0B,EAAE;AAAA,MAC5B,cAAc,EAAE;AAAA,MAChB,mBAAmB,EAAE;AAAA,MACrB,WAAW,EAAE;AAAA,MACb,MAAM,EAAE;AAAA,MACR,WAAW,EAAE;AAAA,MACb,WAAW,EAAE;AAAA,MACb,aAAa,EAAE;AAAA,MACf,OAAO,EAAE;AAAA,MACT,iBAAiB,EAAE;AAAA,MACnB,YAAY,EAAE;AAAA,MACd,YAAY,EAAE;AAAA,MACd,gBAAgB,EAAE;AAAA,MAClB,gBAAgB,EAAE;AAAA,MAClB,eAAe,EAAE;AAAA,MACjB,YAAY,EAAE;AAAA,MACd,cAAc,EAAE;AAAA,MAChB,SAAS,EAAE;AAAA,MACX,aAAa,EAAE;AAAA,MACf,aAAa,EAAE;AAAA,MACf,cAAc,EAAE;AAAA,MAChB,iBAAiB,EAAE;AAAA,MACnB,eAAe,EAAE;AAAA,MACjB,eAAe,EAAE;AAAA,MACjB,gBAAgB,EAAE;AAAA,MAClB,mBAAmB,EAAE;AAAA,MACrB,qBAAqB,EAAE;AAAA,MACvB,eAAe,EAAE;AAAA,MACjB,WAAW,EAAE;AAAA,MACb,aAAa,EAAE;AAAA,MACf,gBAAgB,EAAE;AAAA,MAClB,aAAa,EAAE;AAAA,MACf,QAAQ,EAAE;AAAA,MACV,eAAe,EAAE;AAAA,MACjB,WAAW,EAAE;AAAA,MACb,SAAS,EAAE;AAAA,MACX,aAAa,EAAE;AAAA,MACf,WAAW,EAAE;AAAA,MACb,YAAY,EAAE;AAAA,MACd,eAAe,EAAE;AAAA,MACjB,eAAe,EAAE;AAAA,MACjB,aAAa,EAAE;AAAA,IACrB;AAAA,EACA,GAAK,SAAS;AACd;AACA,IAAI,2BAA2B;AAI/B,IAAI,SAAS,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,EAAE,eAAe,EAAE;AAC1D,IAAI,cAA8B,+BAAe,OAAO,EAAE;AAAA,EACxD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,cAAc,CAAC,OAAM,GAAI,IAAI;AAAA,EACjC;AACA,CAAC;AACD,IAAI,cAAc,CAAC,MAAM;AACvB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,CAAC,OAAO,QAAQ,IAAIC,eAAQ,SAAS,KAAK;AAChD,SAAuBA,+BAAQ,cAAc,uBAAuB;AAAA,IAClE,OAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAM,OAAO,IAAI,aAAa,OAAO;AAAA,MACrC,KAAK,OAAO,IAAI,aAAa;AAAA,MAC7B,OAAO,OAAO,QAAQ;AAAA,MACtB,QAAQ,OAAO;AAAA,IACrB;AAAA,IACI,WAAW;AAAA,IACX,gBAAgB;AAAA,EACpB,GAAqBA,+BAAQ,cAAc,aAAa;AAAA,IACpD,cAAc,OAAO;AAAA,IACrB,eAAe;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,IACR,SAAS,CAAC,MAAM,EAAE,OAAO,kBAAkB,GAAG,MAAM,MAAM;AAAA,IAC1D,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,IACxC,WAAW,CAAC,MAAM;AAChB,UAAI,EAAE,QAAQ,SAAS;AACrB,iBAAS,KAAK;AAAA,MAChB,WAAW,EAAE,QAAQ,UAAU;AAC7B,gBAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,WAAW;AAAA,EACf,CAAG,CAAC;AACJ;AAIA,IAAI,cAAc;AAClB,SAAS,YAAY,KAAK,MAAM,OAAO,iBAAiB;AACtD,MAAI,IAAI;AACR,QAAM,IAAI,gBAAgB,IAAI;AAC9B,UAAQ,MAAM,KAAK,KAAK,OAAO,SAAS,EAAE,YAAY,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK,MAAM,KAAK,MAAM,OAAO,KAAK;AACrH;AACA,SAAS,cAAc,KAAK,OAAO,GAAG,UAAU,cAAc,gBAAgB,gBAAgB,gBAAgB,iBAAiB;AAC7H,MAAI,QAAQ,CAAA;AACZ,MAAI,iBAAiB,QAAQ;AAC3B,UAAM;AAAA,MACJ,GAAG,aAAa,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,YAAY,KAAK,MAAM,OAAO,eAAe,CAAC;AAAA,IAC9G;AAAA,EACE;AACA,MAAI,MAAM,SAAS,KAAK,gBAAgB;AACtC,UAAM,UAAU,MAAM,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,MAAM;AACtD,YAAQ,MAAM,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;AAAA,EAC7C;AACA,QAAM,KAAK,IAAI,YAAY,EAAE,KAAK,EAAE,QAAQ,MAAM,EAAE,SAAS,SAAS,IAAI,GAAG;AAC7E,QAAM,UAAU,KAAK,IAAI,GAAG,KAAK;AACjC,QAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,cAAc,GAAG,KAAK,IAAI,KAAK,MAAM,cAAc,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC;AAC1G,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO;AAAA,EACX;AACA;AACA,SAAS,eAAe,SAAS,MAAM,sBAAsB,aAAa,gBAAgB,gBAAgB,OAAO,iBAAiB,iBAAiB;AACjJ,QAAM,UAAUC,MAAQ,OAAO,IAAI;AACnC,QAAM,0BAA0BA,MAAQ,OAAO,oBAAoB;AACnE,QAAM,WAAWA,MAAQ,OAAO,KAAK;AACrC,UAAQ,UAAU;AAClB,0BAAwB,UAAU;AAClC,WAAS,UAAU;AACnB,QAAM,CAAC,QAAQ,GAAG,IAAIA,MAAQ,QAAQ,MAAM;AAC1C,QAAI,OAAO,WAAW;AACpB,aAAO,CAAC,MAAM,IAAI;AACpB,UAAM,YAAY,SAAS,cAAc,QAAQ;AACjD,cAAU,MAAM,SAAS,IAAI;AAC7B,cAAU,MAAM,SAAS,IAAI;AAC7B,cAAU,MAAM,UAAU,IAAI;AAC9B,WAAO,CAAC,WAAW,UAAU,WAAW,MAAM,EAAE,OAAO,MAAK,CAAE,CAAC;AAAA,EACjE,GAAG,CAAA,CAAE;AACLA,QAAQ,gBAAgB,MAAM;AAC5B,QAAI;AACF,eAAS,gBAAgB,OAAO,MAAM;AACxC,WAAO,MAAM;AACX,gBAAU,OAAO,SAAS,OAAO,OAAM;AAAA,IACzC;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AACX,QAAM,UAAUA,MAAQ,OAAO,EAAE;AACjC,QAAM,cAAcA,MAAQ,OAAM;AAClC,QAAM,CAAC,cAAc,gBAAgB,IAAIA,MAAQ,SAAQ;AACzDA,QAAQ,gBAAgB,MAAM;AAC5B,UAAM,WAAW,wBAAwB;AACzC,QAAI,aAAa,UAAU,QAAQ,MAAM,iBAAiB;AACxD;AACF,QAAI,cAAc,KAAK,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,SAAS,GAAG,CAAC;AACnE,QAAI,WAAW;AACf,QAAI,cAAc,QAAQ,WAAW,cAAc,GAAG;AACpD;AACA,iBAAW;AAAA,IACb;AACA,UAAM,cAAc;AAAA,MAClB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO,QAAQ;AAAA,MACf,QAAQ,KAAK,IAAI,QAAQ,SAAS,WAAW;AAAA,IACnD;AACI,UAAM,kBAAkB;AAAA,MACtB,GAAG;AAAA,MACH,GAAG,QAAQ,UAAU;AAAA,MACrB,OAAO,QAAQ;AAAA,MACf,QAAQ;AAAA,IACd;AACI,UAAM,KAAK,YAAY;AACrB,YAAM,YAAY,SAAS,aAAa,gBAAgB,MAAM;AAC9D,YAAM,gBAAgB,WAAW,IAAI,SAAS,iBAAiB,gBAAgB,MAAM,IAAI;AACzF,UAAI;AACJ,UAAI,OAAO,cAAc,UAAU;AACjC,gBAAQ;AAAA,MACV,OAAO;AACL,gBAAQ,MAAM,kBAAkB,SAAS;AAAA,MAC3C;AACA,UAAI,kBAAkB,QAAQ;AAC5B,YAAI,OAAO,kBAAkB,UAAU;AACrC,kBAAQ,CAAC,GAAG,OAAO,GAAG,aAAa;AAAA,QACrC,OAAO;AACL,kBAAQ,CAAC,GAAG,OAAO,GAAG,MAAM,kBAAkB,aAAa,CAAC;AAAA,QAC9D;AAAA,MACF;AACA,kBAAY,UAAU;AACtB,uBAAiB,KAAK;AAAA,IACxB;AACA,SAAK,GAAE;AAAA,EACT,GAAG,CAAC,gBAAgB,QAAQ,OAAO,CAAC;AACpC,SAAOA,MAAQ,QAAQ,MAAM;AAC3B,QAAI;AACJ,UAAM,SAAS,MAAM;AACnB,UAAI,QAAQ,MAAM,iBAAiB,GAAG;AACpC,eAAO;AAAA,MACT;AACA,UAAI,QAAQ,MAAM;AAChB,eAAO,QAAQ,IAAI,CAAC,MAAM;AACxB,cAAI,kBAAkB,CAAC;AACrB,mBAAO;AACT,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO;AAAA,UACnB;AAAA,QACQ,CAAC;AAAA,MACH;AACA,UAAI,OAAO,GAAG,SAAS,QAAQ,aAAa,IAAI,SAAS,QAAQ,UAAU;AAC3E,aAAO,QAAQ,IAAI,CAAC,GAAG,aAAa;AAClC,YAAI,kBAAkB,CAAC;AACrB,iBAAO;AACT,YAAI,QAAQ,QAAQ,EAAE,EAAE,MAAM,QAAQ;AACpC,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO,QAAQ,QAAQ,EAAE,EAAE;AAAA,UACvC;AAAA,QACQ;AACA,YAAI,iBAAiB,UAAU,YAAY,YAAY,WAAW,EAAE,OAAO,QAAQ;AACjF,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,OAAO;AAAA,UACnB;AAAA,QACQ;AACA,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACV;AACQ,gBAAQ,QAAQ,EAAE,EAAE,IAAI,EAAE;AAC1B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,QAAI,SAAS,OAAM;AACnB,QAAI,aAAa;AACjB,QAAI,YAAY;AAChB,UAAM,aAAa,CAAA;AACnB,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAO,GAAI;AACrC,oBAAc,EAAE;AAChB,UAAI,EAAE,SAAS,UAAU,EAAE,OAAO,GAAG;AACnC,qBAAa,EAAE;AACf,mBAAW,KAAK,CAAC;AAAA,MACnB;AAAA,IACF;AACA,QAAI,aAAa,eAAe,WAAW,SAAS,GAAG;AACrD,YAAM,YAAY,CAAC,GAAG,MAAM;AAC5B,YAAM,QAAQ,cAAc;AAC5B,UAAI,YAAY;AAChB,eAAS,KAAK,GAAG,KAAK,WAAW,QAAQ,MAAM;AAC7C,cAAM,IAAI,WAAW,EAAE;AACvB,cAAM,aAAa,KAAK,OAAO,CAAC,EAAE,SAAS,OAAO,KAAK,KAAK;AAC5D,cAAM,QAAQ,OAAO,WAAW,SAAS,IAAI,YAAY,KAAK,IAAI,WAAW,KAAK,MAAM,QAAQ,QAAQ,CAAC;AACzG,kBAAU,CAAC,IAAI;AAAA,UACb,GAAG,OAAO,CAAC;AAAA,UACX,YAAY;AAAA,UACZ,OAAO,OAAO,CAAC,EAAE,QAAQ;AAAA,QACnC;AACQ,qBAAa;AAAA,MACf;AACA,eAAS;AAAA,IACX;AACA,WAAO;AAAA,EACT,GAAG,CAAC,aAAa,SAAS,KAAK,cAAc,OAAO,gBAAgB,gBAAgB,eAAe,CAAC;AACtG;AAGA,SAAS,SAAS,KAAK,MAAM;AAC3B,MAAI,QAAQ;AACV,WAAO;AACT,MAAI,IAAI,SAAS,KAAK,IAAI,WAAW,GAAG,GAAG;AACzC,UAAM,UAAU,OAAO,SAAS,IAAI,MAAM,CAAC,CAAC;AAC5C,QAAI,YAAY,KAAK;AACnB,aAAO;AAAA,EACX,OAAO;AACL,QAAI,QAAQ,KAAK;AACf,aAAO;AAAA,EACX;AACA,SAAO;AACT;AACA,SAAS,SAAS,QAAQ,MAAM;AAC9B,MAAI,OAAO,WAAW;AACpB,WAAO;AACT,MAAI,WAAW;AACf,MAAI,YAAY;AAChB,MAAI,UAAU;AACd,MAAI,WAAW;AACf,QAAM,QAAQ,OAAO,MAAM,GAAG;AAC9B,QAAM,MAAM,MAAM,IAAG;AACrB,MAAI,CAAC,SAAS,KAAK,IAAI;AACrB,WAAO;AACT,aAAW,SAAS,OAAO;AACzB,YAAQ,OAAK;AAAA,MACX,KAAK;AACH,mBAAW;AACX;AAAA,MACF,KAAK;AACH,oBAAY;AACZ;AAAA,MACF,KAAK;AACH,kBAAU;AACV;AAAA,MACF,KAAK;AACH,mBAAW;AACX;AAAA,MACF,KAAK;AACH,YAAI,aAAa,OAAO;AACtB,qBAAW;AAAA,QACb,OAAO;AACL,qBAAW;AAAA,QACb;AACA;AAAA,IACR;AAAA,EACE;AACA,SAAO,KAAK,WAAW,WAAW,KAAK,YAAY,YAAY,KAAK,aAAa,aAAa,KAAK,YAAY;AACjH;AAIA,SAAS,qBAAqB,eAAe,kBAAkB,eAAe,gBAAgB,aAAa,aAAa;AACtH,QAAM,aAAaC,eAAQ;AAAA,IACzB,CAAC,OAAO,QAAQ,QAAQ,YAAY;AAClC,UAAI,IAAI;AACR,WAAK,gBAAgB,UAAU,gBAAgB,iBAAiB,UAAU,QAAQ;AAChF,gBAAQ;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,YACL,GAAG,MAAM,KAAK,CAAC;AAAA,YACf,GAAG,MAAM,KAAK,CAAC;AAAA,YACf,OAAO;AAAA,YACP,QAAQ;AAAA,UACpB;AAAA,QACA;AAAA,MACM;AACA,YAAM,eAAe,kBAAkB,YAAY,UAAU,YAAY;AACzE,YAAM,sBAAsB,mBAAmB,WAAW;AAC1D,YAAM,mBAAmB,gBAAgB,WAAW;AACpD,UAAI,SAAS;AAAA,QACX,SAAS,UAAU,SAAS,SAAS;AAAA,UACnC,GAAG;AAAA,UACH,YAAY,YAAY,UAAU,MAAM,KAAK,cAAc,YAAY,OAAO,SAAS,GAAG,eAAe,OAAO,KAAK,KAAK,CAAA;AAAA,QACpI;AAAA,QACQ,SAAS,sBAAsB,cAAc,UAAU,iBAAiB,MAAK;AAAA,QAC7E,MAAM,mBAAmB,cAAc,OAAO,iBAAiB,MAAK;AAAA,MAC5E;AACM,YAAM,eAAe,WAAW,gBAAgB,gBAAgB,gBAAgB;AAChF,UAAI,gBAAgB,OAAO,YAAY,UAAU,cAAc,YAAY,QAAQ;AACjF,iBAAS;AAAA,UACP,GAAG;AAAA,UACH,SAAS;AAAA,YACP,GAAG,OAAO;AAAA,YACV,YAAY,CAAC,GAAG,cAAc,QAAQ,YAAY,cAAc,QAAQ,KAAK;AAAA,UACzF;AAAA,QACA;AAAA,MACM;AACA,uBAAiB,QAAQ,MAAM;AAAA,IACjC;AAAA,IACA,CAAC,gBAAgB,eAAe,eAAe,aAAa,aAAa,gBAAgB;AAAA,EAC7F;AACE,QAAM,kBAAkBA,eAAQ;AAAA,IAC9B,CAAC,SAAS,QAAQ,eAAe;AAC/B,gBAAU,WAAW,OAAO,UAAU,cAAc;AACpD,UAAI,WAAW,QAAQ;AACrB,kBAAU,QAAQ,IAAI,MAAM;AAAA,MAC9B;AACA,UAAI;AACJ,UAAI,gBAAgB,eAAe,QAAQ,SAAS,GAAG;AACrD,iBAAS;AAAA,UACP,SAAS;AAAA,UACT,SAAS,iBAAiB,MAAK;AAAA,UAC/B,MAAM;AAAA,QAChB;AAAA,MACM,OAAO;AACL,cAAM,aAAa,cAAc,kBAAkB;AACnD,cAAM,cAAc,cAAc,mBAAmB;AACrD,cAAM,UAAU,CAAC,aAAa,SAAS,cAAc;AACrD,iBAAS;AAAA,UACP;AAAA,UACA,SAAS,cAAc,cAAc,UAAU,iBAAiB,MAAK;AAAA,UACrE,MAAM;AAAA,QAChB;AAAA,MACM;AACA,uBAAiB,QAAQ,KAAK;AAAA,IAChC;AAAA,IACA,CAAC,gBAAgB,eAAe,eAAe,aAAa,gBAAgB;AAAA,EAChF;AACE,QAAM,qBAAqBA,eAAQ;AAAA,IACjC,CAAC,SAAS,QAAQ,eAAe;AAC/B,gBAAU,WAAW,OAAO,UAAU,cAAc;AACpD,UAAI,WAAW,QAAQ;AACrB,kBAAU,QAAQ,IAAI,MAAM;AAAA,MAC9B;AACA,UAAI;AACJ,UAAI,mBAAmB,eAAe,QAAQ,SAAS,GAAG;AACxD,iBAAS;AAAA,UACP,SAAS;AAAA,UACT,MAAM,iBAAiB,MAAK;AAAA,UAC5B,SAAS;AAAA,QACnB;AAAA,MACM,OAAO;AACL,cAAM,aAAa,cAAc,kBAAkB;AACnD,cAAM,WAAW,cAAc,gBAAgB;AAC/C,cAAM,UAAU,CAAC,aAAa,SAAS,cAAc;AACrD,iBAAS;AAAA,UACP;AAAA,UACA,MAAM,WAAW,cAAc,OAAO,iBAAiB,MAAK;AAAA,UAC5D,SAAS;AAAA,QACnB;AAAA,MACM;AACA,uBAAiB,QAAQ,KAAK;AAAA,IAChC;AAAA,IACA,CAAC,gBAAgB,eAAe,eAAe,aAAa,gBAAgB;AAAA,EAChF;AACE,SAAO,CAAC,YAAY,iBAAiB,kBAAkB;AACzD;AAIA,SAAS,qBAAqB,wBAAwB,gBAAgB,iBAAiB,iBAAiB,MAAM;AAC5G,QAAM,sCAAsCC,MAAQ;AAAA,IAClD,CAAC,SAAS;AACR,UAAI;AACJ,UAAI,2BAA2B,MAAM;AACnC,cAAM,SAAS,CAAA;AACf,iBAAS,IAAI,KAAK,GAAG,IAAI,KAAK,IAAI,KAAK,QAAQ,KAAK;AAClD,gBAAM,MAAM,CAAA;AACZ,mBAAS,IAAI,KAAK,GAAG,IAAI,KAAK,IAAI,KAAK,OAAO,KAAK;AACjD,gBAAI,IAAI,KAAK,KAAK,MAAM;AACtB,kBAAI,KAAK;AAAA,gBACP,MAAM,aAAa;AAAA,gBACnB,cAAc;AAAA,cAC9B,CAAe;AAAA,YACH,OAAO;AACL,kBAAI,KAAK,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,YACjC;AAAA,UACF;AACA,iBAAO,KAAK,GAAG;AAAA,QACjB;AACA,eAAO;AAAA,MACT;AACA,cAAQ,KAAK,0BAA0B,OAAO,SAAS,uBAAuB,MAAM,gBAAgB,MAAM,MAAM,OAAO,KAAK,CAAA;AAAA,IAC9H;AAAA,IACA,CAAC,gBAAgB,QAAQ,gBAAgB,wBAAwB,IAAI;AAAA,EACzE;AACE,QAAM,6BAA6B,2BAA2B,SAAS,sCAAsC;AAC7G,QAAM,8BAA8BA,MAAQ;AAAA,IAC1C,CAAC,SAAS;AACR,UAAI,+BAA+B;AACjC,eAAO,CAAA;AACT,YAAM,UAAU;AAAA,QACd,GAAG;AAAA,QACH,GAAG,KAAK,IAAI;AAAA,MACpB;AACM,UAAI,QAAQ,IAAI,GAAG;AACjB,gBAAQ,IAAI;AACZ,gBAAQ;AACR,cAAM,IAAI,2BAA2B,SAAS,gBAAgB,MAAM;AACpE,YAAI,OAAO,MAAM,YAAY;AAC3B,iBAAO;AAAA;AAAA,aAEJ,MAAM,EAAC,GAAI,IAAI,CAAC,QAAQ;AAAA,cACvB,EAAE,MAAM,aAAa,SAAS,cAAc,MAAK;AAAA,cACjD,GAAG;AAAA,YACjB,CAAa;AAAA;AAAA,QAEL;AACA,eAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,aAAa,SAAS,cAAc,SAAS,GAAG,GAAG,CAAC;AAAA,MACrF;AACA,aAAO,2BAA2B,SAAS,gBAAgB,MAAM;AAAA,IACnE;AAAA,IACA,CAAC,gBAAgB,QAAQ,4BAA4B,eAAe;AAAA,EACxE;AACE,QAAM,uBAAuB,2BAA2B,SAAS,8BAA8B;AAC/F,SAAO,CAAC,sBAAsB,0BAA0B;AAC1D;AAGA,SAAS,oBAAoB,MAAM;AACjC,MAAI,IAAI;AACR,MAAI,KAAK,aAAa,QAAQ;AAC5B,WAAO;AAAA,MACL,WAAW,KAAK;AAAA,MAChB,UAAU,KAAK;AAAA,MACf,QAAQ;AAAA,IACd;AAAA,EACE;AACA,UAAQ,KAAK,MAAI;AAAA,IACf,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,WAAW,KAAK,SAAS,OAAO,SAAS,KAAK,SAAS,QAAQ,UAAU,KAAK,SAAS,uBAAuB,kBAAkB;AAAA,QAChI,UAAU,KAAK;AAAA,QACf,QAAQ;AAAA,MAChB;AAAA,IACI,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,WAAW,KAAK;AAAA,QAChB,UAAU,KAAK;AAAA,QACf,QAAQ;AAAA,MAChB;AAAA,IACI,KAAK,aAAa;AAAA,IAClB,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,WAAW,KAAK;AAAA,QAChB,UAAU,KAAK;AAAA,QACf,QAAQ;AAAA,MAChB;AAAA,IACI,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,WAAW,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,QACtC,UAAU,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,QACrC,QAAQ;AAAA,MAChB;AAAA,IACI,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,YAAY,KAAK,KAAK,gBAAgB,OAAO,KAAK,KAAK;AAAA,QACvD,UAAU,KAAK;AAAA,QACf,QAAQ;AAAA,MAChB;AAAA,IACI,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,YAAY,KAAK,KAAK,gBAAgB,OAAO,KAAK,KAAK;AAAA,QACvD,UAAU,KAAK;AAAA,QACf,QAAQ;AAAA,MAChB;AAAA,IACI,KAAK,aAAa;AAAA,IAClB,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,WAAW,KAAK;AAAA,QAChB,UAAU,KAAK;AAAA,QACf,QAAQ;AAAA,MAChB;AAAA,IACI,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,WAAW,KAAK;AAAA,QAChB,UAAU,KAAK;AAAA,QACf,QAAQ;AAAA,MAChB;AAAA,IACI,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,WAAW;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,MAChB;AAAA,IACI,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,WAAW;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,MAChB;AAAA,IACI;AACE,kBAAgB;AAAA,EACtB;AACA;AACA,SAAS,0BAA0B,OAAO,eAAe;AACvD,QAAM,aAAa,MAAM,IAAI,CAAC,KAAK,UAAU;AAC3C,UAAM,cAAc,cAAc,KAAK;AACvC,WAAO,IAAI,IAAI,CAAC,SAAS;AACvB,UAAI,KAAK,SAAS,UAAU,KAAK,KAAK,CAAC,MAAM;AAC3C,eAAO;AAAA,UACL,WAAW;AAAA,UACX,UAAU;AAAA,UACV,QAAQ;AAAA,QAClB;AACM,aAAO,oBAAoB,IAAI;AAAA,IACjC,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;AACA,SAAS,eAAe,KAAK,WAAW;AACtC,OAAK,YAAY,aAAa,WAAW,KAAK,GAAG,GAAG;AAClD,UAAM,IAAI,IAAI,QAAQ,MAAM,IAAI,CAAC;AAAA,EACnC;AACA,SAAO;AACT;AACA,SAAS,iBAAiB,YAAY;AACpC,MAAI,IAAI;AACR,QAAM,QAAQ,CAAA;AACd,aAAW,OAAO,YAAY;AAC5B,UAAM,OAAO,CAAA;AACb,eAAW,QAAQ,KAAK;AACtB,UAAI,KAAK,WAAW,OAAO;AACzB,aAAK,MAAM,MAAM,KAAK,KAAK,aAAa,OAAO,SAAS,GAAG,SAAQ,MAAO,OAAO,KAAK,EAAE;AAAA,MAC1F,WAAW,KAAK,WAAW,gBAAgB;AACzC,aAAK,KAAK,KAAK,UAAU,IAAI,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,MACxE,OAAO;AACL,aAAK,KAAK,eAAe,KAAK,WAAW,KAAK,CAAC;AAAA,MACjD;AAAA,IACF;AACA,UAAM,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,EAC3B;AACA,SAAO,MAAM,KAAK,IAAI;AACxB;AACA,SAAS,sBAAsB,MAAM;AACnC,SAAO,KAAK,QAAQ,OAAO,MAAM,EAAE,QAAQ,UAAU,CAAC,UAAU,iBAAiB,OAAO,MAAM,MAAM,CAAC;AACvG;AACA,SAAS,2BAA2B,UAAU;AAC5C,SAAO,MAAM,SAAS,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,QAAQ,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM,IAAI;AACrH;AACA,SAAS,oBAAoB,KAAK;AAChC,SAAO,IAAI,QAAQ,WAAW,GAAG,EAAE,QAAQ,SAAS,GAAG,EAAE,QAAQ,SAAS,GAAG,EAAE,QAAQ,UAAU,GAAG;AACtG;AACA,SAAS,iBAAiB,YAAY;AACpC,MAAI,IAAI;AACR,QAAM,QAAQ,CAAA;AACd,QAAM,KAAK,4EAA4E,gBAAgB;AACvG,aAAW,OAAO,YAAY;AAC5B,UAAM,KAAK,MAAM;AACjB,eAAW,QAAQ,KAAK;AACtB,YAAM,YAAY,eAAe,KAAK,MAAM;AAC5C,UAAI,KAAK,WAAW,OAAO;AACzB,cAAM;AAAA,UACJ,OAAO,SAAS,aAAa,KAAK,QAAQ,KAAK,sBAAsB,KAAK,SAAS,CAAC;AAAA,QAC9F;AAAA,MACM,OAAO;AACL,YAAI,KAAK,WAAW,gBAAgB;AAClC,gBAAM;AAAA,YACJ,OAAO,SAAS,QAAQ,KAAK,UAAU;AAAA,cACrC,CAAC,GAAG,QAAQ,qBAAqB,2BAA2B,KAAK,SAAS,GAAG,CAAC,CAAC,MAAM,sBAAsB,CAAC,IAAI;AAAA,YAC9H,EAAc,KAAK,EAAE,CAAC;AAAA,UACtB;AAAA,QACQ,OAAO;AACL,gBAAM;AAAA,YACJ,qBAAqB;AAAA,eAClB,MAAM,KAAK,KAAK,aAAa,OAAO,SAAS,GAAG,eAAe,OAAO,KAAK;AAAA,YAC1F,CAAa,IAAI,SAAS,IAAI,sBAAsB,KAAK,SAAS,CAAC;AAAA,UACnE;AAAA,QACQ;AAAA,MACF;AAAA,IACF;AACA,UAAM,KAAK,OAAO;AAAA,EACpB;AACA,QAAM,KAAK,kBAAkB;AAC7B,SAAO,MAAM,KAAK,EAAE;AACtB;AACA,SAAS,sBAAsB,OAAO,eAAe;AACnD,QAAM,aAAa,0BAA0B,OAAO,aAAa;AACjE,QAAM,YAAY,iBAAiB,UAAU;AAC7C,QAAM,WAAW,iBAAiB,UAAU;AAC5C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,WAAW,MAAM;AACxB,MAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACxB,QAAM,WAAW,SAAS,cAAc,MAAM;AAC9C,WAAS,YAAY,KAAK,QAAQ,WAAW,GAAG;AAChD,QAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,MAAI,YAAY;AACd,WAAO;AACT,QAAM,SAAS,CAAC,OAAO;AACvB,QAAM,SAAS,CAAA;AACf,MAAI;AACJ,SAAO,OAAO,SAAS,GAAG;AACxB,UAAM,KAAK,OAAO,IAAG;AACrB,QAAI,OAAO;AACT;AACF,QAAI,cAAc,oBAAoB,GAAG,aAAa,SAAS;AAC7D,aAAO,KAAK,GAAG,CAAC,GAAG,GAAG,QAAQ,EAAE,SAAS;AAAA,IAC3C,WAAW,cAAc,qBAAqB;AAC5C,UAAI,YAAY,QAAQ;AACtB,eAAO,KAAK,OAAO;AAAA,MACrB;AACA,gBAAU,CAAA;AACV,aAAO,KAAK,GAAG,CAAC,GAAG,GAAG,QAAQ,EAAE,SAAS;AAAA,IAC3C,WAAW,cAAc,sBAAsB;AAC7C,YAAM,QAAQ,GAAG,UAAU,IAAI;AAC/B,YAAM,iBAAiB,MAAM,SAAS,WAAW,KAAK,MAAM,SAAS,CAAC,EAAE,aAAa;AACrF,YAAM,OAAO,iBAAiB,MAAM,SAAS,CAAC,IAAI;AAClD,YAAM,kBAAkB,QAAQ,OAAO,SAAS,KAAK,SAAS,YAAY,KAAK,KAAK,SAAS,CAAC,EAAE,aAAa;AAC7G,YAAM,MAAM,MAAM,iBAAiB,IAAI;AACvC,iBAAW,MAAM,KAAK;AACpB,WAAG,YAAY,IAAI;AAAA,MACrB;AACA,YAAM,iBAAiB,MAAM,aAAa,eAAe;AACzD,YAAM,eAAe,KAAK,MAAM,aAAa,YAAY,MAAM,OAAO,KAAK;AAC3E,UAAI,MAAM,cAAc,GAAG,MAAM,MAAM;AACrC,mBAAW,OAAO,SAAS,QAAQ,KAAK;AAAA;AAAA,UAEtC,WAAW,MAAM,KAAK,MAAM,cAAc,GAAG,MAAM,OAAO,SAAS,GAAG,aAAa,MAAM,MAAM,OAAO,KAAK;AAAA,UAC3G,YAAY,KAAK,MAAM,gBAAgB,OAAO,KAAK;AAAA,UACnD,QAAQ;AAAA,QAClB,CAAS;AAAA,MACH,WAAW,MAAM,cAAc,IAAI,MAAM,MAAM;AAC7C,cAAM,YAAY,MAAM,iBAAiB,IAAI;AAC7C,mBAAW,OAAO,SAAS,QAAQ,KAAK;AAAA,UACtC,UAAU,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,MAAM;AAClC,gBAAI;AACJ,oBAAQ,MAAM,EAAE,aAAa,eAAe,MAAM,OAAO,MAAM;AAAA,UACjE,CAAC;AAAA,UACD,WAAW,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,MAAM;AACnC,gBAAI;AACJ,oBAAQ,MAAM,EAAE,gBAAgB,OAAO,MAAM;AAAA,UAC/C,CAAC;AAAA,UACD,QAAQ;AAAA,QAClB,CAAS;AAAA,MACH,WAAW,mBAAmB,MAAM;AAClC,mBAAW,OAAO,SAAS,QAAQ,KAAK;AAAA,UACtC,UAAU,oBAAoB,cAAc;AAAA,UAC5C,YAAY,KAAK,MAAM,gBAAgB,OAAO,KAAK;AAAA,UACnD,QAAQ;AAAA,QAClB,CAAS;AAAA,MACH,OAAO;AACL,YAAI,eAAe,KAAK,MAAM,gBAAgB,OAAO,KAAK;AAC1D,YAAI,gBAAgB;AAClB,wBAAc,YAAY,QAAQ,aAAa,EAAE;AAAA,QACnD;AACA,mBAAW,OAAO,SAAS,QAAQ,KAAK;AAAA,UACtC,UAAU,eAAe,OAAO,cAAc;AAAA,UAC9C,WAAW,eAAe,OAAO,cAAc;AAAA,UAC/C,QAAQ;AAAA,QAClB,CAAS;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACA,MAAI,YAAY,QAAQ;AACtB,WAAO,KAAK,OAAO;AAAA,EACrB;AACA,SAAO;AACT;AAGA,SAAS,gBAAgB,QAAQ,sBAAsB,iBAAiB,mBAAmB,iBAAiB;AAC1G,MAAI,IAAI;AACR,QAAM,UAAU;AAChB,MAAI,sBAAsB,kBAAkB,OAAO,YAAY,UAAU,yBAAyB;AAChG,WAAO;AACT,MAAI,WAAW;AACf,KAAG;AACD,SAAK,UAAU,OAAO,SAAS,OAAO,aAAa;AACjD;AACF,UAAM,KAAK,KAAK,OAAO,YAAY,OAAO,SAAS,GAAG;AACtD,UAAM,QAAQ,CAAA;AACd,QAAI,EAAE,QAAQ,GAAG;AACf,YAAM,YAAY;AAAA,QAChB;AAAA,UACE,GAAG,EAAE;AAAA,UACL,GAAG,EAAE;AAAA,UACL,OAAO;AAAA,UACP,QAAQ,EAAE;AAAA,QACpB;AAAA,QACQ,gBAAgB;AAAA,MACxB;AACM,UAAI,OAAO,cAAc,YAAY;AACnC,eAAO;AAAA,MACT;AACA,YAAM,KAAK,GAAG,SAAS;AACvB,YAAM,aAAa;AAAA,QACjB;AAAA,UACE,GAAG,EAAE,IAAI,EAAE,QAAQ;AAAA,UACnB,GAAG,EAAE;AAAA,UACL,OAAO;AAAA,UACP,QAAQ,EAAE;AAAA,QACpB;AAAA,QACQ,gBAAgB;AAAA,MACxB;AACM,UAAI,OAAO,eAAe,YAAY;AACpC,eAAO;AAAA,MACT;AACA,YAAM,KAAK,GAAG,UAAU;AAAA,IAC1B,OAAO;AACL,YAAM,SAAS;AAAA,QACb;AAAA,UACE,GAAG,EAAE;AAAA,UACL,GAAG,EAAE;AAAA,UACL,OAAO,EAAE;AAAA,UACT,QAAQ,EAAE;AAAA,QACpB;AAAA,QACQ,gBAAgB;AAAA,MACxB;AACM,UAAI,OAAO,WAAW,YAAY;AAChC,eAAO;AAAA,MACT;AACA,YAAM,KAAK,GAAG,MAAM;AAAA,IACtB;AACA,QAAI,OAAO,EAAE,IAAI;AACjB,QAAI,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI;AAChC,eAAW,OAAO,OAAO;AACvB,iBAAW,QAAQ,KAAK;AACtB,YAAI,KAAK,SAAS;AAChB;AACF,eAAO,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI;AAClC,gBAAQ,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK;AAAA,MACtC;AAAA,IACF;AACA,QAAI,SAAS,EAAE,IAAI,mBAAmB,UAAU,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB;AACnF,iBAAW;AAAA,IACb,OAAO;AACL,eAAS;AAAA,QACP,SAAS;AAAA,UACP,OAAO,KAAK,OAAO,QAAQ,SAAS,OAAO,KAAK,CAAC,GAAG,CAAC;AAAA,UACrD,OAAO;AAAA,YACL,GAAG,OAAO;AAAA,YACV,GAAG,EAAE;AAAA,YACL,OAAO,QAAQ,OAAO;AAAA,YACtB,QAAQ,EAAE;AAAA,UACtB;AAAA,UACU,YAAY,OAAO,QAAQ;AAAA,QACrC;AAAA,QACQ,SAAS,OAAO;AAAA,QAChB,MAAM,OAAO;AAAA,MACrB;AAAA,IACI;AAAA,EACF,SAAS,CAAC;AACV,SAAO;AACT;AACA,SAAS,QAAQ,GAAG;AAClB,MAAI,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,GAAG,GAAG;AACxC,QAAI,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,OAAO,GAAG;AAAA,EACvC;AACA,SAAO;AACT;AACA,SAAS,QAAQ,KAAK;AACpB,MAAI;AACJ,GAAC,CAAC,WAAW;AACX,WAAO,OAAO,MAAM,IAAI,CAAC,IAAI;AAC7B,WAAO,OAAO,UAAU,IAAI,CAAC,IAAI;AACjC,WAAO,OAAO,mBAAmB,IAAI,CAAC,IAAI;AAAA,EAC5C,GAAG,UAAU,QAAQ,CAAA,EAAG;AACxB,QAAM,SAAS,CAAA;AACf,MAAI,UAAU,CAAA;AACd,MAAI,QAAQ;AACZ,MAAI,QAAQ;AACZ,QAAM,IAAI,QAAQ,SAAS,IAAI;AAC/B,MAAI,QAAQ;AACZ,aAAW,QAAQ,KAAK;AACtB,YAAQ,OAAK;AAAA,MACX,KAAK;AACH,YAAI,SAAS,OAAO,SAAS,MAAM;AACjC,kBAAQ,KAAK,IAAI,MAAM,OAAO,KAAK,CAAC;AACpC,kBAAQ,QAAQ;AAChB,cAAI,SAAS,MAAM;AACjB,mBAAO,KAAK,OAAO;AACnB,sBAAU,CAAA;AAAA,UACZ;AAAA,QACF,WAAW,SAAS,KAAK;AACvB,kBAAQ;AAAA,QACV;AACA;AAAA,MACF,KAAK;AACH,YAAI,SAAS,KAAK;AAChB,kBAAQ;AAAA,QACV;AACA;AAAA,MACF,KAAK;AACH,YAAI,SAAS,KAAK;AAChB,kBAAQ;AAAA,QACV,WAAW,SAAS,OAAO,SAAS,MAAM;AACxC,kBAAQ,KAAK,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,CAAC;AAC7C,kBAAQ,QAAQ;AAChB,cAAI,SAAS,MAAM;AACjB,mBAAO,KAAK,OAAO;AACnB,sBAAU,CAAA;AAAA,UACZ;AACA,kBAAQ;AAAA,QACV,OAAO;AACL,kBAAQ;AAAA,QACV;AACA;AAAA,IACR;AACI;AAAA,EACF;AACA,MAAI,QAAQ,IAAI,QAAQ;AACtB,YAAQ,KAAK,QAAQ,IAAI,MAAM,OAAO,IAAI,MAAM,CAAC,CAAC;AAAA,EACpD;AACA,SAAO,KAAK,OAAO;AACnB,SAAO,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,SAAQ,EAAG,CAAC;AAC1F;AACA,SAAS,gBAAgB,OAAO,eAAe,GAAG;AAChD,MAAI;AACJ,QAAM,aAAa,sBAAsB,OAAO,aAAa;AAC7D,QAAM,oBAAoB,CAAC,MAAM;AAC/B,QAAI;AACJ,WAAO,MAAM,OAAO,UAAU,cAAc,OAAO,SAAS,IAAI,UAAU,CAAC;AAAA,EAC7E;AACA,QAAM,gBAAgB,CAAC,GAAG,SAAS;AACjC,QAAI;AACJ,UAAM,MAAM,OAAO,UAAU,cAAc,OAAO,SAAS,IAAI,WAAW;AACxE,aAAO;AACT,SAAK,OAAO,UAAU,UAAU,MAAM;AAAA,MACpC,IAAI,cAAc;AAAA;AAAA,QAEhB,cAAc,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,cAAc;AAAA,QAClD,aAAa,IAAI,KAAK,CAAC,IAAI,GAAG;AAAA,UAC5B,MAAM;AAAA,QAChB,CAAS;AAAA,MACT,CAAO;AAAA,IACP,CAAK;AACD,WAAO;AAAA,EACT;AACA,QAAM,wBAAwB,CAAC,GAAG,SAAS;AACzC,QAAI,KAAK;AACT,QAAI;AACF,UAAI,MAAM,UAAU,EAAE,kBAAkB;AACtC,cAAM,IAAI,MAAM,mBAAmB;AACrC,OAAC,MAAM,KAAK,OAAO,SAAS,EAAE,kBAAkB,OAAO,SAAS,IAAI,QAAQ,cAAc,CAAC;AAC3F,OAAC,KAAK,KAAK,OAAO,SAAS,EAAE,kBAAkB,OAAO,SAAS,GAAG,QAAQ,aAAa,IAAI;AAAA,IAC7F,SAAS,IAAI;AACX,UAAI,CAAC,cAAc,GAAG,IAAI,GAAG;AAC3B,0BAAkB,CAAC;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACA,QAAM,KAAK,OAAO,UAAU,cAAc,OAAO,SAAS,GAAG,WAAW,WAAW,KAAK,OAAO,SAAS,EAAE,mBAAmB,QAAQ;AACnI,SAAK,sBAAsB,WAAW,WAAW,WAAW,QAAQ;AAAA,EACtE,OAAO;AACL,SAAK,kBAAkB,WAAW,SAAS;AAAA,EAC7C;AACA,OAAK,OAAO,SAAS,EAAE,eAAc;AACvC;AAIA,SAAS,MAAM,GAAG;AAChB,MAAI,OAAO,MAAM;AACf,WAAO;AACT,SAAO,GAAG,CAAC;AACb;AACA,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE;AAC5B,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE;AAC5B,IAAI,UAA0B,+BAAe,KAAK,EAAE;AAAA,EAClD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,aAAa,CAAC,QAAQ;AAAA,IACtB,aAAa,CAAC,OAAM,CAAE;AAAA,EAC1B;AACA,CAAC;AACD,IAAI,sBAAsB,CAAC,MAAM;AAC/B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACP,IAAM;AACJ,SAAuBC,sBAAQ,cAAc,SAAS;AAAA,IACpD,aAAa,MAAM,QAAQ;AAAA,IAC3B,YAAY,MAAM,OAAO;AAAA,IACzB,GAAG;AAAA,EACP,GAAK,QAAQ;AACb;AAGA,SAAS,cAAc,MAAM;AAC3B,SAAO,SAAS;AAClB;AACA,IAAI,qBAAqB;AACzB,IAAI,sBAAsB;AAAA,EACxB,wBAAwB,CAAC,MAAM;AAC7B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,EAAE,SAAS,OAAO,SAAS,GAAG,SAAQ,MAAO,OAAO,KAAK;AAAA,EAC9E;AAAA,EACA,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,SAAS,MAAM;AAAA,EACf,MAAM,CAAC,MAAM;AACX,QAAI;AACJ,WAAO,YAAY,GAAG,EAAE,KAAK,MAAM,sBAAsB,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,YAAY,OAAO,KAAK,kBAAkB;AAAA,EAC3H;AAAA,EACA,UAAU,CAAC,OAAO;AAAA,IAChB,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AAAA,EACE,SAAS,CAAC,MAAM;AACd,QAAI,IAAI;AACR,UAAM,EAAE,MAAM,MAAM,UAAU,MAAM,UAAU,QAAQ,MAAK,IAAK;AAChE,UAAM,EAAE,OAAO,QAAQ,GAAG,OAAO,GAAG,MAAK,IAAK;AAC9C,UAAM,YAAY,KAAK,KAAK,YAAY,OAAO,KAAK;AACpD,UAAM,cAAc,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC;AACpD,UAAM,gBAAgB,eAAe,UAAU,QAAQ,MAAM,mBAAmB;AAChF,UAAM,OAAO;AAAA,OACV,KAAK,KAAK,iBAAiB,OAAO,KAAK;AAAA,MACxC;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACN;AACI,UAAM,KAAK,YAAY,MAAM,aAAa,aAAa;AACvD,UAAM,kBAAkB,gBAAgB,QAAQ,UAAU,QAAQ,UAAU,EAAE;AAC9E,QAAI,sBAAsB,IAAI,KAAK,iBAAiB;AAClD,aAAO;AAAA,QACL,GAAG;AAAA,QACH,MAAM,cAAc,KAAK,IAAI;AAAA,MACrC;AAAA,IACI;AACA,WAAO;AAAA,EACT;AAAA,EACA,SAAS,CAAC,SAAS,SAAS;AAC1B,QAAI,SAAS;AACb,QAAI,QAAQ,YAAW,MAAO,QAAQ;AACpC,eAAS;AAAA,IACX,WAAW,QAAQ,YAAW,MAAO,SAAS;AAC5C,eAAS;AAAA,IACX,WAAW,QAAQ,YAAW,MAAO,iBAAiB;AACpD,eAAS;AAAA,IACX;AACA,WAAO,WAAW,KAAK,OAAO,SAAS;AAAA,MACrC,GAAG;AAAA,MACH,MAAM;AAAA,IACZ;AAAA,EACE;AACF;AAIA,IAAI,aAAa;AACjB,IAAI,gBAAgB;AACpB,SAAS,cAAc,iBAAiB,WAAW;AACjD,QAAM,cAAcC,eAAQ,OAAO,CAAC;AACpC,QAAM,CAAC,MAAM,IAAI,IAAI,mBAAmB,OAAO,kBAAkB,CAAC,GAAG,CAAC;AACtEA,iBAAQ,UAAU,MAAM;AACtB,QAAI,SAAS,KAAK,SAAS,GAAG;AAC5B,kBAAY,UAAU;AACtB;AAAA,IACF;AACA,QAAI,WAAW;AACf,UAAM,WAAW,CAAC,YAAY;AAC5B,UAAI;AACJ,UAAI,aAAa,GAAG;AAClB,mBAAW;AAAA,MACb,OAAO;AACL,cAAM,OAAO,UAAU;AACvB,oBAAY,UAAU,KAAK,IAAI,GAAG,YAAY,UAAU,OAAO,aAAa;AAC5E,cAAM,SAAS,YAAY,WAAW,QAAQ,OAAO;AACrD,SAAC,KAAK,UAAU,YAAY,OAAO,SAAS,GAAG,SAAS,OAAO,QAAQ,OAAO,MAAM;AACpF,mBAAW;AAAA,MACb;AACA,UAAI,OAAO,sBAAsB,QAAQ;AAAA,IAC3C;AACA,QAAI,IAAI,OAAO,sBAAsB,QAAQ;AAC7C,WAAO,MAAM,OAAO,qBAAqB,CAAC;AAAA,EAC5C,GAAG,CAAC,WAAW,MAAM,IAAI,CAAC;AAC5B;AASA,IAAI,4BAA4C,+BAAe,KAAK,EAAE;AAAA,EACpE,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb,CAAC;AAGD,IAAI,uBAAuB,CAAC,MAAM;AAChC,QAAM,EAAE,QAAO,IAAK;AACpB,SAAuBC,sBAAQ,cAAc,2BAA2B,MAAM,QAAQ,IAAI,CAAC,GAAG,MAAsBA,sBAAQ,cAAc,OAAO,EAAE,KAAK,GAAG,WAAW,aAAY,GAAI,CAAC,CAAC,GAAmBA,sBAAQ,cAAc,YAAY,EAAE,WAAW,aAAa,WAAW,KAAI,CAAE,CAAC;AAC3R;AACA,IAAI,iCAAiC;AAGrC,IAAI,qBAAqB;AAAA,EACvB,wBAAwB,CAAC,MAAM,gCAAgC,EAAE,IAAI;AAAA,EACrE,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,SAAS,CAAC,KAAK,MAAM,MAAM,KAAK,KAAK,OAAO,CAAC,KAAK,SAAS,IAAI,YAAY,IAAI,EAAE,QAAQ,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE,wBAAwB;AAAA,EACtI,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,KAAK,IAAI;AAAA,EACvC,eAAe,MAAM,CAAC,MAAM;AAC1B,UAAM,EAAE,MAAK,IAAK;AAClB,WAAuBC,sBAAQ,cAAc,gCAAgC,EAAE,SAAS,MAAM,MAAM;AAAA,EACtG;AAAA,EACA,SAAS,MAAM;AACjB;AAOA,IAAI,8BAA8C,+BAAe,KAAK,EAAE;AAAA,EACtE,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb,CAAC;AACD,IAAI,yBAAyB,CAAC,MAAM;AAClC,QAAM;AAAA,IACJ;AAAA,EACJ,IAAM;AACJ,SAAuBC,sBAAQ,cAAc,6BAA6B,MAAM,WAAW,IAAI,CAAC,GAAG,MAAsBA,sBAAQ,cAAc,OAAO;AAAA,IACpJ,KAAK;AAAA,IACL,WAAW;AAAA,EACf,GAAK,EAAE,QAAQ,UAA0BA,sBAAQ,cAAc,OAAO;AAAA,IAClE,KAAK,EAAE;AAAA,EACX,CAAG,GAAmBA,sBAAQ,cAAc,OAAO,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAClE;AACA,IAAI,mCAAmC;AAGvC,IAAI,wBAAwB;AAAA,EAC1B,wBAAwB,CAAC,MAAM,gCAAgC,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAAA,EACxF,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,SAAS,CAAC,KAAK,MAAM,MAAM,KAAK,KAAK;AAAA,IACnC,CAAC,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,QAAQ,MAAM,MAAM,KAAK,QAAQ,SAAS,KAAK;AAAA,IACzF;AAAA,EACJ,IAAM,IAAI,EAAE,wBAAwB;AAAA,EAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,KAAK,IAAI;AAAA,EAC7C,eAAe,MAAM,CAAC,MAAM;AAC1B,UAAM,EAAE,MAAK,IAAK;AAClB,WAAuBC,sBAAQ,cAAc,kCAAkC,EAAE,YAAY,MAAM,MAAM;AAAA,EAC3G;AAAA,EACA,SAAS,MAAM;AACjB;AASA,IAAI,0BAA0C,+BAAe,KAAK,EAAE;AAAA,EAClE,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb,CAAC;AAIE,IAAC,qBAAqB,CAAC,MAAM;AAC9B,QAAM,EAAE,MAAM,UAAU,aAAa,YAAW,IAAK;AACrD,QAAM,WAAW,KAAK,OAAO,CAAC,MAAM,MAAM,EAAE;AAC5C,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO;AAAA,EACT;AACA,QAAM,YAAY,SAAS,SAAS;AACpC,SAAuBC,sBAAQ,cAAc,yBAAyB,EAAE,eAAe,mCAAkC,GAAoBA,sBAAQ;AAAA,IACnJ;AAAA,IACA;AAAA,MACE,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,cAAc;AAAA,MACd,cAAc;AAAA,IACpB;AAAA,IACI,SAAS,IAAI,CAAC,QAAQ;AACpB,UAAI;AACJ,YAAM,gBAAgB,KAAK,eAAe,OAAO,SAAS,YAAY,GAAG,MAAM,OAAO,KAAqBA,sBAAQ,cAAc,OAAO,EAAE,WAAW,OAAO,KAAK,KAAK;AACtK,aAAuBA,sBAAQ,cAAc,OAAO,EAAE,WAAW,uBAAuB,KAAK,IAAG,GAAI,YAAY;AAAA,IAClH,CAAC;AAAA,EACL,GAAK,YAAY,eAA+BA,sBAAQ,cAAc,UAAU,EAAE,WAAW,aAAa,SAAS,YAAW,GAAoBA,sBAAQ,cAAc,YAAY,IAAI,CAAC,CAAC;AAC1L;AAGA,IAAI,oBAAoB;AAAA,EACtB,wBAAwB,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI;AAAA,EAC/C,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,MAAM,CAAC,MAAM;AACX,QAAI;AACJ,WAAO,UAAU,IAAI,KAAK,EAAE,KAAK,gBAAgB,OAAO,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY;AAAA,EAChH;AAAA,EACA,SAAS,CAAC,MAAM,SAAS,KAAK,KAAK,SAAS;AAAA,EAC5C,UAAU,CAAC,OAAO;AAAA,IAChB,GAAG;AAAA,IACH,MAAM,CAAA;AAAA,EACV;AAAA,EACE,eAAe,MAAM,CAAC,MAAM;AAC1B,UAAM,EAAE,OAAO,mBAAmB,oBAAmB,IAAK;AAC1D,UAAM,cAAc,uBAAuB,OAAO,sBAAsB;AACxE,WAAuBC,sBAAQ;AAAA,MAC7B;AAAA,MACA;AAAA,QACE,MAAM,MAAM;AAAA,QACZ,UAAU,MAAM;AAAA,QAChB,UAAU;AAAA,QACV,UAAU,CAAC,aAAa;AACtB,4BAAkB;AAAA,YAChB,GAAG;AAAA,YACH,MAAM,CAAC,QAAQ;AAAA,UAC3B,CAAW;AAAA,QACH;AAAA,MACR;AAAA,IACA;AAAA,EACE;AAAA,EACA,SAAS,CAAC,SAAS,SAAS;AAC1B,cAAU,QAAQ,KAAI;AACtB,UAAM,YAAY,QAAQ,MAAM,GAAG;AACnC,UAAM,OAAO,UAAU,IAAI,CAAC,MAAM;AAChC,UAAI;AACF,YAAI,IAAI,CAAC;AACT,eAAO;AAAA,MACT,SAAS,GAAG;AACV,eAAO;AAAA,MACT;AAAA,IACF,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,MAAM;AAC7B,QAAI,KAAK,WAAW,KAAK,KAAK,UAAU,KAAK,MAAM,CAAC,GAAG,MAAM,MAAM,KAAK,KAAK,CAAC,CAAC;AAC7E,aAAO;AACT,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM;AAAA,IACZ;AAAA,EACE;AACF;AAGA,IAAI,sBAAsB;AAAA,EACxB,wBAAwB,MAAM;AAAA,EAC9B,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,SAAS,MAAM;AAAA,EACf,MAAM,MAAM;AAAA,EACZ,SAAS,MAAM;AACjB;AAaA,IAAI,oBAAoC,+BAAe,KAAK,EAAE;AAAA,EAC5D,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb,CAAC;AAGE,IAAC,cAAc,cAAcC,eAAQ,cAAc;AAAA,EACpD,cAAc;AACZ,UAAM,GAAG,SAAS;AAClB,SAAK,gBAAgB;AACrB,SAAK,mBAAmB,CAAC,YAAY;AACnC,WAAK,gBAAgB;AACrB,WAAK,sBAAqB;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,wBAAwB;AACtB,UAAM,EAAE,eAAe,MAAK,IAAK;AACjC,QAAI,kBAAkB;AACpB;AACF,UAAM,EAAE,UAAU,WAAU,IAAK;AACjC,UAAM,YAAY,OAAO,QAAQ;AACjC,UAAM,aAAa,SAAS,YAAW;AACvC,eAAW,mBAAmB,aAAa;AAC3C,eAAW,eAAc;AACzB,QAAI,WAAW,cAAc,OAAO,SAAS,WAAW,SAAS;AACjE,QAAI,aAAa,QAAQ;AACvB,YAAM,WAAW,SAAS,cAAc,UAAU;AAClD,eAAS,YAAY;AACrB,iBAAW,SAAS;AAAA,IACtB;AACA,kBAAc,OAAO,QAAQ;AAC7B,UAAM,OAAO,cAAc,qBAAqB,GAAG;AACnD,eAAW,OAAO,MAAM;AACtB,UAAI,SAAS;AACb,UAAI,MAAM;AAAA,IACZ;AAAA,EACF;AAAA,EACA,SAAS;AACP,SAAK,sBAAqB;AAC1B,WAAuBA,+BAAQ,cAAc,mBAAmB,EAAE,KAAK,KAAK,kBAAkB;AAAA,EAChG;AACF;AAMA,IAAI,WAA2B,+BAAe,UAAU,EAAE;AAAA,EACxD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb,CAAC;AACD,IAAI,YAA4B,+BAAe,KAAK,EAAE;AAAA,EACpD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb,CAAC;AACD,IAAI,oBAAoC,+BAAe,KAAK,EAAE;AAAA,EAC5D,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb,CAAC;AAGD,IAAI,gBAAgB;AACjB,IAAC,eAAe,CAAC,UAAU;AAC5B,QAAM,EAAE,aAAa,OAAO,WAAW,WAAW,YAAY,oBAAoB,GAAG,KAAI,IAAK;AAC9F,QAAM,EAAE,UAAU,UAAS,IAAK;AAChC,QAAM,WAAWC,MAAQ,OAAO,IAAI;AACpC,QAAM,UAAU,SAAS,OAAO,QAAQ;AACxC,SAAO,aAAa,QAAQ,8CAA8C;AAC1E,QAAM,CAAC,OAAO,IAAIA,MAAQ,SAAS,MAAM,gBAAgB,iBAAiB,gBAAgB,KAAK,IAAI;AACnGA,QAAQ,UAAU,MAAM;AACtB,UAAM,KAAK,SAAS;AACpB,QAAI,OAAO;AACT;AACF,QAAI,GAAG;AACL;AACF,UAAM,SAAS,QAAQ,SAAQ,EAAG;AAClC,OAAG,MAAK;AACR,OAAG,kBAAkB,YAAY,IAAI,QAAQ,MAAM;AAAA,EACrD,GAAG,CAAA,CAAE;AACLA,QAAQ,gBAAgB,MAAM;AAC5B,QAAI;AACJ,QAAI,uBAAuB,QAAQ;AACjC,YAAM,SAAS,OAAO,uBAAuB,WAAW,CAAC,oBAAoB,IAAI,IAAI;AACrF,OAAC,KAAK,SAAS,YAAY,OAAO,SAAS,GAAG,kBAAkB,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AAAA,IACtF;AAAA,EACF,GAAG,CAAC,kBAAkB,CAAC;AACvB,QAAM,iBAAiBA,MAAQ;AAAA,IAC7B,CAAC,MAAM;AACL,UAAI,EAAE,QAAQ,WAAW,EAAE,YAAY,eAAe,MAAM;AAC1D;AAAA,MACF;AACA,mBAAa,OAAO,SAAS,UAAU,CAAC;AAAA,IAC1C;AAAA,IACA,CAAC,YAAY,SAAS;AAAA,EAC1B;AACE,SAAuBA,sBAAQ,cAAc,mBAAmB,EAAE,WAAW,oBAAmB,GAAoBA,sBAAQ,cAAc,WAAW,EAAE,UAAS,GAAI,UAAU,IAAI,GAAmBA,sBAAQ;AAAA,IAC3M;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,YAAY,aAAa,OAAO,YAAY,MAAM;AAAA,MAClD,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,WAAW;AAAA,MACX,OAAO;AAAA,MACP;AAAA,MACA,KAAK;AAAA,IACX;AAAA,EACA,CAAG;AACH;AAGA,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE;AAC5B,IAAI,6BAA6C,+BAAe,KAAK,EAAE;AAAA,EACrE,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,aAAa,CAAC,OAAM,GAAI,IAAI;AAAA,EAChC;AACA,CAAC;AAGD,IAAI,wBAAwB,CAAC,MAAM;AACjC,QAAM,EAAE,OAAO,UAAU,eAAe,YAAY,YAAY,UAAU,mBAAkB,IAAK;AACjG,QAAM,WAAW,MAAM;AACvB,QAAM,WAAW,MAAM,aAAa;AACpC,QAAM,CAAC,UAAU,WAAW,IAAIC,MAAQ,SAAS,aAAa,MAAM,aAAa;AACjF,QAAM,cAAcA,MAAQ,YAAY,MAAM;AAC5C,gBAAY,CAAC,MAAM,CAAC,CAAC;AAAA,EACvB,GAAG,CAAA,CAAE;AACL,QAAM,aAAa,WAAW,SAAS;AACvC,MAAI,UAAU;AACZ,WAAuBA,sBAAQ,cAAc,4BAA4B,EAAE,aAAa,WAAW,QAAQ,MAAsBA,sBAAQ;AAAA,MACvI;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,WAAW;AAAA,QACX;AAAA,QACA,OAAO;AAAA,QACP,WAAW,CAAC,MAAM;AAChB,cAAI,EAAE,QAAQ;AACZ,cAAE,gBAAe;AAAA,QACrB;AAAA,QACA;AAAA,MACR;AAAA,IACA,GAAuBA,sBAAQ,cAAc,OAAO,EAAE,WAAW,6BAA6B,UAAU,IAAI,SAAS,MAAM,SAAS,KAAK,KAAqBA,sBAAQ,cAAc,WAAW,IAAI,CAAC,CAAC;AAAA,EACnM;AACA,SAAuBA,sBAAQ,cAAc,4BAA4B,EAAE,aAAa,WAAW,MAAK,GAAoBA,sBAAQ,cAAc,aAAa,EAAE,UAAU,UAAU,WAAU,CAAE,GAAG,CAAC,YAA4BA,sBAAQ,cAAcA,MAAQ,UAAU,MAAsBA,sBAAQ,cAAc,OAAO,EAAE,WAAW,SAAQ,CAAE,GAAmBA,sBAAQ,cAAc,OAAO,EAAE,WAAW,wBAAwB,UAAU,IAAI,SAAS,YAAW,GAAoBA,sBAAQ,cAAc,YAAY,IAAI,CAAC,CAAC,GAAmBA,sBAAQ,cAAc,YAAY,EAAE,WAAW,8BAA8B,WAAW,KAAI,CAAE,CAAC;AAC1nB;AAGA,IAAI,uBAAuB;AAAA,EACzB,wBAAwB,CAAC,MAAM;AAC7B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,EAAE,SAAS,OAAO,SAAS,GAAG,SAAQ,MAAO,OAAO,KAAK;AAAA,EAC9E;AAAA,EACA,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,SAAS,CAAC,KAAK,MAAM,MAAM;AACzB,UAAM,YAAY,KAAK,KAAK,MAAM,IAAI,EAAE,CAAC;AACzC,WAAO,IAAI,YAAY,SAAS,EAAE,QAAQ,IAAI,EAAE;AAAA,EAClD;AAAA,EACA,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY;AAAA,EAC7D,UAAU,CAAC,OAAO;AAAA,IAChB,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AAAA,EACE,eAAe,MAAM,CAAC,MAAM;AAC1B,UAAM,EAAE,UAAU,OAAO,QAAQ,mBAAmB,uBAAuB,eAAe,mBAAkB,IAAK;AACjH,WAAuBC,sBAAQ;AAAA,MAC7B;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,QACA,UAAU,CAAC,MAAM,SAAS;AAAA,UACxB,GAAG;AAAA,UACH,MAAM,EAAE,OAAO;AAAA,QACzB,CAAS;AAAA,QACD;AAAA,QACA,YAAY;AAAA,MACpB;AAAA,IACA;AAAA,EACE;AAAA,EACA,SAAS,CAAC,SAAS,SAAS,YAAY,KAAK,OAAO,SAAS,EAAE,GAAG,MAAM,MAAM,QAAO;AACvF;AAGA,IAAI,qBAAqB;AAAA,EACvB,wBAAwB,CAAC,MAAM,EAAE,IAAI,SAAQ;AAAA,EAC7C,MAAM,kBAAkB;AAAA,EACxB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,SAAS,MAAM;AAAA,EACf,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU;AAAA,EAClG,SAAS,CAAC,MAAM;AACd,UAAM,EAAE,QAAQ,MAAM,MAAM,GAAG,MAAM,EAAC,IAAK;AAC3C,UAAM,EAAE,OAAO,OAAM,IAAK;AAC1B,UAAM,UAAU,KAAK,aAAa,KAAK,QAAQ,KAAK,IAAI,QAAQ;AAChE,UAAM,UAAU,SAAS;AACzB,QAAI,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;AAC9D,aAAO;AAAA,QACL,GAAG;AAAA,QACH,SAAS,CAAC,KAAK;AAAA,MACvB;AAAA,IACI;AACA,WAAO;AAAA,EACT;AAAA,EACA,SAAS,MAAM;AACjB;AAGA,IAAI,qBAAqB;AAAA,EACvB,wBAAwB,MAAM;AAAA,EAC9B,MAAM,kBAAkB;AAAA,EACxB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,SAAS,MAAM;AAAA,EACf,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA,EACvD,SAAS,MAAM;AACjB;AAIA,IAAI,sBAAsBC,MAAQ;AAAA,EAChC,YAAY,MAAM,OAAO,gDAAqC;AAChE;AACA,IAAI,qBAAqB;AAAA,EACvB,wBAAwB,CAAC,MAAM;AAC7B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,EAAE,SAAS,OAAO,SAAS,GAAG,SAAQ,MAAO,OAAO,KAAK;AAAA,EAC9E;AAAA,EACA,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY;AAAA,EACpE,SAAS,CAAC,KAAK,SAAS,IAAI,YAAY,KAAK,WAAW,EAAE,QAAQ;AAAA,EAClE,UAAU,CAAC,OAAO;AAAA,IAChB,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AAAA,EACE,eAAe,MAAM,CAAC,MAAM;AAC1B,UAAM,EAAE,eAAe,UAAU,OAAO,mBAAkB,IAAK;AAC/D,WAAuBA,sBAAQ,cAAcA,MAAQ,UAAU,EAAE,UAAU,QAAwBA,sBAAQ;AAAA,MACzG;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,UAAU,MAAM,aAAa;AAAA,QAC7B,OAAO,MAAM;AAAA,QACb,eAAe,MAAM;AAAA,QACrB,eAAe,MAAM;AAAA,QACrB,mBAAmB,MAAM;AAAA,QACzB,kBAAkB,MAAM;AAAA,QACxB;AAAA,QACA,UAAU,CAAC,MAAM;AACf,cAAI;AACJ,iBAAO,SAAS;AAAA,YACd,GAAG;AAAA,YACH,MAAM,OAAO,OAAO,KAAK,EAAE,eAAe,OAAO,KAAK,CAAC,IAAI,IAAI,EAAE;AAAA,UAC7E,CAAW;AAAA,QACH;AAAA,MACR;AAAA,IACA,CAAK;AAAA,EACH;AAAA,EACA,SAAS,CAAC,SAAS,MAAM,YAAY;AACnC,QAAI;AACJ,UAAM,YAAY,OAAO,QAAQ,aAAa,WAAW,QAAQ,WAAW,OAAO,WAAW,OAAO,QAAQ,aAAa,WAAW,QAAQ,WAAW,OAAO;AAC/J,QAAI,OAAO,MAAM,SAAS,KAAK,KAAK,SAAS;AAC3C,aAAO;AACT,WAAO,EAAE,GAAG,MAAM,MAAM,WAAW,cAAc,KAAK,QAAQ,oBAAoB,OAAO,KAAK,KAAK,YAAW;AAAA,EAChH;AACF;AAGA,IAAI,wBAAwB;AAAA,EAC1B,wBAAwB,MAAM;AAAA,EAC9B,SAAS,MAAM;AAAA,EACf,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,MAAM;AAAA,EACN,SAAS,MAAM;AACjB;AAIA,IAAI,oBAAoB;AAAA,EACtB,wBAAwB,CAAC,MAAM;AAC7B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,EAAE,SAAS,OAAO,SAAS,GAAG,SAAQ,MAAO,OAAO,KAAK;AAAA,EAC9E;AAAA,EACA,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,UAAU,CAAC,GAAG,MAAM,aAAa,GAAG,GAAG,EAAE,MAAM,SAAS;AAAA,EACxD,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY;AAAA,EAC7D,SAAS,CAAC,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,QAAQ;AAAA;AAAA,EAE3D,eAAe,MAAM,CAAC,MAAM;AAC1B,UAAM,EAAE,eAAe,UAAU,OAAO,mBAAkB,IAAK;AAC/D,WAAuBC,+BAAQ;AAAA,MAC7B;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,WAAW,MAAM,aAAa;AAAA,QAC9B,UAAU,MAAM,aAAa;AAAA,QAC7B,OAAO,MAAM;AAAA,QACb;AAAA,QACA,UAAU,CAAC,MAAM,SAAS;AAAA,UACxB,GAAG;AAAA,UACH,MAAM,EAAE,OAAO;AAAA,QACzB,CAAS;AAAA,MACT;AAAA,IACA;AAAA,EACE;AAAA,EACA,SAAS,MAAM;AACjB;AAIA,IAAI,mBAAmB;AAAA,EACrB,wBAAwB,CAAC,MAAM;AAC7B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,EAAE,SAAS,OAAO,SAAS,GAAG,SAAQ,MAAO,OAAO,KAAK;AAAA,EAC9E;AAAA,EACA,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,MAAM,CAAC,OAAO,aAAa,GAAG,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,aAAa,GAAG;AAAA,EAC/G,SAAS,CAAC,KAAK,MAAM,MAAM;AACzB,UAAM,QAAQ,KAAK,YAAY,MAAM,IAAI,EAAE,MAAM,GAAG,KAAK,kBAAkB,OAAO,SAAS,CAAC;AAC5F,WAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,QAAQ,IAAI,EAAE,qBAAqB,CAAC;AAAA,EAC7F;AAAA,EACA,UAAU,CAAC,OAAO;AAAA,IAChB,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AAAA,EACE,eAAe,CAAC,UAAU;AAAA,IACxB,gBAAgB,KAAK,kBAAkB;AAAA,IACvC,QAAQ,CAAC,MAAM;AACb,YAAM,EAAE,eAAe,UAAU,OAAO,mBAAkB,IAAK;AAC/D,aAAuBC,sBAAQ;AAAA,QAC7B;AAAA,QACA;AAAA,UACE,OAAO,KAAK,kBAAkB,OAAO,EAAE,SAAS,YAAW,IAAK;AAAA,UAChE,WAAW;AAAA,UACX,WAAW,MAAM,aAAa;AAAA,UAC9B,UAAU,MAAM,aAAa;AAAA,UAC7B,YAAY;AAAA,UACZ,OAAO,MAAM;AAAA,UACb;AAAA,UACA,UAAU,CAAC,MAAM,SAAS;AAAA,YACxB,GAAG;AAAA,YACH,MAAM,EAAE,OAAO;AAAA,UAC3B,CAAW;AAAA,QACX;AAAA,MACA;AAAA,IACI;AAAA,EACJ;AAAA,EACE,SAAS,CAAC,SAAS,MAAM,YAAY;AACnC,QAAI;AACJ,WAAO,YAAY,KAAK,OAAO,SAAS,EAAE,GAAG,MAAM,MAAM,SAAS,cAAc,KAAK,QAAQ,oBAAoB,OAAO,KAAK,KAAK,YAAW;AAAA,EAC/I;AACF;AASA,IAAI,wBAAwC,+BAAe,KAAK,EAAE;AAAA,EAChE,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AACb,CAAC;AAGD,IAAI,mBAAmB,CAAC,MAAM;AAC5B,QAAM,EAAE,KAAK,UAAU,eAAe,UAAU,oBAAoB,QAAO,IAAK;AAChF,QAAM,CAAC,UAAU,WAAW,IAAIC,MAAQ,SAAS,QAAQ,MAAM,aAAa;AAC5E,QAAM,cAAcA,MAAQ,YAAY,MAAM;AAC5C,gBAAY,IAAI;AAAA,EAClB,GAAG,CAAA,CAAE;AACL,MAAI,UAAU;AACZ,WAAuBA,sBAAQ;AAAA,MAC7B;AAAA,MACA;AAAA,QACE;AAAA,QACA,WAAW;AAAA,QACX,WAAW;AAAA,QACX,OAAO;AAAA,QACP;AAAA,MACR;AAAA,IACA;AAAA,EACE;AACA,SAAuBA,sBAAQ,cAAc,uBAAuB,MAAsBA,sBAAQ,cAAc,KAAK,EAAE,WAAW,aAAa,MAAM,KAAK,QAAQ,UAAU,KAAK,yBAAyB,OAAO,GAAG,CAAC,YAA4BA,sBAAQ,cAAc,OAAO,EAAE,WAAW,aAAa,SAAS,YAAW,GAAoBA,sBAAQ,cAAc,YAAY,IAAI,CAAC,GAAmBA,sBAAQ,cAAc,YAAY,EAAE,WAAW,aAAa,WAAW,KAAI,CAAE,CAAC;AAC1d;AACA,IAAI,6BAA6B;AAGjC,IAAI,kBAAkB;AAAA,EACpB,wBAAwB,CAAC,MAAM;AAC7B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,EAAE,SAAS,OAAO,SAAS,GAAG,SAAQ,MAAO,OAAO,KAAK;AAAA,EAC9E;AAAA,EACA,MAAM,aAAa;AAAA,EACnB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY;AAAA,EAC7D,SAAS,CAAC,KAAK,MAAM,UAAU,IAAI,YAAY,KAAK,IAAI,EAAE,QAAQ,MAAM,wBAAwB;AAAA,EAChG,UAAU,CAAC,OAAO;AAAA,IAChB,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AAAA,EACE,eAAe,MAAM,CAAC,MAAM;AAC1B,QAAI;AACJ,UAAM,EAAE,UAAU,OAAO,eAAe,mBAAkB,IAAK;AAC/D,WAAuBC,sBAAQ;AAAA,MAC7B;AAAA,MACA;AAAA,QACE;AAAA,QACA,KAAK,MAAM;AAAA,QACX,UAAU,KAAK,MAAM,gBAAgB,OAAO,KAAK,MAAM;AAAA,QACvD;AAAA,QACA,UAAU,MAAM,aAAa;AAAA,QAC7B,UAAU,CAAC,MAAM,SAAS;AAAA,UACxB,GAAG;AAAA,UACH,MAAM,EAAE,OAAO;AAAA,QACzB,CAAS;AAAA,MACT;AAAA,IACA;AAAA,EACE;AAAA,EACA,SAAS,CAAC,SAAS,MAAM,YAAY;AACnC,QAAI;AACJ,WAAO,YAAY,KAAK,OAAO,SAAS,EAAE,GAAG,MAAM,MAAM,SAAS,cAAc,KAAK,QAAQ,oBAAoB,OAAO,KAAK,KAAK,YAAW;AAAA,EAC/I;AACF;AAGA,IAAI,gBAAgB;AAAA,EAClB,CAAC,kBAAkB,MAAM,GAAG;AAAA,EAC5B,CAAC,kBAAkB,MAAM,GAAG;AAAA,EAC5B,CAAC,aAAa,OAAO,GAAG;AAAA,EACxB,CAAC,aAAa,MAAM,GAAG;AAAA,EACvB,CAAC,aAAa,SAAS,GAAG;AAAA,EAC1B,CAAC,aAAa,KAAK,GAAG;AAAA,EACtB,CAAC,aAAa,OAAO,GAAG;AAAA,EACxB,CAAC,aAAa,QAAQ,GAAG;AAAA,EACzB,CAAC,aAAa,MAAM,GAAG;AAAA,EACvB,CAAC,aAAa,SAAS,GAAG;AAAA,EAC1B,CAAC,aAAa,KAAK,GAAG;AAAA,EACtB,CAAC,aAAa,IAAI,GAAG;AAAA,EACrB,CAAC,aAAa,GAAG,GAAG;AACtB;AAIA,SAAS,eAAe;AAAA,EACtB,WAAW;AAAA,EACX,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AAAA,EACb;AAAA,EACA;AACF,GAAG;AACD,QAAM,CAAC,WAAW,cAAc,mBAAmB,OAAO,aAAa,WAAW,IAAIC,eAAQ,QAAQ,MAAM;AAC1G,QAAI,IAAI,IAAI;AACZ,QAAI,CAAC,cAAc,YAAY;AAC7B,aAAO,CAAC,aAAa,gBAAgB,qBAAqB,SAAS,eAAe,aAAa;AACjG,UAAM,SAAS,UAAU;AACzB,UAAM,KAAK;AACX,UAAM,KAAK,mBAAkB;AAC7B,WAAO;AAAA,MACL,OAAO,OAAO,WAAW,KAAK,SAAS,CAAC,MAAM,KAAK,KAAK,GAAG,CAAC,IAAI,MAAM;AAAA,MACtE,KAAK,KAAK,iBAAiB,MAAM;AAAA,MACjC,KAAK,KAAK,sBAAsB,MAAM;AAAA,MACtC;AAAA,QACE,GAAG;AAAA,QACH,kBAAkB,KAAK,WAAW,OAAO,SAAS,QAAQ,mBAAmB,OAAO,KAAK,GAAG,kBAAkB;AAAA,QAC9G,yBAAyB,KAAK,WAAW,OAAO,SAAS,QAAQ,0BAA0B,OAAO,KAAK,GAAG,yBAAyB;AAAA,QACnI,uBAAuB,KAAK,WAAW,OAAO,SAAS,QAAQ,wBAAwB,OAAO,KAAK,GAAG,uBAAuB;AAAA,MACrI;AAAA,MACM,KAAK,MAAM,iBAAiB,OAAO,gBAAgB,KAAK,MAAM;AAAA,MAC9D,KAAK,MAAM,iBAAiB,OAAO,gBAAgB,KAAK,MAAM;AAAA,IACpE;AAAA,EACE,GAAG,CAAC,qBAAqB,gBAAgB,eAAe,eAAe,SAAS,aAAa,YAAY,OAAO,CAAC;AACjH,SAAO,EAAE,WAAW,cAAc,mBAAmB,OAAO,aAAa,YAAW;AACtF;AAGA,IAAI,YAAY;AAChB,SAAS,aAAa,OAAO;AAC3B,SAAO;AAAA,IACL;AAAA,MACE,QAAQ,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,IAAI,CAAC,MAAM;AACzD,YAAI,IAAI,IAAI,IAAI;AAChB,eAAO,QAAQ,MAAM,KAAK,EAAE,SAAS,OAAO,SAAS,GAAG,CAAC,MAAM,OAAO,KAAK,KAAK,KAAK,MAAM,KAAK,EAAE,SAAS,OAAO,SAAS,GAAG,CAAC,MAAM,OAAO,KAAK,KAAK,CAAC;AAAA,MACzJ,CAAC;AAAA,IACP;AAAA,EACA;AACA;AACA,SAAS,eAAe,OAAO,QAAQ;AACrC,MAAI,UAAU,UAAU,WAAW,KAAK,MAAM,QAAQ,WAAW,KAAK,MAAM,YAAY;AACtF,WAAO;AACT,SAAO;AAAA,IACL,SAAS,MAAM,YAAY,SAAS,SAAS;AAAA,MAC3C,MAAM,CAAC,MAAM,QAAQ,KAAK,CAAC,IAAI,QAAQ,MAAM,QAAQ,KAAK,CAAC,CAAC;AAAA,MAC5D,OAAO;AAAA,QACL,GAAG,MAAM,QAAQ;AAAA,QACjB,GAAG,MAAM,QAAQ,MAAM,IAAI;AAAA,MACnC;AAAA,MACM,YAAY,MAAM,QAAQ,WAAW,IAAI,CAAC,OAAO;AAAA,QAC/C,GAAG;AAAA,QACH,GAAG,EAAE,IAAI;AAAA,MACjB,EAAQ;AAAA,IACR;AAAA,IACI,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM,QAAQ,OAAO,MAAM;AAAA,EACxC;AACA;AACA,IAAI,qBAAqB;AAAA,EACvB,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,UAAU;AAAA,EACV,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AACR;AACA,IAAI,eAAe;AAAA,EACjB,MAAM,aAAa;AAAA,EACnB,cAAc;AAChB;AACA,IAAI,qBAAqB;AAAA,EACvB,SAAS,iBAAiB,MAAK;AAAA,EAC/B,MAAM,iBAAiB,MAAK;AAAA,EAC5B,SAAS;AACX;AACA,IAAI,iBAAiB,CAAC,GAAG,iBAAiB;AACxC,MAAI,IAAI,IAAI,IAAI,IAAI;AACpB,QAAM,CAAC,oBAAoB,qBAAqB,IAAIC,MAAQ,SAAS,kBAAkB;AACvF,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAQ,SAAQ;AAC9C,QAAM,iBAAiBA,MAAQ,OAAO,IAAI;AAC1C,QAAM,YAAYA,MAAQ,OAAO,IAAI;AACrC,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAQ,SAAQ;AACpD,QAAM,YAAYA,MAAQ,OAAO,IAAI;AACrC,QAAM,WAAWA,MAAQ,OAAM;AAC/B,QAAM;AAAA,IACJ,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,oBAAoB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,wBAAwB;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,SAAS;AAAA,IACT,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB,UAAU;AAAA,IACV,cAAc;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,yBAAyB;AAAA,IACzB,0BAA0B;AAAA,IAC1B,uBAAuB;AAAA,IACvB,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,sBAAsB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,gBAAgB,mBAAmB;AAAA,IACnC,gBAAgB,mBAAmB;AAAA,IACnC,oBAAoB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,IACjB;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,WAAW,cAAc;AAAA,IACzB,cAAc,iBAAiB;AAAA,IAC/B,mBAAmB,sBAAsB;AAAA,IACzC,OAAO;AAAA,IACP;AAAA,EACJ,IAAM;AACJ,QAAM,iBAAiB,KAAK,IAAI,kBAAkB,EAAE;AACpD,QAAM,iBAAiB,KAAK,IAAI,kBAAkB,cAAc;AAChE,QAAM,qBAAqB,KAAK,IAAI,wBAAwB,OAAO,uBAAuB,gBAAgB,cAAc;AACxH,QAAM,WAAWA,MAAQ,QAAQ,MAAM;AACrC,QAAI,OAAO,WAAW;AACpB,aAAO,EAAE,UAAU,OAAM;AAC3B,WAAO,OAAO,iBAAiB,SAAS,eAAe;AAAA,EACzD,GAAG,CAAA,CAAE;AACL,QAAM,cAAc,SAAS;AAC7B,QAAM,UAAUA,MAAQ,QAAQ,MAAM,OAAO,WAAW,WAAW,GAAG,CAAC,WAAW,CAAC;AACnF,QAAM,EAAE,WAAW,cAAc,mBAAmB,OAAO,aAAa,YAAW,IAAK,eAAe;AAAA,IACrG,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,aAAa;AAAA,IACb;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,OAAO;AAAA,EACX,CAAG;AACD,QAAM,cAAcA,MAAQ,QAAQ,MAAM;AACxC,WAAO,kBAAkB,SAAS,qBAAqB;AAAA,MACrD,GAAG;AAAA,MACH,GAAG;AAAA,IACT;AAAA,EACE,GAAG,CAAC,aAAa,CAAC;AAClB,QAAM,iBAAiB,qBAAqB,OAAO,oBAAoB,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK;AAC7H,QAAM,gBAAgB,eAAe;AACrC,QAAM,kBAAkB,gBAAgB,IAAI;AAC5C,QAAM,uBAAuB,kBAAkB;AAC/C,QAAM,iBAAiB,sBAAsB,OAAO,SAAS,mBAAmB,YAAY;AAC5F,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,MAAQ,SAAS,KAAK;AACpE,QAAM,aAAa,gBAAgB,OAAO,eAAe;AACzD,QAAM,gBAAgBA,MAAQ,YAAY,MAAM;AAC9C,QAAI,oBAAoB,QAAQ;AAC9B,sBAAe;AAAA,IACjB,OAAO;AACL,yBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,eAAe,CAAC;AACpB,QAAM,4BAA4BA,MAAQ,QAAQ,MAAM;AACtD,WAAO,uBAAuB,SAAS,SAAS,eAAe,oBAAoB,eAAe;AAAA,EACpG,GAAG,CAAC,oBAAoB,eAAe,CAAC;AACxC,QAAM,gBAAgB,6BAA6B,OAAO,4BAA4B;AACtF,QAAM,qBAAqBA,MAAQ,OAAO,IAAI,gBAAe,CAAE;AAC/DA,QAAQ,UAAU,MAAM;AACtB,WAAO,MAAM;AACX,4BAAsB,OAAO,SAAS,mBAAmB,QAAQ,MAAK;AAAA,IACxE;AAAA,EACF,GAAG,CAAA,CAAE;AACL,QAAM,CAAC,sBAAsB,yBAAyB,IAAI;AAAA,IACxD;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,EACJ;AACE,QAAM,eAAeA,MAAQ;AAAA,IAC3B,CAAC,MAAM,UAAU,cAAc;AAC7B,UAAI,mBAAmB;AACrB,eAAO;AACT,YAAM,OAAO,CAAC,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,CAAC;AAChD,aAAO,kBAAkB,OAAO,SAAS,eAAe,MAAM,UAAU,SAAS;AAAA,IACnF;AAAA,IACA,CAAC,iBAAiB,cAAc;AAAA,EACpC;AACE,QAAM,gCAAgCA,MAAQ,OAAO,kBAAkB;AACvE,QAAM,mBAAmBA,MAAQ;AAAA,IAC/B,CAAC,QAAQ,WAAW;AAClB,UAAI,QAAQ;AACV,iBAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,mBAAmB;AAAA,QAC7B;AAAA,MACM;AACA,UAAI,0BAA0B,QAAQ;AACpC,sCAA8B,UAAU,eAAe,QAAQ,CAAC,eAAe;AAC/E,8BAAsB,8BAA8B,OAAO;AAAA,MAC7D,OAAO;AACL,8BAAsB,MAAM;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,CAAC,uBAAuB,sBAAsB,iBAAiB,iBAAiB;AAAA,EACpF;AACE,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACAA,MAAQ;AAAA,MACN,CAACC,IAAG,GAAG,KAAK,OAAO;AACjB,4BAAoB,OAAO,SAAS,iBAAiB,UAAU,MAAM,eAAe,GAAG,GAAG,MAAM,iBAAiB,EAAE;AAAA,MACrH;AAAA,MACA,CAAC,kBAAkB,iBAAiB,SAAS;AAAA,IACnD;AAAA,EACA;AACE,QAAM,oBAAoB;AAAA,IACxB;AAAA,IACAD,MAAQ;AAAA,MACN,CAACC,IAAG,GAAG,KAAK,OAAO;AACjB,+BAAuB,OAAO,SAAS,oBAAoB,UAAU,MAAM,eAAe,GAAG,GAAG,MAAM,iBAAiB,EAAE;AAAA,MAC3H;AAAA,MACA,CAAC,qBAAqB,iBAAiB,SAAS;AAAA,IACtD;AAAA,EACA;AACE,QAAM,sBAAsB;AAAA,IAC1B;AAAA,IACAD,MAAQ;AAAA,MACN,CAACC,IAAG,GAAG,KAAK,OAAO;AACjB,iCAAyB,OAAO,SAAS,sBAAsB,UAAU,MAAM,eAAe,GAAG,GAAG,MAAM,iBAAiB,EAAE;AAAA,MAC/H;AAAA,MACA,CAAC,uBAAuB,iBAAiB,SAAS;AAAA,IACxD;AAAA,EACA;AACE,QAAM,cAAc;AAAA,IAClB;AAAA,IACAD,MAAQ;AAAA,MACN,CAAC,SAAS;AACR,YAAI;AACJ,gBAAQ,MAAM,gBAAgB,OAAO,SAAS,aAAa,EAAE,GAAG,MAAM,aAAa,KAAK,cAAc,gBAAe,CAAE,MAAM,OAAO,MAAM;AAAA,MAC5I;AAAA,MACA,CAAC,cAAc,eAAe;AAAA,IACpC;AAAA,EACA;AACE,QAAM,WAAWA,MAAQ;AAAA,IACvB,CAAC,QAAQ;AACP,UAAI,eAAe,QAAQ;AACzB,cAAM,SAAS,WAAW,eAAe,KAAK,CAAC,eAAe,CAAC;AAC/D,YAAI,OAAO,WAAW,WAAW;AAC/B,iBAAO;AAAA,QACT;AACA,eAAO,eAAe,QAAQ,eAAe;AAAA,MAC/C;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,YAAY,eAAe;AAAA,EAChC;AACE,QAAM,CAAC,YAAY,iBAAiB,kBAAkB,IAAI;AAAA,IACxD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACE,QAAM,cAAcA,MAAQ,QAAQ,MAAM;AACxC,WAAO,EAAE,GAAG,sBAAsB,GAAG,MAAK;AAAA,EAC5C,GAAG,CAAC,KAAK,CAAC;AACV,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAQ,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC;AAChE,QAAM,kBAAkBA,MAAQ;AAAA,IAC9B,CAAC,SAAS;AACR,UAAI,KAAK,SAAS,aAAa,QAAQ;AACrC,eAAO,cAAc,KAAK,IAAI;AAAA,MAChC;AACA,aAAO,uBAAuB,OAAO,SAAS,oBAAoB,KAAK,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC/F;AAAA,IACA,CAAC,mBAAmB;AAAA,EACxB;AACE,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,CAAC,KAAK,oBAAoB,IAAI,IAAI,kBAAkB,WAAW,CAAC;AAAA,IAC3E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,EACvB;AACE,QAAM,eAAeA,MAAQ,QAAQ,MAAM;AACzC,WAAO,QAAQ,KAAK,CAAC,MAAM,EAAE,UAAU,MAAM;AAAA,EAC/C,GAAG,CAAC,OAAO,CAAC;AACZ,QAAM,oBAAoB,eAAe,eAAe,oBAAoB;AAC5E,QAAM,kBAAkB,cAAc,KAAK;AAC3C,QAAM,kBAAkB,eAAe,SAAS,KAAK,oBAAoB,IAAI,2BAA2B,oBAAoB,OAAO,0BAA0B;AAC7J,QAAM,cAAcA,MAAQ,QAAQ,MAAM;AACxC,QAAI,eAAe;AACjB,aAAO;AACT,WAAO;AAAA,MACL;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,OAAO;AAAA,QACP,eAAe;AAAA,MACvB;AAAA,MACM,GAAG;AAAA,IACT;AAAA,EACE,GAAG,CAAC,SAAS,gBAAgB,YAAY,iBAAiB,cAAc,CAAC;AACzE,QAAM,CAAC,gBAAgB,eAAe,IAAIA,MAAQ,QAAQ,MAAM;AAC9D,WAAO;AAAA,MACL,kBAAkB,UAAU,OAAO,cAAc,WAAW,KAAK,MAAM,gBAAgB,SAAS,IAAI;AAAA,MACpG,kBAAkB,UAAU,OAAO,cAAc,WAAW,EAAE,gBAAgB,aAAa;AAAA,IACjG;AAAA,EACE,GAAG,CAAC,eAAe,SAAS,CAAC;AAC7B,QAAM,mBAAmBA,MAAQ,OAAO;AAAA,IACtC,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,EACP,CAAG;AACD,QAAM,qBAAqBA,MAAQ;AAAA,IACjC,MAAM;AACJ,UAAI,KAAK;AACT,aAAO;AAAA,QACL,GAAG,iBAAiB,QAAQ;AAAA,QAC5B,GAAG;AAAA,QACH,QAAQ,MAAM,iBAAiB,QAAQ,UAAU,OAAO,MAAM;AAAA,QAC9D,SAAS,MAAM,iBAAiB,QAAQ,WAAW,OAAO,MAAM;AAAA;AAAA,QAEhE,IAAI;AAAA,MACZ;AAAA,IACI;AAAA,IACA,CAAC,iBAAiB,cAAc;AAAA,EACpC;AACE,QAAM,kBAAkBA,MAAQ,OAAO,KAAK;AAC5C,QAAM,CAAC,eAAe,kBAAkB,MAAM,IAAI,0BAA0B,kBAAkB;AAC9F,QAAM,iBAAiB,KAAK,cAAc,WAAW,OAAO,KAAK,KAAK;AACtEA,QAAQ,gBAAgB,MAAM;AAC5B,QAAI,kBAAkB,UAAU,UAAU,YAAY,QAAQ,cAAc;AAC1E,UAAI,UAAU,QAAQ,cAAc;AAClC;AACF,gBAAU,QAAQ,YAAY;AAC9B,UAAI,UAAU,QAAQ,cAAc,eAAe;AACjD,eAAM;AAAA,MACR;AACA,sBAAgB,UAAU;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,eAAe,cAAc,MAAM,CAAC;AACxC,QAAM,iBAAiB,KAAK,cAAc,UAAU,OAAO,KAAK,KAAK;AACrEA,QAAQ,gBAAgB,MAAM;AAC5B,QAAI,kBAAkB,UAAU,UAAU,YAAY,QAAQ,cAAc;AAC1E,UAAI,UAAU,QAAQ,eAAe;AACnC;AACF,gBAAU,QAAQ,aAAa;AAC/B,UAAI,UAAU,QAAQ,eAAe,eAAe;AAClD,eAAM;AAAA,MACR;AACA,sBAAgB,UAAU;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,eAAe,cAAc,MAAM,CAAC;AACxC,QAAM,cAAc,cAAc,IAAI;AACtC,QAAM,cAAc,cAAc;AAClC,QAAM,UAAUA,MAAQ,OAAO,IAAI;AACnC,QAAM,QAAQA,MAAQ,YAAY,CAAC,cAAc;AAC/C,QAAI;AACJ,QAAI,cAAc,MAAM;AACtB,OAAC,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI,MAAK;AAAA,IACtD,OAAO;AACL,aAAO,sBAAsB,MAAM;AACjC,YAAI;AACJ,SAAC,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI,MAAK;AAAA,MACtD,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAA,CAAE;AACL,QAAM,cAAc,uBAAuB,OAAO,IAAI;AACtD,QAAM,uBAAuBA,MAAQ;AAAA,IACnC,CAAC,UAAU;AACT,YAAM,eAAe,oBAAoB,IAAI,QAAQ,MAAM,IAAI,CAAC,OAAO;AAAA,QACrE,GAAG;AAAA,QACH,UAAU,CAAC,EAAE,SAAS,CAAC,IAAI,iBAAiB,EAAE,SAAS,CAAC,CAAC;AAAA,MACjE,EAAQ;AACF,YAAM,IAAI,iBAAiB,OAAO,SAAS,cAAc,YAAY;AACrE,UAAI,MAAM,MAAM;AACd,mBAAW,KAAK;AACd,0BAAgB,OAAO,SAAS,aAAa,EAAE,UAAU,EAAE,KAAK;AAAA,MACpE;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,cAAc,eAAe,eAAe;AAAA,EACjD;AACE,QAAM,mBAAmBA,MAAQ,QAAQ,MAAM;AAC7C,QAAI,uBAAuB;AACzB,aAAO;AACT,QAAI,oBAAoB;AACtB,aAAO;AACT,WAAO,mBAAmB,IAAI,CAAC,MAAM;AACnC,YAAM,WAAW,YAAY,SAAS,EAAE,MAAM,IAAI;AAClD,UAAI,YAAY;AACd,eAAO;AACT,aAAO;AAAA,QACL,OAAO,EAAE;AAAA,QACT,OAAO;AAAA,UACL,GAAG,EAAE;AAAA,UACL,GAAG,EAAE,MAAM,IAAI;AAAA,UACf,OAAO,KAAK,IAAI,UAAU,EAAE,MAAM,KAAK;AAAA,QACjD;AAAA,QACQ,OAAO,EAAE;AAAA,MACjB;AAAA,IACI,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,MAAM;AAAA,EAC/B,GAAG,CAAC,oBAAoB,YAAY,QAAQ,eAAe,CAAC;AAC5D,QAAM,iBAAiBA,MAAQ,OAAO,WAAW;AACjD,iBAAe,UAAU;AACzB,QAAM,wBAAwBA,MAAQ;AAAA,IACpC,CAAC,CAAC,KAAK,GAAG,GAAG,cAAc,UAAU;AACnC,UAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI;AAC7C,YAAM,aAAa,wBAAwB,QAAQ,cAAc;AACjE,YAAM,iBAAiB,QAAQ,KAAK;AACpC,UAAI,gBAAgB;AAClB,YAAI,YAAY;AACd,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,UACL,MAAM,kBAAkB;AAAA,UACxB,cAAc;AAAA,UACd,UAAU,iBAAiB,OAAO,SAAS,cAAc,KAAK,SAAS,GAAG,OAAO;AAAA,UACjF,YAAY,eAAe,qBAAqB,WAAW;AAAA,UAC3D,KAAK,sBAAsB;AAAA,UAC3B,YAAY,eAAe;AAAA,UAC3B,QAAQ,eAAe,qBAAqB,YAAY;AAAA,QAClE;AAAA,MACM,WAAW,YAAY;AACrB,cAAM,UAAU,QAAQ;AACxB,cAAM,uBAAuB,WAAW,MAAM,sBAAsB,OAAO,SAAS,mBAAmB,SAAS,OAAO,MAAM,KAAK;AAClI,cAAM,IAAI,eAAe,QAAQ,GAAG;AACpC,cAAM,MAAM,KAAK,OAAO,SAAS,EAAE,uBAAuB,OAAO,SAAS,IAAI,cAAc,MAAM;AAChG,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM,QAAQ,OAAO,MAAM,KAAK,OAAO,SAAS,EAAE,uBAAuB,OAAO,SAAS,IAAI,SAAS,OAAO,MAAM;AACnH,gBAAM,QAAQ,MAAM,MAAM,KAAK,OAAO,SAAS,EAAE,uBAAuB,OAAO,SAAS,IAAI,YAAY,OAAO,KAAK,sBAAsB,OAAO,SAAS,mBAAmB;AAC7K,iBAAO;AAAA,YACL,MAAM,kBAAkB;AAAA,YACxB;AAAA,YACA,cAAc;AAAA,YACd;AAAA,UACZ;AAAA,QACQ;AAAA,MACF,OAAO;AACL,cAAM,WAAW,MAAM;AACvB,YAAI,gBAAgB,gBAAgB,OAAO,SAAS,aAAa,YAAY,MAAM;AACjF,gBAAM,KAAK,iBAAiB;AAC5B,gBAAM,oBAAoB,GAAG,IAAI,YAAY,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,OAAO,MAAM,GAAG,IAAI,GAAG;AACzG,gBAAM,aAAa,eAAe,MAAM,KAAK,GAAG,WAAW,OAAO,SAAS,GAAG,aAAa,OAAO,SAAS,GAAG,CAAC,MAAM,UAAU,KAAK,GAAG,WAAW,OAAO,SAAS,GAAG,SAAS,CAAC;AAC/K,gBAAM,wBAAwB,KAAK,GAAG,WAAW,OAAO,SAAS,GAAG,kBAAkB,UAAU,GAAG,OAAO,aAAa,IAAI,YAAY,WAAW,GAAG,OAAO,aAAa,IAAI,GAAG,OAAO,aAAa,SAAS,GAAG,OAAO,aAAa,IAAI,OAAO,MAAM,GAAG,OAAO,aAAa,IAAI,GAAG,OAAO,aAAa;AACvS,cAAI,qBAAqB,CAAC,cAAc,qBAAqB;AAC3D,mBAAO;AAAA,cACL,MAAM,aAAa;AAAA,cACnB,cAAc;AAAA,YAC5B;AAAA,UACU;AAAA,QACF;AACA,YAAI,SAAS,eAAe,CAAC,UAAU,GAAG,CAAC;AAC3C,YAAI,oBAAoB,KAAK,OAAO,SAAS,QAAQ;AACnD,mBAAS;AAAA,YACP,GAAG;AAAA,YACH,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,iBAAiB,OAAO,KAAK,CAAC,IAAI,eAAe;AAAA,UACrF;AAAA,QACQ;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAiB,OAAO,SAAS,cAAc;AAAA,MAC/C;AAAA,MACA;AAAA,MACA;AAAA,MACA,sBAAsB,OAAO,SAAS,mBAAmB;AAAA,MACzD,sBAAsB,OAAO,SAAS,mBAAmB;AAAA,MACzD,gBAAgB,OAAO,SAAS,aAAa;AAAA,MAC7C;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,yBAAyBA,MAAQ;AAAA,IACrC,CAAC,UAAU;AACT,UAAI,KAAK;AACT,UAAI,UAAU,MAAM,mBAAmB,OAAO,SAAS,gBAAgB,KAAK,MAAM,OAAO,MAAM,EAAE,MAAM,MAAK;AAC5G,UAAI,yBAAyB,UAAU,UAAU,IAAI;AACnD,iBAAS;AAAA,UACP,MAAM,OAAO;AAAA,UACb,MAAM,OAAO;AAAA,UACb,eAAe,OAAO;AAAA,UACtB,SAAS;AAAA,YACP,IAAI,MAAM,OAAO,YAAY,OAAO,MAAM,CAAA;AAAA,YAC1C;AAAA,cACE,OAAO;AAAA,cACP,MAAM;AAAA,cACN,SAAS,CAAC,MAAM,eAAe;AAAA,gBAC7B,OAAO,OAAO;AAAA,gBACd,QAAQ,EAAE;AAAA,cAC1B,CAAe;AAAA,YACf;AAAA,UACA;AAAA,QACA;AAAA,MACM;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,iBAAiB,oBAAoB;AAAA,EAC1C;AACE,QAAM,mBAAmBA,MAAQ;AAAA,IAC/B,CAAC,QAAQ;AACP,UAAI;AACJ,YAAM,CAAC,KAAK,GAAG,IAAI,IAAI;AACvB,YAAM,SAAS,YAAY,GAAG;AAC9B,YAAM,cAAc,UAAU,OAAO,SAAS,OAAO,WAAW,UAAU,MAAM,uBAAuB,OAAO,KAAK,MAAM,OAAO,SAAS,IAAI,gBAAgB;AAC7J,YAAM,WAAW,UAAU,OAAO,SAAS,OAAO;AAClD,YAAM,WAAW,uBAAuB,OAAO,SAAS,oBAAoB,GAAG;AAC/E,iBAAW;AAAA,QACT,GAAG;AAAA,QACH,OAAO,EAAE,GAAG,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,QAAQ,cAAa;AAAA,MACtG,CAAO;AAAA,IACH;AAAA,IACA,CAAC,qBAAqB,aAAa,wBAAwB,WAAW;AAAA,EAC1E;AACE,QAAM,WAAWA,MAAQ;AAAA,IACvB,CAAC,QAAQ,cAAc,iBAAiB;AACtC,UAAI;AACJ,UAAI,cAAc,YAAY;AAC5B;AACF,YAAM,CAAC,KAAK,GAAG,IAAI,cAAc,QAAQ;AACzC,YAAM,IAAI,sBAAsB,CAAC,KAAK,GAAG,CAAC;AAC1C,UAAI,EAAE,SAAS,aAAa,WAAW,EAAE,cAAc;AACrD,YAAI,UAAU;AACd,YAAI,iBAAiB,QAAQ;AAC3B,kBAAQ,QAAQ,MAAI;AAAA,YAClB,KAAK,aAAa,QAAQ;AACxB,oBAAM,IAAI,MAAM,MAAM,iBAAiB,MAAM,KAAK,OAAO,WAAW,YAAY,GAAG,CAAC;AACpF,wBAAU;AAAA,gBACR,GAAG;AAAA,gBACH,MAAM,OAAO,MAAM,CAAC,IAAI,IAAI;AAAA,cAC5C;AACc;AAAA,YACF;AAAA,YACA,KAAK,aAAa;AAAA,YAClB,KAAK,aAAa;AAAA,YAClB,KAAK,aAAa;AAChB,wBAAU;AAAA,gBACR,GAAG;AAAA,gBACH,MAAM;AAAA,cACtB;AACc;AAAA,UACd;AAAA,QACQ;AACA,yBAAiB;AAAA,UACf,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,MAAM,CAAC,KAAK,GAAG;AAAA,UACf,WAAW,iBAAiB;AAAA,UAC5B,eAAe,iBAAiB;AAAA,QAC1C,CAAS;AAAA,MACH,WAAW,EAAE,SAAS,aAAa,WAAW,gBAAgB,EAAE,aAAa,MAAM;AACjF,6BAAqB;AAAA,UACnB;AAAA,YACE,UAAU,cAAc,QAAQ;AAAA,YAChC,OAAO;AAAA,cACL,GAAG;AAAA,cACH,MAAM,cAAc,EAAE,IAAI;AAAA,YACxC;AAAA,UACA;AAAA,QACA,CAAS;AACD,SAAC,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI,OAAO,CAAC,EAAE,MAAM,cAAc,QAAQ,KAAI,CAAE,CAAC;AAAA,MAC9F;AAAA,IACF;AAAA,IACA,CAAC,uBAAuB,eAAe,sBAAsB,gBAAgB;AAAA,EACjF;AACE,QAAM,iCAAiCA,MAAQ;AAAA,IAC7C,CAAC,KAAK,QAAQ;AACZ,UAAI;AACJ,YAAM,UAAU,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI,UAAU,KAAK,GAAG;AAChF,UAAI,WAAW,UAAU,UAAU,YAAY,MAAM;AACnD;AAAA,MACF;AACA,YAAM,UAAU,sBAAsB,CAAC,KAAK,GAAG,CAAC;AAChD,UAAI,CAAC,QAAQ,cAAc;AACzB;AAAA,MACF;AACA,uBAAiB;AAAA,QACf,QAAQ;AAAA,QACR;AAAA,QACA,cAAc;AAAA,QACd,WAAW;AAAA,QACX,MAAM,CAAC,KAAK,GAAG;AAAA,QACf,eAAe;AAAA,MACvB,CAAO;AAAA,IACH;AAAA,IACA,CAAC,uBAAuB,gBAAgB;AAAA,EAC5C;AACE,QAAM,WAAWA,MAAQ;AAAA,IACvB,CAAC,KAAK,KAAK,MAAM,QAAQ,WAAW,GAAG,WAAW,GAAG,UAAU,WAAW;AACxE,UAAI;AACJ,UAAI,UAAU,YAAY,MAAM;AAC9B,cAAM,OAAO,QAAQ;AACrB,cAAM,SAAS,UAAU;AACzB,cAAM,UAAU,OAAO,QAAQ,WAAW,IAAI,SAAS,SAAS,IAAI,SAAS,SAAS;AACtF,cAAM,UAAU,OAAO,QAAQ,WAAW,IAAI,SAAS,SAAS,IAAI,SAAS,SAAS;AACtF,cAAM,WAAW,OAAO,QAAQ,YAAY,IAAI,SAAS,OAAO,IAAI,SAAS;AAC7E,cAAM,WAAW,OAAO,QAAQ,YAAY,IAAI,SAAS,OAAO,IAAI,SAAS;AAC7E,YAAI,SAAS,QAAQ,WAAW,MAAM;AACpC,cAAI,aAAa;AAAA,YACf,GAAG;AAAA,YACH,GAAG;AAAA,YACH,OAAO;AAAA,YACP,QAAQ;AAAA,UACpB;AACU,cAAI,UAAU;AACd,cAAI,UAAU;AACd,cAAI,YAAY,UAAU,YAAY,QAAQ;AAC5C,0BAAc,MAAM,KAAK,WAAW,WAAW,OAAO,UAAU,KAAK,iBAAiB,WAAW,OAAO,UAAU,CAAC,MAAM,OAAO,MAAM;AACtI,gBAAI,WAAW,UAAU,KAAK,WAAW,WAAW;AAClD;AAAA,UACJ;AACA,gBAAM,eAAe,OAAO,sBAAqB;AACjD,gBAAM,QAAQ,aAAa,QAAQ,OAAO;AAC1C,cAAI,aAAa,QAAQ;AACvB,yBAAa;AAAA,cACX,GAAG;AAAA,cACH,GAAG,WAAW,aAAa,OAAO,UAAU,QAAQ;AAAA,cACpD,OAAO;AAAA,YACrB;AAAA,UACU;AACA,cAAI,aAAa,QAAQ;AACvB,yBAAa;AAAA,cACX,GAAG;AAAA,cACH,GAAG,WAAW,aAAa,MAAM,UAAU,QAAQ;AAAA,cACnD,QAAQ;AAAA,YACtB;AAAA,UACU;AACA,cAAI,eAAe,QAAQ;AACzB,kBAAM,SAAS;AAAA,cACb,GAAG,WAAW,IAAI;AAAA,cAClB,GAAG,WAAW,IAAI;AAAA,cAClB,OAAO,WAAW,QAAQ,IAAI;AAAA,cAC9B,QAAQ,WAAW,SAAS,IAAI;AAAA,YAC9C;AACY,gBAAI,cAAc;AAClB,qBAAS,IAAI,GAAG,IAAI,eAAe,KAAK;AACtC,6BAAe,QAAQ,CAAC,EAAE;AAAA,YAC5B;AACA,gBAAI,oBAAoB;AACxB,gBAAI,eAAe;AACjB,kCAAoB,OAAO,cAAc,WAAW,YAAY,UAAU,IAAI;AAAA,YAChF;AACA,gBAAI,QAAQ,cAAc,QAAQ,aAAa,OAAO,kBAAkB,iBAAiB;AACzF,gBAAI,SAAS,aAAa;AAC1B,gBAAI,OAAO,aAAa,MAAM,oBAAoB;AAClD,gBAAI,UAAU,aAAa,SAAS,oBAAoB;AACxD,kBAAM,OAAO,WAAW,QAAQ,WAAW;AAC3C,oBAAQ,WAAW,OAAO,SAAS,QAAQ,QAAM;AAAA,cAC/C,KAAK;AACH,yBAAS,QAAQ;AACjB;AAAA,cACF,KAAK;AACH,wBAAQ,SAAS;AACjB;AAAA,cACF,KAAK;AACH,wBAAQ,KAAK,OAAO,QAAQ,UAAU,CAAC,IAAI,OAAO;AAClD,yBAAS,QAAQ;AACjB;AAAA,YAChB;AACY,kBAAM,OAAO,WAAW,SAAS,WAAW;AAC5C,oBAAQ,WAAW,OAAO,SAAS,QAAQ,QAAM;AAAA,cAC/C,KAAK;AACH,0BAAU,OAAO;AACjB;AAAA,cACF,KAAK;AACH,uBAAO,UAAU;AACjB;AAAA,cACF,KAAK;AACH,uBAAO,KAAK,OAAO,OAAO,WAAW,CAAC,IAAI,OAAO;AACjD,0BAAU,OAAO;AACjB;AAAA,YAChB;AACY,gBAAI,QAAQ,OAAO,GAAG;AACpB,wBAAU,OAAO,IAAI;AAAA,YACvB,WAAW,SAAS,OAAO,IAAI,OAAO,OAAO;AAC3C,wBAAU,OAAO,IAAI,OAAO,QAAQ;AAAA,YACtC;AACA,gBAAI,OAAO,OAAO,GAAG;AACnB,wBAAU,OAAO,IAAI;AAAA,YACvB,WAAW,UAAU,OAAO,IAAI,OAAO,QAAQ;AAC7C,wBAAU,OAAO,IAAI,OAAO,SAAS;AAAA,YACvC;AACA,gBAAI,QAAQ,cAAc,OAAO,QAAQ,YAAY,MAAM,eAAe;AACxE,wBAAU;AAAA,YACZ,WAAW,QAAQ,cAAc;AAC/B,wBAAU;AAAA,YACZ;AACA,gBAAI,YAAY,KAAK,YAAY,GAAG;AAClC,kBAAI,UAAU,GAAG;AACf,2BAAW;AACX,2BAAW;AAAA,cACb;AACA,wBAAU,QAAQ;AAAA,gBAChB,UAAU,UAAU,QAAQ;AAAA,gBAC5B,UAAU,UAAU,QAAQ;AAAA,cAC5C;AAAA,YACY;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,iBAAiB,gBAAgB,mBAAmB,eAAe,eAAe,SAAS,WAAW,IAAI;AAAA,EAC/G;AACE,QAAM,gBAAgBA,MAAQ,OAAO,8BAA8B;AACnE,QAAM,oBAAoBA,MAAQ,OAAO,cAAc;AACvD,QAAM,UAAUA,MAAQ,OAAO,IAAI;AACnC,gBAAc,UAAU;AACxB,oBAAkB,UAAU;AAC5B,UAAQ,UAAU;AAClB,QAAM,YAAYA,MAAQ;AAAA,IACxB,OAAO,KAAK,cAAc,SAAS;AACjC,UAAI;AACJ,YAAM,IAAI,YAAY,GAAG;AACzB,YAAM,MAAM,KAAK,OAAO,SAAS,EAAE,uBAAuB,OAAO,SAAS,IAAI,cAAc,MAAM;AAChG;AAAA,MACF;AACA,YAAM,eAAe,iBAAiB,OAAO,SAAS,cAAa;AACnE,UAAI,IAAI;AACR,UAAI,SAAS;AACb,UAAI,iBAAiB,QAAQ;AAC3B,YAAI,MAAM;AACV,YAAI,MAAM;AACR,mBAAS;AACX,YAAI,OAAO,MAAM;AACf,mBAAS;AAAA,MACb;AACA,UAAI,UAAU;AACd,YAAM,UAAU,MAAM;AACpB,YAAI,QAAQ,WAAW,MAAM;AAC3B,cAAI,UAAU,KAAK;AACjB,mBAAO,WAAW,SAAS,OAAO;AAAA,UACpC;AACA,oBAAU,KAAK,UAAU;AACzB;AAAA,QACF;AACA,cAAM,MAAM,OAAO,MAAM,WAAW,IAAI,SAAS,OAAO;AACxD,iBAAS,MAAM,iBAAiB,GAAG;AACnC;AAAA,UACE;AAAA,YACE,MAAM,CAAC,KAAK,GAAG;AAAA,YACf,OAAO;AAAA,cACL,GAAG;AAAA,cACH,GAAG;AAAA,cACH,OAAO;AAAA,cACP,QAAQ;AAAA,YACtB;AAAA,UACA;AAAA,UACU;AAAA,UACA;AAAA,UACA;AAAA,QACV;AACQ,cAAM,OAAO,kBAAkB,QAAQ,CAAC,MAAM,iBAAiB,GAAG,CAAC;AACnE,YAAI,KAAK,gBAAgB,gBAAgB,IAAI,KAAK,KAAK,aAAa,QAAQ,aAAa;AACvF,iBAAO,WAAW,MAAM;AACtB,0BAAc,QAAQ,KAAK,GAAG;AAAA,UAChC,GAAG,CAAC;AAAA,QACN;AAAA,MACF;AACA,cAAO;AAAA,IACT;AAAA,IACA,CAAC,aAAa,eAAe,iBAAiB,MAAM,UAAU,UAAU;AAAA,EAC5E;AACE,QAAM,8BAA8BA,MAAQ;AAAA,IAC1C,CAAC,QAAQ;AACP,UAAI,KAAK,KAAK;AACd,YAAM,sBAAsB,OAAO,OAAO,MAAM,QAAQ,GAAG,MAAM,OAAO,SAAS,IAAI,uBAAuB,OAAO,SAAS,IAAI,iBAAiB,OAAO,MAAM,sBAAsB,OAAO,SAAS,mBAAmB;AACvN,UAAI,OAAO,uBAAuB,UAAU;AAC1C,cAAM,qBAAqB,gBAAgB,IAAI;AAC/C,eAAO,qBAAqB;AAAA,MAC9B;AACA,UAAI,OAAO,uBAAuB,UAAU;AAC1C,cAAM,aAAa,UAAU,QAAQ,kBAAkB;AACvD,YAAI,cAAc,GAAG;AACnB,gBAAM,qBAAqB,gBAAgB,IAAI;AAC/C,iBAAO,aAAa;AAAA,QACtB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,SAAS,WAAW,eAAe,sBAAsB,OAAO,SAAS,mBAAmB,YAAY;AAAA,EAC7G;AACE,QAAM,qBAAqBA,MAAQ,OAAM;AACzC,QAAM,qBAAqBA,MAAQ,OAAM;AACzC,QAAM,eAAeA,MAAQ;AAAA,IAC3B,CAAC,MAAM,QAAQ;AACb,UAAI;AACJ,YAAM,CAAC,KAAK,GAAG,IAAI;AACnB,aAAO;AAAA,QACL,GAAG;AAAA,QACH,IAAI,MAAM,YAAY,GAAG,MAAM,OAAO,SAAS,IAAI;AAAA,QACnD,GAAG,uBAAuB,OAAO,SAAS,oBAAoB,GAAG;AAAA,QACjE,GAAG,KAAK;AAAA,MAChB;AAAA,IACI;AAAA,IACA,CAAC,qBAAqB,aAAa,WAAW;AAAA,EAClD;AACE,QAAM,eAAeA,MAAQ;AAAA,IAC3B,CAAC,SAAS;AACR,UAAI,KAAK,KAAK,KAAK;AACnB,YAAM,aAAa,aAAa,QAAQ,KAAK,UAAU,KAAK;AAC5D,YAAM,aAAa,cAAc,cAAc;AAC/C,YAAM,aAAa,cAAc,iBAAiB;AAClD,YAAM,CAAC,KAAK,GAAG,IAAI,KAAK;AACxB,YAAM,kBAAkB,cAAc;AACtC,YAAM,eAAe,cAAc;AACnC,YAAM,CAAC,SAAS,OAAO,KAAK,OAAO,MAAM,cAAc,YAAY,OAAO,SAAS,IAAI,SAAS,OAAO,MAAM,CAAA;AAC7G,UAAI,KAAK,SAAS,QAAQ;AACxB,2BAAmB,UAAU;AAC7B,gCAAwB,UAAU,CAAC,KAAK,GAAG;AAC3C,YAAI,QAAQ,KAAK,eAAe;AAC9B,cAAI,yBAAyB,QAAQ,QAAQ,QAAQ,eAAe,YAAY,cAAc;AAC5F;AACF,gBAAM,aAAa,sBAAsB,KAAK,QAAQ;AACtD,cAAI,WAAW,SAAS,kBAAkB,QAAQ;AAChD;AAAA,UACF;AACA,cAAI,eAAe,QAAQ;AACzB,kBAAM,WAAW,gBAAgB,UAAU;AAC3C,oBAAQ,YAAY,OAAO,SAAS,SAAS,UAAU,kBAAkB,MAAM;AAC/E,kBAAM,aAAa,MAAM,YAAY,OAAO,SAAS,SAAS,YAAY,OAAO,SAAS,IAAI,KAAK,UAAU;AAAA,cAC3G,GAAG;AAAA,cACH,MAAM;AAAA,cACN,MAAM,KAAK;AAAA,cACX,MAAM,KAAK;AAAA,cACX,QAAQ,KAAK;AAAA,cACb,OAAO,aAAa,YAAY,KAAK,QAAQ;AAAA,cAC7C,gBAAgB,MAAM;AAAA,YACpC,CAAa;AACD,gBAAI,cAAc,UAAU,UAAU,YAAY,WAAW;AAC3D;AAAA,UACJ;AACA,qBAAW,MAAM;AACjB,gBAAK;AACL,gBAAM,aAAa,aAAa,SAAS,GAAG;AAC5C,gBAAM,kBAAkB,mBAAmB;AAC3C,cAAI,cAAc,YAAY,KAAK,YAAY,KAAK,gBAAgB,SAAS,oBAAoB,UAAU,aAAa,SAAS,eAAe,GAAG;AACjJ,kBAAM,WAAW,CAAC,KAAK,IAAI,iBAAiB,GAAG,GAAG,KAAK,IAAI,iBAAiB,GAAG,IAAI,CAAC;AACpF,gBAAI,cAAc,qBAAqB,SAAS;AAC9C,8BAAgB,QAAQ,UAAU,IAAI;AAAA,YACxC,OAAO;AACL,8BAAgB,iBAAiB,oBAAoB,QAAQ,GAAG,QAAQ,UAAU;AAAA,YACpF;AAAA,UACF,WAAW,cAAc,KAAK,WAAW,qBAAqB,SAAS;AACrE,gBAAI,YAAY;AACd,8BAAgB,aAAa,OAAO,GAAG,GAAG,QAAQ,IAAI;AAAA,YACxD,OAAO;AACL,8BAAgB,QAAQ,KAAK,IAAI;AACjC,iCAAmB,UAAU;AAAA,YAC/B;AAAA,UACF,WAAW,cAAc,aAAa,WAAW,GAAG;AAClD,4BAAgB,iBAAiB,SAAS,QAAQ,UAAU;AAAA,UAC9D,OAAO;AACL,4BAAgB,iBAAiB,oBAAoB,GAAG,GAAG,QAAQ,UAAU;AAC7E,+BAAmB,UAAU;AAAA,UAC/B;AAAA,QACF,WAAW,OAAO,mBAAmB,wBAAwB,QAAQ,MAAM;AACzE,gBAAM,qBAAqB,4BAA4B,GAAG;AAC1D,eAAK,UAAU,sBAAsB,OAAO,qBAAqB,GAAG;AAAA,QACtE,OAAO;AACL,cAAI,YAAY,OAAO,YAAY,KAAK;AACtC,kBAAM,OAAO,sBAAsB,KAAK,QAAQ;AAChD,kBAAM,WAAW,gBAAgB,IAAI;AACrC,iBAAK,YAAY,OAAO,SAAS,SAAS,cAAc,QAAQ;AAC9D,kBAAI,YAAY;AAChB,uBAAS,SAAS;AAAA,gBAChB,GAAG;AAAA,gBACH;AAAA,gBACA,MAAM,KAAK;AAAA,gBACX,MAAM,KAAK;AAAA,gBACX,QAAQ,KAAK;AAAA,gBACb,gBAAgB,MAAM,YAAY;AAAA,gBAClC,OAAO,aAAa,MAAM,KAAK,QAAQ;AAAA,cACvD,CAAe;AACD,kBAAI,WAAW;AACb;AAAA,cACF;AAAA,YACF;AACA,kBAAM,kBAAkB,iBAAiB,QAAQ;AACjD,kBAAM,wBAAwB,iBAAiB,kBAAkB,YAAY,MAAM,cAAc,YAAY,OAAO,SAAS,IAAI,KAAK,CAAC,OAAO;AAC9I,iBAAK,KAAK,YAAY,KAAK,gBAAgB,SAAS,YAAY,UAAU,YAAY,UAAU,cAAc,YAAY,UAAU,CAAC,uBAAuB;AAC1J,kBAAI,iBAAiB;AACnB;AAAA,cACF;AACA,oBAAM,OAAO,KAAK,IAAI,KAAK,OAAO;AAClC,oBAAM,QAAQ,KAAK,IAAI,KAAK,OAAO;AACnC,oBAAM,MAAM,KAAK,IAAI,KAAK,OAAO;AACjC,oBAAM,SAAS,KAAK,IAAI,KAAK,OAAO;AACpC;AAAA,gBACE;AAAA,kBACE,GAAG,cAAc;AAAA,kBACjB,OAAO;AAAA,oBACL,GAAG;AAAA,oBACH,GAAG;AAAA,oBACH,OAAO,QAAQ,OAAO;AAAA,oBACtB,QAAQ,SAAS,MAAM;AAAA,kBAC3C;AAAA,gBACA;AAAA,gBACgB;AAAA,gBACA;AAAA,gBACA;AAAA,cAChB;AACc,iCAAmB,UAAU;AAC7B,oBAAK;AAAA,YACP,OAAO;AACL;AAAA,gBACE;AAAA,kBACE,MAAM,CAAC,KAAK,GAAG;AAAA,kBACf,OAAO,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,GAAG,QAAQ,EAAC;AAAA,gBAC9D;AAAA,gBACgB;AAAA,gBACA;AAAA,gBACA;AAAA,cAChB;AACc,iCAAmB,UAAU;AAC7B,yBAAW,MAAM;AACjB,oBAAK;AAAA,YACP;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAAW,KAAK,SAAS,UAAU;AACjC,gCAAwB,UAAU,CAAC,KAAK,GAAG;AAC3C,mBAAW,MAAM;AACjB,YAAI,iBAAiB,QAAQ,GAAG;AAC9B,6BAAmB,UAAU;AAC7B,6BAAmB,UAAU;AAC7B,cAAI,cAAc,SAAS;AACzB,gBAAI,aAAa,WAAW,MAAM;AAChC,8BAAgB,iBAAiB,oBAAoB,CAAC,GAAG,IAAI,CAAC,GAAG,QAAQ,UAAU;AAAA,YACrF,OAAO;AACL,8BAAgB,iBAAiB,SAAS,QAAQ,UAAU;AAAA,YAC9D;AACA,kBAAK;AAAA,UACP;AAAA,QACF,OAAO;AACL,gBAAM,UAAU,mBAAmB;AACnC,cAAI,iBAAiB,YAAY,KAAK,YAAY,KAAK,gBAAgB,SAAS,YAAY,UAAU,gBAAgB,SAAS,OAAO,GAAG;AACvI,kBAAM,WAAW,CAAC,KAAK,IAAI,SAAS,GAAG,GAAG,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC;AACpE,gBAAI,YAAY;AACd,iCAAmB,QAAQ,UAAU,UAAU;AAAA,YACjD,OAAO;AACL,iCAAmB,iBAAiB,oBAAoB,QAAQ,GAAG,QAAQ,UAAU;AAAA,YACvF;AAAA,UACF,WAAW,YAAY;AACrB,gBAAI,gBAAgB,SAAS,GAAG,GAAG;AACjC,iCAAmB,gBAAgB,OAAO,GAAG,GAAG,QAAQ,UAAU;AAAA,YACpE,OAAO;AACL,iCAAmB,QAAQ,KAAK,UAAU;AAAA,YAC5C;AACA,+BAAmB,UAAU;AAAA,UAC/B,WAAW,iBAAiB,QAAQ;AAClC,+BAAmB,iBAAiB,oBAAoB,GAAG,GAAG,QAAQ,UAAU;AAChF,+BAAmB,UAAU;AAAA,UAC/B;AACA,6BAAmB,UAAU;AAC7B,gBAAK;AAAA,QACP;AAAA,MACF,WAAW,KAAK,SAAS,iBAAiB;AACxC,gCAAwB,UAAU,CAAC,KAAK,GAAG;AAAA,MAC7C,WAAW,KAAK,SAAS,mBAAmB,CAAC,KAAK,kBAAkB;AAClE,yBAAiB,oBAAoB,KAAK;AAC1C,mBAAW,MAAM;AACjB,cAAK;AACL,8BAAsB,OAAO,SAAS,mBAAkB;AACxD,2BAAmB,UAAU;AAC7B,2BAAmB,UAAU;AAAA,MAC/B;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,2BAA2BA,MAAQ,OAAO,KAAK;AACrD,QAAM,0BAA0BA,MAAQ,OAAM;AAC9C,QAAM,gBAAgBA,MAAQ,OAAO,aAAa;AAClD,QAAM,gBAAgBA,MAAQ,OAAM;AACpC,QAAM,cAAcA,MAAQ;AAAA,IAC1B,CAAC,SAAS;AACR,UAAI,KAAK;AACT,kBAAY,UAAU;AACtB,oBAAc,UAAU,iBAAiB;AACzC,UAAI,KAAK,WAAW,KAAK,KAAK,WAAW,GAAG;AAC1C,sBAAc,UAAU;AACxB;AAAA,MACF;AACA,YAAM,OAAO,YAAY,IAAG;AAC5B,YAAM,iBAAiB,SAAS,OAAO,MAAM,cAAc,YAAY,OAAO,SAAS,IAAI,SAAS,OAAO,MAAM,QAAQ;AACzH,oBAAc,UAAU;AAAA,QACtB;AAAA,QACA,QAAQ,KAAK;AAAA,QACb;AAAA,QACA,UAAU,KAAK;AAAA,MACvB;AACM,WAAK,QAAQ,OAAO,SAAS,KAAK,UAAU,UAAU;AACpD,iCAAyB,UAAU;AAAA,MACrC;AACA,YAAM,KAAK,KAAK,SAAS,UAAU,KAAK;AACxC,UAAI,CAAC,MAAM,KAAK,SAAS,UAAU,KAAK;AACtC;AACF,oBAAc;AAAA,QACZ,mBAAmB;AAAA,QACnB,YAAY;AAAA,MACpB,CAAO;AACD,8BAAwB,UAAU;AAClC,UAAI,CAAC,KAAK,WAAW,KAAK,WAAW,GAAG;AACtC,qBAAa,IAAI;AAAA,MACnB,WAAW,CAAC,KAAK,WAAW,KAAK,WAAW,GAAG;AAC7C,gCAAwB,UAAU,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,IACA,CAAC,eAAe,YAAY;AAAA,EAChC;AACE,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAQ,SAAQ;AACtD,QAAM,6BAA6BA,MAAQ;AAAA,IACzC,CAAC,SAAS;AACR,UAAI,KAAK,SAAS,mBAAmB,iBAAiB,SAAS;AAC7D;AAAA,MACF;AACA,YAAM,aAAa,aAAa,QAAQ,KAAK,UAAU,KAAK;AAC5D,YAAM,CAAC,GAAG,IAAI,KAAK;AACnB,YAAM,kBAAkB,cAAc;AACtC,UAAI,MAAM;AACR;AACF,YAAM,SAAS,YAAY,GAAG;AAC9B,UAAI,QAAQ;AACZ,UAAI,MAAM;AACV,eAAS,IAAI,MAAM,GAAG,KAAK,iBAAiB,KAAK;AAC/C,YAAI,CAAC,aAAa,OAAO,OAAO,YAAY,CAAC,EAAE,KAAK;AAClD;AACF;AAAA,MACF;AACA,eAAS,IAAI,MAAM,GAAG,IAAI,YAAY,QAAQ,KAAK;AACjD,YAAI,CAAC,aAAa,OAAO,OAAO,YAAY,CAAC,EAAE,KAAK;AAClD;AACF;AAAA,MACF;AACA,YAAK;AACL,UAAI,YAAY;AACd,YAAI,gBAAgB,OAAO,CAAC,OAAO,MAAM,CAAC,CAAC,GAAG;AAC5C,cAAI,SAAS;AACb,mBAAS,QAAQ,OAAO,SAAS,KAAK,SAAS;AAC7C,qBAAS,OAAO,OAAO,KAAK;AAAA,UAC9B;AACA,6BAAmB,QAAQ,QAAQ,UAAU;AAAA,QAC/C,OAAO;AACL,6BAAmB,QAAQ,CAAC,OAAO,MAAM,CAAC,GAAG,UAAU;AAAA,QACzD;AAAA,MACF,OAAO;AACL,2BAAmB,iBAAiB,oBAAoB,CAAC,OAAO,MAAM,CAAC,CAAC,GAAG,QAAQ,UAAU;AAAA,MAC/F;AAAA,IACF;AAAA,IACA,CAAC,cAAc,OAAO,cAAc,SAAS,aAAa,iBAAiB,kBAAkB;AAAA,EACjG;AACE,QAAM,WAAWA,MAAQ;AAAA,IACvB,CAAC,YAAY;AACX,UAAI;AACJ,UAAI,cAAc,YAAY;AAC5B;AACF,YAAME,KAAI,CAAA;AACV,YAAM,IAAI,cAAc,QAAQ;AAChC,eAAS,IAAI,GAAG,IAAI,EAAE,OAAO,KAAK;AAChC,cAAM,UAAU,IAAI,EAAE;AACtB,cAAM,UAAU,sBAAsB,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AACnF,YAAI,gBAAgB,OAAO,KAAK,CAAC,gBAAgB,OAAO;AACtD;AACF,iBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,gBAAM,UAAU,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,KAAK,IAAI,EAAE;AAC3D,gBAAM,SAAS,CAAC,SAAS,OAAO;AAChC,UAAAA,GAAE,KAAK;AAAA,YACL,UAAU;AAAA,YACV,OAAO,EAAE,GAAG,QAAO;AAAA,UAC/B,CAAW;AAAA,QACH;AAAA,MACF;AACA,2BAAqBA,EAAC;AACtB,OAAC,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI;AAAA,QAC7CA,GAAE,IAAI,CAAC,OAAO;AAAA,UACZ,MAAM,EAAE;AAAA,QAClB,EAAU;AAAA,MACV;AAAA,IACI;AAAA,IACA,CAAC,uBAAuB,eAAe,oBAAoB;AAAA,EAC/D;AACE,QAAM,cAAcF,MAAQ,OAAO,KAAK;AACxC,QAAM,mBAAmBA,MAAQ;AAAA,IAC/B,OAAO,KAAK,QAAQ,UAAU;AAC5B,UAAI;AACJ,aAAO,MAAM,cAAc,YAAY,OAAO,SAAS,IAAI,oBAAoB,QAAQ,UAAU,yBAAyB,UAAU,mBAAmB,QAAQ;AAC7J,cAAM,QAAQ,iBAAiB,QAAQ;AACvC,cAAM,MAAM,iBAAiB,QAAQ;AACrC,YAAI,QAAQ;AAAA,UACV;AAAA,YACE,GAAG;AAAA,YACH,GAAG;AAAA,YACH,OAAO;AAAA,YACP,QAAQ,KAAK,IAAI,KAAK,OAAO,KAAK;AAAA,UAC9C;AAAA,UACU,mBAAmB,QAAQ;AAAA,QACrC;AACQ,YAAI,OAAO,UAAU,UAAU;AAC7B,kBAAQ,MAAM,MAAK;AAAA,QACrB;AACA,cAAM,WAAW,QAAQ,MAAM,eAAe;AAC9C,cAAM,YAAY,SAAS,cAAc,QAAQ;AACjD,cAAM,MAAM,UAAU,WAAW,MAAM,EAAE,OAAO,OAAO;AACvD,YAAI,QAAQ,MAAM;AAChB,cAAI,OAAO,GAAG,YAAY,aAAa,IAAI,YAAY,UAAU;AACjE,gBAAM,SAAS;AAAA,YACb;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACZ;AACU,4BAAkB,OAAO,SAAS,eAAe,UAAU,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,QAC5F;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAQ,SAAQ;AAClD,QAAM,YAAYA,MAAQ;AAAA,IACxB,CAAC,MAAM,cAAc;AACnB,UAAI,KAAK,KAAK;AACd,YAAM,QAAQ;AACd,oBAAc,MAAM;AACpB,mBAAa,MAAM;AACnB,+BAAyB,UAAU;AACnC,UAAI;AACF;AACF,WAAK,SAAS,OAAO,SAAS,MAAM,gBAAgB,QAAQ,cAAc,YAAY,QAAQ;AAC5F,iBAAS,cAAc,QAAQ,KAAK,CAAC,MAAM,cAAc,QAAQ,MAAM,CAAC;AACxE;AAAA,MACF;AACA,YAAM,CAAC,KAAK,GAAG,IAAI,KAAK;AACxB,YAAM,CAAC,kBAAkB,gBAAgB,KAAK,MAAM,wBAAwB,YAAY,OAAO,MAAM,CAAA;AACrG,YAAM,iBAAiB,MAAM;AAC3B,oBAAY,UAAU;AAAA,MACxB;AACA,YAAM,mBAAmB,CAAC,MAAM;AAC9B,YAAI,KAAK,KAAK;AACd,cAAM,eAAe,EAAE,WAAW,qBAAqB,OAAO,qBAAqB;AACnF,YAAI,cAAc;AAChB,2BAAiB,OAAO,SAAS,cAAc,CAAC,MAAM,iBAAiB,GAAG,GAAG;AAAA,YAC3E,GAAG;AAAA,YACH;AAAA,UACZ,CAAW;AAAA,QACH;AACA,YAAI,EAAE,WAAW;AACf,iBAAO,CAAC,YAAY;AACtB,YAAI,CAAC,YAAY,SAAS;AACxB,gBAAM,IAAI,sBAAsB,KAAK,QAAQ;AAC7C,gBAAM,IAAI,gBAAgB,CAAC;AAC3B,cAAI,MAAM,UAAU,EAAE,YAAY,UAAU,cAAc;AACxD,kBAAM,SAAS,EAAE,QAAQ;AAAA,cACvB,GAAG;AAAA,cACH,MAAM;AAAA,cACN,MAAM,EAAE;AAAA,cACR,MAAM,EAAE;AAAA,cACR,QAAQ,EAAE;AAAA,cACV,OAAO,aAAa,GAAG,KAAK,QAAQ;AAAA,cACpC;AAAA,YACd,CAAa;AACD,gBAAI,WAAW,UAAU,CAAC,gBAAgB,MAAM,KAAK,mBAAmB,MAAM,GAAG;AAC/E,mCAAqB,CAAC,EAAE,UAAU,EAAE,UAAU,OAAO,OAAM,CAAE,CAAC;AAC9D,eAAC,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI,OAAO;AAAA,gBACpD;AAAA,kBACE,MAAM,EAAE;AAAA,gBAC1B;AAAA,cACA,CAAe;AAAA,YACH;AAAA,UACF;AACA,cAAI,CAAC,YAAY,aAAa,OAAO,MAAM,SAAS,OAAO,SAAS,MAAM,sBAAsB,OAAO,SAAS,IAAI,YAAY,OAAO,SAAS,IAAI,UAAU,UAAU,cAAc,YAAY,QAAQ;AACxM,kBAAM,CAAC,aAAa,WAAW,IAAI,cAAc,QAAQ;AACzD,kBAAM,CAAC,SAAS,OAAO,IAAI,MAAM,kBAAkB,QAAQ;AAC3D,gBAAI,QAAQ,eAAe,QAAQ,WAAW,QAAQ,eAAe,QAAQ,SAAS;AACpF,iCAAmB,OAAO,SAAS,gBAAgB,CAAC,MAAM,iBAAiB,GAAG,CAAC;AAC/E,uBAAS,EAAE,QAAQ,KAAK;AACxB,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,YAAM,gBAAgB,KAAK,SAAS,CAAC,IAAI;AACzC,UAAI,KAAK,SAAS;AAChB,cAAM,KAAK,iBAAiB;AAC5B,cAAM,UAAU,cAAc;AAC9B,YAAI,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,QAAQ,GAAG;AAC5C;AAAA,QACF;AACA,YAAI,KAAK,gBAAgB,MAAM;AAC7B,cAAI,KAAK,SAAS,YAAY,MAAM,iBAAiB,OAAO,SAAS,cAAc,YAAY,OAAO,SAAS,IAAI,KAAK,CAAC,OAAO,SAAS,MAAM,iBAAiB,OAAO,SAAS,cAAc,YAAY,OAAO,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK;AAC9O,iCAAqB,OAAO,SAAS,kBAAkB,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,GAAG;AAAA,cACxF,GAAG;AAAA,cACH;AAAA,YACd,CAAa;AACD;AAAA,UACF,WAAW,KAAK,SAAS,YAAY,cAAc,QAAQ,SAAS,GAAG,GAAG;AACxE,mCAAuB,OAAO,SAAS,oBAAoB,eAAe,EAAE,GAAG,MAAM,gBAAgB;AACrG;AAAA,UACF,WAAW,KAAK,SAAS,iBAAiB;AACxC,gBAAI,gBAAgB,GAAG;AACrB;AAAA,YACF;AACA,wCAA4B,OAAO,SAAS,yBAAyB,eAAe,EAAE,GAAG,MAAM,gBAAgB;AAC/G;AAAA,UACF;AAAA,QACF;AACA,YAAI,KAAK,SAAS,QAAQ;AACxB,cAAI,CAAC,iBAAiB,IAAI,GAAG;AAC3B,yBAAa,IAAI;AAAA,UACnB;AAAA,QACF,WAAW,KAAK,SAAS,iBAAiB;AACxC,kCAAwB,OAAO,SAAS,qBAAqB,eAAe,EAAE,GAAG,MAAM,gBAAgB;AAAA,QACzG,OAAO;AACL,cAAI,KAAK,SAAS,YAAY;AAC5B,+BAAmB,OAAO,SAAS,gBAAgB,eAAe;AAAA,cAChE,GAAG;AAAA,cACH;AAAA,YACd,CAAa;AAAA,UACH;AACA,uBAAa,IAAI;AAAA,QACnB;AACA;AAAA,MACF;AACA,UAAI,KAAK,SAAS,UAAU;AAC1B,YAAI,gBAAgB,GAAG;AACrB;AAAA,QACF;AACA,YAAI,KAAK,QAAQ;AACf,eAAK,iBAAiB,GAAG;AAAA,QAC3B,WAAW,KAAK,WAAW,KAAK,QAAQ,oBAAoB,QAAQ,kBAAkB;AACpF,6BAAmB,OAAO,SAAS,gBAAgB,eAAe,EAAE,GAAG,MAAM,gBAAgB;AAAA,QAC/F;AAAA,MACF;AACA,UAAI,KAAK,SAAS,iBAAiB;AACjC,YAAI,gBAAgB,GAAG;AACrB;AAAA,QACF;AACA,YAAI,KAAK,WAAW,KAAK,QAAQ,oBAAoB,QAAQ,kBAAkB;AAC7E,kCAAwB,OAAO,SAAS,qBAAqB,eAAe,EAAE,GAAG,MAAM,gBAAgB;AACvG,cAAI,CAAC,YAAY,SAAS;AACxB,uCAA2B,IAAI;AAAA,UACjC;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAK,SAAS,WAAW,KAAK,WAAW,KAAK,KAAK,WAAW,IAAI;AACpE,yBAAiB,IAAI;AAAA,MACvB;AACA,8BAAwB,UAAU;AAAA,IACpC;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,kBAAkBA,MAAQ;AAAA,IAC9B,CAAC,SAAS;AACR,YAAM,IAAI;AAAA,QACR,GAAG;AAAA,QACH,UAAU,CAAC,KAAK,SAAS,CAAC,IAAI,iBAAiB,KAAK,SAAS,CAAC,CAAC;AAAA,MACvE;AACM,qBAAe,OAAO,SAAS,YAAY,CAAC;AAC5C,mBAAa,CAAC,OAAO;AACnB,YAAI,KAAK;AACT,YAAI,yBAAyB;AAC3B,iBAAO,CAAC,KAAK,WAAW,CAAC,GAAG,CAAC;AAC/B,YAAI,KAAK,WAAW,CAAC,OAAO,MAAM,OAAO,SAAS,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC;AACrF,iBAAO;AACT,eAAO,eAAe,YAAY,OAAO,MAAM,cAAc,YAAY,OAAO,SAAS,IAAI,SAAS,CAAC,MAAM,OAAO,MAAM,KAAK,kBAAkB,SAAS,KAAK;AAAA,MACjK,CAAC;AAAA,IACH;AAAA,IACA,CAAC,YAAY,aAAa,eAAe;AAAA,EAC7C;AACE,gBAAc,WAAW,SAAS;AAClC,QAAM,yBAAyBA,MAAQ;AAAA,IACrC,CAAC,KAAK,mBAAmB;AACvB,2BAAqB,OAAO,SAAS,kBAAkB,MAAM,iBAAiB,cAAc;AAAA,IAC9F;AAAA,IACA,CAAC,mBAAmB,eAAe;AAAA,EACvC;AACE,QAAM,eAAe,KAAK,iBAAiB,OAAO,SAAS,cAAc,YAAY,OAAO,SAAS,GAAG;AACxG,QAAM,6BAA6BA,MAAQ;AAAA,IACzC,CAAC,QAAQ,aAAa,cAAc,cAAc,IAAI,OAAO;AAC3D,sBAAgB,UAAU;AAC1B,UAAI,WAAW;AACf,UAAI,aAAa,QAAQ;AACvB,mBAAW,CAAC,SAAS,CAAC,IAAI,iBAAiB,SAAS,CAAC,CAAC;AAAA,MACxD;AACA,YAAM,YAAY;AAAA,QAChB,GAAG,OAAO,IAAI;AAAA,QACd,GAAG,OAAO;AAAA,QACV,OAAO,OAAO;AAAA,QACd,QAAQ,wBAAwB,OAAO,IAAI,OAAO,UAAU,OAAO,OAAO,SAAS,IAAI,OAAO;AAAA,QAC9F;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,UACN;AAAA,UACA,cAAc,kBAAkB,IAAI,SAAS;AAAA,YAC3C,GAAG;AAAA,YACH,GAAG,OAAO;AAAA,YACV,OAAO;AAAA,YACP,QAAQ,OAAO;AAAA,UAC3B;AAAA,QACA;AAAA,MACA;AACM,uBAAiB,UAAU;AAC3B,uBAAiB,SAAS;AAC1B,oBAAc,CAAC,aAAa,cAAc,YAAY,CAAC;AACvD,gCAA0B,OAAO,SAAS,uBAAuB,WAAW,UAAU,IAAI,UAAU,IAAI,UAAU,MAAM;AAAA,IAC1H;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,oBAAoB;AAAA,IACxB;AAAA,IACAA,MAAQ;AAAA,MACN,CAAC,YAAY,aAAa;AACxB,yBAAiB,OAAO,SAAS,cAAc,aAAa,iBAAiB,WAAW,eAAe;AACvG,YAAI,iBAAiB,QAAQ;AAC3B,6BAAmB,iBAAiB,oBAAoB,QAAQ,GAAG,QAAQ,IAAI;AAAA,QACjF;AAAA,MACF;AAAA,MACA,CAAC,cAAc,eAAe,iBAAiB,kBAAkB;AAAA,IACvE;AAAA,EACA;AACE,QAAM,qBAAqBA,MAAQ,OAAO,KAAK;AAC/C,QAAM,kBAAkBA,MAAQ;AAAA,IAC9B,CAAC,SAAS;AACR,UAAI,KAAK,SAAS,CAAC,MAAM,KAAK,kBAAkB,GAAG;AACjD,aAAK,eAAc;AACnB;AAAA,MACF;AACA,qBAAe,OAAO,SAAS,YAAY;AAAA,QACzC,GAAG;AAAA,QACH,UAAU,CAAC,KAAK,SAAS,CAAC,IAAI,iBAAiB,KAAK,SAAS,CAAC,CAAC;AAAA,MACvE,CAAO;AACD,UAAI,CAAC,KAAK,oBAAoB;AAC5B,2BAAmB,UAAU;AAAA,MAC/B;AACA,oBAAc,MAAM;AAAA,IACtB;AAAA,IACA,CAAC,aAAa,eAAe;AAAA,EACjC;AACE,QAAM,YAAYA,MAAQ,YAAY,MAAM;AAC1C,uBAAmB,UAAU;AAAA,EAC/B,GAAG,CAAA,CAAE;AACL,QAAM,oBAAoBA,MAAQ;AAAA,IAChC,CAAC,SAAS;AACR,UAAI,KAAK;AACT,YAAM,MAAM,iBAAiB,OAAO,SAAS,cAAc,YAAY,OAAO,SAAS,IAAI,YAAY,UAAU,cAAc,QAAQ,UAAU;AAC/I;AACF,UAAI,eAAe,YAAY,MAAM,cAAc,YAAY,OAAO,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,SAAS,CAAC,MAAM,KAAK,oBAAoB,KAAK,cAAc,WAAW,WAAW,qBAAqB,CAAC,WAAW,kBAAkB,KAAK,SAAS,cAAc,QAAQ,SAAS,CAAC,CAAC,KAAK,cAAc,KAAK,SAAS,cAAc,QAAQ,SAAS,CAAC,CAAC,GAAG;AACrW,cAAM,QAAQ,KAAK,IAAI,cAAc,QAAQ,SAAS,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;AAC1E,cAAM,MAAM,KAAK,IAAI,cAAc,QAAQ,SAAS,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,IAAI;AAC5E,wBAAgB,iBAAiB,oBAAoB,CAAC,OAAO,GAAG,CAAC,GAAG,QAAQ,KAAK;AAAA,MACnF;AACA,UAAI,eAAe,UAAU,cAAc,YAAY,UAAU,CAAC,mBAAmB,YAAY,gBAAgB,UAAU,gBAAgB,eAAe;AACxJ,cAAM,CAAC,aAAa,WAAW,IAAI,cAAc,QAAQ;AACzD,YAAI,CAAC,KAAK,GAAG,IAAI,KAAK;AACtB,YAAI,MAAM,GAAG;AACX,gBAAM,iBAAiB,QAAQ;AAAA,QACjC;AACA,cAAM,2BAA2B,iBAAiB,gBAAgB;AAClE,YAAI;AACF;AACF,cAAM,wBAAwB,iBAAiB,QAAQ;AACvD,YAAI,uBAAuB;AACzB,cAAI,KAAK,SAAS;AAChB;AAAA;AAEA;AAAA,QACJ;AACA,cAAM,KAAK,IAAI,KAAK,eAAe;AACnC,cAAM,SAAS,MAAM;AACrB,cAAM,SAAS,MAAM;AACrB,cAAM,WAAW;AAAA,UACf,GAAG,UAAU,IAAI,cAAc;AAAA,UAC/B,GAAG,UAAU,IAAI,cAAc;AAAA,UAC/B,OAAO,KAAK,IAAI,MAAM,IAAI;AAAA,UAC1B,QAAQ,KAAK,IAAI,MAAM,IAAI;AAAA,QACrC;AACQ;AAAA,UACE;AAAA,YACE,GAAG,cAAc;AAAA,YACjB,OAAO;AAAA,UACnB;AAAA,UACU;AAAA,UACA;AAAA,UACA;AAAA,QACV;AAAA,MACM;AACA,uBAAiB,OAAO,SAAS,cAAc,EAAE,GAAG,MAAM,UAAU,CAAC,KAAK,SAAS,CAAC,IAAI,iBAAiB,KAAK,SAAS,CAAC,CAAC,GAAG;AAAA,IAC9H;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,kBAAkBA,MAAQ;AAAA,IAC9B,CAAC,eAAe;AACd,UAAI,cAAc,YAAY;AAC5B;AACF,YAAM,CAAC,GAAG,CAAC,IAAI;AACf,YAAM,CAAC,KAAK,GAAG,IAAI,cAAc,QAAQ;AACzC,YAAM,MAAM,cAAc,QAAQ;AAClC,UAAI,OAAO,IAAI;AACf,UAAI,QAAQ,IAAI,IAAI,IAAI;AACxB,UAAI,MAAM,IAAI;AACd,UAAI,SAAS,IAAI,IAAI,IAAI;AACzB,UAAI,MAAM,GAAG;AACX,gBAAQ,GAAC;AAAA,UACP,KAAK,GAAG;AACN,qBAAS;AACT,kBAAM;AACN,qBAAS,GAAG,QAAQ,UAAU;AAC9B;AAAA,UACF;AAAA,UACA,KAAK,IAAI;AACP,kBAAM;AACN,qBAAS,MAAM;AACf,qBAAS,GAAG,KAAK,UAAU;AAC3B;AAAA,UACF;AAAA,UACA,KAAK,GAAG;AACN,gBAAI,MAAM,KAAK;AACb;AACA,uBAAS,GAAG,KAAK,UAAU;AAAA,YAC7B,OAAO;AACL,uBAAS,KAAK,IAAI,MAAM,SAAS,CAAC;AAClC,uBAAS,GAAG,QAAQ,UAAU;AAAA,YAChC;AACA;AAAA,UACF;AAAA,UACA,KAAK,IAAI;AACP,gBAAI,SAAS,MAAM,GAAG;AACpB;AACA,uBAAS,GAAG,QAAQ,UAAU;AAAA,YAChC,OAAO;AACL,oBAAM,KAAK,IAAI,GAAG,MAAM,CAAC;AACzB,uBAAS,GAAG,KAAK,UAAU;AAAA,YAC7B;AACA;AAAA,UACF;AAAA,UACA,SAAS;AACP,wBAAa;AAAA,UACf;AAAA,QACV;AAAA,MACM;AACA,UAAI,MAAM,GAAG;AACX,YAAI,MAAM,GAAG;AACX,kBAAQ,YAAY;AACpB,iBAAO;AACP,mBAAS,QAAQ,IAAI,iBAAiB,GAAG,YAAY;AAAA,QACvD,WAAW,MAAM,IAAI;AACnB,iBAAO;AACP,kBAAQ,MAAM;AACd,mBAAS,OAAO,iBAAiB,GAAG,YAAY;AAAA,QAClD,OAAO;AACL,cAAI,aAAa,CAAA;AACjB,cAAI,yBAAyB,QAAQ;AACnC,kBAAM,QAAQ;AAAA,cACZ;AAAA,gBACE,GAAG;AAAA,gBACH,GAAG;AAAA,gBACH,OAAO,QAAQ,OAAO;AAAA,gBACtB,QAAQ,SAAS;AAAA,cACjC;AAAA,cACc,mBAAmB,QAAQ;AAAA,YACzC;AACY,gBAAI,OAAO,UAAU,UAAU;AAC7B,2BAAa,aAAa,KAAK;AAAA,YACjC;AAAA,UACF;AACA,cAAI,MAAM,GAAG;AACX,gBAAI,OAAO;AACX,gBAAI,OAAO,KAAK;AACd,kBAAI,WAAW,SAAS,GAAG;AACzB,sBAAM,SAAS,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE;AAAA,kBACtC,CAAC,MAAM,CAAC,WAAW,SAAS,IAAI,eAAe;AAAA,gBACjE;AACgB,oBAAI,WAAW,QAAQ;AACrB,yBAAO;AACP,yBAAO;AAAA,gBACT;AAAA,cACF,OAAO;AACL;AACA,uBAAO;AAAA,cACT;AACA,kBAAI;AACF,yBAAS,MAAM,GAAG,YAAY;AAAA,YAClC;AACA,gBAAI,CAAC,MAAM;AACT,sBAAQ,KAAK,IAAI,YAAY,QAAQ,QAAQ,CAAC;AAC9C,uBAAS,QAAQ,IAAI,iBAAiB,GAAG,YAAY;AAAA,YACvD;AAAA,UACF,WAAW,MAAM,IAAI;AACnB,gBAAI,OAAO;AACX,gBAAI,QAAQ,MAAM,GAAG;AACnB,kBAAI,WAAW,SAAS,GAAG;AACzB,sBAAM,SAAS,MAAM,QAAQ,GAAG,KAAK,EAAE,EAAE;AAAA,kBACvC,CAAC,MAAM,CAAC,WAAW,SAAS,IAAI,eAAe;AAAA,gBACjE;AACgB,oBAAI,WAAW,QAAQ;AACrB,0BAAQ;AACR,yBAAO;AAAA,gBACT;AAAA,cACF,OAAO;AACL;AACA,uBAAO;AAAA,cACT;AACA,kBAAI;AACF,yBAAS,QAAQ,iBAAiB,GAAG,YAAY;AAAA,YACrD;AACA,gBAAI,CAAC,MAAM;AACT,qBAAO,KAAK,IAAI,iBAAiB,OAAO,CAAC;AACzC,uBAAS,OAAO,iBAAiB,GAAG,YAAY;AAAA,YAClD;AAAA,UACF,OAAO;AACL,wBAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF;AACA;AAAA,QACE;AAAA,UACE,MAAM,cAAc,QAAQ;AAAA,UAC5B,OAAO;AAAA,YACL,GAAG;AAAA,YACH,GAAG;AAAA,YACH,OAAO,QAAQ;AAAA,YACf,QAAQ,SAAS;AAAA,UAC7B;AAAA,QACA;AAAA,QACQ;AAAA,QACA;AAAA,QACA;AAAA,MACR;AAAA,IACI;AAAA,IACA,CAAC,sBAAsB,eAAe,YAAY,QAAQ,iBAAiB,MAAM,UAAU,UAAU;AAAA,EACzG;AACE,QAAM,qBAAqBA,MAAQ;AAAA,IACjC,CAAC,KAAK,KAAK,wBAAwB,aAAa;AAC9C,YAAM,SAAS,eAAe,yBAAyB,IAAI;AAC3D,YAAM,OAAO,KAAK,iBAAiB,QAAQ,SAAS,IAAI,eAAe;AACvE,YAAM,OAAO,KAAK,GAAG,MAAM;AAC3B,UAAI,SAAS,eAAe,OAAO,SAAS,YAAY,CAAC,MAAM,SAAS,eAAe,OAAO,SAAS,YAAY,CAAC;AAClH,eAAO;AACT,UAAI,YAAY,cAAc,YAAY,QAAQ;AAChD,cAAM,WAAW,CAAC,GAAG,cAAc,QAAQ,UAAU;AACrD,YAAI,cAAc,QAAQ,MAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM,SAAS,GAAG;AACnF,mBAAS,KAAK,cAAc,QAAQ,KAAK;AAAA,QAC3C;AACA;AAAA,UACE;AAAA,YACE,GAAG;AAAA,YACH,SAAS;AAAA,cACP,MAAM,CAAC,KAAK,GAAG;AAAA,cACf,OAAO,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,GAAG,QAAQ,EAAC;AAAA,cAC5C,YAAY;AAAA,YAC1B;AAAA,UACA;AAAA,UACU;AAAA,QACV;AAAA,MACM,OAAO;AACL;AAAA,UACE;AAAA,YACE,MAAM,CAAC,KAAK,GAAG;AAAA,YACf,OAAO,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,GAAG,QAAQ,EAAC;AAAA,UACxD;AAAA,UACU;AAAA,UACA;AAAA,UACA;AAAA,QACV;AAAA,MACM;AACA,UAAI,SAAS,YAAY,UAAU,SAAS,QAAQ,CAAC,MAAM,OAAO,SAAS,QAAQ,CAAC,MAAM,KAAK;AAC7F,iBAAS,UAAU;AAAA,MACrB;AACA,eAAS,MAAM,iBAAiB,GAAG;AACnC,aAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,kBAAkBA,MAAQ;AAAA,IAC9B,CAAC,UAAU,aAAa;AACtB,WAAK,WAAW,OAAO,SAAS,QAAQ,UAAU,UAAU,aAAa,UAAU,mBAAmB,QAAQ,GAAG;AAC/G,6BAAqB,CAAC,EAAE,UAAU,QAAQ,MAAM,OAAO,SAAQ,CAAE,CAAC;AAClE,eAAO,sBAAsB,MAAM;AACjC,cAAI;AACJ,WAAC,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI,OAAO;AAAA,YACpD;AAAA,cACE,MAAM,QAAQ;AAAA,YAC5B;AAAA,UACA,CAAW;AAAA,QACH,CAAC;AAAA,MACH;AACA,YAAM,IAAI;AACV,iBAAW,MAAM;AACjB,YAAM,CAAC,MAAM,IAAI,IAAI;AACrB,UAAI,cAAc,YAAY,WAAW,SAAS,KAAK,SAAS,IAAI;AAClE,cAAM,uBAAuB,cAAc,QAAQ,KAAK,CAAC,MAAM,cAAc,KAAK,aAAa;AAC/F;AAAA,UACE,OAAO,cAAc,QAAQ,KAAK,CAAC,IAAI,MAAM,GAAG,YAAY,SAAS,CAAC;AAAA,UACtE,OAAO,cAAc,QAAQ,KAAK,CAAC,IAAI,MAAM,GAAG,cAAc,CAAC;AAAA,UAC/D;AAAA,UACA;AAAA,QACV;AAAA,MACM;AACA,2BAAqB,OAAO,SAAS,kBAAkB,UAAU,QAAQ;AAAA,IAC3E;AAAA,IACA;AAAA,MACE,WAAW,OAAO,SAAS,QAAQ;AAAA,MACnC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IAClB;AAAA,EACA;AACE,QAAM,YAAYA,MAAQ,QAAQ,MAAM;AACtC,WAAO,eAAe,WAAW;AAAA,EACnC,GAAG,CAAA,CAAE;AACL,QAAM,cAAcA,MAAQ;AAAA,IAC1B,CAAC,MAAM;AACL,UAAI,KAAK,KAAK,KAAK;AACnB,YAAK;AACL,YAAM,WAAW,CAAA;AACjB,eAAS,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,KAAK;AACxC,iBAAS,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK;AACzC,gBAAM,YAAY,eAAe,CAAC,IAAI,iBAAiB,CAAC,CAAC;AACzD,cAAI,CAAC,UAAU,gBAAgB,UAAU,SAAS,aAAa;AAC7D;AACF,cAAI,SAAS;AACb,cAAI,UAAU,SAAS,aAAa,QAAQ;AAC1C,kBAAM,WAAW,gBAAgB,SAAS;AAC1C,kBAAM,UAAU,MAAM,YAAY,OAAO,SAAS,SAAS,kBAAkB,OAAO,SAAS,IAAI,KAAK,UAAU,SAAS;AACzH,iBAAK,YAAY,OAAO,SAAS,SAAS,cAAc,QAAQ;AAC9D,uBAAS,SAAS,SAAS,SAAS;AAAA,YACtC,WAAW,6BAA6B,MAAM,GAAG;AAC/C,wBAAU,MAAM,UAAU,OAAO,SAAS,OAAO,iBAAiB,OAAO,SAAS,IAAI,KAAK,QAAQ,SAAS;AAAA,YAC9G;AAAA,UACF,WAAW,mBAAmB,SAAS,KAAK,UAAU,gBAAgB,UAAU,SAAS,aAAa,SAAS;AAC7G,kBAAM,WAAW,gBAAgB,SAAS;AAC1C,sBAAU,MAAM,YAAY,OAAO,SAAS,SAAS,aAAa,OAAO,SAAS,IAAI,KAAK,UAAU,SAAS;AAAA,UAChH;AACA,cAAI,WAAW,UAAU,CAAC,gBAAgB,MAAM,KAAK,mBAAmB,MAAM,GAAG;AAC/E,qBAAS,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,QAAQ;AAAA,UACnD;AAAA,QACF;AAAA,MACF;AACA,2BAAqB,QAAQ;AAC7B,OAAC,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI,OAAO,SAAS,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAQ,EAAG,CAAC;AAAA,IACnG;AAAA,IACA,CAAC,OAAO,gBAAgB,iBAAiB,sBAAsB,eAAe;AAAA,EAClF;AACE,QAAM,YAAYA,MAAQ;AAAA,IACxB,CAAC,UAAU;AACT,YAAM,KAAK,YAAY;AACrB,YAAI,KAAK,KAAK,KAAK,KAAK;AACxB,YAAI,YAAY;AAChB,YAAI,gBAAgB,QAAQ;AAC1B,sBAAY;AAAA,YACV,GAAG;AAAA,YACH,QAAQ,MAAM;AACZ,0BAAY;AAAA,YACd;AAAA,UACZ,CAAW;AAAA,QACH;AACA,YAAI;AACF;AACF,cAAM,SAAS,MAAM;AACnB,gBAAM,gBAAe;AACrB,gBAAM,eAAc;AAAA,QACtB;AACA,cAAM,cAAc,YAAY;AAChC,cAAM,EAAE,QAAQ,UAAU,SAAS,SAAS,KAAK,OAAM,IAAK;AAC5D,cAAM,QAAQ,aAAa;AAC3B,cAAM,eAAe,QAAQ,UAAU;AACvC,cAAM,cAAc,QAAQ,YAAY,SAAS,QAAQ;AACzD,cAAM,KAAK,iBAAiB;AAC5B,cAAM,kBAAkB,cAAc;AACtC,cAAM,eAAe,cAAc;AACnC,YAAI,QAAQ,UAAU;AACpB,cAAI,aAAa;AACf,uBAAW,MAAM;AAAA,UACnB,WAAW,YAAY,OAAO;AAC5B,6BAAiB,oBAAoB,KAAK;AAC1C,kCAAsB,OAAO,SAAS,mBAAkB;AAAA,UAC1D;AACA;AAAA,QACF,WAAW,SAAS,aAAa,KAAK,KAAK,YAAY,WAAW;AAChE,cAAI,CAAC,aAAa;AAChB;AAAA,cACE;AAAA,gBACE,SAAS,iBAAiB,MAAK;AAAA,gBAC/B,MAAM,iBAAiB,MAAK;AAAA,gBAC5B,SAAS;AAAA,kBACP,OAAO,OAAO,MAAM,cAAc,YAAY,OAAO,SAAS,IAAI,SAAS,OAAO,MAAM,CAAC,iBAAiB,CAAC;AAAA,kBAC3G,OAAO;AAAA,oBACL,GAAG;AAAA,oBACH,GAAG;AAAA,oBACH,OAAO,UAAU;AAAA,oBACjB,QAAQ;AAAA,kBAC5B;AAAA,kBACkB,YAAY,CAAA;AAAA,gBAC9B;AAAA,cACA;AAAA,cACc;AAAA,YACd;AAAA,UACU,OAAO;AACL,kBAAM,KAAK,SAAS,eAAe,SAAS;AAC5C,gBAAI,OAAO,MAAM;AACf,oBAAM,IAAI,OAAO,aAAY;AAC7B,oBAAM,IAAI,SAAS,YAAW;AAC9B,gBAAE,mBAAmB,EAAE;AACvB,mBAAK,OAAO,SAAS,EAAE,gBAAe;AACtC,mBAAK,OAAO,SAAS,EAAE,SAAS,CAAC;AAAA,YACnC;AAAA,UACF;AACA,iBAAM;AACN;AAAA,QACF,WAAW,SAAS,aAAa,KAAK,KAAK,YAAY,QAAQ;AAC7D,iBAAM;AACN,WAAC,MAAM,kBAAkB,OAAO,SAAS,eAAe,YAAY,OAAO,SAAS,IAAI,MAAM,EAAE,eAAe,KAAI,CAAE;AACrH,6BAAmB,IAAI;AAAA,QACzB;AACA,YAAI,aAAa;AACf,gBAAM,kBAAkB,MAAM,YAAY,OAAO,SAAS,SAAS,aAAa,MAAM,OAAO,MAAM;AACnG,iBAAM;AACN,cAAI,mBAAmB,OAAO;AAC5B,kBAAM,WAAW,mBAAmB,OAAO,gBAAgB;AAC3D,gBAAI,SAAS,YAAY,QAAQ;AAC/B,0BAAY,SAAS,QAAQ,KAAK;AAClC,yBAAW,KAAK,SAAS,QAAQ,YAAY;AAC3C,4BAAY,CAAC;AAAA,cACf;AAAA,YACF;AACA,uBAAW,KAAK,SAAS,MAAM;AAC7B,0BAAY;AAAA,gBACV,GAAG;AAAA,gBACH,GAAG;AAAA,gBACH,OAAO,YAAY,SAAS;AAAA,gBAC5B,QAAQ;AAAA,cACxB,CAAe;AAAA,YACH;AACA,uBAAW,QAAQ,SAAS,SAAS;AACnC,0BAAY;AAAA,gBACV,GAAG;AAAA,gBACH,GAAG;AAAA,gBACH,OAAO;AAAA,gBACP,QAAQ;AAAA,cACxB,CAAe;AAAA,YACH;AAAA,UACF;AACA;AAAA,QACF;AACA,YAAI,cAAc,YAAY;AAC5B;AACF,YAAI,CAAC,KAAK,GAAG,IAAI,cAAc,QAAQ;AACvC,YAAI,WAAW;AACf,YAAI,YAAY,gBAAgB,SAAS,UAAU,KAAK,KAAK,iBAAiB,QAAQ;AACpF,cAAI,gBAAgB,SAAS,GAAG,GAAG;AACjC,+BAAmB,gBAAgB,OAAO,GAAG,GAAG,QAAQ,IAAI;AAAA,UAC9D,OAAO;AACL,gBAAI,iBAAiB,UAAU;AAC7B,iCAAmB,iBAAiB,oBAAoB,GAAG,GAAG,QAAQ,IAAI;AAAA,YAC5E,OAAO;AACL,iCAAmB,QAAQ,KAAK,IAAI;AAAA,YACtC;AAAA,UACF;AAAA,QACF,WAAW,YAAY,aAAa,SAAS,WAAW,KAAK,KAAK,cAAc,QAAQ;AACtF,cAAI,aAAa,SAAS,GAAG,GAAG;AAC9B,4BAAgB,aAAa,OAAO,GAAG,GAAG,QAAQ,IAAI;AAAA,UACxD,OAAO;AACL,gBAAI,cAAc,UAAU;AAC1B,8BAAgB,iBAAiB,oBAAoB,GAAG,GAAG,QAAQ,IAAI;AAAA,YACzE,OAAO;AACL,8BAAgB,QAAQ,KAAK,IAAI;AAAA,YACnC;AAAA,UACF;AAAA,QACF,YAAY,SAAS,SAAS,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,eAAe,KAAK,MAAM,WAAW,QAAQ;AACpH,cAAI,aAAa;AACf,uBAAW,MAAM;AACjB,gBAAI,SAAS,SAAS,KAAK,GAAG;AAC5B;AAAA,YACF,WAAW,SAAS,eAAe,KAAK,GAAG;AACzC;AAAA,YACF;AAAA,UACF,WAAW,QAAQ,QAAQ,sBAAsB;AAC/C,mBAAO,WAAW,MAAM;AACtB,oBAAM,qBAAqB,4BAA4B,GAAG;AAC1D,mBAAK,UAAU,sBAAsB,OAAO,qBAAqB,GAAG;AAAA,YACtE,GAAG,CAAC;AAAA,UACN,OAAO;AACL,+BAAmB,OAAO,SAAS,gBAAgB,CAAC,MAAM,iBAAiB,GAAG,CAAC;AAC/E,qBAAS,QAAQ,IAAI;AACrB,mBAAM;AAAA,UACR;AAAA,QACF,WAAW,YAAY,YAAY,SAAS,eAAe,KAAK,KAAK,cAAc,QAAQ,MAAM,SAAS,GAAG;AAC3G,mBAAS,KAAK;AACd,iBAAM;AAAA,QACR,WAAW,YAAY,aAAa,SAAS,eAAe,KAAK,KAAK,cAAc,QAAQ,MAAM,QAAQ,GAAG;AAC3G,gBAAM,WAAW,CAAA;AACjB,gBAAM,IAAI,cAAc,QAAQ;AAChC,mBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,kBAAM,UAAU,IAAI,EAAE;AACtB,kBAAM,UAAU,sBAAsB,CAAC,EAAE,GAAG,OAAO,CAAC;AACpD,gBAAI,gBAAgB,OAAO,KAAK,CAAC,gBAAgB,OAAO;AACtD;AACF,qBAAS,IAAI,GAAG,IAAI,EAAE,OAAO,KAAK;AAChC,oBAAM,UAAU,IAAI,EAAE;AACtB,oBAAM,SAAS,CAAC,SAAS,OAAO;AAChC,uBAAS,KAAK;AAAA,gBACZ,UAAU;AAAA,gBACV,OAAO,EAAE,GAAG,QAAO;AAAA,cACnC,CAAe;AAAA,YACH;AAAA,UACF;AACA,+BAAqB,QAAQ;AAC7B,WAAC,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI;AAAA,YAC7C,SAAS,IAAI,CAAC,OAAO;AAAA,cACnB,MAAM,EAAE;AAAA,YACtB,EAAc;AAAA,UACd;AACU,iBAAM;AAAA,QACR,WAAW,YAAY,YAAY,SAAS,YAAY,KAAK,GAAG;AAC9D,iBAAO,KAAK,IAAI,GAAG,iBAAiB,QAAQ,SAAS,CAAC;AACtD,iBAAM;AAAA,QACR,WAAW,YAAY,UAAU,SAAS,UAAU,KAAK,GAAG;AAC1D,iBAAO,KAAK,IAAI,GAAG,iBAAiB,QAAQ,SAAS,CAAC;AACtD,iBAAM;AAAA,QACR,WAAW,YAAY,SAAS,SAAS,gBAAgB,KAAK,GAAG;AAC/D,qBAAW,MAAM;AACjB,gBAAM;AACN,gBAAM;AAAA,QACR,WAAW,YAAY,QAAQ,SAAS,eAAe,KAAK,GAAG;AAC7D,qBAAW,MAAM;AACjB,gBAAM,OAAO;AACb,gBAAM,OAAO;AAAA,QACf,WAAW,YAAY,SAAS,SAAS,sBAAsB,KAAK,GAAG;AACrE,qBAAW,MAAM;AACjB,0BAAgB,CAAC,IAAI,EAAE,CAAC;AAAA,QAC1B,WAAW,YAAY,QAAQ,SAAS,qBAAqB,KAAK,GAAG;AACnE,qBAAW,MAAM;AACjB,0BAAgB,CAAC,GAAG,CAAC,CAAC;AAAA,QACxB,WAAW,QAAQ,aAAa;AAC9B,cAAI,WAAW,QAAQ;AACrB;AAAA,UACF;AACA,qBAAW,MAAM;AACjB,cAAI,aAAa,gBAAgB,UAAU,gBAAgB,eAAe;AACxE,4BAAgB,CAAC,GAAG,gBAAgB,CAAC,SAAS,IAAI,CAAC,CAAC;AAAA,UACtD,OAAO;AACL,gBAAI,UAAU,CAAC,cAAc;AAC3B,yBAAW;AAAA,YACb;AACA,gBAAI,gBAAgB,CAAC,QAAQ;AAC3B,oBAAM,OAAO;AAAA,YACf,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF,WAAW,QAAQ,aAAa,QAAQ,QAAQ;AAC9C,gBAAM,YAAY,QAAQ,UAAU;AACpC,qBAAW,MAAM;AACjB,cAAI,aAAa,gBAAgB,UAAU,gBAAgB,eAAe;AACxE,4BAAgB,CAAC,GAAG,aAAa,CAAC,SAAS,KAAK,EAAE,CAAC;AAAA,UACrD,OAAO;AACL,gBAAI,UAAU,CAAC,WAAW;AACxB,yBAAW;AAAA,YACb;AACA,mBAAO,aAAa,CAAC,SAAS,OAAO,mBAAmB;AAAA,UAC1D;AAAA,QACF,WAAW,QAAQ,gBAAgB,QAAQ,OAAO;AAChD,gBAAM,YAAY,QAAQ,SAAS;AACnC,qBAAW,MAAM;AACjB,cAAI,aAAa,gBAAgB,UAAU,gBAAgB,eAAe;AACxE,4BAAgB,CAAC,aAAa,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;AAAA,UACnD,OAAO;AACL,gBAAI,UAAU,CAAC,WAAW;AACxB,yBAAW;AAAA,YACb;AACA,mBAAO,aAAa,CAAC,SAAS,OAAO,mBAAmB;AAAA,UAC1D;AAAA,QACF,WAAW,QAAQ,aAAa;AAC9B,qBAAW,MAAM;AACjB,cAAI,aAAa,gBAAgB,UAAU,gBAAgB,eAAe;AACxE,4BAAgB,CAAC,gBAAgB,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;AAAA,UACxD,OAAO;AACL,gBAAI,UAAU,CAAC,cAAc;AAC3B,yBAAW;AAAA,YACb;AACA,mBAAO,gBAAgB,CAAC,SAAS,OAAO,mBAAmB;AAAA,UAC7D;AAAA,QACF,WAAW,QAAQ,OAAO;AACxB,qBAAW,MAAM;AACjB,cAAI,UAAU;AACZ;AAAA,UACF,OAAO;AACL;AAAA,UACF;AAAA,QACF,WAAW,CAAC,WAAW,CAAC,WAAW,cAAc,YAAY,UAAU,IAAI,WAAW,KAAK,SAAS,KAAK,GAAG,KAAK,WAAW,UAAU,gBAAgB,eAAe,CAAC,MAAM,iBAAiB,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACpO,eAAK,CAAC,iBAAiB,QAAQ,UAAU,GAAG,IAAI,OAAO,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,OAAO,MAAM,GAAG,IAAI,GAAG,QAAQ;AACrH;AAAA,UACF;AACA,mBAAS,QAAQ,MAAM,GAAG;AAC1B,iBAAM;AAAA,QACR;AACA,cAAM,QAAQ,mBAAmB,KAAK,KAAK,OAAO,QAAQ;AAC1D,YAAI,OAAO;AACT,iBAAM;AAAA,QACR;AAAA,MACF;AACA,WAAK,GAAE;AAAA,IACT;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,gBAAgBA,MAAQ;AAAA,IAC5B,CAAC,MAAM,mBAAmB;AACxB,YAAM,cAAc,KAAK,SAAS,CAAC,IAAI;AACvC,UAAI,KAAK,SAAS,UAAU;AAC1B,+BAAuB,OAAO,SAAS,oBAAoB,aAAa,EAAE,GAAG,MAAM,gBAAgB;AAAA,MACrG;AACA,UAAI,KAAK,SAAS,iBAAiB;AACjC,YAAI,cAAc,GAAG;AACnB;AAAA,QACF;AACA,oCAA4B,OAAO,SAAS,yBAAyB,aAAa,EAAE,GAAG,MAAM,gBAAgB;AAAA,MAC/G;AACA,UAAI,KAAK,SAAS,QAAQ;AACxB,cAAM,CAAC,KAAK,GAAG,IAAI,KAAK;AACxB,6BAAqB,OAAO,SAAS,kBAAkB,CAAC,aAAa,GAAG,GAAG;AAAA,UACzE,GAAG;AAAA,UACH;AAAA,QACV,CAAS;AACD,YAAI,CAAC,qBAAqB,eAAe,KAAK,QAAQ,GAAG;AACvD,6BAAmB,KAAK,KAAK,OAAO,KAAK;AAAA,QAC3C;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,QAAM,kBAAkBA,MAAQ;AAAA,IAC9B,OAAO,MAAM;AACX,UAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI;AACjC,UAAI,CAAC,YAAY;AACf;AACF,eAAS,YAAY,OAAO,SAAS,UAAU,WAAW;AACxD,YAAI,KAAK,KAAK,KAAK;AACnB,cAAM,sBAAsB,OAAO,aAAa,YAAY,MAAM,YAAY,OAAO,SAAS,SAAS,KAAK,IAAI,MAAM,OAAO,MAAM,MAAM,MAAM,YAAY,OAAO,SAAS,SAAS,SAAQ,MAAO,OAAO,MAAM;AAChN,YAAI,CAAC,gBAAgB,KAAK,KAAK,gBAAgB,KAAK,KAAK,MAAM,aAAa,MAAM;AAChF,gBAAM,UAAU,oBAAoB,OAAO,SAAS,iBAAiB,qBAAqB,KAAK;AAC/F,cAAI,YAAY,UAAU,mBAAmB,OAAO,GAAG;AACrD,gBAAI,QAAQ,SAAS,MAAM,MAAM;AAC/B,sBAAQ,KAAK,uCAAuC;AAAA,YACtD;AACA,mBAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,YACrB;AAAA,UACU;AACA,gBAAM,IAAI,gBAAgB,KAAK;AAC/B,cAAI,MAAM;AACR,mBAAO;AACT,cAAI,EAAE,SAAS,aAAa,QAAQ;AAClC,mBAAO,MAAM,SAAS,aAAa,MAAM;AACzC,kBAAM,UAAU,MAAM,EAAE,YAAY,OAAO,SAAS,IAAI;AAAA,cACtD;AAAA,cACA;AAAA,cACA,MAAM;AAAA,YACpB;AACY,gBAAI,WAAW;AACb,qBAAO;AACT,mBAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,gBACL,GAAG;AAAA,gBACH,MAAM;AAAA,cACtB;AAAA,YACA;AAAA,UACU,OAAO;AACL,kBAAM,UAAU,MAAM,EAAE,YAAY,OAAO,SAAS,IAAI,KAAK,GAAG,qBAAqB,OAAO;AAAA,cAC1F;AAAA,cACA,iBAAiB,OAAO,cAAc,WAAW,YAAY,aAAa,OAAO,SAAS,UAAU,KAAK,IAAI;AAAA,cAC7G;AAAA,YACd,CAAa;AACD,gBAAI,WAAW;AACb,qBAAO;AACT,mBAAO,OAAO,SAAS,MAAM,IAAI;AACjC,mBAAO;AAAA,cACL,UAAU;AAAA,cACV,OAAO;AAAA,YACrB;AAAA,UACU;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,YAAM,kBAAkB,cAAc;AACtC,YAAM,eAAe,cAAc;AACnC,YAAM,YAAY,MAAM,UAAU,YAAY,OAAO,SAAS,IAAI,SAAS,SAAS,aAAa,OAAO,UAAU,MAAM,UAAU,YAAY,OAAO,SAAS,IAAI,SAAS,SAAS,aAAa,OAAO;AACxM,UAAI,UAAU,MAAM,cAAc,YAAY,OAAO,SAAS,IAAI;AAClE,UAAI,WAAW,UAAU,gBAAgB,WAAW,GAAG;AACrD,iBAAS,EAAE,MAAM,gBAAgB,MAAK,MAAO,OAAO,MAAM,GAAG,CAAC;AAAA,MAChE;AACA,UAAI,WAAW,UAAU,aAAa,WAAW,GAAG;AAClD,iBAAS,CAAC,kBAAkB,MAAM,aAAa,YAAY,OAAO,MAAM,CAAC;AAAA,MAC3E;AACA,UAAI,WAAW,WAAW,QAAQ;AAChC,YAAI;AACJ,YAAI;AACJ,cAAM,YAAY;AAClB,cAAM,WAAW;AACjB,YAAI,UAAU,UAAU,SAAS,QAAQ;AACvC,gBAAM,mBAAmB,MAAM,UAAU,UAAU,KAAI;AACvD,qBAAW,QAAQ,kBAAkB;AACnC,gBAAI,KAAK,MAAM,SAAS,QAAQ,GAAG;AACjC,oBAAM,WAAW,MAAM,KAAK,QAAQ,QAAQ;AAC5C,oBAAM,OAAO,MAAM,SAAS,KAAI;AAChC,oBAAM,UAAU,WAAW,IAAI;AAC/B,kBAAI,YAAY,QAAQ;AACtB,uBAAO;AACP;AAAA,cACF;AAAA,YACF;AACA,gBAAI,KAAK,MAAM,SAAS,SAAS,GAAG;AAClC,qBAAO,OAAO,MAAM,KAAK,QAAQ,SAAS,GAAG,KAAI;AAAA,YACnD;AAAA,UACF;AAAA,QACF,WAAW,UAAU,UAAU,aAAa,QAAQ;AAClD,iBAAO,MAAM,UAAU,UAAU,SAAQ;AAAA,QAC3C,WAAW,MAAM,WAAW,KAAK,OAAO,SAAS,EAAE,mBAAmB,MAAM;AAC1E,cAAI,EAAE,cAAc,MAAM,SAAS,QAAQ,GAAG;AAC5C,kBAAM,OAAO,EAAE,cAAc,QAAQ,QAAQ;AAC7C,mBAAO,WAAW,IAAI;AAAA,UACxB;AACA,cAAI,SAAS,UAAU,EAAE,cAAc,MAAM,SAAS,SAAS,GAAG;AAChE,mBAAO,EAAE,cAAc,QAAQ,SAAS;AAAA,UAC1C;AAAA,QACF,OAAO;AACL;AAAA,QACF;AACA,cAAM,CAAC,SAAS,OAAO,IAAI;AAC3B,cAAM,WAAW,CAAA;AACjB,WAAG;AACD,cAAI,YAAY,QAAQ;AACtB,kBAAM,WAAW,sBAAsB,MAAM;AAC7C,kBAAM,YAAY,KAAK,QAAQ,OAAO,OAAO,QAAQ,OAAO,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,OAAO,KAAK;AACrJ,kBAAM,SAAS,YAAY,UAAU,QAAQ,UAAU,MAAM;AAC7D,gBAAI,WAAW,QAAQ;AACrB,uBAAS,KAAK,MAAM;AAAA,YACtB;AACA;AAAA,UACF;AACA,cAAI,SAAS,QAAQ;AACnB,gBAAI,SAAS;AACX;AACF,mBAAO,QAAQ,IAAI;AAAA,UACrB;AACA,cAAI,YAAY,SAAS,OAAO,YAAY,eAAe,WAAW,OAAO,SAAS;AAAA,YACpF,CAAC,OAAO,CAAC,IAAI,iBAAiB,OAAO,CAAC,CAAC;AAAA,YACvC,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO;AAC5B,kBAAI,KAAK;AACT,sBAAQ,OAAO,MAAM,GAAG,aAAa,OAAO,SAAS,IAAI,SAAQ,MAAO,OAAO,MAAM;AAAA,YACvF,CAAC,CAAC;AAAA,UACd,OAAiB,MAAM;AACX;AAAA,UACF;AACA,qBAAW,CAAC,KAAK,OAAO,KAAK,KAAK,QAAO,GAAI;AAC3C,gBAAI,MAAM,WAAW;AACnB;AACF,uBAAW,CAAC,KAAK,QAAQ,KAAK,QAAQ,QAAO,GAAI;AAC/C,oBAAM,QAAQ,CAAC,MAAM,SAAS,MAAM,OAAO;AAC3C,oBAAM,CAAC,UAAU,QAAQ,IAAI;AAC7B,kBAAI,YAAY,YAAY;AAC1B;AACF,kBAAI,YAAY;AACd;AACF,oBAAM,WAAW,sBAAsB,KAAK;AAC5C,oBAAM,SAAS,YAAY,UAAU,OAAO,SAAS,UAAU,SAAS,SAAS;AACjF,kBAAI,WAAW,QAAQ;AACrB,yBAAS,KAAK,MAAM;AAAA,cACtB;AAAA,YACF;AAAA,UACF;AAAA,QACF,SAAS;AACT,6BAAqB,QAAQ;AAC7B,SAAC,KAAK,QAAQ,YAAY,OAAO,SAAS,GAAG;AAAA,UAC3C,SAAS,IAAI,CAAC,OAAO;AAAA,YACnB,MAAM,EAAE;AAAA,UACpB,EAAY;AAAA,QACZ;AAAA,MACM;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACA;AACE,mBAAiB,SAAS,iBAAiB,QAAQ,OAAO,IAAI;AAC9D,QAAM,SAASA,MAAQ;AAAA,IACrB,OAAO,GAAG,gBAAgB;AACxB,UAAI,KAAK;AACT,UAAI,CAAC,YAAY;AACf;AACF,YAAM,UAAU,gBAAgB,UAAU,MAAM,UAAU,YAAY,OAAO,SAAS,IAAI,SAAS,SAAS,aAAa,OAAO,UAAU,MAAM,UAAU,YAAY,OAAO,SAAS,IAAI,SAAS,SAAS,aAAa,OAAO;AAChO,YAAM,kBAAkB,cAAc;AACtC,YAAM,eAAe,cAAc;AACnC,YAAM,6BAA6B,CAAC,OAAO,kBAAkB;AAC3D,YAAI,CAAC,aAAa;AAChB,0BAAgB,OAAO,eAAe,CAAC;AAAA,QACzC,OAAO;AACL,gBAAM,UAAU,cAAc,IAAI,CAAC,WAAW;AAAA,YAC5C,MAAM,aAAa;AAAA,YACnB,MAAM,UAAU,KAAK,EAAE;AAAA,YACvB,aAAa,UAAU,KAAK,EAAE;AAAA,YAC9B,cAAc;AAAA,UAC1B,EAAY;AACF,0BAAgB,CAAC,SAAS,GAAG,KAAK,GAAG,eAAe,CAAC;AAAA,QACvD;AAAA,MACF;AACA,UAAI,WAAW,yBAAyB,QAAQ;AAC9C,YAAI,cAAc,YAAY,QAAQ;AACpC,cAAI,QAAQ,qBAAqB,cAAc,QAAQ,OAAO,mBAAmB,QAAQ,MAAM;AAC/F,cAAI,OAAO,UAAU,UAAU;AAC7B,oBAAQ,MAAM,MAAK;AAAA,UACrB;AACA;AAAA,YACE;AAAA,YACA;AAAA,cACE,cAAc,QAAQ,MAAM,IAAI;AAAA,cAChC,cAAc,QAAQ,MAAM,IAAI,cAAc,QAAQ,MAAM,QAAQ;AAAA,YAClF;AAAA,UACA;AAAA,QACQ,WAAW,iBAAiB,UAAU,aAAa,SAAS,GAAG;AAC7D,gBAAM,SAAS,CAAC,GAAG,YAAY;AAC/B,gBAAM,QAAQ,OAAO,IAAI,CAAC,aAAa;AACrC,kBAAM,QAAQ;AAAA,cACZ;AAAA,gBACE,GAAG;AAAA,gBACH,GAAG;AAAA,gBACH,OAAO,UAAU;AAAA,gBACjB,QAAQ;AAAA,cACxB;AAAA,cACc,mBAAmB,QAAQ;AAAA,YACzC;AACY,gBAAI,OAAO,UAAU,UAAU;AAC7B,qBAAO,MAAM,CAAC;AAAA,YAChB;AACA,mBAAO,MAAK,EAAG,KAAK,CAACE,OAAMA,GAAE,CAAC,CAAC;AAAA,UACjC,CAAC;AACD,cAAI,MAAM,KAAK,CAAC,MAAM,aAAa,OAAO,GAAG;AAC3C,kBAAM,UAAU,MAAM,QAAQ,IAAI,KAAK;AACvC,uCAA2B,SAAS,MAAM,UAAU,MAAM,CAAC;AAAA,UAC7D,OAAO;AACL,uCAA2B,OAAO,MAAM,UAAU,MAAM,CAAC;AAAA,UAC3D;AAAA,QACF,WAAW,gBAAgB,SAAS,GAAG;AACrC,gBAAM,UAAU,CAAA;AAChB,gBAAM,OAAO,CAAA;AACb,qBAAW,OAAO,iBAAiB;AACjC,gBAAI,QAAQ;AAAA,cACV;AAAA,gBACE,GAAG;AAAA,gBACH,GAAG;AAAA,gBACH,OAAO;AAAA,gBACP,QAAQ;AAAA,cACxB;AAAA,cACc,mBAAmB,QAAQ;AAAA,YACzC;AACY,gBAAI,OAAO,UAAU,UAAU;AAC7B,sBAAQ,MAAM,MAAK;AAAA,YACrB;AACA,oBAAQ,KAAK,KAAK;AAClB,iBAAK,KAAK,MAAM,eAAe;AAAA,UACjC;AACA,cAAI,QAAQ,WAAW,GAAG;AACxB,uCAA2B,QAAQ,CAAC,GAAG,IAAI;AAAA,UAC7C,OAAO;AACL,kBAAM,SAAS,QAAQ,OAAO,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,UAAU,CAAC,GAAG,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AACxF,uCAA2B,QAAQ,IAAI;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,WAAW,sBAAsB,eAAe,YAAY,MAAM,iBAAiB,MAAM,WAAW;AAAA,EACzG;AACE,mBAAiB,QAAQ,QAAQ,QAAQ,OAAO,KAAK;AACrD,QAAM,QAAQF,MAAQ;AAAA,IACpB,OAAO,MAAM;AACX,UAAI,KAAK;AACT,UAAI,CAAC,YAAY;AACf;AACF,YAAM,YAAY,MAAM,UAAU,YAAY,OAAO,SAAS,IAAI,SAAS,SAAS,aAAa,OAAO,UAAU,MAAM,UAAU,YAAY,OAAO,SAAS,IAAI,SAAS,SAAS,aAAa,OAAO;AACxM,UAAI,CAAC;AACH;AACF,YAAM,OAAO,CAAC;AACd,UAAI,cAAc,YAAY,QAAQ;AACpC,oBAAY,cAAc,QAAQ,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,IACA,CAAC,aAAa,eAAe,YAAY,KAAK,MAAM;AAAA,EACxD;AACE,mBAAiB,OAAO,OAAO,QAAQ,OAAO,KAAK;AACnD,QAAM,yBAAyBA,MAAQ;AAAA,IACrC,CAAC,SAAS,aAAa;AACrB,UAAI,6BAA6B,QAAQ;AACvC,YAAI,oBAAoB,GAAG;AACzB,oBAAU,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,CAAC,CAAC;AAAA,QACtE;AACA,iCAAyB,SAAS,QAAQ;AAC1C;AAAA,MACF;AACA,UAAI,QAAQ,WAAW,KAAK,aAAa;AACvC;AACF,YAAM,CAAC,KAAK,GAAG,IAAI,QAAQ,QAAQ;AACnC,UAAI,SAAS,YAAY,UAAU,SAAS,QAAQ,CAAC,MAAM,OAAO,SAAS,QAAQ,CAAC,MAAM,KAAK;AAC7F;AAAA,MACF;AACA,eAAS,UAAU,CAAC,KAAK,GAAG;AAC5B,yBAAmB,KAAK,KAAK,OAAO,KAAK;AAAA,IAC3C;AAAA,IACA,CAAC,0BAA0B,iBAAiB,kBAAkB;AAAA,EAClE;AACE,QAAM,CAAC,QAAQ,MAAM,KAAK,MAAM,KAAK,sBAAsB,OAAO,SAAS,mBAAmB,YAAY,OAAO,SAAS,GAAG,SAAS,OAAO,KAAK,CAAA;AAClJ,QAAM,cAAcA,MAAQ,OAAO,QAAQ;AAC3C,cAAY,UAAU;AACtBA,QAAQ,gBAAgB,MAAM;AAC5B,QAAI,KAAK,KAAK,KAAK;AACnB,QAAI,CAAC,gBAAgB,WAAW,WAAW,UAAU,WAAW,WAAW,aAAa,OAAO,MAAM,8BAA8B,YAAY,OAAO,SAAS,IAAI,YAAY,OAAO,SAAS,IAAI,KAAK,CAAC,MAAM,aAAa,OAAO,MAAM,8BAA8B,YAAY,OAAO,SAAS,IAAI,YAAY,OAAO,SAAS,IAAI,KAAK,CAAC,KAAK;AAChV,kBAAY,QAAQ,QAAQ,MAAM;AAAA,IACpC;AACA,oBAAgB,UAAU;AAAA,EAC5B,GAAG,CAAC,QAAQ,MAAM,CAAC;AACnB,QAAM,uBAAuB,cAAc,YAAY,WAAW,cAAc,QAAQ,KAAK,CAAC,KAAK,YAAY,UAAU,cAAc,QAAQ,KAAK,CAAC,KAAK;AAC1JA,QAAQ,gBAAgB,MAAM;AAC5B,QAAI,sBAAsB;AACxB,uBAAiB,oBAAoB,KAAK;AAAA,IAC5C;AAAA,EACF,GAAG,CAAC,sBAAsB,gBAAgB,CAAC;AAC3C,QAAM,eAAeA,MAAQ,QAAQ,MAAM;AACzC,QAAI,yBAAyB,SAAS,sBAAsB,OAAO,SAAS,mBAAmB,UAAU,MAAM;AAC7G,aAAO,iBAAiB,oBAAoB,cAAc,CAAC;AAAA,IAC7D;AACA,WAAO,iBAAiB,MAAK;AAAA,EAC/B,GAAG,CAAC,aAAa,sBAAsB,sBAAsB,OAAO,SAAS,mBAAmB,IAAI,CAAC;AACrG,QAAM,wBAAwBA,MAAQ;AAAA,IACpC,CAAC,QAAQ;AACP,UAAI;AACJ,aAAO,OAAO,mBAAmB,YAAY,kBAAkB,MAAM,kBAAkB,OAAO,SAAS,eAAe,MAAM,eAAe,MAAM,OAAO,MAAM;AAAA,IAChK;AAAA,IACA,CAAC,iBAAiB,cAAc;AAAA,EACpC;AACE,QAAM,kBAAkBA,MAAQ,QAAQ,MAAM;AAC5C,QAAI,gBAAgB,UAAU,UAAU,YAAY;AAClD,aAAO;AACT,UAAM,EAAE,QAAQ,MAAK,IAAK;AAC1B,UAAM,eAAe,UAAU,QAAQ,sBAAqB;AAC5D,WAAuBA,sBAAQ;AAAA,MAC7B;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,MAAM,eAAe,MAAM;AAAA,QACpC,UAAU,CAAC,WAAW;AACpB,yBAAe,MAAM;AACrB,kCAAwB,OAAO,SAAS,qBAAqB,OAAO,MAAM;AAAA,QAC5E;AAAA,MACR;AAAA,IACA;AAAA,EACE,GAAG,CAAC,sBAAsB,WAAW,CAAC;AACtC,QAAM,uBAAuB,KAAK,IAAI,YAAY,QAAQ,iBAAiB,gBAAgB,IAAI,EAAE;AACjGA,QAAQ;AAAA,IACN;AAAA,IACA,OAAO;AAAA,MACL,WAAW,CAAC,KAAK,gBAAgB,UAAU,MAAM,iBAAiB,WAAW;AAAA,MAC7E,aAAa,CAAC,eAAe;AAC3B,YAAI;AACJ,YAAI,oBAAoB,GAAG;AACzB,uBAAa,WAAW,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,KAAK,CAAC,CAAC,EAAC,EAAG;AAAA,QACzF;AACA,gBAAQ,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI,OAAO,UAAU;AAAA,MACzE;AAAA,MACA,WAAW,CAAC,KAAK,QAAQ;AACvB,YAAI;AACJ,aAAK,aAAa,OAAO,SAAS,UAAU,aAAa,SAAS,aAAa,OAAO,SAAS,UAAU,aAAa,MAAM;AAC1H,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ,UAAU,QAAQ,QAAQ;AACpC,gBAAM,OAAO,UAAU,QAAQ,sBAAqB;AACpD,gBAAM,QAAQ,KAAK,QAAQ,UAAU,QAAQ;AAC7C,iBAAO;AAAA,YACL,GAAG,KAAK,IAAI,UAAU,QAAQ,aAAa;AAAA,YAC3C,GAAG,KAAK,IAAI,UAAU,QAAQ,YAAY;AAAA,YAC1C,OAAO,UAAU,QAAQ,cAAc;AAAA,YACvC,QAAQ,UAAU,QAAQ,eAAe;AAAA,UACrD;AAAA,QACQ;AACA,gBAAQ,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI,UAAU,OAAO,OAAO,MAAM,IAAI,iBAAiB,GAAG;AAAA,MAC9G;AAAA,MACA,OAAO,MAAM;AACX,YAAI;AACJ,gBAAQ,MAAM,QAAQ,YAAY,OAAO,SAAS,IAAI,MAAK;AAAA,MAC7D;AAAA,MACA,MAAM,OAAO,MAAM;AACjB,gBAAQ,GAAC;AAAA,UACP,KAAK;AACH,sBAAU;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ,MAAM;AAAA,cACd,iBAAiB,MAAM;AAAA,cACvB,gBAAgB,MAAM;AAAA,cACtB,SAAS;AAAA,cACT,KAAK;AAAA,cACL,SAAS;AAAA,cACT,SAAS;AAAA,cACT,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,UAAU;AAAA,YACxB,CAAa;AACD;AAAA,UACF,KAAK;AACH,sBAAU;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ,MAAM;AAAA,cACd,iBAAiB,MAAM;AAAA,cACvB,gBAAgB,MAAM;AAAA,cACtB,SAAS;AAAA,cACT,KAAK;AAAA,cACL,SAAS;AAAA,cACT,SAAS;AAAA,cACT,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,UAAU;AAAA,YACxB,CAAa;AACD;AAAA,UACF,KAAK;AACH,sBAAU;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ,MAAM;AAAA,cACd,iBAAiB,MAAM;AAAA,cACvB,gBAAgB,MAAM;AAAA,cACtB,SAAS;AAAA,cACT,KAAK;AAAA,cACL,SAAS;AAAA,cACT,SAAS;AAAA,cACT,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,UAAU;AAAA,YACxB,CAAa;AACD;AAAA,UACF,KAAK;AACH,kBAAM,OAAO,QAAQ,IAAI;AACzB;AAAA,UACF,KAAK;AACH,kBAAM,gBAAe;AACrB;AAAA,QACZ;AAAA,MACM;AAAA,MACA;AAAA,MACA,kBAAkB,CAAC,SAAS;AAC1B,mBAAW,OAAO,MAAM;AACtB,eAAK,iBAAiB,MAAM,iBAAiB,IAAI;AAAA,QACnD;AAAA,MACF;AAAA,IACN;AAAA,IACI,CAAC,WAAW,kBAAkB,QAAQ,WAAW,iBAAiB,iBAAiB,QAAQ;AAAA,EAC/F;AACE,QAAM,CAAC,QAAQ,MAAM,IAAI,eAAe,OAAO,cAAc,CAAA;AAC7D,QAAM,gBAAgBA,MAAQ;AAAA,IAC5B,CAAC,SAAS;AACR,YAAM,CAAC,KAAK,GAAG,IAAI;AACnB,UAAI,QAAQ,IAAI;AACd,YAAI,iBAAiB,QAAQ;AAC3B,6BAAmB,iBAAiB,oBAAoB,GAAG,GAAG,QAAQ,KAAK;AAC3E,gBAAK;AAAA,QACP;AACA;AAAA,MACF;AACA,UAAI,WAAW,OAAO,WAAW;AAC/B;AACF;AAAA,QACE;AAAA,UACE;AAAA,UACA,OAAO,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,GAAG,QAAQ,EAAC;AAAA,QACtD;AAAA,QACQ;AAAA,QACA;AAAA,QACA;AAAA,MACR;AACM,eAAS,KAAK,GAAG;AAAA,IACnB;AAAA,IACA,CAAC,cAAc,OAAO,UAAU,QAAQ,QAAQ,YAAY,kBAAkB;AAAA,EAClF;AACE,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAQ,SAAS,KAAK;AACxD,QAAM,wBAAwBA,MAAQ;AAAA,IACpCG,SAAU,CAAC,QAAQ;AACjB,mBAAa,GAAG;AAAA,IAClB,GAAG,CAAC;AAAA,EACR;AACE,QAAM,kBAAkBH,MAAQ,YAAY,MAAM;AAChD,0BAAsB,QAAQ,IAAI;AAClC,QAAI,cAAc,YAAY,UAAU,cAAc,QAAQ,WAAW,KAAK,cAAc,KAAK,WAAW,KAAK,eAAe,QAAQ;AACtI;AAAA,QACE;AAAA,UACE,MAAM,CAAC,iBAAiB,WAAW;AAAA,UACnC,OAAO;AAAA,YACL,GAAG;AAAA,YACH,GAAG;AAAA,YACH,OAAO;AAAA,YACP,QAAQ;AAAA,UACpB;AAAA,QACA;AAAA,QACQ;AAAA,QACA;AAAA,QACA;AAAA,MACR;AAAA,IACI;AAAA,EACF,GAAG,CAAC,aAAa,eAAe,YAAY,iBAAiB,UAAU,CAAC;AACxE,QAAM,aAAaA,MAAQ,YAAY,MAAM;AAC3C,0BAAsB,QAAQ,KAAK;AAAA,EACrC,GAAG,CAAA,CAAE;AACL,QAAM,CAAC,YAAY,WAAW,IAAIA,MAAQ,QAAQ,MAAM;AACtD,QAAI;AACJ,QAAI;AACJ,UAAM,kBAAkB,MAAM,gBAAgB,OAAO,SAAS,aAAa,2BAA2B,OAAO,MAAM,kBAAiB;AACpI,UAAM,2BAA2B,QAAQ,uBAAuB,IAAI;AACpE,QAAI,OAAO,cAAc,UAAU;AACjC,UAAI,oBAAoB,2BAA2B;AAAA,IACrD,OAAO;AACL,UAAI,MAAM;AACV,YAAM,YAAY,KAAK,IAAI,0BAA0B,EAAE;AACvD,eAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,eAAO,UAAU,CAAC;AAAA,MACpB;AACA,YAAM,KAAK,MAAM,MAAM,SAAS;AAChC,UAAI,oBAAoB,2BAA2B;AAAA,IACrD;AACA,SAAK;AACL,UAAM,IAAI,YAAY,OAAO,CAAC,KAAK,MAAM,EAAE,QAAQ,KAAK,CAAC,IAAI;AAC7D,WAAO,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI;AAAA,EAC1D,GAAG,CAAC,aAAa,gBAAgB,OAAO,SAAS,aAAa,wBAAwB,WAAW,MAAM,sBAAsB,iBAAiB,CAAC;AAC/I,SAAuBA,sBAAQ,cAAc,aAAa,UAAU,EAAE,OAAO,eAA+BA,sBAAQ;AAAA,IAClH;AAAA,IACA;AAAA,MACE,OAAO,aAAa,WAAW;AAAA,MAC/B;AAAA,MACA,SAAS,SAAS,OAAO,QAAQ;AAAA,MACjC,UAAU,UAAU,OAAO,SAAS;AAAA,IAC1C;AAAA,IACoBA,sBAAQ;AAAA,MACtB;AAAA,MACA;AAAA,QACE;AAAA,QACA,eAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,qBAAqB,cAAc;AAAA,QACnC;AAAA,QACA,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ;AAAA,QACA,eAAe;AAAA,QACf,aAAa;AAAA,QACb,oBAAoB,oBAAoB;AAAA,QACxC,gBAAgB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB;AAAA,QACjB;AAAA,QACA;AAAA,QACA,mBAAmB,eAAe,oBAAoB;AAAA,QACtD,iBAAiB,CAAC,uBAAuB,UAAU,sBAAsB,OAAO,SAAS,mBAAmB,YAAY,OAAO,WAAW;AAAA,QAC1I;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf,aAAa;AAAA,QACb,mBAAmB;AAAA,QACnB,eAAe;AAAA,QACf,YAAY,cAAc,OAAO,SAAS,WAAW,gBAAgB;AAAA,QACrE,aAAa;AAAA,QACb;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,wBAAwB;AAAA,QACxB,YAAY,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC;AAAA,QACzC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX,YAAY,cAAc;AAAA,QAC1B,YAAY,cAAc;AAAA,QAC1B,gBAAgB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACR;AAAA,IACA;AAAA,IACI;AAAA,IACA,YAAY,UAA0BA,sBAAQ;AAAA,MAC5C;AAAA,MACA;AAAA,QACE,GAAG;AAAA,QACH;AAAA,QACA,IAAI;AAAA,QACJ;AAAA,QACA,YAAY,gBAAgB,OAAO,SAAS,aAAa,eAAe,OAAO,yBAAyB;AAAA,QACxG;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR;AAAA,IACA;AAAA,EACA,CAAG;AACH;AACG,IAAC,aAAaA,MAAQ,WAAW,cAAc;AAIlD,SAAS,QAAQ,OAAO;AACtB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM,aAAa;AAAA,EACvB;AACA;AACA,SAAS,eAAe,OAAO;AAC7B,SAAO,EAAE,iBAAiBI,MAAQ,QAAQ,MAAM,MAAM,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,EAAC;AAC9E;","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../../../../node_modules/@glideapps/glide-data-grid/dist/js/index.js"],"sourcesContent":["import {\n styled_default\n} from \"./chunk-XFANKXD6.js\";\n\n// src/data-editor/data-editor.tsx\nimport * as React35 from \"react\";\n\n// src/common/support.ts\nfunction proveType(_val) {\n}\nfunction panic(message = \"This should not happen\") {\n throw new Error(message);\n}\nfunction assert(fact, message = \"Assertion failed\") {\n if (fact)\n return;\n return panic(message);\n}\nfunction assertNever(_never, msg) {\n return panic(msg != null ? msg : \"Hell froze over\");\n}\nfunction maybe(fn, defaultValue) {\n try {\n return fn();\n } catch (e) {\n return defaultValue;\n }\n}\nvar has = Object.prototype.hasOwnProperty;\nfunction deepEqual(foo, bar) {\n let ctor, len;\n if (foo === bar)\n return true;\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date)\n return foo.getTime() === bar.getTime();\n if (ctor === RegExp)\n return foo.toString() === bar.toString();\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && deepEqual(foo[len], bar[len]))\n ;\n }\n return len === -1;\n }\n if (!ctor || typeof foo === \"object\") {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor))\n return false;\n if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor]))\n return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n return foo !== foo && bar !== bar;\n}\n\n// src/data-editor/data-editor.tsx\nimport clamp5 from \"lodash/clamp.js\";\nimport uniq from \"lodash/uniq.js\";\nimport flatten from \"lodash/flatten.js\";\nimport range from \"lodash/range.js\";\nimport debounce2 from \"lodash/debounce.js\";\n\n// src/data-grid-overlay-editor/data-grid-overlay-editor.tsx\nimport * as React4 from \"react\";\nimport { createPortal } from \"react-dom\";\n\n// src/click-outside-container/click-outside-container.tsx\nimport * as React from \"react\";\nvar ClickOutsideContainer = class extends React.PureComponent {\n constructor() {\n super(...arguments);\n this.wrapperRef = React.createRef();\n this.clickOutside = (event) => {\n if (this.props.isOutsideClick && !this.props.isOutsideClick(event)) {\n return;\n }\n if (this.wrapperRef.current !== null && !this.wrapperRef.current.contains(event.target)) {\n let node = event.target;\n while (node !== null) {\n if (node.classList.contains(\"click-outside-ignore\")) {\n return;\n }\n node = node.parentElement;\n }\n this.props.onClickOutside();\n }\n };\n }\n componentDidMount() {\n document.addEventListener(\"touchend\", this.clickOutside, true);\n document.addEventListener(\"mousedown\", this.clickOutside, true);\n document.addEventListener(\"contextmenu\", this.clickOutside, true);\n }\n componentWillUnmount() {\n document.removeEventListener(\"touchend\", this.clickOutside, true);\n document.removeEventListener(\"mousedown\", this.clickOutside, true);\n document.removeEventListener(\"contextmenu\", this.clickOutside, true);\n }\n render() {\n const { onClickOutside, isOutsideClick, ...rest } = this.props;\n return /* @__PURE__ */ React.createElement(\"div\", { ...rest, ref: this.wrapperRef }, this.props.children);\n }\n};\n\n// src/common/styles.ts\nimport React2 from \"react\";\nfunction makeCSSStyle(theme) {\n var _a, _b;\n return {\n \"--gdg-accent-color\": theme.accentColor,\n \"--gdg-accent-fg\": theme.accentFg,\n \"--gdg-accent-light\": theme.accentLight,\n \"--gdg-text-dark\": theme.textDark,\n \"--gdg-text-medium\": theme.textMedium,\n \"--gdg-text-light\": theme.textLight,\n \"--gdg-text-bubble\": theme.textBubble,\n \"--gdg-bg-icon-header\": theme.bgIconHeader,\n \"--gdg-fg-icon-header\": theme.fgIconHeader,\n \"--gdg-text-header\": theme.textHeader,\n \"--gdg-text-group-header\": (_a = theme.textGroupHeader) != null ? _a : theme.textHeader,\n \"--gdg-text-header-selected\": theme.textHeaderSelected,\n \"--gdg-bg-cell\": theme.bgCell,\n \"--gdg-bg-cell-medium\": theme.bgCellMedium,\n \"--gdg-bg-header\": theme.bgHeader,\n \"--gdg-bg-header-has-focus\": theme.bgHeaderHasFocus,\n \"--gdg-bg-header-hovered\": theme.bgHeaderHovered,\n \"--gdg-bg-bubble\": theme.bgBubble,\n \"--gdg-bg-bubble-selected\": theme.bgBubbleSelected,\n \"--gdg-bg-search-result\": theme.bgSearchResult,\n \"--gdg-border-color\": theme.borderColor,\n \"--gdg-horizontal-border-color\": (_b = theme.horizontalBorderColor) != null ? _b : theme.borderColor,\n \"--gdg-drilldown-border\": theme.drilldownBorder,\n \"--gdg-link-color\": theme.linkColor,\n \"--gdg-cell-horizontal-padding\": `${theme.cellHorizontalPadding}px`,\n \"--gdg-cell-vertical-padding\": `${theme.cellVerticalPadding}px`,\n \"--gdg-header-font-style\": theme.headerFontStyle,\n \"--gdg-base-font-style\": theme.baseFontStyle,\n \"--gdg-marker-font-style\": theme.markerFontStyle,\n \"--gdg-font-family\": theme.fontFamily,\n \"--gdg-editor-font-size\": theme.editorFontSize\n };\n}\nvar dataEditorBaseTheme = {\n accentColor: \"#4F5DFF\",\n accentFg: \"#FFFFFF\",\n accentLight: \"rgba(62, 116, 253, 0.1)\",\n textDark: \"#313139\",\n textMedium: \"#737383\",\n textLight: \"#B2B2C0\",\n textBubble: \"#313139\",\n bgIconHeader: \"#737383\",\n fgIconHeader: \"#FFFFFF\",\n textHeader: \"#313139\",\n textGroupHeader: \"#313139BB\",\n textHeaderSelected: \"#FFFFFF\",\n bgCell: \"#FFFFFF\",\n bgCellMedium: \"#FAFAFB\",\n bgHeader: \"#F7F7F8\",\n bgHeaderHasFocus: \"#E9E9EB\",\n bgHeaderHovered: \"#EFEFF1\",\n bgBubble: \"#EDEDF3\",\n bgBubbleSelected: \"#FFFFFF\",\n bgSearchResult: \"#fff9e3\",\n borderColor: \"rgba(115, 116, 131, 0.16)\",\n drilldownBorder: \"rgba(0, 0, 0, 0)\",\n linkColor: \"#4F5DFF\",\n cellHorizontalPadding: 8,\n cellVerticalPadding: 3,\n headerIconSize: 18,\n headerFontStyle: \"600 13px\",\n baseFontStyle: \"13px\",\n markerFontStyle: \"9px\",\n fontFamily: \"Inter, Roboto, -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, noto, arial, sans-serif\",\n editorFontSize: \"13px\",\n lineHeight: 1.4\n //unitless scaler depends on your font\n};\nfunction getDataEditorTheme() {\n return dataEditorBaseTheme;\n}\nvar ThemeContext = React2.createContext(dataEditorBaseTheme);\nfunction useTheme() {\n return React2.useContext(ThemeContext);\n}\n\n// src/data-grid/data-grid-types.ts\nimport has2 from \"lodash/has.js\";\nfunction gridSelectionHasItem(sel, item) {\n const [col, row] = item;\n if (sel.columns.hasIndex(col) || sel.rows.hasIndex(row))\n return true;\n if (sel.current !== void 0) {\n if (sel.current.cell[0] === col && sel.current.cell[1] === row)\n return true;\n const toCheck = [sel.current.range, ...sel.current.rangeStack];\n for (const r of toCheck) {\n if (col >= r.x && col < r.x + r.width && row >= r.y && row < r.y + r.height)\n return true;\n }\n }\n return false;\n}\nvar BooleanEmpty = null;\nvar BooleanIndeterminate = void 0;\nvar headerKind = \"header\";\nvar groupHeaderKind = \"group-header\";\nvar outOfBoundsKind = \"out-of-bounds\";\nvar GridCellKind = /* @__PURE__ */ ((GridCellKind2) => {\n GridCellKind2[\"Uri\"] = \"uri\";\n GridCellKind2[\"Text\"] = \"text\";\n GridCellKind2[\"Image\"] = \"image\";\n GridCellKind2[\"RowID\"] = \"row-id\";\n GridCellKind2[\"Number\"] = \"number\";\n GridCellKind2[\"Bubble\"] = \"bubble\";\n GridCellKind2[\"Boolean\"] = \"boolean\";\n GridCellKind2[\"Loading\"] = \"loading\";\n GridCellKind2[\"Markdown\"] = \"markdown\";\n GridCellKind2[\"Drilldown\"] = \"drilldown\";\n GridCellKind2[\"Protected\"] = \"protected\";\n GridCellKind2[\"Custom\"] = \"custom\";\n return GridCellKind2;\n})(GridCellKind || {});\nvar GridColumnIcon = /* @__PURE__ */ ((GridColumnIcon2) => {\n GridColumnIcon2[\"HeaderRowID\"] = \"headerRowID\";\n GridColumnIcon2[\"HeaderCode\"] = \"headerCode\";\n GridColumnIcon2[\"HeaderNumber\"] = \"headerNumber\";\n GridColumnIcon2[\"HeaderString\"] = \"headerString\";\n GridColumnIcon2[\"HeaderBoolean\"] = \"headerBoolean\";\n GridColumnIcon2[\"HeaderAudioUri\"] = \"headerAudioUri\";\n GridColumnIcon2[\"HeaderVideoUri\"] = \"headerVideoUri\";\n GridColumnIcon2[\"HeaderEmoji\"] = \"headerEmoji\";\n GridColumnIcon2[\"HeaderImage\"] = \"headerImage\";\n GridColumnIcon2[\"HeaderUri\"] = \"headerUri\";\n GridColumnIcon2[\"HeaderPhone\"] = \"headerPhone\";\n GridColumnIcon2[\"HeaderMarkdown\"] = \"headerMarkdown\";\n GridColumnIcon2[\"HeaderDate\"] = \"headerDate\";\n GridColumnIcon2[\"HeaderTime\"] = \"headerTime\";\n GridColumnIcon2[\"HeaderEmail\"] = \"headerEmail\";\n GridColumnIcon2[\"HeaderReference\"] = \"headerReference\";\n GridColumnIcon2[\"HeaderIfThenElse\"] = \"headerIfThenElse\";\n GridColumnIcon2[\"HeaderSingleValue\"] = \"headerSingleValue\";\n GridColumnIcon2[\"HeaderLookup\"] = \"headerLookup\";\n GridColumnIcon2[\"HeaderTextTemplate\"] = \"headerTextTemplate\";\n GridColumnIcon2[\"HeaderMath\"] = \"headerMath\";\n GridColumnIcon2[\"HeaderRollup\"] = \"headerRollup\";\n GridColumnIcon2[\"HeaderJoinStrings\"] = \"headerJoinStrings\";\n GridColumnIcon2[\"HeaderSplitString\"] = \"headerSplitString\";\n GridColumnIcon2[\"HeaderGeoDistance\"] = \"headerGeoDistance\";\n GridColumnIcon2[\"HeaderArray\"] = \"headerArray\";\n GridColumnIcon2[\"RowOwnerOverlay\"] = \"rowOwnerOverlay\";\n GridColumnIcon2[\"ProtectedColumnOverlay\"] = \"protectedColumnOverlay\";\n return GridColumnIcon2;\n})(GridColumnIcon || {});\nvar headerCellCheckboxPrefix = \"___gdg_header_cell_\";\nvar headerCellCheckedMarker = headerCellCheckboxPrefix + \"checked\";\nvar headerCellUnheckedMarker = headerCellCheckboxPrefix + \"unchecked\";\nvar headerCellIndeterminateMarker = headerCellCheckboxPrefix + \"indeterminate\";\nfunction isSizedGridColumn(c) {\n return \"width\" in c && typeof c.width === \"number\";\n}\nasync function resolveCellsThunk(thunk) {\n if (typeof thunk === \"object\")\n return thunk;\n return await thunk();\n}\nfunction isEditableGridCell(cell) {\n if (cell.kind === \"loading\" || cell.kind === \"bubble\" || cell.kind === \"row-id\" || cell.kind === \"protected\" || cell.kind === \"drilldown\") {\n return false;\n }\n proveType(cell);\n return true;\n}\nfunction isTextEditableGridCell(cell) {\n if (cell.kind === \"loading\" || cell.kind === \"bubble\" || cell.kind === \"row-id\" || cell.kind === \"protected\" || cell.kind === \"drilldown\" || cell.kind === \"boolean\" || cell.kind === \"image\" || cell.kind === \"custom\") {\n return false;\n }\n proveType(cell);\n return true;\n}\nfunction isInnerOnlyCell(cell) {\n return cell.kind === \"marker\" || cell.kind === \"new-row\";\n}\nfunction isReadWriteCell(cell) {\n if (!isEditableGridCell(cell) || cell.kind === \"image\")\n return false;\n if (cell.kind === \"text\" || cell.kind === \"number\" || cell.kind === \"markdown\" || cell.kind === \"uri\" || cell.kind === \"custom\" || cell.kind === \"boolean\") {\n return cell.readonly !== true;\n }\n assertNever(cell, \"A cell was passed with an invalid kind\");\n}\nfunction isObjectEditorCallbackResult(obj) {\n return has2(obj, \"editor\");\n}\nfunction booleanCellIsEditable(cell) {\n var _a;\n return !((_a = cell.readonly) != null ? _a : false);\n}\nvar InnerGridCellKind = /* @__PURE__ */ ((InnerGridCellKind2) => {\n InnerGridCellKind2[\"NewRow\"] = \"new-row\";\n InnerGridCellKind2[\"Marker\"] = \"marker\";\n return InnerGridCellKind2;\n})(InnerGridCellKind || {});\nfunction mergeRanges(input) {\n if (input.length === 0) {\n return [];\n }\n const ranges = [...input];\n const stack = [];\n ranges.sort(function(a, b) {\n return a[0] - b[0];\n });\n stack.push([...ranges[0]]);\n for (const range2 of ranges.slice(1)) {\n const top = stack[stack.length - 1];\n if (top[1] < range2[0]) {\n stack.push([...range2]);\n } else if (top[1] < range2[1]) {\n top[1] = range2[1];\n }\n }\n return stack;\n}\nvar emptyCompactSelection;\nvar _CompactSelection = class _CompactSelection {\n constructor(items) {\n this.items = items;\n }\n offset(amount) {\n if (amount === 0)\n return this;\n const newItems = this.items.map((x) => [x[0] + amount, x[1] + amount]);\n return new _CompactSelection(newItems);\n }\n add(selection) {\n const slice = typeof selection === \"number\" ? [selection, selection + 1] : selection;\n const newItems = mergeRanges([...this.items, slice]);\n return new _CompactSelection(newItems);\n }\n remove(selection) {\n const items = [...this.items];\n const selMin = typeof selection === \"number\" ? selection : selection[0];\n const selMax = typeof selection === \"number\" ? selection + 1 : selection[1];\n for (const [i, slice] of items.entries()) {\n const [start, end] = slice;\n if (start <= selMax && selMin <= end) {\n const toAdd = [];\n if (start < selMin) {\n toAdd.push([start, selMin]);\n }\n if (selMax < end) {\n toAdd.push([selMax, end]);\n }\n items.splice(i, 1, ...toAdd);\n }\n }\n return new _CompactSelection(items);\n }\n first() {\n if (this.items.length === 0)\n return void 0;\n return this.items[0][0];\n }\n last() {\n if (this.items.length === 0)\n return void 0;\n return this.items.slice(-1)[0][1] - 1;\n }\n hasIndex(index) {\n for (let i = 0; i < this.items.length; i++) {\n const [start, end] = this.items[i];\n if (index >= start && index < end)\n return true;\n }\n return false;\n }\n hasAll(index) {\n for (let x = index[0]; x < index[1]; x++) {\n if (!this.hasIndex(x))\n return false;\n }\n return true;\n }\n some(predicate) {\n for (const i of this) {\n if (predicate(i))\n return true;\n }\n return false;\n }\n equals(other) {\n if (other === this)\n return true;\n if (other.items.length !== this.items.length)\n return false;\n for (let i = 0; i < this.items.length; i++) {\n const left = other.items[i];\n const right = this.items[i];\n if (left[0] !== right[0] || left[1] !== right[1])\n return false;\n }\n return true;\n }\n // Really old JS wont have access to the iterator and babel will stop people using it\n // when trying to support browsers so old we don't support them anyway. What goes on\n // between an engineer and their bundler in the privacy of their CI server is none of\n // my business anyway.\n toArray() {\n const result = [];\n for (const [start, end] of this.items) {\n for (let x = start; x < end; x++) {\n result.push(x);\n }\n }\n return result;\n }\n get length() {\n let len = 0;\n for (const [start, end] of this.items) {\n len += end - start;\n }\n return len;\n }\n *[Symbol.iterator]() {\n for (const [start, end] of this.items) {\n for (let x = start; x < end; x++) {\n yield x;\n }\n }\n }\n};\n_CompactSelection.empty = () => {\n return emptyCompactSelection != null ? emptyCompactSelection : emptyCompactSelection = new _CompactSelection([]);\n};\n_CompactSelection.fromSingleSelection = (selection) => {\n return _CompactSelection.empty().add(selection);\n};\nvar CompactSelection = _CompactSelection;\n\n// src/data-grid-overlay-editor/data-grid-overlay-editor-style.tsx\nvar _exp = () => (p) => p.targetY;\nvar _exp2 = () => (p) => p.targetX - 1;\nvar _exp3 = () => (p) => p.targetY - 1;\nvar _exp4 = () => (p) => p.targetWidth + 2;\nvar _exp5 = () => (p) => p.targetHeight + 2;\nvar _exp6 = () => (p) => p.targetY + 10;\nvar _exp7 = () => (p) => Math.max(0, (p.targetHeight - 28) / 2);\nvar DataGridOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"DataGridOverlayEditorStyle\",\n class: \"d1t1th9s\",\n propsAsIs: false,\n vars: {\n \"d1t1th9s-0\": [_exp(), \"px\"],\n \"d1t1th9s-1\": [_exp2(), \"px\"],\n \"d1t1th9s-2\": [_exp3(), \"px\"],\n \"d1t1th9s-3\": [_exp4(), \"px\"],\n \"d1t1th9s-4\": [_exp5(), \"px\"],\n \"d1t1th9s-5\": [_exp6(), \"px\"],\n \"d1t1th9s-6\": [_exp7(), \"px\"]\n }\n});\n\n// src/data-grid-overlay-editor/use-stay-on-screen.ts\nimport * as React3 from \"react\";\nfunction useRefState() {\n const [refState, setRefState] = React3.useState();\n return [refState != null ? refState : void 0, setRefState];\n}\nfunction useStayOnScreen() {\n const [ref, setRef] = useRefState();\n const [xOffset, setXOffset] = React3.useState(0);\n const [isIntersecting, setIsIntersecting] = React3.useState(true);\n React3.useLayoutEffect(() => {\n if (ref === void 0)\n return;\n if (!(\"IntersectionObserver\" in window))\n return;\n const observer = new IntersectionObserver(\n (ents) => {\n if (ents.length === 0)\n return;\n setIsIntersecting(ents[0].isIntersecting);\n },\n { threshold: 1 }\n );\n observer.observe(ref);\n return () => observer.disconnect();\n }, [ref]);\n React3.useEffect(() => {\n if (isIntersecting || ref === void 0)\n return;\n let rafHandle;\n const fn = () => {\n const { right: refRight } = ref.getBoundingClientRect();\n setXOffset((cv) => Math.min(cv + window.innerWidth - refRight - 10, 0));\n rafHandle = requestAnimationFrame(fn);\n };\n rafHandle = requestAnimationFrame(fn);\n return () => {\n if (rafHandle !== void 0) {\n cancelAnimationFrame(rafHandle);\n }\n };\n }, [ref, isIntersecting]);\n const style = React3.useMemo(() => {\n return { transform: `translateX(${xOffset}px)` };\n }, [xOffset]);\n return {\n ref: setRef,\n style\n };\n}\n\n// src/data-grid-overlay-editor/data-grid-overlay-editor.tsx\nvar DataGridOverlayEditor = (p) => {\n const {\n target,\n content,\n onFinishEditing: onFinishEditingIn,\n forceEditMode,\n initialValue,\n imageEditorOverride,\n markdownDivCreateNode,\n highlight,\n className,\n theme,\n id,\n cell,\n validateCell,\n getCellRenderer,\n provideEditor,\n isOutsideClick\n } = p;\n const [tempValue, setTempValueRaw] = React4.useState(forceEditMode ? content : void 0);\n const lastValueRef = React4.useRef(tempValue != null ? tempValue : content);\n lastValueRef.current = tempValue != null ? tempValue : content;\n const [isValid, setIsValid] = React4.useState(() => {\n if (validateCell === void 0)\n return true;\n return !(isEditableGridCell(content) && (validateCell == null ? void 0 : validateCell(cell, content, lastValueRef.current)) === false);\n });\n const onFinishEditing = React4.useCallback(\n (newCell, movement) => {\n onFinishEditingIn(isValid ? newCell : void 0, movement);\n },\n [isValid, onFinishEditingIn]\n );\n const setTempValue = React4.useCallback(\n (newVal) => {\n if (validateCell !== void 0 && newVal !== void 0 && isEditableGridCell(newVal)) {\n const validResult = validateCell(cell, newVal, lastValueRef.current);\n if (validResult === false) {\n setIsValid(false);\n } else if (typeof validResult === \"object\") {\n newVal = validResult;\n setIsValid(true);\n } else {\n setIsValid(true);\n }\n }\n setTempValueRaw(newVal);\n },\n [cell, validateCell]\n );\n const finished = React4.useRef(false);\n const customMotion = React4.useRef(void 0);\n const onClickOutside = React4.useCallback(() => {\n onFinishEditing(tempValue, [0, 0]);\n finished.current = true;\n }, [tempValue, onFinishEditing]);\n const onEditorFinished = React4.useCallback(\n (newValue, movement) => {\n var _a;\n onFinishEditing(newValue, (_a = movement != null ? movement : customMotion.current) != null ? _a : [0, 0]);\n finished.current = true;\n },\n [onFinishEditing]\n );\n const onKeyDown = React4.useCallback(\n async (event) => {\n let save = false;\n if (event.key === \"Escape\") {\n event.stopPropagation();\n event.preventDefault();\n customMotion.current = [0, 0];\n } else if (event.key === \"Enter\" && !event.shiftKey) {\n event.stopPropagation();\n event.preventDefault();\n customMotion.current = [0, 1];\n save = true;\n } else if (event.key === \"Tab\") {\n event.stopPropagation();\n event.preventDefault();\n customMotion.current = [event.shiftKey ? -1 : 1, 0];\n save = true;\n }\n window.setTimeout(() => {\n if (!finished.current && customMotion.current !== void 0) {\n onFinishEditing(save ? tempValue : void 0, customMotion.current);\n finished.current = true;\n }\n }, 0);\n },\n [onFinishEditing, tempValue]\n );\n const targetValue = tempValue != null ? tempValue : content;\n const [editorProvider, useLabel] = React4.useMemo(() => {\n var _a, _b;\n if (isInnerOnlyCell(content))\n return [];\n const external = provideEditor == null ? void 0 : provideEditor(content);\n if (external !== void 0)\n return [external, false];\n return [(_b = (_a = getCellRenderer(content)) == null ? void 0 : _a.provideEditor) == null ? void 0 : _b.call(_a, content), false];\n }, [content, getCellRenderer, provideEditor]);\n const { ref, style: stayOnScreenStyle } = useStayOnScreen();\n let pad = true;\n let editor;\n let style = true;\n let styleOverride;\n if (editorProvider !== void 0) {\n pad = editorProvider.disablePadding !== true;\n style = editorProvider.disableStyling !== true;\n const isObjectEditor = isObjectEditorCallbackResult(editorProvider);\n if (isObjectEditor) {\n styleOverride = editorProvider.styleOverride;\n }\n const CustomEditor = isObjectEditor ? editorProvider.editor : editorProvider;\n editor = /* @__PURE__ */ React4.createElement(\n CustomEditor,\n {\n isHighlighted: highlight,\n onChange: setTempValue,\n value: targetValue,\n initialValue,\n onFinishedEditing: onEditorFinished,\n validatedSelection: isEditableGridCell(targetValue) ? targetValue.selectionRange : void 0,\n forceEditMode,\n target,\n imageEditorOverride,\n markdownDivCreateNode,\n isValid\n }\n );\n }\n styleOverride = { ...styleOverride, ...stayOnScreenStyle };\n const portalElement = document.getElementById(\"portal\");\n if (portalElement === null) {\n console.error(\n 'Cannot open Data Grid overlay editor, because portal not found. Please add `<div id=\"portal\" />` as the last child of your `<body>`.'\n );\n return null;\n }\n let classWrap = style ? \"gdg-style\" : \"gdg-unstyle\";\n if (!isValid) {\n classWrap += \" invalid\";\n }\n if (pad) {\n classWrap += \" pad\";\n }\n return createPortal(\n /* @__PURE__ */ React4.createElement(ThemeContext.Provider, { value: theme }, /* @__PURE__ */ React4.createElement(\n ClickOutsideContainer,\n {\n style: makeCSSStyle(theme),\n className,\n onClickOutside,\n isOutsideClick\n },\n /* @__PURE__ */ React4.createElement(\n DataGridOverlayEditorStyle,\n {\n ref,\n id,\n className: classWrap,\n style: styleOverride,\n as: useLabel === true ? \"label\" : void 0,\n targetX: target.x,\n targetY: target.y,\n targetWidth: target.width,\n targetHeight: target.height\n },\n /* @__PURE__ */ React4.createElement(\"div\", { className: \"clip-region\", onKeyDown }, editor)\n )\n )),\n portalElement\n );\n};\nvar data_grid_overlay_editor_default = DataGridOverlayEditor;\n\n// src/data-grid-search/data-grid-search.tsx\nimport * as React12 from \"react\";\n\n// src/scrolling-data-grid/scrolling-data-grid.tsx\nimport * as React11 from \"react\";\n\n// src/data-grid-dnd/data-grid-dnd.tsx\nimport clamp3 from \"lodash/clamp.js\";\nimport * as React9 from \"react\";\n\n// src/data-grid/data-grid.tsx\nimport * as React8 from \"react\";\n\n// src/common/image-window-loader.ts\nimport throttle from \"lodash/throttle.js\";\nvar rowShift = 1 << 16;\nvar imgPool = [];\nfunction packColRowToNumber(col, row) {\n return row * rowShift + col;\n}\nfunction unpackCol(packed) {\n return packed % rowShift;\n}\nfunction unpackRow(packed, col) {\n return (packed - col) / rowShift;\n}\nfunction unpackNumberToColRow(packed) {\n const col = unpackCol(packed);\n const row = unpackRow(packed, col);\n return [col, row];\n}\nvar ImageWindowLoaderImpl = class {\n constructor() {\n this.imageLoaded = () => void 0;\n this.loadedLocations = [];\n this.visibleWindow = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.freezeCols = 0;\n this.isInWindow = (packed) => {\n const col = unpackCol(packed);\n const row = unpackRow(packed, col);\n const w = this.visibleWindow;\n if (col < this.freezeCols && row >= w.y && row <= w.y + w.height)\n return true;\n return col >= w.x && col <= w.x + w.width && row >= w.y && row <= w.y + w.height;\n };\n this.cache = {};\n // eslint-disable-next-line unicorn/consistent-function-scoping\n this.sendLoaded = throttle(() => {\n this.imageLoaded(this.loadedLocations);\n this.loadedLocations = [];\n }, 20);\n this.clearOutOfWindow = () => {\n const keys = Object.keys(this.cache);\n for (const key of keys) {\n const obj = this.cache[key];\n let keep = false;\n for (let j = 0; j < obj.cells.length; j++) {\n const packed = obj.cells[j];\n if (this.isInWindow(packed)) {\n keep = true;\n break;\n }\n }\n if (keep) {\n obj.cells = obj.cells.filter(this.isInWindow);\n } else {\n obj.cancel();\n delete this.cache[key];\n }\n }\n };\n }\n setCallback(imageLoaded) {\n this.imageLoaded = imageLoaded;\n }\n setWindow(newWindow, freezeCols) {\n if (this.visibleWindow.x === newWindow.x && this.visibleWindow.y === newWindow.y && this.visibleWindow.width === newWindow.width && this.visibleWindow.height === newWindow.height && this.freezeCols === freezeCols)\n return;\n this.visibleWindow = newWindow;\n this.freezeCols = freezeCols;\n this.clearOutOfWindow();\n }\n loadImage(url, col, row, key) {\n var _a;\n let loaded = false;\n const img = (_a = imgPool.pop()) != null ? _a : new Image();\n let canceled = false;\n const result = {\n img: void 0,\n cells: [packColRowToNumber(col, row)],\n url,\n cancel: () => {\n if (canceled)\n return;\n canceled = true;\n if (imgPool.length < 12) {\n imgPool.unshift(img);\n } else if (!loaded) {\n img.src = \"\";\n }\n }\n };\n const loadPromise = new Promise((r) => img.addEventListener(\"load\", () => r(null)));\n requestAnimationFrame(async () => {\n try {\n img.src = url;\n await loadPromise;\n await img.decode();\n const toWrite = this.cache[key];\n if (toWrite !== void 0 && !canceled) {\n toWrite.img = img;\n for (const packed of toWrite.cells) {\n this.loadedLocations.push(unpackNumberToColRow(packed));\n }\n loaded = true;\n this.sendLoaded();\n }\n } catch (e) {\n result.cancel();\n }\n });\n this.cache[key] = result;\n }\n loadOrGetImage(url, col, row) {\n const key = url;\n const current = this.cache[key];\n if (current !== void 0) {\n const packed = packColRowToNumber(col, row);\n if (!current.cells.includes(packed)) {\n current.cells.push(packed);\n }\n return current.img;\n } else {\n this.loadImage(url, col, row, key);\n }\n return void 0;\n }\n};\nvar image_window_loader_default = ImageWindowLoaderImpl;\n\n// src/common/utils.tsx\nimport * as React5 from \"react\";\nimport debounce from \"lodash/debounce.js\";\nfunction useEventListener(eventName, handler, element, passive, capture = false) {\n const savedHandler = React5.useRef();\n savedHandler.current = handler;\n React5.useEffect(\n () => {\n if (element === null || element.addEventListener === void 0)\n return;\n const el = element;\n const eventListener = (event) => {\n var _a;\n (_a = savedHandler.current) == null ? void 0 : _a.call(el, event);\n };\n el.addEventListener(eventName, eventListener, { passive, capture });\n return () => {\n el.removeEventListener(eventName, eventListener, { capture });\n };\n },\n [eventName, element, passive, capture]\n // Re-run if eventName or element changes\n );\n}\nfunction whenDefined(obj, result) {\n return obj === void 0 ? void 0 : result;\n}\nvar PI = Math.PI;\nfunction degreesToRadians(degrees) {\n return degrees * PI / 180;\n}\nvar getSquareBB = (posX, posY, squareSideLength) => ({\n x1: posX - squareSideLength / 2,\n y1: posY - squareSideLength / 2,\n x2: posX + squareSideLength / 2,\n y2: posY + squareSideLength / 2\n});\nvar getSquareXPosFromAlign = (alignment, containerX, containerWidth, horizontalPadding, squareWidth) => {\n switch (alignment) {\n case \"left\":\n return Math.floor(containerX) + horizontalPadding + squareWidth / 2;\n case \"center\":\n return Math.floor(containerX + containerWidth / 2);\n case \"right\":\n return Math.floor(containerX + containerWidth) - horizontalPadding - squareWidth / 2;\n }\n};\nvar getSquareWidth = (maxSize, containerHeight, verticalPadding) => Math.min(maxSize, containerHeight - verticalPadding * 2);\nvar pointIsWithinBB = (x, y, bb) => bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2;\nvar EditPencil = (props) => {\n var _a;\n const fg = (_a = props.fgColor) != null ? _a : \"currentColor\";\n return /* @__PURE__ */ React5.createElement(\"svg\", { viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, /* @__PURE__ */ React5.createElement(\n \"path\",\n {\n d: \"M12.7073 7.05029C7.87391 11.8837 10.4544 9.30322 6.03024 13.7273C5.77392 13.9836 5.58981 14.3071 5.50189 14.6587L4.52521 18.5655C4.38789 19.1148 4.88543 19.6123 5.43472 19.475L9.34146 18.4983C9.69313 18.4104 10.0143 18.2286 10.2706 17.9722L16.9499 11.2929\",\n stroke: fg,\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\",\n vectorEffect: \"non-scaling-stroke\"\n }\n ), /* @__PURE__ */ React5.createElement(\n \"path\",\n {\n d: \"M20.4854 4.92901L19.0712 3.5148C18.2901 2.73375 17.0238 2.73375 16.2428 3.5148L14.475 5.28257C15.5326 7.71912 16.4736 8.6278 18.7176 9.52521L20.4854 7.75744C21.2665 6.97639 21.2665 5.71006 20.4854 4.92901Z\",\n stroke: fg,\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\",\n vectorEffect: \"non-scaling-stroke\"\n }\n ));\n};\nvar Checkmark = (props) => {\n var _a;\n const fg = (_a = props.fgColor) != null ? _a : \"currentColor\";\n return /* @__PURE__ */ React5.createElement(\"svg\", { viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, /* @__PURE__ */ React5.createElement(\n \"path\",\n {\n d: \"M19 6L10.3802 17L5.34071 11.8758\",\n vectorEffect: \"non-scaling-stroke\",\n stroke: fg,\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n ));\n};\nfunction useDebouncedMemo(factory, deps, time) {\n const [state, setState] = React5.useState(factory);\n const mountedRef = React5.useRef(true);\n React5.useEffect(\n () => () => {\n mountedRef.current = false;\n },\n []\n );\n const debouncedSetState = React5.useRef(\n debounce((x) => {\n if (mountedRef.current) {\n setState(x);\n }\n }, time)\n );\n React5.useLayoutEffect(() => {\n if (mountedRef.current) {\n debouncedSetState.current(() => factory());\n }\n }, deps);\n return state;\n}\nvar rtlRange = \"\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC\";\nvar ltrRange = \"A-Za-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C\\uFE00-\\uFE6F\\uFEFD-\\uFFFF\";\nvar rtl = new RegExp(\"^[^\" + ltrRange + \"]*[\" + rtlRange + \"]\");\nvar ltr = new RegExp(\"^[^\" + rtlRange + \"]*[\" + ltrRange + \"]\");\nfunction direction(value) {\n return rtl.test(value) ? \"rtl\" : ltr.test(value) ? \"ltr\" : \"neutral\";\n}\nvar scrollbarWidthCache = void 0;\nfunction getScrollBarWidth() {\n if (scrollbarWidthCache !== void 0)\n return scrollbarWidthCache;\n const inner = document.createElement(\"p\");\n inner.style.width = \"100%\";\n inner.style.height = \"200px\";\n const outer = document.createElement(\"div\");\n outer.id = \"testScrollbar\";\n outer.style.position = \"absolute\";\n outer.style.top = \"0px\";\n outer.style.left = \"0px\";\n outer.style.visibility = \"hidden\";\n outer.style.width = \"200px\";\n outer.style.height = \"150px\";\n outer.style.overflow = \"hidden\";\n outer.append(inner);\n document.body.append(outer);\n const w1 = inner.offsetWidth;\n outer.style.overflow = \"scroll\";\n let w2 = inner.offsetWidth;\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n outer.remove();\n scrollbarWidthCache = w1 - w2;\n return scrollbarWidthCache;\n}\nvar empty = Symbol();\nfunction useStateWithReactiveInput(inputState) {\n const inputStateRef = React5.useRef([empty, inputState]);\n if (inputStateRef.current[1] !== inputState) {\n inputStateRef.current[0] = inputState;\n }\n inputStateRef.current[1] = inputState;\n const [state, setState] = React5.useState(inputState);\n const [, forceRender] = React5.useState();\n const setStateOuter = React5.useCallback((nv) => {\n const s = inputStateRef.current[0];\n if (s !== empty) {\n nv = typeof nv === \"function\" ? nv(s) : nv;\n if (nv === s)\n return;\n }\n if (s !== empty)\n forceRender({});\n setState((pv) => {\n if (typeof nv === \"function\") {\n return nv(s === empty ? pv : s);\n }\n return nv;\n });\n inputStateRef.current[0] = empty;\n }, []);\n const onEmpty = React5.useCallback(() => {\n inputStateRef.current[0] = empty;\n forceRender({});\n }, []);\n return [inputStateRef.current[0] === empty ? state : inputStateRef.current[0], setStateOuter, onEmpty];\n}\nfunction makeAccessibilityStringForArray(arr) {\n if (arr.length === 0) {\n return \"\";\n }\n let index = 0;\n let count = 0;\n for (const str of arr) {\n count += str.length;\n if (count > 1e4)\n break;\n index++;\n }\n return arr.slice(0, index).join(\", \");\n}\n\n// src/data-grid/data-grid-lib.ts\nimport React6 from \"react\";\nimport { split as splitText, clearCache } from \"canvas-hypertxt\";\nfunction useMappedColumns(columns, freezeColumns) {\n return React6.useMemo(\n () => columns.map((c, i) => ({\n ...c,\n sourceIndex: i,\n sticky: i < freezeColumns\n })),\n [columns, freezeColumns]\n );\n}\nfunction isGroupEqual(left, right) {\n return (left != null ? left : \"\") === (right != null ? right : \"\");\n}\nfunction cellIsSelected(location, cell, selection) {\n if ((selection == null ? void 0 : selection.current) === void 0)\n return false;\n const [col, row] = selection.current.cell;\n const [cellCol, cellRow] = location;\n if (cellRow !== row)\n return false;\n if (cell.span === void 0) {\n return col === cellCol;\n }\n return col >= cell.span[0] && col <= cell.span[1];\n}\nfunction cellIsInRect(location, cell, rect) {\n const startX = rect.x;\n const endX = rect.x + rect.width - 1;\n const startY = rect.y;\n const endY = rect.y + rect.height - 1;\n const [cellCol, cellRow] = location;\n if (cellRow < startY || cellRow > endY)\n return false;\n if (cell.span === void 0) {\n return cellCol >= startX && cellCol <= endX;\n }\n const [spanStart, spanEnd] = cell.span;\n return spanStart >= startX && spanStart <= endX || spanEnd >= startX && spanStart <= endX || spanStart < startX && spanEnd > endX;\n}\nfunction cellIsInRange(location, cell, selection) {\n let result = 0;\n if (selection.current === void 0)\n return result;\n if (cellIsInRect(location, cell, selection.current.range))\n result++;\n for (const r of selection.current.rangeStack) {\n if (cellIsInRect(location, cell, r)) {\n result++;\n }\n }\n return result;\n}\nfunction remapForDnDState(columns, dndState) {\n let mappedCols = columns;\n if (dndState !== void 0) {\n let writable = [...columns];\n const temp = mappedCols[dndState.src];\n if (dndState.src > dndState.dest) {\n writable.splice(dndState.src, 1);\n writable.splice(dndState.dest, 0, temp);\n } else {\n writable.splice(dndState.dest + 1, 0, temp);\n writable.splice(dndState.src, 1);\n }\n writable = writable.map((c, i) => ({\n ...c,\n sticky: columns[i].sticky\n }));\n mappedCols = writable;\n }\n return mappedCols;\n}\nfunction getStickyWidth(columns, dndState) {\n let result = 0;\n const remapped = remapForDnDState(columns, dndState);\n for (let i = 0; i < remapped.length; i++) {\n const c = remapped[i];\n if (c.sticky)\n result += c.width;\n else\n break;\n }\n return result;\n}\nfunction getEffectiveColumns(columns, cellXOffset, width, dndState, tx) {\n const mappedCols = remapForDnDState(columns, dndState);\n const sticky = [];\n for (const c of mappedCols) {\n if (c.sticky) {\n sticky.push(c);\n } else {\n break;\n }\n }\n if (sticky.length > 0) {\n for (const c of sticky) {\n width -= c.width;\n }\n }\n let endIndex = cellXOffset;\n let curX = tx != null ? tx : 0;\n while (curX <= width && endIndex < mappedCols.length) {\n curX += mappedCols[endIndex].width;\n endIndex++;\n }\n for (let i = cellXOffset; i < endIndex; i++) {\n const c = mappedCols[i];\n if (!c.sticky) {\n sticky.push(c);\n }\n }\n return sticky;\n}\nfunction getColumnIndexForX(targetX, effectiveColumns, translateX) {\n let x = 0;\n for (const c of effectiveColumns) {\n const cx = c.sticky ? x : x + (translateX != null ? translateX : 0);\n if (targetX <= cx + c.width) {\n return c.sourceIndex;\n }\n x += c.width;\n }\n return -1;\n}\nfunction getRowIndexForY(targetY, height, hasGroups, headerHeight, groupHeaderHeight, rows, rowHeight, cellYOffset, translateY, lastRowSticky) {\n const totalHeaderHeight = headerHeight + groupHeaderHeight;\n if (hasGroups && targetY <= groupHeaderHeight)\n return -2;\n if (targetY <= totalHeaderHeight)\n return -1;\n const lastRowHeight = typeof rowHeight === \"number\" ? rowHeight : rowHeight(rows - 1);\n if (lastRowSticky && targetY > height - lastRowHeight) {\n return rows - 1;\n }\n const effectiveRows = rows - (lastRowSticky ? 1 : 0);\n const ty = targetY - (translateY != null ? translateY : 0);\n if (typeof rowHeight === \"number\") {\n const target = Math.floor((ty - totalHeaderHeight) / rowHeight) + cellYOffset;\n if (target >= effectiveRows)\n return void 0;\n return target;\n } else {\n let curY = totalHeaderHeight;\n for (let i = cellYOffset; i < effectiveRows; i++) {\n const rh = rowHeight(i);\n if (ty <= curY + rh)\n return i;\n curY += rh;\n }\n return void 0;\n }\n}\nvar metricsSize = 0;\nvar metricsCache = {};\nvar isSSR = typeof window === \"undefined\";\nasync function clearCacheOnLoad() {\n var _a;\n if (isSSR || ((_a = document == null ? void 0 : document.fonts) == null ? void 0 : _a.ready) === void 0)\n return;\n await document.fonts.ready;\n metricsSize = 0;\n metricsCache = {};\n clearCache();\n}\nvoid clearCacheOnLoad();\nfunction makeCacheKey(s, ctx, baseline, font) {\n return `${s}_${font != null ? font : ctx.font}_${baseline}`;\n}\nfunction measureTextCached(s, ctx, font) {\n const key = makeCacheKey(s, ctx, \"middle\", font);\n let metrics = metricsCache[key];\n if (metrics === void 0) {\n metrics = ctx.measureText(s);\n metricsCache[key] = metrics;\n metricsSize++;\n }\n if (metricsSize > 1e4) {\n metricsCache = {};\n metricsSize = 0;\n }\n return metrics;\n}\nfunction getMiddleCenterBias(ctx, font) {\n if (typeof font !== \"string\") {\n font = `${font.baseFontStyle} ${font.fontFamily}`;\n }\n return getMiddleCenterBiasInner(ctx, font);\n}\nfunction loadMetric(ctx, baseline) {\n const sample = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n ctx.save();\n ctx.textBaseline = baseline;\n const result = ctx.measureText(sample);\n ctx.restore();\n return result;\n}\nvar biasCache = [];\nfunction getMiddleCenterBiasInner(ctx, font) {\n for (const x of biasCache) {\n if (x.key === font)\n return x.val;\n }\n const alphabeticMetrics = loadMetric(ctx, \"alphabetic\");\n const middleMetrics = loadMetric(ctx, \"middle\");\n const bias = -(middleMetrics.actualBoundingBoxDescent - alphabeticMetrics.actualBoundingBoxDescent) + alphabeticMetrics.actualBoundingBoxAscent / 2;\n biasCache.push({\n key: font,\n val: bias\n });\n return bias;\n}\nfunction drawWithLastUpdate(args, lastUpdate, frameTime, lastPrep, draw) {\n const { ctx, rect, theme } = args;\n let progress = Number.MAX_SAFE_INTEGER;\n const animTime = 500;\n if (lastUpdate !== void 0) {\n progress = frameTime - lastUpdate;\n if (progress < animTime) {\n const fade = 1 - progress / animTime;\n ctx.globalAlpha = fade;\n ctx.fillStyle = theme.bgSearchResult;\n ctx.fillRect(rect.x, rect.y, rect.width, rect.height);\n ctx.globalAlpha = 1;\n if (lastPrep !== void 0) {\n lastPrep.fillStyle = theme.bgSearchResult;\n }\n }\n }\n draw();\n return progress < animTime;\n}\nfunction prepTextCell(args, lastPrep, overrideColor) {\n const { ctx, theme } = args;\n const result = lastPrep != null ? lastPrep : {};\n const newFill = overrideColor != null ? overrideColor : theme.textDark;\n if (newFill !== result.fillStyle) {\n ctx.fillStyle = newFill;\n result.fillStyle = newFill;\n }\n return result;\n}\nfunction drawTextCellExternal(args, data, contentAlign) {\n const { rect, ctx, theme } = args;\n ctx.fillStyle = theme.textDark;\n drawTextCell(\n {\n ctx,\n rect,\n theme\n },\n data,\n contentAlign\n );\n}\nfunction drawSingleTextLine(ctx, data, x, y, w, h, bias, theme, contentAlign) {\n if (contentAlign === \"right\") {\n ctx.fillText(data, x + w - (theme.cellHorizontalPadding + 0.5), y + h / 2 + bias);\n } else if (contentAlign === \"center\") {\n ctx.fillText(data, x + w / 2, y + h / 2 + bias);\n } else {\n ctx.fillText(data, x + theme.cellHorizontalPadding + 0.5, y + h / 2 + bias);\n }\n}\nfunction getEmHeight(ctx, fontStyle) {\n const textMetrics = measureTextCached(\"ABCi09jgqpy\", ctx, fontStyle);\n return textMetrics.actualBoundingBoxAscent + textMetrics.actualBoundingBoxDescent;\n}\nfunction drawTextCell(args, data, contentAlign, allowWrapping, hyperWrapping) {\n const { ctx, rect, theme } = args;\n const { x, y, width: w, height: h } = rect;\n allowWrapping = allowWrapping != null ? allowWrapping : false;\n if (!allowWrapping) {\n if (data.includes(\"\\n\")) {\n data = data.split(/\\r?\\n/)[0];\n }\n const max = w / 4;\n if (data.length > max) {\n data = data.slice(0, max);\n }\n }\n const bias = getMiddleCenterBias(ctx, theme);\n const isRtl = direction(data) === \"rtl\";\n if (contentAlign === void 0 && isRtl) {\n contentAlign = \"right\";\n }\n if (isRtl) {\n ctx.direction = \"rtl\";\n }\n if (data.length > 0) {\n let changed = false;\n if (contentAlign === \"right\") {\n ctx.textAlign = \"right\";\n changed = true;\n } else if (contentAlign !== void 0 && contentAlign !== \"left\") {\n ctx.textAlign = contentAlign;\n changed = true;\n }\n if (!allowWrapping) {\n drawSingleTextLine(ctx, data, x, y, w, h, bias, theme, contentAlign);\n } else {\n const fontStyle = `${theme.fontFamily} ${theme.baseFontStyle}`;\n const split = splitText(ctx, data, fontStyle, w - theme.cellHorizontalPadding * 2, hyperWrapping != null ? hyperWrapping : false);\n const emHeight = getEmHeight(ctx, fontStyle);\n const lineHeight = theme.lineHeight * emHeight;\n const actualHeight = emHeight + lineHeight * (split.length - 1);\n const mustClip = actualHeight + theme.cellVerticalPadding > h;\n if (mustClip) {\n ctx.save();\n ctx.rect(x, y, w, h);\n ctx.clip();\n }\n const optimalY = y + h / 2 - actualHeight / 2;\n let drawY = Math.max(y + theme.cellVerticalPadding, optimalY);\n for (const line of split) {\n drawSingleTextLine(ctx, line, x, drawY, w, emHeight, bias, theme, contentAlign);\n drawY += lineHeight;\n if (drawY > y + h)\n break;\n }\n if (mustClip) {\n ctx.restore();\n }\n }\n if (changed) {\n ctx.textAlign = \"start\";\n }\n if (isRtl) {\n ctx.direction = \"inherit\";\n }\n }\n}\nfunction drawNewRowCell(args, data, icon) {\n const { ctx, rect, hoverAmount, theme, spriteManager } = args;\n const { x, y, width: w, height: h } = rect;\n ctx.beginPath();\n ctx.globalAlpha = hoverAmount;\n ctx.rect(x, y, w, h);\n ctx.fillStyle = theme.bgHeaderHovered;\n ctx.fill();\n ctx.globalAlpha = 1;\n ctx.beginPath();\n const alwaysShowIcon = data !== \"\";\n let textX = 0;\n if (icon !== void 0) {\n const padding = 8;\n const size = h - padding;\n const px = x + padding / 2;\n const py = y + padding / 2;\n spriteManager.drawSprite(icon, \"normal\", ctx, px, py, size, theme, alwaysShowIcon ? 1 : hoverAmount);\n textX = size;\n } else {\n textX = 24;\n const finalLineSize = 12;\n const lineSize = alwaysShowIcon ? finalLineSize : hoverAmount * finalLineSize;\n const xTranslate = alwaysShowIcon ? 0 : (1 - hoverAmount) * finalLineSize * 0.5;\n const padPlus = theme.cellHorizontalPadding + 4;\n if (lineSize > 0) {\n ctx.moveTo(x + padPlus + xTranslate, y + h / 2);\n ctx.lineTo(x + padPlus + xTranslate + lineSize, y + h / 2);\n ctx.moveTo(x + padPlus + xTranslate + lineSize * 0.5, y + h / 2 - lineSize * 0.5);\n ctx.lineTo(x + padPlus + xTranslate + lineSize * 0.5, y + h / 2 + lineSize * 0.5);\n ctx.lineWidth = 2;\n ctx.strokeStyle = theme.bgIconHeader;\n ctx.lineCap = \"round\";\n ctx.stroke();\n }\n }\n ctx.fillStyle = theme.textMedium;\n ctx.fillText(data, textX + x + theme.cellHorizontalPadding + 0.5, y + h / 2 + getMiddleCenterBias(ctx, theme));\n ctx.beginPath();\n}\nfunction drawCheckbox(ctx, theme, checked, x, y, width, height, highlighted, hoverX = -20, hoverY = -20, maxSize = 32, alignment = \"center\") {\n const centerY = Math.floor(y + height / 2);\n const rectBordRadius = 4;\n const checkBoxWidth = getSquareWidth(maxSize, height, theme.cellVerticalPadding);\n const checkBoxHalfWidth = checkBoxWidth / 2;\n const posX = getSquareXPosFromAlign(alignment, x, width, theme.cellHorizontalPadding, checkBoxWidth);\n const bb = getSquareBB(posX, centerY, checkBoxWidth);\n const hovered = pointIsWithinBB(x + hoverX, y + hoverY, bb);\n switch (checked) {\n case true: {\n ctx.beginPath();\n roundedRect(\n ctx,\n posX - checkBoxWidth / 2,\n centerY - checkBoxWidth / 2,\n checkBoxWidth,\n checkBoxWidth,\n rectBordRadius\n );\n ctx.fillStyle = highlighted ? theme.accentColor : theme.textMedium;\n ctx.fill();\n ctx.beginPath();\n ctx.moveTo(\n posX - checkBoxHalfWidth + checkBoxWidth / 4.23,\n centerY - checkBoxHalfWidth + checkBoxWidth / 1.97\n );\n ctx.lineTo(\n posX - checkBoxHalfWidth + checkBoxWidth / 2.42,\n centerY - checkBoxHalfWidth + checkBoxWidth / 1.44\n );\n ctx.lineTo(\n posX - checkBoxHalfWidth + checkBoxWidth / 1.29,\n centerY - checkBoxHalfWidth + checkBoxWidth / 3.25\n );\n ctx.strokeStyle = theme.bgCell;\n ctx.lineJoin = \"round\";\n ctx.lineCap = \"round\";\n ctx.lineWidth = 1.9;\n ctx.stroke();\n break;\n }\n case BooleanEmpty:\n case false: {\n ctx.beginPath();\n roundedRect(\n ctx,\n posX - checkBoxWidth / 2 + 0.5,\n centerY - checkBoxWidth / 2 + 0.5,\n checkBoxWidth - 1,\n checkBoxWidth - 1,\n rectBordRadius\n );\n ctx.lineWidth = 1;\n ctx.strokeStyle = hovered ? theme.textDark : theme.textMedium;\n ctx.stroke();\n break;\n }\n case BooleanIndeterminate: {\n ctx.beginPath();\n roundedRect(\n ctx,\n posX - checkBoxWidth / 2,\n centerY - checkBoxWidth / 2,\n checkBoxWidth,\n checkBoxWidth,\n rectBordRadius\n );\n ctx.fillStyle = hovered ? theme.textMedium : theme.textLight;\n ctx.fill();\n ctx.beginPath();\n ctx.moveTo(posX - checkBoxWidth / 3, centerY);\n ctx.lineTo(posX + checkBoxWidth / 3, centerY);\n ctx.strokeStyle = theme.bgCell;\n ctx.lineCap = \"round\";\n ctx.lineWidth = 1.9;\n ctx.stroke();\n break;\n }\n default:\n assertNever(checked);\n }\n}\nfunction prepMarkerRowCell(args, lastPrep) {\n const { ctx, theme } = args;\n const newFont = `9px ${theme.fontFamily}`;\n const result = lastPrep != null ? lastPrep : {};\n if ((result == null ? void 0 : result.font) !== newFont) {\n ctx.font = newFont;\n result.font = newFont;\n }\n result.deprep = deprepMarkerRowCell;\n ctx.textAlign = \"center\";\n return result;\n}\nfunction deprepMarkerRowCell(args) {\n const { ctx } = args;\n ctx.textAlign = \"start\";\n}\nfunction drawMarkerRowCell(args, index, checked, markerKind, drawHandle) {\n const { ctx, rect, hoverAmount, theme } = args;\n const { x, y, width, height } = rect;\n const checkedboxAlpha = checked ? 1 : markerKind === \"checkbox-visible\" ? 0.6 + 0.4 * hoverAmount : hoverAmount;\n if (markerKind !== \"number\" && checkedboxAlpha > 0) {\n ctx.globalAlpha = checkedboxAlpha;\n const offsetAmount = 7 * (checked ? hoverAmount : 1);\n drawCheckbox(\n ctx,\n theme,\n checked,\n drawHandle ? x + offsetAmount : x,\n y,\n drawHandle ? width - offsetAmount : width,\n height,\n true,\n void 0,\n void 0,\n 18\n );\n if (drawHandle) {\n ctx.globalAlpha = hoverAmount;\n ctx.beginPath();\n for (const xOffset of [3, 6]) {\n for (const yOffset of [-5, -1, 3]) {\n ctx.rect(x + xOffset, y + height / 2 + yOffset, 2, 2);\n }\n }\n ctx.fillStyle = theme.textLight;\n ctx.fill();\n ctx.beginPath();\n }\n ctx.globalAlpha = 1;\n }\n if (markerKind === \"number\" || markerKind === \"both\" && !checked) {\n const text = index.toString();\n const fontStyle = `${theme.markerFontStyle} ${theme.fontFamily}`;\n const start = x + width / 2;\n if (markerKind === \"both\" && hoverAmount !== 0) {\n ctx.globalAlpha = 1 - hoverAmount;\n }\n ctx.fillStyle = theme.textLight;\n ctx.font = fontStyle;\n ctx.fillText(text, start, y + height / 2 + getMiddleCenterBias(ctx, fontStyle));\n if (hoverAmount !== 0) {\n ctx.globalAlpha = 1;\n }\n }\n}\nfunction drawProtectedCell(args) {\n const { ctx, theme, rect } = args;\n const { x, y, height: h } = rect;\n ctx.beginPath();\n const radius = 2.5;\n let xStart = x + theme.cellHorizontalPadding + radius;\n const center = y + h / 2;\n const p = Math.cos(degreesToRadians(30)) * radius;\n const q = Math.sin(degreesToRadians(30)) * radius;\n for (let i = 0; i < 12; i++) {\n ctx.moveTo(xStart, center - radius);\n ctx.lineTo(xStart, center + radius);\n ctx.moveTo(xStart + p, center - q);\n ctx.lineTo(xStart - p, center + q);\n ctx.moveTo(xStart - p, center - q);\n ctx.lineTo(xStart + p, center + q);\n xStart += 8;\n }\n ctx.lineWidth = 1.1;\n ctx.lineCap = \"square\";\n ctx.strokeStyle = theme.textLight;\n ctx.stroke();\n}\nfunction roundedRect(ctx, x, y, width, height, radius) {\n if (typeof radius === \"number\") {\n radius = { tl: radius, tr: radius, br: radius, bl: radius };\n }\n radius = {\n tl: Math.min(radius.tl, height / 2, width / 2),\n tr: Math.min(radius.tr, height / 2, width / 2),\n bl: Math.min(radius.bl, height / 2, width / 2),\n br: Math.min(radius.br, height / 2, width / 2)\n };\n ctx.moveTo(x + radius.tl, y);\n ctx.arcTo(x + width, y, x + width, y + radius.tr, radius.tr);\n ctx.arcTo(x + width, y + height, x + width - radius.br, y + height, radius.br);\n ctx.arcTo(x, y + height, x, y + height - radius.bl, radius.bl);\n ctx.arcTo(x, y, x + radius.tl, y, radius.tl);\n}\nfunction drawBoolean(args, data, canEdit, maxSize) {\n if (!canEdit && data === BooleanEmpty) {\n return;\n }\n const {\n ctx,\n hoverAmount,\n theme,\n rect,\n highlighted,\n hoverX,\n hoverY,\n cell: { contentAlign }\n } = args;\n const { x, y, width: w, height: h } = rect;\n const hoverEffect = 0.35;\n let alpha = canEdit ? 1 - hoverEffect + hoverEffect * hoverAmount : 0.4;\n if (data === BooleanEmpty) {\n alpha *= hoverAmount;\n }\n if (alpha === 0) {\n return;\n }\n ctx.globalAlpha = alpha;\n drawCheckbox(ctx, theme, data, x, y, w, h, highlighted, hoverX, hoverY, maxSize, contentAlign);\n ctx.globalAlpha = 1;\n}\nvar itemMargin = 4;\nfunction drawBubbles(args, data) {\n const { rect, theme, ctx, highlighted } = args;\n const { x, y, width: w, height: h } = rect;\n const bubbleHeight = 20;\n const bubblePad = 8;\n const bubbleMargin = itemMargin;\n let renderX = x + theme.cellHorizontalPadding;\n const renderBoxes = [];\n for (const s of data) {\n if (renderX > x + w)\n break;\n const textWidth = measureTextCached(s, ctx, `${theme.baseFontStyle} ${theme.fontFamily}`).width;\n renderBoxes.push({\n x: renderX,\n width: textWidth\n });\n renderX += textWidth + bubblePad * 2 + bubbleMargin;\n }\n ctx.beginPath();\n for (const rectInfo of renderBoxes) {\n roundedRect(\n ctx,\n rectInfo.x,\n y + (h - bubbleHeight) / 2,\n rectInfo.width + bubblePad * 2,\n bubbleHeight,\n bubbleHeight / 2\n );\n }\n ctx.fillStyle = highlighted ? theme.bgBubbleSelected : theme.bgBubble;\n ctx.fill();\n for (const [i, rectInfo] of renderBoxes.entries()) {\n ctx.beginPath();\n ctx.fillStyle = theme.textBubble;\n ctx.fillText(data[i], rectInfo.x + bubblePad, y + h / 2 + getMiddleCenterBias(ctx, theme));\n }\n}\nvar drilldownCache = {};\nfunction getAndCacheDrilldownBorder(bgCell, border, height) {\n const dpr = Math.ceil(window.devicePixelRatio);\n const shadowBlur = 5;\n const targetHeight = height - shadowBlur * 2;\n const middleWidth = 4;\n const rounding = 6;\n const innerHeight = height * dpr;\n const sideWidth = rounding + shadowBlur;\n const targetWidth = rounding * 3;\n const innerWidth = (targetWidth + shadowBlur * 2) * dpr;\n const key = `${bgCell},${border},${dpr},${height}`;\n if (drilldownCache[key] !== void 0) {\n return {\n el: drilldownCache[key],\n height: innerHeight,\n width: innerWidth,\n middleWidth: middleWidth * dpr,\n sideWidth: sideWidth * dpr,\n padding: shadowBlur * dpr,\n dpr\n };\n }\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (ctx === null)\n return null;\n canvas.width = innerWidth;\n canvas.height = innerHeight;\n ctx.scale(dpr, dpr);\n drilldownCache[key] = canvas;\n const trueRounding = Math.min(rounding, targetWidth / 2, targetHeight / 2);\n ctx.beginPath();\n roundedRect(ctx, shadowBlur, shadowBlur, targetWidth, targetHeight, trueRounding);\n ctx.shadowColor = \"rgba(24, 25, 34, 0.4)\";\n ctx.shadowBlur = 1;\n ctx.fillStyle = bgCell;\n ctx.fill();\n ctx.shadowColor = \"rgba(24, 25, 34, 0.3)\";\n ctx.shadowOffsetY = 1;\n ctx.shadowBlur = 5;\n ctx.fillStyle = bgCell;\n ctx.fill();\n ctx.shadowOffsetY = 0;\n ctx.shadowBlur = 0;\n ctx.shadowBlur = 0;\n ctx.beginPath();\n roundedRect(ctx, shadowBlur + 0.5, shadowBlur + 0.5, targetWidth, targetHeight, trueRounding);\n ctx.strokeStyle = border;\n ctx.lineWidth = 1;\n ctx.stroke();\n return {\n el: canvas,\n height: innerHeight,\n width: innerWidth,\n sideWidth: sideWidth * dpr,\n middleWidth: rounding * dpr,\n padding: shadowBlur * dpr,\n dpr\n };\n}\nfunction drawDrilldownCell(args, data) {\n const { rect, theme, ctx, imageLoader, col, row } = args;\n const { x, width: w } = rect;\n const font = `${theme.baseFontStyle} ${theme.fontFamily}`;\n const emHeight = getEmHeight(ctx, font);\n const h = Math.min(rect.height, Math.max(16, Math.ceil(emHeight * theme.lineHeight) * 2));\n const y = Math.floor(rect.y + (rect.height - h) / 2);\n const bubbleHeight = h - 10;\n const bubblePad = 8;\n const bubbleMargin = itemMargin;\n let renderX = x + theme.cellHorizontalPadding;\n const tileMap = getAndCacheDrilldownBorder(theme.bgCell, theme.drilldownBorder, h);\n const renderBoxes = [];\n for (const el of data) {\n if (renderX > x + w)\n break;\n const textMetrics = measureTextCached(el.text, ctx, font);\n const textWidth = textMetrics.width;\n let imgWidth = 0;\n if (el.img !== void 0) {\n const img = imageLoader.loadOrGetImage(el.img, col, row);\n if (img !== void 0) {\n imgWidth = bubbleHeight - 8 + 4;\n }\n }\n const renderWidth = textWidth + imgWidth + bubblePad * 2;\n renderBoxes.push({\n x: renderX,\n width: renderWidth\n });\n renderX += renderWidth + bubbleMargin;\n }\n if (tileMap !== null) {\n const { el, height, middleWidth, sideWidth, width, dpr, padding } = tileMap;\n const outerSideWidth = sideWidth / dpr;\n const outerPadding = padding / dpr;\n for (const rectInfo of renderBoxes) {\n const rx = Math.floor(rectInfo.x);\n const rw = Math.floor(rectInfo.width);\n const outerMiddleWidth = rw - (outerSideWidth - outerPadding) * 2;\n ctx.imageSmoothingEnabled = false;\n ctx.drawImage(el, 0, 0, sideWidth, height, rx - outerPadding, y, outerSideWidth, h);\n if (outerMiddleWidth > 0)\n ctx.drawImage(\n el,\n sideWidth,\n 0,\n middleWidth,\n height,\n rx + (outerSideWidth - outerPadding),\n y,\n outerMiddleWidth,\n h\n );\n ctx.drawImage(\n el,\n width - sideWidth,\n 0,\n sideWidth,\n height,\n rx + rw - (outerSideWidth - outerPadding),\n y,\n outerSideWidth,\n h\n );\n ctx.imageSmoothingEnabled = true;\n }\n }\n ctx.beginPath();\n for (const [i, rectInfo] of renderBoxes.entries()) {\n const d = data[i];\n let drawX = rectInfo.x + bubblePad;\n if (d.img !== void 0) {\n const img = imageLoader.loadOrGetImage(d.img, col, row);\n if (img !== void 0) {\n const imgSize = bubbleHeight - 8;\n let srcX = 0;\n let srcY = 0;\n let srcWidth = img.width;\n let srcHeight = img.height;\n if (srcWidth > srcHeight) {\n srcX += (srcWidth - srcHeight) / 2;\n srcWidth = srcHeight;\n } else if (srcHeight > srcWidth) {\n srcY += (srcHeight - srcWidth) / 2;\n srcHeight = srcWidth;\n }\n ctx.beginPath();\n roundedRect(ctx, drawX, y + h / 2 - imgSize / 2, imgSize, imgSize, 3);\n ctx.save();\n ctx.clip();\n ctx.drawImage(img, srcX, srcY, srcWidth, srcHeight, drawX, y + h / 2 - imgSize / 2, imgSize, imgSize);\n ctx.restore();\n drawX += imgSize + 4;\n }\n }\n ctx.beginPath();\n ctx.fillStyle = theme.textBubble;\n ctx.fillText(d.text, drawX, y + h / 2 + getMiddleCenterBias(ctx, theme));\n }\n}\nfunction drawImage(args, data, rounding = 4, contentAlign) {\n const { rect, col, row, theme, ctx, imageLoader } = args;\n const { x, y, height: h, width: w } = rect;\n const imgHeight = h - theme.cellVerticalPadding * 2;\n const images = [];\n let totalWidth = 0;\n for (let index = 0; index < data.length; index++) {\n const i = data[index];\n if (i.length === 0)\n continue;\n const img = imageLoader.loadOrGetImage(i, col, row);\n if (img !== void 0) {\n images[index] = img;\n const imgWidth = img.width * (imgHeight / img.height);\n totalWidth += imgWidth + itemMargin;\n }\n }\n if (totalWidth === 0)\n return;\n totalWidth -= itemMargin;\n let drawX = x + theme.cellHorizontalPadding;\n if (contentAlign === \"right\")\n drawX = Math.floor(x + w - theme.cellHorizontalPadding - totalWidth);\n else if (contentAlign === \"center\")\n drawX = Math.floor(x + w / 2 - totalWidth / 2);\n for (const img of images) {\n if (img === void 0)\n continue;\n const imgWidth = img.width * (imgHeight / img.height);\n if (rounding > 0) {\n roundedRect(ctx, drawX, y + theme.cellVerticalPadding, imgWidth, imgHeight, rounding);\n ctx.save();\n ctx.clip();\n }\n ctx.drawImage(img, drawX, y + theme.cellVerticalPadding, imgWidth, imgHeight);\n if (rounding > 0) {\n ctx.restore();\n }\n drawX += imgWidth + itemMargin;\n }\n}\nfunction roundedPoly(ctx, points, radiusAll) {\n const asVec = function(p, pp) {\n const vx = pp.x - p.x;\n const vy = pp.y - p.y;\n const vlen = Math.sqrt(vx * vx + vy * vy);\n const vnx = vx / vlen;\n const vny = vy / vlen;\n return {\n x: vx,\n y: pp.y - p.y,\n len: vlen,\n nx: vnx,\n ny: vny,\n ang: Math.atan2(vny, vnx)\n };\n };\n let radius;\n const len = points.length;\n let p1 = points[len - 1];\n for (let i = 0; i < len; i++) {\n let p2 = points[i % len];\n const p3 = points[(i + 1) % len];\n const v1 = asVec(p2, p1);\n const v2 = asVec(p2, p3);\n const sinA = v1.nx * v2.ny - v1.ny * v2.nx;\n const sinA90 = v1.nx * v2.nx - v1.ny * -v2.ny;\n let angle = Math.asin(sinA < -1 ? -1 : sinA > 1 ? 1 : sinA);\n let radDirection = 1;\n let drawDirection = false;\n if (sinA90 < 0) {\n if (angle < 0) {\n angle = Math.PI + angle;\n } else {\n angle = Math.PI - angle;\n radDirection = -1;\n drawDirection = true;\n }\n } else {\n if (angle > 0) {\n radDirection = -1;\n drawDirection = true;\n }\n }\n radius = p2.radius !== void 0 ? p2.radius : radiusAll;\n const halfAngle = angle / 2;\n let lenOut = Math.abs(Math.cos(halfAngle) * radius / Math.sin(halfAngle));\n let cRadius;\n if (lenOut > Math.min(v1.len / 2, v2.len / 2)) {\n lenOut = Math.min(v1.len / 2, v2.len / 2);\n cRadius = Math.abs(lenOut * Math.sin(halfAngle) / Math.cos(halfAngle));\n } else {\n cRadius = radius;\n }\n let x = p2.x + v2.nx * lenOut;\n let y = p2.y + v2.ny * lenOut;\n x += -v2.ny * cRadius * radDirection;\n y += v2.nx * cRadius * radDirection;\n ctx.arc(\n x,\n y,\n cRadius,\n v1.ang + Math.PI / 2 * radDirection,\n v2.ang - Math.PI / 2 * radDirection,\n drawDirection\n );\n p1 = p2;\n p2 = p3;\n }\n ctx.closePath();\n}\nfunction computeBounds(col, row, width, height, groupHeaderHeight, totalHeaderHeight, cellXOffset, cellYOffset, translateX, translateY, rows, freezeColumns, lastRowSticky, mappedColumns, rowHeight) {\n const result = {\n x: 0,\n y: totalHeaderHeight + translateY,\n width: 0,\n height: 0\n };\n const headerHeight = totalHeaderHeight - groupHeaderHeight;\n if (col >= freezeColumns) {\n const dir = cellXOffset > col ? -1 : 1;\n const freezeWidth = getStickyWidth(mappedColumns);\n result.x += freezeWidth + translateX;\n for (let i = cellXOffset; i !== col; i += dir) {\n result.x += mappedColumns[dir === 1 ? i : i - 1].width * dir;\n }\n } else {\n for (let i = 0; i < col; i++) {\n result.x += mappedColumns[i].width;\n }\n }\n result.width = mappedColumns[col].width + 1;\n if (row === -1) {\n result.y = groupHeaderHeight;\n result.height = headerHeight;\n } else if (row === -2) {\n result.y = 0;\n result.height = groupHeaderHeight;\n let start = col;\n const group = mappedColumns[col].group;\n const sticky = mappedColumns[col].sticky;\n while (start > 0 && isGroupEqual(mappedColumns[start - 1].group, group) && mappedColumns[start - 1].sticky === sticky) {\n const c = mappedColumns[start - 1];\n result.x -= c.width;\n result.width += c.width;\n start--;\n }\n let end = col;\n while (end + 1 < mappedColumns.length && isGroupEqual(mappedColumns[end + 1].group, group) && mappedColumns[end + 1].sticky === sticky) {\n const c = mappedColumns[end + 1];\n result.width += c.width;\n end++;\n }\n if (!sticky) {\n const freezeWidth = getStickyWidth(mappedColumns);\n const clip = result.x - freezeWidth;\n if (clip < 0) {\n result.x -= clip;\n result.width += clip;\n }\n if (result.x + result.width > width) {\n result.width = width - result.x;\n }\n }\n } else if (lastRowSticky && row === rows - 1) {\n const stickyHeight = typeof rowHeight === \"number\" ? rowHeight : rowHeight(row);\n result.y = height - stickyHeight;\n result.height = stickyHeight;\n } else {\n const dir = cellYOffset > row ? -1 : 1;\n if (typeof rowHeight === \"number\") {\n const delta = row - cellYOffset;\n result.y += delta * rowHeight;\n } else {\n for (let r = cellYOffset; r !== row; r += dir) {\n result.y += rowHeight(r) * dir;\n }\n }\n result.height = (typeof rowHeight === \"number\" ? rowHeight : rowHeight(row)) + 1;\n }\n return result;\n}\n\n// src/data-grid/sprites.ts\nvar iconHead = `<svg width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">`;\nvar headerRowID = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}<rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/><path d=\"M15.75 4h-1.5a.25.25 0 0 0-.177.074L9.308 8.838a3.75 3.75 0 1 0 1.854 1.854l1.155-1.157.967.322a.5.5 0 0 0 .65-.55l-.18-1.208.363-.363.727.331a.5.5 0 0 0 .69-.59l-.254-.904.647-.647A.25.25 0 0 0 16 5.75v-1.5a.25.25 0 0 0-.25-.25zM7.5 13.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0z\" fill=\"${fg}\"/></svg>`;\n};\nvar headerCode = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}<rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"4\" fill=\"${bg}\"/><path d=\"m12.223 13.314 3.052-2.826a.65.65 0 0 0 0-.984l-3.052-2.822c-.27-.25-.634-.242-.865.022-.232.263-.206.636.056.882l2.601 2.41-2.601 2.41c-.262.245-.288.619-.056.882.231.263.595.277.865.026Zm-4.444.005c.266.25.634.241.866-.027.231-.263.206-.636-.06-.882L5.983 10l2.602-2.405c.266-.25.291-.62.06-.887-.232-.263-.596-.272-.866-.022L4.723 9.51a.653.653 0 0 0 0 .983l3.056 2.827Z\" fill=\"${fg}\"/></svg>`;\n};\nvar headerNumber = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2z\" fill=\"${bg}\"/>\n <path d=\"M6.52 12.78H5.51V8.74l-1.33.47v-.87l2.29-.83h.05v5.27zm5.2 0H8.15v-.69l1.7-1.83a6.38 6.38 0 0 0 .34-.4c.09-.11.16-.22.22-.32s.1-.19.12-.27a.9.9 0 0 0 0-.56.63.63 0 0 0-.15-.23.58.58 0 0 0-.22-.15.75.75 0 0 0-.29-.05c-.27 0-.48.08-.62.23a.95.95 0 0 0-.2.65H8.03c0-.24.04-.46.13-.67a1.67 1.67 0 0 1 .97-.91c.23-.1.49-.14.77-.14.26 0 .5.04.7.11.21.08.38.18.52.32.14.13.25.3.32.48a1.74 1.74 0 0 1 .03 1.13 2.05 2.05 0 0 1-.24.47 4.16 4.16 0 0 1-.35.47l-.47.5-1 1.05h2.32v.8zm1.8-3.08h.55c.28 0 .48-.06.61-.2a.76.76 0 0 0 .2-.55.8.8 0 0 0-.05-.28.56.56 0 0 0-.13-.22.6.6 0 0 0-.23-.15.93.93 0 0 0-.32-.05.92.92 0 0 0-.29.05.72.72 0 0 0-.23.12.57.57 0 0 0-.21.46H12.4a1.3 1.3 0 0 1 .5-1.04c.15-.13.33-.23.54-.3a2.48 2.48 0 0 1 1.4 0c.2.06.4.15.55.28.15.13.27.28.36.47.08.19.13.4.13.65a1.15 1.15 0 0 1-.2.65 1.36 1.36 0 0 1-.58.49c.15.05.28.12.38.2a1.14 1.14 0 0 1 .43.62c.03.13.05.26.05.4 0 .25-.05.47-.14.66a1.42 1.42 0 0 1-.4.49c-.16.13-.35.23-.58.3a2.51 2.51 0 0 1-.73.1c-.22 0-.44-.03-.65-.09a1.8 1.8 0 0 1-.57-.28 1.43 1.43 0 0 1-.4-.47 1.41 1.41 0 0 1-.15-.66h1a.66.66 0 0 0 .22.5.87.87 0 0 0 .58.2c.25 0 .45-.07.6-.2a.71.71 0 0 0 .21-.56.97.97 0 0 0-.06-.36.61.61 0 0 0-.18-.25.74.74 0 0 0-.28-.15 1.33 1.33 0 0 0-.37-.04h-.55V9.7z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerString = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n <path d=\"M8.182 12.4h3.636l.655 1.6H14l-3.454-8H9.455L6 14h1.527l.655-1.6zM10 7.44l1.36 3.651H8.64L10 7.441z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerBoolean = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path\n d=\"M16.2222 2H3.77778C2.8 2 2 2.8 2 3.77778V16.2222C2 17.2 2.8 18 3.77778 18H16.2222C17.2 18 17.9911 17.2 17.9911 16.2222L18 3.77778C18 2.8 17.2 2 16.2222 2Z\"\n fill=\"${bg}\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.66667 6.66669C5.73368 6.66669 4.16667 8.15907 4.16667 10C4.16667 11.841 5.73368 13.3334 7.66667 13.3334H12.3333C14.2663 13.3334 15.8333 11.841 15.8333 10C15.8333 8.15907 14.2663 6.66669 12.3333 6.66669H7.66667ZM12.5 12.5C13.8807 12.5 15 11.3807 15 10C15 8.61931 13.8807 7.50002 12.5 7.50002C11.1193 7.50002 10 8.61931 10 10C10 11.3807 11.1193 12.5 12.5 12.5Z\"\n fill=\"${fg}\"\n />\n</svg>`;\n};\nvar headerUri = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n<path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10.29 4.947a3.368 3.368 0 014.723.04 3.375 3.375 0 01.041 4.729l-.009.009-1.596 1.597a3.367 3.367 0 01-5.081-.364.71.71 0 011.136-.85 1.95 1.95 0 002.942.21l1.591-1.593a1.954 1.954 0 00-.027-2.733 1.95 1.95 0 00-2.732-.027l-.91.907a.709.709 0 11-1.001-1.007l.915-.911.007-.007z\" fill=\"${fg}\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.55 8.678a3.368 3.368 0 015.082.364.71.71 0 01-1.136.85 1.95 1.95 0 00-2.942-.21l-1.591 1.593a1.954 1.954 0 00.027 2.733 1.95 1.95 0 002.73.028l.906-.906a.709.709 0 111.003 1.004l-.91.91-.008.01a3.368 3.368 0 01-4.724-.042 3.375 3.375 0 01-.041-4.728l.009-.009L6.55 8.678z\" fill=\"${fg}\"/>\n</svg>\n `;\n};\nvar renameIcon = (props) => {\n const bg = props.bgColor;\n return `${iconHead}\n <path stroke=\"${bg}\" stroke-width=\"2\" d=\"M12 3v14\"/>\n <path stroke=\"${bg}\" stroke-width=\"2\" stroke-linecap=\"round\" d=\"M10 4h4m-4 12h4\"/>\n <path d=\"M11 14h4a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3h-4v2h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4v2ZM9.5 8H5a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h4.5v2H5a3 3 0 0 1-3-3V9a3 3 0 0 1 3-3h4.5v2Z\" fill=\"${bg}\"/>\n </svg>\n`;\n};\nvar headerAudioUri = headerUri;\nvar headerVideoUri = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7 13.138a.5.5 0 00.748.434l5.492-3.138a.5.5 0 000-.868L7.748 6.427A.5.5 0 007 6.862v6.276z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerEmoji = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <path d=\"M10 5a5 5 0 1 0 0 10 5 5 0 0 0 0-10zm0 9.17A4.17 4.17 0 0 1 5.83 10 4.17 4.17 0 0 1 10 5.83 4.17 4.17 0 0 1 14.17 10 4.17 4.17 0 0 1 10 14.17z\" fill=\"${fg}\"/>\n <path d=\"M8.33 8.21a.83.83 0 1 0-.03 1.67.83.83 0 0 0 .03-1.67zm3.34 0a.83.83 0 1 0-.04 1.67.83.83 0 0 0 .04-1.67z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.53 13.9a2.82 2.82 0 0 1-5.06 0l.77-.38a1.97 1.97 0 0 0 3.52 0l.77.39z\" fill=\"${fg}\"/>\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2z\" fill=\"${bg}\"/>\n <path d=\"M10 4a6 6 0 1 0 0 12 6 6 0 0 0 0-12zm0 11a5 5 0 1 1 .01-10.01A5 5 0 0 1 10 15z\" fill=\"${fg}\"/>\n <path d=\"M8 7.86a1 1 0 1 0-.04 2 1 1 0 0 0 .04-2zm4 0a1 1 0 1 0-.04 2 1 1 0 0 0 .04-2z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.53 11.9a2.82 2.82 0 0 1-5.06 0l.77-.38a1.97 1.97 0 0 0 3.52 0l.77.39z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerImage = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n <path opacity=\".5\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.499 10.801a.5.5 0 01.835 0l2.698 4.098a.5.5 0 01-.418.775H10.22a.5.5 0 01-.417-.775l2.697-4.098z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.07 8.934a.5.5 0 01.824 0l4.08 5.958a.5.5 0 01-.412.782h-8.16a.5.5 0 01-.413-.782l4.08-5.958zM13.75 8.333a2.083 2.083 0 100-4.166 2.083 2.083 0 000 4.166z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerPhone = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <path fill=\"${fg}\" d=\"M3 3h14v14H3z\"/>\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2zm-7.24 9.78h1.23c.15 0 .27.06.36.18l.98 1.28a.43.43 0 0 1-.05.58l-1.2 1.21a.45.45 0 0 1-.6.04A6.72 6.72 0 0 1 7.33 10c0-.61.1-1.2.25-1.78a6.68 6.68 0 0 1 2.12-3.3.44.44 0 0 1 .6.04l1.2 1.2c.16.17.18.42.05.59l-.98 1.29a.43.43 0 0 1-.36.17H8.98A5.38 5.38 0 0 0 8.67 10c0 .62.11 1.23.3 1.79z\" fill=\"${bg}\"/>\n </svg>`;\n};\nvar headerMarkdown = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2z\" fill=\"${bg}\"/>\n <path d=\"m13.49 13.15-2.32-3.27h1.4V7h1.86v2.88h1.4l-2.34 3.27zM11 13H9v-3l-1.5 1.92L6 10v3H4V7h2l1.5 2L9 7h2v6z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerDate = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n <path d=\"M14.8 4.182h-.6V3H13v1.182H7V3H5.8v1.182h-.6c-.66 0-1.2.532-1.2 1.182v9.454C4 15.468 4.54 16 5.2 16h9.6c.66 0 1.2-.532 1.2-1.182V5.364c0-.65-.54-1.182-1.2-1.182zm0 10.636H5.2V7.136h9.6v7.682z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerTime = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2z\" fill=\"${bg}\"/>\n <path d=\"M10 4a6 6 0 0 0-6 6 6 6 0 0 0 6 6 6 6 0 0 0 6-6 6 6 0 0 0-6-6zm0 10.8A4.8 4.8 0 0 1 5.2 10a4.8 4.8 0 1 1 4.8 4.8z\" fill=\"${fg}\"/>\n <path d=\"M10 7H9v3.93L12.5 13l.5-.8-3-1.76V7z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerEmail = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10 8.643a1.357 1.357 0 100 2.714 1.357 1.357 0 000-2.714zM7.357 10a2.643 2.643 0 115.286 0 2.643 2.643 0 01-5.286 0z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.589 4.898A5.643 5.643 0 0115.643 10v.5a2.143 2.143 0 01-4.286 0V8a.643.643 0 011.286 0v2.5a.857.857 0 001.714 0V10a4.357 4.357 0 10-1.708 3.46.643.643 0 01.782 1.02 5.643 5.643 0 11-5.842-9.582z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerReference = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <rect x=\"2\" y=\"8\" width=\"10\" height=\"8\" rx=\"2\" fill=\"${bg}\"/>\n <rect x=\"8\" y=\"4\" width=\"10\" height=\"8\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M10.68 7.73V6l2.97 3.02-2.97 3.02v-1.77c-2.13 0-3.62.7-4.68 2.2.43-2.15 1.7-4.31 4.68-4.74z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerIfThenElse = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path fill=\"${fg}\" d=\"M4 3h12v14H4z\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.6 2A1.6 1.6 0 002 3.6v12.8A1.6 1.6 0 003.6 18h12.8a1.6 1.6 0 001.6-1.6V3.6A1.6 1.6 0 0016.4 2H3.6zm11.3 10.8a.7.7 0 01.7.7v1.4a.7.7 0 01-.7.7h-1.4a.7.7 0 01-.7-.7v-1.4a.7.7 0 01.6-.693.117.117 0 00.1-.115V10.35a.117.117 0 00-.117-.116h-2.8a.117.117 0 00-.117.116v2.333c0 .064.053.117.117.117h.117a.7.7 0 01.7.7v1.4a.7.7 0 01-.7.7H9.3a.7.7 0 01-.7-.7v-1.4a.7.7 0 01.7-.7h.117a.117.117 0 00.117-.117V10.35a.117.117 0 00-.117-.117h-2.8a.117.117 0 00-.117.117v2.342c0 .058.042.106.1.115a.7.7 0 01.6.693v1.4a.7.7 0 01-.7.7H5.1a.7.7 0 01-.7-.7v-1.4a.7.7 0 01.7-.7h.35a.116.116 0 00.116-.117v-2.45c0-.515.418-.933.934-.933h2.917a.117.117 0 00.117-.117V6.85a.117.117 0 00-.117-.116h-2.45a.7.7 0 01-.7-.7V5.1a.7.7 0 01.7-.7h6.067a.7.7 0 01.7.7v.934a.7.7 0 01-.7.7h-2.45a.117.117 0 00-.118.116v2.333c0 .064.053.117.117.117H13.5c.516 0 .934.418.934.934v2.45c0 .063.052.116.116.116h.35z\" fill=\"${bg}\"/>\n</svg>`;\n};\nvar headerSingleValue = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M9.98 13.33c.45 0 .74-.3.73-.75l-.01-.1-.16-1.67 1.45 1.05a.81.81 0 0 0 .5.18c.37 0 .72-.32.72-.76 0-.3-.17-.54-.49-.68l-1.63-.77 1.63-.77c.32-.14.49-.37.49-.67 0-.45-.34-.76-.71-.76a.81.81 0 0 0-.5.18l-1.47 1.03.16-1.74.01-.08c.01-.46-.27-.76-.72-.76-.46 0-.76.32-.75.76l.01.08.16 1.74-1.47-1.03a.77.77 0 0 0-.5-.18.74.74 0 0 0-.72.76c0 .3.17.53.49.67l1.63.77-1.62.77c-.32.14-.5.37-.5.68 0 .44.35.75.72.75a.78.78 0 0 0 .5-.17L9.4 10.8l-.16 1.68v.09c-.02.44.28.75.74.75z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerLookup = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M8 5.83H5.83a.83.83 0 0 0 0 1.67h1.69A4.55 4.55 0 0 1 8 5.83zm-.33 3.34H5.83a.83.83 0 0 0 0 1.66h2.72a4.57 4.57 0 0 1-.88-1.66zM5.83 12.5a.83.83 0 0 0 0 1.67h7.5a.83.83 0 1 0 0-1.67h-7.5zm8.8-2.9a3.02 3.02 0 0 0 .46-1.6c0-1.66-1.32-3-2.94-3C10.52 5 9.2 6.34 9.2 8s1.31 3 2.93 3c.58 0 1.11-.17 1.56-.47l2.04 2.08.93-.94-2.04-2.08zm-2.48.07c-.9 0-1.63-.75-1.63-1.67s.73-1.67 1.63-1.67c.9 0 1.63.75 1.63 1.67s-.73 1.67-1.63 1.67z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerTextTemplate = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M7.676 4.726V3l2.976 3.021-2.976 3.022v-1.77c-2.125 0-3.613.69-4.676 2.201.425-2.158 1.7-4.316 4.676-4.748zM10.182 14.4h3.636l.655 1.6H16l-3.454-8h-1.091L8 16h1.527l.655-1.6zM12 9.44l1.36 3.65h-2.72L12 9.44z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerMath = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.167 5.417a.833.833 0 100 1.666h4.166a.833.833 0 100-1.666H4.167z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.083 4.167a.833.833 0 10-1.666 0v4.166a.833.833 0 101.666 0V4.167zM11.667 5.417a.833.833 0 100 1.666h4.166a.833.833 0 100-1.666h-4.166zM5.367 11.688a.833.833 0 00-1.179 1.179l2.947 2.946a.833.833 0 001.178-1.178l-2.946-2.947z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.313 12.867a.833.833 0 10-1.178-1.179l-2.947 2.947a.833.833 0 101.179 1.178l2.946-2.946z\" fill=\"${fg}\"/>\n <path d=\"M10.833 12.5c0-.46.373-.833.834-.833h4.166a.833.833 0 110 1.666h-4.166a.833.833 0 01-.834-.833zM10.833 15c0-.46.373-.833.834-.833h4.166a.833.833 0 110 1.666h-4.166a.833.833 0 01-.834-.833z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerRollup = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <path d=\"M16.22 2H3.78C2.8 2 2 2.8 2 3.78v12.44C2 17.2 2.8 18 3.78 18h12.44c.98 0 1.77-.8 1.77-1.78L18 3.78C18 2.8 17.2 2 16.22 2z\" fill=\"${bg}\"/>\n <path d=\"M10 8.84a1.16 1.16 0 1 0 0 2.32 1.16 1.16 0 0 0 0-2.32zm3.02 3.61a3.92 3.92 0 0 0 .78-3.28.49.49 0 1 0-.95.2c.19.87-.02 1.78-.58 2.47a2.92 2.92 0 1 1-4.13-4.08 2.94 2.94 0 0 1 2.43-.62.49.49 0 1 0 .17-.96 3.89 3.89 0 1 0 2.28 6.27zM10 4.17a5.84 5.84 0 0 0-5.44 7.93.49.49 0 1 0 .9-.35 4.86 4.86 0 1 1 2.5 2.67.49.49 0 1 0-.4.88c.76.35 1.6.54 2.44.53a5.83 5.83 0 0 0 0-11.66zm3.02 3.5a.7.7 0 1 0-1.4 0 .7.7 0 0 0 1.4 0zm-6.97 5.35a.7.7 0 1 1 0 1.4.7.7 0 0 1 0-1.4z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerJoinStrings = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M12.4 13.565c1.865-.545 3.645-2.083 3.645-4.396 0-1.514-.787-2.604-2.071-2.604C12.69 6.565 12 7.63 12 8.939c1.114.072 1.865.726 1.865 1.683 0 .933-.8 1.647-1.84 2.023l.375.92zM4 5h6v2H4zM4 9h5v2H4zM4 13h4v2H4z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerSplitString = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n ${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path d=\"M12.4 13.56c1.86-.54 3.65-2.08 3.65-4.4 0-1.5-.8-2.6-2.08-2.6S12 7.64 12 8.95c1.11.07 1.86.73 1.86 1.68 0 .94-.8 1.65-1.83 2.03l.37.91zM4 5h6v2H4zm0 4h5v2H4zm0 4h4v2H4z\" fill=\"${fg}\"/>\n </svg>`;\n};\nvar headerGeoDistance = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <path d=\"M16.222 2H3.778C2.8 2 2 2.8 2 3.778v12.444C2 17.2 2.8 18 3.778 18h12.444c.978 0 1.77-.8 1.77-1.778L18 3.778C18 2.8 17.2 2 16.222 2z\" fill=\"${bg}\"/>\n <path d=\"M10 7a1 1 0 100-2v2zm0 6a1 1 0 100 2v-2zm0-8H7v2h3V5zm-3 6h5V9H7v2zm5 2h-2v2h2v-2zm1-1a1 1 0 01-1 1v2a3 3 0 003-3h-2zm-1-1a1 1 0 011 1h2a3 3 0 00-3-3v2zM4 8a3 3 0 003 3V9a1 1 0 01-1-1H4zm3-3a3 3 0 00-3 3h2a1 1 0 011-1V5z\" fill=\"${fg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.856 12.014a.5.5 0 00-.712.702L5.409 14l-1.265 1.284a.5.5 0 00.712.702l1.255-1.274 1.255 1.274a.5.5 0 00.712-.702L6.813 14l1.265-1.284a.5.5 0 00-.712-.702L6.11 13.288l-1.255-1.274zM12.856 4.014a.5.5 0 00-.712.702L13.409 6l-1.265 1.284a.5.5 0 10.712.702l1.255-1.274 1.255 1.274a.5.5 0 10.712-.702L14.813 6l1.265-1.284a.5.5 0 00-.712-.702L14.11 5.288l-1.255-1.274z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar headerArray = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `${iconHead}\n <rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" rx=\"2\" fill=\"${bg}\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.25 7.25a.75.75 0 000-1.5h-6.5a.75.75 0 100 1.5h6.5zM15 10a.75.75 0 01-.75.75h-6.5a.75.75 0 010-1.5h6.5A.75.75 0 0115 10zm-.75 4.25a.75.75 0 000-1.5h-6.5a.75.75 0 000 1.5h6.5zm-8.987-7a.75.75 0 100-1.5.75.75 0 000 1.5zm.75 2.75a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm-.75 4.25a.75.75 0 100-1.5.75.75 0 000 1.5z\" fill=\"${fg}\"/>\n</svg>`;\n};\nvar rowOwnerOverlay = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n <svg width=\"18\" height=\"18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 15v1h14v-2.5c0-.87-.44-1.55-.98-2.04a6.19 6.19 0 0 0-1.9-1.14 12.1 12.1 0 0 0-2.48-.67A4 4 0 1 0 5 6a4 4 0 0 0 2.36 3.65c-.82.13-1.7.36-2.48.67-.69.28-1.37.65-1.9 1.13A2.8 2.8 0 0 0 2 13.5V15z\" fill=\"${bg}\" stroke=\"${fg}\" stroke-width=\"2\"/>\n </svg>`;\n};\nvar protectedColumnOverlay = (props) => {\n const fg = props.fgColor;\n const bg = props.bgColor;\n return `\n <svg width=\"18\" height=\"18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.43 6.04v-.18a3.86 3.86 0 0 0-7.72 0v.18A2.15 2.15 0 0 0 3 8.14v5.72C3 15.04 3.96 16 5.14 16H12c1.18 0 2.14-.96 2.14-2.14V8.14c0-1.03-.73-1.9-1.71-2.1zM7.86 6v-.14a.71.71 0 1 1 1.43 0V6H7.86z\" fill=\"${bg}\" stroke=\"${fg}\" stroke-width=\"2\"/>\n </svg>\n`;\n};\nvar sprites = {\n headerRowID,\n headerNumber,\n headerCode,\n headerString,\n headerBoolean,\n headerAudioUri,\n headerVideoUri,\n headerEmoji,\n headerImage,\n headerUri,\n headerPhone,\n headerMarkdown,\n headerDate,\n headerTime,\n headerEmail,\n headerReference,\n headerIfThenElse,\n headerSingleValue,\n headerLookup,\n headerTextTemplate,\n headerMath,\n headerRollup,\n headerJoinStrings,\n headerSplitString,\n headerGeoDistance,\n headerArray,\n rowOwnerOverlay,\n protectedColumnOverlay,\n renameIcon\n};\n\n// src/data-grid/data-grid-sprites.ts\nfunction getColors(variant, theme) {\n if (variant === \"normal\") {\n return [theme.bgIconHeader, theme.fgIconHeader];\n } else if (variant === \"selected\") {\n return [\"white\", theme.accentColor];\n } else {\n return [theme.accentColor, theme.bgHeader];\n }\n}\nvar SpriteManager = class {\n constructor(headerIcons, onSettled) {\n this.spriteMap = /* @__PURE__ */ new Map();\n this.inFlight = 0;\n this.onSettled = onSettled;\n this.headerIcons = {\n ...sprites,\n ...headerIcons\n };\n }\n drawSprite(sprite, variant, ctx, x, y, size, theme, alpha = 1) {\n const [bgColor, fgColor] = getColors(variant, theme);\n const rSize = size * Math.ceil(window.devicePixelRatio);\n const key = `${bgColor}_${fgColor}_${rSize}_${sprite}`;\n let spriteCanvas = this.spriteMap.get(key);\n if (spriteCanvas === void 0) {\n const spriteCb = this.headerIcons[sprite];\n if (spriteCb === void 0)\n return;\n spriteCanvas = document.createElement(\"canvas\");\n const spriteCtx = spriteCanvas.getContext(\"2d\");\n if (spriteCtx === null)\n return;\n const imgSource = new Image();\n imgSource.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(spriteCb({ fgColor, bgColor }))}`;\n this.spriteMap.set(key, spriteCanvas);\n const promise = imgSource.decode();\n if (promise === void 0)\n return;\n this.inFlight++;\n promise.then(() => {\n spriteCtx.drawImage(imgSource, 0, 0, rSize, rSize);\n }).finally(() => {\n this.inFlight--;\n if (this.inFlight === 0) {\n this.onSettled();\n }\n });\n } else {\n if (alpha < 1) {\n ctx.globalAlpha = alpha;\n }\n ctx.drawImage(spriteCanvas, 0, 0, rSize, rSize, x, y, size, size);\n if (alpha < 1) {\n ctx.globalAlpha = 1;\n }\n }\n }\n};\n\n// src/data-grid/data-grid.tsx\nimport clamp2 from \"lodash/clamp.js\";\nimport makeRange from \"lodash/range.js\";\n\n// src/data-grid/data-grid-render.tsx\nimport groupBy from \"lodash/groupBy.js\";\n\n// src/data-grid/color-parser.ts\nvar cache = {};\nvar div = null;\nfunction createDiv() {\n const d = document.createElement(\"div\");\n d.style.opacity = \"0\";\n d.style.pointerEvents = \"none\";\n d.style.position = \"fixed\";\n document.body.append(d);\n return d;\n}\nfunction parseToRgba(color) {\n const normalizedColor = color.toLowerCase().trim();\n if (cache[normalizedColor] !== void 0)\n return cache[normalizedColor];\n div = div || createDiv();\n div.style.color = \"#000\";\n div.style.color = normalizedColor;\n const control = getComputedStyle(div).color;\n div.style.color = \"#fff\";\n div.style.color = normalizedColor;\n const computedColor = getComputedStyle(div).color;\n if (computedColor !== control)\n return [0, 0, 0, 1];\n let result = computedColor.replace(/[^\\d.,]/g, \"\").split(\",\").map(Number.parseFloat);\n if (result.length < 4) {\n result.push(1);\n }\n result = result.map((x) => {\n const isNaN = Number.isNaN(x);\n if (isNaN) {\n console.warn(\"Could not parse color\", color);\n }\n return isNaN ? 0 : x;\n });\n cache[normalizedColor] = result;\n return result;\n}\nfunction withAlpha(color, alpha) {\n const [r, g, b] = parseToRgba(color);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\nfunction blend(color, background) {\n if (background === void 0)\n return color;\n const [r, g, b, a] = parseToRgba(color);\n if (a === 1)\n return color;\n const [br, bg, bb, ba] = parseToRgba(background);\n const ao = a + ba * (1 - a);\n const ro = (a * r + ba * br * (1 - a)) / ao;\n const go = (a * g + ba * bg * (1 - a)) / ao;\n const bo = (a * b + ba * bb * (1 - a)) / ao;\n return `rgba(${ro}, ${go}, ${bo}, ${ao})`;\n}\nfunction interpolateColors(leftColor, rightColor, val) {\n if (val <= 0)\n return leftColor;\n if (val >= 1)\n return rightColor;\n const left = [...parseToRgba(leftColor)];\n left[0] = left[0] * left[3];\n left[1] = left[1] * left[3];\n left[2] = left[2] * left[3];\n const right = [...parseToRgba(rightColor)];\n right[0] = right[0] * right[3];\n right[1] = right[1] * right[3];\n right[2] = right[2] * right[3];\n const hScaler = val;\n const nScaler = 1 - val;\n const a = left[3] * nScaler + right[3] * hScaler;\n const r = Math.floor((left[0] * nScaler + right[0] * hScaler) / a);\n const g = Math.floor((left[1] * nScaler + right[1] * hScaler) / a);\n const b = Math.floor((left[2] * nScaler + right[2] * hScaler) / a);\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\n// src/data-grid/data-grid-render.tsx\nvar loadingCell = {\n kind: GridCellKind.Loading,\n allowOverlay: false\n};\nfunction drawCell(ctx, row, cell, col, x, y, w, h, highlighted, theme, drawCustomCell, imageLoader, spriteManager, hoverAmount, hoverInfo, hyperWrapping, frameTime, lastPrep, enqueue, getCellRenderer) {\n let hoverX;\n let hoverY;\n if (hoverInfo !== void 0 && hoverInfo[0][0] === col && hoverInfo[0][1] === row) {\n hoverX = hoverInfo[1][0];\n hoverY = hoverInfo[1][1];\n }\n let result = void 0;\n const args = {\n ctx,\n theme,\n col,\n row,\n cell,\n rect: { x, y, width: w, height: h },\n highlighted,\n hoverAmount,\n hoverX,\n hoverY,\n imageLoader,\n spriteManager,\n hyperWrapping,\n requestAnimationFrame: () => {\n forceAnim = true;\n }\n };\n let forceAnim = false;\n const needsAnim = drawWithLastUpdate(args, cell.lastUpdated, frameTime, lastPrep, () => {\n var _a, _b;\n const drawn = isInnerOnlyCell(cell) ? false : (drawCustomCell == null ? void 0 : drawCustomCell(args)) === true;\n if (!drawn) {\n const r = getCellRenderer(cell);\n if (r !== void 0) {\n if ((lastPrep == null ? void 0 : lastPrep.renderer) !== r) {\n (_a = lastPrep == null ? void 0 : lastPrep.deprep) == null ? void 0 : _a.call(lastPrep, args);\n lastPrep = void 0;\n }\n const partialPrepResult = (_b = r.drawPrep) == null ? void 0 : _b.call(r, args, lastPrep);\n r.draw(args, cell);\n result = {\n deprep: partialPrepResult == null ? void 0 : partialPrepResult.deprep,\n fillStyle: partialPrepResult == null ? void 0 : partialPrepResult.fillStyle,\n font: partialPrepResult == null ? void 0 : partialPrepResult.font,\n renderer: r\n };\n }\n }\n });\n if (needsAnim || forceAnim)\n enqueue == null ? void 0 : enqueue([col, row]);\n return result;\n}\nfunction blitLastFrame(ctx, canvas, last, cellXOffset, cellYOffset, translateX, translateY, lastRowSticky, width, height, rows, totalHeaderHeight, dpr, mappedColumns, effectiveCols, getRowHeight, doubleBuffer) {\n const drawRegions = [];\n let blittedYOnly = false;\n ctx.imageSmoothingEnabled = false;\n const minY = Math.min(last.cellYOffset, cellYOffset);\n const maxY = Math.max(last.cellYOffset, cellYOffset);\n let deltaY = 0;\n if (typeof getRowHeight === \"number\") {\n deltaY += (maxY - minY) * getRowHeight;\n } else {\n for (let i = minY; i < maxY; i++) {\n deltaY += getRowHeight(i);\n }\n }\n if (cellYOffset > last.cellYOffset) {\n deltaY = -deltaY;\n }\n deltaY += translateY - last.translateY;\n const minX = Math.min(last.cellXOffset, cellXOffset);\n const maxX = Math.max(last.cellXOffset, cellXOffset);\n let deltaX = 0;\n for (let i = minX; i < maxX; i++) {\n deltaX += mappedColumns[i].width;\n }\n if (cellXOffset > last.cellXOffset) {\n deltaX = -deltaX;\n }\n deltaX += translateX - last.translateX;\n let stickyWidth = getStickyWidth(effectiveCols);\n if (stickyWidth > 0)\n stickyWidth++;\n if (deltaX !== 0 && deltaY !== 0) {\n return {\n regions: [],\n yOnly: false\n };\n }\n const stickyRowHeight = lastRowSticky ? typeof getRowHeight === \"number\" ? getRowHeight : getRowHeight(rows - 1) : 0;\n const blitWidth = width - stickyWidth - Math.abs(deltaX);\n const blitHeight = height - totalHeaderHeight - stickyRowHeight - Math.abs(deltaY) - 1;\n if (blitWidth > 150 && blitHeight > 150) {\n blittedYOnly = deltaX === 0;\n const args = {\n sx: 0,\n sy: 0,\n sw: width * dpr,\n sh: height * dpr,\n dx: 0,\n dy: 0,\n dw: width * dpr,\n dh: height * dpr\n };\n if (deltaY > 0) {\n args.sy = (totalHeaderHeight + 1) * dpr;\n args.sh = blitHeight * dpr;\n args.dy = (deltaY + totalHeaderHeight + 1) * dpr;\n args.dh = blitHeight * dpr;\n drawRegions.push({\n x: 0,\n y: totalHeaderHeight,\n width,\n height: deltaY + 1\n });\n } else if (deltaY < 0) {\n args.sy = (-deltaY + totalHeaderHeight + 1) * dpr;\n args.sh = blitHeight * dpr;\n args.dy = (totalHeaderHeight + 1) * dpr;\n args.dh = blitHeight * dpr;\n drawRegions.push({\n x: 0,\n y: height + deltaY - stickyRowHeight,\n width,\n height: -deltaY + stickyRowHeight\n });\n }\n if (deltaX > 0) {\n args.sx = stickyWidth * dpr;\n args.sw = blitWidth * dpr;\n args.dx = (deltaX + stickyWidth) * dpr;\n args.dw = blitWidth * dpr;\n drawRegions.push({\n x: stickyWidth - 1,\n y: 0,\n width: deltaX + 2,\n // extra width to account for first col not drawing a left side border\n height\n });\n } else if (deltaX < 0) {\n args.sx = (stickyWidth - deltaX) * dpr;\n args.sw = blitWidth * dpr;\n args.dx = stickyWidth * dpr;\n args.dw = blitWidth * dpr;\n drawRegions.push({\n x: width + deltaX,\n y: 0,\n width: -deltaX,\n height\n });\n }\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n if (stickyWidth > 0 && deltaX !== 0 && deltaY === 0 && doubleBuffer) {\n ctx.drawImage(canvas, 0, 0, stickyWidth * dpr, height * dpr, 0, 0, stickyWidth * dpr, height * dpr);\n }\n ctx.drawImage(canvas, args.sx, args.sy, args.sw, args.sh, args.dx, args.dy, args.dw, args.dh);\n ctx.scale(dpr, dpr);\n }\n ctx.imageSmoothingEnabled = true;\n return {\n regions: drawRegions,\n yOnly: blittedYOnly\n };\n}\nfunction blitResizedCol(last, cellXOffset, cellYOffset, translateX, translateY, width, height, totalHeaderHeight, effectiveCols, resizedIndex) {\n const drawRegions = [];\n if (cellXOffset !== last.cellXOffset || cellYOffset !== last.cellYOffset || translateX !== last.translateX || translateY !== last.translateY) {\n return drawRegions;\n }\n walkColumns(effectiveCols, cellYOffset, translateX, translateY, totalHeaderHeight, (c, drawX, _drawY, clipX) => {\n if (c.sourceIndex === resizedIndex) {\n const x = Math.max(drawX, clipX) + 1;\n drawRegions.push({\n x,\n y: 0,\n width: width - x,\n height\n });\n return true;\n }\n });\n return drawRegions;\n}\nfunction drawGridLines(ctx, effectiveCols, cellYOffset, translateX, translateY, width, height, drawRegions, spans, groupHeaderHeight, totalHeaderHeight, getRowHeight, getRowThemeOverride, verticalBorder, trailingRowType, rows, theme, verticalOnly = false) {\n var _a, _b, _c;\n if (spans !== void 0) {\n ctx.beginPath();\n ctx.save();\n ctx.rect(0, 0, width, height);\n for (const span of spans) {\n ctx.rect(span.x + 1, span.y + 1, span.width - 1, span.height - 1);\n }\n ctx.clip(\"evenodd\");\n }\n const hColor = (_a = theme.horizontalBorderColor) != null ? _a : theme.borderColor;\n const vColor = theme.borderColor;\n let minX = 0;\n let maxX = width;\n let minY = 0;\n let maxY = height;\n if (drawRegions !== void 0 && drawRegions.length > 0) {\n minX = Number.MAX_SAFE_INTEGER;\n minY = Number.MAX_SAFE_INTEGER;\n maxX = Number.MIN_SAFE_INTEGER;\n maxY = Number.MIN_SAFE_INTEGER;\n for (const r of drawRegions) {\n minX = Math.min(minX, r.x - 1);\n maxX = Math.max(maxX, r.x + r.width + 1);\n minY = Math.min(minY, r.y - 1);\n maxY = Math.max(maxY, r.y + r.height + 1);\n }\n }\n const toDraw = [];\n ctx.beginPath();\n let x = 0.5;\n for (let index = 0; index < effectiveCols.length; index++) {\n const c = effectiveCols[index];\n if (c.width === 0)\n continue;\n x += c.width;\n const tx = c.sticky ? x : x + translateX;\n if (tx >= minX && tx <= maxX && verticalBorder(index + 1)) {\n toDraw.push({\n x1: tx,\n y1: Math.max(groupHeaderHeight, minY),\n x2: tx,\n y2: Math.min(height, maxY),\n color: vColor\n });\n }\n }\n const stickyHeight = getRowHeight(rows - 1);\n const stickyRowY = height - stickyHeight + 0.5;\n const lastRowSticky = trailingRowType === \"sticky\";\n if (lastRowSticky) {\n toDraw.push({ x1: minX, y1: stickyRowY, x2: maxX, y2: stickyRowY, color: hColor });\n }\n if (verticalOnly !== true) {\n let y = totalHeaderHeight + 0.5;\n let row = cellYOffset;\n const target = lastRowSticky ? height - stickyHeight : height;\n while (y + translateY <= target) {\n const ty = y + translateY;\n if (ty >= minY && ty <= maxY - 1 && (!lastRowSticky || row !== rows - 1 || Math.abs(ty - stickyRowY) > 1)) {\n const rowTheme = getRowThemeOverride == null ? void 0 : getRowThemeOverride(row);\n toDraw.push({\n x1: minX,\n y1: ty,\n x2: maxX,\n y2: ty,\n color: (_c = (_b = rowTheme == null ? void 0 : rowTheme.horizontalBorderColor) != null ? _b : rowTheme == null ? void 0 : rowTheme.borderColor) != null ? _c : hColor\n });\n }\n y += getRowHeight(row);\n row++;\n }\n }\n const groups = groupBy(toDraw, (line) => line.color);\n for (const g of Object.keys(groups)) {\n ctx.strokeStyle = g;\n for (const line of groups[g]) {\n ctx.moveTo(line.x1, line.y1);\n ctx.lineTo(line.x2, line.y2);\n }\n ctx.stroke();\n ctx.beginPath();\n }\n if (spans !== void 0) {\n ctx.restore();\n }\n}\nfunction getActionBoundsForGroup(box, actions) {\n const result = [];\n let x = box.x + box.width - 26 * actions.length;\n const y = box.y + box.height / 2 - 13;\n const height = 26;\n const width = 26;\n for (let i = 0; i < actions.length; i++) {\n result.push({\n x,\n y,\n width,\n height\n });\n x += 26;\n }\n return result;\n}\nfunction pointInRect(rect, x, y) {\n return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height;\n}\nfunction drawGroups(ctx, effectiveCols, width, translateX, groupHeaderHeight, hovered, theme, spriteManager, _hoverValues, verticalBorder, getGroupDetails, damage) {\n var _a;\n const xPad = 8;\n const [hCol, hRow] = (_a = hovered == null ? void 0 : hovered[0]) != null ? _a : [];\n let finalX = 0;\n walkGroups(effectiveCols, width, translateX, groupHeaderHeight, (span, groupName, x, y, w, h) => {\n var _a2, _b;\n if (damage !== void 0 && !damage.some((d) => d[1] === -2 && d[0] >= span[0] && d[0] <= span[1]))\n return;\n ctx.save();\n ctx.beginPath();\n ctx.rect(x, y, w, h);\n ctx.clip();\n const group = getGroupDetails(groupName);\n const groupTheme = (group == null ? void 0 : group.overrideTheme) === void 0 ? theme : { ...theme, ...group.overrideTheme };\n const isHovered = hRow === -2 && hCol !== void 0 && hCol >= span[0] && hCol <= span[1];\n const fillColor = isHovered ? groupTheme.bgHeaderHovered : groupTheme.bgHeader;\n if (fillColor !== theme.bgHeader) {\n ctx.fillStyle = fillColor;\n ctx.fill();\n }\n ctx.fillStyle = (_a2 = groupTheme.textGroupHeader) != null ? _a2 : groupTheme.textHeader;\n if (group !== void 0) {\n let drawX = x;\n if (group.icon !== void 0) {\n spriteManager.drawSprite(\n group.icon,\n \"normal\",\n ctx,\n drawX + xPad,\n (groupHeaderHeight - 20) / 2,\n 20,\n groupTheme\n );\n drawX += 26;\n }\n ctx.fillText(\n group.name,\n drawX + xPad,\n groupHeaderHeight / 2 + getMiddleCenterBias(ctx, `${theme.headerFontStyle} ${theme.fontFamily}`)\n );\n if (group.actions !== void 0 && isHovered) {\n const actionBoxes = getActionBoundsForGroup({ x, y, width: w, height: h }, group.actions);\n ctx.beginPath();\n const fadeStartX = actionBoxes[0].x - 10;\n const fadeWidth = x + w - fadeStartX;\n ctx.rect(fadeStartX, 0, fadeWidth, groupHeaderHeight);\n const grad = ctx.createLinearGradient(fadeStartX, 0, fadeStartX + fadeWidth, 0);\n const trans = withAlpha(fillColor, 0);\n grad.addColorStop(0, trans);\n grad.addColorStop(10 / fadeWidth, fillColor);\n grad.addColorStop(1, fillColor);\n ctx.fillStyle = grad;\n ctx.fill();\n ctx.globalAlpha = 0.6;\n const [mouseX, mouseY] = (_b = hovered == null ? void 0 : hovered[1]) != null ? _b : [-1, -1];\n for (let i = 0; i < group.actions.length; i++) {\n const action = group.actions[i];\n const box = actionBoxes[i];\n const actionHovered = pointInRect(box, mouseX + x, mouseY);\n if (actionHovered) {\n ctx.globalAlpha = 1;\n }\n spriteManager.drawSprite(\n action.icon,\n \"normal\",\n ctx,\n box.x + box.width / 2 - 10,\n box.y + box.height / 2 - 10,\n 20,\n groupTheme\n );\n if (actionHovered) {\n ctx.globalAlpha = 0.6;\n }\n }\n ctx.globalAlpha = 1;\n }\n }\n if (x !== 0 && verticalBorder(span[0])) {\n ctx.beginPath();\n ctx.moveTo(x + 0.5, 0);\n ctx.lineTo(x + 0.5, groupHeaderHeight);\n ctx.strokeStyle = theme.borderColor;\n ctx.lineWidth = 1;\n ctx.stroke();\n }\n ctx.restore();\n finalX = x + w;\n });\n ctx.beginPath();\n ctx.moveTo(finalX + 0.5, 0);\n ctx.lineTo(finalX + 0.5, groupHeaderHeight);\n ctx.moveTo(0, groupHeaderHeight + 0.5);\n ctx.lineTo(width, groupHeaderHeight + 0.5);\n ctx.strokeStyle = theme.borderColor;\n ctx.lineWidth = 1;\n ctx.stroke();\n}\nvar menuButtonSize = 30;\nfunction getHeaderMenuBounds(x, y, width, height, isRtl) {\n if (isRtl)\n return { x, y, width: menuButtonSize, height: Math.min(menuButtonSize, height) };\n return {\n x: x + width - menuButtonSize,\n // right align\n y: Math.max(y, y + height / 2 - menuButtonSize / 2),\n // center vertically\n width: menuButtonSize,\n height: Math.min(menuButtonSize, height)\n };\n}\nfunction drawHeader(ctx, x, y, width, height, c, selected, theme, isHovered, hasSelectedCell, hoverAmount, spriteManager, drawHeaderCallback, touchMode) {\n const isCheckboxHeader = c.title.startsWith(headerCellCheckboxPrefix);\n const isRtl = direction(c.title) === \"rtl\";\n const menuBounds = getHeaderMenuBounds(x, y, width, height, isRtl);\n if (drawHeaderCallback !== void 0) {\n let passCol = c;\n if (isCheckboxHeader) {\n passCol = {\n ...c,\n title: \"\"\n };\n }\n if (drawHeaderCallback({\n ctx,\n theme,\n rect: { x, y, width, height },\n column: passCol,\n columnIndex: passCol.sourceIndex,\n isSelected: selected,\n hoverAmount,\n isHovered,\n hasSelectedCell,\n spriteManager,\n menuBounds\n })) {\n return;\n }\n }\n if (isCheckboxHeader) {\n let checked = void 0;\n if (c.title === headerCellCheckedMarker)\n checked = true;\n if (c.title === headerCellUnheckedMarker)\n checked = false;\n if (checked !== true) {\n ctx.globalAlpha = hoverAmount;\n }\n drawCheckbox(ctx, theme, checked, x, y, width, height, false, void 0, void 0, 18);\n if (checked !== true) {\n ctx.globalAlpha = 1;\n }\n return;\n }\n const xPad = theme.cellHorizontalPadding;\n const fillStyle = selected ? theme.textHeaderSelected : theme.textHeader;\n const shouldDrawMenu = c.hasMenu === true && (isHovered || touchMode && selected);\n const dirScalar = isRtl ? -1 : 1;\n let drawX = isRtl ? x + width - xPad : x + xPad;\n if (c.icon !== void 0) {\n let variant = selected ? \"selected\" : \"normal\";\n if (c.style === \"highlight\") {\n variant = selected ? \"selected\" : \"special\";\n }\n const headerSize = theme.headerIconSize;\n spriteManager.drawSprite(\n c.icon,\n variant,\n ctx,\n isRtl ? drawX - headerSize : drawX,\n y + (height - headerSize) / 2,\n headerSize,\n theme\n );\n if (c.overlayIcon !== void 0) {\n spriteManager.drawSprite(\n c.overlayIcon,\n selected ? \"selected\" : \"special\",\n ctx,\n isRtl ? drawX - headerSize + 9 : drawX + 9,\n y + ((height - 18) / 2 + 6),\n 18,\n theme\n );\n }\n drawX += Math.ceil(headerSize * 1.3) * dirScalar;\n }\n if (shouldDrawMenu && c.hasMenu === true && width > 35) {\n const fadeWidth = 35;\n const fadeStart = isRtl ? fadeWidth : width - fadeWidth;\n const fadeEnd = isRtl ? fadeWidth * 0.7 : width - fadeWidth * 0.7;\n const fadeStartPercent = fadeStart / width;\n const fadeEndPercent = fadeEnd / width;\n const grad = ctx.createLinearGradient(x, 0, x + width, 0);\n const trans = withAlpha(fillStyle, 0);\n grad.addColorStop(isRtl ? 1 : 0, fillStyle);\n grad.addColorStop(fadeStartPercent, fillStyle);\n grad.addColorStop(fadeEndPercent, trans);\n grad.addColorStop(isRtl ? 0 : 1, trans);\n ctx.fillStyle = grad;\n } else {\n ctx.fillStyle = fillStyle;\n }\n if (isRtl) {\n ctx.textAlign = \"right\";\n }\n ctx.fillText(\n c.title,\n drawX,\n y + height / 2 + getMiddleCenterBias(ctx, `${theme.headerFontStyle} ${theme.fontFamily}`)\n );\n if (isRtl) {\n ctx.textAlign = \"left\";\n }\n if (shouldDrawMenu && c.hasMenu === true) {\n ctx.beginPath();\n const triangleX = menuBounds.x + menuBounds.width / 2 - 5.5;\n const triangleY = menuBounds.y + menuBounds.height / 2 - 3;\n roundedPoly(\n ctx,\n [\n {\n x: triangleX,\n y: triangleY\n },\n {\n x: triangleX + 11,\n y: triangleY\n },\n {\n x: triangleX + 5.5,\n y: triangleY + 6\n }\n ],\n 1\n );\n ctx.fillStyle = fillStyle;\n ctx.fill();\n }\n}\nfunction drawGridHeaders(ctx, effectiveCols, enableGroups, hovered, width, translateX, headerHeight, groupHeaderHeight, dragAndDropState, isResizing, selection, outerTheme, spriteManager, hoverValues, verticalBorder, getGroupDetails, damage, drawHeaderCallback, touchMode) {\n var _a;\n const totalHeaderHeight = headerHeight + groupHeaderHeight;\n if (totalHeaderHeight <= 0)\n return;\n ctx.fillStyle = outerTheme.bgHeader;\n ctx.fillRect(0, 0, width, totalHeaderHeight);\n const [hCol, hRow] = (_a = hovered == null ? void 0 : hovered[0]) != null ? _a : [];\n const font = `${outerTheme.headerFontStyle} ${outerTheme.fontFamily}`;\n ctx.font = font;\n walkColumns(effectiveCols, 0, translateX, 0, totalHeaderHeight, (c, x, _y, clipX) => {\n var _a2, _b, _c;\n if (damage !== void 0 && !damage.some((d) => d[1] === -1 && d[0] === c.sourceIndex))\n return;\n const diff = Math.max(0, clipX - x);\n ctx.save();\n ctx.beginPath();\n ctx.rect(x + diff, groupHeaderHeight, c.width - diff, headerHeight);\n ctx.clip();\n const groupTheme = getGroupDetails((_a2 = c.group) != null ? _a2 : \"\").overrideTheme;\n const theme = c.themeOverride === void 0 && groupTheme === void 0 ? outerTheme : { ...outerTheme, ...groupTheme, ...c.themeOverride };\n if (theme.bgHeader !== outerTheme.bgHeader) {\n ctx.fillStyle = theme.bgHeader;\n ctx.fill();\n }\n const f = `${theme.headerFontStyle} ${theme.fontFamily}`;\n if (font !== f) {\n ctx.font = f;\n }\n const selected = selection.columns.hasIndex(c.sourceIndex);\n const noHover = dragAndDropState !== void 0 || isResizing;\n const hoveredBoolean = !noHover && hRow === -1 && hCol === c.sourceIndex;\n const hover = noHover ? 0 : (_c = (_b = hoverValues.find((s) => s.item[0] === c.sourceIndex && s.item[1] === -1)) == null ? void 0 : _b.hoverAmount) != null ? _c : 0;\n const hasSelectedCell = (selection == null ? void 0 : selection.current) !== void 0 && selection.current.cell[0] === c.sourceIndex;\n const bgFillStyle = selected ? theme.accentColor : hasSelectedCell ? theme.bgHeaderHasFocus : theme.bgHeader;\n const y = enableGroups ? groupHeaderHeight : 0;\n const xOffset = c.sourceIndex === 0 ? 0 : 1;\n if (selected) {\n ctx.fillStyle = bgFillStyle;\n ctx.fillRect(x + xOffset, y, c.width - xOffset, headerHeight);\n } else if (hasSelectedCell || hover > 0) {\n ctx.beginPath();\n ctx.rect(x + xOffset, y, c.width - xOffset, headerHeight);\n if (hasSelectedCell) {\n ctx.fillStyle = theme.bgHeaderHasFocus;\n ctx.fill();\n }\n if (hover > 0) {\n ctx.globalAlpha = hover;\n ctx.fillStyle = theme.bgHeaderHovered;\n ctx.fill();\n ctx.globalAlpha = 1;\n }\n }\n drawHeader(\n ctx,\n x,\n y,\n c.width,\n headerHeight,\n c,\n selected,\n theme,\n hoveredBoolean,\n hasSelectedCell,\n hover,\n spriteManager,\n drawHeaderCallback,\n touchMode\n );\n ctx.restore();\n });\n if (enableGroups) {\n drawGroups(\n ctx,\n effectiveCols,\n width,\n translateX,\n groupHeaderHeight,\n hovered,\n outerTheme,\n spriteManager,\n hoverValues,\n verticalBorder,\n getGroupDetails,\n damage\n );\n }\n}\nfunction intersectRect(x1, y1, w1, h1, x2, y2, w2, h2) {\n return x1 <= x2 + w2 && x2 <= x1 + w1 && y1 <= y2 + h2 && y2 <= y1 + h1;\n}\nfunction clipDamage(ctx, effectiveColumns, width, height, groupHeaderHeight, totalHeaderHeight, translateX, translateY, cellYOffset, rows, getRowHeight, trailingRowType, damage, includeCells) {\n if (damage === void 0 || damage.length === 0)\n return;\n const stickyRowHeight = trailingRowType === \"sticky\" ? getRowHeight(rows - 1) : 0;\n ctx.beginPath();\n walkGroups(effectiveColumns, width, translateX, groupHeaderHeight, (span, _group, x, y, w, h) => {\n for (let i = 0; i < damage.length; i++) {\n const d = damage[i];\n if (d[1] === -2 && d[0] >= span[0] && d[0] <= span[1]) {\n ctx.rect(x, y, w, h);\n break;\n }\n }\n });\n walkColumns(\n effectiveColumns,\n cellYOffset,\n translateX,\n translateY,\n totalHeaderHeight,\n (c, drawX, colDrawY, clipX, startRow) => {\n const diff = Math.max(0, clipX - drawX);\n const finalX = drawX + diff + 1;\n const finalWidth = c.width - diff - 1;\n for (let i = 0; i < damage.length; i++) {\n const d = damage[i];\n if (d[0] === c.sourceIndex && (d[1] === -1 || d[1] === void 0)) {\n ctx.rect(finalX, groupHeaderHeight, finalWidth, totalHeaderHeight - groupHeaderHeight);\n break;\n }\n }\n if (!includeCells)\n return;\n walkRowsInCol(\n startRow,\n colDrawY,\n height,\n rows,\n getRowHeight,\n trailingRowType,\n (drawY, row, rh, isSticky) => {\n let isDamaged = false;\n for (let i = 0; i < damage.length; i++) {\n const d = damage[i];\n if (d[0] === c.sourceIndex && d[1] === row) {\n isDamaged = true;\n break;\n }\n }\n if (isDamaged) {\n const top = drawY + 1;\n const bottom = isSticky ? top + rh - 1 : Math.min(top + rh - 1, height - stickyRowHeight);\n const h = bottom - top;\n if (h > 0) {\n ctx.rect(finalX, top, finalWidth, h);\n }\n }\n }\n );\n }\n );\n ctx.clip();\n}\nfunction getSpanBounds(span, cellX, cellY, cellW, cellH, column, allColumns) {\n var _a, _b;\n const [startCol, endCol] = span;\n let frozenRect;\n let contentRect;\n const firstNonSticky = (_b = (_a = allColumns.find((x) => !x.sticky)) == null ? void 0 : _a.sourceIndex) != null ? _b : 0;\n if (endCol > firstNonSticky) {\n const renderFromCol = Math.max(startCol, firstNonSticky);\n let tempX = cellX;\n let tempW = cellW;\n for (let x = column.sourceIndex - 1; x >= renderFromCol; x--) {\n tempX -= allColumns[x].width;\n tempW += allColumns[x].width;\n }\n for (let x = column.sourceIndex + 1; x <= endCol; x++) {\n tempW += allColumns[x].width;\n }\n contentRect = {\n x: tempX,\n y: cellY,\n width: tempW,\n height: cellH\n };\n }\n if (firstNonSticky > startCol) {\n const renderToCol = Math.min(endCol, firstNonSticky - 1);\n let tempX = cellX;\n let tempW = cellW;\n for (let x = column.sourceIndex - 1; x >= startCol; x--) {\n tempX -= allColumns[x].width;\n tempW += allColumns[x].width;\n }\n for (let x = column.sourceIndex + 1; x <= renderToCol; x++) {\n tempW += allColumns[x].width;\n }\n frozenRect = {\n x: tempX,\n y: cellY,\n width: tempW,\n height: cellH\n };\n }\n return [frozenRect, contentRect];\n}\nfunction drawCells(ctx, effectiveColumns, allColumns, height, totalHeaderHeight, translateX, translateY, cellYOffset, rows, getRowHeight, getCellContent, getGroupDetails, getRowThemeOverride, disabledRows, isFocused, drawFocus, trailingRowType, drawRegions, damage, selection, prelightCells, highlightRegions, drawCustomCell, imageLoader, spriteManager, hoverValues, hoverInfo, hyperWrapping, outerTheme, enqueue, getCellRenderer) {\n var _a;\n let toDraw = (_a = damage == null ? void 0 : damage.length) != null ? _a : Number.MAX_SAFE_INTEGER;\n const frameTime = performance.now();\n let font = `${outerTheme.baseFontStyle} ${outerTheme.fontFamily}`;\n ctx.font = font;\n let result;\n const handledSpans = /* @__PURE__ */ new Set();\n walkColumns(\n effectiveColumns,\n cellYOffset,\n translateX,\n translateY,\n totalHeaderHeight,\n (c, drawX, colDrawStartY, clipX, startRow) => {\n var _a2;\n const diff = Math.max(0, clipX - drawX);\n const colDrawX = drawX + diff;\n const colDrawY = totalHeaderHeight + 1;\n const colWidth = c.width - diff;\n const colHeight = height - totalHeaderHeight - 1;\n if (drawRegions.length > 0) {\n let found = false;\n for (let i = 0; i < drawRegions.length; i++) {\n const dr = drawRegions[i];\n if (intersectRect(colDrawX, colDrawY, colWidth, colHeight, dr.x, dr.y, dr.width, dr.height)) {\n found = true;\n break;\n }\n }\n if (!found)\n return;\n }\n const reclip = () => {\n ctx.save();\n ctx.beginPath();\n ctx.rect(colDrawX, colDrawY, colWidth, colHeight);\n ctx.clip();\n };\n const colSelected = selection.columns.hasIndex(c.sourceIndex);\n const groupTheme = getGroupDetails((_a2 = c.group) != null ? _a2 : \"\").overrideTheme;\n const colTheme = c.themeOverride === void 0 && groupTheme === void 0 ? outerTheme : { ...outerTheme, ...groupTheme, ...c.themeOverride };\n const colFont = `${colTheme.baseFontStyle} ${colTheme.fontFamily}`;\n if (colFont !== font) {\n font = colFont;\n ctx.font = colFont;\n }\n reclip();\n let prepResult = void 0;\n walkRowsInCol(\n startRow,\n colDrawStartY,\n height,\n rows,\n getRowHeight,\n trailingRowType,\n (drawY, row, rh, isSticky, isTrailingRow) => {\n var _a3, _b, _c, _d;\n if (row < 0)\n return;\n if (damage !== void 0) {\n let found = false;\n for (let i = 0; i < damage.length; i++) {\n const d = damage[i];\n if (d[0] === c.sourceIndex && d[1] === row) {\n found = true;\n break;\n }\n }\n if (!found)\n return;\n }\n if (drawRegions.length > 0) {\n let found = false;\n for (let i = 0; i < drawRegions.length; i++) {\n const dr = drawRegions[i];\n if (intersectRect(drawX, drawY, c.width, rh, dr.x, dr.y, dr.width, dr.height)) {\n found = true;\n break;\n }\n }\n if (!found)\n return;\n }\n const rowSelected = selection.rows.hasIndex(row);\n const rowDisabled = disabledRows.hasIndex(row);\n const cell = row < rows ? getCellContent([c.sourceIndex, row]) : loadingCell;\n let cellX = drawX;\n let cellWidth = c.width;\n let drawingSpan = false;\n let skipContents = false;\n if (cell.span !== void 0) {\n const [startCol, endCol] = cell.span;\n const spanKey = `${row},${startCol},${endCol},${c.sticky}`;\n if (!handledSpans.has(spanKey)) {\n const areas = getSpanBounds(cell.span, drawX, drawY, c.width, rh, c, allColumns);\n const area = c.sticky ? areas[0] : areas[1];\n if (!c.sticky && areas[0] !== void 0) {\n skipContents = true;\n }\n if (area !== void 0) {\n cellX = area.x;\n cellWidth = area.width;\n handledSpans.add(spanKey);\n ctx.restore();\n prepResult = void 0;\n ctx.save();\n ctx.beginPath();\n const d = Math.max(0, clipX - area.x);\n ctx.rect(area.x + d, drawY, area.width - d, rh);\n if (result === void 0) {\n result = [];\n }\n result.push({\n x: area.x + d,\n y: drawY,\n width: area.width - d,\n height: rh\n });\n ctx.clip();\n drawingSpan = true;\n }\n } else {\n toDraw--;\n return;\n }\n }\n const rowTheme = getRowThemeOverride == null ? void 0 : getRowThemeOverride(row);\n const trailingTheme = isTrailingRow && ((_a3 = c.trailingRowOptions) == null ? void 0 : _a3.themeOverride) !== void 0 ? (_b = c.trailingRowOptions) == null ? void 0 : _b.themeOverride : void 0;\n const theme = cell.themeOverride === void 0 && rowTheme === void 0 && trailingTheme === void 0 ? colTheme : { ...colTheme, ...rowTheme, ...trailingTheme, ...cell.themeOverride };\n ctx.beginPath();\n const cellIndex = [c.sourceIndex, row];\n const isSelected = cellIsSelected(cellIndex, cell, selection);\n let accentCount = cellIsInRange(cellIndex, cell, selection);\n const spanIsHighlighted = cell.span !== void 0 && selection.columns.some(\n (index) => cell.span !== void 0 && index >= cell.span[0] && index <= cell.span[1]\n );\n if (isSelected && !isFocused && drawFocus) {\n accentCount = 0;\n } else if (isSelected) {\n accentCount = Math.max(accentCount, 1);\n }\n if (spanIsHighlighted) {\n accentCount++;\n }\n if (!isSelected) {\n if (rowSelected)\n accentCount++;\n if (colSelected && !isSticky)\n accentCount++;\n }\n const bgCell = cell.kind === GridCellKind.Protected ? theme.bgCellMedium : theme.bgCell;\n let fill;\n if (isSticky || bgCell !== outerTheme.bgCell) {\n fill = blend(bgCell, fill);\n }\n if (accentCount > 0 || rowDisabled) {\n if (rowDisabled) {\n fill = blend(theme.bgHeader, fill);\n }\n for (let i = 0; i < accentCount; i++) {\n fill = blend(theme.accentLight, fill);\n }\n } else {\n if ((prelightCells == null ? void 0 : prelightCells.some((pre) => pre[0] === c.sourceIndex && pre[1] === row)) === true) {\n fill = blend(theme.bgSearchResult, fill);\n }\n }\n if (highlightRegions !== void 0) {\n for (const region of highlightRegions) {\n const r = region.range;\n if (r.x <= c.sourceIndex && c.sourceIndex < r.x + r.width && r.y <= row && row < r.y + r.height) {\n fill = blend(region.color, fill);\n }\n }\n }\n if (fill !== void 0) {\n ctx.fillStyle = fill;\n if (prepResult !== void 0) {\n prepResult.fillStyle = fill;\n }\n ctx.fillRect(cellX, drawY, cellWidth, rh);\n }\n if (cell.style === \"faded\") {\n ctx.globalAlpha = 0.6;\n }\n const hoverValue = hoverValues.find((hv) => hv.item[0] === c.sourceIndex && hv.item[1] === row);\n if (cellWidth > 10 && !skipContents) {\n const cellFont = `${theme.baseFontStyle} ${theme.fontFamily}`;\n if (cellFont !== font) {\n ctx.font = cellFont;\n font = cellFont;\n }\n prepResult = drawCell(\n ctx,\n row,\n cell,\n c.sourceIndex,\n cellX,\n drawY,\n cellWidth,\n rh,\n accentCount > 0,\n theme,\n drawCustomCell,\n imageLoader,\n spriteManager,\n (_c = hoverValue == null ? void 0 : hoverValue.hoverAmount) != null ? _c : 0,\n hoverInfo,\n hyperWrapping,\n frameTime,\n prepResult,\n enqueue,\n getCellRenderer\n );\n }\n if (cell.style === \"faded\") {\n ctx.globalAlpha = 1;\n }\n toDraw--;\n if (drawingSpan) {\n ctx.restore();\n (_d = prepResult == null ? void 0 : prepResult.deprep) == null ? void 0 : _d.call(prepResult, { ctx });\n prepResult = void 0;\n reclip();\n font = colFont;\n ctx.font = colFont;\n }\n return toDraw <= 0;\n }\n );\n ctx.restore();\n return toDraw <= 0;\n }\n );\n return result;\n}\nfunction drawBlanks(ctx, effectiveColumns, allColumns, width, height, totalHeaderHeight, translateX, translateY, cellYOffset, rows, getRowHeight, getRowTheme, selectedRows, disabledRows, trailingRowType, drawRegions, damage, theme) {\n if (damage !== void 0 || effectiveColumns[effectiveColumns.length - 1] !== allColumns[effectiveColumns.length - 1])\n return;\n walkColumns(\n effectiveColumns,\n cellYOffset,\n translateX,\n translateY,\n totalHeaderHeight,\n (c, drawX, colDrawY, clipX, startRow) => {\n if (c !== effectiveColumns[effectiveColumns.length - 1])\n return;\n drawX += c.width;\n const x = Math.max(drawX, clipX);\n if (x > width)\n return;\n ctx.save();\n ctx.beginPath();\n ctx.rect(x, totalHeaderHeight + 1, 1e4, height - totalHeaderHeight - 1);\n ctx.clip();\n walkRowsInCol(\n startRow,\n colDrawY,\n height,\n rows,\n getRowHeight,\n trailingRowType,\n (drawY, row, rh, isSticky) => {\n if (!isSticky && drawRegions.length > 0 && !drawRegions.some(\n (dr) => intersectRect(drawX, drawY, 1e4, rh, dr.x, dr.y, dr.width, dr.height)\n )) {\n return;\n }\n const rowSelected = selectedRows.hasIndex(row);\n const rowDisabled = disabledRows.hasIndex(row);\n ctx.beginPath();\n const rowTheme = getRowTheme == null ? void 0 : getRowTheme(row);\n const blankTheme = rowTheme === void 0 ? theme : { ...theme, ...rowTheme };\n if (blankTheme.bgCell !== theme.bgCell) {\n ctx.fillStyle = blankTheme.bgCell;\n ctx.fillRect(drawX, drawY, 1e4, rh);\n }\n if (rowDisabled) {\n ctx.fillStyle = blankTheme.bgHeader;\n ctx.fillRect(drawX, drawY, 1e4, rh);\n }\n if (rowSelected) {\n ctx.fillStyle = blankTheme.accentLight;\n ctx.fillRect(drawX, drawY, 1e4, rh);\n }\n }\n );\n ctx.restore();\n }\n );\n}\nfunction overdrawStickyBoundaries(ctx, effectiveCols, width, height, lastRowSticky, rows, verticalBorder, getRowHeight, theme) {\n var _a;\n let drawFreezeBorder = false;\n for (const c of effectiveCols) {\n if (c.sticky)\n continue;\n drawFreezeBorder = verticalBorder(c.sourceIndex);\n break;\n }\n const hColor = (_a = theme.horizontalBorderColor) != null ? _a : theme.borderColor;\n const vColor = theme.borderColor;\n const drawX = drawFreezeBorder ? getStickyWidth(effectiveCols) : 0;\n if (drawX !== 0) {\n ctx.beginPath();\n ctx.moveTo(drawX + 0.5, 0);\n ctx.lineTo(drawX + 0.5, height);\n ctx.strokeStyle = blend(vColor, theme.bgCell);\n ctx.stroke();\n }\n if (lastRowSticky) {\n const h = getRowHeight(rows - 1);\n ctx.beginPath();\n ctx.moveTo(0, height - h + 0.5);\n ctx.lineTo(width, height - h + 0.5);\n ctx.strokeStyle = blend(hColor, theme.bgCell);\n ctx.stroke();\n }\n}\nfunction drawHighlightRings(ctx, width, height, cellXOffset, cellYOffset, translateX, translateY, mappedColumns, freezeColumns, headerHeight, groupHeaderHeight, rowHeight, lastRowSticky, rows, allHighlightRegions) {\n const highlightRegions = allHighlightRegions == null ? void 0 : allHighlightRegions.filter((x) => x.style !== \"no-outline\");\n if (highlightRegions === void 0 || highlightRegions.length === 0)\n return void 0;\n const drawRects = highlightRegions.map((h) => {\n var _a, _b, _c, _d, _e;\n const r = h.range;\n const topLeftBounds = computeBounds(\n r.x,\n r.y,\n width,\n height,\n groupHeaderHeight,\n headerHeight + groupHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n lastRowSticky,\n mappedColumns,\n rowHeight\n );\n if (r.width === 1 && r.height === 1) {\n if (r.x < freezeColumns) {\n return [{ color: h.color, style: (_a = h.style) != null ? _a : \"dashed\", rect: topLeftBounds }, void 0];\n }\n return [void 0, { color: h.color, style: (_b = h.style) != null ? _b : \"dashed\", rect: topLeftBounds }];\n }\n const bottomRightBounds = computeBounds(\n r.x + r.width - 1,\n r.y + r.height - 1,\n width,\n height,\n groupHeaderHeight,\n headerHeight + groupHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n lastRowSticky,\n mappedColumns,\n rowHeight\n );\n if (r.x < freezeColumns && r.x + r.width >= freezeColumns) {\n const freezeSectionRightBounds = computeBounds(\n freezeColumns - 1,\n r.y + r.height - 1,\n width,\n height,\n groupHeaderHeight,\n headerHeight + groupHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n lastRowSticky,\n mappedColumns,\n rowHeight\n );\n const unfreezeSectionleftBounds = computeBounds(\n freezeColumns,\n r.y + r.height - 1,\n width,\n height,\n groupHeaderHeight,\n headerHeight + groupHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n lastRowSticky,\n mappedColumns,\n rowHeight\n );\n return [\n {\n color: h.color,\n style: (_c = h.style) != null ? _c : \"dashed\",\n rect: {\n x: topLeftBounds.x,\n y: topLeftBounds.y,\n width: freezeSectionRightBounds.x + freezeSectionRightBounds.width - topLeftBounds.x,\n height: freezeSectionRightBounds.y + freezeSectionRightBounds.height - topLeftBounds.y\n }\n },\n {\n color: h.color,\n style: (_d = h.style) != null ? _d : \"dashed\",\n rect: {\n x: unfreezeSectionleftBounds.x,\n y: unfreezeSectionleftBounds.y,\n width: bottomRightBounds.x + bottomRightBounds.width - unfreezeSectionleftBounds.x,\n height: bottomRightBounds.y + bottomRightBounds.height - unfreezeSectionleftBounds.y\n }\n }\n ];\n } else {\n return [\n void 0,\n {\n color: h.color,\n style: (_e = h.style) != null ? _e : \"dashed\",\n rect: {\n x: topLeftBounds.x,\n y: topLeftBounds.y,\n width: bottomRightBounds.x + bottomRightBounds.width - topLeftBounds.x,\n height: bottomRightBounds.y + bottomRightBounds.height - topLeftBounds.y\n }\n }\n ];\n }\n });\n const stickyWidth = getStickyWidth(mappedColumns);\n const drawCb = () => {\n ctx.beginPath();\n ctx.save();\n let dashed = false;\n const setDashed = (dash) => {\n if (dashed === dash)\n return;\n ctx.setLineDash(dash ? [5, 3] : []);\n dashed = dash;\n };\n ctx.lineWidth = 1;\n for (const dr of drawRects) {\n const [s] = dr;\n if (s !== void 0 && intersectRect(0, 0, width, height, s.rect.x, s.rect.y, s.rect.width, s.rect.height)) {\n setDashed(s.style === \"dashed\");\n ctx.strokeStyle = withAlpha(s.color, 1);\n ctx.strokeRect(s.rect.x + 1, s.rect.y + 1, s.rect.width - 2, s.rect.height - 2);\n }\n }\n let clipped = false;\n for (const dr of drawRects) {\n const [, s] = dr;\n if (s !== void 0 && intersectRect(0, 0, width, height, s.rect.x, s.rect.y, s.rect.width, s.rect.height)) {\n setDashed(s.style === \"dashed\");\n if (!clipped && s.rect.x < stickyWidth) {\n ctx.rect(stickyWidth, 0, width, height);\n ctx.clip();\n clipped = true;\n }\n ctx.strokeStyle = withAlpha(s.color, 1);\n ctx.strokeRect(s.rect.x + 1, s.rect.y + 1, s.rect.width - 2, s.rect.height - 2);\n }\n }\n ctx.restore();\n };\n drawCb();\n return drawCb;\n}\nfunction drawFocusRing(ctx, width, height, cellYOffset, translateX, translateY, effectiveCols, allColumns, theme, totalHeaderHeight, selectedCell, getRowHeight, getCellContent, trailingRowType, fillHandle, rows) {\n var _a;\n if (selectedCell.current === void 0 || !effectiveCols.some((c) => {\n var _a2;\n return c.sourceIndex === ((_a2 = selectedCell.current) == null ? void 0 : _a2.cell[0]);\n }))\n return void 0;\n const [targetCol, targetRow] = selectedCell.current.cell;\n const cell = getCellContent(selectedCell.current.cell);\n const targetColSpan = (_a = cell.span) != null ? _a : [targetCol, targetCol];\n const isStickyRow = trailingRowType === \"sticky\" && targetRow === rows - 1;\n const stickRowHeight = trailingRowType === \"sticky\" && !isStickyRow ? getRowHeight(rows - 1) - 1 : 0;\n let drawCb = void 0;\n walkColumns(\n effectiveCols,\n cellYOffset,\n translateX,\n translateY,\n totalHeaderHeight,\n (col, drawX, colDrawY, clipX, startRow) => {\n if (col.sticky && targetCol > col.sourceIndex)\n return;\n if (col.sourceIndex < targetColSpan[0] || col.sourceIndex > targetColSpan[1]) {\n return;\n }\n walkRowsInCol(startRow, colDrawY, height, rows, getRowHeight, trailingRowType, (drawY, row, rh) => {\n if (row !== targetRow)\n return;\n let cellX = drawX;\n let cellWidth = col.width;\n if (cell.span !== void 0) {\n const areas = getSpanBounds(cell.span, drawX, drawY, col.width, rh, col, allColumns);\n const area = col.sticky ? areas[0] : areas[1];\n if (area !== void 0) {\n cellX = area.x;\n cellWidth = area.width;\n }\n }\n drawCb = () => {\n var _a2, _b, _c, _d;\n if (clipX > cellX && !col.sticky) {\n ctx.beginPath();\n ctx.rect(clipX, 0, width - clipX, height);\n ctx.clip();\n }\n ctx.beginPath();\n ctx.rect(cellX + 0.5, drawY + 0.5, cellWidth, rh);\n ctx.strokeStyle = (_b = (_a2 = col.themeOverride) == null ? void 0 : _a2.accentColor) != null ? _b : theme.accentColor;\n ctx.lineWidth = 1;\n ctx.stroke();\n if (fillHandle) {\n ctx.beginPath();\n ctx.rect(cellX + cellWidth - 4, drawY + rh - 4, 4, 4);\n ctx.fillStyle = (_d = (_c = col.themeOverride) == null ? void 0 : _c.accentColor) != null ? _d : theme.accentColor;\n ctx.fill();\n }\n };\n return true;\n });\n return true;\n }\n );\n if (drawCb === void 0)\n return void 0;\n const result = () => {\n ctx.save();\n ctx.beginPath();\n ctx.rect(0, totalHeaderHeight, width, height - totalHeaderHeight - stickRowHeight);\n ctx.clip();\n drawCb == null ? void 0 : drawCb();\n ctx.restore();\n };\n result();\n return result;\n}\nfunction getLastRow(effectiveColumns, height, totalHeaderHeight, translateX, translateY, cellYOffset, rows, getRowHeight, trailingRowType) {\n let result = 0;\n walkColumns(\n effectiveColumns,\n cellYOffset,\n translateX,\n translateY,\n totalHeaderHeight,\n (_c, __drawX, colDrawY, _clipX, startRow) => {\n walkRowsInCol(\n startRow,\n colDrawY,\n height,\n rows,\n getRowHeight,\n trailingRowType,\n (_drawY, row, _rh, isSticky) => {\n if (!isSticky) {\n result = Math.max(row, result);\n }\n }\n );\n return true;\n }\n );\n return result;\n}\nfunction computeCanBlit(current, last) {\n if (last === void 0)\n return false;\n if (current.width !== last.width || current.height !== last.height || current.theme !== last.theme || current.headerHeight !== last.headerHeight || current.rowHeight !== last.rowHeight || current.rows !== last.rows || current.getRowThemeOverride !== last.getRowThemeOverride || current.isFocused !== last.isFocused || current.isResizing !== last.isResizing || current.verticalBorder !== last.verticalBorder || current.getCellContent !== last.getCellContent || current.highlightRegions !== last.highlightRegions || current.selection !== last.selection || current.dragAndDropState !== last.dragAndDropState || current.prelightCells !== last.prelightCells || current.touchMode !== last.touchMode || current.scrolling !== last.scrolling) {\n return false;\n }\n if (current.mappedColumns !== last.mappedColumns) {\n if (current.mappedColumns.length > 100 || current.mappedColumns.length !== last.mappedColumns.length) {\n return false;\n }\n let resized;\n for (let i = 0; i < current.mappedColumns.length; i++) {\n const curCol = current.mappedColumns[i];\n const lastCol = last.mappedColumns[i];\n if (deepEqual(curCol, lastCol))\n continue;\n if (resized !== void 0)\n return false;\n if (curCol.width === lastCol.width)\n return false;\n const { width, ...curRest } = curCol;\n const { width: lastWidth, ...lastRest } = lastCol;\n if (!deepEqual(curRest, lastRest))\n return false;\n resized = i;\n }\n if (resized === void 0) {\n return true;\n }\n return resized;\n }\n return true;\n}\nfunction drawGrid(arg, lastArg) {\n var _a, _b;\n const {\n canvas,\n headerCanvas,\n width,\n height,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n mappedColumns,\n enableGroups,\n freezeColumns,\n dragAndDropState,\n theme,\n drawFocus,\n headerHeight,\n groupHeaderHeight,\n disabledRows,\n rowHeight,\n verticalBorder,\n isResizing,\n selection,\n fillHandle,\n lastRowSticky: trailingRowType,\n rows,\n getCellContent,\n getGroupDetails,\n getRowThemeOverride,\n isFocused,\n drawCustomCell,\n drawHeaderCallback,\n prelightCells,\n highlightRegions,\n imageLoader,\n lastBlitData,\n hoverValues,\n hyperWrapping,\n hoverInfo,\n spriteManager,\n scrolling,\n touchMode,\n enqueue,\n getCellRenderer,\n renderStrategy,\n bufferA,\n bufferB\n } = arg;\n let { damage } = arg;\n if (width === 0 || height === 0)\n return;\n const doubleBuffer = renderStrategy === \"double-buffer\";\n const dpr = scrolling ? 1 : Math.ceil((_a = window.devicePixelRatio) != null ? _a : 1);\n const canBlit = renderStrategy !== \"direct\" && computeCanBlit(arg, lastArg);\n if (canvas.width !== width * dpr || canvas.height !== height * dpr) {\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvas.style.width = width + \"px\";\n canvas.style.height = height + \"px\";\n }\n const overlayCanvas = headerCanvas;\n const totalHeaderHeight = enableGroups ? groupHeaderHeight + headerHeight : headerHeight;\n const overlayHeight = totalHeaderHeight + 1;\n if (overlayCanvas.width !== width * dpr || overlayCanvas.height !== overlayHeight * dpr) {\n overlayCanvas.width = width * dpr;\n overlayCanvas.height = overlayHeight * dpr;\n overlayCanvas.style.width = width + \"px\";\n overlayCanvas.style.height = overlayHeight + \"px\";\n }\n if (doubleBuffer && (bufferA.width !== width * dpr || bufferA.height !== height * dpr)) {\n bufferA.width = width * dpr;\n bufferA.height = height * dpr;\n }\n if (doubleBuffer && (bufferB.width !== width * dpr || bufferB.height !== height * dpr)) {\n bufferB.width = width * dpr;\n bufferB.height = height * dpr;\n }\n const last = lastBlitData.current;\n if (canBlit === true && cellXOffset === (last == null ? void 0 : last.cellXOffset) && cellYOffset === (last == null ? void 0 : last.cellYOffset) && translateX === (last == null ? void 0 : last.translateX) && translateY === (last == null ? void 0 : last.translateY))\n return;\n let mainCtx = null;\n if (doubleBuffer) {\n mainCtx = canvas.getContext(\"2d\", {\n alpha: false\n });\n }\n const overlayCtx = overlayCanvas.getContext(\"2d\", {\n alpha: false\n });\n let targetBuffer;\n if (!doubleBuffer) {\n targetBuffer = canvas;\n } else if (damage !== void 0) {\n targetBuffer = (last == null ? void 0 : last.lastBuffer) === \"b\" ? bufferB : bufferA;\n } else {\n targetBuffer = (last == null ? void 0 : last.lastBuffer) === \"b\" ? bufferA : bufferB;\n }\n const targetCtx = targetBuffer.getContext(\"2d\", {\n alpha: false\n });\n const blitSource = doubleBuffer ? targetBuffer === bufferA ? bufferB : bufferA : canvas;\n if (overlayCtx === null || targetCtx === null)\n return;\n const getRowHeight = typeof rowHeight === \"number\" ? () => rowHeight : rowHeight;\n overlayCtx.save();\n overlayCtx.beginPath();\n targetCtx.save();\n targetCtx.beginPath();\n overlayCtx.textBaseline = \"middle\";\n targetCtx.textBaseline = \"middle\";\n if (dpr !== 1) {\n overlayCtx.scale(dpr, dpr);\n targetCtx.scale(dpr, dpr);\n }\n const effectiveCols = getEffectiveColumns(mappedColumns, cellXOffset, width, dragAndDropState, translateX);\n let drawRegions = [];\n const mustDrawFocusOnHeader = drawFocus && ((_b = selection.current) == null ? void 0 : _b.cell[1]) === cellYOffset && translateY === 0;\n const drawHeaderTexture = () => {\n var _a2, _b2;\n drawGridHeaders(\n overlayCtx,\n effectiveCols,\n enableGroups,\n hoverInfo,\n width,\n translateX,\n headerHeight,\n groupHeaderHeight,\n dragAndDropState,\n isResizing,\n selection,\n theme,\n spriteManager,\n hoverValues,\n verticalBorder,\n getGroupDetails,\n damage,\n drawHeaderCallback,\n touchMode\n );\n drawGridLines(\n overlayCtx,\n effectiveCols,\n cellYOffset,\n translateX,\n translateY,\n width,\n height,\n void 0,\n void 0,\n groupHeaderHeight,\n totalHeaderHeight,\n getRowHeight,\n getRowThemeOverride,\n verticalBorder,\n trailingRowType,\n rows,\n theme,\n true\n );\n overlayCtx.beginPath();\n overlayCtx.moveTo(0, overlayHeight - 0.5);\n overlayCtx.lineTo(width, overlayHeight - 0.5);\n overlayCtx.strokeStyle = blend(\n (_b2 = (_a2 = theme.headerBottomBorderColor) != null ? _a2 : theme.horizontalBorderColor) != null ? _b2 : theme.borderColor,\n theme.bgHeader\n );\n overlayCtx.stroke();\n if (mustDrawFocusOnHeader) {\n drawFocusRing(\n overlayCtx,\n width,\n height,\n cellYOffset,\n translateX,\n translateY,\n effectiveCols,\n mappedColumns,\n theme,\n totalHeaderHeight,\n selection,\n getRowHeight,\n getCellContent,\n trailingRowType,\n fillHandle,\n rows\n );\n }\n };\n if (damage !== void 0) {\n let doHeaders = false;\n damage = damage.filter((x) => {\n doHeaders = doHeaders || x[1] < 0;\n return x[1] < 0 || intersectRect(cellXOffset, cellYOffset, effectiveCols.length, 300, x[0], x[1], 1, 1) || intersectRect(0, cellYOffset, freezeColumns, 300, x[0], x[1], 1, 1) || trailingRowType && intersectRect(cellXOffset, rows - 1, effectiveCols.length, 1, x[0], x[1], 1, 1);\n });\n if (damage.length > 0) {\n clipDamage(\n targetCtx,\n effectiveCols,\n width,\n height,\n groupHeaderHeight,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n trailingRowType,\n damage,\n true\n );\n targetCtx.fillStyle = theme.bgCell;\n targetCtx.fillRect(0, totalHeaderHeight + 1, width, height - totalHeaderHeight - 1);\n drawCells(\n targetCtx,\n effectiveCols,\n mappedColumns,\n height,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n getCellContent,\n getGroupDetails,\n getRowThemeOverride,\n disabledRows,\n isFocused,\n drawFocus,\n trailingRowType,\n drawRegions,\n damage,\n selection,\n prelightCells,\n highlightRegions,\n drawCustomCell,\n imageLoader,\n spriteManager,\n hoverValues,\n hoverInfo,\n hyperWrapping,\n theme,\n enqueue,\n getCellRenderer\n );\n if (fillHandle && drawFocus && selection.current !== void 0 && damage.some((x) => {\n var _a2, _b2;\n return x[0] === ((_a2 = selection.current) == null ? void 0 : _a2.cell[0]) && x[1] === ((_b2 = selection.current) == null ? void 0 : _b2.cell[1]);\n })) {\n drawFocusRing(\n targetCtx,\n width,\n height,\n cellYOffset,\n translateX,\n translateY,\n effectiveCols,\n mappedColumns,\n theme,\n totalHeaderHeight,\n selection,\n getRowHeight,\n getCellContent,\n trailingRowType,\n fillHandle,\n rows\n );\n }\n }\n if (doHeaders) {\n clipDamage(\n overlayCtx,\n effectiveCols,\n width,\n totalHeaderHeight,\n groupHeaderHeight,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n trailingRowType,\n damage,\n false\n );\n drawHeaderTexture();\n }\n targetCtx.restore();\n overlayCtx.restore();\n if (mainCtx !== null) {\n mainCtx.fillStyle = theme.bgCell;\n mainCtx.fillRect(0, 0, width, height);\n mainCtx.drawImage(targetCtx.canvas, 0, 0);\n }\n return;\n }\n if (canBlit !== true || cellXOffset !== (last == null ? void 0 : last.cellXOffset) || translateX !== (last == null ? void 0 : last.translateX) || mustDrawFocusOnHeader !== (last == null ? void 0 : last.mustDrawFocusOnHeader)) {\n drawHeaderTexture();\n }\n if (canBlit === true) {\n assert(blitSource !== void 0 && last !== void 0);\n const { regions } = blitLastFrame(\n targetCtx,\n blitSource,\n last,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n trailingRowType === \"sticky\",\n width,\n height,\n rows,\n totalHeaderHeight,\n dpr,\n mappedColumns,\n effectiveCols,\n rowHeight,\n doubleBuffer\n );\n drawRegions = regions;\n } else if (canBlit !== false) {\n assert(last !== void 0);\n const resizedCol = canBlit;\n drawRegions = blitResizedCol(\n last,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n width,\n height,\n totalHeaderHeight,\n effectiveCols,\n resizedCol\n );\n }\n overdrawStickyBoundaries(\n targetCtx,\n effectiveCols,\n width,\n height,\n trailingRowType === \"sticky\",\n rows,\n verticalBorder,\n getRowHeight,\n theme\n );\n const focusRedraw = drawFocus ? drawFocusRing(\n targetCtx,\n width,\n height,\n cellYOffset,\n translateX,\n translateY,\n effectiveCols,\n mappedColumns,\n theme,\n totalHeaderHeight,\n selection,\n getRowHeight,\n getCellContent,\n trailingRowType,\n fillHandle,\n rows\n ) : void 0;\n const highlightRedraw = drawHighlightRings(\n targetCtx,\n width,\n height,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n mappedColumns,\n freezeColumns,\n headerHeight,\n groupHeaderHeight,\n rowHeight,\n trailingRowType === \"sticky\",\n rows,\n highlightRegions\n );\n targetCtx.fillStyle = theme.bgCell;\n if (drawRegions.length > 0) {\n targetCtx.beginPath();\n for (const r of drawRegions) {\n targetCtx.rect(r.x, r.y, r.width, r.height);\n }\n targetCtx.clip();\n targetCtx.fill();\n targetCtx.beginPath();\n } else {\n targetCtx.fillRect(0, 0, width, height);\n }\n const spans = drawCells(\n targetCtx,\n effectiveCols,\n mappedColumns,\n height,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n getCellContent,\n getGroupDetails,\n getRowThemeOverride,\n disabledRows,\n isFocused,\n drawFocus,\n trailingRowType,\n drawRegions,\n damage,\n selection,\n prelightCells,\n highlightRegions,\n drawCustomCell,\n imageLoader,\n spriteManager,\n hoverValues,\n hoverInfo,\n hyperWrapping,\n theme,\n enqueue,\n getCellRenderer\n );\n drawBlanks(\n targetCtx,\n effectiveCols,\n mappedColumns,\n width,\n height,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n getRowThemeOverride,\n selection.rows,\n disabledRows,\n trailingRowType,\n drawRegions,\n damage,\n theme\n );\n drawGridLines(\n targetCtx,\n effectiveCols,\n cellYOffset,\n translateX,\n translateY,\n width,\n height,\n drawRegions,\n spans,\n groupHeaderHeight,\n totalHeaderHeight,\n getRowHeight,\n getRowThemeOverride,\n verticalBorder,\n trailingRowType,\n rows,\n theme\n );\n focusRedraw == null ? void 0 : focusRedraw();\n highlightRedraw == null ? void 0 : highlightRedraw();\n if (mainCtx !== null) {\n mainCtx.fillStyle = theme.bgCell;\n mainCtx.fillRect(0, 0, width, height);\n mainCtx.drawImage(targetCtx.canvas, 0, 0);\n }\n const lastRowDrawn = getLastRow(\n effectiveCols,\n height,\n totalHeaderHeight,\n translateX,\n translateY,\n cellYOffset,\n rows,\n getRowHeight,\n trailingRowType\n );\n imageLoader == null ? void 0 : imageLoader.setWindow(\n {\n x: cellXOffset,\n y: cellYOffset,\n width: effectiveCols.length,\n height: lastRowDrawn - cellYOffset\n },\n freezeColumns\n );\n lastBlitData.current = {\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n mustDrawFocusOnHeader,\n lastBuffer: doubleBuffer ? targetBuffer === bufferA ? \"a\" : \"b\" : void 0\n };\n targetCtx.restore();\n overlayCtx.restore();\n}\nfunction walkRowsInCol(startRow, drawY, height, rows, getRowHeight, trailingRowType, cb) {\n let y = drawY;\n let row = startRow;\n let doSticky = trailingRowType === \"sticky\";\n while (y < height || doSticky) {\n const doingSticky = doSticky && y >= height;\n if (doingSticky) {\n doSticky = false;\n row = rows - 1;\n }\n const rh = getRowHeight(row);\n if (doingSticky) {\n y = height - rh;\n }\n const isMovedStickyRow = doSticky && row === rows - 1;\n if (!isMovedStickyRow && cb(y, row, rh, doingSticky, trailingRowType !== \"none\" && row === rows - 1) === true) {\n break;\n }\n if (doingSticky) {\n break;\n }\n y += rh;\n row++;\n }\n}\nfunction walkColumns(effectiveCols, cellYOffset, translateX, translateY, totalHeaderHeight, cb) {\n let x = 0;\n let clipX = 0;\n const drawY = totalHeaderHeight + translateY;\n for (const c of effectiveCols) {\n const drawX = c.sticky ? clipX : x + translateX;\n if (cb(c, drawX, drawY, clipX, cellYOffset) === true) {\n break;\n }\n x += c.width;\n clipX += c.sticky ? c.width : 0;\n }\n}\nfunction walkGroups(effectiveCols, width, translateX, groupHeaderHeight, cb) {\n var _a;\n let x = 0;\n let clipX = 0;\n for (let index = 0; index < effectiveCols.length; index++) {\n const startCol = effectiveCols[index];\n let end = index + 1;\n let boxWidth = startCol.width;\n if (startCol.sticky) {\n clipX += boxWidth;\n }\n while (end < effectiveCols.length && isGroupEqual(effectiveCols[end].group, startCol.group) && effectiveCols[end].sticky === effectiveCols[index].sticky) {\n const endCol = effectiveCols[end];\n boxWidth += endCol.width;\n end++;\n index++;\n if (endCol.sticky) {\n clipX += endCol.width;\n }\n }\n const t = startCol.sticky ? 0 : translateX;\n const localX = x + t;\n const delta = startCol.sticky ? 0 : Math.max(0, clipX - localX);\n const w = Math.min(boxWidth - delta, width - (localX + delta));\n cb(\n [startCol.sourceIndex, effectiveCols[end - 1].sourceIndex],\n (_a = startCol.group) != null ? _a : \"\",\n localX + delta,\n 0,\n w,\n groupHeaderHeight\n );\n x += boxWidth;\n }\n}\n\n// src/data-grid/animation-manager.ts\nimport clamp from \"lodash/clamp.js\";\nvar hoverTime = 80;\nfunction easeOutCubic(x) {\n const x1 = x - 1;\n return x1 * x1 * x1 + 1;\n}\nvar AnimationManager = class {\n constructor(callback) {\n this.currentHoveredItem = void 0;\n this.leavingItems = [];\n this.areSameItems = (left, right) => {\n return (left == null ? void 0 : left[0]) === (right == null ? void 0 : right[0]) && (left == null ? void 0 : left[1]) === (right == null ? void 0 : right[1]);\n };\n this.addToLeavingItems = (item) => {\n const isAlreadyLeaving = this.leavingItems.some((i) => this.areSameItems(i.item, item.item));\n if (isAlreadyLeaving) {\n return;\n }\n this.leavingItems.push(item);\n };\n /**\n * @returns the hover amount of the item, if it was leaving (0 if not).\n */\n this.removeFromLeavingItems = (item) => {\n var _a;\n const leavingItem = this.leavingItems.find((e) => this.areSameItems(e.item, item));\n this.leavingItems = this.leavingItems.filter((i) => i !== leavingItem);\n return (_a = leavingItem == null ? void 0 : leavingItem.hoverAmount) != null ? _a : 0;\n };\n this.cleanUpLeavingElements = () => {\n this.leavingItems = this.leavingItems.filter((i) => i.hoverAmount > 0);\n };\n this.shouldStep = () => {\n const hasLeavingItems = this.leavingItems.length > 0;\n const currentHoveredIsAnimating = this.currentHoveredItem !== void 0 && this.currentHoveredItem.hoverAmount < 1;\n return hasLeavingItems || currentHoveredIsAnimating;\n };\n this.getAnimatingItems = () => {\n if (this.currentHoveredItem !== void 0) {\n return [...this.leavingItems, this.currentHoveredItem];\n }\n return this.leavingItems.map((x) => ({ ...x, hoverAmount: easeOutCubic(x.hoverAmount) }));\n };\n this.step = (timestamp) => {\n if (this.lastAnimationTime === void 0) {\n this.lastAnimationTime = timestamp;\n } else {\n const step = timestamp - this.lastAnimationTime;\n const delta = step / hoverTime;\n for (const item of this.leavingItems) {\n item.hoverAmount = clamp(item.hoverAmount - delta, 0, 1);\n }\n if (this.currentHoveredItem !== void 0) {\n this.currentHoveredItem.hoverAmount = clamp(this.currentHoveredItem.hoverAmount + delta, 0, 1);\n }\n const animating = this.getAnimatingItems();\n this.callback(animating);\n this.cleanUpLeavingElements();\n }\n if (this.shouldStep()) {\n this.lastAnimationTime = timestamp;\n window.requestAnimationFrame(this.step);\n } else {\n this.lastAnimationTime = void 0;\n }\n };\n this.setHovered = (item) => {\n var _a;\n if (this.areSameItems((_a = this.currentHoveredItem) == null ? void 0 : _a.item, item)) {\n return;\n }\n if (this.currentHoveredItem !== void 0) {\n this.addToLeavingItems(this.currentHoveredItem);\n }\n if (item !== void 0) {\n const hoverAmount = this.removeFromLeavingItems(item);\n this.currentHoveredItem = {\n item,\n hoverAmount\n };\n } else {\n this.currentHoveredItem = void 0;\n }\n if (this.lastAnimationTime === void 0) {\n window.requestAnimationFrame(this.step);\n }\n };\n this.callback = callback;\n }\n};\n\n// src/common/browser-detect.ts\nvar Lazy = class {\n constructor(fn) {\n this.fn = fn;\n }\n get value() {\n var _a;\n return (_a = this.val) != null ? _a : this.val = this.fn();\n }\n};\nfunction lazy(fn) {\n return new Lazy(fn);\n}\nvar browserIsFirefox = lazy(() => window.navigator.userAgent.includes(\"Firefox\"));\nvar browserIsSafari = lazy(\n () => window.navigator.userAgent.includes(\"Mac OS\") && window.navigator.userAgent.includes(\"Safari\") && !window.navigator.userAgent.includes(\"Chrome\")\n);\nvar browserIsOSX = lazy(() => window.navigator.platform.toLowerCase().startsWith(\"mac\"));\n\n// src/data-grid/use-animation-queue.ts\nimport * as React7 from \"react\";\nfunction hasItem(arr, item) {\n for (const element of arr) {\n if (element[0] === item[0] && element[1] === item[1])\n return true;\n }\n return false;\n}\nfunction useAnimationQueue(draw) {\n const queue = React7.useRef([]);\n const seq = React7.useRef(0);\n const drawRef = React7.useRef(draw);\n drawRef.current = draw;\n const loop = React7.useCallback(() => {\n const requeue = () => window.requestAnimationFrame(fn);\n const fn = () => {\n const toDraw = queue.current;\n queue.current = [];\n drawRef.current(toDraw);\n if (queue.current.length > 0) {\n seq.current++;\n } else {\n seq.current = 0;\n }\n };\n window.requestAnimationFrame(seq.current > 600 ? requeue : fn);\n }, []);\n return React7.useCallback(\n (item) => {\n if (hasItem(queue.current, item))\n return;\n if (queue.current.length === 0) {\n loop();\n }\n queue.current.push(item);\n },\n [loop]\n );\n}\n\n// src/data-grid/data-grid.tsx\nvar getRowData = (cell, getCellRenderer) => {\n var _a;\n if (cell.kind === GridCellKind.Custom)\n return cell.copyData;\n const r = getCellRenderer == null ? void 0 : getCellRenderer(cell);\n return (_a = r == null ? void 0 : r.getAccessibilityString(cell)) != null ? _a : \"\";\n};\nvar DataGrid = (p, forwardedRef) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const {\n width,\n height,\n accessibilityHeight,\n columns,\n cellXOffset: cellXOffsetReal,\n cellYOffset,\n headerHeight,\n fillHandle = false,\n groupHeaderHeight,\n rowHeight,\n rows,\n getCellContent,\n getRowThemeOverride,\n onHeaderMenuClick,\n enableGroups,\n isFilling,\n onCanvasFocused,\n onCanvasBlur,\n isFocused,\n selection,\n freezeColumns,\n onContextMenu,\n trailingRowType,\n fixedShadowX = true,\n fixedShadowY = true,\n drawFocusRing: drawFocusRing2 = true,\n onMouseDown,\n onMouseUp,\n onMouseMoveRaw,\n onMouseMove,\n onItemHovered,\n dragAndDropState,\n firstColAccessible,\n onKeyDown,\n onKeyUp,\n highlightRegions,\n canvasRef,\n onDragStart,\n onDragEnd,\n eventTargetRef,\n isResizing,\n isDragging,\n isDraggable = false,\n allowResize,\n disabledRows,\n getGroupDetails,\n theme,\n prelightCells,\n headerIcons,\n verticalBorder,\n drawHeader: drawHeaderCallback,\n drawCustomCell,\n onCellFocused,\n onDragOverCell,\n onDrop,\n onDragLeave,\n imageWindowLoader,\n smoothScrollX = false,\n smoothScrollY = false,\n experimental,\n getCellRenderer\n } = p;\n const translateX = (_a = p.translateX) != null ? _a : 0;\n const translateY = (_b = p.translateY) != null ? _b : 0;\n const cellXOffset = Math.max(freezeColumns, Math.min(columns.length - 1, cellXOffsetReal));\n const ref = React8.useRef(null);\n const imageWindowLoaderInternal = React8.useMemo(() => new image_window_loader_default(), []);\n const imageLoader = imageWindowLoader != null ? imageWindowLoader : imageWindowLoaderInternal;\n const damageRegion = React8.useRef();\n const [scrolling, setScrolling] = React8.useState(false);\n const hoverValues = React8.useRef([]);\n const lastBlitData = React8.useRef();\n const [hoveredItemInfo, setHoveredItemInfo] = React8.useState();\n const [hoveredOnEdge, setHoveredOnEdge] = React8.useState();\n const overlayRef = React8.useRef(null);\n const [lastWasTouch, setLastWasTouch] = React8.useState(false);\n const lastWasTouchRef = React8.useRef(lastWasTouch);\n lastWasTouchRef.current = lastWasTouch;\n const spriteManager = React8.useMemo(\n () => new SpriteManager(headerIcons, () => {\n lastArgsRef.current = void 0;\n lastDrawRef.current();\n }),\n [headerIcons]\n );\n const totalHeaderHeight = enableGroups ? groupHeaderHeight + headerHeight : headerHeight;\n const scrollingStopRef = React8.useRef(-1);\n const disableFirefoxRescaling = (experimental == null ? void 0 : experimental.enableFirefoxRescaling) !== true;\n React8.useLayoutEffect(() => {\n if (!browserIsFirefox.value || window.devicePixelRatio === 1 || disableFirefoxRescaling)\n return;\n if (scrollingStopRef.current !== -1) {\n setScrolling(true);\n }\n window.clearTimeout(scrollingStopRef.current);\n scrollingStopRef.current = window.setTimeout(() => {\n setScrolling(false);\n scrollingStopRef.current = -1;\n }, 200);\n }, [cellYOffset, cellXOffset, translateX, translateY, disableFirefoxRescaling]);\n const mappedColumns = useMappedColumns(columns, freezeColumns);\n const getBoundsForItem = React8.useCallback(\n (canvas, col, row) => {\n const rect = canvas.getBoundingClientRect();\n if (col >= mappedColumns.length || row >= rows) {\n return void 0;\n }\n const scale = rect.width / width;\n const result = computeBounds(\n col,\n row,\n width,\n height,\n groupHeaderHeight,\n totalHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n trailingRowType === \"sticky\",\n mappedColumns,\n rowHeight\n );\n if (scale !== 1) {\n result.x *= scale;\n result.y *= scale;\n result.width *= scale;\n result.height *= scale;\n }\n result.x += rect.x;\n result.y += rect.y;\n return result;\n },\n [\n width,\n height,\n groupHeaderHeight,\n totalHeaderHeight,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n rows,\n freezeColumns,\n trailingRowType,\n mappedColumns,\n rowHeight\n ]\n );\n const getMouseArgsForPosition = React8.useCallback(\n (canvas, posX, posY, ev) => {\n var _a2, _b2;\n const rect = canvas.getBoundingClientRect();\n const scale = rect.width / width;\n const x = (posX - rect.left) / scale;\n const y = (posY - rect.top) / scale;\n const edgeDetectionBuffer = 5;\n const effectiveCols = getEffectiveColumns(mappedColumns, cellXOffset, width, void 0, translateX);\n let button = 0;\n if (ev instanceof MouseEvent) {\n button = ev.button;\n }\n const col = getColumnIndexForX(x, effectiveCols, translateX);\n const row = getRowIndexForY(\n y,\n height,\n enableGroups,\n headerHeight,\n groupHeaderHeight,\n rows,\n rowHeight,\n cellYOffset,\n translateY,\n trailingRowType === \"sticky\"\n );\n const shiftKey = (ev == null ? void 0 : ev.shiftKey) === true;\n const ctrlKey = (ev == null ? void 0 : ev.ctrlKey) === true;\n const metaKey = (ev == null ? void 0 : ev.metaKey) === true;\n const isTouch = ev !== void 0 && !(ev instanceof MouseEvent) || (ev == null ? void 0 : ev.pointerType) === \"touch\";\n const edgeSize = 20;\n const scrollEdge = [\n Math.abs(x) < edgeSize ? -1 : Math.abs(rect.width - x) < edgeSize ? 1 : 0,\n Math.abs(y) < edgeSize ? -1 : Math.abs(rect.height - y) < edgeSize ? 1 : 0\n ];\n let result;\n if (col === -1 || y < 0 || x < 0 || row === void 0 || x > width || y > height) {\n const horizontal = x > width ? -1 : x < 0 ? 1 : 0;\n const vertical = y > height ? 1 : y < 0 ? -1 : 0;\n let isEdge = false;\n if (col === -1 && row === -1) {\n const b = getBoundsForItem(canvas, mappedColumns.length - 1, -1);\n assert(b !== void 0);\n isEdge = posX < b.x + b.width + edgeDetectionBuffer;\n }\n const isMaybeScrollbar = x > width && x < width + getScrollBarWidth() || y > height && y < height + getScrollBarWidth();\n result = {\n kind: outOfBoundsKind,\n location: [col !== -1 ? col : x < 0 ? 0 : mappedColumns.length - 1, row != null ? row : rows - 1],\n direction: [horizontal, vertical],\n shiftKey,\n ctrlKey,\n metaKey,\n isEdge,\n isTouch,\n button,\n scrollEdge,\n isMaybeScrollbar\n };\n } else if (row <= -1) {\n let bounds = getBoundsForItem(canvas, col, row);\n assert(bounds !== void 0);\n let isEdge = bounds !== void 0 && bounds.x + bounds.width - posX <= edgeDetectionBuffer;\n const previousCol = col - 1;\n if (posX - bounds.x <= edgeDetectionBuffer && previousCol >= 0) {\n isEdge = true;\n bounds = getBoundsForItem(canvas, previousCol, row);\n assert(bounds !== void 0);\n result = {\n kind: enableGroups && row === -2 ? groupHeaderKind : headerKind,\n location: [previousCol, row],\n bounds,\n group: (_a2 = mappedColumns[previousCol].group) != null ? _a2 : \"\",\n isEdge,\n shiftKey,\n ctrlKey,\n metaKey,\n isTouch,\n localEventX: posX - bounds.x,\n localEventY: posY - bounds.y,\n button,\n scrollEdge\n };\n } else {\n result = {\n kind: enableGroups && row === -2 ? groupHeaderKind : headerKind,\n group: (_b2 = mappedColumns[col].group) != null ? _b2 : \"\",\n location: [col, row],\n bounds,\n isEdge,\n shiftKey,\n ctrlKey,\n metaKey,\n isTouch,\n localEventX: posX - bounds.x,\n localEventY: posY - bounds.y,\n button,\n scrollEdge\n };\n }\n } else {\n const bounds = getBoundsForItem(canvas, col, row);\n assert(bounds !== void 0);\n const isEdge = bounds !== void 0 && bounds.x + bounds.width - posX < edgeDetectionBuffer;\n const isFillHandle = fillHandle && bounds !== void 0 && bounds.x + bounds.width - posX < 6 && bounds.y + bounds.height - posY < 6;\n result = {\n kind: \"cell\",\n location: [col, row],\n bounds,\n isEdge,\n shiftKey,\n ctrlKey,\n isFillHandle,\n metaKey,\n isTouch,\n localEventX: posX - bounds.x,\n localEventY: posY - bounds.y,\n button,\n scrollEdge\n };\n }\n return result;\n },\n [\n mappedColumns,\n cellXOffset,\n width,\n translateX,\n height,\n enableGroups,\n headerHeight,\n groupHeaderHeight,\n rows,\n rowHeight,\n cellYOffset,\n translateY,\n trailingRowType,\n getBoundsForItem,\n fillHandle\n ]\n );\n function isSameItem(item, other) {\n if (item === other)\n return true;\n return (item == null ? void 0 : item.kind) === (other == null ? void 0 : other.kind) && (item == null ? void 0 : item.location[0]) === (other == null ? void 0 : other.location[0]) && (item == null ? void 0 : item.location[1]) === (other == null ? void 0 : other.location[1]);\n }\n const [hoveredItem] = hoveredItemInfo != null ? hoveredItemInfo : [];\n const enqueueRef = React8.useRef((_item) => {\n });\n const hoverInfoRef = React8.useRef(hoveredItemInfo);\n hoverInfoRef.current = hoveredItemInfo;\n const [bufferA, bufferB] = React8.useMemo(() => {\n const a = document.createElement(\"canvas\");\n const b = document.createElement(\"canvas\");\n a.style[\"display\"] = \"none\";\n a.style[\"opacity\"] = \"0\";\n a.style[\"position\"] = \"fixed\";\n b.style[\"display\"] = \"none\";\n b.style[\"opacity\"] = \"0\";\n b.style[\"position\"] = \"fixed\";\n return [a, b];\n }, []);\n React8.useLayoutEffect(() => {\n document.documentElement.append(bufferA);\n document.documentElement.append(bufferB);\n return () => {\n bufferA.remove();\n bufferB.remove();\n };\n }, [bufferA, bufferB]);\n const lastArgsRef = React8.useRef();\n const draw = React8.useCallback(() => {\n var _a2, _b2;\n const canvas = ref.current;\n const overlay = overlayRef.current;\n if (canvas === null || overlay === null)\n return;\n const last = lastArgsRef.current;\n const current = {\n canvas,\n bufferA,\n bufferB,\n headerCanvas: overlay,\n width,\n height,\n cellXOffset,\n cellYOffset,\n translateX: Math.round(translateX),\n translateY: Math.round(translateY),\n mappedColumns,\n enableGroups,\n freezeColumns,\n dragAndDropState,\n theme,\n headerHeight,\n groupHeaderHeight,\n disabledRows: disabledRows != null ? disabledRows : CompactSelection.empty(),\n rowHeight,\n verticalBorder,\n isResizing,\n isFocused,\n selection,\n fillHandle,\n lastRowSticky: trailingRowType,\n rows,\n drawFocus: drawFocusRing2,\n getCellContent,\n getGroupDetails: getGroupDetails != null ? getGroupDetails : (name) => ({ name }),\n getRowThemeOverride,\n drawCustomCell,\n drawHeaderCallback,\n prelightCells,\n highlightRegions,\n imageLoader,\n lastBlitData,\n damage: damageRegion.current,\n hoverValues: hoverValues.current,\n hoverInfo: hoverInfoRef.current,\n spriteManager,\n scrolling,\n hyperWrapping: (_a2 = experimental == null ? void 0 : experimental.hyperWrapping) != null ? _a2 : false,\n touchMode: lastWasTouch,\n enqueue: enqueueRef.current,\n renderStrategy: (_b2 = experimental == null ? void 0 : experimental.renderStrategy) != null ? _b2 : browserIsSafari.value ? \"double-buffer\" : \"single-buffer\",\n getCellRenderer\n };\n if (current.damage === void 0) {\n lastArgsRef.current = current;\n drawGrid(current, last);\n } else {\n drawGrid(current, void 0);\n }\n }, [\n bufferA,\n bufferB,\n width,\n height,\n cellXOffset,\n cellYOffset,\n translateX,\n translateY,\n mappedColumns,\n enableGroups,\n freezeColumns,\n dragAndDropState,\n theme,\n headerHeight,\n groupHeaderHeight,\n disabledRows,\n rowHeight,\n verticalBorder,\n isResizing,\n isFocused,\n selection,\n fillHandle,\n trailingRowType,\n rows,\n drawFocusRing2,\n getCellContent,\n getGroupDetails,\n getRowThemeOverride,\n drawCustomCell,\n drawHeaderCallback,\n prelightCells,\n highlightRegions,\n imageLoader,\n spriteManager,\n scrolling,\n experimental == null ? void 0 : experimental.hyperWrapping,\n experimental == null ? void 0 : experimental.renderStrategy,\n lastWasTouch,\n getCellRenderer\n ]);\n const lastDrawRef = React8.useRef(draw);\n React8.useLayoutEffect(() => {\n draw();\n lastDrawRef.current = draw;\n }, [draw]);\n React8.useLayoutEffect(() => {\n const fn = async () => {\n var _a2;\n if (((_a2 = document == null ? void 0 : document.fonts) == null ? void 0 : _a2.ready) === void 0)\n return;\n await document.fonts.ready;\n lastArgsRef.current = void 0;\n lastDrawRef.current();\n };\n void fn();\n }, []);\n const damageInternal = React8.useCallback((locations) => {\n damageRegion.current = locations;\n lastDrawRef.current();\n damageRegion.current = void 0;\n }, []);\n const enqueue = useAnimationQueue(damageInternal);\n enqueueRef.current = enqueue;\n const damage = React8.useCallback(\n (cells) => {\n damageInternal(cells.map((x) => x.cell));\n },\n [damageInternal]\n );\n imageLoader.setCallback(damageInternal);\n const [overFill, setOverFill] = React8.useState(false);\n const [hCol, hRow] = hoveredItem != null ? hoveredItem : [];\n const headerHovered = hCol !== void 0 && hRow === -1;\n const groupHeaderHovered = hCol !== void 0 && hRow === -2;\n let clickableInnerCellHovered = false;\n let editableBoolHovered = false;\n let cursorOverride;\n if (hCol !== void 0 && hRow !== void 0 && hRow > -1) {\n const cell = getCellContent([hCol, hRow], true);\n clickableInnerCellHovered = cell.kind === InnerGridCellKind.NewRow || cell.kind === InnerGridCellKind.Marker && cell.markerKind !== \"number\";\n editableBoolHovered = cell.kind === GridCellKind.Boolean && booleanCellIsEditable(cell);\n cursorOverride = cell.cursor;\n }\n const canDrag = hoveredOnEdge != null ? hoveredOnEdge : false;\n const cursor = isDragging ? \"grabbing\" : canDrag || isResizing ? \"col-resize\" : overFill || isFilling ? \"crosshair\" : cursorOverride !== void 0 ? cursorOverride : headerHovered || clickableInnerCellHovered || editableBoolHovered || groupHeaderHovered ? \"pointer\" : \"default\";\n const style = React8.useMemo(\n () => ({\n // width,\n // height,\n contain: \"strict\",\n display: \"block\",\n cursor\n }),\n [cursor]\n );\n const lastSetCursor = React8.useRef(\"default\");\n const target = eventTargetRef == null ? void 0 : eventTargetRef.current;\n if (target !== null && target !== void 0 && lastSetCursor.current !== style.cursor) {\n target.style.cursor = lastSetCursor.current = style.cursor;\n }\n const groupHeaderActionForEvent = React8.useCallback(\n (group, bounds, localEventX, localEventY) => {\n if (getGroupDetails === void 0)\n return void 0;\n const groupDesc = getGroupDetails(group);\n if (groupDesc.actions !== void 0) {\n const boxes = getActionBoundsForGroup(bounds, groupDesc.actions);\n for (const [i, box] of boxes.entries()) {\n if (pointInRect(box, localEventX + bounds.x, localEventY + box.y)) {\n return groupDesc.actions[i];\n }\n }\n }\n return void 0;\n },\n [getGroupDetails]\n );\n const isOverHeaderMenu = React8.useCallback(\n (canvas, col, clientX, clientY) => {\n const header = columns[col];\n if (!isDragging && !isResizing && header.hasMenu === true && !(hoveredOnEdge != null ? hoveredOnEdge : false)) {\n const headerBounds = getBoundsForItem(canvas, col, -1);\n assert(headerBounds !== void 0);\n const menuBounds = getHeaderMenuBounds(\n headerBounds.x,\n headerBounds.y,\n headerBounds.width,\n headerBounds.height,\n direction(header.title) === \"rtl\"\n );\n if (clientX > menuBounds.x && clientX < menuBounds.x + menuBounds.width && clientY > menuBounds.y && clientY < menuBounds.y + menuBounds.height) {\n return headerBounds;\n }\n }\n return void 0;\n },\n [columns, getBoundsForItem, hoveredOnEdge, isDragging, isResizing]\n );\n const downTime = React8.useRef(0);\n const downPosition = React8.useRef();\n const mouseDown = React8.useRef(false);\n const onMouseDownImpl = React8.useCallback(\n (ev) => {\n const canvas = ref.current;\n const eventTarget = eventTargetRef == null ? void 0 : eventTargetRef.current;\n if (canvas === null || ev.target !== canvas && ev.target !== eventTarget)\n return;\n mouseDown.current = true;\n let clientX;\n let clientY;\n if (ev instanceof MouseEvent) {\n clientX = ev.clientX;\n clientY = ev.clientY;\n } else {\n clientX = ev.touches[0].clientX;\n clientY = ev.touches[0].clientY;\n }\n if (ev.target === eventTarget && eventTarget !== null) {\n const bounds = eventTarget.getBoundingClientRect();\n if (clientX > bounds.right || clientY > bounds.bottom)\n return;\n }\n const args = getMouseArgsForPosition(canvas, clientX, clientY, ev);\n downPosition.current = args.location;\n if (args.isTouch) {\n downTime.current = Date.now();\n }\n if (lastWasTouchRef.current !== args.isTouch) {\n setLastWasTouch(args.isTouch);\n }\n if (args.kind === headerKind && isOverHeaderMenu(canvas, args.location[0], clientX, clientY) !== void 0) {\n return;\n } else if (args.kind === groupHeaderKind) {\n const action = groupHeaderActionForEvent(args.group, args.bounds, args.localEventX, args.localEventY);\n if (action !== void 0) {\n return;\n }\n }\n onMouseDown == null ? void 0 : onMouseDown(args);\n if (!args.isTouch && isDraggable !== true && isDraggable !== args.kind) {\n ev.preventDefault();\n }\n },\n [eventTargetRef, isDraggable, getMouseArgsForPosition, groupHeaderActionForEvent, isOverHeaderMenu, onMouseDown]\n );\n useEventListener(\"touchstart\", onMouseDownImpl, window, false);\n useEventListener(\"mousedown\", onMouseDownImpl, window, false);\n const onMouseUpImpl = React8.useCallback(\n (ev) => {\n var _a2, _b2;\n const canvas = ref.current;\n mouseDown.current = false;\n if (onMouseUp === void 0 || canvas === null)\n return;\n const eventTarget = eventTargetRef == null ? void 0 : eventTargetRef.current;\n const isOutside = ev.target !== canvas && ev.target !== eventTarget;\n let clientX;\n let clientY;\n if (ev instanceof MouseEvent) {\n clientX = ev.clientX;\n clientY = ev.clientY;\n if (ev.pointerType === \"touch\") {\n return;\n }\n } else {\n clientX = ev.changedTouches[0].clientX;\n clientY = ev.changedTouches[0].clientY;\n }\n let args = getMouseArgsForPosition(canvas, clientX, clientY, ev);\n if (args.isTouch && downTime.current !== 0 && Date.now() - downTime.current > 500) {\n args = {\n ...args,\n isLongTouch: true\n };\n }\n if (lastWasTouchRef.current !== args.isTouch) {\n setLastWasTouch(args.isTouch);\n }\n if (!isOutside && ev.cancelable) {\n ev.preventDefault();\n }\n const [col] = args.location;\n const headerBounds = isOverHeaderMenu(canvas, col, clientX, clientY);\n if (args.kind === headerKind && headerBounds !== void 0) {\n if (args.button !== 0 || ((_a2 = downPosition.current) == null ? void 0 : _a2[0]) !== col || ((_b2 = downPosition.current) == null ? void 0 : _b2[1]) !== -1) {\n onMouseUp(args, true);\n }\n return;\n } else if (args.kind === groupHeaderKind) {\n const action = groupHeaderActionForEvent(args.group, args.bounds, args.localEventX, args.localEventY);\n if (action !== void 0) {\n if (args.button === 0) {\n action.onClick(args);\n }\n return;\n }\n }\n onMouseUp(args, isOutside);\n },\n [onMouseUp, eventTargetRef, getMouseArgsForPosition, isOverHeaderMenu, groupHeaderActionForEvent]\n );\n useEventListener(\"mouseup\", onMouseUpImpl, window, false);\n useEventListener(\"touchend\", onMouseUpImpl, window, false);\n const onClickImpl = React8.useCallback(\n (ev) => {\n var _a2, _b2;\n const canvas = ref.current;\n if (canvas === null)\n return;\n const eventTarget = eventTargetRef == null ? void 0 : eventTargetRef.current;\n const isOutside = ev.target !== canvas && ev.target !== eventTarget;\n let clientX;\n let clientY;\n if (ev instanceof MouseEvent) {\n clientX = ev.clientX;\n clientY = ev.clientY;\n } else {\n clientX = ev.changedTouches[0].clientX;\n clientY = ev.changedTouches[0].clientY;\n }\n const args = getMouseArgsForPosition(canvas, clientX, clientY, ev);\n if (lastWasTouchRef.current !== args.isTouch) {\n setLastWasTouch(args.isTouch);\n }\n if (!isOutside && ev.cancelable) {\n ev.preventDefault();\n }\n const [col] = args.location;\n const headerBounds = isOverHeaderMenu(canvas, col, clientX, clientY);\n if (args.kind === headerKind && headerBounds !== void 0) {\n if (args.button === 0 && ((_a2 = downPosition.current) == null ? void 0 : _a2[0]) === col && ((_b2 = downPosition.current) == null ? void 0 : _b2[1]) === -1) {\n onHeaderMenuClick == null ? void 0 : onHeaderMenuClick(col, headerBounds);\n }\n } else if (args.kind === groupHeaderKind) {\n const action = groupHeaderActionForEvent(args.group, args.bounds, args.localEventX, args.localEventY);\n if (action !== void 0 && args.button === 0) {\n action.onClick(args);\n }\n }\n },\n [eventTargetRef, getMouseArgsForPosition, isOverHeaderMenu, onHeaderMenuClick, groupHeaderActionForEvent]\n );\n useEventListener(\"click\", onClickImpl, window, false);\n const onContextMenuImpl = React8.useCallback(\n (ev) => {\n const canvas = ref.current;\n if (canvas === null || onContextMenu === void 0)\n return;\n const args = getMouseArgsForPosition(canvas, ev.clientX, ev.clientY, ev);\n onContextMenu(args, () => {\n if (ev.cancelable)\n ev.preventDefault();\n });\n },\n [getMouseArgsForPosition, onContextMenu]\n );\n useEventListener(\"contextmenu\", onContextMenuImpl, (_c = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _c : null, false);\n const onAnimationFrame = React8.useCallback((values) => {\n damageRegion.current = values.map((x) => x.item);\n hoverValues.current = values;\n lastDrawRef.current();\n damageRegion.current = void 0;\n }, []);\n const animManagerValue = React8.useMemo(() => new AnimationManager(onAnimationFrame), [onAnimationFrame]);\n const animationManager = React8.useRef(animManagerValue);\n animationManager.current = animManagerValue;\n React8.useLayoutEffect(() => {\n const am = animationManager.current;\n if (hoveredItem === void 0 || hoveredItem[1] < 0) {\n am.setHovered(hoveredItem);\n return;\n }\n const cell = getCellContent(hoveredItem);\n const r = getCellRenderer(cell);\n am.setHovered(\n r === void 0 && cell.kind === GridCellKind.Custom || (r == null ? void 0 : r.needsHover) === true ? hoveredItem : void 0\n );\n }, [getCellContent, getCellRenderer, hoveredItem]);\n const hoveredRef = React8.useRef();\n const onMouseMoveImpl = React8.useCallback(\n (ev) => {\n var _a2;\n const canvas = ref.current;\n if (canvas === null)\n return;\n const eventTarget = eventTargetRef == null ? void 0 : eventTargetRef.current;\n const isIndirect = ev.target !== canvas && ev.target !== eventTarget;\n const args = getMouseArgsForPosition(canvas, ev.clientX, ev.clientY, ev);\n if (args.kind !== \"out-of-bounds\" && isIndirect && !mouseDown.current && !args.isTouch) {\n return;\n }\n if (!isSameItem(args, hoveredRef.current)) {\n onItemHovered == null ? void 0 : onItemHovered(args);\n setHoveredItemInfo(\n args.kind === outOfBoundsKind ? void 0 : [args.location, [args.localEventX, args.localEventY]]\n );\n hoveredRef.current = args;\n } else if (args.kind === \"cell\" || args.kind === headerKind || args.kind === groupHeaderKind) {\n const newInfo = [args.location, [args.localEventX, args.localEventY]];\n setHoveredItemInfo(newInfo);\n hoverInfoRef.current = newInfo;\n if (args.kind === \"cell\") {\n const toCheck = getCellContent(args.location);\n if (toCheck.kind === GridCellKind.Custom || ((_a2 = getCellRenderer(toCheck)) == null ? void 0 : _a2.needsHoverPosition) === true) {\n damageInternal([args.location]);\n }\n } else if (args.kind === groupHeaderKind) {\n damageInternal([args.location]);\n }\n }\n const notRowMarkerCol = args.location[0] >= (firstColAccessible ? 0 : 1);\n setHoveredOnEdge(args.kind === headerKind && args.isEdge && notRowMarkerCol && allowResize === true);\n if (fillHandle && selection.current !== void 0) {\n const [col, row] = selection.current.cell;\n const sb = getBoundsForItem(canvas, col, row);\n const x = ev.clientX;\n const y = ev.clientY;\n assert(sb !== void 0);\n setOverFill(\n x >= sb.x + sb.width - 6 && x <= sb.x + sb.width && y >= sb.y + sb.height - 6 && y <= sb.y + sb.height\n );\n } else {\n setOverFill(false);\n }\n onMouseMoveRaw == null ? void 0 : onMouseMoveRaw(ev);\n onMouseMove(args);\n },\n [\n eventTargetRef,\n getMouseArgsForPosition,\n firstColAccessible,\n allowResize,\n fillHandle,\n selection,\n onMouseMoveRaw,\n onMouseMove,\n onItemHovered,\n getCellContent,\n getCellRenderer,\n damageInternal,\n getBoundsForItem\n ]\n );\n useEventListener(\"mousemove\", onMouseMoveImpl, window, true);\n const onKeyDownImpl = React8.useCallback(\n (event) => {\n const canvas = ref.current;\n if (canvas === null)\n return;\n let bounds;\n let location = void 0;\n if (selection.current !== void 0) {\n bounds = getBoundsForItem(canvas, selection.current.cell[0], selection.current.cell[1]);\n location = selection.current.cell;\n }\n onKeyDown == null ? void 0 : onKeyDown({\n bounds,\n stopPropagation: () => event.stopPropagation(),\n preventDefault: () => event.preventDefault(),\n cancel: () => void 0,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n key: event.key,\n keyCode: event.keyCode,\n rawEvent: event,\n location\n });\n },\n [onKeyDown, selection, getBoundsForItem]\n );\n const onKeyUpImpl = React8.useCallback(\n (event) => {\n const canvas = ref.current;\n if (canvas === null)\n return;\n let bounds;\n let location = void 0;\n if (selection.current !== void 0) {\n bounds = getBoundsForItem(canvas, selection.current.cell[0], selection.current.cell[1]);\n location = selection.current.cell;\n }\n onKeyUp == null ? void 0 : onKeyUp({\n bounds,\n stopPropagation: () => event.stopPropagation(),\n preventDefault: () => event.preventDefault(),\n cancel: () => void 0,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n key: event.key,\n keyCode: event.keyCode,\n rawEvent: event,\n location\n });\n },\n [onKeyUp, selection, getBoundsForItem]\n );\n const refImpl = React8.useCallback(\n (instance) => {\n ref.current = instance;\n if (canvasRef !== void 0) {\n canvasRef.current = instance;\n }\n },\n [canvasRef]\n );\n const onDragStartImpl = React8.useCallback(\n (event) => {\n var _a2;\n const canvas = ref.current;\n if (canvas === null || isDraggable === false || isResizing) {\n event.preventDefault();\n return;\n }\n let dragMime;\n let dragData;\n const args = getMouseArgsForPosition(canvas, event.clientX, event.clientY);\n if (isDraggable !== true && args.kind !== isDraggable) {\n event.preventDefault();\n return;\n }\n const setData = (mime, payload) => {\n dragMime = mime;\n dragData = payload;\n };\n let dragImage;\n let dragImageX;\n let dragImageY;\n const setDragImage = (image, x, y) => {\n dragImage = image;\n dragImageX = x;\n dragImageY = y;\n };\n let prevented = false;\n onDragStart == null ? void 0 : onDragStart({\n ...args,\n setData,\n setDragImage,\n preventDefault: () => prevented = true,\n defaultPrevented: () => prevented\n });\n if (!prevented && dragMime !== void 0 && dragData !== void 0 && event.dataTransfer !== null) {\n event.dataTransfer.setData(dragMime, dragData);\n event.dataTransfer.effectAllowed = \"copyLink\";\n if (dragImage !== void 0 && dragImageX !== void 0 && dragImageY !== void 0) {\n event.dataTransfer.setDragImage(dragImage, dragImageX, dragImageY);\n } else {\n const [col, row] = args.location;\n if (row !== void 0) {\n const offscreen = document.createElement(\"canvas\");\n const boundsForDragTarget = getBoundsForItem(canvas, col, row);\n assert(boundsForDragTarget !== void 0);\n const dpr = Math.ceil((_a2 = window.devicePixelRatio) != null ? _a2 : 1);\n offscreen.width = boundsForDragTarget.width * dpr;\n offscreen.height = boundsForDragTarget.height * dpr;\n const ctx = offscreen.getContext(\"2d\");\n if (ctx !== null) {\n ctx.scale(dpr, dpr);\n ctx.textBaseline = \"middle\";\n if (row === -1) {\n ctx.font = `${theme.headerFontStyle} ${theme.fontFamily}`;\n ctx.fillStyle = theme.bgHeader;\n ctx.fillRect(0, 0, offscreen.width, offscreen.height);\n drawHeader(\n ctx,\n 0,\n 0,\n boundsForDragTarget.width,\n boundsForDragTarget.height,\n mappedColumns[col],\n false,\n theme,\n false,\n false,\n 0,\n spriteManager,\n drawHeaderCallback,\n false\n );\n } else {\n ctx.font = `${theme.baseFontStyle} ${theme.fontFamily}`;\n ctx.fillStyle = theme.bgCell;\n ctx.fillRect(0, 0, offscreen.width, offscreen.height);\n drawCell(\n ctx,\n row,\n getCellContent([col, row]),\n 0,\n 0,\n 0,\n boundsForDragTarget.width,\n boundsForDragTarget.height,\n false,\n theme,\n drawCustomCell,\n imageLoader,\n spriteManager,\n 1,\n void 0,\n false,\n 0,\n void 0,\n void 0,\n getCellRenderer\n );\n }\n }\n offscreen.style.left = \"-100%\";\n offscreen.style.position = \"absolute\";\n offscreen.style.width = `${boundsForDragTarget.width}px`;\n offscreen.style.height = `${boundsForDragTarget.height}px`;\n document.body.append(offscreen);\n event.dataTransfer.setDragImage(\n offscreen,\n boundsForDragTarget.width / 2,\n boundsForDragTarget.height / 2\n );\n window.setTimeout(() => {\n offscreen.remove();\n }, 0);\n }\n }\n } else {\n event.preventDefault();\n }\n },\n [\n isDraggable,\n isResizing,\n getMouseArgsForPosition,\n onDragStart,\n getBoundsForItem,\n theme,\n mappedColumns,\n spriteManager,\n drawHeaderCallback,\n getCellContent,\n drawCustomCell,\n imageLoader,\n getCellRenderer\n ]\n );\n useEventListener(\"dragstart\", onDragStartImpl, (_d = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _d : null, false, false);\n const activeDropTarget = React8.useRef();\n const onDragOverImpl = React8.useCallback(\n (event) => {\n var _a2;\n const canvas = ref.current;\n if (onDrop !== void 0) {\n event.preventDefault();\n }\n if (canvas === null || onDragOverCell === void 0) {\n return;\n }\n const args = getMouseArgsForPosition(canvas, event.clientX, event.clientY);\n const [rawCol, row] = args.location;\n const col = rawCol - (firstColAccessible ? 0 : 1);\n const [activeCol, activeRow] = (_a2 = activeDropTarget.current) != null ? _a2 : [];\n if (activeCol !== col || activeRow !== row) {\n activeDropTarget.current = [col, row];\n onDragOverCell([col, row], event.dataTransfer);\n }\n },\n [firstColAccessible, getMouseArgsForPosition, onDragOverCell, onDrop]\n );\n useEventListener(\"dragover\", onDragOverImpl, (_e = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _e : null, false, false);\n const onDragEndImpl = React8.useCallback(() => {\n activeDropTarget.current = void 0;\n onDragEnd == null ? void 0 : onDragEnd();\n }, [onDragEnd]);\n useEventListener(\"dragend\", onDragEndImpl, (_f = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _f : null, false, false);\n const onDropImpl = React8.useCallback(\n (event) => {\n const canvas = ref.current;\n if (canvas === null || onDrop === void 0) {\n return;\n }\n event.preventDefault();\n const args = getMouseArgsForPosition(canvas, event.clientX, event.clientY);\n const [rawCol, row] = args.location;\n const col = rawCol - (firstColAccessible ? 0 : 1);\n onDrop([col, row], event.dataTransfer);\n },\n [firstColAccessible, getMouseArgsForPosition, onDrop]\n );\n useEventListener(\"drop\", onDropImpl, (_g = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _g : null, false, false);\n const onDragLeaveImpl = React8.useCallback(() => {\n onDragLeave == null ? void 0 : onDragLeave();\n }, [onDragLeave]);\n useEventListener(\"dragleave\", onDragLeaveImpl, (_h = eventTargetRef == null ? void 0 : eventTargetRef.current) != null ? _h : null, false, false);\n const selectionRef = React8.useRef(selection);\n selectionRef.current = selection;\n const focusRef = React8.useRef(null);\n const focusElement = React8.useCallback(\n (el) => {\n var _a2;\n if (ref.current === null || !ref.current.contains(document.activeElement))\n return;\n if (el === null && selectionRef.current.current !== void 0) {\n (_a2 = canvasRef == null ? void 0 : canvasRef.current) == null ? void 0 : _a2.focus({\n preventScroll: true\n });\n } else if (el !== null) {\n el.focus({\n preventScroll: true\n });\n }\n focusRef.current = el;\n },\n [canvasRef]\n );\n React8.useImperativeHandle(\n forwardedRef,\n () => ({\n focus: () => {\n var _a2;\n const el = focusRef.current;\n if (el === null || !document.contains(el)) {\n (_a2 = canvasRef == null ? void 0 : canvasRef.current) == null ? void 0 : _a2.focus({\n preventScroll: true\n });\n } else {\n el.focus({\n preventScroll: true\n });\n }\n },\n getBounds: (col, row) => {\n if (canvasRef === void 0 || canvasRef.current === null) {\n return void 0;\n }\n return getBoundsForItem(canvasRef.current, col != null ? col : 0, row != null ? row : -1);\n },\n damage\n }),\n [canvasRef, damage, getBoundsForItem]\n );\n const lastFocusedSubdomNode = React8.useRef();\n const accessibilityTree = useDebouncedMemo(\n () => {\n var _a2, _b2, _c2, _d2;\n if (width < 50)\n return null;\n let effectiveCols = getEffectiveColumns(mappedColumns, cellXOffset, width, dragAndDropState, translateX);\n const colOffset = firstColAccessible ? 0 : -1;\n if (!firstColAccessible && ((_a2 = effectiveCols[0]) == null ? void 0 : _a2.sourceIndex) === 0) {\n effectiveCols = effectiveCols.slice(1);\n }\n const [fCol, fRow] = (_c2 = (_b2 = selection.current) == null ? void 0 : _b2.cell) != null ? _c2 : [];\n const range2 = (_d2 = selection.current) == null ? void 0 : _d2.range;\n const visibleCols = effectiveCols.map((c) => c.sourceIndex);\n const visibleRows = makeRange(cellYOffset, Math.min(rows, cellYOffset + accessibilityHeight));\n if (fCol !== void 0 && fRow !== void 0 && !(visibleCols.includes(fCol) && visibleRows.includes(fRow))) {\n focusElement(null);\n }\n return /* @__PURE__ */ React8.createElement(\n \"table\",\n {\n key: \"access-tree\",\n role: \"grid\",\n \"aria-rowcount\": rows + 1,\n \"aria-multiselectable\": \"true\",\n \"aria-colcount\": mappedColumns.length + colOffset\n },\n /* @__PURE__ */ React8.createElement(\"thead\", { role: \"rowgroup\" }, /* @__PURE__ */ React8.createElement(\"tr\", { role: \"row\", \"aria-rowindex\": 1 }, effectiveCols.map((c) => /* @__PURE__ */ React8.createElement(\n \"th\",\n {\n role: \"columnheader\",\n \"aria-selected\": selection.columns.hasIndex(c.sourceIndex),\n \"aria-colindex\": c.sourceIndex + 1 + colOffset,\n tabIndex: -1,\n onFocus: (e) => {\n if (e.target === focusRef.current)\n return;\n return onCellFocused == null ? void 0 : onCellFocused([c.sourceIndex, -1]);\n },\n key: c.sourceIndex\n },\n c.title\n )))),\n /* @__PURE__ */ React8.createElement(\"tbody\", { role: \"rowgroup\" }, visibleRows.map((row) => /* @__PURE__ */ React8.createElement(\n \"tr\",\n {\n role: \"row\",\n \"aria-selected\": selection.rows.hasIndex(row),\n key: row,\n \"aria-rowindex\": row + 2\n },\n effectiveCols.map((c) => {\n const col = c.sourceIndex;\n const key = `${col},${row}`;\n const focused = fCol === col && fRow === row;\n const selected = range2 !== void 0 && col >= range2.x && col < range2.x + range2.width && row >= range2.y && row < range2.y + range2.height;\n const id = `glide-cell-${col}-${row}`;\n const location = [col, row];\n const cellContent = getCellContent(location, true);\n return /* @__PURE__ */ React8.createElement(\n \"td\",\n {\n key,\n role: \"gridcell\",\n \"aria-colindex\": col + 1 + colOffset,\n \"aria-selected\": selected,\n \"aria-readonly\": isInnerOnlyCell(cellContent) || !isReadWriteCell(cellContent),\n id,\n \"data-testid\": id,\n onClick: () => {\n const canvas = canvasRef == null ? void 0 : canvasRef.current;\n if (canvas === null || canvas === void 0)\n return;\n return onKeyDown == null ? void 0 : onKeyDown({\n bounds: getBoundsForItem(canvas, col, row),\n cancel: () => void 0,\n preventDefault: () => void 0,\n stopPropagation: () => void 0,\n ctrlKey: false,\n key: \"Enter\",\n keyCode: 13,\n metaKey: false,\n shiftKey: false,\n altKey: false,\n rawEvent: void 0,\n location\n });\n },\n onFocusCapture: (e) => {\n var _a3, _b3;\n if (e.target === focusRef.current || ((_a3 = lastFocusedSubdomNode.current) == null ? void 0 : _a3[0]) === col && ((_b3 = lastFocusedSubdomNode.current) == null ? void 0 : _b3[1]) === row)\n return;\n lastFocusedSubdomNode.current = location;\n return onCellFocused == null ? void 0 : onCellFocused(location);\n },\n ref: focused ? focusElement : void 0,\n tabIndex: -1\n },\n getRowData(cellContent, getCellRenderer)\n );\n })\n )))\n );\n },\n [\n width,\n mappedColumns,\n cellXOffset,\n dragAndDropState,\n translateX,\n rows,\n cellYOffset,\n accessibilityHeight,\n selection,\n focusElement,\n getCellContent,\n canvasRef,\n onKeyDown,\n getBoundsForItem,\n onCellFocused\n ],\n 200\n );\n const stickyX = fixedShadowX ? getStickyWidth(mappedColumns, dragAndDropState) : 0;\n const opacityX = freezeColumns === 0 || !fixedShadowX ? 0 : cellXOffset > freezeColumns ? 1 : clamp2(-translateX / 100, 0, 1);\n const absoluteOffsetY = -cellYOffset * 32 + translateY;\n const opacityY = !fixedShadowY ? 0 : clamp2(-absoluteOffsetY / 100, 0, 1);\n const stickyShadow = React8.useMemo(() => {\n if (!opacityX && !opacityY) {\n return null;\n }\n const styleX = {\n position: \"absolute\",\n top: 0,\n left: stickyX,\n width: width - stickyX,\n height,\n opacity: opacityX,\n pointerEvents: \"none\",\n transition: !smoothScrollX ? \"opacity 0.2s\" : void 0,\n boxShadow: \"inset 13px 0 10px -13px rgba(0, 0, 0, 0.2)\"\n };\n const styleY = {\n position: \"absolute\",\n top: totalHeaderHeight,\n left: 0,\n width,\n height,\n opacity: opacityY,\n pointerEvents: \"none\",\n transition: !smoothScrollY ? \"opacity 0.2s\" : void 0,\n boxShadow: \"inset 0 13px 10px -13px rgba(0, 0, 0, 0.2)\"\n };\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, opacityX > 0 && /* @__PURE__ */ React8.createElement(\"div\", { id: \"shadow-x\", style: styleX }), opacityY > 0 && /* @__PURE__ */ React8.createElement(\"div\", { id: \"shadow-y\", style: styleY }));\n }, [opacityX, opacityY, stickyX, width, smoothScrollX, totalHeaderHeight, height, smoothScrollY]);\n const overlayStyle = React8.useMemo(\n () => ({\n position: \"absolute\",\n top: 0,\n left: 0\n }),\n []\n );\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(\n \"canvas\",\n {\n \"data-testid\": \"data-grid-canvas\",\n tabIndex: 0,\n onKeyDown: onKeyDownImpl,\n onKeyUp: onKeyUpImpl,\n onFocus: onCanvasFocused,\n onBlur: onCanvasBlur,\n ref: refImpl,\n style\n },\n accessibilityTree\n ), /* @__PURE__ */ React8.createElement(\"canvas\", { ref: overlayRef, style: overlayStyle }), stickyShadow);\n};\nvar data_grid_default = React8.memo(React8.forwardRef(DataGrid));\n\n// src/data-grid-dnd/data-grid-dnd.tsx\nfunction offsetColumnSize(column, width, min, max) {\n var _a;\n return clamp3(Math.round(width - ((_a = column.growOffset) != null ? _a : 0)), Math.ceil(min), Math.floor(max));\n}\nvar DataGridDnd = (p) => {\n var _a;\n const [resizeColStartX, setResizeColStartX] = React9.useState();\n const [resizeCol, setResizeCol] = React9.useState();\n const [dragCol, setDragCol] = React9.useState();\n const [dropCol, setDropCol] = React9.useState();\n const [dragColActive, setDragColActive] = React9.useState(false);\n const [dragStartX, setDragStartX] = React9.useState();\n const [dragRow, setDragRow] = React9.useState();\n const [dropRow, setDropRow] = React9.useState();\n const [dragRowActive, setDragRowActive] = React9.useState(false);\n const [dragStartY, setDragStartY] = React9.useState();\n const {\n onHeaderMenuClick,\n getCellContent,\n onColumnMoved,\n onColumnResize,\n onColumnResizeStart,\n onColumnResizeEnd,\n gridRef,\n maxColumnWidth,\n minColumnWidth,\n onRowMoved,\n lockColumns,\n onMouseDown,\n onMouseUp,\n onItemHovered,\n onDragStart,\n canvasRef\n } = p;\n const canResize = ((_a = onColumnResize != null ? onColumnResize : onColumnResizeEnd) != null ? _a : onColumnResizeStart) !== void 0;\n const { columns, selection } = p;\n const selectedColumns = selection.columns;\n const onItemHoveredImpl = React9.useCallback(\n (args) => {\n const [col, row] = args.location;\n if (dragCol !== void 0 && dropCol !== col && col >= lockColumns) {\n setDragColActive(true);\n setDropCol(col);\n } else if (dragRow !== void 0 && row !== void 0) {\n setDragRowActive(true);\n setDropRow(Math.max(0, row));\n } else {\n onItemHovered == null ? void 0 : onItemHovered(args);\n }\n },\n [dragCol, dragRow, dropCol, onItemHovered, lockColumns]\n );\n const canDragCol = onColumnMoved !== void 0;\n const onMouseDownImpl = React9.useCallback(\n (args) => {\n var _a2, _b;\n if (args.button === 0) {\n const [col, row] = args.location;\n if (args.kind === \"out-of-bounds\" && args.isEdge && canResize) {\n const bounds = (_a2 = gridRef == null ? void 0 : gridRef.current) == null ? void 0 : _a2.getBounds(columns.length - 1, -1);\n if (bounds !== void 0) {\n setResizeColStartX(bounds.x);\n setResizeCol(columns.length - 1);\n }\n } else if (args.kind === \"header\" && col >= lockColumns) {\n const canvas = canvasRef == null ? void 0 : canvasRef.current;\n if (args.isEdge && canResize && canvas) {\n setResizeColStartX(args.bounds.x);\n setResizeCol(col);\n const rect = canvas.getBoundingClientRect();\n const scale = rect.width / canvas.offsetWidth;\n const width = args.bounds.width / scale;\n onColumnResizeStart == null ? void 0 : onColumnResizeStart(columns[col], width, col, width + ((_b = columns[col].growOffset) != null ? _b : 0));\n } else if (args.kind === \"header\" && canDragCol) {\n setDragStartX(args.bounds.x);\n setDragCol(col);\n }\n } else if (args.kind === \"cell\" && lockColumns > 0 && col === 0 && row !== void 0 && onRowMoved !== void 0) {\n setDragStartY(args.bounds.y);\n setDragRow(row);\n }\n }\n onMouseDown == null ? void 0 : onMouseDown(args);\n },\n [onMouseDown, canResize, lockColumns, onRowMoved, gridRef, columns, canDragCol, onColumnResizeStart, canvasRef]\n );\n const onHeaderMenuClickMangled = React9.useCallback(\n (col, screenPosition) => {\n if (dragColActive || dragRowActive)\n return;\n onHeaderMenuClick == null ? void 0 : onHeaderMenuClick(col, screenPosition);\n },\n [dragColActive, dragRowActive, onHeaderMenuClick]\n );\n const lastResizeWidthRef = React9.useRef(-1);\n const clearAll = React9.useCallback(() => {\n lastResizeWidthRef.current = -1;\n setDragRow(void 0);\n setDropRow(void 0);\n setDragStartY(void 0);\n setDragRowActive(false);\n setDragCol(void 0);\n setDropCol(void 0);\n setDragStartX(void 0);\n setDragColActive(false);\n setResizeCol(void 0);\n setResizeColStartX(void 0);\n }, []);\n const onMouseUpImpl = React9.useCallback(\n (args, isOutside) => {\n var _a2, _b, _c;\n if (args.button === 0) {\n if (resizeCol !== void 0) {\n if ((selectedColumns == null ? void 0 : selectedColumns.hasIndex(resizeCol)) === true) {\n for (const c of selectedColumns) {\n if (c === resizeCol)\n continue;\n const col = columns[c];\n const newSize = offsetColumnSize(\n col,\n lastResizeWidthRef.current,\n minColumnWidth,\n maxColumnWidth\n );\n onColumnResize == null ? void 0 : onColumnResize(col, newSize, c, newSize + ((_a2 = col.growOffset) != null ? _a2 : 0));\n }\n }\n const ns = offsetColumnSize(\n columns[resizeCol],\n lastResizeWidthRef.current,\n minColumnWidth,\n maxColumnWidth\n );\n onColumnResizeEnd == null ? void 0 : onColumnResizeEnd(columns[resizeCol], ns, resizeCol, ns + ((_b = columns[resizeCol].growOffset) != null ? _b : 0));\n if (selectedColumns.hasIndex(resizeCol)) {\n for (const c of selectedColumns) {\n if (c === resizeCol)\n continue;\n const col = columns[c];\n const s = offsetColumnSize(col, lastResizeWidthRef.current, minColumnWidth, maxColumnWidth);\n onColumnResizeEnd == null ? void 0 : onColumnResizeEnd(col, s, c, s + ((_c = col.growOffset) != null ? _c : 0));\n }\n }\n }\n clearAll();\n if (dragCol !== void 0 && dropCol !== void 0) {\n onColumnMoved == null ? void 0 : onColumnMoved(dragCol, dropCol);\n }\n if (dragRow !== void 0 && dropRow !== void 0) {\n onRowMoved == null ? void 0 : onRowMoved(dragRow, dropRow);\n }\n }\n onMouseUp == null ? void 0 : onMouseUp(args, isOutside);\n },\n [\n onMouseUp,\n resizeCol,\n dragCol,\n dropCol,\n dragRow,\n dropRow,\n selectedColumns,\n onColumnResizeEnd,\n columns,\n minColumnWidth,\n maxColumnWidth,\n onColumnResize,\n onColumnMoved,\n onRowMoved,\n clearAll\n ]\n );\n const dragOffset = React9.useMemo(() => {\n if (dragCol === void 0 || dropCol === void 0)\n return void 0;\n if (dragCol === dropCol)\n return void 0;\n return {\n src: dragCol,\n dest: dropCol\n };\n }, [dragCol, dropCol]);\n const onMouseMove = React9.useCallback(\n (event) => {\n var _a2, _b;\n const canvas = canvasRef == null ? void 0 : canvasRef.current;\n if (dragCol !== void 0 && dragStartX !== void 0) {\n const diff = Math.abs(event.clientX - dragStartX);\n if (diff > 20) {\n setDragColActive(true);\n }\n } else if (dragRow !== void 0 && dragStartY !== void 0) {\n const diff = Math.abs(event.clientY - dragStartY);\n if (diff > 20) {\n setDragRowActive(true);\n }\n } else if (resizeCol !== void 0 && resizeColStartX !== void 0 && canvas) {\n const rect = canvas.getBoundingClientRect();\n const scale = rect.width / canvas.offsetWidth;\n const newWidth = (event.clientX - resizeColStartX) / scale;\n const column = columns[resizeCol];\n const ns = offsetColumnSize(column, newWidth, minColumnWidth, maxColumnWidth);\n onColumnResize == null ? void 0 : onColumnResize(column, ns, resizeCol, ns + ((_a2 = column.growOffset) != null ? _a2 : 0));\n lastResizeWidthRef.current = newWidth;\n if ((selectedColumns == null ? void 0 : selectedColumns.first()) === resizeCol) {\n for (const c of selectedColumns) {\n if (c === resizeCol)\n continue;\n const col = columns[c];\n const s = offsetColumnSize(col, lastResizeWidthRef.current, minColumnWidth, maxColumnWidth);\n onColumnResize == null ? void 0 : onColumnResize(col, s, c, s + ((_b = col.growOffset) != null ? _b : 0));\n }\n }\n }\n },\n [\n dragCol,\n dragStartX,\n dragRow,\n dragStartY,\n resizeCol,\n resizeColStartX,\n columns,\n minColumnWidth,\n maxColumnWidth,\n onColumnResize,\n selectedColumns,\n canvasRef\n ]\n );\n const getMangledCellContent = React9.useCallback(\n (cell, forceStrict) => {\n if (dragRow === void 0 || dropRow === void 0)\n return getCellContent(cell, forceStrict);\n let [col, row] = cell;\n if (row === dropRow) {\n row = dragRow;\n } else {\n if (row > dropRow)\n row -= 1;\n if (row >= dragRow)\n row += 1;\n }\n return getCellContent([col, row], forceStrict);\n },\n [dragRow, dropRow, getCellContent]\n );\n const onDragStartImpl = React9.useCallback(\n (args) => {\n onDragStart == null ? void 0 : onDragStart(args);\n if (!args.defaultPrevented()) {\n clearAll();\n }\n },\n [clearAll, onDragStart]\n );\n return /* @__PURE__ */ React9.createElement(\n data_grid_default,\n {\n accessibilityHeight: p.accessibilityHeight,\n canvasRef: p.canvasRef,\n cellXOffset: p.cellXOffset,\n cellYOffset: p.cellYOffset,\n columns: p.columns,\n disabledRows: p.disabledRows,\n drawCustomCell: p.drawCustomCell,\n drawFocusRing: p.drawFocusRing,\n drawHeader: p.drawHeader,\n enableGroups: p.enableGroups,\n eventTargetRef: p.eventTargetRef,\n experimental: p.experimental,\n fillHandle: p.fillHandle,\n firstColAccessible: p.firstColAccessible,\n fixedShadowX: p.fixedShadowX,\n fixedShadowY: p.fixedShadowY,\n freezeColumns: p.freezeColumns,\n getCellRenderer: p.getCellRenderer,\n getGroupDetails: p.getGroupDetails,\n getRowThemeOverride: p.getRowThemeOverride,\n groupHeaderHeight: p.groupHeaderHeight,\n headerHeight: p.headerHeight,\n headerIcons: p.headerIcons,\n height: p.height,\n highlightRegions: p.highlightRegions,\n imageWindowLoader: p.imageWindowLoader,\n isDraggable: p.isDraggable,\n isFilling: p.isFilling,\n isFocused: p.isFocused,\n onCanvasBlur: p.onCanvasBlur,\n onCanvasFocused: p.onCanvasFocused,\n onCellFocused: p.onCellFocused,\n onContextMenu: p.onContextMenu,\n onDragEnd: p.onDragEnd,\n onDragLeave: p.onDragLeave,\n onDragOverCell: p.onDragOverCell,\n onDrop: p.onDrop,\n onKeyDown: p.onKeyDown,\n onKeyUp: p.onKeyUp,\n onMouseMove: p.onMouseMove,\n prelightCells: p.prelightCells,\n rowHeight: p.rowHeight,\n rows: p.rows,\n selection: p.selection,\n smoothScrollX: p.smoothScrollX,\n smoothScrollY: p.smoothScrollY,\n theme: p.theme,\n trailingRowType: p.trailingRowType,\n translateX: p.translateX,\n translateY: p.translateY,\n verticalBorder: p.verticalBorder,\n width: p.width,\n getCellContent: getMangledCellContent,\n isResizing: resizeCol !== void 0,\n onHeaderMenuClick: onHeaderMenuClickMangled,\n isDragging: dragColActive,\n onItemHovered: onItemHoveredImpl,\n onDragStart: onDragStartImpl,\n onMouseDown: onMouseDownImpl,\n allowResize: canResize,\n onMouseUp: onMouseUpImpl,\n dragAndDropState: dragOffset,\n onMouseMoveRaw: onMouseMove,\n ref: gridRef\n }\n );\n};\nvar data_grid_dnd_default = DataGridDnd;\n\n// src/scrolling-data-grid/infinite-scroller.tsx\nimport * as React10 from \"react\";\n\n// src/common/resize-detector.ts\nimport { useLayoutEffect as useLayoutEffect4, useState as useState6, useRef as useRef6 } from \"react\";\nfunction useResizeDetector(initialSize) {\n const ref = useRef6(null);\n const [size, setSize] = useState6({\n width: initialSize == null ? void 0 : initialSize[0],\n height: initialSize == null ? void 0 : initialSize[1]\n });\n useLayoutEffect4(() => {\n const resizeCallback = (entries) => {\n for (const entry of entries) {\n const { width, height } = entry && entry.contentRect || {};\n setSize((cv) => cv.width === width && cv.height === height ? cv : { width, height });\n }\n };\n const resizeObserver = new window.ResizeObserver(resizeCallback);\n if (ref.current) {\n resizeObserver.observe(ref.current, void 0);\n }\n return () => {\n resizeObserver.disconnect();\n };\n }, [ref.current]);\n return { ref, ...size };\n}\n\n// src/scrolling-data-grid/infinite-scroller.tsx\nvar _exp8 = () => (p) => p.isSafari ? \"scroll\" : \"auto\";\nvar ScrollRegionStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"ScrollRegionStyle\",\n class: \"s1jz82f8\",\n propsAsIs: false,\n vars: {\n \"s1jz82f8-0\": [_exp8()]\n }\n});\nfunction useTouchUpDelayed(delay) {\n const [hasTouches, setHasTouches] = React10.useState(false);\n const cbTimer = React10.useRef(0);\n useEventListener(\"touchstart\", React10.useCallback(() => {\n window.clearTimeout(cbTimer.current);\n setHasTouches(true);\n }, []), window, true, false);\n useEventListener(\"touchend\", React10.useCallback((e) => {\n if (e.touches.length === 0) {\n cbTimer.current = window.setTimeout(() => setHasTouches(false), delay);\n }\n }, [delay]), window, true, false);\n return hasTouches;\n}\nvar InfiniteScroller = (p) => {\n var _a, _b, _c, _d;\n const {\n children,\n clientHeight,\n scrollHeight,\n scrollWidth,\n update,\n draggable,\n className,\n preventDiagonalScrolling = false,\n paddingBottom = 0,\n paddingRight = 0,\n rightElement,\n rightElementProps,\n scrollRef,\n scrollToEnd,\n initialSize,\n minimap\n } = p;\n const padders = [];\n const rightElementSticky = (_a = rightElementProps == null ? void 0 : rightElementProps.sticky) != null ? _a : false;\n const rightElementFill = (_b = rightElementProps == null ? void 0 : rightElementProps.fill) != null ? _b : false;\n const offsetY = React10.useRef(0);\n const lastScrollY = React10.useRef(0);\n const scroller = React10.useRef(null);\n const dpr = window.devicePixelRatio;\n React10.useEffect(() => {\n const el = scroller.current;\n if (el === null || scrollToEnd !== true)\n return;\n el.scrollLeft = el.scrollWidth - el.clientWidth;\n }, [scrollToEnd]);\n const lastScrollPosition = React10.useRef({\n scrollLeft: 0,\n scrollTop: 0,\n lockDirection: void 0\n });\n const rightWrapRef = React10.useRef(null);\n const hasTouches = useTouchUpDelayed(200);\n const [isIdle, setIsIdle] = React10.useState(true);\n const idleTimer = React10.useRef(0);\n React10.useEffect(() => {\n if (!isIdle || hasTouches || lastScrollPosition.current.lockDirection === void 0)\n return;\n const el = scroller.current;\n if (el === null)\n return;\n const [lx, ly] = lastScrollPosition.current.lockDirection;\n if (lx !== void 0) {\n el.scrollLeft = lx;\n } else if (ly !== void 0) {\n el.scrollTop = ly;\n }\n lastScrollPosition.current.lockDirection = void 0;\n }, [hasTouches, isIdle]);\n const onScroll = React10.useCallback(() => {\n var _a2, _b2, _c2, _d2;\n const el = scroller.current;\n if (el === null)\n return;\n let scrollTop = el.scrollTop;\n let scrollLeft = el.scrollLeft;\n const lastScrollTop = lastScrollPosition.current.scrollTop;\n const lastScrollLeft = lastScrollPosition.current.scrollLeft;\n const dx = scrollLeft - lastScrollLeft;\n const dy = scrollTop - lastScrollTop;\n if (hasTouches && dx !== 0 && dy !== 0 && (Math.abs(dx) > 3 || Math.abs(dy) > 3) && preventDiagonalScrolling && lastScrollPosition.current.lockDirection === void 0) {\n lastScrollPosition.current.lockDirection = Math.abs(dx) < Math.abs(dy) ? [lastScrollLeft, void 0] : [void 0, lastScrollTop];\n }\n const lock = lastScrollPosition.current.lockDirection;\n scrollLeft = (_a2 = lock == null ? void 0 : lock[0]) != null ? _a2 : scrollLeft;\n scrollTop = (_b2 = lock == null ? void 0 : lock[1]) != null ? _b2 : scrollTop;\n lastScrollPosition.current.scrollLeft = scrollLeft;\n lastScrollPosition.current.scrollTop = scrollTop;\n const newY = scrollTop;\n const delta = lastScrollY.current - newY;\n const scrollableHeight = el.scrollHeight - el.clientHeight;\n lastScrollY.current = newY;\n if (scrollableHeight > 0 && (Math.abs(delta) > 2e3 || newY === 0 || newY === scrollableHeight) && scrollHeight > el.scrollHeight + 5) {\n const prog = newY / scrollableHeight;\n const recomputed = (scrollHeight - el.clientHeight) * prog;\n offsetY.current = recomputed - newY;\n }\n if (lock !== void 0) {\n window.clearTimeout(idleTimer.current);\n setIsIdle(false);\n idleTimer.current = window.setTimeout(() => setIsIdle(true), 200);\n }\n update({\n x: scrollLeft,\n y: newY + offsetY.current,\n width: el.clientWidth - paddingRight,\n height: el.clientHeight - paddingBottom,\n paddingRight: (_d2 = (_c2 = rightWrapRef.current) == null ? void 0 : _c2.clientWidth) != null ? _d2 : 0\n });\n }, [paddingBottom, paddingRight, scrollHeight, update, preventDiagonalScrolling, hasTouches]);\n const onScrollRef = React10.useRef(onScroll);\n onScrollRef.current = onScroll;\n const lastProps = React10.useRef();\n const didFirstScroll = React10.useRef(false);\n React10.useEffect(() => {\n if (didFirstScroll.current)\n onScroll();\n else\n didFirstScroll.current = true;\n }, [onScroll, paddingBottom, paddingRight]);\n const setRefs = React10.useCallback((instance) => {\n scroller.current = instance;\n if (scrollRef !== void 0) {\n scrollRef.current = instance;\n }\n }, [scrollRef]);\n let key = 0;\n let h = 0;\n padders.push(/* @__PURE__ */ React10.createElement(\"div\", {\n key: key++,\n style: {\n width: scrollWidth,\n height: 0\n }\n }));\n while (h < scrollHeight) {\n const toAdd = Math.min(5e6, scrollHeight - h);\n padders.push(/* @__PURE__ */ React10.createElement(\"div\", {\n key: key++,\n style: {\n width: 0,\n height: toAdd\n }\n }));\n h += toAdd;\n }\n const {\n ref,\n width,\n height\n } = useResizeDetector(initialSize);\n if (((_c = lastProps.current) == null ? void 0 : _c.height) !== height || ((_d = lastProps.current) == null ? void 0 : _d.width) !== width) {\n window.setTimeout(() => onScrollRef.current(), 0);\n lastProps.current = {\n width,\n height\n };\n }\n if ((width != null ? width : 0) === 0 || (height != null ? height : 0) === 0)\n return /* @__PURE__ */ React10.createElement(\"div\", {\n ref\n });\n return /* @__PURE__ */ React10.createElement(\"div\", {\n ref\n }, /* @__PURE__ */ React10.createElement(ScrollRegionStyle, {\n isSafari: browserIsSafari.value\n }, minimap, /* @__PURE__ */ React10.createElement(\"div\", {\n className: \"dvn-underlay\"\n }, children), /* @__PURE__ */ React10.createElement(\"div\", {\n ref: setRefs,\n style: lastProps.current,\n draggable,\n onDragStart: (e) => {\n if (!draggable) {\n e.stopPropagation();\n e.preventDefault();\n }\n },\n className: \"dvn-scroller \" + (className != null ? className : \"\"),\n onScroll\n }, /* @__PURE__ */ React10.createElement(\"div\", {\n className: \"dvn-scroll-inner\" + (rightElement === void 0 ? \" hidden\" : \"\")\n }, /* @__PURE__ */ React10.createElement(\"div\", {\n className: \"dvn-stack\"\n }, padders), rightElement !== void 0 && /* @__PURE__ */ React10.createElement(React10.Fragment, null, !rightElementFill && /* @__PURE__ */ React10.createElement(\"div\", {\n className: \"dvn-spacer\"\n }), /* @__PURE__ */ React10.createElement(\"div\", {\n ref: rightWrapRef,\n style: {\n height,\n maxHeight: clientHeight - Math.ceil(dpr % 1),\n position: \"sticky\",\n top: 0,\n paddingLeft: 1,\n marginBottom: -40,\n marginRight: paddingRight,\n flexGrow: rightElementFill ? 1 : void 0,\n right: rightElementSticky ? paddingRight != null ? paddingRight : 0 : void 0,\n pointerEvents: \"auto\"\n }\n }, rightElement))))));\n};\n\n// src/scrolling-data-grid/scrolling-data-grid.tsx\nimport clamp4 from \"lodash/clamp.js\";\nvar MinimapStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"MinimapStyle\",\n class: \"m15w2ly5\",\n propsAsIs: false\n});\nvar GridScroller = (p) => {\n var _a, _b, _c;\n const {\n columns,\n rows,\n rowHeight,\n headerHeight,\n groupHeaderHeight,\n enableGroups,\n freezeColumns,\n experimental,\n clientSize,\n className,\n onVisibleRegionChanged,\n scrollToEnd,\n scrollRef,\n preventDiagonalScrolling,\n rightElement,\n rightElementProps,\n overscrollX,\n overscrollY,\n showMinimap = false,\n initialSize,\n smoothScrollX = false,\n smoothScrollY = false,\n isDraggable\n } = p;\n const {\n paddingRight,\n paddingBottom\n } = experimental != null ? experimental : {};\n const [clientWidth, clientHeight] = clientSize;\n const last = React11.useRef();\n const lastX = React11.useRef();\n const lastY = React11.useRef();\n const lastSize = React11.useRef();\n const width = React11.useMemo(() => {\n let r = Math.max(0, overscrollX != null ? overscrollX : 0);\n for (const c of columns) {\n r += c.width;\n }\n return r;\n }, [columns, overscrollX]);\n let height = enableGroups ? headerHeight + groupHeaderHeight : headerHeight;\n if (typeof rowHeight === \"number\") {\n height += rows * rowHeight;\n } else {\n for (let r = 0; r < rows; r++) {\n height += rowHeight(r);\n }\n }\n if (overscrollY !== void 0) {\n height += overscrollY;\n }\n const lastArgs = React11.useRef();\n const processArgs = React11.useCallback(() => {\n var _a2, _b2, _c2;\n if (lastArgs.current === void 0)\n return;\n const args = {\n ...lastArgs.current\n };\n let x = 0;\n let tx = args.x < 0 ? -args.x : 0;\n let cellRight = 0;\n let cellX = 0;\n args.x = args.x < 0 ? 0 : args.x;\n let stickyColWidth = 0;\n for (let i = 0; i < freezeColumns; i++) {\n stickyColWidth += columns[i].width;\n }\n for (const c of columns) {\n const cx = x - stickyColWidth;\n if (args.x >= cx + c.width) {\n x += c.width;\n cellX++;\n cellRight++;\n } else if (args.x > cx) {\n x += c.width;\n if (smoothScrollX) {\n tx += cx - args.x;\n } else {\n cellX++;\n }\n cellRight++;\n } else if (args.x + args.width > cx) {\n x += c.width;\n cellRight++;\n } else {\n break;\n }\n }\n let ty = 0;\n let cellY = 0;\n let cellBottom = 0;\n if (typeof rowHeight === \"number\") {\n if (smoothScrollY) {\n cellY = Math.floor(args.y / rowHeight);\n ty = cellY * rowHeight - args.y;\n } else {\n cellY = Math.ceil(args.y / rowHeight);\n }\n cellBottom = Math.ceil(args.height / rowHeight) + cellY;\n if (ty < 0)\n cellBottom++;\n } else {\n let y = 0;\n for (let row = 0; row < rows; row++) {\n const rh = rowHeight(row);\n const cy = y + (smoothScrollY ? 0 : rh / 2);\n if (args.y >= y + rh) {\n y += rh;\n cellY++;\n cellBottom++;\n } else if (args.y > cy) {\n y += rh;\n if (smoothScrollY) {\n ty += cy - args.y;\n } else {\n cellY++;\n }\n cellBottom++;\n } else if (args.y + args.height > rh / 2 + y) {\n y += rh;\n cellBottom++;\n } else {\n break;\n }\n }\n }\n const rect = {\n x: cellX,\n y: cellY,\n width: cellRight - cellX,\n height: cellBottom - cellY\n };\n const oldRect = last.current;\n if (oldRect === void 0 || oldRect.y !== rect.y || oldRect.x !== rect.x || oldRect.height !== rect.height || oldRect.width !== rect.width || lastX.current !== tx || lastY.current !== ty || args.width !== ((_a2 = lastSize.current) == null ? void 0 : _a2[0]) || args.height !== ((_b2 = lastSize.current) == null ? void 0 : _b2[1])) {\n onVisibleRegionChanged == null ? void 0 : onVisibleRegionChanged({\n x: cellX,\n y: cellY,\n width: cellRight - cellX,\n height: cellBottom - cellY\n }, args.width, args.height, (_c2 = args.paddingRight) != null ? _c2 : 0, tx, ty);\n last.current = rect;\n lastX.current = tx;\n lastY.current = ty;\n lastSize.current = [args.width, args.height];\n }\n }, [columns, rowHeight, rows, onVisibleRegionChanged, freezeColumns, smoothScrollX, smoothScrollY]);\n const onScrollUpdate = React11.useCallback((args) => {\n lastArgs.current = args;\n processArgs();\n }, [processArgs]);\n React11.useEffect(() => {\n processArgs();\n }, [processArgs]);\n const scroller = (_a = scrollRef == null ? void 0 : scrollRef.current) != null ? _a : void 0;\n const aspect = clamp4(width / height, 2 / 3, 1.5);\n const maxSize = 200;\n const w = aspect > 1 ? maxSize : Math.ceil(maxSize * aspect);\n const h = aspect > 1 ? Math.ceil(maxSize / aspect) : maxSize;\n const hRatio = w / width;\n const vRatio = h / height;\n const vWidth = Math.min(clientWidth * Math.max(hRatio, 0.01), w);\n const vHeight = Math.min(clientHeight * Math.max(vRatio, 0.01), h);\n const left = ((_b = scroller == null ? void 0 : scroller.scrollLeft) != null ? _b : 0) / (width - clientWidth) * (w - vWidth);\n const top = ((_c = scroller == null ? void 0 : scroller.scrollTop) != null ? _c : 0) / (height - clientHeight) * (h - vHeight);\n const minimap = React11.useMemo(() => {\n if (!showMinimap || vWidth === 0 || vHeight === 0)\n return void 0;\n const handleMouse = (e) => {\n if (scroller === void 0)\n return;\n const bounds = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - bounds.x - vWidth / 2;\n const y = e.clientY - bounds.y - vHeight / 2;\n const newScrollLeft = (width - scroller.clientWidth) * (x / (w - vWidth));\n const newScrollTop = (height - scroller.clientHeight) * (y / (h - vHeight));\n scroller.scrollTo({\n left: newScrollLeft,\n top: newScrollTop,\n behavior: e.type === \"mousemove\" ? \"auto\" : \"smooth\"\n });\n };\n return /* @__PURE__ */ React11.createElement(MinimapStyle, {\n style: {\n width: w,\n height: h\n },\n \"data-testid\": \"minimap-container\",\n onMouseMove: (e) => {\n if (e.buttons !== 1)\n return;\n handleMouse(e);\n },\n onClick: handleMouse\n }, /* @__PURE__ */ React11.createElement(\"div\", {\n className: \"header\"\n }), /* @__PURE__ */ React11.createElement(\"div\", {\n className: \"locationMarker\",\n onDragStart: (e) => e.preventDefault(),\n style: {\n left,\n top,\n width: vWidth,\n height: vHeight,\n borderRadius: Math.min(vWidth, vHeight * 0.2, 9)\n }\n }));\n }, [h, height, left, scroller, showMinimap, top, vHeight, vWidth, w, width]);\n return /* @__PURE__ */ React11.createElement(InfiniteScroller, {\n scrollRef,\n minimap,\n className,\n preventDiagonalScrolling,\n draggable: isDraggable === true || typeof isDraggable === \"string\",\n scrollWidth: width + (paddingRight != null ? paddingRight : 0),\n scrollHeight: height + (paddingBottom != null ? paddingBottom : 0),\n clientHeight,\n rightElement,\n paddingBottom,\n paddingRight,\n rightElementProps,\n update: onScrollUpdate,\n initialSize,\n scrollToEnd\n }, /* @__PURE__ */ React11.createElement(data_grid_dnd_default, {\n eventTargetRef: scrollRef,\n width: clientWidth,\n height: clientHeight,\n accessibilityHeight: p.accessibilityHeight,\n canvasRef: p.canvasRef,\n cellXOffset: p.cellXOffset,\n cellYOffset: p.cellYOffset,\n columns: p.columns,\n disabledRows: p.disabledRows,\n enableGroups: p.enableGroups,\n fillHandle: p.fillHandle,\n firstColAccessible: p.firstColAccessible,\n fixedShadowX: p.fixedShadowX,\n fixedShadowY: p.fixedShadowY,\n freezeColumns: p.freezeColumns,\n getCellContent: p.getCellContent,\n getCellRenderer: p.getCellRenderer,\n getGroupDetails: p.getGroupDetails,\n getRowThemeOverride: p.getRowThemeOverride,\n groupHeaderHeight: p.groupHeaderHeight,\n headerHeight: p.headerHeight,\n highlightRegions: p.highlightRegions,\n imageWindowLoader: p.imageWindowLoader,\n isFilling: p.isFilling,\n isFocused: p.isFocused,\n lockColumns: p.lockColumns,\n maxColumnWidth: p.maxColumnWidth,\n minColumnWidth: p.minColumnWidth,\n onHeaderMenuClick: p.onHeaderMenuClick,\n onMouseMove: p.onMouseMove,\n prelightCells: p.prelightCells,\n rowHeight: p.rowHeight,\n rows: p.rows,\n selection: p.selection,\n theme: p.theme,\n trailingRowType: p.trailingRowType,\n translateX: p.translateX,\n translateY: p.translateY,\n verticalBorder: p.verticalBorder,\n drawCustomCell: p.drawCustomCell,\n drawFocusRing: p.drawFocusRing,\n drawHeader: p.drawHeader,\n experimental: p.experimental,\n gridRef: p.gridRef,\n headerIcons: p.headerIcons,\n isDraggable: p.isDraggable,\n onCanvasBlur: p.onCanvasBlur,\n onCanvasFocused: p.onCanvasFocused,\n onCellFocused: p.onCellFocused,\n onColumnMoved: p.onColumnMoved,\n onColumnResize: p.onColumnResize,\n onColumnResizeEnd: p.onColumnResizeEnd,\n onColumnResizeStart: p.onColumnResizeStart,\n onContextMenu: p.onContextMenu,\n onDragEnd: p.onDragEnd,\n onDragLeave: p.onDragLeave,\n onDragOverCell: p.onDragOverCell,\n onDragStart: p.onDragStart,\n onDrop: p.onDrop,\n onItemHovered: p.onItemHovered,\n onKeyDown: p.onKeyDown,\n onKeyUp: p.onKeyUp,\n onMouseDown: p.onMouseDown,\n onMouseUp: p.onMouseUp,\n onRowMoved: p.onRowMoved,\n smoothScrollX: p.smoothScrollX,\n smoothScrollY: p.smoothScrollY\n }));\n};\nvar scrolling_data_grid_default = GridScroller;\n\n// src/data-grid-search/data-grid-search-style.tsx\nvar _exp9 = () => (p) => p.showSearch ? 0 : 400;\nvar SearchWrapper = /* @__PURE__ */ styled_default(\"div\")({\n name: \"SearchWrapper\",\n class: \"sxep88s\",\n propsAsIs: false,\n vars: {\n \"sxep88s-0\": [_exp9(), \"px\"]\n }\n});\n\n// src/data-grid-search/data-grid-search.tsx\nvar upArrow = /* @__PURE__ */ React12.createElement(\"svg\", { className: \"button-icon\", viewBox: \"0 0 512 512\" }, /* @__PURE__ */ React12.createElement(\n \"path\",\n {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"48\",\n d: \"M112 244l144-144 144 144M256 120v292\"\n }\n));\nvar downArrow = /* @__PURE__ */ React12.createElement(\"svg\", { className: \"button-icon\", viewBox: \"0 0 512 512\" }, /* @__PURE__ */ React12.createElement(\n \"path\",\n {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"48\",\n d: \"M112 268l144 144 144-144M256 392V100\"\n }\n));\nvar closeX = /* @__PURE__ */ React12.createElement(\"svg\", { className: \"button-icon\", viewBox: \"0 0 512 512\" }, /* @__PURE__ */ React12.createElement(\n \"path\",\n {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"32\",\n d: \"M368 368L144 144M368 144L144 368\"\n }\n));\nvar targetSearchTimeMS = 10;\nvar DataGridSearch = (p) => {\n const {\n canvasRef,\n cellYOffset,\n rows,\n columns,\n searchInputRef,\n searchValue,\n searchResults: searchResultsIn,\n onSearchValueChange,\n getCellsForSelection,\n onSearchResultsChanged,\n showSearch = false,\n onSearchClose\n } = p;\n const [searchID] = React12.useState(() => \"search-box-\" + Math.round(Math.random() * 1e3));\n const [searchStringInner, setSearchStringInner] = React12.useState(\"\");\n const searchString = searchValue != null ? searchValue : searchStringInner;\n const setSearchString = React12.useCallback(\n (newVal) => {\n setSearchStringInner(newVal);\n onSearchValueChange == null ? void 0 : onSearchValueChange(newVal);\n },\n [onSearchValueChange]\n );\n const [searchStatus, setSearchStatus] = React12.useState();\n const searchStatusRef = React12.useRef(searchStatus);\n searchStatusRef.current = searchStatus;\n React12.useEffect(() => {\n if (searchResultsIn === void 0)\n return;\n if (searchResultsIn.length > 0) {\n setSearchStatus((cv) => {\n var _a;\n return {\n rowsSearched: rows,\n results: searchResultsIn.length,\n selectedIndex: (_a = cv == null ? void 0 : cv.selectedIndex) != null ? _a : -1\n };\n });\n } else {\n setSearchStatus(void 0);\n }\n }, [rows, searchResultsIn]);\n const abortControllerRef = React12.useRef(new AbortController());\n const searchHandle = React12.useRef();\n const [searchResultsInner, setSearchResultsInner] = React12.useState([]);\n const searchResults = searchResultsIn != null ? searchResultsIn : searchResultsInner;\n const cancelSearch = React12.useCallback(() => {\n if (searchHandle.current !== void 0) {\n window.cancelAnimationFrame(searchHandle.current);\n searchHandle.current = void 0;\n abortControllerRef.current.abort();\n }\n }, []);\n const cellYOffsetRef = React12.useRef(cellYOffset);\n cellYOffsetRef.current = cellYOffset;\n const beginSearch = React12.useCallback(\n (str) => {\n const regex = new RegExp(str.replace(/([$()*+.?[\\\\\\]^{|}-])/g, \"\\\\$1\"), \"i\");\n let startY = cellYOffsetRef.current;\n let searchStride = Math.min(10, rows);\n let rowsSearched = 0;\n setSearchStatus(void 0);\n setSearchResultsInner([]);\n const runningResult = [];\n const tick = async () => {\n var _a, _b;\n if (getCellsForSelection === void 0)\n return;\n const tStart = performance.now();\n const rowsLeft = rows - rowsSearched;\n let data = getCellsForSelection(\n {\n x: 0,\n y: startY,\n width: columns.length,\n height: Math.min(searchStride, rowsLeft, rows - startY)\n },\n abortControllerRef.current.signal\n );\n if (typeof data === \"function\") {\n data = await data();\n }\n let added = false;\n for (const [row, d] of data.entries()) {\n for (const [col, cell] of d.entries()) {\n let testString;\n switch (cell.kind) {\n case GridCellKind.Text:\n case GridCellKind.Number:\n testString = cell.displayData;\n break;\n case GridCellKind.Uri:\n case GridCellKind.Markdown:\n testString = cell.data;\n break;\n case GridCellKind.Boolean:\n testString = typeof cell.data === \"boolean\" ? cell.data.toString() : void 0;\n break;\n case GridCellKind.Image:\n case GridCellKind.Bubble:\n testString = cell.data.join(\"\\u{1F433}\");\n break;\n case GridCellKind.Custom:\n testString = cell.copyData;\n break;\n }\n if (testString !== void 0 && regex.test(testString)) {\n runningResult.push([col, row + startY]);\n added = true;\n }\n }\n }\n const tEnd = performance.now();\n if (added) {\n setSearchResultsInner([...runningResult]);\n }\n rowsSearched += data.length;\n assert(rowsSearched <= rows);\n const selectedIndex = (_b = (_a = searchStatusRef.current) == null ? void 0 : _a.selectedIndex) != null ? _b : -1;\n setSearchStatus({\n results: runningResult.length,\n rowsSearched,\n selectedIndex\n });\n onSearchResultsChanged == null ? void 0 : onSearchResultsChanged(runningResult, selectedIndex);\n if (startY + searchStride >= rows) {\n startY = 0;\n } else {\n startY += searchStride;\n }\n const tElapsed = tEnd - tStart;\n const rounded = Math.max(tElapsed, 1);\n const scalar = targetSearchTimeMS / rounded;\n searchStride = Math.ceil(searchStride * scalar);\n if (rowsSearched < rows && runningResult.length < 1e3) {\n searchHandle.current = window.requestAnimationFrame(tick);\n }\n };\n cancelSearch();\n searchHandle.current = window.requestAnimationFrame(tick);\n },\n [cancelSearch, columns.length, getCellsForSelection, onSearchResultsChanged, rows]\n );\n const onClose = React12.useCallback(() => {\n var _a;\n onSearchClose == null ? void 0 : onSearchClose();\n setSearchStatus(void 0);\n setSearchResultsInner([]);\n onSearchResultsChanged == null ? void 0 : onSearchResultsChanged([], -1);\n cancelSearch();\n (_a = canvasRef == null ? void 0 : canvasRef.current) == null ? void 0 : _a.focus();\n }, [cancelSearch, canvasRef, onSearchClose, onSearchResultsChanged]);\n const onSearchChange = React12.useCallback(\n (event) => {\n setSearchString(event.target.value);\n if (searchResultsIn !== void 0)\n return;\n if (event.target.value === \"\") {\n setSearchStatus(void 0);\n setSearchResultsInner([]);\n cancelSearch();\n } else {\n beginSearch(event.target.value);\n }\n },\n [beginSearch, cancelSearch, setSearchString, searchResultsIn]\n );\n React12.useEffect(() => {\n if (showSearch && searchInputRef.current !== null) {\n setSearchString(\"\");\n searchInputRef.current.focus({ preventScroll: true });\n }\n }, [showSearch, searchInputRef, setSearchString]);\n const onNext = React12.useCallback(\n (ev) => {\n var _a;\n (_a = ev == null ? void 0 : ev.stopPropagation) == null ? void 0 : _a.call(ev);\n if (searchStatus === void 0)\n return;\n const newIndex = (searchStatus.selectedIndex + 1) % searchStatus.results;\n setSearchStatus({\n ...searchStatus,\n selectedIndex: newIndex\n });\n onSearchResultsChanged == null ? void 0 : onSearchResultsChanged(searchResults, newIndex);\n },\n [searchStatus, onSearchResultsChanged, searchResults]\n );\n const onPrev = React12.useCallback(\n (ev) => {\n var _a;\n (_a = ev == null ? void 0 : ev.stopPropagation) == null ? void 0 : _a.call(ev);\n if (searchStatus === void 0)\n return;\n let newIndex = (searchStatus.selectedIndex - 1) % searchStatus.results;\n if (newIndex < 0)\n newIndex += searchStatus.results;\n setSearchStatus({\n ...searchStatus,\n selectedIndex: newIndex\n });\n onSearchResultsChanged == null ? void 0 : onSearchResultsChanged(searchResults, newIndex);\n },\n [onSearchResultsChanged, searchResults, searchStatus]\n );\n const onSearchKeyDown = React12.useCallback(\n (event) => {\n if ((event.ctrlKey || event.metaKey) && event.nativeEvent.code === \"KeyF\" || event.key === \"Escape\") {\n onClose();\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === \"Enter\") {\n if (event.shiftKey) {\n onPrev();\n } else {\n onNext();\n }\n }\n },\n [onClose, onNext, onPrev]\n );\n React12.useEffect(() => {\n return () => {\n cancelSearch();\n };\n }, [cancelSearch]);\n const searchbox = React12.useMemo(() => {\n var _a, _b, _c;\n let resultString;\n if (searchStatus !== void 0) {\n resultString = searchStatus.results >= 1e3 ? `over 1000` : `${searchStatus.results} result${searchStatus.results !== 1 ? \"s\" : \"\"}`;\n if (searchStatus.selectedIndex >= 0) {\n resultString = `${searchStatus.selectedIndex + 1} of ${resultString}`;\n }\n }\n const cancelEvent = (ev) => {\n ev.stopPropagation();\n };\n const rowsSearchedProgress = Math.floor(((_a = searchStatus == null ? void 0 : searchStatus.rowsSearched) != null ? _a : 0) / rows * 100);\n const progressStyle = {\n width: `${rowsSearchedProgress}%`\n };\n return /* @__PURE__ */ React12.createElement(\n SearchWrapper,\n {\n showSearch,\n onMouseDown: cancelEvent,\n onMouseMove: cancelEvent,\n onMouseUp: cancelEvent,\n onClick: cancelEvent\n },\n /* @__PURE__ */ React12.createElement(\"div\", { className: \"search-bar-inner\" }, /* @__PURE__ */ React12.createElement(\n \"input\",\n {\n id: searchID,\n \"aria-hidden\": !showSearch,\n \"data-testid\": \"search-input\",\n ref: searchInputRef,\n onChange: onSearchChange,\n value: searchString,\n tabIndex: showSearch ? void 0 : -1,\n onKeyDownCapture: onSearchKeyDown\n }\n ), /* @__PURE__ */ React12.createElement(\n \"button\",\n {\n \"aria-label\": \"Previous Result\",\n \"aria-hidden\": !showSearch,\n tabIndex: showSearch ? void 0 : -1,\n onClick: onPrev,\n disabled: ((_b = searchStatus == null ? void 0 : searchStatus.results) != null ? _b : 0) === 0\n },\n upArrow\n ), /* @__PURE__ */ React12.createElement(\n \"button\",\n {\n \"aria-label\": \"Next Result\",\n \"aria-hidden\": !showSearch,\n tabIndex: showSearch ? void 0 : -1,\n onClick: onNext,\n disabled: ((_c = searchStatus == null ? void 0 : searchStatus.results) != null ? _c : 0) === 0\n },\n downArrow\n ), onSearchClose !== void 0 && /* @__PURE__ */ React12.createElement(\n \"button\",\n {\n \"aria-label\": \"Close Search\",\n \"aria-hidden\": !showSearch,\n \"data-testid\": \"search-close-button\",\n tabIndex: showSearch ? void 0 : -1,\n onClick: onClose\n },\n closeX\n )),\n searchStatus !== void 0 ? /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(\"div\", { className: \"search-status\" }, /* @__PURE__ */ React12.createElement(\"div\", { \"data-testid\": \"search-result-area\" }, resultString)), /* @__PURE__ */ React12.createElement(\"div\", { className: \"search-progress\", style: progressStyle })) : /* @__PURE__ */ React12.createElement(\"div\", { className: \"search-status\" }, /* @__PURE__ */ React12.createElement(\"label\", { htmlFor: searchID }, \"Type to search\"))\n );\n }, [\n onClose,\n onNext,\n onPrev,\n onSearchChange,\n onSearchClose,\n onSearchKeyDown,\n rows,\n searchStatus,\n searchString,\n showSearch,\n searchID,\n searchInputRef\n ]);\n return /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(\n scrolling_data_grid_default,\n {\n prelightCells: searchResults,\n accessibilityHeight: p.accessibilityHeight,\n canvasRef: p.canvasRef,\n cellXOffset: p.cellXOffset,\n cellYOffset: p.cellYOffset,\n className: p.className,\n clientSize: p.clientSize,\n columns: p.columns,\n disabledRows: p.disabledRows,\n enableGroups: p.enableGroups,\n fillHandle: p.fillHandle,\n firstColAccessible: p.firstColAccessible,\n fixedShadowX: p.fixedShadowX,\n fixedShadowY: p.fixedShadowY,\n freezeColumns: p.freezeColumns,\n getCellContent: p.getCellContent,\n getCellRenderer: p.getCellRenderer,\n getGroupDetails: p.getGroupDetails,\n getRowThemeOverride: p.getRowThemeOverride,\n groupHeaderHeight: p.groupHeaderHeight,\n headerHeight: p.headerHeight,\n highlightRegions: p.highlightRegions,\n imageWindowLoader: p.imageWindowLoader,\n initialSize: p.initialSize,\n isFilling: p.isFilling,\n isFocused: p.isFocused,\n lockColumns: p.lockColumns,\n maxColumnWidth: p.maxColumnWidth,\n minColumnWidth: p.minColumnWidth,\n onHeaderMenuClick: p.onHeaderMenuClick,\n onMouseMove: p.onMouseMove,\n onVisibleRegionChanged: p.onVisibleRegionChanged,\n overscrollX: p.overscrollX,\n overscrollY: p.overscrollY,\n preventDiagonalScrolling: p.preventDiagonalScrolling,\n rightElement: p.rightElement,\n rightElementProps: p.rightElementProps,\n rowHeight: p.rowHeight,\n rows: p.rows,\n scrollRef: p.scrollRef,\n selection: p.selection,\n showMinimap: p.showMinimap,\n theme: p.theme,\n trailingRowType: p.trailingRowType,\n translateX: p.translateX,\n translateY: p.translateY,\n verticalBorder: p.verticalBorder,\n drawCustomCell: p.drawCustomCell,\n drawFocusRing: p.drawFocusRing,\n drawHeader: p.drawHeader,\n experimental: p.experimental,\n gridRef: p.gridRef,\n headerIcons: p.headerIcons,\n isDraggable: p.isDraggable,\n onCanvasBlur: p.onCanvasBlur,\n onCanvasFocused: p.onCanvasFocused,\n onCellFocused: p.onCellFocused,\n onColumnMoved: p.onColumnMoved,\n onColumnResize: p.onColumnResize,\n onColumnResizeEnd: p.onColumnResizeEnd,\n onColumnResizeStart: p.onColumnResizeStart,\n onContextMenu: p.onContextMenu,\n onDragEnd: p.onDragEnd,\n onDragLeave: p.onDragLeave,\n onDragOverCell: p.onDragOverCell,\n onDragStart: p.onDragStart,\n onDrop: p.onDrop,\n onItemHovered: p.onItemHovered,\n onKeyDown: p.onKeyDown,\n onKeyUp: p.onKeyUp,\n onMouseDown: p.onMouseDown,\n onMouseUp: p.onMouseUp,\n onRowMoved: p.onRowMoved,\n smoothScrollX: p.smoothScrollX,\n smoothScrollY: p.smoothScrollY,\n scrollToEnd: p.scrollToEnd\n }\n ), searchbox);\n};\nvar data_grid_search_default = DataGridSearch;\n\n// src/data-editor/group-rename.tsx\nimport React13 from \"react\";\nvar _exp10 = () => (p) => Math.max(16, p.targetHeight - 10);\nvar RenameInput = /* @__PURE__ */ styled_default(\"input\")({\n name: \"RenameInput\",\n class: \"r1kzy40b\",\n propsAsIs: false,\n vars: {\n \"r1kzy40b-0\": [_exp10(), \"px\"]\n }\n});\nvar GroupRename = (p) => {\n const {\n bounds,\n group,\n onClose,\n canvasBounds,\n onFinish\n } = p;\n const [value, setValue] = React13.useState(group);\n return /* @__PURE__ */ React13.createElement(ClickOutsideContainer, {\n style: {\n position: \"absolute\",\n left: bounds.x - canvasBounds.left + 1,\n top: bounds.y - canvasBounds.top,\n width: bounds.width - 2,\n height: bounds.height\n },\n className: \"c1sqdbw3\",\n onClickOutside: onClose\n }, /* @__PURE__ */ React13.createElement(RenameInput, {\n targetHeight: bounds.height,\n \"data-testid\": \"group-rename-input\",\n value,\n onBlur: onClose,\n onFocus: (e) => e.target.setSelectionRange(0, value.length),\n onChange: (e) => setValue(e.target.value),\n onKeyDown: (e) => {\n if (e.key === \"Enter\") {\n onFinish(value);\n } else if (e.key === \"Escape\") {\n onClose();\n }\n },\n autoFocus: true\n }));\n};\n\n// src/data-editor/use-column-sizer.ts\nimport * as React14 from \"react\";\nvar defaultSize = 150;\nfunction measureCell(ctx, cell, theme, getCellRenderer) {\n var _a, _b;\n const r = getCellRenderer(cell);\n return (_b = (_a = r == null ? void 0 : r.measure) == null ? void 0 : _a.call(r, ctx, cell, theme)) != null ? _b : defaultSize;\n}\nfunction measureColumn(ctx, theme, c, colIndex, selectedData, minColumnWidth, maxColumnWidth, removeOutliers, getCellRenderer) {\n let sizes = [];\n if (selectedData !== void 0) {\n sizes.push(\n ...selectedData.map((row) => row[colIndex]).map((cell) => measureCell(ctx, cell, theme, getCellRenderer))\n );\n }\n if (sizes.length > 5 && removeOutliers) {\n const average = sizes.reduce((a, b) => a + b) / sizes.length;\n sizes = sizes.filter((a) => a < average * 2);\n }\n sizes.push(ctx.measureText(c.title).width + 16 + (c.icon === void 0 ? 0 : 28));\n const biggest = Math.max(...sizes);\n const final = Math.max(Math.ceil(minColumnWidth), Math.min(Math.floor(maxColumnWidth), Math.ceil(biggest)));\n return {\n ...c,\n width: final\n };\n}\nfunction useColumnSizer(columns, rows, getCellsForSelection, clientWidth, minColumnWidth, maxColumnWidth, theme, getCellRenderer, abortController) {\n const rowsRef = React14.useRef(rows);\n const getCellsForSelectionRef = React14.useRef(getCellsForSelection);\n const themeRef = React14.useRef(theme);\n rowsRef.current = rows;\n getCellsForSelectionRef.current = getCellsForSelection;\n themeRef.current = theme;\n const [canvas, ctx] = React14.useMemo(() => {\n if (typeof window === \"undefined\")\n return [null, null];\n const offscreen = document.createElement(\"canvas\");\n offscreen.style[\"display\"] = \"none\";\n offscreen.style[\"opacity\"] = \"0\";\n offscreen.style[\"position\"] = \"fixed\";\n return [offscreen, offscreen.getContext(\"2d\", { alpha: false })];\n }, []);\n React14.useLayoutEffect(() => {\n if (canvas)\n document.documentElement.append(canvas);\n return () => {\n canvas == null ? void 0 : canvas.remove();\n };\n }, [canvas]);\n const memoMap = React14.useRef({});\n const lastColumns = React14.useRef();\n const [selectedData, setSelectionData] = React14.useState();\n React14.useLayoutEffect(() => {\n const getCells = getCellsForSelectionRef.current;\n if (getCells === void 0 || columns.every(isSizedGridColumn))\n return;\n let computeRows = Math.max(1, 10 - Math.floor(columns.length / 1e4));\n let tailRows = 0;\n if (computeRows < rowsRef.current && computeRows > 1) {\n computeRows--;\n tailRows = 1;\n }\n const computeArea = {\n x: 0,\n y: 0,\n width: columns.length,\n height: Math.min(rowsRef.current, computeRows)\n };\n const tailComputeArea = {\n x: 0,\n y: rowsRef.current - 1,\n width: columns.length,\n height: 1\n };\n const fn = async () => {\n const getResult = getCells(computeArea, abortController.signal);\n const tailGetResult = tailRows > 0 ? getCells(tailComputeArea, abortController.signal) : void 0;\n let toSet;\n if (typeof getResult === \"object\") {\n toSet = getResult;\n } else {\n toSet = await resolveCellsThunk(getResult);\n }\n if (tailGetResult !== void 0) {\n if (typeof tailGetResult === \"object\") {\n toSet = [...toSet, ...tailGetResult];\n } else {\n toSet = [...toSet, ...await resolveCellsThunk(tailGetResult)];\n }\n }\n lastColumns.current = columns;\n setSelectionData(toSet);\n };\n void fn();\n }, [abortController.signal, columns]);\n return React14.useMemo(() => {\n var _a;\n const getRaw = () => {\n if (columns.every(isSizedGridColumn)) {\n return columns;\n }\n if (ctx === null) {\n return columns.map((c) => {\n if (isSizedGridColumn(c))\n return c;\n return {\n ...c,\n width: defaultSize\n };\n });\n }\n ctx.font = `${themeRef.current.baseFontStyle} ${themeRef.current.fontFamily}`;\n return columns.map((c, colIndex) => {\n if (isSizedGridColumn(c))\n return c;\n if (memoMap.current[c.id] !== void 0) {\n return {\n ...c,\n width: memoMap.current[c.id]\n };\n }\n if (selectedData === void 0 || lastColumns.current !== columns || c.id === void 0) {\n return {\n ...c,\n width: defaultSize\n };\n }\n const r = measureColumn(\n ctx,\n theme,\n c,\n colIndex,\n selectedData,\n minColumnWidth,\n maxColumnWidth,\n true,\n getCellRenderer\n );\n memoMap.current[c.id] = r.width;\n return r;\n });\n };\n let result = getRaw();\n let totalWidth = 0;\n let totalGrow = 0;\n const distribute = [];\n for (const [i, c] of result.entries()) {\n totalWidth += c.width;\n if (c.grow !== void 0 && c.grow > 0) {\n totalGrow += c.grow;\n distribute.push(i);\n }\n }\n if (totalWidth < clientWidth && distribute.length > 0) {\n const writeable = [...result];\n const extra = clientWidth - totalWidth;\n let remaining = extra;\n for (let di = 0; di < distribute.length; di++) {\n const i = distribute[di];\n const weighted = ((_a = result[i].grow) != null ? _a : 0) / totalGrow;\n const toAdd = di === distribute.length - 1 ? remaining : Math.min(remaining, Math.floor(extra * weighted));\n writeable[i] = {\n ...result[i],\n growOffset: toAdd,\n width: result[i].width + toAdd\n };\n remaining -= toAdd;\n }\n result = writeable;\n }\n return result;\n }, [clientWidth, columns, ctx, selectedData, theme, minColumnWidth, maxColumnWidth, getCellRenderer]);\n}\n\n// src/common/is-hotkey.ts\nfunction checkKey(key, args) {\n if (key === void 0)\n return false;\n if (key.length > 1 && key.startsWith(\"_\")) {\n const keycode = Number.parseInt(key.slice(1));\n if (keycode !== args.keyCode)\n return false;\n } else {\n if (key !== args.key)\n return false;\n }\n return true;\n}\nfunction isHotkey(hotkey, args) {\n if (hotkey.length === 0)\n return false;\n let wantCtrl = false;\n let wantShift = false;\n let wantAlt = false;\n let wantMeta = false;\n const split = hotkey.split(\"+\");\n const key = split.pop();\n if (!checkKey(key, args))\n return false;\n for (const accel of split) {\n switch (accel) {\n case \"ctrl\":\n wantCtrl = true;\n break;\n case \"shift\":\n wantShift = true;\n break;\n case \"alt\":\n wantAlt = true;\n break;\n case \"meta\":\n wantMeta = true;\n break;\n case \"primary\":\n if (browserIsOSX.value) {\n wantMeta = true;\n } else {\n wantCtrl = true;\n }\n break;\n }\n }\n return args.altKey === wantAlt && args.ctrlKey === wantCtrl && args.shiftKey === wantShift && args.metaKey === wantMeta;\n}\n\n// src/data-grid/use-selection-behavior.ts\nimport React15 from \"react\";\nfunction useSelectionBehavior(gridSelection, setGridSelection, rangeBehavior, columnBehavior, rowBehavior, rangeSelect) {\n const setCurrent = React15.useCallback(\n (value, expand, append, trigger) => {\n var _a, _b;\n if ((rangeSelect === \"cell\" || rangeSelect === \"multi-cell\") && value !== void 0) {\n value = {\n ...value,\n range: {\n x: value.cell[0],\n y: value.cell[1],\n width: 1,\n height: 1\n }\n };\n }\n const rangeMixable = rangeBehavior === \"mixed\" && (append || trigger === \"drag\");\n const allowColumnCoSelect = columnBehavior === \"mixed\" && rangeMixable;\n const allowRowCoSelect = rowBehavior === \"mixed\" && rangeMixable;\n let newVal = {\n current: value === void 0 ? void 0 : {\n ...value,\n rangeStack: trigger === \"drag\" ? (_b = (_a = gridSelection.current) == null ? void 0 : _a.rangeStack) != null ? _b : [] : []\n },\n columns: allowColumnCoSelect ? gridSelection.columns : CompactSelection.empty(),\n rows: allowRowCoSelect ? gridSelection.rows : CompactSelection.empty()\n };\n const addLastRange = append && (rangeSelect === \"multi-rect\" || rangeSelect === \"multi-cell\");\n if (addLastRange && newVal.current !== void 0 && gridSelection.current !== void 0) {\n newVal = {\n ...newVal,\n current: {\n ...newVal.current,\n rangeStack: [...gridSelection.current.rangeStack, gridSelection.current.range]\n }\n };\n }\n setGridSelection(newVal, expand);\n },\n [columnBehavior, gridSelection, rangeBehavior, rangeSelect, rowBehavior, setGridSelection]\n );\n const setSelectedRows = React15.useCallback(\n (newRows, append, allowMixed) => {\n newRows = newRows != null ? newRows : gridSelection.rows;\n if (append !== void 0) {\n newRows = newRows.add(append);\n }\n let newVal;\n if (rowBehavior === \"exclusive\" && newRows.length > 0) {\n newVal = {\n current: void 0,\n columns: CompactSelection.empty(),\n rows: newRows\n };\n } else {\n const rangeMixed = allowMixed && rangeBehavior === \"mixed\";\n const columnMixed = allowMixed && columnBehavior === \"mixed\";\n const current = !rangeMixed ? void 0 : gridSelection.current;\n newVal = {\n current,\n columns: columnMixed ? gridSelection.columns : CompactSelection.empty(),\n rows: newRows\n };\n }\n setGridSelection(newVal, false);\n },\n [columnBehavior, gridSelection, rangeBehavior, rowBehavior, setGridSelection]\n );\n const setSelectedColumns = React15.useCallback(\n (newCols, append, allowMixed) => {\n newCols = newCols != null ? newCols : gridSelection.columns;\n if (append !== void 0) {\n newCols = newCols.add(append);\n }\n let newVal;\n if (columnBehavior === \"exclusive\" && newCols.length > 0) {\n newVal = {\n current: void 0,\n rows: CompactSelection.empty(),\n columns: newCols\n };\n } else {\n const rangeMixed = allowMixed && rangeBehavior === \"mixed\";\n const rowMixed = allowMixed && rowBehavior === \"mixed\";\n const current = !rangeMixed ? void 0 : gridSelection.current;\n newVal = {\n current,\n rows: rowMixed ? gridSelection.rows : CompactSelection.empty(),\n columns: newCols\n };\n }\n setGridSelection(newVal, false);\n },\n [columnBehavior, gridSelection, rangeBehavior, rowBehavior, setGridSelection]\n );\n return [setCurrent, setSelectedRows, setSelectedColumns];\n}\n\n// src/data-editor/use-cells-for-selection.ts\nimport * as React16 from \"react\";\nfunction useCellsForSelection(getCellsForSelectionIn, getCellContent, rowMarkerOffset, abortController, rows) {\n const getCellsForSelectionDirectWhenValid = React16.useCallback(\n (rect) => {\n var _a;\n if (getCellsForSelectionIn === true) {\n const result = [];\n for (let y = rect.y; y < rect.y + rect.height; y++) {\n const row = [];\n for (let x = rect.x; x < rect.x + rect.width; x++) {\n if (x < 0 || y >= rows) {\n row.push({\n kind: GridCellKind.Loading,\n allowOverlay: false\n });\n } else {\n row.push(getCellContent([x, y]));\n }\n }\n result.push(row);\n }\n return result;\n }\n return (_a = getCellsForSelectionIn == null ? void 0 : getCellsForSelectionIn(rect, abortController.signal)) != null ? _a : [];\n },\n [abortController.signal, getCellContent, getCellsForSelectionIn, rows]\n );\n const getCellsForSelectionDirect = getCellsForSelectionIn !== void 0 ? getCellsForSelectionDirectWhenValid : void 0;\n const getCellsForSelectionMangled = React16.useCallback(\n (rect) => {\n if (getCellsForSelectionDirect === void 0)\n return [];\n const newRect = {\n ...rect,\n x: rect.x - rowMarkerOffset\n };\n if (newRect.x < 0) {\n newRect.x = 0;\n newRect.width--;\n const r = getCellsForSelectionDirect(newRect, abortController.signal);\n if (typeof r === \"function\") {\n return async () => (\n // eslint-disable-next-line unicorn/no-await-expression-member\n (await r()).map((row) => [\n { kind: GridCellKind.Loading, allowOverlay: false },\n ...row\n ])\n );\n }\n return r.map((row) => [{ kind: GridCellKind.Loading, allowOverlay: false }, ...row]);\n }\n return getCellsForSelectionDirect(newRect, abortController.signal);\n },\n [abortController.signal, getCellsForSelectionDirect, rowMarkerOffset]\n );\n const getCellsForSelection = getCellsForSelectionIn !== void 0 ? getCellsForSelectionMangled : void 0;\n return [getCellsForSelection, getCellsForSelectionDirect];\n}\n\n// src/data-editor/copy-paste.ts\nfunction convertCellToBuffer(cell) {\n var _a, _b;\n if (cell.copyData !== void 0) {\n return {\n formatted: cell.copyData,\n rawValue: cell.copyData,\n format: \"string\"\n };\n }\n switch (cell.kind) {\n case GridCellKind.Boolean:\n return {\n formatted: cell.data === true ? \"TRUE\" : cell.data === false ? \"FALSE\" : cell.data === BooleanIndeterminate ? \"INDETERMINATE\" : \"\",\n rawValue: cell.data,\n format: \"boolean\"\n };\n case GridCellKind.Custom:\n return {\n formatted: cell.copyData,\n rawValue: cell.copyData,\n format: \"string\"\n };\n case GridCellKind.Image:\n case GridCellKind.Bubble:\n return {\n formatted: cell.data,\n rawValue: cell.data,\n format: \"string-array\"\n };\n case GridCellKind.Drilldown:\n return {\n formatted: cell.data.map((x) => x.text),\n rawValue: cell.data.map((x) => x.text),\n format: \"string-array\"\n };\n case GridCellKind.Text:\n return {\n formatted: (_a = cell.displayData) != null ? _a : cell.data,\n rawValue: cell.data,\n format: \"string\"\n };\n case GridCellKind.Uri:\n return {\n formatted: (_b = cell.displayData) != null ? _b : cell.data,\n rawValue: cell.data,\n format: \"url\"\n };\n case GridCellKind.Markdown:\n case GridCellKind.RowID:\n return {\n formatted: cell.data,\n rawValue: cell.data,\n format: \"string\"\n };\n case GridCellKind.Number:\n return {\n formatted: cell.displayData,\n rawValue: cell.data,\n format: \"number\"\n };\n case GridCellKind.Loading:\n return {\n formatted: \"#LOADING\",\n rawValue: \"\",\n format: \"string\"\n };\n case GridCellKind.Protected:\n return {\n formatted: \"************\",\n rawValue: \"\",\n format: \"string\"\n };\n default:\n assertNever(cell);\n }\n}\nfunction createBufferFromGridCells(cells, columnIndexes) {\n const copyBuffer = cells.map((row, index) => {\n const mappedIndex = columnIndexes[index];\n return row.map((cell) => {\n if (cell.span !== void 0 && cell.span[0] !== mappedIndex)\n return {\n formatted: \"\",\n rawValue: \"\",\n format: \"string\"\n };\n return convertCellToBuffer(cell);\n });\n });\n return copyBuffer;\n}\nfunction escapeIfNeeded(str, withComma) {\n if ((withComma ? /[\\t\\n\",]/ : /[\\t\\n\"]/).test(str)) {\n str = `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\nfunction createTextBuffer(copyBuffer) {\n var _a, _b;\n const lines = [];\n for (const row of copyBuffer) {\n const line = [];\n for (const cell of row) {\n if (cell.format === \"url\") {\n line.push((_b = (_a = cell.rawValue) == null ? void 0 : _a.toString()) != null ? _b : \"\");\n } else if (cell.format === \"string-array\") {\n line.push(cell.formatted.map((x) => escapeIfNeeded(x, true)).join(\",\"));\n } else {\n line.push(escapeIfNeeded(cell.formatted, false));\n }\n }\n lines.push(line.join(\"\t\"));\n }\n return lines.join(\"\\n\");\n}\nfunction formatHtmlTextContent(text) {\n return text.replace(/\\t/g, \" \").replace(/ {2,}/g, (match) => \"<span> </span>\".repeat(match.length));\n}\nfunction formatHtmlAttributeContent(attrText) {\n return '\"' + attrText.replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/</g, \"<\").replace(/>/g, \">\") + '\"';\n}\nfunction restoreHtmlEntities(str) {\n return str.replace(/"/g, '\"').replace(/</g, \"<\").replace(/>/g, \">\").replace(/&/g, \"&\");\n}\nfunction createHtmlBuffer(copyBuffer) {\n var _a, _b;\n const lines = [];\n lines.push(`<style type=\"text/css\"><!--br {mso-data-placement:same-cell;}--></style>`, \"<table><tbody>\");\n for (const row of copyBuffer) {\n lines.push(\"<tr>\");\n for (const cell of row) {\n const formatStr = `gdg-format=\"${cell.format}\"`;\n if (cell.format === \"url\") {\n lines.push(\n `<td ${formatStr}><a href=\"${cell.rawValue}\">${formatHtmlTextContent(cell.formatted)}</a></td>`\n );\n } else {\n if (cell.format === \"string-array\") {\n lines.push(\n `<td ${formatStr}><ol>${cell.formatted.map(\n (x, ind) => `<li gdg-raw-value=${formatHtmlAttributeContent(cell.rawValue[ind])}>` + formatHtmlTextContent(x) + \"</li>\"\n ).join(\"\")}</ol></td>`\n );\n } else {\n lines.push(\n `<td gdg-raw-value=${formatHtmlAttributeContent(\n (_b = (_a = cell.rawValue) == null ? void 0 : _a.toString()) != null ? _b : \"\"\n )} ${formatStr}>${formatHtmlTextContent(cell.formatted)}</td>`\n );\n }\n }\n }\n lines.push(\"</tr>\");\n }\n lines.push(\"</tbody></table>\");\n return lines.join(\"\");\n}\nfunction getCopyBufferContents(cells, columnIndexes) {\n const copyBuffer = createBufferFromGridCells(cells, columnIndexes);\n const textPlain = createTextBuffer(copyBuffer);\n const textHtml = createHtmlBuffer(copyBuffer);\n return {\n textPlain,\n textHtml\n };\n}\nfunction decodeHTML(html) {\n var _a, _b, _c, _d, _e, _f;\n const fragment = document.createElement(\"html\");\n fragment.innerHTML = html.replace(/ /g, \" \");\n const tableEl = fragment.querySelector(\"table\");\n if (tableEl === null)\n return void 0;\n const walkEl = [tableEl];\n const result = [];\n let current;\n while (walkEl.length > 0) {\n const el = walkEl.pop();\n if (el === void 0)\n break;\n if (el instanceof HTMLTableElement || el.nodeName === \"TBODY\") {\n walkEl.push(...[...el.children].reverse());\n } else if (el instanceof HTMLTableRowElement) {\n if (current !== void 0) {\n result.push(current);\n }\n current = [];\n walkEl.push(...[...el.children].reverse());\n } else if (el instanceof HTMLTableCellElement) {\n const clone = el.cloneNode(true);\n const firstTagIsPara = clone.children.length === 1 && clone.children[0].nodeName === \"P\";\n const para = firstTagIsPara ? clone.children[0] : null;\n const isAppleNumbers = (para == null ? void 0 : para.children.length) === 1 && para.children[0].nodeName === \"FONT\";\n const brs = clone.querySelectorAll(\"br\");\n for (const br of brs) {\n br.replaceWith(\"\\n\");\n }\n const attributeValue = clone.getAttribute(\"gdg-raw-value\");\n const formatValue = (_a = clone.getAttribute(\"gdg-format\")) != null ? _a : \"string\";\n if (clone.querySelector(\"a\") !== null) {\n current == null ? void 0 : current.push({\n // raw value is the href\n rawValue: (_c = (_b = clone.querySelector(\"a\")) == null ? void 0 : _b.getAttribute(\"href\")) != null ? _c : \"\",\n formatted: (_d = clone.textContent) != null ? _d : \"\",\n format: formatValue\n });\n } else if (clone.querySelector(\"ol\") !== null) {\n const rawValues = clone.querySelectorAll(\"li\");\n current == null ? void 0 : current.push({\n rawValue: [...rawValues].map((x) => {\n var _a2;\n return (_a2 = x.getAttribute(\"gdg-raw-value\")) != null ? _a2 : \"\";\n }),\n formatted: [...rawValues].map((x) => {\n var _a2;\n return (_a2 = x.textContent) != null ? _a2 : \"\";\n }),\n format: \"string-array\"\n });\n } else if (attributeValue !== null) {\n current == null ? void 0 : current.push({\n rawValue: restoreHtmlEntities(attributeValue),\n formatted: (_e = clone.textContent) != null ? _e : \"\",\n format: formatValue\n });\n } else {\n let textContent = (_f = clone.textContent) != null ? _f : \"\";\n if (isAppleNumbers) {\n textContent = textContent.replace(/\\n(?!\\n)/g, \"\");\n }\n current == null ? void 0 : current.push({\n rawValue: textContent != null ? textContent : \"\",\n formatted: textContent != null ? textContent : \"\",\n format: formatValue\n });\n }\n }\n }\n if (current !== void 0) {\n result.push(current);\n }\n return result;\n}\n\n// src/data-editor/data-editor-fns.ts\nfunction expandSelection(newVal, getCellsForSelection, rowMarkerOffset, spanRangeBehavior, abortController) {\n var _a, _b;\n const origVal = newVal;\n if (spanRangeBehavior === \"allowPartial\" || newVal.current === void 0 || getCellsForSelection === void 0)\n return newVal;\n let isFilled = false;\n do {\n if ((newVal == null ? void 0 : newVal.current) === void 0)\n break;\n const r = (_a = newVal.current) == null ? void 0 : _a.range;\n const cells = [];\n if (r.width > 2) {\n const leftCells = getCellsForSelection(\n {\n x: r.x,\n y: r.y,\n width: 1,\n height: r.height\n },\n abortController.signal\n );\n if (typeof leftCells === \"function\") {\n return origVal;\n }\n cells.push(...leftCells);\n const rightCells = getCellsForSelection(\n {\n x: r.x + r.width - 1,\n y: r.y,\n width: 1,\n height: r.height\n },\n abortController.signal\n );\n if (typeof rightCells === \"function\") {\n return origVal;\n }\n cells.push(...rightCells);\n } else {\n const rCells = getCellsForSelection(\n {\n x: r.x,\n y: r.y,\n width: r.width,\n height: r.height\n },\n abortController.signal\n );\n if (typeof rCells === \"function\") {\n return origVal;\n }\n cells.push(...rCells);\n }\n let left = r.x - rowMarkerOffset;\n let right = r.x + r.width - 1 - rowMarkerOffset;\n for (const row of cells) {\n for (const cell of row) {\n if (cell.span === void 0)\n continue;\n left = Math.min(cell.span[0], left);\n right = Math.max(cell.span[1], right);\n }\n }\n if (left === r.x - rowMarkerOffset && right === r.x + r.width - 1 - rowMarkerOffset) {\n isFilled = true;\n } else {\n newVal = {\n current: {\n cell: (_b = newVal.current.cell) != null ? _b : [0, 0],\n range: {\n x: left + rowMarkerOffset,\n y: r.y,\n width: right - left + 1,\n height: r.height\n },\n rangeStack: newVal.current.rangeStack\n },\n columns: newVal.columns,\n rows: newVal.rows\n };\n }\n } while (!isFilled);\n return newVal;\n}\nfunction descape(s) {\n if (s.startsWith('\"') && s.endsWith('\"')) {\n s = s.slice(1, -1).replace(/\"\"/g, '\"');\n }\n return s;\n}\nfunction unquote(str) {\n let State;\n ((State2) => {\n State2[State2[\"None\"] = 0] = \"None\";\n State2[State2[\"inString\"] = 1] = \"inString\";\n State2[State2[\"inStringPostQuote\"] = 2] = \"inStringPostQuote\";\n })(State || (State = {}));\n const result = [];\n let current = [];\n let start = 0;\n let state = 0;\n str = str.replace(/\\r\\n/g, \"\\n\");\n let index = 0;\n for (const char of str) {\n switch (state) {\n case 0:\n if (char === \"\t\" || char === \"\\n\") {\n current.push(str.slice(start, index));\n start = index + 1;\n if (char === \"\\n\") {\n result.push(current);\n current = [];\n }\n } else if (char === `\"`) {\n state = 1;\n }\n break;\n case 1:\n if (char === `\"`) {\n state = 2;\n }\n break;\n case 2:\n if (char === '\"') {\n state = 1;\n } else if (char === \"\t\" || char === \"\\n\") {\n current.push(descape(str.slice(start, index)));\n start = index + 1;\n if (char === \"\\n\") {\n result.push(current);\n current = [];\n }\n state = 0;\n } else {\n state = 0;\n }\n break;\n }\n index++;\n }\n if (start < str.length) {\n current.push(descape(str.slice(start, str.length)));\n }\n result.push(current);\n return result.map((r) => r.map((c) => ({ rawValue: c, formatted: c, format: \"string\" })));\n}\nfunction copyToClipboard(cells, columnIndexes, e) {\n var _a;\n const copyBuffer = getCopyBufferContents(cells, columnIndexes);\n const copyWithWriteText = (s) => {\n var _a2;\n void ((_a2 = window.navigator.clipboard) == null ? void 0 : _a2.writeText(s));\n };\n const copyWithWrite = (s, html) => {\n var _a2;\n if (((_a2 = window.navigator.clipboard) == null ? void 0 : _a2.write) === void 0)\n return false;\n void window.navigator.clipboard.write([\n new ClipboardItem({\n // eslint-disable-next-line sonarjs/no-duplicate-string\n \"text/plain\": new Blob([s], { type: \"text/plain\" }),\n \"text/html\": new Blob([html], {\n type: \"text/html\"\n })\n })\n ]);\n return true;\n };\n const copyWithClipboardData = (s, html) => {\n var _a2, _b;\n try {\n if (e === void 0 || e.clipboardData === null)\n throw new Error(\"No clipboard data\");\n (_a2 = e == null ? void 0 : e.clipboardData) == null ? void 0 : _a2.setData(\"text/plain\", s);\n (_b = e == null ? void 0 : e.clipboardData) == null ? void 0 : _b.setData(\"text/html\", html);\n } catch (e2) {\n if (!copyWithWrite(s, html)) {\n copyWithWriteText(s);\n }\n }\n };\n if (((_a = window.navigator.clipboard) == null ? void 0 : _a.write) !== void 0 || (e == null ? void 0 : e.clipboardData) !== void 0) {\n void copyWithClipboardData(copyBuffer.textPlain, copyBuffer.textHtml);\n } else {\n void copyWithWriteText(copyBuffer.textPlain);\n }\n e == null ? void 0 : e.preventDefault();\n}\n\n// src/data-editor-container/data-grid-container.tsx\nimport * as React17 from \"react\";\nfunction toCss(x) {\n if (typeof x === \"string\")\n return x;\n return `${x}px`;\n}\nvar _exp11 = () => (p) => p.innerWidth;\nvar _exp22 = () => (p) => p.innerHeight;\nvar Wrapper = /* @__PURE__ */ styled_default(\"div\")({\n name: \"Wrapper\",\n class: \"wzg2m5k\",\n propsAsIs: false,\n vars: {\n \"wzg2m5k-0\": [_exp11()],\n \"wzg2m5k-1\": [_exp22()]\n }\n});\nvar DataEditorContainer = (p) => {\n const {\n inWidth,\n inHeight,\n children,\n ...rest\n } = p;\n return /* @__PURE__ */ React17.createElement(Wrapper, {\n innerHeight: toCss(inHeight),\n innerWidth: toCss(inWidth),\n ...rest\n }, children);\n};\n\n// src/data-grid/cells/boolean-cell.tsx\nfunction toggleBoolean(data) {\n return data !== true;\n}\nvar defaultCellMaxSize = 20;\nvar booleanCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"false\";\n },\n kind: GridCellKind.Boolean,\n needsHover: true,\n useLabel: false,\n needsHoverPosition: true,\n measure: () => 50,\n draw: (a) => {\n var _a;\n return drawBoolean(a, a.cell.data, booleanCellIsEditable(a.cell), (_a = a.cell.maxSize) != null ? _a : defaultCellMaxSize);\n },\n onDelete: (c) => ({\n ...c,\n data: false\n }),\n onClick: (e) => {\n var _a, _b;\n const { cell, posX: pointerX, posY: pointerY, bounds, theme } = e;\n const { width, height, x: cellX, y: cellY } = bounds;\n const maxWidth = (_a = cell.maxSize) != null ? _a : defaultCellMaxSize;\n const cellCenterY = Math.floor(bounds.y + height / 2);\n const checkBoxWidth = getSquareWidth(maxWidth, height, theme.cellVerticalPadding);\n const posX = getSquareXPosFromAlign(\n (_b = cell.contentAlign) != null ? _b : \"center\",\n cellX,\n width,\n theme.cellHorizontalPadding,\n checkBoxWidth\n );\n const bb = getSquareBB(posX, cellCenterY, checkBoxWidth);\n const checkBoxClicked = pointIsWithinBB(cellX + pointerX, cellY + pointerY, bb);\n if (booleanCellIsEditable(cell) && checkBoxClicked) {\n return {\n ...cell,\n data: toggleBoolean(cell.data)\n };\n }\n return void 0;\n },\n onPaste: (toPaste, cell) => {\n let newVal = BooleanEmpty;\n if (toPaste.toLowerCase() === \"true\") {\n newVal = true;\n } else if (toPaste.toLowerCase() === \"false\") {\n newVal = false;\n } else if (toPaste.toLowerCase() === \"indeterminate\") {\n newVal = BooleanIndeterminate;\n }\n return newVal === cell.data ? void 0 : {\n ...cell,\n data: newVal\n };\n }\n};\n\n// src/data-editor/use-autoscroll.ts\nimport React18 from \"react\";\nvar maxPxPerMs = 2;\nvar msToFullSpeed = 1300;\nfunction useAutoscroll(scrollDirection, scrollRef) {\n const speedScalar = React18.useRef(0);\n const [xDir, yDir] = scrollDirection != null ? scrollDirection : [0, 0];\n React18.useEffect(() => {\n if (xDir === 0 && yDir === 0) {\n speedScalar.current = 0;\n return;\n }\n let lastTime = 0;\n const scrollFn = (curTime) => {\n var _a;\n if (lastTime === 0) {\n lastTime = curTime;\n } else {\n const step = curTime - lastTime;\n speedScalar.current = Math.min(1, speedScalar.current + step / msToFullSpeed);\n const motion = speedScalar.current ** 1.618 * step * maxPxPerMs;\n (_a = scrollRef.current) == null ? void 0 : _a.scrollBy(xDir * motion, yDir * motion);\n lastTime = curTime;\n }\n t = window.requestAnimationFrame(scrollFn);\n };\n let t = window.requestAnimationFrame(scrollFn);\n return () => window.cancelAnimationFrame(t);\n }, [scrollRef, xDir, yDir]);\n}\n\n// src/data-grid/cells/bubble-cell.tsx\nimport * as React20 from \"react\";\n\n// src/data-grid-overlay-editor/private/bubbles-overlay-editor.tsx\nimport * as React19 from \"react\";\n\n// src/data-grid-overlay-editor/private/bubbles-overlay-editor-style.tsx\nvar BubblesOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"BubblesOverlayEditorStyle\",\n class: \"b1bqsp5z\",\n propsAsIs: false\n});\n\n// src/data-grid-overlay-editor/private/bubbles-overlay-editor.tsx\nvar BubblesOverlayEditor = (p) => {\n const { bubbles } = p;\n return /* @__PURE__ */ React19.createElement(BubblesOverlayEditorStyle, null, bubbles.map((b, i) => /* @__PURE__ */ React19.createElement(\"div\", { key: i, className: \"boe-bubble\" }, b)), /* @__PURE__ */ React19.createElement(\"textarea\", { className: \"gdg-input\", autoFocus: true }));\n};\nvar bubbles_overlay_editor_default = BubblesOverlayEditor;\n\n// src/data-grid/cells/bubble-cell.tsx\nvar bubbleCellRenderer = {\n getAccessibilityString: (c) => makeAccessibilityStringForArray(c.data),\n kind: GridCellKind.Bubble,\n needsHover: false,\n useLabel: false,\n needsHoverPosition: false,\n measure: (ctx, cell, t) => cell.data.reduce((acc, data) => ctx.measureText(data).width + acc + 20, 0) + 2 * t.cellHorizontalPadding - 4,\n draw: (a) => drawBubbles(a, a.cell.data),\n provideEditor: () => (p) => {\n const { value } = p;\n return /* @__PURE__ */ React20.createElement(bubbles_overlay_editor_default, { bubbles: value.data });\n },\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/drilldown-cell.tsx\nimport * as React22 from \"react\";\n\n// src/data-grid-overlay-editor/private/drilldown-overlay-editor.tsx\nimport * as React21 from \"react\";\nvar DrilldownOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"DrilldownOverlayEditorStyle\",\n class: \"df2kt4a\",\n propsAsIs: false\n});\nvar DrilldownOverlayEditor = (p) => {\n const {\n drilldowns\n } = p;\n return /* @__PURE__ */ React21.createElement(DrilldownOverlayEditorStyle, null, drilldowns.map((d, i) => /* @__PURE__ */ React21.createElement(\"div\", {\n key: i,\n className: \"doe-bubble\"\n }, d.img !== void 0 && /* @__PURE__ */ React21.createElement(\"img\", {\n src: d.img\n }), /* @__PURE__ */ React21.createElement(\"div\", null, d.text))));\n};\nvar drilldown_overlay_editor_default = DrilldownOverlayEditor;\n\n// src/data-grid/cells/drilldown-cell.tsx\nvar drilldownCellRenderer = {\n getAccessibilityString: (c) => makeAccessibilityStringForArray(c.data.map((d) => d.text)),\n kind: GridCellKind.Drilldown,\n needsHover: false,\n useLabel: false,\n needsHoverPosition: false,\n measure: (ctx, cell, t) => cell.data.reduce(\n (acc, data) => ctx.measureText(data.text).width + acc + 20 + (data.img !== void 0 ? 18 : 0),\n 0\n ) + 2 * t.cellHorizontalPadding - 4,\n draw: (a) => drawDrilldownCell(a, a.cell.data),\n provideEditor: () => (p) => {\n const { value } = p;\n return /* @__PURE__ */ React22.createElement(drilldown_overlay_editor_default, { drilldowns: value.data });\n },\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/image-cell.tsx\nimport * as React24 from \"react\";\n\n// src/data-grid-overlay-editor/private/image-overlay-editor.tsx\nimport * as React23 from \"react\";\n\n// src/data-grid-overlay-editor/private/image-overlay-editor-style.tsx\nvar ImageOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"ImageOverlayEditorStyle\",\n class: \"i1eozt10\",\n propsAsIs: false\n});\n\n// src/data-grid-overlay-editor/private/image-overlay-editor.tsx\nimport { Carousel } from \"react-responsive-carousel\";\nvar ImageOverlayEditor = (p) => {\n const { urls, canWrite, onEditClick, renderImage } = p;\n const filtered = urls.filter((u) => u !== \"\");\n if (filtered.length === 0) {\n return null;\n }\n const allowMove = filtered.length > 1;\n return /* @__PURE__ */ React23.createElement(ImageOverlayEditorStyle, { \"data-testid\": \"GDG-default-image-overlay-editor\" }, /* @__PURE__ */ React23.createElement(\n Carousel,\n {\n showArrows: allowMove,\n showThumbs: false,\n swipeable: allowMove,\n emulateTouch: allowMove,\n infiniteLoop: allowMove\n },\n filtered.map((url) => {\n var _a;\n const innerContent = (_a = renderImage == null ? void 0 : renderImage(url)) != null ? _a : /* @__PURE__ */ React23.createElement(\"img\", { draggable: false, src: url });\n return /* @__PURE__ */ React23.createElement(\"div\", { className: \"centering-container\", key: url }, innerContent);\n })\n ), canWrite && onEditClick && /* @__PURE__ */ React23.createElement(\"button\", { className: \"edit-icon\", onClick: onEditClick }, /* @__PURE__ */ React23.createElement(EditPencil, null)));\n};\n\n// src/data-grid/cells/image-cell.tsx\nvar imageCellRenderer = {\n getAccessibilityString: (c) => c.data.join(\", \"),\n kind: GridCellKind.Image,\n needsHover: false,\n useLabel: false,\n needsHoverPosition: false,\n draw: (a) => {\n var _a;\n return drawImage(a, (_a = a.cell.displayData) != null ? _a : a.cell.data, a.cell.rounding, a.cell.contentAlign);\n },\n measure: (_ctx, cell) => cell.data.length * 50,\n onDelete: (c) => ({\n ...c,\n data: []\n }),\n provideEditor: () => (p) => {\n const { value, onFinishedEditing, imageEditorOverride } = p;\n const ImageEditor = imageEditorOverride != null ? imageEditorOverride : ImageOverlayEditor;\n return /* @__PURE__ */ React24.createElement(\n ImageEditor,\n {\n urls: value.data,\n canWrite: value.allowAdd,\n onCancel: onFinishedEditing,\n onChange: (newImage) => {\n onFinishedEditing({\n ...value,\n data: [newImage]\n });\n }\n }\n );\n },\n onPaste: (toPaste, cell) => {\n toPaste = toPaste.trim();\n const fragments = toPaste.split(\",\");\n const uris = fragments.map((f) => {\n try {\n new URL(f);\n return f;\n } catch (e) {\n return void 0;\n }\n }).filter((x) => x !== void 0);\n if (uris.length === cell.data.length && uris.every((u, i) => u === cell.data[i]))\n return void 0;\n return {\n ...cell,\n data: uris\n };\n }\n};\n\n// src/data-grid/cells/loading-cell.tsx\nvar loadingCellRenderer = {\n getAccessibilityString: () => \"\",\n kind: GridCellKind.Loading,\n needsHover: false,\n useLabel: false,\n needsHoverPosition: false,\n measure: () => 120,\n draw: () => void 0,\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/markdown-cell.tsx\nimport * as React28 from \"react\";\n\n// src/data-grid-overlay-editor/private/markdown-overlay-editor.tsx\nimport * as React27 from \"react\";\n\n// src/markdown-div/markdown-div.tsx\nimport React25 from \"react\";\nimport { marked } from \"marked\";\n\n// src/markdown-div/private/markdown-container.tsx\nvar MarkdownContainer = /* @__PURE__ */ styled_default(\"div\")({\n name: \"MarkdownContainer\",\n class: \"mlbeo71\",\n propsAsIs: false\n});\n\n// src/markdown-div/markdown-div.tsx\nvar MarkdownDiv = class extends React25.PureComponent {\n constructor() {\n super(...arguments);\n this.targetElement = null;\n this.containerRefHook = (element) => {\n this.targetElement = element;\n this.renderMarkdownIntoDiv();\n };\n }\n renderMarkdownIntoDiv() {\n const { targetElement, props } = this;\n if (targetElement === null)\n return;\n const { contents, createNode } = props;\n const innerHTML = marked(contents);\n const childRange = document.createRange();\n childRange.selectNodeContents(targetElement);\n childRange.deleteContents();\n let newChild = createNode == null ? void 0 : createNode(innerHTML);\n if (newChild === void 0) {\n const childDoc = document.createElement(\"template\");\n childDoc.innerHTML = innerHTML;\n newChild = childDoc.content;\n }\n targetElement.append(newChild);\n const tags = targetElement.getElementsByTagName(\"a\");\n for (const tag of tags) {\n tag.target = \"_blank\";\n tag.rel = \"noreferrer noopener\";\n }\n }\n render() {\n this.renderMarkdownIntoDiv();\n return /* @__PURE__ */ React25.createElement(MarkdownContainer, { ref: this.containerRefHook });\n }\n};\n\n// src/growing-entry/growing-entry.tsx\nimport * as React26 from \"react\";\n\n// src/growing-entry/growing-entry-style.tsx\nvar InputBox = /* @__PURE__ */ styled_default(\"textarea\")({\n name: \"InputBox\",\n class: \"ijuk0po\",\n propsAsIs: false\n});\nvar ShadowBox = /* @__PURE__ */ styled_default(\"div\")({\n name: \"ShadowBox\",\n class: \"saq3p5l\",\n propsAsIs: false\n});\nvar GrowingEntryStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"GrowingEntryStyle\",\n class: \"gf8vzix\",\n propsAsIs: false\n});\n\n// src/growing-entry/growing-entry.tsx\nvar globalInputID = 0;\nvar GrowingEntry = (props) => {\n const { placeholder, value, onKeyDown, highlight, altNewline, validatedSelection, ...rest } = props;\n const { onChange, className } = rest;\n const inputRef = React26.useRef(null);\n const useText = value != null ? value : \"\";\n assert(onChange !== void 0, \"GrowingEntry must be a controlled input area\");\n const [inputID] = React26.useState(() => \"input-box-\" + (globalInputID = (globalInputID + 1) % 1e7));\n React26.useEffect(() => {\n const ta = inputRef.current;\n if (ta === null)\n return;\n if (ta.disabled)\n return;\n const length = useText.toString().length;\n ta.focus();\n ta.setSelectionRange(highlight ? 0 : length, length);\n }, []);\n React26.useLayoutEffect(() => {\n var _a;\n if (validatedSelection !== void 0) {\n const range2 = typeof validatedSelection === \"number\" ? [validatedSelection, null] : validatedSelection;\n (_a = inputRef.current) == null ? void 0 : _a.setSelectionRange(range2[0], range2[1]);\n }\n }, [validatedSelection]);\n const onKeyDownInner = React26.useCallback(\n (e) => {\n if (e.key === \"Enter\" && e.shiftKey && altNewline === true) {\n return;\n }\n onKeyDown == null ? void 0 : onKeyDown(e);\n },\n [altNewline, onKeyDown]\n );\n return /* @__PURE__ */ React26.createElement(GrowingEntryStyle, { className: \"gdg-growing-entry\" }, /* @__PURE__ */ React26.createElement(ShadowBox, { className }, useText + \"\\n\"), /* @__PURE__ */ React26.createElement(\n InputBox,\n {\n ...rest,\n className: (className != null ? className : \"\") + \" gdg-input\",\n id: inputID,\n ref: inputRef,\n onKeyDown: onKeyDownInner,\n value: useText,\n placeholder,\n dir: \"auto\"\n }\n ));\n};\n\n// src/data-grid-overlay-editor/private/markdown-overlay-editor-style.tsx\nvar _exp12 = () => (p) => p.targetWidth;\nvar MarkdownOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"MarkdownOverlayEditorStyle\",\n class: \"mdwzdl1\",\n propsAsIs: false,\n vars: {\n \"mdwzdl1-0\": [_exp12(), \"px\"]\n }\n});\n\n// src/data-grid-overlay-editor/private/markdown-overlay-editor.tsx\nvar MarkdownOverlayEditor = (p) => {\n const { value, onChange, forceEditMode, createNode, targetRect, onFinish, validatedSelection } = p;\n const markdown = value.data;\n const readonly = value.readonly === true;\n const [editMode, setEditMode] = React27.useState(markdown === \"\" || forceEditMode);\n const onEditClick = React27.useCallback(() => {\n setEditMode((e) => !e);\n }, []);\n const addLeftPad = markdown ? \"ml-6\" : \"\";\n if (editMode) {\n return /* @__PURE__ */ React27.createElement(MarkdownOverlayEditorStyle, { targetWidth: targetRect.width - 20 }, /* @__PURE__ */ React27.createElement(\n GrowingEntry,\n {\n autoFocus: true,\n highlight: false,\n validatedSelection,\n value: markdown,\n onKeyDown: (e) => {\n if (e.key === \"Enter\")\n e.stopPropagation();\n },\n onChange\n }\n ), /* @__PURE__ */ React27.createElement(\"div\", { className: `edit-icon checkmark-hover ${addLeftPad}`, onClick: () => onFinish(value) }, /* @__PURE__ */ React27.createElement(Checkmark, null)));\n }\n return /* @__PURE__ */ React27.createElement(MarkdownOverlayEditorStyle, { targetWidth: targetRect.width }, /* @__PURE__ */ React27.createElement(MarkdownDiv, { contents: markdown, createNode }), !readonly && /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(\"div\", { className: \"spacer\" }), /* @__PURE__ */ React27.createElement(\"div\", { className: `edit-icon edit-hover ${addLeftPad}`, onClick: onEditClick }, /* @__PURE__ */ React27.createElement(EditPencil, null))), /* @__PURE__ */ React27.createElement(\"textarea\", { className: \"md-edit-textarea gdg-input\", autoFocus: true }));\n};\n\n// src/data-grid/cells/markdown-cell.tsx\nvar markdownCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n },\n kind: GridCellKind.Markdown,\n needsHover: false,\n needsHoverPosition: false,\n drawPrep: prepTextCell,\n measure: (ctx, cell, t) => {\n const firstLine = cell.data.split(\"\\n\")[0];\n return ctx.measureText(firstLine).width + 2 * t.cellHorizontalPadding;\n },\n draw: (a) => drawTextCell(a, a.cell.data, a.cell.contentAlign),\n onDelete: (c) => ({\n ...c,\n data: \"\"\n }),\n provideEditor: () => (p) => {\n const { onChange, value, target, onFinishedEditing, markdownDivCreateNode, forceEditMode, validatedSelection } = p;\n return /* @__PURE__ */ React28.createElement(\n MarkdownOverlayEditor,\n {\n onFinish: onFinishedEditing,\n targetRect: target,\n value,\n validatedSelection,\n onChange: (e) => onChange({\n ...value,\n data: e.target.value\n }),\n forceEditMode,\n createNode: markdownDivCreateNode\n }\n );\n },\n onPaste: (toPaste, cell) => toPaste === cell.data ? void 0 : { ...cell, data: toPaste }\n};\n\n// src/data-grid/cells/marker-cell.tsx\nvar markerCellRenderer = {\n getAccessibilityString: (c) => c.row.toString(),\n kind: InnerGridCellKind.Marker,\n needsHover: true,\n needsHoverPosition: false,\n drawPrep: prepMarkerRowCell,\n measure: () => 44,\n draw: (a) => drawMarkerRowCell(a, a.cell.row, a.cell.checked, a.cell.markerKind, a.cell.drawHandle),\n onClick: (e) => {\n const { bounds, cell, posX: x, posY: y } = e;\n const { width, height } = bounds;\n const centerX = cell.drawHandle ? 7 + (width - 7) / 2 : width / 2;\n const centerY = height / 2;\n if (Math.abs(x - centerX) <= 10 && Math.abs(y - centerY) <= 10) {\n return {\n ...cell,\n checked: !cell.checked\n };\n }\n return void 0;\n },\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/new-row-cell.tsx\nvar newRowCellRenderer = {\n getAccessibilityString: () => \"\",\n kind: InnerGridCellKind.NewRow,\n needsHover: true,\n needsHoverPosition: false,\n measure: () => 200,\n draw: (a) => drawNewRowCell(a, a.cell.hint, a.cell.icon),\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/number-cell.tsx\nimport * as React29 from \"react\";\nvar NumberOverlayEditor = React29.lazy(\n async () => await import(\"./number-overlay-editor-FPDVTUA6.js\")\n);\nvar numberCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n },\n kind: GridCellKind.Number,\n needsHover: false,\n needsHoverPosition: false,\n useLabel: true,\n drawPrep: prepTextCell,\n draw: (a) => drawTextCell(a, a.cell.displayData, a.cell.contentAlign),\n measure: (ctx, cell) => ctx.measureText(cell.displayData).width + 16,\n onDelete: (c) => ({\n ...c,\n data: void 0\n }),\n provideEditor: () => (p) => {\n const { isHighlighted, onChange, value, validatedSelection } = p;\n return /* @__PURE__ */ React29.createElement(React29.Suspense, { fallback: null }, /* @__PURE__ */ React29.createElement(\n NumberOverlayEditor,\n {\n highlight: isHighlighted,\n disabled: value.readonly === true,\n value: value.data,\n fixedDecimals: value.fixedDecimals,\n allowNegative: value.allowNegative,\n thousandSeparator: value.thousandSeparator,\n decimalSeparator: value.decimalSeparator,\n validatedSelection,\n onChange: (x) => {\n var _a;\n return onChange({\n ...value,\n data: Number.isNaN((_a = x.floatValue) != null ? _a : 0) ? 0 : x.floatValue\n });\n }\n }\n ));\n },\n onPaste: (toPaste, cell, details) => {\n var _a;\n const newNumber = typeof details.rawValue === \"number\" ? details.rawValue : Number.parseFloat(typeof details.rawValue === \"string\" ? details.rawValue : toPaste);\n if (Number.isNaN(newNumber) || cell.data === newNumber)\n return void 0;\n return { ...cell, data: newNumber, displayData: (_a = details.formattedString) != null ? _a : cell.displayData };\n }\n};\n\n// src/data-grid/cells/protected-cell.tsx\nvar protectedCellRenderer = {\n getAccessibilityString: () => \"\",\n measure: () => 108,\n kind: GridCellKind.Protected,\n needsHover: false,\n needsHoverPosition: false,\n draw: drawProtectedCell,\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/row-id-cell.tsx\nimport React30 from \"react\";\nvar rowIDCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n },\n kind: GridCellKind.RowID,\n needsHover: false,\n needsHoverPosition: false,\n drawPrep: (a, b) => prepTextCell(a, b, a.theme.textLight),\n draw: (a) => drawTextCell(a, a.cell.data, a.cell.contentAlign),\n measure: (ctx, cell) => ctx.measureText(cell.data).width + 16,\n // eslint-disable-next-line react/display-name\n provideEditor: () => (p) => {\n const { isHighlighted, onChange, value, validatedSelection } = p;\n return /* @__PURE__ */ React30.createElement(\n GrowingEntry,\n {\n highlight: isHighlighted,\n autoFocus: value.readonly !== true,\n disabled: value.readonly !== false,\n value: value.data,\n validatedSelection,\n onChange: (e) => onChange({\n ...value,\n data: e.target.value\n })\n }\n );\n },\n onPaste: () => void 0\n};\n\n// src/data-grid/cells/text-cell.tsx\nimport * as React31 from \"react\";\nvar textCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n },\n kind: GridCellKind.Text,\n needsHover: false,\n needsHoverPosition: false,\n drawPrep: prepTextCell,\n useLabel: true,\n draw: (a) => (drawTextCell(a, a.cell.displayData, a.cell.contentAlign, a.cell.allowWrapping, a.hyperWrapping), true),\n measure: (ctx, cell, t) => {\n const lines = cell.displayData.split(\"\\n\").slice(0, cell.allowWrapping === true ? void 0 : 1);\n return Math.max(...lines.map((l) => ctx.measureText(l).width + 2 * t.cellHorizontalPadding));\n },\n onDelete: (c) => ({\n ...c,\n data: \"\"\n }),\n provideEditor: (cell) => ({\n disablePadding: cell.allowWrapping === true,\n editor: (p) => {\n const { isHighlighted, onChange, value, validatedSelection } = p;\n return /* @__PURE__ */ React31.createElement(\n GrowingEntry,\n {\n style: cell.allowWrapping === true ? { padding: \"3px 8.5px\" } : void 0,\n highlight: isHighlighted,\n autoFocus: value.readonly !== true,\n disabled: value.readonly === true,\n altNewline: true,\n value: value.data,\n validatedSelection,\n onChange: (e) => onChange({\n ...value,\n data: e.target.value\n })\n }\n );\n }\n }),\n onPaste: (toPaste, cell, details) => {\n var _a;\n return toPaste === cell.data ? void 0 : { ...cell, data: toPaste, displayData: (_a = details.formattedString) != null ? _a : cell.displayData };\n }\n};\n\n// src/data-grid/cells/uri-cell.tsx\nimport * as React33 from \"react\";\n\n// src/data-grid-overlay-editor/private/uri-overlay-editor.tsx\nimport * as React32 from \"react\";\n\n// src/data-grid-overlay-editor/private/uri-overlay-editor-style.tsx\nvar UriOverlayEditorStyle = /* @__PURE__ */ styled_default(\"div\")({\n name: \"UriOverlayEditorStyle\",\n class: \"uf0sjo8\",\n propsAsIs: false\n});\n\n// src/data-grid-overlay-editor/private/uri-overlay-editor.tsx\nvar UriOverlayEditor = (p) => {\n const { uri, onChange, forceEditMode, readonly, validatedSelection, preview } = p;\n const [editMode, setEditMode] = React32.useState(uri === \"\" || forceEditMode);\n const onEditClick = React32.useCallback(() => {\n setEditMode(true);\n }, []);\n if (editMode) {\n return /* @__PURE__ */ React32.createElement(\n GrowingEntry,\n {\n validatedSelection,\n highlight: true,\n autoFocus: true,\n value: uri,\n onChange\n }\n );\n }\n return /* @__PURE__ */ React32.createElement(UriOverlayEditorStyle, null, /* @__PURE__ */ React32.createElement(\"a\", { className: \"link-area\", href: uri, target: \"_blank\", rel: \"noopener noreferrer\" }, preview), !readonly && /* @__PURE__ */ React32.createElement(\"div\", { className: \"edit-icon\", onClick: onEditClick }, /* @__PURE__ */ React32.createElement(EditPencil, null)), /* @__PURE__ */ React32.createElement(\"textarea\", { className: \"gdg-input\", autoFocus: true }));\n};\nvar uri_overlay_editor_default = UriOverlayEditor;\n\n// src/data-grid/cells/uri-cell.tsx\nvar uriCellRenderer = {\n getAccessibilityString: (c) => {\n var _a, _b;\n return (_b = (_a = c.data) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n },\n kind: GridCellKind.Uri,\n needsHover: false,\n needsHoverPosition: false,\n useLabel: true,\n drawPrep: prepTextCell,\n draw: (a) => drawTextCell(a, a.cell.data, a.cell.contentAlign),\n measure: (ctx, cell, theme) => ctx.measureText(cell.data).width + theme.cellHorizontalPadding * 2,\n onDelete: (c) => ({\n ...c,\n data: \"\"\n }),\n provideEditor: () => (p) => {\n var _a;\n const { onChange, value, forceEditMode, validatedSelection } = p;\n return /* @__PURE__ */ React33.createElement(\n uri_overlay_editor_default,\n {\n forceEditMode,\n uri: value.data,\n preview: (_a = value.displayData) != null ? _a : value.data,\n validatedSelection,\n readonly: value.readonly === true,\n onChange: (e) => onChange({\n ...value,\n data: e.target.value\n })\n }\n );\n },\n onPaste: (toPaste, cell, details) => {\n var _a;\n return toPaste === cell.data ? void 0 : { ...cell, data: toPaste, displayData: (_a = details.formattedString) != null ? _a : cell.displayData };\n }\n};\n\n// src/data-grid/cells/index.ts\nvar CellRenderers = {\n [InnerGridCellKind.Marker]: markerCellRenderer,\n [InnerGridCellKind.NewRow]: newRowCellRenderer,\n [GridCellKind.Boolean]: booleanCellRenderer,\n [GridCellKind.Bubble]: bubbleCellRenderer,\n [GridCellKind.Drilldown]: drilldownCellRenderer,\n [GridCellKind.Image]: imageCellRenderer,\n [GridCellKind.Loading]: loadingCellRenderer,\n [GridCellKind.Markdown]: markdownCellRenderer,\n [GridCellKind.Number]: numberCellRenderer,\n [GridCellKind.Protected]: protectedCellRenderer,\n [GridCellKind.RowID]: rowIDCellRenderer,\n [GridCellKind.Text]: textCellRenderer,\n [GridCellKind.Uri]: uriCellRenderer\n};\n\n// src/data-editor/use-rem-adjuster.ts\nimport React34 from \"react\";\nfunction useRemAdjuster({\n rowHeight: rowHeightIn,\n headerHeight: headerHeightIn,\n groupHeaderHeight: groupHeaderHeightIn,\n theme: themeIn,\n overscrollX: overscrollXIn,\n overscrollY: overscrollYIn,\n scaleToRem,\n remSize\n}) {\n const [rowHeight, headerHeight, groupHeaderHeight, theme, overscrollX, overscrollY] = React34.useMemo(() => {\n var _a, _b, _c;\n if (!scaleToRem || remSize === 16)\n return [rowHeightIn, headerHeightIn, groupHeaderHeightIn, themeIn, overscrollXIn, overscrollYIn];\n const scaler = remSize / 16;\n const rh = rowHeightIn;\n const bt = getDataEditorTheme();\n return [\n typeof rh === \"number\" ? rh * scaler : (n) => Math.ceil(rh(n) * scaler),\n Math.ceil(headerHeightIn * scaler),\n Math.ceil(groupHeaderHeightIn * scaler),\n {\n ...themeIn,\n headerIconSize: ((_a = themeIn == null ? void 0 : themeIn.headerIconSize) != null ? _a : bt.headerIconSize) * scaler,\n cellHorizontalPadding: ((_b = themeIn == null ? void 0 : themeIn.cellHorizontalPadding) != null ? _b : bt.cellHorizontalPadding) * scaler,\n cellVerticalPadding: ((_c = themeIn == null ? void 0 : themeIn.cellVerticalPadding) != null ? _c : bt.cellVerticalPadding) * scaler\n },\n Math.ceil((overscrollXIn != null ? overscrollXIn : 0) * scaler),\n Math.ceil((overscrollYIn != null ? overscrollYIn : 0) * scaler)\n ];\n }, [groupHeaderHeightIn, headerHeightIn, overscrollXIn, overscrollYIn, remSize, rowHeightIn, scaleToRem, themeIn]);\n return { rowHeight, headerHeight, groupHeaderHeight, theme, overscrollX, overscrollY };\n}\n\n// src/data-editor/data-editor.tsx\nvar idCounter = 0;\nfunction getSpanStops(cells) {\n return uniq(\n flatten(\n flatten(cells).filter((c) => c.span !== void 0).map((c) => {\n var _a, _b, _c, _d;\n return range(((_b = (_a = c.span) == null ? void 0 : _a[0]) != null ? _b : 0) + 1, ((_d = (_c = c.span) == null ? void 0 : _c[1]) != null ? _d : 0) + 1);\n })\n )\n );\n}\nfunction shiftSelection(input, offset) {\n if (input === void 0 || offset === 0 || input.columns.length === 0 && input.current === void 0)\n return input;\n return {\n current: input.current === void 0 ? void 0 : {\n cell: [input.current.cell[0] + offset, input.current.cell[1]],\n range: {\n ...input.current.range,\n x: input.current.range.x + offset\n },\n rangeStack: input.current.rangeStack.map((r) => ({\n ...r,\n x: r.x + offset\n }))\n },\n rows: input.rows,\n columns: input.columns.offset(offset)\n };\n}\nvar keybindingDefaults = {\n selectAll: true,\n selectRow: true,\n selectColumn: true,\n downFill: false,\n rightFill: false,\n pageUp: false,\n pageDown: false,\n clear: true,\n copy: true,\n paste: true,\n cut: true,\n search: false,\n first: true,\n last: true\n};\nvar loadingCell2 = {\n kind: GridCellKind.Loading,\n allowOverlay: false\n};\nvar emptyGridSelection = {\n columns: CompactSelection.empty(),\n rows: CompactSelection.empty(),\n current: void 0\n};\nvar DataEditorImpl = (p, forwardedRef) => {\n var _a, _b, _c, _d, _e;\n const [gridSelectionInner, setGridSelectionInner] = React35.useState(emptyGridSelection);\n const [overlay, setOverlay] = React35.useState();\n const searchInputRef = React35.useRef(null);\n const canvasRef = React35.useRef(null);\n const [mouseState, setMouseState] = React35.useState();\n const scrollRef = React35.useRef(null);\n const lastSent = React35.useRef();\n const {\n rowMarkers = \"none\",\n rowMarkerWidth: rowMarkerWidthRaw,\n imageEditorOverride,\n getRowThemeOverride,\n markdownDivCreateNode,\n width,\n height,\n columns: columnsIn,\n rows,\n getCellContent,\n onCellClicked,\n onCellActivated,\n onFinishedEditing,\n coercePasteValue,\n drawHeader: drawHeaderIn,\n onHeaderClicked,\n spanRangeBehavior = \"default\",\n onGroupHeaderClicked,\n onCellContextMenu,\n className,\n onHeaderContextMenu,\n getCellsForSelection: getCellsForSelectionIn,\n onGroupHeaderContextMenu,\n onGroupHeaderRenamed,\n onCellEdited,\n onCellsEdited,\n onSearchResultsChanged: onSearchResultsChangedIn,\n searchResults,\n onSearchValueChange,\n searchValue,\n onKeyDown: onKeyDownIn,\n onKeyUp: onKeyUpIn,\n keybindings: keybindingsIn,\n onRowAppended,\n onColumnMoved,\n validateCell: validateCellIn,\n highlightRegions: highlightRegionsIn,\n drawCell: drawCell2,\n rangeSelect = \"rect\",\n columnSelect = \"multi\",\n rowSelect = \"multi\",\n rangeSelectionBlending = \"exclusive\",\n columnSelectionBlending = \"exclusive\",\n rowSelectionBlending = \"exclusive\",\n onDelete: onDeleteIn,\n onDragStart,\n onMouseMove,\n onPaste,\n copyHeaders = false,\n freezeColumns = 0,\n rowSelectionMode = \"auto\",\n rowMarkerStartIndex = 1,\n rowMarkerTheme,\n onHeaderMenuClick,\n getGroupDetails,\n onSearchClose: onSearchCloseIn,\n onItemHovered,\n onSelectionCleared,\n showSearch: showSearchIn,\n onVisibleRegionChanged,\n gridSelection: gridSelectionOuter,\n onGridSelectionChange,\n minColumnWidth: minColumnWidthIn = 50,\n maxColumnWidth: maxColumnWidthIn = 500,\n maxColumnAutoWidth: maxColumnAutoWidthIn,\n provideEditor,\n trailingRowOptions,\n scrollOffsetX,\n scrollOffsetY,\n verticalBorder,\n onDragOverCell,\n onDrop,\n onColumnResize: onColumnResizeIn,\n onColumnResizeEnd: onColumnResizeEndIn,\n onColumnResizeStart: onColumnResizeStartIn,\n customRenderers: additionalRenderers,\n fillHandle,\n drawFocusRing: drawFocusRing2,\n experimental,\n fixedShadowX,\n fixedShadowY,\n headerIcons,\n imageWindowLoader,\n initialSize,\n isDraggable,\n onDragLeave,\n onRowMoved,\n overscrollX: overscrollXIn,\n overscrollY: overscrollYIn,\n preventDiagonalScrolling,\n rightElement,\n rightElementProps,\n showMinimap,\n smoothScrollX,\n smoothScrollY,\n scrollToEnd,\n scaleToRem = false,\n rowHeight: rowHeightIn = 34,\n headerHeight: headerHeightIn = 36,\n groupHeaderHeight: groupHeaderHeightIn = headerHeightIn,\n theme: themeIn,\n isOutsideClick\n } = p;\n const minColumnWidth = Math.max(minColumnWidthIn, 20);\n const maxColumnWidth = Math.max(maxColumnWidthIn, minColumnWidth);\n const maxColumnAutoWidth = Math.max(maxColumnAutoWidthIn != null ? maxColumnAutoWidthIn : maxColumnWidth, minColumnWidth);\n const docStyle = React35.useMemo(() => {\n if (typeof window === \"undefined\")\n return { fontSize: \"16px\" };\n return window.getComputedStyle(document.documentElement);\n }, []);\n const fontSizeStr = docStyle.fontSize;\n const remSize = React35.useMemo(() => Number.parseFloat(fontSizeStr), [fontSizeStr]);\n const { rowHeight, headerHeight, groupHeaderHeight, theme, overscrollX, overscrollY } = useRemAdjuster({\n groupHeaderHeight: groupHeaderHeightIn,\n headerHeight: headerHeightIn,\n overscrollX: overscrollXIn,\n overscrollY: overscrollYIn,\n remSize,\n rowHeight: rowHeightIn,\n scaleToRem,\n theme: themeIn\n });\n const keybindings = React35.useMemo(() => {\n return keybindingsIn === void 0 ? keybindingDefaults : {\n ...keybindingDefaults,\n ...keybindingsIn\n };\n }, [keybindingsIn]);\n const rowMarkerWidth = rowMarkerWidthRaw != null ? rowMarkerWidthRaw : rows > 1e4 ? 48 : rows > 1e3 ? 44 : rows > 100 ? 36 : 32;\n const hasRowMarkers = rowMarkers !== \"none\";\n const rowMarkerOffset = hasRowMarkers ? 1 : 0;\n const showTrailingBlankRow = onRowAppended !== void 0;\n const lastRowSticky = (trailingRowOptions == null ? void 0 : trailingRowOptions.sticky) === true;\n const [showSearchInner, setShowSearchInner] = React35.useState(false);\n const showSearch = showSearchIn != null ? showSearchIn : showSearchInner;\n const onSearchClose = React35.useCallback(() => {\n if (onSearchCloseIn !== void 0) {\n onSearchCloseIn();\n } else {\n setShowSearchInner(false);\n }\n }, [onSearchCloseIn]);\n const gridSelectionOuterMangled = React35.useMemo(() => {\n return gridSelectionOuter === void 0 ? void 0 : shiftSelection(gridSelectionOuter, rowMarkerOffset);\n }, [gridSelectionOuter, rowMarkerOffset]);\n const gridSelection = gridSelectionOuterMangled != null ? gridSelectionOuterMangled : gridSelectionInner;\n const abortControllerRef = React35.useRef(new AbortController());\n React35.useEffect(() => {\n return () => {\n abortControllerRef == null ? void 0 : abortControllerRef.current.abort();\n };\n }, []);\n const [getCellsForSelection, getCellsForSeletionDirect] = useCellsForSelection(\n getCellsForSelectionIn,\n getCellContent,\n rowMarkerOffset,\n abortControllerRef.current,\n rows\n );\n const validateCell = React35.useCallback(\n (cell, newValue, prevValue) => {\n if (validateCellIn === void 0)\n return true;\n const item = [cell[0] - rowMarkerOffset, cell[1]];\n return validateCellIn == null ? void 0 : validateCellIn(item, newValue, prevValue);\n },\n [rowMarkerOffset, validateCellIn]\n );\n const expectedExternalGridSelection = React35.useRef(gridSelectionOuter);\n const setGridSelection = React35.useCallback(\n (newVal, expand) => {\n if (expand) {\n newVal = expandSelection(\n newVal,\n getCellsForSelection,\n rowMarkerOffset,\n spanRangeBehavior,\n abortControllerRef.current\n );\n }\n if (onGridSelectionChange !== void 0) {\n expectedExternalGridSelection.current = shiftSelection(newVal, -rowMarkerOffset);\n onGridSelectionChange(expectedExternalGridSelection.current);\n } else {\n setGridSelectionInner(newVal);\n }\n },\n [onGridSelectionChange, getCellsForSelection, rowMarkerOffset, spanRangeBehavior]\n );\n const onColumnResize = whenDefined(\n onColumnResizeIn,\n React35.useCallback(\n (_, w, ind, wg) => {\n onColumnResizeIn == null ? void 0 : onColumnResizeIn(columnsIn[ind - rowMarkerOffset], w, ind - rowMarkerOffset, wg);\n },\n [onColumnResizeIn, rowMarkerOffset, columnsIn]\n )\n );\n const onColumnResizeEnd = whenDefined(\n onColumnResizeEndIn,\n React35.useCallback(\n (_, w, ind, wg) => {\n onColumnResizeEndIn == null ? void 0 : onColumnResizeEndIn(columnsIn[ind - rowMarkerOffset], w, ind - rowMarkerOffset, wg);\n },\n [onColumnResizeEndIn, rowMarkerOffset, columnsIn]\n )\n );\n const onColumnResizeStart = whenDefined(\n onColumnResizeStartIn,\n React35.useCallback(\n (_, w, ind, wg) => {\n onColumnResizeStartIn == null ? void 0 : onColumnResizeStartIn(columnsIn[ind - rowMarkerOffset], w, ind - rowMarkerOffset, wg);\n },\n [onColumnResizeStartIn, rowMarkerOffset, columnsIn]\n )\n );\n const drawHeader2 = whenDefined(\n drawHeaderIn,\n React35.useCallback(\n (args) => {\n var _a2;\n return (_a2 = drawHeaderIn == null ? void 0 : drawHeaderIn({ ...args, columnIndex: args.columnIndex - rowMarkerOffset })) != null ? _a2 : false;\n },\n [drawHeaderIn, rowMarkerOffset]\n )\n );\n const onDelete = React35.useCallback(\n (sel) => {\n if (onDeleteIn !== void 0) {\n const result = onDeleteIn(shiftSelection(sel, -rowMarkerOffset));\n if (typeof result === \"boolean\") {\n return result;\n }\n return shiftSelection(result, rowMarkerOffset);\n }\n return true;\n },\n [onDeleteIn, rowMarkerOffset]\n );\n const [setCurrent, setSelectedRows, setSelectedColumns] = useSelectionBehavior(\n gridSelection,\n setGridSelection,\n rangeSelectionBlending,\n columnSelectionBlending,\n rowSelectionBlending,\n rangeSelect\n );\n const mergedTheme = React35.useMemo(() => {\n return { ...getDataEditorTheme(), ...theme };\n }, [theme]);\n const [clientSize, setClientSize] = React35.useState([10, 10, 0]);\n const getCellRenderer = React35.useCallback(\n (cell) => {\n if (cell.kind !== GridCellKind.Custom) {\n return CellRenderers[cell.kind];\n }\n return additionalRenderers == null ? void 0 : additionalRenderers.find((x) => x.isMatch(cell));\n },\n [additionalRenderers]\n );\n const columns = useColumnSizer(\n columnsIn,\n rows,\n getCellsForSeletionDirect,\n clientSize[0] - (rowMarkerOffset === 0 ? 0 : rowMarkerWidth) - clientSize[2],\n minColumnWidth,\n maxColumnAutoWidth,\n mergedTheme,\n getCellRenderer,\n abortControllerRef.current\n );\n const enableGroups = React35.useMemo(() => {\n return columns.some((c) => c.group !== void 0);\n }, [columns]);\n const totalHeaderHeight = enableGroups ? headerHeight + groupHeaderHeight : headerHeight;\n const numSelectedRows = gridSelection.rows.length;\n const rowMarkerHeader = rowMarkers === \"none\" ? \"\" : numSelectedRows === 0 ? headerCellUnheckedMarker : numSelectedRows === rows ? headerCellCheckedMarker : headerCellIndeterminateMarker;\n const mangledCols = React35.useMemo(() => {\n if (rowMarkers === \"none\")\n return columns;\n return [\n {\n title: rowMarkerHeader,\n width: rowMarkerWidth,\n icon: void 0,\n hasMenu: false,\n style: \"normal\",\n themeOverride: rowMarkerTheme\n },\n ...columns\n ];\n }, [columns, rowMarkerWidth, rowMarkers, rowMarkerHeader, rowMarkerTheme]);\n const [visibleRegionY, visibleRegionTy] = React35.useMemo(() => {\n return [\n scrollOffsetY !== void 0 && typeof rowHeight === \"number\" ? Math.floor(scrollOffsetY / rowHeight) : 0,\n scrollOffsetY !== void 0 && typeof rowHeight === \"number\" ? -(scrollOffsetY % rowHeight) : 0\n ];\n }, [scrollOffsetY, rowHeight]);\n const visibleRegionRef = React35.useRef({\n height: 1,\n width: 1,\n x: 0,\n y: 0\n });\n const visibleRegionInput = React35.useMemo(\n () => {\n var _a2, _b2;\n return {\n x: visibleRegionRef.current.x,\n y: visibleRegionY,\n width: (_a2 = visibleRegionRef.current.width) != null ? _a2 : 1,\n height: (_b2 = visibleRegionRef.current.height) != null ? _b2 : 1,\n // tx: 'TODO',\n ty: visibleRegionTy\n };\n },\n [visibleRegionTy, visibleRegionY]\n );\n const hasJustScrolled = React35.useRef(false);\n const [visibleRegion, setVisibleRegion, empty2] = useStateWithReactiveInput(visibleRegionInput);\n const vScrollReady = ((_a = visibleRegion.height) != null ? _a : 1) > 1;\n React35.useLayoutEffect(() => {\n if (scrollOffsetY !== void 0 && scrollRef.current !== null && vScrollReady) {\n if (scrollRef.current.scrollTop === scrollOffsetY)\n return;\n scrollRef.current.scrollTop = scrollOffsetY;\n if (scrollRef.current.scrollTop !== scrollOffsetY) {\n empty2();\n }\n hasJustScrolled.current = true;\n }\n }, [scrollOffsetY, vScrollReady, empty2]);\n const hScrollReady = ((_b = visibleRegion.width) != null ? _b : 1) > 1;\n React35.useLayoutEffect(() => {\n if (scrollOffsetX !== void 0 && scrollRef.current !== null && hScrollReady) {\n if (scrollRef.current.scrollLeft === scrollOffsetX)\n return;\n scrollRef.current.scrollLeft = scrollOffsetX;\n if (scrollRef.current.scrollLeft !== scrollOffsetX) {\n empty2();\n }\n hasJustScrolled.current = true;\n }\n }, [scrollOffsetX, hScrollReady, empty2]);\n const cellXOffset = visibleRegion.x + rowMarkerOffset;\n const cellYOffset = visibleRegion.y;\n const gridRef = React35.useRef(null);\n const focus = React35.useCallback((immediate) => {\n var _a2;\n if (immediate === true) {\n (_a2 = gridRef.current) == null ? void 0 : _a2.focus();\n } else {\n window.requestAnimationFrame(() => {\n var _a3;\n (_a3 = gridRef.current) == null ? void 0 : _a3.focus();\n });\n }\n }, []);\n const mangledRows = showTrailingBlankRow ? rows + 1 : rows;\n const mangledOnCellsEdited = React35.useCallback(\n (items) => {\n const mangledItems = rowMarkerOffset === 0 ? items : items.map((x) => ({\n ...x,\n location: [x.location[0] - rowMarkerOffset, x.location[1]]\n }));\n const r = onCellsEdited == null ? void 0 : onCellsEdited(mangledItems);\n if (r !== true) {\n for (const i of mangledItems)\n onCellEdited == null ? void 0 : onCellEdited(i.location, i.value);\n }\n return r;\n },\n [onCellEdited, onCellsEdited, rowMarkerOffset]\n );\n const highlightRegions = React35.useMemo(() => {\n if (highlightRegionsIn === void 0)\n return void 0;\n if (rowMarkerOffset === 0)\n return highlightRegionsIn;\n return highlightRegionsIn.map((r) => {\n const maxWidth = mangledCols.length - r.range.x - rowMarkerOffset;\n if (maxWidth <= 0)\n return void 0;\n return {\n color: r.color,\n range: {\n ...r.range,\n x: r.range.x + rowMarkerOffset,\n width: Math.min(maxWidth, r.range.width)\n },\n style: r.style\n };\n }).filter((x) => x !== void 0);\n }, [highlightRegionsIn, mangledCols.length, rowMarkerOffset]);\n const mangledColsRef = React35.useRef(mangledCols);\n mangledColsRef.current = mangledCols;\n const getMangledCellContent = React35.useCallback(\n ([col, row], forceStrict = false) => {\n var _a2, _b2, _c2, _d2, _e2, _f, _g, _h, _i, _j;\n const isTrailing = showTrailingBlankRow && row === mangledRows - 1;\n const isRowMarkerCol = col === 0 && hasRowMarkers;\n if (isRowMarkerCol) {\n if (isTrailing) {\n return loadingCell2;\n }\n return {\n kind: InnerGridCellKind.Marker,\n allowOverlay: false,\n checked: (gridSelection == null ? void 0 : gridSelection.rows.hasIndex(row)) === true,\n markerKind: rowMarkers === \"clickable-number\" ? \"number\" : rowMarkers,\n row: rowMarkerStartIndex + row,\n drawHandle: onRowMoved !== void 0,\n cursor: rowMarkers === \"clickable-number\" ? \"pointer\" : void 0\n };\n } else if (isTrailing) {\n const isFirst = col === rowMarkerOffset;\n const maybeFirstColumnHint = isFirst ? (_a2 = trailingRowOptions == null ? void 0 : trailingRowOptions.hint) != null ? _a2 : \"\" : \"\";\n const c = mangledColsRef.current[col];\n if (((_b2 = c == null ? void 0 : c.trailingRowOptions) == null ? void 0 : _b2.disabled) === true) {\n return loadingCell2;\n } else {\n const hint = (_d2 = (_c2 = c == null ? void 0 : c.trailingRowOptions) == null ? void 0 : _c2.hint) != null ? _d2 : maybeFirstColumnHint;\n const icon = (_f = (_e2 = c == null ? void 0 : c.trailingRowOptions) == null ? void 0 : _e2.addIcon) != null ? _f : trailingRowOptions == null ? void 0 : trailingRowOptions.addIcon;\n return {\n kind: InnerGridCellKind.NewRow,\n hint,\n allowOverlay: false,\n icon\n };\n }\n } else {\n const outerCol = col - rowMarkerOffset;\n if (forceStrict || (experimental == null ? void 0 : experimental.strict) === true) {\n const vr = visibleRegionRef.current;\n const isOutsideMainArea = vr.x > outerCol || outerCol > vr.x + vr.width || vr.y > row || row > vr.y + vr.height;\n const isSelected = outerCol === ((_h = (_g = vr.extras) == null ? void 0 : _g.selected) == null ? void 0 : _h[0]) && row === ((_i = vr.extras) == null ? void 0 : _i.selected[1]);\n const isOutsideFreezeArea = ((_j = vr.extras) == null ? void 0 : _j.freezeRegion) === void 0 || vr.extras.freezeRegion.x > outerCol || outerCol > vr.extras.freezeRegion.x + vr.extras.freezeRegion.width || vr.extras.freezeRegion.y > row || row > vr.extras.freezeRegion.y + vr.extras.freezeRegion.height;\n if (isOutsideMainArea && !isSelected && isOutsideFreezeArea) {\n return {\n kind: GridCellKind.Loading,\n allowOverlay: false\n };\n }\n }\n let result = getCellContent([outerCol, row]);\n if (rowMarkerOffset !== 0 && result.span !== void 0) {\n result = {\n ...result,\n span: [result.span[0] + rowMarkerOffset, result.span[1] + rowMarkerOffset]\n };\n }\n return result;\n }\n },\n [\n showTrailingBlankRow,\n mangledRows,\n hasRowMarkers,\n gridSelection == null ? void 0 : gridSelection.rows,\n onRowMoved,\n rowMarkers,\n rowMarkerOffset,\n trailingRowOptions == null ? void 0 : trailingRowOptions.hint,\n trailingRowOptions == null ? void 0 : trailingRowOptions.addIcon,\n experimental == null ? void 0 : experimental.strict,\n getCellContent,\n rowMarkerStartIndex\n ]\n );\n const mangledGetGroupDetails = React35.useCallback(\n (group) => {\n var _a2, _b2;\n let result = (_a2 = getGroupDetails == null ? void 0 : getGroupDetails(group)) != null ? _a2 : { name: group };\n if (onGroupHeaderRenamed !== void 0 && group !== \"\") {\n result = {\n icon: result.icon,\n name: result.name,\n overrideTheme: result.overrideTheme,\n actions: [\n ...(_b2 = result.actions) != null ? _b2 : [],\n {\n title: \"Rename\",\n icon: \"renameIcon\",\n onClick: (e) => setRenameGroup({\n group: result.name,\n bounds: e.bounds\n })\n }\n ]\n };\n }\n return result;\n },\n [getGroupDetails, onGroupHeaderRenamed]\n );\n const setOverlaySimple = React35.useCallback(\n (val) => {\n var _a2;\n const [col, row] = val.cell;\n const column = mangledCols[col];\n const groupTheme = (column == null ? void 0 : column.group) !== void 0 ? (_a2 = mangledGetGroupDetails(column.group)) == null ? void 0 : _a2.overrideTheme : void 0;\n const colTheme = column == null ? void 0 : column.themeOverride;\n const rowTheme = getRowThemeOverride == null ? void 0 : getRowThemeOverride(row);\n setOverlay({\n ...val,\n theme: { ...mergedTheme, ...groupTheme, ...colTheme, ...rowTheme, ...val.content.themeOverride }\n });\n },\n [getRowThemeOverride, mangledCols, mangledGetGroupDetails, mergedTheme]\n );\n const reselect = React35.useCallback(\n (bounds, fromKeyboard, initialValue) => {\n var _a2;\n if (gridSelection.current === void 0)\n return;\n const [col, row] = gridSelection.current.cell;\n const c = getMangledCellContent([col, row]);\n if (c.kind !== GridCellKind.Boolean && c.allowOverlay) {\n let content = c;\n if (initialValue !== void 0) {\n switch (content.kind) {\n case GridCellKind.Number: {\n const d = maybe(() => initialValue === \"-\" ? -0 : Number.parseFloat(initialValue), 0);\n content = {\n ...content,\n data: Number.isNaN(d) ? 0 : d\n };\n break;\n }\n case GridCellKind.Text:\n case GridCellKind.Markdown:\n case GridCellKind.Uri:\n content = {\n ...content,\n data: initialValue\n };\n break;\n }\n }\n setOverlaySimple({\n target: bounds,\n content,\n initialValue,\n cell: [col, row],\n highlight: initialValue === void 0,\n forceEditMode: initialValue !== void 0\n });\n } else if (c.kind === GridCellKind.Boolean && fromKeyboard && c.readonly !== true) {\n mangledOnCellsEdited([\n {\n location: gridSelection.current.cell,\n value: {\n ...c,\n data: toggleBoolean(c.data)\n }\n }\n ]);\n (_a2 = gridRef.current) == null ? void 0 : _a2.damage([{ cell: gridSelection.current.cell }]);\n }\n },\n [getMangledCellContent, gridSelection, mangledOnCellsEdited, setOverlaySimple]\n );\n const focusOnRowFromTrailingBlankRow = React35.useCallback(\n (col, row) => {\n var _a2;\n const bounds = (_a2 = gridRef.current) == null ? void 0 : _a2.getBounds(col, row);\n if (bounds === void 0 || scrollRef.current === null) {\n return;\n }\n const content = getMangledCellContent([col, row]);\n if (!content.allowOverlay) {\n return;\n }\n setOverlaySimple({\n target: bounds,\n content,\n initialValue: void 0,\n highlight: true,\n cell: [col, row],\n forceEditMode: true\n });\n },\n [getMangledCellContent, setOverlaySimple]\n );\n const scrollTo = React35.useCallback(\n (col, row, dir = \"both\", paddingX = 0, paddingY = 0, options = void 0) => {\n var _a2;\n if (scrollRef.current !== null) {\n const grid = gridRef.current;\n const canvas = canvasRef.current;\n const trueCol = typeof col !== \"number\" ? col.unit === \"cell\" ? col.amount : void 0 : col;\n const trueRow = typeof row !== \"number\" ? row.unit === \"cell\" ? row.amount : void 0 : row;\n const desiredX = typeof col !== \"number\" && col.unit === \"px\" ? col.amount : void 0;\n const desiredY = typeof row !== \"number\" && row.unit === \"px\" ? row.amount : void 0;\n if (grid !== null && canvas !== null) {\n let targetRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n let scrollX = 0;\n let scrollY = 0;\n if (trueCol !== void 0 || trueRow !== void 0) {\n targetRect = (_a2 = grid.getBounds((trueCol != null ? trueCol : 0) + rowMarkerOffset, trueRow != null ? trueRow : 0)) != null ? _a2 : targetRect;\n if (targetRect.width === 0 || targetRect.height === 0)\n return;\n }\n const scrollBounds = canvas.getBoundingClientRect();\n const scale = scrollBounds.width / canvas.offsetWidth;\n if (desiredX !== void 0) {\n targetRect = {\n ...targetRect,\n x: desiredX - scrollBounds.left - scrollRef.current.scrollLeft,\n width: 1\n };\n }\n if (desiredY !== void 0) {\n targetRect = {\n ...targetRect,\n y: desiredY + scrollBounds.top - scrollRef.current.scrollTop,\n height: 1\n };\n }\n if (targetRect !== void 0) {\n const bounds = {\n x: targetRect.x - paddingX,\n y: targetRect.y - paddingY,\n width: targetRect.width + 2 * paddingX,\n height: targetRect.height + 2 * paddingY\n };\n let frozenWidth = 0;\n for (let i = 0; i < freezeColumns; i++) {\n frozenWidth += columns[i].width;\n }\n let trailingRowHeight = 0;\n if (lastRowSticky) {\n trailingRowHeight = typeof rowHeight === \"number\" ? rowHeight : rowHeight(rows);\n }\n let sLeft = frozenWidth * scale + scrollBounds.left + rowMarkerOffset * rowMarkerWidth * scale;\n let sRight = scrollBounds.right;\n let sTop = scrollBounds.top + totalHeaderHeight * scale;\n let sBottom = scrollBounds.bottom - trailingRowHeight * scale;\n const minx = targetRect.width + paddingX * 2;\n switch (options == null ? void 0 : options.hAlign) {\n case \"start\":\n sRight = sLeft + minx;\n break;\n case \"end\":\n sLeft = sRight - minx;\n break;\n case \"center\":\n sLeft = Math.floor((sLeft + sRight) / 2) - minx / 2;\n sRight = sLeft + minx;\n break;\n }\n const miny = targetRect.height + paddingY * 2;\n switch (options == null ? void 0 : options.vAlign) {\n case \"start\":\n sBottom = sTop + miny;\n break;\n case \"end\":\n sTop = sBottom - miny;\n break;\n case \"center\":\n sTop = Math.floor((sTop + sBottom) / 2) - miny / 2;\n sBottom = sTop + miny;\n break;\n }\n if (sLeft > bounds.x) {\n scrollX = bounds.x - sLeft;\n } else if (sRight < bounds.x + bounds.width) {\n scrollX = bounds.x + bounds.width - sRight;\n }\n if (sTop > bounds.y) {\n scrollY = bounds.y - sTop;\n } else if (sBottom < bounds.y + bounds.height) {\n scrollY = bounds.y + bounds.height - sBottom;\n }\n if (dir === \"vertical\" || typeof col === \"number\" && col < freezeColumns) {\n scrollX = 0;\n } else if (dir === \"horizontal\") {\n scrollY = 0;\n }\n if (scrollX !== 0 || scrollY !== 0) {\n if (scale !== 1) {\n scrollX /= scale;\n scrollY /= scale;\n }\n scrollRef.current.scrollTo(\n scrollX + scrollRef.current.scrollLeft,\n scrollY + scrollRef.current.scrollTop\n );\n }\n }\n }\n }\n },\n [rowMarkerOffset, rowMarkerWidth, totalHeaderHeight, lastRowSticky, freezeColumns, columns, rowHeight, rows]\n );\n const focusCallback = React35.useRef(focusOnRowFromTrailingBlankRow);\n const getCellContentRef = React35.useRef(getCellContent);\n const rowsRef = React35.useRef(rows);\n focusCallback.current = focusOnRowFromTrailingBlankRow;\n getCellContentRef.current = getCellContent;\n rowsRef.current = rows;\n const appendRow = React35.useCallback(\n async (col, openOverlay = true) => {\n var _a2;\n const c = mangledCols[col];\n if (((_a2 = c == null ? void 0 : c.trailingRowOptions) == null ? void 0 : _a2.disabled) === true) {\n return;\n }\n const appendResult = onRowAppended == null ? void 0 : onRowAppended();\n let r = void 0;\n let bottom = true;\n if (appendResult !== void 0) {\n r = await appendResult;\n if (r === \"top\")\n bottom = false;\n if (typeof r === \"number\")\n bottom = false;\n }\n let backoff = 0;\n const doFocus = () => {\n if (rowsRef.current <= rows) {\n if (backoff < 500) {\n window.setTimeout(doFocus, backoff);\n }\n backoff = 50 + backoff * 2;\n return;\n }\n const row = typeof r === \"number\" ? r : bottom ? rows : 0;\n scrollTo(col - rowMarkerOffset, row);\n setCurrent(\n {\n cell: [col, row],\n range: {\n x: col,\n y: row,\n width: 1,\n height: 1\n }\n },\n false,\n false,\n \"edit\"\n );\n const cell = getCellContentRef.current([col - rowMarkerOffset, row]);\n if (cell.allowOverlay && isReadWriteCell(cell) && cell.readonly !== true && openOverlay) {\n window.setTimeout(() => {\n focusCallback.current(col, row);\n }, 0);\n }\n };\n doFocus();\n },\n [mangledCols, onRowAppended, rowMarkerOffset, rows, scrollTo, setCurrent]\n );\n const getCustomNewRowTargetColumn = React35.useCallback(\n (col) => {\n var _a2, _b2, _c2;\n const customTargetColumn = (_c2 = (_b2 = (_a2 = columns[col]) == null ? void 0 : _a2.trailingRowOptions) == null ? void 0 : _b2.targetColumn) != null ? _c2 : trailingRowOptions == null ? void 0 : trailingRowOptions.targetColumn;\n if (typeof customTargetColumn === \"number\") {\n const customTargetOffset = hasRowMarkers ? 1 : 0;\n return customTargetColumn + customTargetOffset;\n }\n if (typeof customTargetColumn === \"object\") {\n const maybeIndex = columnsIn.indexOf(customTargetColumn);\n if (maybeIndex >= 0) {\n const customTargetOffset = hasRowMarkers ? 1 : 0;\n return maybeIndex + customTargetOffset;\n }\n }\n return void 0;\n },\n [columns, columnsIn, hasRowMarkers, trailingRowOptions == null ? void 0 : trailingRowOptions.targetColumn]\n );\n const lastSelectedRowRef = React35.useRef();\n const lastSelectedColRef = React35.useRef();\n const themeForCell = React35.useCallback(\n (cell, pos) => {\n var _a2;\n const [col, row] = pos;\n return {\n ...mergedTheme,\n ...(_a2 = mangledCols[col]) == null ? void 0 : _a2.themeOverride,\n ...getRowThemeOverride == null ? void 0 : getRowThemeOverride(row),\n ...cell.themeOverride\n };\n },\n [getRowThemeOverride, mangledCols, mergedTheme]\n );\n const handleSelect = React35.useCallback(\n (args) => {\n var _a2, _b2, _c2, _d2;\n const isMultiKey = browserIsOSX.value ? args.metaKey : args.ctrlKey;\n const isMultiRow = isMultiKey && rowSelect === \"multi\";\n const isMultiCol = isMultiKey && columnSelect === \"multi\";\n const [col, row] = args.location;\n const selectedColumns = gridSelection.columns;\n const selectedRows = gridSelection.rows;\n const [cellCol, cellRow] = (_b2 = (_a2 = gridSelection.current) == null ? void 0 : _a2.cell) != null ? _b2 : [];\n if (args.kind === \"cell\") {\n lastSelectedColRef.current = void 0;\n lastMouseSelectLocation.current = [col, row];\n if (col === 0 && hasRowMarkers) {\n if (showTrailingBlankRow === true && row === rows || rowMarkers === \"number\" || rowSelect === \"none\")\n return;\n const markerCell = getMangledCellContent(args.location);\n if (markerCell.kind !== InnerGridCellKind.Marker) {\n return;\n }\n if (onRowMoved !== void 0) {\n const renderer = getCellRenderer(markerCell);\n assert((renderer == null ? void 0 : renderer.kind) === InnerGridCellKind.Marker);\n const postClick = (_c2 = renderer == null ? void 0 : renderer.onClick) == null ? void 0 : _c2.call(renderer, {\n ...args,\n cell: markerCell,\n posX: args.localEventX,\n posY: args.localEventY,\n bounds: args.bounds,\n theme: themeForCell(markerCell, args.location),\n preventDefault: () => void 0\n });\n if (postClick === void 0 || postClick.checked === markerCell.checked)\n return;\n }\n setOverlay(void 0);\n focus();\n const isSelected = selectedRows.hasIndex(row);\n const lastHighlighted = lastSelectedRowRef.current;\n if (rowSelect === \"multi\" && (args.shiftKey || args.isLongTouch === true) && lastHighlighted !== void 0 && selectedRows.hasIndex(lastHighlighted)) {\n const newSlice = [Math.min(lastHighlighted, row), Math.max(lastHighlighted, row) + 1];\n if (isMultiRow || rowSelectionMode === \"multi\") {\n setSelectedRows(void 0, newSlice, true);\n } else {\n setSelectedRows(CompactSelection.fromSingleSelection(newSlice), void 0, isMultiRow);\n }\n } else if (isMultiRow || args.isTouch || rowSelectionMode === \"multi\") {\n if (isSelected) {\n setSelectedRows(selectedRows.remove(row), void 0, true);\n } else {\n setSelectedRows(void 0, row, true);\n lastSelectedRowRef.current = row;\n }\n } else if (isSelected && selectedRows.length === 1) {\n setSelectedRows(CompactSelection.empty(), void 0, isMultiKey);\n } else {\n setSelectedRows(CompactSelection.fromSingleSelection(row), void 0, isMultiKey);\n lastSelectedRowRef.current = row;\n }\n } else if (col >= rowMarkerOffset && showTrailingBlankRow && row === rows) {\n const customTargetColumn = getCustomNewRowTargetColumn(col);\n void appendRow(customTargetColumn != null ? customTargetColumn : col);\n } else {\n if (cellCol !== col || cellRow !== row) {\n const cell = getMangledCellContent(args.location);\n const renderer = getCellRenderer(cell);\n if ((renderer == null ? void 0 : renderer.onSelect) !== void 0) {\n let prevented = false;\n renderer.onSelect({\n ...args,\n cell,\n posX: args.localEventX,\n posY: args.localEventY,\n bounds: args.bounds,\n preventDefault: () => prevented = true,\n theme: themeForCell(cell, args.location)\n });\n if (prevented) {\n return;\n }\n }\n const isLastStickyRow = lastRowSticky && row === rows;\n const startedFromLastSticky = lastRowSticky && gridSelection !== void 0 && ((_d2 = gridSelection.current) == null ? void 0 : _d2.cell[1]) === rows;\n if ((args.shiftKey || args.isLongTouch === true) && cellCol !== void 0 && cellRow !== void 0 && gridSelection.current !== void 0 && !startedFromLastSticky) {\n if (isLastStickyRow) {\n return;\n }\n const left = Math.min(col, cellCol);\n const right = Math.max(col, cellCol);\n const top = Math.min(row, cellRow);\n const bottom = Math.max(row, cellRow);\n setCurrent(\n {\n ...gridSelection.current,\n range: {\n x: left,\n y: top,\n width: right - left + 1,\n height: bottom - top + 1\n }\n },\n true,\n isMultiKey,\n \"click\"\n );\n lastSelectedRowRef.current = void 0;\n focus();\n } else {\n setCurrent(\n {\n cell: [col, row],\n range: { x: col, y: row, width: 1, height: 1 }\n },\n true,\n isMultiKey,\n \"click\"\n );\n lastSelectedRowRef.current = void 0;\n setOverlay(void 0);\n focus();\n }\n }\n }\n } else if (args.kind === \"header\") {\n lastMouseSelectLocation.current = [col, row];\n setOverlay(void 0);\n if (hasRowMarkers && col === 0) {\n lastSelectedRowRef.current = void 0;\n lastSelectedColRef.current = void 0;\n if (rowSelect === \"multi\") {\n if (selectedRows.length !== rows) {\n setSelectedRows(CompactSelection.fromSingleSelection([0, rows]), void 0, isMultiKey);\n } else {\n setSelectedRows(CompactSelection.empty(), void 0, isMultiKey);\n }\n focus();\n }\n } else {\n const lastCol = lastSelectedColRef.current;\n if (columnSelect === \"multi\" && (args.shiftKey || args.isLongTouch === true) && lastCol !== void 0 && selectedColumns.hasIndex(lastCol)) {\n const newSlice = [Math.min(lastCol, col), Math.max(lastCol, col) + 1];\n if (isMultiCol) {\n setSelectedColumns(void 0, newSlice, isMultiKey);\n } else {\n setSelectedColumns(CompactSelection.fromSingleSelection(newSlice), void 0, isMultiKey);\n }\n } else if (isMultiCol) {\n if (selectedColumns.hasIndex(col)) {\n setSelectedColumns(selectedColumns.remove(col), void 0, isMultiKey);\n } else {\n setSelectedColumns(void 0, col, isMultiKey);\n }\n lastSelectedColRef.current = col;\n } else if (columnSelect !== \"none\") {\n setSelectedColumns(CompactSelection.fromSingleSelection(col), void 0, isMultiKey);\n lastSelectedColRef.current = col;\n }\n lastSelectedRowRef.current = void 0;\n focus();\n }\n } else if (args.kind === groupHeaderKind) {\n lastMouseSelectLocation.current = [col, row];\n } else if (args.kind === outOfBoundsKind && !args.isMaybeScrollbar) {\n setGridSelection(emptyGridSelection, false);\n setOverlay(void 0);\n focus();\n onSelectionCleared == null ? void 0 : onSelectionCleared();\n lastSelectedRowRef.current = void 0;\n lastSelectedColRef.current = void 0;\n }\n },\n [\n appendRow,\n columnSelect,\n focus,\n getCellRenderer,\n getCustomNewRowTargetColumn,\n getMangledCellContent,\n gridSelection,\n hasRowMarkers,\n lastRowSticky,\n onSelectionCleared,\n onRowMoved,\n rowMarkerOffset,\n rowMarkers,\n rowSelect,\n rowSelectionMode,\n rows,\n setCurrent,\n setGridSelection,\n setSelectedColumns,\n setSelectedRows,\n showTrailingBlankRow,\n themeForCell\n ]\n );\n const isActivelyDraggingHeader = React35.useRef(false);\n const lastMouseSelectLocation = React35.useRef();\n const touchDownArgs = React35.useRef(visibleRegion);\n const mouseDownData = React35.useRef();\n const onMouseDown = React35.useCallback(\n (args) => {\n var _a2, _b2;\n isPrevented.current = false;\n touchDownArgs.current = visibleRegionRef.current;\n if (args.button !== 0 && args.button !== 1) {\n mouseDownData.current = void 0;\n return;\n }\n const time = performance.now();\n const wasDoubleClick = time - ((_b2 = (_a2 = mouseDownData.current) == null ? void 0 : _a2.time) != null ? _b2 : -1e3) < 250;\n mouseDownData.current = {\n wasDoubleClick,\n button: args.button,\n time,\n location: args.location\n };\n if ((args == null ? void 0 : args.kind) === \"header\") {\n isActivelyDraggingHeader.current = true;\n }\n const fh = args.kind === \"cell\" && args.isFillHandle;\n if (!fh && args.kind !== \"cell\" && args.isEdge)\n return;\n setMouseState({\n previousSelection: gridSelection,\n fillHandle: fh\n });\n lastMouseSelectLocation.current = void 0;\n if (!args.isTouch && args.button === 0) {\n handleSelect(args);\n } else if (!args.isTouch && args.button === 1) {\n lastMouseSelectLocation.current = args.location;\n }\n },\n [gridSelection, handleSelect]\n );\n const [renameGroup, setRenameGroup] = React35.useState();\n const handleGroupHeaderSelection = React35.useCallback(\n (args) => {\n if (args.kind !== groupHeaderKind || columnSelect !== \"multi\") {\n return;\n }\n const isMultiKey = browserIsOSX.value ? args.metaKey : args.ctrlKey;\n const [col] = args.location;\n const selectedColumns = gridSelection.columns;\n if (col < rowMarkerOffset)\n return;\n const needle = mangledCols[col];\n let start = col;\n let end = col;\n for (let i = col - 1; i >= rowMarkerOffset; i--) {\n if (!isGroupEqual(needle.group, mangledCols[i].group))\n break;\n start--;\n }\n for (let i = col + 1; i < mangledCols.length; i++) {\n if (!isGroupEqual(needle.group, mangledCols[i].group))\n break;\n end++;\n }\n focus();\n if (isMultiKey) {\n if (selectedColumns.hasAll([start, end + 1])) {\n let newVal = selectedColumns;\n for (let index = start; index <= end; index++) {\n newVal = newVal.remove(index);\n }\n setSelectedColumns(newVal, void 0, isMultiKey);\n } else {\n setSelectedColumns(void 0, [start, end + 1], isMultiKey);\n }\n } else {\n setSelectedColumns(CompactSelection.fromSingleSelection([start, end + 1]), void 0, isMultiKey);\n }\n },\n [columnSelect, focus, gridSelection.columns, mangledCols, rowMarkerOffset, setSelectedColumns]\n );\n const fillDown = React35.useCallback(\n (reverse) => {\n var _a2;\n if (gridSelection.current === void 0)\n return;\n const v = [];\n const r = gridSelection.current.range;\n for (let x = 0; x < r.width; x++) {\n const fillCol = x + r.x;\n const fillVal = getMangledCellContent([fillCol, reverse ? r.y + r.height - 1 : r.y]);\n if (isInnerOnlyCell(fillVal) || !isReadWriteCell(fillVal))\n continue;\n for (let y = 1; y < r.height; y++) {\n const fillRow = reverse ? r.y + r.height - (y + 1) : y + r.y;\n const target = [fillCol, fillRow];\n v.push({\n location: target,\n value: { ...fillVal }\n });\n }\n }\n mangledOnCellsEdited(v);\n (_a2 = gridRef.current) == null ? void 0 : _a2.damage(\n v.map((c) => ({\n cell: c.location\n }))\n );\n },\n [getMangledCellContent, gridSelection, mangledOnCellsEdited]\n );\n const isPrevented = React35.useRef(false);\n const normalSizeColumn = React35.useCallback(\n async (col, force = false) => {\n var _a2;\n if ((((_a2 = mouseDownData.current) == null ? void 0 : _a2.wasDoubleClick) === true || force) && getCellsForSelection !== void 0 && onColumnResize !== void 0) {\n const start = visibleRegionRef.current.y;\n const end = visibleRegionRef.current.height;\n let cells = getCellsForSelection(\n {\n x: col,\n y: start,\n width: 1,\n height: Math.min(end, rows - start)\n },\n abortControllerRef.current.signal\n );\n if (typeof cells !== \"object\") {\n cells = await cells();\n }\n const inputCol = columns[col - rowMarkerOffset];\n const offscreen = document.createElement(\"canvas\");\n const ctx = offscreen.getContext(\"2d\", { alpha: false });\n if (ctx !== null) {\n ctx.font = `${mergedTheme.baseFontStyle} ${mergedTheme.fontFamily}`;\n const newCol = measureColumn(\n ctx,\n mergedTheme,\n inputCol,\n 0,\n cells,\n minColumnWidth,\n maxColumnWidth,\n false,\n getCellRenderer\n );\n onColumnResize == null ? void 0 : onColumnResize(inputCol, newCol.width, col, newCol.width);\n }\n }\n },\n [\n columns,\n getCellsForSelection,\n maxColumnWidth,\n mergedTheme,\n minColumnWidth,\n onColumnResize,\n rowMarkerOffset,\n rows,\n getCellRenderer\n ]\n );\n const [scrollDir, setScrollDir] = React35.useState();\n const onMouseUp = React35.useCallback(\n (args, isOutside) => {\n var _a2, _b2, _c2;\n const mouse = mouseState;\n setMouseState(void 0);\n setScrollDir(void 0);\n isActivelyDraggingHeader.current = false;\n if (isOutside)\n return;\n if ((mouse == null ? void 0 : mouse.fillHandle) === true && gridSelection.current !== void 0) {\n fillDown(gridSelection.current.cell[1] !== gridSelection.current.range.y);\n return;\n }\n const [col, row] = args.location;\n const [lastMouseDownCol, lastMouseDownRow] = (_a2 = lastMouseSelectLocation.current) != null ? _a2 : [];\n const preventDefault = () => {\n isPrevented.current = true;\n };\n const handleMaybeClick = (a) => {\n var _a3, _b3, _c3;\n const isValidClick = a.isTouch || lastMouseDownCol === col && lastMouseDownRow === row;\n if (isValidClick) {\n onCellClicked == null ? void 0 : onCellClicked([col - rowMarkerOffset, row], {\n ...a,\n preventDefault\n });\n }\n if (a.button === 1)\n return !isPrevented.current;\n if (!isPrevented.current) {\n const c = getMangledCellContent(args.location);\n const r = getCellRenderer(c);\n if (r !== void 0 && r.onClick !== void 0 && isValidClick) {\n const newVal = r.onClick({\n ...a,\n cell: c,\n posX: a.localEventX,\n posY: a.localEventY,\n bounds: a.bounds,\n theme: themeForCell(c, args.location),\n preventDefault\n });\n if (newVal !== void 0 && !isInnerOnlyCell(newVal) && isEditableGridCell(newVal)) {\n mangledOnCellsEdited([{ location: a.location, value: newVal }]);\n (_a3 = gridRef.current) == null ? void 0 : _a3.damage([\n {\n cell: a.location\n }\n ]);\n }\n }\n if (!isPrevented.current && ((_c3 = (_b3 = mouse == null ? void 0 : mouse.previousSelection) == null ? void 0 : _b3.current) == null ? void 0 : _c3.cell) !== void 0 && gridSelection.current !== void 0) {\n const [selectedCol, selectedRow] = gridSelection.current.cell;\n const [prevCol, prevRow] = mouse.previousSelection.current.cell;\n if (col === selectedCol && col === prevCol && row === selectedRow && row === prevRow) {\n onCellActivated == null ? void 0 : onCellActivated([col - rowMarkerOffset, row]);\n reselect(a.bounds, false);\n return true;\n }\n }\n }\n return false;\n };\n const clickLocation = args.location[0] - rowMarkerOffset;\n if (args.isTouch) {\n const vr = visibleRegionRef.current;\n const touchVr = touchDownArgs.current;\n if (vr.x !== touchVr.x || vr.y !== touchVr.y) {\n return;\n }\n if (args.isLongTouch === true) {\n if (args.kind === \"cell\" && ((_b2 = gridSelection == null ? void 0 : gridSelection.current) == null ? void 0 : _b2.cell[0]) === col && ((_c2 = gridSelection == null ? void 0 : gridSelection.current) == null ? void 0 : _c2.cell[1]) === row) {\n onCellContextMenu == null ? void 0 : onCellContextMenu([clickLocation, args.location[1]], {\n ...args,\n preventDefault\n });\n return;\n } else if (args.kind === \"header\" && gridSelection.columns.hasIndex(col)) {\n onHeaderContextMenu == null ? void 0 : onHeaderContextMenu(clickLocation, { ...args, preventDefault });\n return;\n } else if (args.kind === groupHeaderKind) {\n if (clickLocation < 0) {\n return;\n }\n onGroupHeaderContextMenu == null ? void 0 : onGroupHeaderContextMenu(clickLocation, { ...args, preventDefault });\n return;\n }\n }\n if (args.kind === \"cell\") {\n if (!handleMaybeClick(args)) {\n handleSelect(args);\n }\n } else if (args.kind === groupHeaderKind) {\n onGroupHeaderClicked == null ? void 0 : onGroupHeaderClicked(clickLocation, { ...args, preventDefault });\n } else {\n if (args.kind === headerKind) {\n onHeaderClicked == null ? void 0 : onHeaderClicked(clickLocation, {\n ...args,\n preventDefault\n });\n }\n handleSelect(args);\n }\n return;\n }\n if (args.kind === \"header\") {\n if (clickLocation < 0) {\n return;\n }\n if (args.isEdge) {\n void normalSizeColumn(col);\n } else if (args.button === 0 && col === lastMouseDownCol && row === lastMouseDownRow) {\n onHeaderClicked == null ? void 0 : onHeaderClicked(clickLocation, { ...args, preventDefault });\n }\n }\n if (args.kind === groupHeaderKind) {\n if (clickLocation < 0) {\n return;\n }\n if (args.button === 0 && col === lastMouseDownCol && row === lastMouseDownRow) {\n onGroupHeaderClicked == null ? void 0 : onGroupHeaderClicked(clickLocation, { ...args, preventDefault });\n if (!isPrevented.current) {\n handleGroupHeaderSelection(args);\n }\n }\n }\n if (args.kind === \"cell\" && (args.button === 0 || args.button === 1)) {\n handleMaybeClick(args);\n }\n lastMouseSelectLocation.current = void 0;\n },\n [\n mouseState,\n rowMarkerOffset,\n gridSelection,\n onCellClicked,\n fillDown,\n getMangledCellContent,\n getCellRenderer,\n themeForCell,\n mangledOnCellsEdited,\n onCellActivated,\n reselect,\n onCellContextMenu,\n onHeaderContextMenu,\n onGroupHeaderContextMenu,\n handleSelect,\n onGroupHeaderClicked,\n normalSizeColumn,\n onHeaderClicked,\n handleGroupHeaderSelection\n ]\n );\n const onMouseMoveImpl = React35.useCallback(\n (args) => {\n const a = {\n ...args,\n location: [args.location[0] - rowMarkerOffset, args.location[1]]\n };\n onMouseMove == null ? void 0 : onMouseMove(a);\n setScrollDir((cv) => {\n var _a2, _b2;\n if (isActivelyDraggingHeader.current)\n return [args.scrollEdge[0], 0];\n if (args.scrollEdge[0] === (cv == null ? void 0 : cv[0]) && args.scrollEdge[1] === cv[1])\n return cv;\n return mouseState === void 0 || ((_b2 = (_a2 = mouseDownData.current) == null ? void 0 : _a2.location[0]) != null ? _b2 : 0) < rowMarkerOffset ? void 0 : args.scrollEdge;\n });\n },\n [mouseState, onMouseMove, rowMarkerOffset]\n );\n useAutoscroll(scrollDir, scrollRef);\n const onHeaderMenuClickInner = React35.useCallback(\n (col, screenPosition) => {\n onHeaderMenuClick == null ? void 0 : onHeaderMenuClick(col - rowMarkerOffset, screenPosition);\n },\n [onHeaderMenuClick, rowMarkerOffset]\n );\n const currentCell = (_c = gridSelection == null ? void 0 : gridSelection.current) == null ? void 0 : _c.cell;\n const onVisibleRegionChangedImpl = React35.useCallback(\n (region, clientWidth, clientHeight, rightElWidth, tx, ty) => {\n hasJustScrolled.current = false;\n let selected = currentCell;\n if (selected !== void 0) {\n selected = [selected[0] - rowMarkerOffset, selected[1]];\n }\n const newRegion = {\n x: region.x - rowMarkerOffset,\n y: region.y,\n width: region.width,\n height: showTrailingBlankRow && region.y + region.height >= rows ? region.height - 1 : region.height,\n tx,\n ty,\n extras: {\n selected,\n freezeRegion: freezeColumns === 0 ? void 0 : {\n x: 0,\n y: region.y,\n width: freezeColumns,\n height: region.height\n }\n }\n };\n visibleRegionRef.current = newRegion;\n setVisibleRegion(newRegion);\n setClientSize([clientWidth, clientHeight, rightElWidth]);\n onVisibleRegionChanged == null ? void 0 : onVisibleRegionChanged(newRegion, newRegion.tx, newRegion.ty, newRegion.extras);\n },\n [\n currentCell,\n rowMarkerOffset,\n showTrailingBlankRow,\n rows,\n freezeColumns,\n setVisibleRegion,\n onVisibleRegionChanged\n ]\n );\n const onColumnMovedImpl = whenDefined(\n onColumnMoved,\n React35.useCallback(\n (startIndex, endIndex) => {\n onColumnMoved == null ? void 0 : onColumnMoved(startIndex - rowMarkerOffset, endIndex - rowMarkerOffset);\n if (columnSelect !== \"none\") {\n setSelectedColumns(CompactSelection.fromSingleSelection(endIndex), void 0, true);\n }\n },\n [columnSelect, onColumnMoved, rowMarkerOffset, setSelectedColumns]\n )\n );\n const isActivelyDragging = React35.useRef(false);\n const onDragStartImpl = React35.useCallback(\n (args) => {\n if (args.location[0] === 0 && rowMarkerOffset > 0) {\n args.preventDefault();\n return;\n }\n onDragStart == null ? void 0 : onDragStart({\n ...args,\n location: [args.location[0] - rowMarkerOffset, args.location[1]]\n });\n if (!args.defaultPrevented()) {\n isActivelyDragging.current = true;\n }\n setMouseState(void 0);\n },\n [onDragStart, rowMarkerOffset]\n );\n const onDragEnd = React35.useCallback(() => {\n isActivelyDragging.current = false;\n }, []);\n const onItemHoveredImpl = React35.useCallback(\n (args) => {\n var _a2, _b2;\n if (((_a2 = mouseDownData == null ? void 0 : mouseDownData.current) == null ? void 0 : _a2.button) !== void 0 && mouseDownData.current.button >= 1)\n return;\n if (mouseState !== void 0 && ((_b2 = mouseDownData.current) == null ? void 0 : _b2.location[0]) === 0 && args.location[0] === 0 && rowMarkerOffset === 1 && rowSelect === \"multi\" && mouseState.previousSelection && !mouseState.previousSelection.rows.hasIndex(mouseDownData.current.location[1]) && gridSelection.rows.hasIndex(mouseDownData.current.location[1])) {\n const start = Math.min(mouseDownData.current.location[1], args.location[1]);\n const end = Math.max(mouseDownData.current.location[1], args.location[1]) + 1;\n setSelectedRows(CompactSelection.fromSingleSelection([start, end]), void 0, false);\n }\n if (mouseState !== void 0 && gridSelection.current !== void 0 && !isActivelyDragging.current && (rangeSelect === \"rect\" || rangeSelect === \"multi-rect\")) {\n const [selectedCol, selectedRow] = gridSelection.current.cell;\n let [col, row] = args.location;\n if (row < 0) {\n row = visibleRegionRef.current.y;\n }\n const startedFromLastStickyRow = lastRowSticky && selectedRow === rows;\n if (startedFromLastStickyRow)\n return;\n const landedOnLastStickyRow = lastRowSticky && row === rows;\n if (landedOnLastStickyRow) {\n if (args.kind === outOfBoundsKind)\n row--;\n else\n return;\n }\n col = Math.max(col, rowMarkerOffset);\n const deltaX = col - selectedCol;\n const deltaY = row - selectedRow;\n const newRange = {\n x: deltaX >= 0 ? selectedCol : col,\n y: deltaY >= 0 ? selectedRow : row,\n width: Math.abs(deltaX) + 1,\n height: Math.abs(deltaY) + 1\n };\n setCurrent(\n {\n ...gridSelection.current,\n range: newRange\n },\n true,\n false,\n \"drag\"\n );\n }\n onItemHovered == null ? void 0 : onItemHovered({ ...args, location: [args.location[0] - rowMarkerOffset, args.location[1]] });\n },\n [\n mouseState,\n rowMarkerOffset,\n rowSelect,\n gridSelection,\n rangeSelect,\n onItemHovered,\n setSelectedRows,\n lastRowSticky,\n rows,\n setCurrent\n ]\n );\n const adjustSelection = React35.useCallback(\n (direction2) => {\n if (gridSelection.current === void 0)\n return;\n const [x, y] = direction2;\n const [col, row] = gridSelection.current.cell;\n const old = gridSelection.current.range;\n let left = old.x;\n let right = old.x + old.width;\n let top = old.y;\n let bottom = old.y + old.height;\n if (y !== 0) {\n switch (y) {\n case 2: {\n bottom = rows;\n top = row;\n scrollTo(0, bottom, \"vertical\");\n break;\n }\n case -2: {\n top = 0;\n bottom = row + 1;\n scrollTo(0, top, \"vertical\");\n break;\n }\n case 1: {\n if (top < row) {\n top++;\n scrollTo(0, top, \"vertical\");\n } else {\n bottom = Math.min(rows, bottom + 1);\n scrollTo(0, bottom, \"vertical\");\n }\n break;\n }\n case -1: {\n if (bottom > row + 1) {\n bottom--;\n scrollTo(0, bottom, \"vertical\");\n } else {\n top = Math.max(0, top - 1);\n scrollTo(0, top, \"vertical\");\n }\n break;\n }\n default: {\n assertNever(y);\n }\n }\n }\n if (x !== 0) {\n if (x === 2) {\n right = mangledCols.length;\n left = col;\n scrollTo(right - 1 - rowMarkerOffset, 0, \"horizontal\");\n } else if (x === -2) {\n left = rowMarkerOffset;\n right = col + 1;\n scrollTo(left - rowMarkerOffset, 0, \"horizontal\");\n } else {\n let disallowed = [];\n if (getCellsForSelection !== void 0) {\n const cells = getCellsForSelection(\n {\n x: left,\n y: top,\n width: right - left - rowMarkerOffset,\n height: bottom - top\n },\n abortControllerRef.current.signal\n );\n if (typeof cells === \"object\") {\n disallowed = getSpanStops(cells);\n }\n }\n if (x === 1) {\n let done = false;\n if (left < col) {\n if (disallowed.length > 0) {\n const target = range(left + 1, col + 1).find(\n (n) => !disallowed.includes(n - rowMarkerOffset)\n );\n if (target !== void 0) {\n left = target;\n done = true;\n }\n } else {\n left++;\n done = true;\n }\n if (done)\n scrollTo(left, 0, \"horizontal\");\n }\n if (!done) {\n right = Math.min(mangledCols.length, right + 1);\n scrollTo(right - 1 - rowMarkerOffset, 0, \"horizontal\");\n }\n } else if (x === -1) {\n let done = false;\n if (right > col + 1) {\n if (disallowed.length > 0) {\n const target = range(right - 1, col, -1).find(\n (n) => !disallowed.includes(n - rowMarkerOffset)\n );\n if (target !== void 0) {\n right = target;\n done = true;\n }\n } else {\n right--;\n done = true;\n }\n if (done)\n scrollTo(right - rowMarkerOffset, 0, \"horizontal\");\n }\n if (!done) {\n left = Math.max(rowMarkerOffset, left - 1);\n scrollTo(left - rowMarkerOffset, 0, \"horizontal\");\n }\n } else {\n assertNever(x);\n }\n }\n }\n setCurrent(\n {\n cell: gridSelection.current.cell,\n range: {\n x: left,\n y: top,\n width: right - left,\n height: bottom - top\n }\n },\n true,\n false,\n \"keyboard-select\"\n );\n },\n [getCellsForSelection, gridSelection, mangledCols.length, rowMarkerOffset, rows, scrollTo, setCurrent]\n );\n const updateSelectedCell = React35.useCallback(\n (col, row, fromEditingTrailingRow, freeMove) => {\n const rowMax = mangledRows - (fromEditingTrailingRow ? 0 : 1);\n col = clamp5(col, rowMarkerOffset, columns.length - 1 + rowMarkerOffset);\n row = clamp5(row, 0, rowMax);\n if (col === (currentCell == null ? void 0 : currentCell[0]) && row === (currentCell == null ? void 0 : currentCell[1]))\n return false;\n if (freeMove && gridSelection.current !== void 0) {\n const newStack = [...gridSelection.current.rangeStack];\n if (gridSelection.current.range.width > 1 || gridSelection.current.range.height > 1) {\n newStack.push(gridSelection.current.range);\n }\n setGridSelection(\n {\n ...gridSelection,\n current: {\n cell: [col, row],\n range: { x: col, y: row, width: 1, height: 1 },\n rangeStack: newStack\n }\n },\n true\n );\n } else {\n setCurrent(\n {\n cell: [col, row],\n range: { x: col, y: row, width: 1, height: 1 }\n },\n true,\n false,\n \"keyboard-nav\"\n );\n }\n if (lastSent.current !== void 0 && lastSent.current[0] === col && lastSent.current[1] === row) {\n lastSent.current = void 0;\n }\n scrollTo(col - rowMarkerOffset, row);\n return true;\n },\n [\n mangledRows,\n rowMarkerOffset,\n columns.length,\n currentCell,\n gridSelection,\n scrollTo,\n setGridSelection,\n setCurrent\n ]\n );\n const onFinishEditing = React35.useCallback(\n (newValue, movement) => {\n if ((overlay == null ? void 0 : overlay.cell) !== void 0 && newValue !== void 0 && isEditableGridCell(newValue)) {\n mangledOnCellsEdited([{ location: overlay.cell, value: newValue }]);\n window.requestAnimationFrame(() => {\n var _a2;\n (_a2 = gridRef.current) == null ? void 0 : _a2.damage([\n {\n cell: overlay.cell\n }\n ]);\n });\n }\n focus(true);\n setOverlay(void 0);\n const [movX, movY] = movement;\n if (gridSelection.current !== void 0 && (movX !== 0 || movY !== 0)) {\n const isEditingTrailingRow = gridSelection.current.cell[1] === mangledRows - 1 && newValue !== void 0;\n updateSelectedCell(\n clamp5(gridSelection.current.cell[0] + movX, 0, mangledCols.length - 1),\n clamp5(gridSelection.current.cell[1] + movY, 0, mangledRows - 1),\n isEditingTrailingRow,\n false\n );\n }\n onFinishedEditing == null ? void 0 : onFinishedEditing(newValue, movement);\n },\n [\n overlay == null ? void 0 : overlay.cell,\n focus,\n gridSelection,\n onFinishedEditing,\n mangledOnCellsEdited,\n mangledRows,\n updateSelectedCell,\n mangledCols.length\n ]\n );\n const overlayID = React35.useMemo(() => {\n return `gdg-overlay-${idCounter++}`;\n }, []);\n const deleteRange = React35.useCallback(\n (r) => {\n var _a2, _b2, _c2, _d2;\n focus();\n const editList = [];\n for (let x = r.x; x < r.x + r.width; x++) {\n for (let y = r.y; y < r.y + r.height; y++) {\n const cellValue = getCellContent([x - rowMarkerOffset, y]);\n if (!cellValue.allowOverlay && cellValue.kind !== GridCellKind.Boolean)\n continue;\n let newVal = void 0;\n if (cellValue.kind === GridCellKind.Custom) {\n const toDelete = getCellRenderer(cellValue);\n const editor = (_a2 = toDelete == null ? void 0 : toDelete.provideEditor) == null ? void 0 : _a2.call(toDelete, cellValue);\n if ((toDelete == null ? void 0 : toDelete.onDelete) !== void 0) {\n newVal = toDelete.onDelete(cellValue);\n } else if (isObjectEditorCallbackResult(editor)) {\n newVal = (_b2 = editor == null ? void 0 : editor.deletedValue) == null ? void 0 : _b2.call(editor, cellValue);\n }\n } else if (isEditableGridCell(cellValue) && cellValue.allowOverlay || cellValue.kind === GridCellKind.Boolean) {\n const toDelete = getCellRenderer(cellValue);\n newVal = (_c2 = toDelete == null ? void 0 : toDelete.onDelete) == null ? void 0 : _c2.call(toDelete, cellValue);\n }\n if (newVal !== void 0 && !isInnerOnlyCell(newVal) && isEditableGridCell(newVal)) {\n editList.push({ location: [x, y], value: newVal });\n }\n }\n }\n mangledOnCellsEdited(editList);\n (_d2 = gridRef.current) == null ? void 0 : _d2.damage(editList.map((x) => ({ cell: x.location })));\n },\n [focus, getCellContent, getCellRenderer, mangledOnCellsEdited, rowMarkerOffset]\n );\n const onKeyDown = React35.useCallback(\n (event) => {\n const fn = async () => {\n var _a2, _b2, _c2, _d2, _e2;\n let cancelled = false;\n if (onKeyDownIn !== void 0) {\n onKeyDownIn({\n ...event,\n cancel: () => {\n cancelled = true;\n }\n });\n }\n if (cancelled)\n return;\n const cancel = () => {\n event.stopPropagation();\n event.preventDefault();\n };\n const overlayOpen = overlay !== void 0;\n const { altKey, shiftKey, metaKey, ctrlKey, key, bounds } = event;\n const isOSX = browserIsOSX.value;\n const isPrimaryKey = isOSX ? metaKey : ctrlKey;\n const isDeleteKey = key === \"Delete\" || isOSX && key === \"Backspace\";\n const vr = visibleRegionRef.current;\n const selectedColumns = gridSelection.columns;\n const selectedRows = gridSelection.rows;\n if (key === \"Escape\") {\n if (overlayOpen) {\n setOverlay(void 0);\n } else if (keybindings.clear) {\n setGridSelection(emptyGridSelection, false);\n onSelectionCleared == null ? void 0 : onSelectionCleared();\n }\n return;\n } else if (isHotkey(\"primary+a\", event) && keybindings.selectAll) {\n if (!overlayOpen) {\n setGridSelection(\n {\n columns: CompactSelection.empty(),\n rows: CompactSelection.empty(),\n current: {\n cell: (_b2 = (_a2 = gridSelection.current) == null ? void 0 : _a2.cell) != null ? _b2 : [rowMarkerOffset, 0],\n range: {\n x: rowMarkerOffset,\n y: 0,\n width: columnsIn.length,\n height: rows\n },\n rangeStack: []\n }\n },\n false\n );\n } else {\n const el = document.getElementById(overlayID);\n if (el !== null) {\n const s = window.getSelection();\n const r = document.createRange();\n r.selectNodeContents(el);\n s == null ? void 0 : s.removeAllRanges();\n s == null ? void 0 : s.addRange(r);\n }\n }\n cancel();\n return;\n } else if (isHotkey(\"primary+f\", event) && keybindings.search) {\n cancel();\n (_c2 = searchInputRef == null ? void 0 : searchInputRef.current) == null ? void 0 : _c2.focus({ preventScroll: true });\n setShowSearchInner(true);\n }\n if (isDeleteKey) {\n const callbackResult = (_d2 = onDelete == null ? void 0 : onDelete(gridSelection)) != null ? _d2 : true;\n cancel();\n if (callbackResult !== false) {\n const toDelete = callbackResult === true ? gridSelection : callbackResult;\n if (toDelete.current !== void 0) {\n deleteRange(toDelete.current.range);\n for (const r of toDelete.current.rangeStack) {\n deleteRange(r);\n }\n }\n for (const r of toDelete.rows) {\n deleteRange({\n x: rowMarkerOffset,\n y: r,\n width: mangledCols.length - rowMarkerOffset,\n height: 1\n });\n }\n for (const col2 of toDelete.columns) {\n deleteRange({\n x: col2,\n y: 0,\n width: 1,\n height: rows\n });\n }\n }\n return;\n }\n if (gridSelection.current === void 0)\n return;\n let [col, row] = gridSelection.current.cell;\n let freeMove = false;\n if (keybindings.selectColumn && isHotkey(\"ctrl+ \", event) && columnSelect !== \"none\") {\n if (selectedColumns.hasIndex(col)) {\n setSelectedColumns(selectedColumns.remove(col), void 0, true);\n } else {\n if (columnSelect === \"single\") {\n setSelectedColumns(CompactSelection.fromSingleSelection(col), void 0, true);\n } else {\n setSelectedColumns(void 0, col, true);\n }\n }\n } else if (keybindings.selectRow && isHotkey(\"shift+ \", event) && rowSelect !== \"none\") {\n if (selectedRows.hasIndex(row)) {\n setSelectedRows(selectedRows.remove(row), void 0, true);\n } else {\n if (rowSelect === \"single\") {\n setSelectedRows(CompactSelection.fromSingleSelection(row), void 0, true);\n } else {\n setSelectedRows(void 0, row, true);\n }\n }\n } else if ((isHotkey(\"Enter\", event) || isHotkey(\" \", event) || isHotkey(\"shift+Enter\", event)) && bounds !== void 0) {\n if (overlayOpen) {\n setOverlay(void 0);\n if (isHotkey(\"Enter\", event)) {\n row++;\n } else if (isHotkey(\"shift+Enter\", event)) {\n row--;\n }\n } else if (row === rows && showTrailingBlankRow) {\n window.setTimeout(() => {\n const customTargetColumn = getCustomNewRowTargetColumn(col);\n void appendRow(customTargetColumn != null ? customTargetColumn : col);\n }, 0);\n } else {\n onCellActivated == null ? void 0 : onCellActivated([col - rowMarkerOffset, row]);\n reselect(bounds, true);\n cancel();\n }\n } else if (keybindings.downFill && isHotkey(\"primary+_68\", event) && gridSelection.current.range.height > 1) {\n fillDown(false);\n cancel();\n } else if (keybindings.rightFill && isHotkey(\"primary+_82\", event) && gridSelection.current.range.width > 1) {\n const editList = [];\n const r = gridSelection.current.range;\n for (let y = 0; y < r.height; y++) {\n const fillRow = y + r.y;\n const fillVal = getMangledCellContent([r.x, fillRow]);\n if (isInnerOnlyCell(fillVal) || !isReadWriteCell(fillVal))\n continue;\n for (let x = 1; x < r.width; x++) {\n const fillCol = x + r.x;\n const target = [fillCol, fillRow];\n editList.push({\n location: target,\n value: { ...fillVal }\n });\n }\n }\n mangledOnCellsEdited(editList);\n (_e2 = gridRef.current) == null ? void 0 : _e2.damage(\n editList.map((c) => ({\n cell: c.location\n }))\n );\n cancel();\n } else if (keybindings.pageDown && isHotkey(\"PageDown\", event)) {\n row += Math.max(1, visibleRegionRef.current.height - 4);\n cancel();\n } else if (keybindings.pageUp && isHotkey(\"PageUp\", event)) {\n row -= Math.max(1, visibleRegionRef.current.height - 4);\n cancel();\n } else if (keybindings.first && isHotkey(\"primary+Home\", event)) {\n setOverlay(void 0);\n row = 0;\n col = 0;\n } else if (keybindings.last && isHotkey(\"primary+End\", event)) {\n setOverlay(void 0);\n row = Number.MAX_SAFE_INTEGER;\n col = Number.MAX_SAFE_INTEGER;\n } else if (keybindings.first && isHotkey(\"primary+shift+Home\", event)) {\n setOverlay(void 0);\n adjustSelection([-2, -2]);\n } else if (keybindings.last && isHotkey(\"primary+shift+End\", event)) {\n setOverlay(void 0);\n adjustSelection([2, 2]);\n } else if (key === \"ArrowDown\") {\n if (ctrlKey && altKey) {\n return;\n }\n setOverlay(void 0);\n if (shiftKey && (rangeSelect === \"rect\" || rangeSelect === \"multi-rect\")) {\n adjustSelection([0, isPrimaryKey && !altKey ? 2 : 1]);\n } else {\n if (altKey && !isPrimaryKey) {\n freeMove = true;\n }\n if (isPrimaryKey && !altKey) {\n row = rows - 1;\n } else {\n row += 1;\n }\n }\n } else if (key === \"ArrowUp\" || key === \"Home\") {\n const asPrimary = key === \"Home\" || isPrimaryKey;\n setOverlay(void 0);\n if (shiftKey && (rangeSelect === \"rect\" || rangeSelect === \"multi-rect\")) {\n adjustSelection([0, asPrimary && !altKey ? -2 : -1]);\n } else {\n if (altKey && !asPrimary) {\n freeMove = true;\n }\n row += asPrimary && !altKey ? Number.MIN_SAFE_INTEGER : -1;\n }\n } else if (key === \"ArrowRight\" || key === \"End\") {\n const asPrimary = key === \"End\" || isPrimaryKey;\n setOverlay(void 0);\n if (shiftKey && (rangeSelect === \"rect\" || rangeSelect === \"multi-rect\")) {\n adjustSelection([asPrimary && !altKey ? 2 : 1, 0]);\n } else {\n if (altKey && !asPrimary) {\n freeMove = true;\n }\n col += asPrimary && !altKey ? Number.MAX_SAFE_INTEGER : 1;\n }\n } else if (key === \"ArrowLeft\") {\n setOverlay(void 0);\n if (shiftKey && (rangeSelect === \"rect\" || rangeSelect === \"multi-rect\")) {\n adjustSelection([isPrimaryKey && !altKey ? -2 : -1, 0]);\n } else {\n if (altKey && !isPrimaryKey) {\n freeMove = true;\n }\n col += isPrimaryKey && !altKey ? Number.MIN_SAFE_INTEGER : -1;\n }\n } else if (key === \"Tab\") {\n setOverlay(void 0);\n if (shiftKey) {\n col--;\n } else {\n col++;\n }\n } else if (!metaKey && !ctrlKey && gridSelection.current !== void 0 && key.length === 1 && /[ -~]/g.test(key) && bounds !== void 0 && isReadWriteCell(getCellContent([col - rowMarkerOffset, Math.max(0, Math.min(row, rows - 1))]))) {\n if ((!lastRowSticky || row !== rows) && (vr.y > row || row > vr.y + vr.height || vr.x > col || col > vr.x + vr.width)) {\n return;\n }\n reselect(bounds, true, key);\n cancel();\n }\n const moved = updateSelectedCell(col, row, false, freeMove);\n if (moved) {\n cancel();\n }\n };\n void fn();\n },\n [\n onKeyDownIn,\n deleteRange,\n overlay,\n gridSelection,\n keybindings.selectAll,\n keybindings.search,\n keybindings.selectColumn,\n keybindings.selectRow,\n keybindings.downFill,\n keybindings.rightFill,\n keybindings.pageDown,\n keybindings.pageUp,\n keybindings.first,\n keybindings.last,\n keybindings.clear,\n columnSelect,\n rowSelect,\n getCellContent,\n rowMarkerOffset,\n updateSelectedCell,\n setGridSelection,\n onSelectionCleared,\n columnsIn.length,\n rows,\n overlayID,\n mangledOnCellsEdited,\n onDelete,\n mangledCols.length,\n setSelectedColumns,\n setSelectedRows,\n showTrailingBlankRow,\n getCustomNewRowTargetColumn,\n appendRow,\n onCellActivated,\n reselect,\n fillDown,\n getMangledCellContent,\n adjustSelection,\n rangeSelect,\n lastRowSticky\n ]\n );\n const onContextMenu = React35.useCallback(\n (args, preventDefault) => {\n const adjustedCol = args.location[0] - rowMarkerOffset;\n if (args.kind === \"header\") {\n onHeaderContextMenu == null ? void 0 : onHeaderContextMenu(adjustedCol, { ...args, preventDefault });\n }\n if (args.kind === groupHeaderKind) {\n if (adjustedCol < 0) {\n return;\n }\n onGroupHeaderContextMenu == null ? void 0 : onGroupHeaderContextMenu(adjustedCol, { ...args, preventDefault });\n }\n if (args.kind === \"cell\") {\n const [col, row] = args.location;\n onCellContextMenu == null ? void 0 : onCellContextMenu([adjustedCol, row], {\n ...args,\n preventDefault\n });\n if (!gridSelectionHasItem(gridSelection, args.location)) {\n updateSelectedCell(col, row, false, false);\n }\n }\n },\n [\n gridSelection,\n onCellContextMenu,\n onGroupHeaderContextMenu,\n onHeaderContextMenu,\n rowMarkerOffset,\n updateSelectedCell\n ]\n );\n const onPasteInternal = React35.useCallback(\n async (e) => {\n var _a2, _b2, _c2, _d2, _e2, _f, _g;\n if (!keybindings.paste)\n return;\n function pasteToCell(inner, target2, rawValue, formatted) {\n var _a3, _b3, _c3, _d3;\n const stringifiedRawValue = typeof rawValue === \"object\" ? (_a3 = rawValue == null ? void 0 : rawValue.join(\"\\n\")) != null ? _a3 : \"\" : (_b3 = rawValue == null ? void 0 : rawValue.toString()) != null ? _b3 : \"\";\n if (!isInnerOnlyCell(inner) && isReadWriteCell(inner) && inner.readonly !== true) {\n const coerced = coercePasteValue == null ? void 0 : coercePasteValue(stringifiedRawValue, inner);\n if (coerced !== void 0 && isEditableGridCell(coerced)) {\n if (coerced.kind !== inner.kind) {\n console.warn(\"Coercion should not change cell kind.\");\n }\n return {\n location: target2,\n value: coerced\n };\n }\n const r = getCellRenderer(inner);\n if (r === void 0)\n return void 0;\n if (r.kind === GridCellKind.Custom) {\n assert(inner.kind === GridCellKind.Custom);\n const newVal = (_c3 = r.onPaste) == null ? void 0 : _c3.call(\n r,\n stringifiedRawValue,\n inner.data\n );\n if (newVal === void 0)\n return void 0;\n return {\n location: target2,\n value: {\n ...inner,\n data: newVal\n }\n };\n } else {\n const newVal = (_d3 = r.onPaste) == null ? void 0 : _d3.call(r, stringifiedRawValue, inner, {\n formatted,\n formattedString: typeof formatted === \"string\" ? formatted : formatted == null ? void 0 : formatted.join(\"\\n\"),\n rawValue\n });\n if (newVal === void 0)\n return void 0;\n assert(newVal.kind === inner.kind);\n return {\n location: target2,\n value: newVal\n };\n }\n }\n return void 0;\n }\n const selectedColumns = gridSelection.columns;\n const selectedRows = gridSelection.rows;\n const focused = ((_a2 = scrollRef.current) == null ? void 0 : _a2.contains(document.activeElement)) === true || ((_b2 = canvasRef.current) == null ? void 0 : _b2.contains(document.activeElement)) === true;\n let target = (_c2 = gridSelection.current) == null ? void 0 : _c2.cell;\n if (target === void 0 && selectedColumns.length === 1) {\n target = [(_d2 = selectedColumns.first()) != null ? _d2 : 0, 0];\n }\n if (target === void 0 && selectedRows.length === 1) {\n target = [rowMarkerOffset, (_e2 = selectedRows.first()) != null ? _e2 : 0];\n }\n if (focused && target !== void 0) {\n let data;\n let text;\n const textPlain = \"text/plain\";\n const textHtml = \"text/html\";\n if (navigator.clipboard.read !== void 0) {\n const clipboardContent = await navigator.clipboard.read();\n for (const item of clipboardContent) {\n if (item.types.includes(textHtml)) {\n const htmlBlob = await item.getType(textHtml);\n const html = await htmlBlob.text();\n const decoded = decodeHTML(html);\n if (decoded !== void 0) {\n data = decoded;\n break;\n }\n }\n if (item.types.includes(textPlain)) {\n text = await (await item.getType(textPlain)).text();\n }\n }\n } else if (navigator.clipboard.readText !== void 0) {\n text = await navigator.clipboard.readText();\n } else if (e !== void 0 && (e == null ? void 0 : e.clipboardData) !== null) {\n if (e.clipboardData.types.includes(textHtml)) {\n const html = e.clipboardData.getData(textHtml);\n data = decodeHTML(html);\n }\n if (data === void 0 && e.clipboardData.types.includes(textPlain)) {\n text = e.clipboardData.getData(textPlain);\n }\n } else {\n return;\n }\n const [gridCol, gridRow] = target;\n const editList = [];\n do {\n if (onPaste === void 0) {\n const cellData = getMangledCellContent(target);\n const rawValue = (_f = text != null ? text : data == null ? void 0 : data.map((r) => r.map((cb) => cb.rawValue).join(\"\t\")).join(\"\t\")) != null ? _f : \"\";\n const newVal = pasteToCell(cellData, target, rawValue, void 0);\n if (newVal !== void 0) {\n editList.push(newVal);\n }\n break;\n }\n if (data === void 0) {\n if (text === void 0)\n return;\n data = unquote(text);\n }\n if (onPaste === false || typeof onPaste === \"function\" && (onPaste == null ? void 0 : onPaste(\n [target[0] - rowMarkerOffset, target[1]],\n data.map((r) => r.map((cb) => {\n var _a3, _b3;\n return (_b3 = (_a3 = cb.rawValue) == null ? void 0 : _a3.toString()) != null ? _b3 : \"\";\n }))\n )) !== true) {\n return;\n }\n for (const [row, dataRow] of data.entries()) {\n if (row + gridRow >= rows)\n break;\n for (const [col, dataItem] of dataRow.entries()) {\n const index = [col + gridCol, row + gridRow];\n const [writeCol, writeRow] = index;\n if (writeCol >= mangledCols.length)\n continue;\n if (writeRow >= mangledRows)\n continue;\n const cellData = getMangledCellContent(index);\n const newVal = pasteToCell(cellData, index, dataItem.rawValue, dataItem.formatted);\n if (newVal !== void 0) {\n editList.push(newVal);\n }\n }\n }\n } while (false);\n mangledOnCellsEdited(editList);\n (_g = gridRef.current) == null ? void 0 : _g.damage(\n editList.map((c) => ({\n cell: c.location\n }))\n );\n }\n },\n [\n coercePasteValue,\n getCellRenderer,\n getMangledCellContent,\n gridSelection,\n keybindings.paste,\n mangledCols.length,\n mangledOnCellsEdited,\n mangledRows,\n onPaste,\n rowMarkerOffset,\n rows\n ]\n );\n useEventListener(\"paste\", onPasteInternal, window, false, true);\n const onCopy = React35.useCallback(\n async (e, ignoreFocus) => {\n var _a2, _b2;\n if (!keybindings.copy)\n return;\n const focused = ignoreFocus === true || ((_a2 = scrollRef.current) == null ? void 0 : _a2.contains(document.activeElement)) === true || ((_b2 = canvasRef.current) == null ? void 0 : _b2.contains(document.activeElement)) === true;\n const selectedColumns = gridSelection.columns;\n const selectedRows = gridSelection.rows;\n const copyToClipboardWithHeaders = (cells, columnIndexes) => {\n if (!copyHeaders) {\n copyToClipboard(cells, columnIndexes, e);\n } else {\n const headers = columnIndexes.map((index) => ({\n kind: GridCellKind.Text,\n data: columnsIn[index].title,\n displayData: columnsIn[index].title,\n allowOverlay: false\n }));\n copyToClipboard([headers, ...cells], columnIndexes, e);\n }\n };\n if (focused && getCellsForSelection !== void 0) {\n if (gridSelection.current !== void 0) {\n let thunk = getCellsForSelection(gridSelection.current.range, abortControllerRef.current.signal);\n if (typeof thunk !== \"object\") {\n thunk = await thunk();\n }\n copyToClipboardWithHeaders(\n thunk,\n range(\n gridSelection.current.range.x - rowMarkerOffset,\n gridSelection.current.range.x + gridSelection.current.range.width - rowMarkerOffset\n )\n );\n } else if (selectedRows !== void 0 && selectedRows.length > 0) {\n const toCopy = [...selectedRows];\n const cells = toCopy.map((rowIndex) => {\n const thunk = getCellsForSelection(\n {\n x: rowMarkerOffset,\n y: rowIndex,\n width: columnsIn.length,\n height: 1\n },\n abortControllerRef.current.signal\n );\n if (typeof thunk === \"object\") {\n return thunk[0];\n }\n return thunk().then((v) => v[0]);\n });\n if (cells.some((x) => x instanceof Promise)) {\n const settled = await Promise.all(cells);\n copyToClipboardWithHeaders(settled, range(columnsIn.length));\n } else {\n copyToClipboardWithHeaders(cells, range(columnsIn.length));\n }\n } else if (selectedColumns.length > 0) {\n const results = [];\n const cols = [];\n for (const col of selectedColumns) {\n let thunk = getCellsForSelection(\n {\n x: col,\n y: 0,\n width: 1,\n height: rows\n },\n abortControllerRef.current.signal\n );\n if (typeof thunk !== \"object\") {\n thunk = await thunk();\n }\n results.push(thunk);\n cols.push(col - rowMarkerOffset);\n }\n if (results.length === 1) {\n copyToClipboardWithHeaders(results[0], cols);\n } else {\n const toCopy = results.reduce((pv, cv) => pv.map((row, index) => [...row, ...cv[index]]));\n copyToClipboardWithHeaders(toCopy, cols);\n }\n }\n }\n },\n [columnsIn, getCellsForSelection, gridSelection, keybindings.copy, rowMarkerOffset, rows, copyHeaders]\n );\n useEventListener(\"copy\", onCopy, window, false, false);\n const onCut = React35.useCallback(\n async (e) => {\n var _a2, _b2;\n if (!keybindings.cut)\n return;\n const focused = ((_a2 = scrollRef.current) == null ? void 0 : _a2.contains(document.activeElement)) === true || ((_b2 = canvasRef.current) == null ? void 0 : _b2.contains(document.activeElement)) === true;\n if (!focused)\n return;\n await onCopy(e);\n if (gridSelection.current !== void 0) {\n deleteRange(gridSelection.current.range);\n }\n },\n [deleteRange, gridSelection, keybindings.cut, onCopy]\n );\n useEventListener(\"cut\", onCut, window, false, false);\n const onSearchResultsChanged = React35.useCallback(\n (results, navIndex) => {\n if (onSearchResultsChangedIn !== void 0) {\n if (rowMarkerOffset !== 0) {\n results = results.map((item) => [item[0] - rowMarkerOffset, item[1]]);\n }\n onSearchResultsChangedIn(results, navIndex);\n return;\n }\n if (results.length === 0 || navIndex === -1)\n return;\n const [col, row] = results[navIndex];\n if (lastSent.current !== void 0 && lastSent.current[0] === col && lastSent.current[1] === row) {\n return;\n }\n lastSent.current = [col, row];\n updateSelectedCell(col, row, false, false);\n },\n [onSearchResultsChangedIn, rowMarkerOffset, updateSelectedCell]\n );\n const [outCol, outRow] = (_e = (_d = gridSelectionOuter == null ? void 0 : gridSelectionOuter.current) == null ? void 0 : _d.cell) != null ? _e : [];\n const scrollToRef = React35.useRef(scrollTo);\n scrollToRef.current = scrollTo;\n React35.useLayoutEffect(() => {\n var _a2, _b2, _c2, _d2;\n if (!hasJustScrolled.current && outCol !== void 0 && outRow !== void 0 && (outCol !== ((_b2 = (_a2 = expectedExternalGridSelection.current) == null ? void 0 : _a2.current) == null ? void 0 : _b2.cell[0]) || outRow !== ((_d2 = (_c2 = expectedExternalGridSelection.current) == null ? void 0 : _c2.current) == null ? void 0 : _d2.cell[1]))) {\n scrollToRef.current(outCol, outRow);\n }\n hasJustScrolled.current = false;\n }, [outCol, outRow]);\n const selectionOutOfBounds = gridSelection.current !== void 0 && (gridSelection.current.cell[0] >= mangledCols.length || gridSelection.current.cell[1] >= mangledRows);\n React35.useLayoutEffect(() => {\n if (selectionOutOfBounds) {\n setGridSelection(emptyGridSelection, false);\n }\n }, [selectionOutOfBounds, setGridSelection]);\n const disabledRows = React35.useMemo(() => {\n if (showTrailingBlankRow === true && (trailingRowOptions == null ? void 0 : trailingRowOptions.tint) === true) {\n return CompactSelection.fromSingleSelection(mangledRows - 1);\n }\n return CompactSelection.empty();\n }, [mangledRows, showTrailingBlankRow, trailingRowOptions == null ? void 0 : trailingRowOptions.tint]);\n const mangledVerticalBorder = React35.useCallback(\n (col) => {\n var _a2;\n return typeof verticalBorder === \"boolean\" ? verticalBorder : (_a2 = verticalBorder == null ? void 0 : verticalBorder(col - rowMarkerOffset)) != null ? _a2 : true;\n },\n [rowMarkerOffset, verticalBorder]\n );\n const renameGroupNode = React35.useMemo(() => {\n if (renameGroup === void 0 || canvasRef.current === null)\n return null;\n const { bounds, group } = renameGroup;\n const canvasBounds = canvasRef.current.getBoundingClientRect();\n return /* @__PURE__ */ React35.createElement(\n GroupRename,\n {\n bounds,\n group,\n canvasBounds,\n onClose: () => setRenameGroup(void 0),\n onFinish: (newVal) => {\n setRenameGroup(void 0);\n onGroupHeaderRenamed == null ? void 0 : onGroupHeaderRenamed(group, newVal);\n }\n }\n );\n }, [onGroupHeaderRenamed, renameGroup]);\n const mangledFreezeColumns = Math.min(mangledCols.length, freezeColumns + (hasRowMarkers ? 1 : 0));\n React35.useImperativeHandle(\n forwardedRef,\n () => ({\n appendRow: (col, openOverlay) => appendRow(col + rowMarkerOffset, openOverlay),\n updateCells: (damageList) => {\n var _a2;\n if (rowMarkerOffset !== 0) {\n damageList = damageList.map((x) => ({ cell: [x.cell[0] + rowMarkerOffset, x.cell[1]] }));\n }\n return (_a2 = gridRef.current) == null ? void 0 : _a2.damage(damageList);\n },\n getBounds: (col, row) => {\n var _a2;\n if ((canvasRef == null ? void 0 : canvasRef.current) === null || (scrollRef == null ? void 0 : scrollRef.current) === null) {\n return void 0;\n }\n if (col === void 0 && row === void 0) {\n const rect = canvasRef.current.getBoundingClientRect();\n const scale = rect.width / scrollRef.current.clientWidth;\n return {\n x: rect.x - scrollRef.current.scrollLeft * scale,\n y: rect.y - scrollRef.current.scrollTop * scale,\n width: scrollRef.current.scrollWidth * scale,\n height: scrollRef.current.scrollHeight * scale\n };\n }\n return (_a2 = gridRef.current) == null ? void 0 : _a2.getBounds(col != null ? col : 0 + rowMarkerOffset, row);\n },\n focus: () => {\n var _a2;\n return (_a2 = gridRef.current) == null ? void 0 : _a2.focus();\n },\n emit: async (e) => {\n switch (e) {\n case \"delete\":\n onKeyDown({\n bounds: void 0,\n cancel: () => void 0,\n stopPropagation: () => void 0,\n preventDefault: () => void 0,\n ctrlKey: false,\n key: \"Delete\",\n keyCode: 46,\n metaKey: false,\n shiftKey: false,\n altKey: false,\n rawEvent: void 0,\n location: void 0\n });\n break;\n case \"fill-right\":\n onKeyDown({\n bounds: void 0,\n cancel: () => void 0,\n stopPropagation: () => void 0,\n preventDefault: () => void 0,\n ctrlKey: true,\n key: \"r\",\n keyCode: 82,\n metaKey: false,\n shiftKey: false,\n altKey: false,\n rawEvent: void 0,\n location: void 0\n });\n break;\n case \"fill-down\":\n onKeyDown({\n bounds: void 0,\n cancel: () => void 0,\n stopPropagation: () => void 0,\n preventDefault: () => void 0,\n ctrlKey: true,\n key: \"d\",\n keyCode: 68,\n metaKey: false,\n shiftKey: false,\n altKey: false,\n rawEvent: void 0,\n location: void 0\n });\n break;\n case \"copy\":\n await onCopy(void 0, true);\n break;\n case \"paste\":\n await onPasteInternal();\n break;\n }\n },\n scrollTo,\n remeasureColumns: (cols) => {\n for (const col of cols) {\n void normalSizeColumn(col + rowMarkerOffset, true);\n }\n }\n }),\n [appendRow, normalSizeColumn, onCopy, onKeyDown, onPasteInternal, rowMarkerOffset, scrollTo]\n );\n const [selCol, selRow] = currentCell != null ? currentCell : [];\n const onCellFocused = React35.useCallback(\n (cell) => {\n const [col, row] = cell;\n if (row === -1) {\n if (columnSelect !== \"none\") {\n setSelectedColumns(CompactSelection.fromSingleSelection(col), void 0, false);\n focus();\n }\n return;\n }\n if (selCol === col && selRow === row)\n return;\n setCurrent(\n {\n cell,\n range: { x: col, y: row, width: 1, height: 1 }\n },\n true,\n false,\n \"keyboard-nav\"\n );\n scrollTo(col, row);\n },\n [columnSelect, focus, scrollTo, selCol, selRow, setCurrent, setSelectedColumns]\n );\n const [isFocused, setIsFocused] = React35.useState(false);\n const setIsFocusedDebounced = React35.useRef(\n debounce2((val) => {\n setIsFocused(val);\n }, 5)\n );\n const onCanvasFocused = React35.useCallback(() => {\n setIsFocusedDebounced.current(true);\n if (gridSelection.current === void 0 && gridSelection.columns.length === 0 && gridSelection.rows.length === 0 && mouseState === void 0) {\n setCurrent(\n {\n cell: [rowMarkerOffset, cellYOffset],\n range: {\n x: rowMarkerOffset,\n y: cellYOffset,\n width: 1,\n height: 1\n }\n },\n true,\n false,\n \"keyboard-select\"\n );\n }\n }, [cellYOffset, gridSelection, mouseState, rowMarkerOffset, setCurrent]);\n const onFocusOut = React35.useCallback(() => {\n setIsFocusedDebounced.current(false);\n }, []);\n const [idealWidth, idealHeight] = React35.useMemo(() => {\n var _a2;\n let h;\n const scrollbarWidth = (_a2 = experimental == null ? void 0 : experimental.scrollbarWidthOverride) != null ? _a2 : getScrollBarWidth();\n const rowsCountWithTrailingRow = rows + (showTrailingBlankRow ? 1 : 0);\n if (typeof rowHeight === \"number\") {\n h = totalHeaderHeight + rowsCountWithTrailingRow * rowHeight;\n } else {\n let avg = 0;\n const toAverage = Math.min(rowsCountWithTrailingRow, 10);\n for (let i = 0; i < toAverage; i++) {\n avg += rowHeight(i);\n }\n avg = Math.floor(avg / toAverage);\n h = totalHeaderHeight + rowsCountWithTrailingRow * avg;\n }\n h += scrollbarWidth;\n const w = mangledCols.reduce((acc, x) => x.width + acc, 0) + scrollbarWidth;\n return [`${Math.min(1e5, w)}px`, `${Math.min(1e5, h)}px`];\n }, [mangledCols, experimental == null ? void 0 : experimental.scrollbarWidthOverride, rowHeight, rows, showTrailingBlankRow, totalHeaderHeight]);\n return /* @__PURE__ */ React35.createElement(ThemeContext.Provider, { value: mergedTheme }, /* @__PURE__ */ React35.createElement(\n DataEditorContainer,\n {\n style: makeCSSStyle(mergedTheme),\n className,\n inWidth: width != null ? width : idealWidth,\n inHeight: height != null ? height : idealHeight\n },\n /* @__PURE__ */ React35.createElement(\n data_grid_search_default,\n {\n fillHandle,\n drawFocusRing: drawFocusRing2,\n experimental,\n fixedShadowX,\n fixedShadowY,\n getRowThemeOverride,\n headerIcons,\n imageWindowLoader,\n initialSize,\n isDraggable,\n onDragLeave,\n onRowMoved,\n overscrollX,\n overscrollY,\n preventDiagonalScrolling,\n rightElement,\n rightElementProps,\n showMinimap,\n smoothScrollX,\n smoothScrollY,\n className,\n enableGroups,\n onCanvasFocused,\n onCanvasBlur: onFocusOut,\n canvasRef,\n onContextMenu,\n theme: mergedTheme,\n cellXOffset,\n cellYOffset,\n accessibilityHeight: visibleRegion.height,\n onDragEnd,\n columns: mangledCols,\n drawCustomCell: drawCell2,\n drawHeader: drawHeader2,\n disabledRows,\n freezeColumns: mangledFreezeColumns,\n lockColumns: rowMarkerOffset,\n firstColAccessible: rowMarkerOffset === 0,\n getCellContent: getMangledCellContent,\n minColumnWidth,\n maxColumnWidth,\n searchInputRef,\n showSearch,\n onSearchClose,\n highlightRegions,\n getCellsForSelection,\n getGroupDetails: mangledGetGroupDetails,\n headerHeight,\n isFocused,\n groupHeaderHeight: enableGroups ? groupHeaderHeight : 0,\n trailingRowType: !showTrailingBlankRow ? \"none\" : (trailingRowOptions == null ? void 0 : trailingRowOptions.sticky) === true ? \"sticky\" : \"appended\",\n onColumnResize,\n onColumnResizeEnd,\n onColumnResizeStart,\n onCellFocused,\n onColumnMoved: onColumnMovedImpl,\n onDragStart: onDragStartImpl,\n onHeaderMenuClick: onHeaderMenuClickInner,\n onItemHovered: onItemHoveredImpl,\n isFilling: (mouseState == null ? void 0 : mouseState.fillHandle) === true,\n onMouseMove: onMouseMoveImpl,\n onKeyDown,\n onKeyUp: onKeyUpIn,\n onMouseDown,\n onMouseUp,\n onDragOverCell,\n onDrop,\n onSearchResultsChanged,\n onVisibleRegionChanged: onVisibleRegionChangedImpl,\n clientSize: [clientSize[0], clientSize[1]],\n rowHeight,\n searchResults,\n searchValue,\n onSearchValueChange,\n rows: mangledRows,\n scrollRef,\n selection: gridSelection,\n translateX: visibleRegion.tx,\n translateY: visibleRegion.ty,\n verticalBorder: mangledVerticalBorder,\n gridRef,\n getCellRenderer,\n scrollToEnd\n }\n ),\n renameGroupNode,\n overlay !== void 0 && /* @__PURE__ */ React35.createElement(\n data_grid_overlay_editor_default,\n {\n ...overlay,\n validateCell,\n id: overlayID,\n getCellRenderer,\n className: (experimental == null ? void 0 : experimental.isSubGrid) === true ? \"click-outside-ignore\" : void 0,\n provideEditor,\n imageEditorOverride,\n onFinishEditing,\n markdownDivCreateNode,\n isOutsideClick\n }\n )\n ));\n};\nvar DataEditor = React35.forwardRef(DataEditorImpl);\n\n// src/data-editor/use-custom-cells.ts\nimport * as React36 from \"react\";\nfunction inflate(input) {\n return {\n ...input,\n kind: GridCellKind.Custom\n };\n}\nfunction useCustomCells(cells) {\n return { customRenderers: React36.useMemo(() => cells.map(inflate), [cells]) };\n}\nexport {\n BooleanEmpty,\n BooleanIndeterminate,\n CompactSelection,\n DataEditor,\n GridCellKind,\n GridColumnIcon,\n ImageOverlayEditor,\n InnerGridCellKind,\n MarkdownDiv,\n GrowingEntry as TextCellEntry,\n blend,\n booleanCellIsEditable,\n DataEditor as default,\n drawTextCellExternal as drawTextCell,\n getDataEditorTheme as getDefaultTheme,\n getMiddleCenterBias,\n gridSelectionHasItem,\n groupHeaderKind,\n headerCellCheckboxPrefix,\n headerCellCheckedMarker,\n headerCellIndeterminateMarker,\n headerCellUnheckedMarker,\n headerKind,\n interpolateColors,\n isEditableGridCell,\n isInnerOnlyCell,\n isObjectEditorCallbackResult,\n isReadWriteCell,\n isSizedGridColumn,\n isTextEditableGridCell,\n measureTextCached,\n outOfBoundsKind,\n parseToRgba,\n resolveCellsThunk,\n useColumnSizer,\n useCustomCells,\n useTheme,\n withAlpha\n};\n//# sourceMappingURL=index.js.map\n"],"names":["React2","_CompactSelection","React3","React4","React5","React6","clearCache","splitText","clamp","React7","React8","makeRange","clamp2","clamp3","React9","useRef6","useState6","useLayoutEffect4","React10","React11","clamp4","React12","React13","React14","React15","React16","React17","React18","React19","React20","React21","React22","React23","React24","React25","React26","React27","React28","React29","React30","React31","React32","React33","React34","React35","_","v","debounce2","React36"],"mappings":"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","x_google_ignoreList":[0]}
|