opus-react 0.2.3

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../lib/oil-barrel/barrelFireLayout.ts","../../../lib/oil-barrel/interiorFireTuning.ts","../../../lib/oil-barrel/interiorFireMaterial.ts","../../../lib/oil-barrel/setupFireBarrelScene.ts","../../../components/fields/Button/Button.module.css","../../../components/fields/Button/Button.tsx","../../../components/Tooltip/Tooltip.module.css","../../../components/Tooltip/Tooltip.tsx","../../../components/fields/FieldShell/FieldShell.module.css","../../../components/fields/FieldShell/FieldShell.tsx","../../../components/fields/CheckboxField/CheckboxField.module.css","../../../components/fields/CheckboxField/CheckboxField.tsx","../../../components/fields/ColorField/ColorField.module.css","../../../components/fields/ColorField/ColorField.tsx","../../../components/fields/DateField/DateField.module.css","../../../components/fields/DateField/DateField.tsx","../../../components/fields/HiddenField/HiddenField.module.css","../../../components/fields/HiddenField/HiddenField.tsx","../../../components/fields/FileField/FileField.module.css","../../../components/fields/FileField/FileField.tsx","../../../components/fields/NumberField/NumberField.module.css","../../../components/fields/numericUtils.ts","../../../components/fields/NumberField/NumberField.tsx","../../../components/fields/RadioGroup/RadioGroup.module.css","../../../components/fields/RadioGroup/RadioGroup.tsx","../../../components/fields/ChipInputField/ChipInputField.module.css","../../../components/fields/ChipInputField/ChipInputField.tsx","../../../components/fields/RangeField/RangeField.module.css","../../../components/fields/RangeField/RangeField.tsx","../../../components/fields/SelectField/SelectField.module.css","../../../components/fields/SelectField/SelectField.tsx","../../../components/fields/SwitchField/SwitchField.module.css","../../../components/fields/SwitchField/SwitchField.tsx","../../../components/fields/TextAreaField/TextAreaField.module.css","../../../components/fields/TextAreaField/TextAreaField.tsx","../../../components/fields/TextField/TextField.module.css","../../../components/fields/TextField/TextField.tsx","../../../lib/fontawesome.ts","../../../components/fields/ThemeToggleField/ThemeToggleField.module.css","../../../components/fields/ThemeToggleField/ThemeToggleField.tsx","../../../components/AlertStatusIcon/AlertStatusIcon.tsx","../../../components/OpusThemeProvider/OpusThemeProvider.tsx","../../../components/Alert/Alert.module.css","../../../components/Alert/Alert.tsx","../../../lib/a11y/useOverlayAccessibility.ts","../../../components/Dialog/Dialog.module.css","../../../components/Dialog/Dialog.tsx","../../../components/Modal/Modal.module.css","../../../components/Modal/Modal.tsx","../../../components/Drawer/Drawer.module.css","../../../components/Drawer/Drawer.tsx","../../../components/Popover/Popover.module.css","../../../components/Popover/Popover.tsx","../../../components/TopNavigation/TopNavigationContext.tsx","../../../lib/ui/floatingPortalPosition.ts","../../../components/MegaMenu/MegaMenu.module.css","../../../components/MegaMenu/MegaMenu.tsx","../../../components/TopNavigation/TopNavigation.module.css","../../../components/TopNavigation/TopNavigation.tsx","../../../lib/a11y/menuKeyboardNavigation.ts","../../../components/DropdownMenu/DropdownMenu.module.css","../../../components/DropdownMenu/DropdownMenu.tsx","../../../components/ContextMenu/ContextMenu.module.css","../../../components/ContextMenu/ContextMenuProvider.tsx","../../../components/CommandPalette/CommandPalette.module.css","../../../components/CommandPalette/CommandPalette.tsx","../../../components/AccordionGroup/AccordionGroup.module.css","../../../components/AccordionGroup/AccordionGroup.tsx","../../../components/Accordion/Accordion.module.css","../../../components/Accordion/Accordion.tsx","../../../components/ShowMore/ShowMore.module.css","../../../components/ShowMore/ShowMore.tsx","../../../components/Toast/Toast.module.css","../../../components/Toast/Toast.tsx","../../../components/ToastProvider/ToastProvider.module.css","../../../components/ToastProvider/ToastProvider.tsx","../../../components/Tabs/Tabs.module.css","../../../components/Tabs/Tabs.tsx","../../../components/Card/Card.module.css","../../../components/Card/Card.tsx","../../../components/dashboardMetricCardLayout/dashboardMetricCardLayout.module.css","../../../components/StatCard/StatCard.module.css","../../../components/StatCard/StatCard.tsx","../../../components/Gauge/Gauge.module.css","../../../components/Gauge/Gauge.tsx","../../../components/Sparkline/Sparkline.module.css","../../../components/Sparkline/Sparkline.tsx","../../../components/ProgressRing/ProgressRing.module.css","../../../components/ProgressRing/ProgressRing.tsx","../../../components/ProgressBar/ProgressBar.module.css","../../../components/ProgressBar/ProgressBar.tsx","../../../components/Speedometer/Speedometer.module.css","../../../components/Speedometer/Speedometer.tsx","../../../components/MetricTile/MetricTile.module.css","../../../components/MetricTile/MetricTile.tsx","../../../components/StatusIndicator/StatusIndicator.module.css","../../../components/StatusIndicator/StatusIndicator.tsx","../../../components/TrendBadge/TrendBadge.module.css","../../../components/TrendBadge/TrendBadge.tsx","../../../components/Panel/Panel.module.css","../../../components/Panel/Panel.tsx","../../../lib/layout/sectionLayout.ts","../../../components/Section/Section.module.css","../../../components/Section/Section.tsx","../../../components/Table/Table.module.css","../../../components/Table/Table.tsx","../../../components/DataGrid/DataGrid.module.css","../../../components/DataGrid/DataGrid.tsx","../../../components/Chart/sankeyLayout.ts","../../../lib/controls/chartDemoData.ts","../../../components/Chart/worldMapRegions.ts","../../../components/Chart/circlePackLayout.ts","../../../components/Chart/networkGraphLayout.ts","../../../components/Chart/treemapLayout.ts","../../../components/Chart/SpecializedCharts.tsx","../../../components/Chart/Chart.module.css","../../../components/Chart/Chart.tsx","../../../components/Skeleton/Skeleton.module.css","../../../components/Skeleton/Skeleton.tsx","../../../components/Lightbox/Lightbox.module.css","../../../components/Lightbox/Lightbox.tsx","../../../components/Carousel/Carousel.module.css","../../../components/Carousel/Carousel.tsx","../../../components/ImageThumbnail/ImageThumbnail.module.css","../../../components/ImageThumbnail/ImageThumbnail.tsx","../../../components/ImageGallery/ImageGallery.module.css","../../../components/ImageGallery/ImageGallery.tsx","../../../components/ModelViewer/ModelViewer.module.css","../../../components/ModelViewer/FireBarrelModelViewer.tsx","../../../components/ModelViewer/ModelViewer.tsx","../../../components/ModelLightbox/ModelLightbox.module.css","../../../components/ModelLightbox/ModelLightbox.tsx","../../../components/ModelThumbnail/ModelThumbnail.module.css","../../../components/ModelThumbnail/ModelThumbnail.tsx","../../../components/ModelGallery/ModelGallery.module.css","../../../components/ModelGallery/ModelGallery.tsx","../../../lib/fontAwesomeIconCatalog.ts","../../../components/CatalogIcon/CatalogIcon.tsx","../../../components/EmptyState/EmptyState.module.css","../../../components/EmptyState/EmptyState.tsx","../../../components/Sidebar/Sidebar.module.css","../../../components/Sidebar/Sidebar.tsx","../../../components/AccentColorPicker/AccentColorPicker.module.css","../../../components/AccentColorPicker/AccentColorPicker.tsx","../../../components/IconPicker/IconPicker.module.css","../../../components/IconPicker/IconPicker.tsx"],"names":["THREE","_a","_b","jsx","jsxs","useRef","useState","Fragment","useEffect","createContext","useId","useContext","EXIT_ANIMATION_MS","_c","useCallback","menuId","_d","useMemo","HOVER_CLOSE_DELAY_MS","mergeTrigger","isValidElement","cloneElement","useLayoutEffect","createPortal","itemShowsIconColumn","items","FontAwesomeIcon","ChevronIcon","clampLines","cumulative","_e","_f","config","_g","GridHeaderMenu","maxValue","_","plotSpan","paletteClasses","yForDomain","chartClass","plotWidth","timeout","setupFireBarrelScene","faXmark"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,SAAS,4BAAA,GAA+B;AAC7C,EAAA,MAAM,KAAA,GAAQ,SAAA;AACd,EAAA,MAAM,aAAa,iBAAA,GAAoB,CAAA;AACvC,EAAA,MAAM,cAAc,iBAAA,GAAoB,KAAA;AACxC,EAAA,MAAM,MAAA,GAAS,CAAC,UAAA,GAAa,KAAA,GAAQ,IAAA;AACrC,EAAA,MAAM,UAAU,UAAA,GAAa,KAAA;AAE7B,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,SAAS,2BAA2B,MAAA,EAA4B;AACrE,EAAA,OAAO,MAAA,CAAO,6BAA6B,MAAA,CAAO,mBAAA;AACpD;AAEO,SAAS,wBAAwB,MAAA,EAA4B;AAClE,EAAA,IAAI,WAAW,MAAA,CAAO,sBAAA;AACtB,EAAA,IAAI,WAAW,MAAA,CAAO,mBAAA;AACtB,EAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,IAAI,CAAA;AAClC,EAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,CAAC,CAAA;AAE/B,EAAA,IAAI,QAAA,GAAW,WAAW,IAAA,EAAM;AAC9B,IAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAA,GAAW,IAAI,CAAA;AAAA,EACxC;AAEA,EAAA,OAAO,EAAE,UAAU,QAAA,EAAS;AAC9B;AAEO,SAAS,0BAAA,CACd,WAAA,EACA,MAAA,EACA,IAAA,EACA,MAAA,EACA;AACA,EAAA,MAAM,aAAa,MAAA,CAAO,uBAAA;AAC1B,EAAA,MAAM,cAAc,MAAA,CAAO,wBAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,cAAc,IAAA,GAAO,UAAA;AACtC,EAAA,MAAM,UAAU,MAAA,CAAO,0BAAA;AACvB,EAAA,MAAM,CAAA,GAAI,2BAA2B,MAAM,CAAA;AAE3C,EAAA,MAAM,UAAU,MAAA,GAAS,gBAAA;AACzB,EAAA,MAAM,OAAO,IAAA,GAAO,IAAA;AACpB,EAAA,IAAI,MAAA,GAAA,CAAU,OAAO,OAAA,IAAW,WAAA;AAChC,EAAA,IAAI,KAAA,GAAQ,MAAA,IAAU,GAAA,GAAM,GAAA,CAAA,GAAO,UAAA;AAEnC,EAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,IAAA,KAAA,GAAQ,QAAA;AAAA,EACV;AAEA,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,KAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA,EAAG,OAAA,GAAU,MAAA,GAAS,GAAA,GAAM,OAAA;AAAA,IAC5B,CAAA,EAAG;AAAA,GACL;AACF;AAzFA,IACa,2BAAA,EACA,iBAAA,EACA,iBAAA,EACA,SAAA,EACA,kBACA,wBAAA,EAYA,4BAAA;AAlBb,IAAA,qBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0CAAA,GAAA;AACO,IAAM,2BAAA,GAA8B,IAAA;AACpC,IAAM,oBAAoB,2BAAA,GAA8B,GAAA;AACxD,IAAM,iBAAA,GAAoB,GAAA;AAC1B,IAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,oBAAoB,IAAI,CAAA;AAC1D,IAAM,gBAAA,GAAmB,IAAA;AACzB,IAAM,wBAAA,GAA2B,IAAA;AAYjC,IAAM,4BAAA,GAAmD;AAAA,MAC9D,uBAAA,EAAyB,GAAA;AAAA,MACzB,wBAAA,EAA0B,CAAA;AAAA,MAC1B,0BAAA,EAA4B,MAAA;AAAA,MAC5B,0BAAA,EAA4B,KAAA;AAAA,MAC5B,mBAAA,EAAqB,KAAA;AAAA,MACrB,sBAAA,EAAwB,IAAA;AAAA,MACxB,mBAAA,EAAqB;AAAA,KACvB;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1BA,IAGa,oBAAA,CAAA,CACA,kBAAA,CAAA,CAGA,yBAAA,CAAA,CAEA;AATb,IAAA,uBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4CAAA,GAAA;AAGO,IAAM,oBAAA,GAAuB,IAAA;AAC7B,IAAM,kBAAA,GAAqB,GAAA;AAG3B,IAAM,yBAAA,GACX,qEAAA;AACK,IAAM,yBAAA,GACX,qEAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACGF,SAAS,iBAAiB,GAAA,EAAa;AACrC,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAC5C,EAAA,KAAA,CAAM,GAAA,GAAM,GAAA;AACZ,EAAA,KAAA,CAAM,IAAA,GAAO,IAAA;AACb,EAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AACd,EAAA,KAAA,CAAM,WAAA,GAAc,IAAA;AACpB,EAAA,KAAA,CAAM,YAAA,CAAa,eAAe,EAAE,CAAA;AACpC,EAAA,KAAA,CAAM,OAAA,GAAU,MAAA;AAChB,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,qBAAA,CACP,OAAA,EACA,KAAA,EACA,UAAA,EACA;AACA,EAAA,OAAA,CAAQ,UAAA,GAAa,UAAA;AACrB,EAAA,OAAA,CAAQ,SAAA,GAAkBA,MAAA,CAAA,YAAA;AAC1B,EAAA,OAAA,CAAQ,SAAA,GAAkBA,MAAA,CAAA,YAAA;AAC1B,EAAA,OAAA,CAAQ,eAAA,GAAkB,KAAA;AAC1B,EAAA,OAAA,CAAQ,KAAA,GAAcA,MAAA,CAAA,mBAAA;AACtB,EAAA,OAAA,CAAQ,KAAA,GAAcA,MAAA,CAAA,mBAAA;AACtB,EAAA,KAAK,KAAA,CAAM,IAAA,EAAK,CAAE,KAAA,CAAM,MAAM;AAAA,EAAC,CAAC,CAAA;AAChC,EAAA,OAAO,OAAA;AACT;AAEO,SAAS,0BAAA,CACd,QAAA,EACA,QAAA,EACA,WAAA,EACA,QAAA,EACA;AACA,EAAA,MAAM,EAAE,QAAA,EAAU,QAAA,EAAS,GAAI,wBAAwB,4BAA4B,CAAA;AAEnF,EAAA,OAAO,IAAUA,MAAA,CAAA,cAAA,CAAe;AAAA,IAC9B,QAAA,EAAU;AAAA,MACR,SAAA,EAAW,EAAE,KAAA,EAAO,QAAA,EAAS;AAAA,MAC7B,SAAA,EAAW,EAAE,KAAA,EAAO,QAAA,EAAS;AAAA,MAC7B,UAAA,EAAY,EAAE,KAAA,EAAO,WAAA,GAAc,wBAAA,EAAyB;AAAA,MAC5D,QAAA,EAAU,EAAE,KAAA,EAAO,QAAA,EAAS;AAAA,MAC5B,QAAA,EAAU,EAAE,KAAA,EAAO,QAAA,EAAS;AAAA,MAC5B,QAAA,EAAU,EAAE,KAAA,EAAO,QAAA,EAAS;AAAA,MAC5B,YAAA,EAAc,EAAE,KAAA,EAAO,oBAAA,EAAqB;AAAA,MAC5C,UAAA,EAAY,EAAE,KAAA,EAAO,kBAAA,EAAmB;AAAA,MACxC,mBAAA,EAAqB,EAAE,KAAA,EAAO,IAAUA,gBAAQ;AAAE,KACpD;AAAA,IACA,YAAA,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IASd,cAAA,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IA+BhB,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA,EAAW,IAAA;AAAA,IACX,kBAAA,EAAoB,IAAA;AAAA,IACpB,IAAA,EAAYA,MAAA,CAAA,UAAA;AAAA,IACZ,UAAA,EAAY,KAAA;AAAA,IACZ,MAAA,EAAQ;AAAA,GACT,CAAA;AACH;AAEA,eAAsB,sBAAA,GAAyB;AAC7C,EAAA,MAAM,UAAA,GAAa,iBAAiB,yBAAyB,CAAA;AAC7D,EAAA,MAAM,UAAA,GAAa,iBAAiB,yBAAyB,CAAA;AAE7D,EAAA,MAAM,QAAQ,GAAA,CAAI;AAAA,IAChB,IAAI,OAAA,CAAc,CAAC,OAAA,EAAS,MAAA,KAAW;AACrC,MAAA,UAAA,CAAW,gBAAA,CAAiB,cAAc,MAAM,OAAA,IAAW,EAAE,IAAA,EAAM,MAAM,CAAA;AACzE,MAAA,UAAA,CAAW,gBAAA,CAAiB,SAAS,MAAM,MAAA,CAAO,IAAI,KAAA,CAAM,kCAAkC,CAAC,CAAA,EAAG;AAAA,QAChG,IAAA,EAAM;AAAA,OACP,CAAA;AACD,MAAA,UAAA,CAAW,IAAA,EAAK;AAAA,IAClB,CAAC,CAAA;AAAA,IACD,IAAI,OAAA,CAAc,CAAC,OAAA,EAAS,MAAA,KAAW;AACrC,MAAA,UAAA,CAAW,gBAAA,CAAiB,cAAc,MAAM,OAAA,IAAW,EAAE,IAAA,EAAM,MAAM,CAAA;AACzE,MAAA,UAAA,CAAW,gBAAA,CAAiB,SAAS,MAAM,MAAA,CAAO,IAAI,KAAA,CAAM,kCAAkC,CAAC,CAAA,EAAG;AAAA,QAChG,IAAA,EAAM;AAAA,OACP,CAAA;AACD,MAAA,UAAA,CAAW,IAAA,EAAK;AAAA,IAClB,CAAC;AAAA,GACF,CAAA;AAED,EAAA,MAAM,QAAA,GAAW,qBAAA;AAAA,IACf,IAAUA,oBAAa,UAAU,CAAA;AAAA,IACjC,UAAA;AAAA,IACMA,MAAA,CAAA;AAAA,GACR;AACA,EAAA,MAAM,QAAA,GAAW,qBAAA;AAAA,IACf,IAAUA,oBAAa,UAAU,CAAA;AAAA,IACjC,UAAA;AAAA,IACMA,MAAA,CAAA;AAAA,GACR;AAEA,EAAA,OAAO,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,UAAA,EAAW;AACtD;AAEO,SAAS,sBAAA,CACd,UAAA,EACA,UAAA,EACA,QAAA,EACA,QAAA,EACA;AACA,EAAA,IAAI,KAAK,GAAA,CAAI,UAAA,CAAW,cAAc,UAAA,CAAW,WAAW,IAAI,IAAA,EAAM;AACpE,IAAA,UAAA,CAAW,cAAc,UAAA,CAAW,WAAA;AAAA,EACtC;AAEA,EAAA,IAAI,UAAA,CAAW,cAAc,CAAA,EAAG;AAC9B,IAAA,QAAA,CAAS,WAAA,GAAc,IAAA;AAAA,EACzB;AAEA,EAAA,IAAI,UAAA,CAAW,cAAc,CAAA,EAAG;AAC9B,IAAA,QAAA,CAAS,WAAA,GAAc,IAAA;AAAA,EACzB;AACF;AAEO,SAAS,oBAAA,CACd,IAAA,EACA,MAAA,EACA,MAAA,EACA;AACA,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,QAAA,CAAS,KAAA,EAAM;AAC1C,EAAA,MAAA,CAAO,aAAa,WAAW,CAAA;AAC/B,EAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,YAAY,CAAA,EAAG,WAAA,CAAY,CAAC,CAAA,EAAG,CAAC,CAAA;AAClE;AAEO,SAAS,0BAAA,CACd,MACA,MAAA,EACA;AAhLF,EAAA,IAAAC,GAAAA;AAiLE,EAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,EAAA,MAAM,WAAUA,GAAAA,GAAA,QAAA,CAAS,QAAA,CAAS,mBAAA,KAAlB,gBAAAA,GAAAA,CAAuC,KAAA;AAEvD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA;AAAA,EACF;AAEA,EAAA,MAAA,CAAO,kBAAkB,IAAI,CAAA;AAC7B,EAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,WAAW,CAAA,CAAE,MAAA,EAAO;AAC1C;AA1LA,IAAA,yBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,8CAAA,GAAA;AACA,IAAA,qBAAA,EAAA;AAKA,IAAA,uBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACNA,IAAA,4BAAA,GAAA,EAAA;AAAA,QAAA,CAAA,4BAAA,EAAA;AAAA,EAAA,oBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAuBA,SAAS,iBAAA,CACP,MAAA,EACA,QAAA,EACA,MAAA,EACA,YAAY,IAAA,EACZ;AACA,EAAA,MAAM,GAAA,GAAM,IAAU,MAAA,CAAA,IAAA,EAAK,CAAE,cAAc,MAAM,CAAA;AACjD,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,SAAA,CAAU,IAAU,gBAAS,CAAA;AAChD,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,iBAAA,CAAkB,IAAU,eAAQ,CAAA;AACvD,EAAA,MAAM,MAAA,GAAe,MAAA,CAAA,SAAA,CAAU,QAAA,CAAS,MAAA,CAAO,GAAG,CAAA;AAClD,EAAA,MAAM,WAAY,MAAA,CAAO,MAAA,GAAS,KAAK,GAAA,CAAI,MAAA,GAAS,CAAC,CAAA,GAAK,SAAA;AAC1D,EAAA,MAAM,KAAA,GAAc,MAAA,CAAA,SAAA,CAAU,QAAA,CAAS,EAAE,CAAA;AACzC,EAAA,MAAM,OAAA,GAAU,CAAA;AAEhB,EAAA,QAAA,CAAS,MAAA,CAAO,KAAK,MAAM,CAAA;AAC3B,EAAA,MAAA,CAAO,QAAA,CAAS,GAAA;AAAA,IACd,MAAA,CAAO,IAAI,QAAA,GAAW,IAAA,CAAK,IAAI,KAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA;AAAA,IACxD,MAAA,CAAO,CAAA,GAAI,QAAA,GAAW,IAAA,CAAK,IAAI,KAAK,CAAA;AAAA,IACpC,MAAA,CAAO,IAAI,QAAA,GAAW,IAAA,CAAK,IAAI,KAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,OAAO;AAAA,GAC1D;AACA,EAAA,MAAA,CAAO,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,QAAA,GAAW,KAAK,IAAI,CAAA;AAC3C,EAAA,MAAA,CAAO,MAAM,QAAA,GAAW,GAAA;AACxB,EAAA,MAAA,CAAO,sBAAA,EAAuB;AAC9B,EAAA,QAAA,CAAS,MAAA,EAAO;AAClB;AAEA,eAAsB,oBAAA,CAAqB;AAAA,EACzC,UAAA,GAAa,IAAA;AAAA,EACb,cAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAAgC;AAtDhC,EAAA,IAAAA,GAAAA;AAuDE,EAAA,MAAM,QAAQ,IAAA,CAAK,WAAA;AACnB,EAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AAEpB,EAAA,MAAM,KAAA,GAAQ,IAAU,MAAA,CAAA,KAAA,EAAM;AAC9B,EAAA,KAAA,CAAM,UAAA,GAAa,IAAA;AAEnB,EAAA,MAAM,MAAA,GAAS,IAAU,MAAA,CAAA,iBAAA,CAAkB,EAAA,EAAI,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,CAAC,CAAA,EAAG,IAAA,EAAM,GAAG,CAAA;AAErF,EAAA,MAAM,QAAA,GAAW,IAAU,MAAA,CAAA,aAAA,CAAc;AAAA,IACvC,KAAA,EAAO,IAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACZ,CAAA;AACD,EAAA,QAAA,CAAS,cAAc,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,gBAAA,EAAkB,CAAC,CAAC,CAAA;AAC3D,EAAA,QAAA,CAAS,OAAA,CAAQ,OAAO,MAAM,CAAA;AAC9B,EAAA,QAAA,CAAS,gBAAA,GAAyB,MAAA,CAAA,cAAA;AAClC,EAAA,QAAA,CAAS,WAAA,GAAoB,MAAA,CAAA,qBAAA;AAC7B,EAAA,QAAA,CAAS,mBAAA,GAAsB,IAAA;AAC/B,EAAA,IAAA,CAAK,WAAA,CAAY,SAAS,UAAU,CAAA;AAEpC,EAAA,MAAM,QAAA,GAAW,IAAI,aAAA,CAAc,MAAA,EAAQ,SAAS,UAAU,CAAA;AAC9D,EAAA,QAAA,CAAS,aAAA,GAAgB,IAAA;AACzB,EAAA,QAAA,CAAS,OAAA,GAAU,cAAA;AACnB,EAAA,QAAA,CAAS,UAAA,GAAa,UAAA;AACtB,EAAA,QAAA,CAAS,eAAA,GAAkB,IAAA;AAC3B,EAAA,QAAA,CAAS,aAAA,GAAsB,MAAA,CAAA,SAAA,CAAU,QAAA,CAAS,EAAE,CAAA;AACpD,EAAA,QAAA,CAAS,aAAA,GAAsB,MAAA,CAAA,SAAA,CAAU,QAAA,CAAS,EAAE,CAAA;AACpD,EAAA,QAAA,CAAS,MAAA,EAAO;AAEhB,EAAA,MAAM,IAAA,GAAO,IAAU,MAAA,CAAA,eAAA,CAAgB,QAAA,EAAU,SAAU,IAAI,CAAA;AAC/D,EAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AAEd,EAAA,MAAM,GAAA,GAAM,IAAU,MAAA,CAAA,gBAAA,CAAiB,QAAA,EAAU,IAAI,CAAA;AACrD,EAAA,GAAA,CAAI,QAAA,CAAS,GAAA,CAAI,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AAC9B,EAAA,KAAA,CAAM,IAAI,GAAG,CAAA;AAEb,EAAA,MAAM,IAAA,GAAO,IAAU,MAAA,CAAA,gBAAA,CAAiB,QAAA,EAAU,IAAI,CAAA;AACtD,EAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,IAAA,EAAM,GAAA,EAAK,IAAI,CAAA;AACjC,EAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AAEd,EAAA,MAAM,CAAC,EAAE,KAAA,EAAO,WAAA,IAAe,MAAM,CAAA,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,IACzD,IAAI,OAAA,CAAgC,CAAC,OAAA,EAAS,MAAA,KAAW;AACvD,MAAA,IAAI,YAAW,CAAE,IAAA;AAAA,QACf,QAAA;AAAA,QACA,CAAC,IAAA,KAAS,OAAA,CAAQ,EAAE,KAAA,EAAO,IAAA,CAAK,OAAsB,CAAA;AAAA,QACtD,MAAA;AAAA,QACA,MAAM,MAAA,CAAO,IAAI,KAAA,CAAM,mCAAmC,CAAC;AAAA,OAC7D;AAAA,IACF,CAAC,CAAA;AAAA,IACD,sBAAA;AAAuB,GACxB,CAAA;AAED,EAAA,KAAA,CAAM,IAAI,WAAW,CAAA;AACrB,EAAA,iBAAA,CAAkB,MAAA,EAAQ,UAAU,WAAW,CAAA;AAE/C,EAAA,MAAM,cACHA,GAAAA,GAAA,WAAA,CAAY,gBAAgB,YAAY,CAAA,KAAxC,OAAAA,GAAAA,GAAuE,WAAA;AAE1E,EAAA,MAAM,UAAU,4BAAA,EAA6B;AAC7C,EAAA,MAAM,MAAA,GAAS,0BAAA;AAAA,IACb,OAAA,CAAQ,WAAA;AAAA,IACR,OAAA,CAAQ,MAAA;AAAA,IACR,OAAA,CAAQ,OAAA;AAAA,IACR;AAAA,GACF;AAEA,EAAA,MAAM,YAAA,GAAe,0BAAA;AAAA,IACnB,MAAA,CAAO,QAAA;AAAA,IACP,MAAA,CAAO,QAAA;AAAA,IACP,OAAA,CAAQ,WAAA;AAAA,IACR,OAAA,CAAQ;AAAA,GACV;AAEA,EAAA,MAAM,WAAW,IAAU,MAAA,CAAA,IAAA;AAAA,IACzB,IAAU,MAAA,CAAA,aAAA,CAAc,MAAA,CAAO,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,IACnD;AAAA,GACF;AACA,EAAA,QAAA,CAAS,IAAA,GAAO,oBAAA;AAChB,EAAA,QAAA,CAAS,SAAS,GAAA,CAAI,MAAA,CAAO,GAAG,MAAA,CAAO,CAAA,EAAG,OAAO,CAAC,CAAA;AAClD,EAAA,QAAA,CAAS,WAAA,GAAc,CAAA;AACvB,EAAA,UAAA,CAAW,IAAI,QAAQ,CAAA;AAEvB,EAAA,IAAI,OAAA,GAAU,CAAA;AAEd,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,OAAA,GAAU,MAAA,CAAO,sBAAsB,UAAU,CAAA;AACjD,IAAA,sBAAA;AAAA,MACE,MAAA,CAAO,UAAA;AAAA,MACP,MAAA,CAAO,UAAA;AAAA,MACP,MAAA,CAAO,QAAA;AAAA,MACP,MAAA,CAAO;AAAA,KACT;AACA,IAAA,oBAAA,CAAqB,QAAA,EAAU,YAAY,MAAM,CAAA;AACjD,IAAA,0BAAA,CAA2B,UAAU,UAAU,CAAA;AAC/C,IAAA,QAAA,CAAS,MAAA,EAAO;AAChB,IAAA,QAAA,CAAS,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,UAAA,EAAW;AAEX,EAAA,MAAM,cAAA,GAAiB,IAAI,cAAA,CAAe,MAAM;AAC9C,IAAA,MAAM,YAAY,IAAA,CAAK,WAAA;AACvB,IAAA,MAAM,aAAa,IAAA,CAAK,YAAA;AACxB,IAAA,IAAI,SAAA,IAAa,CAAA,IAAK,UAAA,IAAc,CAAA,EAAG;AACrC,MAAA;AAAA,IACF;AAEA,IAAA,MAAA,CAAO,SAAS,SAAA,GAAY,UAAA;AAC5B,IAAA,MAAA,CAAO,sBAAA,EAAuB;AAC9B,IAAA,QAAA,CAAS,OAAA,CAAQ,WAAW,UAAU,CAAA;AACtC,IAAA,iBAAA,CAAkB,MAAA,EAAQ,UAAU,WAAW,CAAA;AAAA,EACjD,CAAC,CAAA;AACD,EAAA,cAAA,CAAe,QAAQ,IAAI,CAAA;AAE3B,EAAA,OAAO,MAAM;AACX,IAAA,MAAA,CAAO,qBAAqB,OAAO,CAAA;AACnC,IAAA,cAAA,CAAe,UAAA,EAAW;AAC1B,IAAA,QAAA,CAAS,OAAA,EAAQ;AACjB,IAAA,QAAA,CAAS,SAAS,OAAA,EAAQ;AAC1B,IAAA,YAAA,CAAa,OAAA,EAAQ;AACrB,IAAA,MAAA,CAAO,SAAS,OAAA,EAAQ;AACxB,IAAA,MAAA,CAAO,SAAS,OAAA,EAAQ;AACxB,IAAA,MAAA,CAAO,WAAW,KAAA,EAAM;AACxB,IAAA,MAAA,CAAO,WAAW,KAAA,EAAM;AACxB,IAAA,MAAA,CAAO,UAAA,CAAW,gBAAgB,KAAK,CAAA;AACvC,IAAA,MAAA,CAAO,UAAA,CAAW,gBAAgB,KAAK,CAAA;AACvC,IAAA,QAAA,CAAS,OAAA,EAAQ;AAEjB,IAAA,IAAI,QAAA,CAAS,UAAA,CAAW,aAAA,KAAkB,IAAA,EAAM;AAC9C,MAAA,IAAA,CAAK,WAAA,CAAY,SAAS,UAAU,CAAA;AAAA,IACtC;AAAA,EACF,CAAA;AACF;AA1LA,IAAA,yBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,8CAAA,GAAA;AAGA,IAAA,qBAAA,EAAA;AAKA,IAAA,yBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACRA,IAAA,cAAA,GAAA,EAAA;ACmBO,SAAS,OAAOA,GAAAA,EAAsF;AAAtF,EAAA,IAAAC,GAAAA,GAAAD,GAAAA,EAAE,EAAA,QAAA,EAAU,SAAA,EAAW,UAAU,SAAA,EAAW,IAAA,GAAO,QAAA,EAnB1E,GAmBuBC,KAAgE,KAAA,GAAA,SAAA,CAAhEA,GAAAA,EAAgE,CAA9D,UAAA,EAAU,aAAW,SAAA,EAAqB,MAAA,CAAA,CAAA;AACjE,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,SAAA,EAAW,CAAC,cAAA,CAAO,MAAA,EAAQ,eAAO,OAAO,CAAA,EAAG,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,EAAE,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,MACrF;AAAA,KAAA,EACI,KAAA,CAAA,EAHL;AAAA,MAKE;AAAA,KAAA;AAAA,GACH;AAEJ;;;AC7BA,IAAA,eAAA,GAAA,EAAA;ACUO,SAAS,OAAA,CAAQ,EAAE,OAAA,EAAS,KAAA,GAAQ,oBAAmB,EAAiB;AAC7E,EAAA,MAAM,YAAY,KAAA,EAAM;AACxB,EAAA,MAAM,OAAA,GAAU,OAAwB,IAAI,CAAA;AAC5C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AAEtC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAwB;AApBvD,MAAA,IAAAD,GAAAA;AAqBM,MAAA,IAAI,EAAA,CAACA,MAAA,OAAA,CAAQ,OAAA,KAAR,gBAAAA,GAAAA,CAAiB,QAAA,CAAS,MAAM,MAAA,CAAA,CAAA,EAAiB;AACpD,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,iBAAiB,CAAA;AAC1D,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,eAAe,iBAAiB,CAAA;AAC7D,MAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACvD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAA+C;AAxCrE,IAAA,IAAAA,GAAAA;AAyCI,IAAA,IAAI,EAAA,CAACA,MAAA,OAAA,CAAQ,OAAA,KAAR,gBAAAA,GAAAA,CAAiB,QAAA,CAAS,MAAM,aAAA,CAAA,CAAA,EAA+B;AAClE,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,WAAW,eAAA,CAAO,IAAA;AAAA,MAClB,YAAA,EAAc,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,MAChC,YAAA,EAAc,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,MAEjC,QAAA,EAAA;AAAA,wBAAAE,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,kBAAA,EAAkB,OAAO,SAAA,GAAY,MAAA;AAAA,YACrC,eAAA,EAAe,IAAA;AAAA,YACf,YAAA,EAAY,KAAA;AAAA,YACZ,WAAW,eAAA,CAAO,OAAA;AAAA,YAClB,MAAA,EAAQ,UAAA;AAAA,YACR,SAAS,MAAM,OAAA,CAAQ,CAAC,OAAA,KAAY,CAAC,OAAO,CAAA;AAAA,YAC5C,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,YAC3B,IAAA,EAAK,QAAA;AAAA,YACN,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,QACC,IAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,eAAA,CAAO,KAAA,EAAO,EAAA,EAAI,SAAA,EAAW,IAAA,EAAK,SAAA,EAChD,QAAA,EAAA,OAAA,EACH,CAAA,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;;;ACxEA,IAAA,kBAAA,GAAA,EAAA;ACcA,IAAM,qBAAA,GAAwB,cAAiD,IAAI,CAAA;AAE5E,SAAS,iBAAA,GAAoB;AAClC,EAAA,OAAO,WAAW,qBAAqB,CAAA;AACzC;AAEO,SAAS,mBAAA,CACd,MACA,OAAA,EACA;AACA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,OAAO,gEACD,IAAA,CAAK,WAAA,GAAc,EAAE,kBAAA,EAAoB,KAAK,WAAA,EAAY,GAAI,EAAC,CAAA,EAC/D,KAAK,OAAA,KAAW,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,WAAU,EAAE,mBAAA,EAAqB,KAAK,OAAA,EAAQ,GAAI,EAAC,CAAA,EAC5E,KAAK,QAAA,GAAW,EAAE,eAAA,EAAiB,IAAA,EAAe,UAAU,IAAA,EAAc,GAAI,EAAC,CAAA,EAC/E,KAAK,OAAA,GAAU,EAAE,mBAAmB,IAAA,CAAK,OAAA,KAAY,EAAC,CAAA;AAE9D;AAoBA,SAAS,iBAAA,CAAkB;AAAA,EACzB,IAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,uBACEC,KAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,UAAM,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACZ,QAAA,mBAAWA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,kBAAA,CAAO,QAAA,EAAU,wBAAU,CAAA,GAAU,IAAA;AAAA,IACjE,IAAA,mBAAOA,GAAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAS,MAAM,KAAA,EAAO,CAAA,SAAA,EAAY,KAAK,CAAA,CAAA,EAAI,CAAA,GAAK;AAAA,GAAA,EACnE,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAQG;AACD,EAAA,MAAM,0BAAUA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,IAAA,EAAY,OAAc,QAAA,EAAoB,CAAA;AAEjF,EAAA,IAAI,aAAa,OAAA,EAAS;AACxB,IAAA,uBACEA,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAsB,OAAA,EAAkB,IAC5C,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAsB,IACxB,QAAA,EAAA,OAAA,EACH,CAAA;AAEJ;AAEO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA,GAAe,OAAA;AAAA,EACf,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,mBAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,QAAA,GAAW,OAAA;AAAA,EACX,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,UAAU,IAAA,KAAS,SAAA;AACzB,EAAA,MAAM,WAAA,GAAc,aAAA,KAAkB,OAAA,GAAU,kBAAA,CAAO,eAAe,kBAAA,CAAO,WAAA;AAC7E,EAAA,MAAM,cAAA,GAAiB,CAAA,EAAG,kBAAA,CAAO,KAAK,CAAA,CAAA,EAAI,OAAA,GAAU,kBAAA,CAAO,YAAA,GAAe,EAAE,CAAA,CAAA,EAC1E,mBAAA,GAAsB,kBAAA,CAAO,iBAAiB,EAChD,CAAA,CAAA;AACA,EAAA,MAAM,gBAAA,GAAmB,GAAG,kBAAA,CAAO,OAAO,IAAI,OAAA,GAAU,kBAAA,CAAO,iBAAiB,EAAE,CAAA,CAAA;AAClF,EAAA,MAAM,cAAA,GAAiB,GAAG,kBAAA,CAAO,KAAK,IAAI,OAAA,GAAU,kBAAA,CAAO,eAAe,EAAE,CAAA,CAAA;AAC5E,EAAA,MAAM,qBACJ,OAAA,IAAW,cAAA,GACP,aAAA,KAAkB,MAAA,GAChB,8CACA,2CAAA,GACF,MAAA;AAEN,EAAA,MAAM,OAAA,GAAU,EAAA,GAAK,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AACrC,EAAA,MAAM,MAAA,GAAS,EAAA,IAAM,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA,GAAU,MAAA;AAC3C,EAAA,MAAM,OAAA,GAAU,EAAA,IAAM,KAAA,GAAQ,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AAC9C,EAAA,MAAM,WAAA,GAAc,CAAC,MAAA,EAAQ,OAAO,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAEnE,EAAA,MAAM,WAAA,GAAc,OAAA;AAAA,IAClB,OAAO;AAAA,MACL,WAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,OAAA,EAAS,OAAA,EAAS,QAAQ;AAAA,GAC1C;AAEA,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,SAAA,EAAW,cAAA;AAAA,IACX,IAAA;AAAA,IACA,EAAA,EAAI,OAAA;AAAA,IACJ,KAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA,EAAS,QAAA,KAAa,OAAA,GAAU,EAAA,GAAK,MAAA;AAAA,IACrC;AAAA,GACF;AAEA,EAAA,MAAM,SAAA,GACJ,KAAA,IAAS,CAAC,oBAAA,mBACRA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,cAAA,EAAgB,EAAA,EAAI,OAAA,EAAS,IAAA,EAAK,OAAA,EAC7C,iBACH,CAAA,GACE,IAAA;AAEN,EAAA,MAAM,QAAA,GACJ,IAAA,IAAQ,MAAA,mBACNA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,kBAAA,CAAO,cAAA,EAAgB,EAAA,EAAI,MAAA,EACzC,QAAA,EAAA,IAAA,EACH,CAAA,GACE,IAAA;AAEN,EAAA,uBACEA,GAAAA,CAAC,qBAAA,CAAsB,UAAtB,EAA+B,KAAA,EAAO,aACrC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,kBAAA,EAAkB,aAAa,MAAA,GAAS,MAAA;AAAA,MACxC,SAAA,EAAW;AAAA,QACT,kBAAA,CAAO,IAAA;AAAA,QACP,OAAA,GAAU,kBAAA,CAAO,OAAA,GAAU,kBAAA,CAAO,OAAA;AAAA,QAClC,OAAA,IAAW,YAAA,KAAiB,QAAA,GAAW,kBAAA,CAAO,aAAA,GAAgB,EAAA;AAAA,QAC9D,OAAA,IAAW,YAAA,KAAiB,OAAA,GAAU,kBAAA,CAAO,YAAA,GAAe,EAAA;AAAA,QAC5D,OAAA,IAAW,cAAA,GAAiB,kBAAA,CAAO,cAAA,GAAiB,EAAA;AAAA,QACpD,OAAA,IAAW,UAAA,GAAa,kBAAA,CAAO,UAAA,GAAa,EAAA;AAAA,QAC5C,CAAC,UAAU,WAAA,GAAc,EAAA;AAAA,QACzB,OAAA,IAAW,aAAA,KAAkB,MAAA,GAAS,kBAAA,CAAO,SAAA,GAAY,EAAA;AAAA,QACzD,OAAA,IAAW,aAAA,KAAkB,OAAA,GAAU,kBAAA,CAAO,UAAA,GAAa,EAAA;AAAA,QAC3D,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa;AAAA,OACf,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,MACX,KAAA,EAAO,kBAAA,GAAqB,EAAE,mBAAA,EAAqB,oBAAmB,GAAI,MAAA;AAAA,MAEzE,QAAA,EAAA,OAAA,mBACCC,IAAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,aAAA,KAAkB,MAAA,mBAASD,GAAAA,CAAC,UAAA,EAAA,cAAA,CAAA,EAAA,EAAe,WAAY,CAAA,GAAK,IAAA;AAAA,wBAC7DC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,gBAAA,EACb,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA;AAAA,SAAA,EACH,CAAA;AAAA,QACC,kBAAkB,OAAA,mBAAUD,GAAAA,CAAC,UAAA,EAAA,cAAA,CAAA,EAAA,EAAe,WAAY,CAAA,GAAK,IAAA;AAAA,QAC7D;AAAA,OAAA,EACH,CAAA,mBAEAC,IAAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,+BAAe,UAAA,CAAY,CAAA;AAAA,wBAC5BC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,gBAAA,EACb,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA;AAAA,SAAA,EACH,CAAA;AAAA,QACC;AAAA,OAAA,EACH;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;;;AC3NA,IAAA,qBAAA,GAAA,EAAA;ACiBO,SAAS,aAAA,CAAc;AAAA,EAC5B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,EAAuB;AACrB,EAAA,MAAM,YAAY,iBAAA,EAAkB;AAEpC,EAAA,uBACED,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,WAAW,qBAAA,CAAO,KAAA;AAAA,MAClB,cAAA,EAAc,IAAA;AAAA,MACd,KAAA;AAAA,MACA,IAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA,EAAS,OAAA;AAAA,MACT,IAAA;AAAA,MAEA,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,sBAAO,MAAA,EACrB,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA,cAAA,CAAA;AAAA,YACC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,YAC/B,WAAW,qBAAA,CAAO,WAAA;AAAA,YAClB,OAAA;AAAA,YACA,EAAA;AAAA,YACA,QAAA;AAAA,YACA,IAAA,EAAK;AAAA,WAAA,EACD,oBAAoB,SAAA,EAAW,EAAE,SAAS,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,SAChE;AAAA,wBACAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAW;AAAA,cACT,qBAAA,CAAO,MAAA;AAAA,cACP,KAAA,KAAU,OAAA,GAAU,qBAAA,CAAO,KAAA,GAAQ,qBAAA,CAAO,MAAA;AAAA,cAC1C,KAAA,GAAQ,sBAAO,KAAA,GAAQ;AAAA,aACzB,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG;AAAA;AAAA;AACb,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;ACjEA,IAAA,kBAAA,GAAA,EAAA;ACgBO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,YAAY,iBAAA,EAAkB;AAEpC,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,IAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA,EAAS,KAAA;AAAA,MACT,IAAA;AAAA,MAEA,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,EAAG,kBAAA,CAAO,MAAM,CAAA,CAAA,EAAI,KAAA,GAAQ,kBAAA,CAAO,KAAA,GAAQ,EAAE,CAAA,CAAA,EAC3D,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA,cAAA,CAAA;AAAA,YACC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,YAC/B,gBAAA,EAAgB,MAAM,WAAA,EAAY;AAAA,YAClC,WAAW,kBAAA,CAAO,WAAA;AAAA,YAClB,EAAA;AAAA,YACA,QAAA;AAAA,YACA,IAAA,EAAK,OAAA;AAAA,YACL;AAAA,WAAA,EACI,oBAAoB,SAAA,EAAW,EAAE,SAAS,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,SAChE;AAAA,wBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,kBAAA,CAAO,MAAA,EAAQ,KAAA,EAAO,EAAE,UAAA,EAAY,KAAA,EAAM,EAAG,CAAA;AAAA,wBACjFA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,mBAAO,KAAA,EAAQ,QAAA,EAAA,KAAA,CAAM,aAAY,EAAE,CAAA;AAAA,wBACpDC,IAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAW,mBAAO,IAAA,EACzC,QAAA,EAAA;AAAA,0BAAAD,IAAC,MAAA,EAAA,EAAK,CAAA;AAAA,0BACNA,IAAC,MAAA,EAAA,EAAK;AAAA,SAAA,EACR;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;AC1DA,IAAA,iBAAA,GAAA,EAAA;ACoBO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,IAAA,GAAO,MAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,YAAY,iBAAA,EAAkB;AAEpC,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,IAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MAEA,QAAA,kBAAAA,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA,cAAA,CAAA;AAAA,UACC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,UAC/B,SAAA,EAAW,GAAG,iBAAA,CAAO,KAAK,IAAI,KAAA,GAAQ,iBAAA,CAAO,QAAQ,EAAE,CAAA,CAAA;AAAA,UACvD,EAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SAAA,EACI,oBAAoB,SAAA,EAAW,EAAE,SAAS,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA;AAChE;AAAA,GACF;AAEJ;;;ACvDA,IAAA,mBAAA,GAAA,EAAA;ACeO,SAAS,WAAA,CAAY;AAAA,EAC1B,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP,IAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,YAAY,IAAA,IAAA,IAAA,GAAA,IAAA,GAAQ,EAAA;AAE1B,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,MAAM,IAAA,IAAA,IAAA,GAAA,IAAA,GAAQ,kEAAA;AAAA,MACd,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MAEA,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,oBAAO,OAAA,EACrB,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,EAAA;AAAA,YACA,IAAA,EAAM,SAAA;AAAA,YACN,IAAA,EAAK,QAAA;AAAA,YACL;AAAA;AAAA,SACF;AAAA,wBACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,mBAAA,CAAO,MAAM,QAAA,EAAA,uBAAA,EAAqB,CAAA;AAAA,wBAChDC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,oBAAO,IAAA,EAAM,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UAChB,SAAA;AAAA,UAAU,WAAA;AAAA,UAAoB,KAAA;AAAA,UAAM;AAAA,SAAA,EAClD;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;AClDA,IAAA,iBAAA,GAAA,EAAA;ACyBA,SAAS,eAAA,GAAkB;AACzB,EAAA,uBACEA,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAW,iBAAA,CAAO,OAAA;AAAA,MAClB,IAAA,EAAK,MAAA;AAAA,MACL,OAAA,EAAQ,WAAA;AAAA,MACR,KAAA,EAAM,4BAAA;AAAA,MAEN,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAE,4GAAA;AAAA,YACF,MAAA,EAAO,cAAA;AAAA,YACP,aAAA,EAAc,OAAA;AAAA,YACd,cAAA,EAAe,OAAA;AAAA,YACf,WAAA,EAAY;AAAA;AAAA,SACd;AAAA,wBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAa,QAAO,cAAA,EAAe,aAAA,EAAc,OAAA,EAAQ,WAAA,EAAY,KAAA,EAAM,CAAA;AAAA,wBACnFA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAa,QAAO,cAAA,EAAe,aAAA,EAAc,OAAA,EAAQ,WAAA,EAAY,KAAA,EAAM;AAAA;AAAA;AAAA,GACrF;AAEJ;AAEO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,oBAAA;AAAA,EACX,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,YAAY,iBAAA,EAAkB;AACpC,EAAA,MAAM,QAAA,GAAWE,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,SAAS,KAAK,CAAA;AAElD,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA2B;AAC9C,IAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,IAAA,IAAI,CAAC,KAAA,IAAS,EAAC,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,MAAA,CAAA,EAAQ;AAC5B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,YAAA,GAAe,IAAI,YAAA,EAAa;AACtC,IAAA,YAAA,CAAa,KAAA,CAAM,GAAA,CAAI,KAAA,CAAM,CAAC,CAAC,CAAA;AAC/B,IAAA,KAAA,CAAM,QAAQ,YAAA,CAAa,KAAA;AAE3B,IAAA,QAAA,CAAS;AAAA,MACP,MAAA,EAAQ,KAAA;AAAA,MACR,aAAA,EAAe;AAAA,KACiB,CAAA;AAAA,EACpC,CAAA;AAEA,EAAA,MAAM,cAAA,GAAqD,CAAC,KAAA,KAAU;AACpE,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,KAAA,CAAM,eAAA,EAAgB;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,eAAA,GAAsD,CAAC,KAAA,KAAU;AACrE,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,eAAA,GAAsD,CAAC,KAAA,KAAU;AACrE,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,KAAA,CAAM,eAAA,EAAgB;AAEtB,IAAA,IAAI,CAAC,KAAA,CAAM,aAAA,CAAc,QAAA,CAAS,KAAA,CAAM,aAA4B,CAAA,EAAG;AACrE,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAA,GAAiD,CAAC,KAAA,KAAU;AAChE,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,aAAA,CAAc,KAAK,CAAA;AACnB,IAAA,WAAA,CAAY,KAAA,CAAM,aAAa,KAAK,CAAA;AAAA,EACtC,CAAA;AAEA,EAAA,uBACEH,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,IAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA,EAAS,KAAA;AAAA,MACT,IAAA;AAAA,MAEA,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,kBAAO,OAAA,EACrB,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAA,EAAG,iBAAA,CAAO,IAAI,CAAA,CAAA,EAAI,UAAA,GAAa,iBAAA,CAAO,QAAA,GAAW,EAAE,CAAA,CAAA,EAAI,KAAA,GAAQ,iBAAA,CAAO,YAAY,EAAE,CAAA,CAAA;AAAA,YAC/F,OAAA,EAAS,EAAA;AAAA,YACT,WAAA,EAAa,eAAA;AAAA,YACb,WAAA,EAAa,eAAA;AAAA,YACb,UAAA,EAAY,cAAA;AAAA,YACZ,MAAA,EAAQ,UAAA;AAAA,YAER,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,UAAK,SAAA,EAAW,iBAAA,CAAO,MACtB,QAAA,kBAAAA,GAAAA,CAAC,mBAAgB,CAAA,EACnB,CAAA;AAAA,8BACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,kBAAO,OAAA,EACrB,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,SAAI,SAAA,EAAW,iBAAA,CAAO,OACpB,QAAA,EAAA,QAAA,mBACCC,IAAAA,CAAAG,QAAAA,EAAA,EAAE,QAAA,EAAA;AAAA,kBAAA,YAAA;AAAA,kBAAW;AAAA,iBAAA,EAAS,CAAA,mBAEtBH,IAAAA,CAAAG,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,kCAAAJ,GAAAA,CAAC,YAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,kBAAS;AAAA,iBAAA,EACvB,CAAA,EAEJ,CAAA;AAAA,gBACC,CAAC,2BAAWA,GAAAA,CAAC,SAAI,SAAA,EAAW,iBAAA,CAAO,IAAA,EAAM,QAAA,EAAA,IAAA,EAAE,CAAA,GAAS,IAAA;AAAA,gCACrDA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,kBAAO,MAAA,EAAS,QAAA,EAAA,QAAA,GAAW,WAAW,cAAA,EAAe;AAAA,eAAA,EACxE,CAAA;AAAA,8BACAA,GAAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA,cAAA,CAAA;AAAA,kBACC,GAAA,EAAK,QAAA;AAAA,kBACL,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,kBAC/B,WAAW,iBAAA,CAAO,KAAA;AAAA,kBAClB,EAAA;AAAA,kBACA,QAAA;AAAA,kBACA,IAAA,EAAK;AAAA,iBAAA,EACD,oBAAoB,SAAA,EAAW,EAAE,SAAS,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA;AAChE;AAAA;AAAA,SACF;AAAA,QACC,QAAA,mBAAWA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,iBAAA,CAAO,QAAA,EAAW,oBAAS,CAAA,GAAO;AAAA,OAAA,EAC9D;AAAA;AAAA,GACF;AAEJ;;;AC1JA,IAAA,mBAAA,GAAA,EAAA;;;ACAO,SAAS,sBAAsB,IAAA,EAAsB;AAC1D,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,IAAI,CAAA,IAAK,QAAQ,CAAA,EAAG;AACvC,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,IAAI,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA,EAAG;AAC1B,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,QAAA,EAAS,CAAE,WAAA,EAAY;AAC7C,EAAA,IAAI,QAAA,CAAS,QAAA,CAAS,IAAI,CAAA,EAAG;AAC3B,IAAA,MAAM,GAAG,QAAQ,CAAA,GAAI,QAAA,CAAS,MAAM,IAAI,CAAA;AACxC,IAAA,OAAO,MAAA,CAAO,QAAQ,CAAA,IAAK,CAAA;AAAA,EAC7B;AAEA,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,OAAA,CAAQ,GAAG,CAAA;AACrC,EAAA,IAAI,aAAa,EAAA,EAAI;AACnB,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,OAAO,QAAA,CAAS,SAAS,QAAA,GAAW,CAAA;AACtC;AAEO,SAAS,YAAA,CAAa,OAAe,IAAA,EAAsB;AAChE,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,qBAAA,CAAsB,IAAI,CAAC,CAAA;AAClD;AAEO,SAAS,WAAA,CAAY,KAAA,EAAe,IAAA,EAAc,GAAA,GAAM,CAAA,EAAW;AACxE,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,IAAK,CAAC,MAAA,CAAO,QAAA,CAAS,IAAI,CAAA,IAAK,IAAA,IAAQ,CAAA,EAAG;AAClE,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,sBAAsB,IAAI,CAAA;AAC3C,EAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAA,CAAO,QAAQ,GAAA,IAAO,IAAI,IAAI,IAAA,GAAO,GAAA;AAC1D,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,QAAQ,CAAC,CAAA;AACzC;ACbA,SAAS,oBAAA,CACP,GAAA,EACA,EAAE,YAAA,EAAc,eAAc,EACtB;AACR,EAAA,IAAI,QAAQ,EAAA,EAAI;AACd,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,IAAI,GAAA,KAAQ,OAAO,aAAA,EAAe;AAChC,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,IAAI,SAAA,GAAY,EAAA;AAChB,EAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,EAAA,KAAA,MAAW,QAAQ,GAAA,EAAK;AACtB,IAAA,IAAI,IAAA,IAAQ,GAAA,IAAO,IAAA,IAAQ,GAAA,EAAK;AAC9B,MAAA,SAAA,IAAa,IAAA;AACb,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,KAAS,GAAA,IAAO,aAAA,IAAiB,SAAA,KAAc,EAAA,EAAI;AACrD,MAAA,SAAA,GAAY,GAAA;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,KAAS,OAAO,YAAA,IAAgB,CAAC,cAAc,SAAA,KAAc,EAAA,IAAM,cAAc,GAAA,EAAK;AACxF,MAAA,SAAA,IAAa,GAAA;AACb,MAAA,UAAA,GAAa,IAAA;AAAA,IACf;AAAA,EACF;AAEA,EAAA,OAAO,SAAA;AACT;AAEO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,GAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,YAAY,iBAAA,EAAkB;AACpC,EAAA,MAAM,CAAC,MAAM,OAAO,CAAA,GAAIG,SAAS,MAAM,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AAEhE,EAAAE,UAAU,MAAM;AACd,IAAA,OAAA,CAAQ,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,EACnC,CAAA,EAAG,CAAC,KAAA,EAAO,IAAI,CAAC,CAAA;AAEhB,EAAA,MAAM,UAAA,GAAa,CAAC,SAAA,KAAsB;AACxC,IAAA,MAAM,OAAA,GAAU,WAAA,CAAY,SAAA,EAAW,IAAA,EAAM,oBAAO,CAAC,CAAA;AACrD,IAAA,OAAO,IAAA,CAAK,IAAI,GAAA,IAAA,IAAA,GAAA,GAAA,GAAO,OAAA,EAAS,KAAK,GAAA,CAAI,GAAA,IAAA,IAAA,GAAA,GAAA,GAAO,OAAA,EAAS,OAAO,CAAC,CAAA;AAAA,EACnE,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,SAAA,KAAsB;AACvC,IAAA,MAAM,OAAA,GAAU,WAAW,SAAS,CAAA;AAEpC,IAAA,QAAA,CAAS;AAAA,MACP,MAAA,EAAQ,EAAE,KAAA,EAAO,YAAA,CAAa,SAAS,IAAI,CAAA,EAAG,eAAe,OAAA;AAAQ,KACJ,CAAA;AAAA,EACrE,CAAA;AAEA,EAAA,MAAM,aAAA,GAAA,CAAiB,oBAAO,CAAA,IAAK,CAAA;AACnC,EAAA,MAAM,YAAA,GAAe,CAAC,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA;AAE3C,EAAA,MAAM,YAAA,GAAqD,CAAC,KAAA,KAAU;AACpE,IAAA,MAAM,SAAA,GAAY,qBAAqB,KAAA,CAAM,MAAA,CAAO,OAAO,EAAE,YAAA,EAAc,eAAe,CAAA;AAC1F,IAAA,OAAA,CAAQ,SAAS,CAAA;AAEjB,IAAA,IAAI,cAAc,EAAA,IAAM,SAAA,KAAc,OAAO,SAAA,CAAU,QAAA,CAAS,GAAG,CAAA,EAAG;AACpE,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,OAAO,SAAS,CAAA;AAC/B,IAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG;AACzB,MAAA,SAAA,CAAU,MAAM,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAkD,MAAM;AAC5D,IAAA,IAAI,IAAA,KAAS,MAAM,IAAA,KAAS,GAAA,IAAO,OAAO,KAAA,CAAM,MAAA,CAAO,IAAI,CAAC,CAAA,EAAG;AAC7D,MAAA,OAAA,CAAQ,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AACjC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,MAAA,CAAO,IAAI,CAAC,CAAA;AACvC,IAAA,OAAA,CAAQ,YAAA,CAAa,OAAA,EAAS,IAAI,CAAC,CAAA;AACnC,IAAA,SAAA,CAAU,OAAO,CAAA;AAAA,EACnB,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,GAAA,KAAQ,MAAA,IAAa,KAAA,IAAS,GAAA;AAC5C,EAAA,MAAM,KAAA,GAAQ,GAAA,KAAQ,MAAA,IAAa,KAAA,IAAS,GAAA;AAE5C,EAAA,uBACEL,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,IAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MAEA,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,EAAG,mBAAA,CAAO,OAAO,CAAA,CAAA,EAAI,KAAA,GAAQ,mBAAA,CAAO,KAAA,GAAQ,EAAE,CAAA,CAAA,EAC5D,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,eAAA,EAAe,EAAA;AAAA,YACf,YAAA,EAAY,YAAY,KAAK,CAAA,CAAA;AAAA,YAC7B,WAAW,mBAAA,CAAO,MAAA;AAAA,YAClB,QAAA,EAAU,KAAA;AAAA,YACV,OAAA,EAAS,MAAM,SAAA,CAAU,KAAA,GAAQ,IAAI,CAAA;AAAA,YACrC,IAAA,EAAK,QAAA;AAAA,YACN,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBACAA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA,cAAA,CAAA;AAAA,YACC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,YAC/B,WAAW,mBAAA,CAAO,KAAA;AAAA,YAClB,EAAA;AAAA,YACA,SAAA,EAAW,eAAe,SAAA,GAAY,SAAA;AAAA,YACtC,MAAA,EAAQ,UAAA;AAAA,YACR,QAAA,EAAU,YAAA;AAAA,YACV,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAO;AAAA,WAAA,EACH,oBAAoB,SAAA,EAAW,EAAE,SAAS,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,SAChE;AAAA,wBACAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,eAAA,EAAe,EAAA;AAAA,YACf,YAAA,EAAY,YAAY,KAAK,CAAA,CAAA;AAAA,YAC7B,WAAW,mBAAA,CAAO,MAAA;AAAA,YAClB,QAAA,EAAU,KAAA;AAAA,YACV,OAAA,EAAS,MAAM,SAAA,CAAU,KAAA,GAAQ,IAAI,CAAA;AAAA,YACrC,IAAA,EAAK,QAAA;AAAA,YACN,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;ACrKA,IAAA,kBAAA,GAAA,EAAA;ACeA,IAAM,iBAAA,GAAoBM,cAA6C,IAAI,CAAA;AAgBpE,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP,IAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,SAASC,KAAAA,EAAM;AACrB,EAAA,MAAM,OAAA,GAAU,EAAA,IAAA,IAAA,GAAA,EAAA,GAAM,CAAA,YAAA,EAAe,MAAM,CAAA,CAAA;AAE3C,EAAA,uBACEP,GAAAA;AAAA,IAAC,iBAAA,CAAkB,QAAA;AAAA,IAAlB;AAAA,MACC,KAAA,EAAO;AAAA,QACL,IAAA;AAAA,QACA,aAAA,EAAe,KAAA;AAAA,QACf,gBAAA,EAAkB,QAAA;AAAA,QAClB;AAAA,OACF;AAAA,MAEA,QAAA,kBAAAA,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,WAAW,kBAAA,CAAO,KAAA;AAAA,UAClB,KAAA;AAAA,UACA,YAAA,EAAa,OAAA;AAAA,UACb,IAAA;AAAA,UACA,EAAA,EAAI,OAAA;AAAA,UACJ,KAAA;AAAA,UACA,aAAA;AAAA,UACA,QAAA,EAAS,KAAA;AAAA,UACT,IAAA;AAAA,UAEA,QAAA,kBAAAA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,KAAA,EAAe,QAAA,EAAS;AAAA;AAAA;AAC7C;AAAA,GACF;AAEJ;AAEA,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAU,KAAA,EAAM,EAA4C;AACvF,EAAA,MAAM,YAAY,iBAAA,EAAkB;AAEpC,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,MAC/B,WAAW,kBAAA,CAAO,OAAA;AAAA,MAClB,IAAA,EAAK;AAAA,KAAA,EACD,mBAAA,CAAoB,WAAW,EAAE,OAAA,EAAS,QAAQ,KAAK,CAAA,EAAG,CAAA,CAAA,EAJ/D;AAAA,MAME;AAAA,KAAA;AAAA,GACH;AAEJ;AAWO,SAAS,KAAA,CAAM,EAAE,QAAA,EAAU,KAAA,EAAO,MAAM,KAAA,EAAO,KAAA,EAAO,gBAAe,EAAe;AAjG3F,EAAA,IAAAF,GAAAA,EAAAC,GAAAA;AAkGE,EAAA,MAAM,KAAA,GAAQS,WAAW,iBAAiB,CAAA;AAC1C,EAAA,MAAM,SAAA,GAAA,CAAYV,GAAAA,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,IAAA,KAAP,OAAAA,GAAAA,GAAe,IAAA;AACjC,EAAA,MAAM,OAAA,GAAU,KAAA,GAAQ,KAAA,CAAM,aAAA,KAAkB,KAAA,GAAQ,MAAA;AACxD,EAAA,MAAM,eAAcC,GAAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,KAAA,KAAhB,OAAAA,GAAAA,GAAyB,OAAA;AAE7C,EAAA,uBACEE,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAO,MAAA,EACrB,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,kBAAA,CAAO,MAAA,EACvB,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,WAAW,kBAAA,CAAO,WAAA;AAAA,UAClB,OAAA;AAAA,UACA,cAAA,EAAgB,QAAQ,MAAA,GAAY,cAAA;AAAA,UACpC,IAAA,EAAM,SAAA;AAAA,UACN,QAAA,EAAU,MAAM,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,gBAAA,CAAiB,KAAA,CAAA;AAAA,UACxC,IAAA,EAAK,OAAA;AAAA,UACL;AAAA;AAAA,OACF;AAAA,sBACAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAY,MAAA;AAAA,UACZ,SAAA,EAAW,CAAA,EAAG,kBAAA,CAAO,MAAM,CAAA,CAAA,EACzB,gBAAgB,OAAA,GAAU,kBAAA,CAAO,KAAA,GAAQ,kBAAA,CAAO,MAClD,CAAA;AAAA;AAAA,OACF;AAAA,sBACAA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,QAAA,IAAA,IAAA,GAAA,QAAA,GAAY,KAAA,EAAM;AAAA,KAAA,EAC3B,CAAA;AAAA,IACC,KAAA,mBAAQA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,kBAAA,CAAO,KAAA,EAAQ,iBAAM,CAAA,GAAS;AAAA,GAAA,EACzD,CAAA;AAEJ;;;AC9HA,IAAA,sBAAA,GAAA,EAAA;ACOA,IAAM,mCAAmB,IAAI,GAAA,CAAI,CAAC,OAAA,EAAS,KAAA,EAAO,GAAG,CAAC,CAAA;AAkB/C,SAAS,SAAA,CAAU;AAAA,EACxB,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,WAAA,GAAc,gBAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,QAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAAmB;AACjB,EAAA,MAAM,SAASO,KAAAA,EAAM;AACrB,EAAA,MAAM,OAAA,GAAU,EAAA,IAAM,CAAA,WAAA,EAAc,MAAM,CAAA,CAAA;AAC1C,EAAA,MAAM,YAAY,iBAAA,EAAkB;AACpC,EAAA,MAAM,QAAA,GAAWL,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAWA,OAAO,KAAK,CAAA;AAC7B,EAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AACnB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,SAAS,EAAE,CAAA;AAErC,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,EAAK;AACxB,IAAA,IAAI,CAAC,IAAA,IAAQ,QAAA,IAAY,QAAA,EAAU;AACjC,MAAA,QAAA,CAAS,EAAE,CAAA;AACX,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAU,QAAA,CAAS,OAAA;AACzB,IAAA,IAAI,CAAC,OAAA,CAAQ,QAAA,CAAS,IAAI,CAAA,EAAG;AAC3B,MAAA,QAAA,CAAS,CAAC,GAAG,OAAA,EAAS,IAAI,CAAC,CAAA;AAAA,IAC7B;AAEA,IAAA,QAAA,CAAS,EAAE,CAAA;AAAA,EACb,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAkB;AA/DxC,IAAA,IAAAL,GAAAA;AAgEI,IAAA,IAAI,YAAY,QAAA,EAAU;AACxB,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,QAAA,CAAS,QAAQ,MAAA,CAAO,CAAC,GAAG,SAAA,KAAc,SAAA,KAAc,KAAK,CAAC,CAAA;AACvE,IAAA,CAAAA,GAAAA,GAAA,QAAA,CAAS,OAAA,KAAT,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAkB,KAAA,EAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA2C;AAChE,IAAA,IAAI,YAAY,QAAA,EAAU;AACxB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,gBAAA,CAAiB,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA,EAAG;AACnC,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,WAAA,EAAY;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,IAAe,CAAC,SAAS,QAAA,CAAS,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtE,MAAA,QAAA,CAAS,QAAA,CAAS,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA;AAAA,IACxC;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAa,MAAM;AAxF3B,IAAA,IAAAA,GAAAA;AAyFI,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,EAAU;AAC1B,MAAA,CAAAA,GAAAA,GAAA,QAAA,CAAS,OAAA,KAAT,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAkB,KAAA,EAAA;AAAA,IACpB;AAAA,EACF,CAAA;AAEA,EAAA,uBACEE,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,WAAW,sBAAA,CAAO,KAAA;AAAA,MAClB,KAAA;AAAA,MACA,IAAA;AAAA,MACA,EAAA,EAAI,OAAA;AAAA,MACJ,KAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MAEA,QAAA,kBAAAC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA,aAAA,CAAA,cAAA,CAAA;AAAA,UACC,eAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,UACnC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,UAC/B,YAAA,EAAY,GAAG,KAAK,CAAA,OAAA,CAAA;AAAA,UACpB,SAAA,EAAW;AAAA,YACT,sBAAA,CAAO,KAAA;AAAA,YACP,KAAA,GAAQ,uBAAO,KAAA,GAAQ,EAAA;AAAA,YACvB,QAAA,GAAW,uBAAO,QAAA,GAAW,EAAA;AAAA,YAC7B,QAAA,GAAW,uBAAO,QAAA,GAAW;AAAA,WAC/B,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,UACX,mBAAA,EAAmB,OAAA;AAAA,UACnB,OAAA,EAAS,UAAA;AAAA,UACT,IAAA,EAAK;AAAA,SAAA,EACD,mBAAA,CAAoB,WAAW,EAAE,OAAA,EAAS,QAAQ,KAAK,CAAA,EAAG,CAAA,CAAA,EAf/D;AAAA,UAiBE,QAAA,EAAA;AAAA,YAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBAChBA,IAAAA,CAAC,MAAA,EAAA,EAA8B,SAAA,EAAW,sBAAA,CAAO,IAAA,EAC/C,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,sBAAA,CAAO,WAAY,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,cACxC,CAAC,2BACAA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,YAAA,EAAY,UAAU,IAAI,CAAA,CAAA;AAAA,kBAC1B,WAAW,sBAAA,CAAO,MAAA;AAAA,kBAClB,QAAA;AAAA,kBACA,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,oBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,oBAAA,UAAA,CAAW,KAAK,CAAA;AAAA,kBAClB,CAAA;AAAA,kBAEA,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,QAAA,EAAA,MAAA,EAAC;AAAA;AAAA,eAC5B,GACE;AAAA,aAAA,EAAA,EAfK,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,EAgB3B,CACD,CAAA;AAAA,YACA,CAAC,2BACAA,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,QAAA;AAAA,gBACL,YAAA,EAAY,KAAA,CAAM,MAAA,GAAS,CAAA,YAAA,EAAe,KAAA,CAAM,WAAA,EAAa,CAAA,CAAA,GAAK,CAAA,IAAA,EAAO,KAAA,CAAM,WAAA,EAAa,CAAA,CAAA;AAAA,gBAC5F,WAAW,sBAAA,CAAO,KAAA;AAAA,gBAClB,QAAA;AAAA,gBACA,EAAA,EAAI,OAAA;AAAA,gBACJ,WAAA,EAAa,KAAA,CAAM,MAAA,GAAS,EAAA,GAAK,WAAA;AAAA,gBACjC,IAAA,EAAK,MAAA;AAAA,gBACL,KAAA,EAAO,KAAA;AAAA,gBACP,MAAA,EAAQ,WAAA;AAAA,gBACR,UAAU,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,gBAChD,SAAA,EAAW;AAAA;AAAA,aACb,GACE;AAAA;AAAA,SAAA;AAAA;AACN;AAAA,GACF;AAEJ;AAEO,IAAM,cAAA,GAAiB;;;ACjK9B,IAAA,kBAAA,GAAA,EAAA;ACqBO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,GAAA,GAAM,GAAA;AAAA,EACN,GAAA,GAAM,CAAA;AAAA,EACN,IAAA,GAAO,SAAA;AAAA,EACP,IAAA,GAAO,CAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,YAAY,iBAAA,EAAkB;AACpC,EAAA,MAAM,QAAA,GAAA,CAAa,KAAA,GAAQ,GAAA,KAAQ,GAAA,GAAM,GAAA,CAAA,GAAQ,GAAA;AACjD,EAAA,MAAM,UAAA,GAAa,EAAE,kBAAA,EAAoB,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA,EAAI;AACxD,EAAA,MAAM,cAAA,GAAiB,YAAA,CAAa,KAAA,EAAO,IAAI,CAAA;AAC/C,EAAA,MAAM,YAAA,GAAe,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAC3C,EAAA,MAAM,YAAA,GAAe,YAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAE3C,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA,EAAS,KAAA;AAAA,MACT,mBAAA,EAAmB,IAAA;AAAA,MACnB,IAAA;AAAA,MAEA,0BAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,kBAAA,CAAO,IAAA,EAAM,OAAO,UAAA,EAClC,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,kBAAA,CAAO,MAAA,EACrB,QAAA,EAAA;AAAA,0BAAAA,KAAC,OAAA,EAAA,EAAM,SAAA,EAAW,kBAAA,CAAO,UAAA,EAAY,SAAS,EAAA,EAC5C,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,UAAM,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YACZ,IAAA,mBAAOA,GAAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAS,MAAM,KAAA,EAAO,CAAA,SAAA,EAAY,KAAK,CAAA,CAAA,EAAI,CAAA,GAAK;AAAA,WAAA,EACnE,CAAA;AAAA,0BACAC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,mBAAO,KAAA,EAAQ,QAAA,EAAA;AAAA,YAAA,cAAA;AAAA,YAAe;AAAA,WAAA,EAAC;AAAA,SAAA,EAClD,CAAA;AAAA,wBACAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA,cAAA,CAAA;AAAA,YACC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,YAC/B,eAAA,EAAe,GAAA;AAAA,YACf,eAAA,EAAe,GAAA;AAAA,YACf,eAAA,EAAe,KAAA;AAAA,YACf,gBAAA,EAAgB,GAAG,cAAc,CAAA,CAAA,CAAA;AAAA,YACjC,SAAA,EAAW,GAAG,kBAAA,CAAO,MAAM,IAAI,KAAA,GAAQ,kBAAA,CAAO,QAAQ,EAAE,CAAA,CAAA;AAAA,YACxD,EAAA;AAAA,YACA,GAAA;AAAA,YACA,GAAA;AAAA,YACA,QAAA;AAAA,YACA,IAAA;AAAA,YACA,KAAA,EAAO,UAAA;AAAA,YACP,IAAA,EAAK,OAAA;AAAA,YACL;AAAA,WAAA,EACI,oBAAoB,SAAA,EAAW,EAAE,SAAS,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,SAChE;AAAA,wBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAO,MAAA,EACrB,QAAA,EAAA;AAAA,0BAAAA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,YAAA,YAAA;AAAA,YAAa;AAAA,WAAA,EAAC,CAAA;AAAA,0BACrBA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,YAAA,YAAA;AAAA,YAAa;AAAA,WAAA,EAAC;AAAA,SAAA,EACvB;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;ACnFA,IAAA,mBAAA,GAAA,EAAA;ACkBO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,YAAY,iBAAA,EAAkB;AAEpC,EAAA,uBACED,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,IAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MAEA,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAA,CAAO,MACrB,QAAA,kBAAAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA,aAAA,CAAA,cAAA,CAAA;AAAA,UACC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,UAC/B,SAAA,EAAW,GAAG,mBAAA,CAAO,MAAM,IAAI,KAAA,GAAQ,mBAAA,CAAO,QAAQ,EAAE,CAAA,CAAA;AAAA,UACxD,EAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SAAA,EACI,mBAAA,CAAoB,WAAW,EAAE,OAAA,EAAS,QAAQ,KAAK,CAAA,EAAG,CAAA,CAAA,EAN/D;AAAA,UAQE,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAC,MAAA,qBACZA,GAAAA,CAAC,QAAA,EAAA,EAAqB,QAAA,EAAA,MAAA,EAAA,EAAT,MAAgB,CAC9B;AAAA,SAAA;AAAA,OACH,EACF;AAAA;AAAA,GACF;AAEJ;;;AC1DA,IAAA,mBAAA,GAAA,EAAA;ACgBO,SAAS,WAAA,CAAY;AAAA,EAC1B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,YAAY,iBAAA,EAAkB;AAEpC,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,WAAW,mBAAA,CAAO,KAAA;AAAA,MAClB,KAAA;AAAA,MACA,YAAY,IAAA,KAAS,SAAA;AAAA,MACrB,YAAA,EAAa,QAAA;AAAA,MACb,IAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA,EAAS,OAAA;AAAA,MACT,IAAA;AAAA,MAEA,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAA,CAAO,QACrB,QAAA,kBAAAA,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA,cAAA,CAAA;AAAA,UACC,cAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,UAC/B,SAAA,EAAW,GAAG,mBAAA,CAAO,KAAK,IAAI,KAAA,GAAQ,mBAAA,CAAO,QAAQ,EAAE,CAAA,CAAA;AAAA,UACvD,OAAA;AAAA,UACA,EAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA,EAAK,QAAA;AAAA,UACL,IAAA,EAAK;AAAA,SAAA,EACD,oBAAoB,SAAA,EAAW,EAAE,SAAS,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,OAChE,EACF;AAAA;AAAA,GACF;AAEJ;;;ACxDA,IAAA,qBAAA,GAAA,EAAA;ACmBO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,QAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,WAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,YAAY,iBAAA,EAAkB;AACpC,EAAA,MAAM,cAAcO,KAAAA,EAAM;AAC1B,EAAA,MAAM,YAAY,KAAA,CAAM,MAAA;AACxB,EAAA,MAAM,gBAAgB,QAAA,KAAa,MAAA;AACnC,EAAA,MAAM,WAAA,GAAc,CAAC,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,WAAA,EAAa,aAAA,GAAgB,WAAA,GAAc,MAAS,CAAA,CACjF,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,EAAA,uBACEP,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,YAAA,EAAa,OAAA;AAAA,MACb,IAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,oBAAA,EAAsB,aAAA;AAAA,MAEtB,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,sBAAO,KAAA,EACrB,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,qBAAA,CAAO,SAAA,EACrB,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA,aAAA,CAAA,cAAA,CAAA;AAAA,cACC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,cAC/B,SAAA,EAAW;AAAA,gBACT,qBAAA,CAAO,QAAA;AAAA,gBACP,KAAA,GAAQ,sBAAO,KAAA,GAAQ,EAAA;AAAA,gBACvB,aAAA,GAAgB,sBAAO,SAAA,GAAY;AAAA,eACrC,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,cACX,EAAA;AAAA,cACA,SAAA,EAAW,QAAA;AAAA,cACX,QAAA;AAAA,cACA,WAAA;AAAA,cACA;AAAA,aAAA,EACI,mBAAA,CAAoB,WAAW,EAAE,OAAA,EAAS,QAAQ,KAAK,CAAA,EAAG,CAAA,CAAA,EAd/D;AAAA,cAeC,oBAAkB,WAAA,IAAe;AAAA,aAAA;AAAA,WACnC;AAAA,UACC,aAAA,mBACCC,IAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAW,sBAAO,WAAA,EACxC,QAAA,EAAA;AAAA,YAAA,SAAA;AAAA,YAAU,KAAA;AAAA,YAAI;AAAA,WAAA,EACjB,CAAA,GACE;AAAA,SAAA,EACN,CAAA;AAAA,QACC,gCACCA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,sBAAO,MAAA,EACpB,QAAA,EAAA;AAAA,UAAA,KAAA,mBACCD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,sBAAO,WAAA,EAAa,EAAA,EAAI,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,OAAA,EAAS,MAAK,OAAA,EAC5D,QAAA,EAAA,KAAA,EACH,CAAA,mBAEAA,IAAC,MAAA,EAAA,EAAK,CAAA;AAAA,0BAERC,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,qBAAA,CAAO,aAAA,EAAe,IAAI,WAAA,EACxC,QAAA,EAAA;AAAA,YAAA,SAAA;AAAA,YAAU,KAAA;AAAA,YAAI,QAAA;AAAA,YAAS;AAAA,WAAA,EAC1B;AAAA,SAAA,EACF,CAAA,GACE;AAAA,OAAA,EACN;AAAA;AAAA,GACF;AAEJ;;;AC9FA,IAAA,iBAAA,GAAA,EAAA;ACmBO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP,WAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,YAAY,iBAAA,EAAkB;AAEpC,EAAA,uBACED,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,IAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MAEA,QAAA,kBAAAA,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA,cAAA,CAAA;AAAA,UACC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,UAC/B,SAAA,EAAW,GAAG,iBAAA,CAAO,KAAK,IAAI,KAAA,GAAQ,iBAAA,CAAO,QAAQ,EAAE,CAAA,CAAA;AAAA,UACvD,EAAA;AAAA,UACA,WAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SAAA,EACI,oBAAoB,SAAA,EAAW,EAAE,SAAS,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA;AAChE;AAAA,GACF;AAEJ;ACtDA,MAAA,CAAO,UAAA,GAAa,KAAA;;;ACFpB,IAAA,wBAAA,GAAA,EAAA;ACkBO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,SAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,aAAA,GAAgB,MAAA;AAAA,EAChB,mBAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,UAAA,EAAU,IAAA;AAAA,MACV,YAAA,EAAa,QAAA;AAAA,MACb,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA,EAAS,KAAA;AAAA,MACT,mBAAA;AAAA,MACA,IAAA;AAAA,MAEA,QAAA,kBAAAC,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,yBAAO,MAAA,EAAQ,IAAA,EAAK,OAAA,EAAQ,YAAA,EAAY,KAAA,EACtD,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,WAAW,wBAAA,CAAO,SAAA;AAAA,YAClB,aAAA,EAAa;AAAA;AAAA,SACf;AAAA,wBACAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAW,aAAA;AAAA,YACX,gBAAc,KAAA,KAAU,OAAA;AAAA,YACxB,SAAA,EAAW,GAAG,wBAAA,CAAO,MAAM,IAAI,KAAA,KAAU,OAAA,GAAU,wBAAA,CAAO,MAAA,GAAS,EAAE,CAAA,CAAA;AAAA,YACrE,OAAA,EAAS,MAAM,QAAA,CAAS,OAAO,CAAA;AAAA,YAC/B,IAAA,EAAK,QAAA;AAAA,YAEL,0BAAAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,aAAA,EAAY,MAAA,EAAO,MAAM,KAAA,EAAO;AAAA;AAAA,SACnD;AAAA,wBACAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAW,YAAA;AAAA,YACX,gBAAc,KAAA,KAAU,MAAA;AAAA,YACxB,SAAA,EAAW,GAAG,wBAAA,CAAO,MAAM,IAAI,KAAA,KAAU,MAAA,GAAS,wBAAA,CAAO,MAAA,GAAS,EAAE,CAAA,CAAA;AAAA,YACpE,OAAA,EAAS,MAAM,QAAA,CAAS,MAAM,CAAA;AAAA,YAC9B,IAAA,EAAK,QAAA;AAAA,YAEL,0BAAAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,aAAA,EAAY,MAAA,EAAO,MAAM,MAAA,EAAQ;AAAA;AAAA;AACpD,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;AC3DO,SAAS,eAAA,CAAgB,EAAE,aAAA,EAAe,MAAA,EAAQ,cAAa,EAAyB;AAC7F,EAAA,IAAI,MAAA,KAAW,OAAA,IAAW,MAAA,KAAW,SAAA,EAAW;AAC9C,IAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,eAAe,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,EAC1C;AAEA,EAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,IAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,eAAe,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,EAC1C;AAEA,EAAA,IAAI,WAAW,SAAA,EAAW;AACxB,IAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,aAAA,EAAY,QAAO,SAAA,EAAW,YAAA,EAAc,OAAA,EAAQ,WAAA,EACvD,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,wBAAA;AAAA,QACF,IAAA,EAAK,MAAA;AAAA,QACL,MAAA,EAAO,cAAA;AAAA,QACP,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe,OAAA;AAAA,QACf,WAAA,EAAY;AAAA;AAAA,KACd,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,IAAA;AACT;AC5BA,IAAM,gBAAA,GAAmBM,cAA4B,IAAI,CAAA;AAEzD,SAAS,oBAAA,GAA8B;AACrC,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,2CAA2C,CAAA;AAEjF,EAAA,OAAA,CAAO,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,YAAA,CAAa,YAAA,CAAA,MAAkB,OAAA,GAAU,OAAA,GAAU,MAAA;AACpE;AAEO,SAAS,YAAA,GAAsB;AACpC,EAAA,MAAM,KAAA,GAAQE,WAAW,gBAAgB,CAAA;AAEzC,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,oBAAA,EAAqB;AAC9B;AAOO,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAU,KAAA,EAAM,EAA2B;AAC7E,EAAA,uBAAOR,GAAAA,CAAC,gBAAA,CAAiB,UAAjB,EAA0B,KAAA,EAAO,OAAQ,QAAA,EAAS,CAAA;AAC5D;;;AClCA,IAAA,aAAA,GAAA,EAAA;ACgBO,SAAS,KAAA,CAAM;AAAA,EACpB,WAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,WAAA,GAAc,IAAA;AAAA,EACd,SAAA;AAAA,EACA,MAAA,GAAS,OAAA;AAAA,EACT;AACF,CAAA,EAAe;AACb,EAAA,MAAM,QAAA,GAAW,MAAA,KAAW,OAAA,IAAW,MAAA,KAAW,YAAY,OAAA,GAAU,QAAA;AACxE,EAAA,MAAM,QAAQ,YAAA,EAAa;AAE3B,EAAA,uBACEC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,aAAA,CAAO,KAAK,IAAI,WAAA,GAAc,aAAA,CAAO,cAAc,EAAE,CAAA,CAAA;AAAA,MACnE,aAAA,EAAa,MAAA;AAAA,MACb,YAAA,EAAY,KAAA;AAAA,MACZ,IAAA,EAAM,QAAA;AAAA,MAEN,QAAA,EAAA;AAAA,wBAAAD,IAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,cAAO,IAAA,EACxC,QAAA,kBAAAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,eAAe,aAAA,CAAO,QAAA,EAAU,QAAgB,YAAA,EAAc,aAAA,CAAO,SAAS,CAAA,EACjG,CAAA;AAAA,wBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAO,OAAA,EACrB,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,aAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BACnCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,aAAA,CAAO,aAAc,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EACjD,CAAA;AAAA,QACC,8BACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAW,eAAA;AAAA,YACX,WAAW,aAAA,CAAO,OAAA;AAAA,YAClB,OAAA,EAAS,SAAA;AAAA,YACT,IAAA,EAAK,QAAA;AAAA,YAEL,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,WAAW,aAAA,CAAO,WAAA,EAAa,OAAA,EAAQ,WAAA,EAC7D,QAAA,kBAAAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,sCAAA;AAAA,gBACF,IAAA,EAAK,MAAA;AAAA,gBACL,MAAA,EAAO,cAAA;AAAA,gBACP,aAAA,EAAc,OAAA;AAAA,gBACd,WAAA,EAAY;AAAA;AAAA,aACd,EACF;AAAA;AAAA,SACF,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;ACzDA,IAAM,kBAAA,GAAqB;AAAA,EACzB,SAAA;AAAA,EACA,wBAAA;AAAA,EACA,0BAAA;AAAA,EACA,uBAAA;AAAA,EACA,wBAAA;AAAA,EACA;AACF,CAAA,CAAE,KAAK,IAAI,CAAA;AAEJ,SAAS,qBAAqB,SAAA,EAAwB;AAC3D,EAAA,OAAO,MAAM,IAAA,CAAK,SAAA,CAAU,gBAAA,CAA8B,kBAAkB,CAAC,CAAA,CAAE,MAAA;AAAA,IAC7E,CAAC,OAAA,KAAY,OAAA,CAAQ,YAAA,CAAa,aAAa,CAAA,KAAM;AAAA,GACvD;AACF;AASO,SAAS,uBAAA,CACd,QACA,YAAA,EACA;AAAA,EACE,eAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,YAAA,GAAe,IAAA;AAAA,EACf,SAAA,GAAY;AACd,CAAA,GAAiC,EAAC,EAClC;AACA,EAAA,MAAM,oBAAA,GAAuBE,OAA2B,IAAI,CAAA;AAE5D,EAAAG,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,oBAAA,CAAqB,UAAU,QAAA,CAAS,aAAA;AAExC,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,gBAAA,GAAmB,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA;AAC7C,IAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAE/B,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,gBAAA;AAAA,IACjC,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,UAAU,CAAC,CAAA;AAEvB,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM;AA9DrD,MAAA,IAAAP,GAAAA;AA+DM,MAAA,MAAM,gBAAgB,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,OAAA;AACvC,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,aAAA,CAAc,KAAA,EAAM;AACpB,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,YAAY,YAAA,CAAa,OAAA;AAC/B,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA;AAAA,MACF;AAEA,MAAA,CAAAA,MAAA,oBAAA,CAAqB,SAAS,EAAE,CAAC,CAAA,KAAjC,gBAAAA,GAAAA,CAAoC,KAAA,EAAA;AAAA,IACtC,CAAC,CAAA;AAED,IAAA,OAAO,MAAM,MAAA,CAAO,oBAAA,CAAqB,KAAK,CAAA;AAAA,EAChD,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAA,EAAc,eAAe,CAAC,CAAA;AAE1C,EAAAO,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,YAAA,EAAc;AAC5B,MAAA;AAAA,IACF;AAEA,IAAA,OAAO,MAAM;AArFjB,MAAA,IAAAP,GAAAA,EAAAC,GAAAA;AAsFM,MAAA,CAAAA,GAAAA,GAAAA,CAAAD,MAAA,oBAAA,CAAqB,OAAA,KAArB,gBAAAA,GAAAA,CAA8B,KAAA,KAA9B,IAAA,GAAA,MAAA,GAAAC,GAAAA,CAAA,IAAA,CAAAD,GAAAA,CAAAA;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAY,CAAC,CAAA;AAEzB,EAAAO,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,SAAA,EAAW;AACzB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,KAAA,IAAS,CAAC,aAAa,OAAA,EAAS;AAChD,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,SAAA,GAAY,oBAAA,CAAqB,YAAA,CAAa,OAAO,CAAA;AAC3D,MAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,KAAA,GAAQ,UAAU,CAAC,CAAA;AACzB,MAAA,MAAM,IAAA,GAAO,SAAA,CAAU,EAAA,CAAG,EAAE,CAAA;AAC5B,MAAA,MAAM,UAAU,QAAA,CAAS,aAAA;AAEzB,MAAA,IAAI,KAAA,CAAM,QAAA,IAAY,OAAA,KAAY,KAAA,EAAO;AACvC,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,IAAA,CAAK,KAAA,EAAM;AACX,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,CAAC,KAAA,CAAM,QAAA,IAAY,OAAA,KAAY,IAAA,EAAM;AACvC,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,KAAA,CAAM,KAAA,EAAM;AAAA,MACd;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EACpE,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAA,EAAc,SAAS,CAAC,CAAA;AACtC;;;AC5HA,IAAA,cAAA,GAAA,EAAA;ACcA,IAAM,iBAAA,GAAoB,GAAA;AAoB1B,SAAS,oBAAoB,MAAA,EAAoC;AAC/D,EAAA,IAAI,WAAW,OAAA,EAAS;AACtB,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,UAAA,CAAW,WAA4B,MAAA,EAAqC;AACnF,EAAA,MAAM,cAAA,GAAiB,oBAAoB,MAAM,CAAA;AAEjD,EAAA,IAAI,cAAc,IAAA,EAAM;AACtB,IAAA,OAAO,CAAC,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,SAAA,EAAW,OAAA,EAAS,gBAAgB,CAAA;AAAA,EACrE;AAEA,EAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,IAAA,OAAO;AAAA,MACL,EAAE,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,SAAS,WAAA,EAAY;AAAA,MACtD,EAAE,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,SAAA,EAAW,SAAS,cAAA;AAAe,KAC7D;AAAA,EACF;AAEA,EAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,IAAA,OAAO;AAAA,MACL,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,SAAS,WAAA,EAAY;AAAA,MAC1D,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,SAAA,EAAW,SAAS,cAAA;AAAe,KAChE;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,SAAS,WAAA,EAAY;AAAA,IAC1D,EAAE,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAW,SAAS,cAAA;AAAe,GAC5D;AACF;AAEO,SAAS,MAAA,CAAO;AAAA,EACrB,SAAA,GAAY,WAAA;AAAA,EACZ,QAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAA,GAAoB,IAAA;AAAA,EACpB,eAAA,GAAkB,IAAA;AAAA,EAClB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA,GAAS,MAAA;AAAA,EACT;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,UAAUE,KAAAA,EAAM;AACtB,EAAA,MAAM,gBAAgBA,KAAAA,EAAM;AAC5B,EAAA,MAAM,QAAA,GAAWL,OAAoB,IAAI,CAAA;AACzC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,SAAS,IAAI,CAAA;AAC7C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAsB,SAAS,CAAA;AAEzD,EAAA,uBAAA,CAAwB,IAAA,IAAQ,UAAU,QAAQ,CAAA;AAElD,EAAAE,UAAU,MAAM;AACd,IAAA,IAAI,OAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAC/C,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,WAAA,CAAY,IAAI,CAAA;AAChB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,SAAS,CAAA;AAClB,MAAA,OAAA,GAAU,OAAO,UAAA,CAAW,MAAM,WAAA,CAAY,KAAK,GAAG,iBAAiB,CAAA;AAAA,IACzE,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,qBAAqB,KAAK,CAAA;AACjC,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAA,CAAO,aAAa,OAAO,CAAA;AAAA,MAC7B;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,eAAA,EAAiB;AAC7B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,OAAA,CAAQ,SAAS,CAAA;AAAA,MACnB;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAChD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EAClE,CAAA,EAAG,CAAC,eAAA,EAAiB,OAAA,EAAS,IAAI,CAAC,CAAA;AAEnC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,SAAA,EAAW,MAAM,CAAA;AAE5C,EAAA,uBACEL,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,cAAA,CAAO,QAAA;AAAA,MAClB,kBAAA,EAAkB,iBAAA;AAAA,MAClB,YAAA,EAAY,KAAA;AAAA,MACZ,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,IAAI,KAAA,CAAM,aAAA,KAAkB,KAAA,CAAM,MAAA,IAAU,iBAAA,EAAmB;AAC7D,UAAA,OAAA,CAAQ,SAAS,CAAA;AAAA,QACnB;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,kBAAAC,IAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,QAAA;AAAA,UACL,kBAAA,EAAkB,aAAA;AAAA,UAClB,iBAAA,EAAiB,OAAA;AAAA,UACjB,YAAA,EAAW,MAAA;AAAA,UACX,WAAW,cAAA,CAAO,MAAA;AAAA,UAClB,YAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAa,MAAA;AAAA,UACb,IAAA,EAAK,QAAA;AAAA,UAEL,QAAA,EAAA;AAAA,4BAAAD,IAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,eAAO,IAAA,EACxC,QAAA,kBAAAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,eAAe,cAAA,CAAO,QAAA,EAAU,QAAgB,YAAA,EAAc,cAAA,CAAO,SAAS,CAAA,EACjG,CAAA;AAAA,4BACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,eAAO,OAAA,EACrB,QAAA,EAAA;AAAA,8BAAAD,IAAC,IAAA,EAAA,EAAG,SAAA,EAAW,eAAO,KAAA,EAAO,EAAA,EAAI,SAC9B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,8BACAC,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,cAAA,CAAO,WAAA,EAAa,IAAI,aAAA,EACpC,QAAA,EAAA;AAAA,gCAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAA,CAAO,cAAA,EAAiB,QAAA,EAAA;AAAA,kBAAA,MAAA;AAAA,kBAAO;AAAA,iBAAA,EAAE,CAAA;AAAA,gBACjD;AAAA,eAAA,EACH,CAAA;AAAA,cACC,QAAA,mBAAWD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,cAAA,CAAO,IAAA,EAAO,UAAS,CAAA,GAAS,IAAA;AAAA,8BAC5DA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAA,CAAO,OAAA,EACpB,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZA,GAAAA,CAAC,MAAA,EAAA,EAA0B,OAAA,EAAS,MAAA,CAAO,OAAA,EAAS,OAAA,EAAS,MAAM,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EACrF,QAAA,EAAA,MAAA,CAAO,KAAA,EAAA,EADG,MAAA,CAAO,KAEpB,CACD,CAAA,EACH;AAAA,aAAA,EACF;AAAA;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;;;AC9KA,IAAA,aAAA,GAAA,EAAA;ACWA,IAAMS,kBAAAA,GAAoB,GAAA;AAgBnB,SAAS,KAAA,CAAM;AAAA,EACpB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,WAAA;AAAA,EACA,iBAAA,GAAoB,IAAA;AAAA,EACpB,eAAA,GAAkB,IAAA;AAAA,EAClB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP;AACF,CAAA,EAAe;AACb,EAAA,MAAM,UAAUF,KAAAA,EAAM;AACtB,EAAA,MAAM,gBAAgBA,KAAAA,EAAM;AAC5B,EAAA,MAAM,QAAA,GAAWL,OAAoB,IAAI,CAAA;AACzC,EAAA,MAAM,QAAA,GAAWA,OAA0B,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,SAAS,IAAI,CAAA;AAC7C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAqB,SAAS,CAAA;AAExD,EAAA,uBAAA,CAAwB,IAAA,IAAQ,UAAU,QAAA,EAAU;AAAA,IAClD,eAAA,EAAiB,cAAc,QAAA,GAAW;AAAA,GAC3C,CAAA;AAED,EAAAE,UAAU,MAAM;AACd,IAAA,IAAI,OAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAC/C,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,WAAA,CAAY,IAAI,CAAA;AAChB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,SAAS,CAAA;AAClB,MAAA,OAAA,GAAU,OAAO,UAAA,CAAW,MAAM,WAAA,CAAY,KAAK,GAAGI,kBAAiB,CAAA;AAAA,IACzE,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,qBAAqB,KAAK,CAAA;AACjC,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAA,CAAO,aAAa,OAAO,CAAA;AAAA,MAC7B;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAJ,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,eAAA,EAAiB;AAC7B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,OAAA,EAAQ;AAAA,MACV;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAChD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EAClE,CAAA,EAAG,CAAC,eAAA,EAAiB,OAAA,EAAS,IAAI,CAAC,CAAA;AAEnC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEL,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,aAAA,CAAO,QAAA;AAAA,MAClB,kBAAA,EAAkB,iBAAA;AAAA,MAClB,YAAA,EAAY,KAAA;AAAA,MACZ,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,IAAI,KAAA,CAAM,aAAA,KAAkB,KAAA,CAAM,MAAA,IAAU,iBAAA,EAAmB;AAC7D,UAAA,OAAA,EAAQ;AAAA,QACV;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,kBAAAC,IAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,QAAA;AAAA,UACL,kBAAA,EAAkB,cAAc,aAAA,GAAgB,MAAA;AAAA,UAChD,iBAAA,EAAiB,OAAA;AAAA,UACjB,YAAA,EAAW,MAAA;AAAA,UACX,WAAW,aAAA,CAAO,KAAA;AAAA,UAClB,YAAA,EAAY,KAAA;AAAA,UACZ,WAAA,EAAW,IAAA;AAAA,UACX,IAAA,EAAK,QAAA;AAAA,UAEL,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,aAAA,CAAO,MAAA,EACxB,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,CAAO,OAAA,EACrB,QAAA,EAAA;AAAA,gCAAAD,IAAC,IAAA,EAAA,EAAG,SAAA,EAAW,cAAO,KAAA,EAAO,EAAA,EAAI,SAC9B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,gBACC,WAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,cAAO,WAAA,EAAa,EAAA,EAAI,aAAA,EACnC,QAAA,EAAA,WAAA,EACH,CAAA,GACE;AAAA,eAAA,EACN,CAAA;AAAA,cACC,8BACCA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,QAAA;AAAA,kBACL,YAAA,EAAW,aAAA;AAAA,kBACX,WAAW,aAAA,CAAO,KAAA;AAAA,kBAClB,OAAA,EAAS,OAAA;AAAA,kBACT,IAAA,EAAK,QAAA;AAAA,kBAEL,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,WAAW,aAAA,CAAO,SAAA,EAAW,OAAA,EAAQ,WAAA,EAC3D,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,CAAA,EAAE,sCAAA;AAAA,sBACF,IAAA,EAAK,MAAA;AAAA,sBACL,MAAA,EAAO,cAAA;AAAA,sBACP,aAAA,EAAc,OAAA;AAAA,sBACd,WAAA,EAAY;AAAA;AAAA,mBACd,EACF;AAAA;AAAA,eACF,GACE;AAAA,aAAA,EACN,CAAA;AAAA,4BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,CAAO,MAAO,QAAA,EAAS,CAAA;AAAA,YACtC,UAAU,OAAA,mBACTC,KAAC,QAAA,EAAA,EAAO,SAAA,EAAW,cAAO,MAAA,EACvB,QAAA,EAAA;AAAA,cAAA,MAAA,mBAASD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,aAAA,CAAO,aAAA,EAAgB,kBAAO,CAAA,GAAS,IAAA;AAAA,cAChE,OAAA,mBAAUA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,aAAA,CAAO,OAAA,EAAU,mBAAQ,CAAA,GAAS;AAAA,aAAA,EAC/D,CAAA,GACE;AAAA;AAAA;AAAA;AACN;AAAA,GACF;AAEJ;AAEO,SAAS,mBAAA,CAAoB,EAAE,OAAA,EAAQ,EAA4B;AACxE,EAAA,uBACEC,IAAAA,CAAAG,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAJ,IAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,WAAA,EAAY,OAAA,EAAS,SAAS,QAAA,EAAA,QAAA,EAE9C,CAAA;AAAA,oBACAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,SAAA,EAAU,OAAA,EAAS,SAAS,QAAA,EAAA,cAAA,EAE5C;AAAA,GAAA,EACF,CAAA;AAEJ;;;ACtKA,IAAA,cAAA,GAAA,EAAA;ACWA,IAAMS,kBAAAA,GAAoB,GAAA;AAgBnB,SAAS,MAAA,CAAO;AAAA,EACrB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,WAAA;AAAA,EACA,iBAAA,GAAoB,IAAA;AAAA,EACpB,eAAA,GAAkB,IAAA;AAAA,EAClB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,UAAUF,KAAAA,EAAM;AACtB,EAAA,MAAM,gBAAgBA,KAAAA,EAAM;AAC5B,EAAA,MAAM,QAAA,GAAWL,OAAoB,IAAI,CAAA;AACzC,EAAA,MAAM,QAAA,GAAWA,OAA0B,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,SAAS,IAAI,CAAA;AAC7C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAsB,SAAS,CAAA;AAEzD,EAAA,uBAAA,CAAwB,IAAA,IAAQ,UAAU,QAAA,EAAU;AAAA,IAClD,eAAA,EAAiB,cAAc,QAAA,GAAW;AAAA,GAC3C,CAAA;AAED,EAAAE,UAAU,MAAM;AACd,IAAA,IAAI,OAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAC/C,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,WAAA,CAAY,IAAI,CAAA;AAChB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,SAAS,CAAA;AAClB,MAAA,OAAA,GAAU,OAAO,UAAA,CAAW,MAAM,WAAA,CAAY,KAAK,GAAGI,kBAAiB,CAAA;AAAA,IACzE,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,qBAAqB,KAAK,CAAA;AACjC,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAA,CAAO,aAAa,OAAO,CAAA;AAAA,MAC7B;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAJ,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,eAAA,EAAiB;AAC7B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,OAAA,EAAQ;AAAA,MACV;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAChD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EAClE,CAAA,EAAG,CAAC,eAAA,EAAiB,OAAA,EAAS,IAAI,CAAC,CAAA;AAEnC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEL,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,cAAA,CAAO,QAAA;AAAA,MAClB,kBAAA,EAAkB,iBAAA;AAAA,MAClB,YAAA,EAAY,KAAA;AAAA,MACZ,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,IAAI,KAAA,CAAM,aAAA,KAAkB,KAAA,CAAM,MAAA,IAAU,iBAAA,EAAmB;AAC7D,UAAA,OAAA,EAAQ;AAAA,QACV;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,kBAAAC,IAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,QAAA;AAAA,UACL,kBAAA,EAAkB,cAAc,aAAA,GAAgB,MAAA;AAAA,UAChD,iBAAA,EAAiB,OAAA;AAAA,UACjB,YAAA,EAAW,MAAA;AAAA,UACX,WAAW,cAAA,CAAO,MAAA;AAAA,UAClB,YAAA,EAAY,KAAA;AAAA,UACZ,WAAA,EAAW,IAAA;AAAA,UACX,IAAA,EAAK,QAAA;AAAA,UAEL,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,cAAA,CAAO,MAAA,EACxB,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAA,CAAO,OAAA,EACrB,QAAA,EAAA;AAAA,gCAAAD,IAAC,IAAA,EAAA,EAAG,SAAA,EAAW,eAAO,KAAA,EAAO,EAAA,EAAI,SAC9B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,gBACC,WAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,eAAO,WAAA,EAAa,EAAA,EAAI,aAAA,EACnC,QAAA,EAAA,WAAA,EACH,CAAA,GACE;AAAA,eAAA,EACN,CAAA;AAAA,cACC,8BACCA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,QAAA;AAAA,kBACL,YAAA,EAAW,cAAA;AAAA,kBACX,WAAW,cAAA,CAAO,KAAA;AAAA,kBAClB,OAAA,EAAS,OAAA;AAAA,kBACT,IAAA,EAAK,QAAA;AAAA,kBAEL,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,WAAW,cAAA,CAAO,SAAA,EAAW,OAAA,EAAQ,WAAA,EAC3D,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,CAAA,EAAE,sCAAA;AAAA,sBACF,IAAA,EAAK,MAAA;AAAA,sBACL,MAAA,EAAO,cAAA;AAAA,sBACP,aAAA,EAAc,OAAA;AAAA,sBACd,WAAA,EAAY;AAAA;AAAA,mBACd,EACF;AAAA;AAAA,eACF,GACE;AAAA,aAAA,EACN,CAAA;AAAA,4BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAA,CAAO,MAAO,QAAA,EAAS,CAAA;AAAA,YACtC,UAAU,OAAA,mBACTC,KAAC,QAAA,EAAA,EAAO,SAAA,EAAW,eAAO,MAAA,EACvB,QAAA,EAAA;AAAA,cAAA,MAAA,mBAASD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,cAAA,CAAO,aAAA,EAAgB,kBAAO,CAAA,GAAS,IAAA;AAAA,cAChE,OAAA,mBAAUA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,cAAA,CAAO,OAAA,EAAU,mBAAQ,CAAA,GAAS;AAAA,aAAA,EAC/D,CAAA,GACE;AAAA;AAAA;AAAA;AACN;AAAA,GACF;AAEJ;AAEO,SAAS,oBAAA,CAAqB,EAAE,OAAA,EAAQ,EAA4B;AACzE,EAAA,uBACEC,IAAAA,CAAAG,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAJ,IAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,WAAA,EAAY,OAAA,EAAS,SAAS,QAAA,EAAA,OAAA,EAE9C,CAAA;AAAA,oBACAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,SAAA,EAAU,OAAA,EAAS,SAAS,QAAA,EAAA,OAAA,EAE5C;AAAA,GAAA,EACF,CAAA;AAEJ;;;ACvKA,IAAA,eAAA,GAAA,EAAA;ACuCA,SAAS,YAAA,CAAa,OAAA,EAAoB,YAAA,EAA4B,KAAA,EAAe;AACnF,EAAA,IAAI,cAAA,CAAe,OAAO,CAAA,EAAG;AAC3B,IAAA,MAAM,OAAA,GAAU,OAAA;AAChB,IAAA,OAAO,YAAA,CAAa,OAAA,EAAS,aAAA,CAAA,cAAA,CAAA,EAAA,EACxB,YAAA,CAAA,EADwB;AAAA,MAE3B,SAAS,MAAM;AA5CrB,QAAA,IAAAF,GAAAA,EAAAC,GAAAA;AA6CQ,QAAA,CAAAA,OAAAD,GAAAA,GAAA,OAAA,CAAQ,OAAM,OAAA,KAAd,IAAA,GAAA,MAAA,GAAAC,IAAA,IAAA,CAAAD,GAAAA,CAAAA;AACA,QAAA,YAAA,CAAa,OAAA,EAAQ;AAAA,MACvB;AAAA,KACF,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,uBACEE,GAAAA,CAAC,MAAA,EAAA,aAAA,CAAA,cAAA,CAAA,EAAO,cAAY,KAAA,EAAA,EAAW,YAAA,CAAA,EAA9B,EACE,QAAA,EAAA,OAAA,EAAA,CACH,CAAA;AAEJ;AAEO,SAAS,OAAA,CAAQ;AAAA,EACtB,QAAA;AAAA,EACA,aAAA,GAAgB,IAAA;AAAA,EAChB,cAAA,GAAiB,IAAA;AAAA,EACjB,WAAA,GAAc,KAAA;AAAA,EACd,KAAA,GAAQ,gBAAA;AAAA,EACR,YAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,SAAA,GAAY,IAAA;AAAA,EACZ,KAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,YAAYO,KAAAA,EAAM;AACxB,EAAA,MAAM,UAAUA,KAAAA,EAAM;AACtB,EAAA,MAAM,OAAA,GAAUL,OAAwB,IAAI,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAWA,OAAwB,IAAI,CAAA;AAC7C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,SAAS,WAAW,CAAA;AAC5D,EAAA,MAAM,aAAa,IAAA,KAAS,MAAA;AAC5B,EAAA,MAAM,OAAA,GAAU,aAAa,IAAA,GAAO,YAAA;AAEpC,EAAA,uBAAA,CAAwB,SAAS,QAAA,EAAU;AAAA,IACzC,UAAA,EAAY,KAAA;AAAA,IACZ,YAAA,EAAc,IAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACZ,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,CAAC,QAAA,KAAsB;AACpD,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,IAC1B;AAEA,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,QAAA,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,UAAA,EAAY,YAAY,CAAC,CAAA;AAE7B,EAAAE,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAwB;AAlGvD,MAAA,IAAAP,GAAAA;AAmGM,MAAA,IAAI,cAAA,IAAkB,GAACA,GAAAA,GAAA,OAAA,CAAQ,YAAR,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAiB,QAAA,CAAS,KAAA,CAAM,MAAA,CAAA,CAAA,EAAiB;AACtE,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,aAAA,IAAiB,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU;AAC3C,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,iBAAiB,CAAA;AAC1D,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,eAAe,iBAAiB,CAAA;AAC7D,MAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACvD,CAAA;AAAA,EACF,GAAG,CAAC,aAAA,EAAe,cAAA,EAAgB,UAAA,EAAY,OAAO,CAAC,CAAA;AAEvD,EAAA,uBACEG,KAAC,MAAA,EAAA,EAAK,SAAA,EAAW,gBAAO,IAAA,EAAM,gBAAA,EAAgB,SAAA,EAAW,GAAA,EAAK,OAAA,EAC3D,QAAA,EAAA;AAAA,IAAA,YAAA;AAAA,MACC,OAAA;AAAA,MACA;AAAA,QACE,eAAA,EAAiB,SAAA;AAAA,QACjB,eAAA,EAAiB,OAAA;AAAA,QACjB,eAAA,EAAiB,QAAA;AAAA,QACjB,OAAA,EAAS,MAAM,UAAA,CAAW,CAAC,OAAO;AAAA,OACpC;AAAA,MACA;AAAA,KACF;AAAA,IACC,0BACCA,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,QAAA;AAAA,QACL,iBAAA,EAAiB,QAAQ,OAAA,GAAU,MAAA;AAAA,QACnC,WAAW,eAAA,CAAO,KAAA;AAAA,QAClB,gBAAA,EAAgB,SAAA;AAAA,QAChB,EAAA,EAAI,SAAA;AAAA,QACJ,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,EAAA;AAAA,QAET,QAAA,EAAA;AAAA,UAAA,SAAA,mBAAYD,IAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,SAAA,EAAW,eAAA,CAAO,OAAO,CAAA,GAAK,IAAA;AAAA,UACnE,KAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,eAAA,CAAO,KAAA,EAAO,EAAA,EAAI,OAAA,EAAS,IAAA,EAAK,SAAA,EAAU,YAAA,EAAY,CAAA,EACpE,iBACH,CAAA,GACE,IAAA;AAAA,0BACJA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,eAAA,CAAO,SAAU,QAAA,EAAS;AAAA;AAAA;AAAA,KAC7C,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AChIO,IAAM,oBAAA,GAAuBM,cAAgD,IAAI,CAAA;AAEjF,SAAS,gBAAA,GAAmB;AACjC,EAAA,OAAOE,WAAW,oBAAoB,CAAA;AACxC;;;ACnBO,SAAS,0BAAA,CACd,UAAA,EACA,QAAA,EACA,SAAA,EACA,QAAA,EACqB;AAbvB,EAAA,IAAAV,GAAAA,EAAAC,GAAAA;AAcE,EAAA,MAAM,GAAA,GAAM,WAAW,CAAA,GAAI,CAAA;AAC3B,EAAA,MAAM,SAAA,GAAA,CAAYD,GAAAA,GAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,KAAA,KAAV,IAAA,GAAAA,GAAAA,GAAmB,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,MAAA,CAAO,UAAA,GAAa,EAAE,CAAA;AACzE,EAAA,MAAM,UAAA,GAAA,CAAaC,GAAAA,GAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,MAAA,KAAV,OAAAA,GAAAA,GAAoB,CAAA;AAEvC,EAAA,QAAQ,SAAA;AAAW,IACjB,KAAK,YAAA;AACH,MAAA,OAAO,EAAE,KAAK,UAAA,CAAW,MAAA,GAAS,KAAK,IAAA,EAAM,UAAA,CAAW,QAAQ,SAAA,EAAU;AAAA,IAC5E,KAAK,WAAA;AACH,MAAA,OAAO,EAAE,KAAK,UAAA,CAAW,GAAA,GAAM,MAAM,UAAA,EAAY,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,IACzE,KAAK,SAAA;AACH,MAAA,OAAO,EAAE,KAAK,UAAA,CAAW,GAAA,GAAM,MAAM,UAAA,EAAY,IAAA,EAAM,UAAA,CAAW,KAAA,GAAQ,SAAA,EAAU;AAAA,IACtF,KAAK,cAAA;AAAA,IACL;AACE,MAAA,OAAO,EAAE,GAAA,EAAK,UAAA,CAAW,SAAS,GAAA,EAAK,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA;AAEnE;AAEO,SAAS,0BAAA,CACd,MACA,eAAA,EACqB;AACrB,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA;AACjC,EAAA,MAAM,UAAA,GAAA,CAAc,eAAA,IAAmB,GAAA,GAAM,GAAA,GAAM,MAAM,qBAAA,EAAsB;AAC/E,EAAA,MAAM,gBAAgB,MAAA,CAAO,UAAA;AAC7B,EAAA,MAAM,KAAA,GAAQ,eAAA,GACV,UAAA,CAAW,KAAA,GACX,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,KAAA,EAAO,GAAG,CAAA,EAAG,gBAAgB,EAAE,CAAA;AAChE,EAAA,MAAM,IAAA,GAAO,eAAA,GACT,UAAA,CAAW,IAAA,GACX,KAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,IAAA,EAAM,EAAE,CAAA,EAAG,aAAA,GAAgB,QAAQ,EAAE,CAAA;AAEtE,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,UAAA,CAAW,MAAA,IAAU,eAAA,GAAkB,CAAA,GAAI,EAAA,CAAA;AAAA,IAChD,IAAA;AAAA,IACA;AAAA,GACF;AACF;;;AClDA,IAAA,gBAAA,GAAA,EAAA;ACcA,IAAM,iBAAA,GAAoB,GAAA;AAmDnB,IAAM,uBAAA,GAA4C;AAAA,EACvD,OAAA,EAAS,UAAA;AAAA,EACT,KAAA,EAAO,wBAAA;AAAA,EACP,WAAA,EACE,qGAAA;AAAA,EACF,WAAA,EAAa;AACf;AAEO,IAAM,oBAAA,GAAyC;AAAA,EACpD;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,KAAA,EAAO,KAAA;AAAA,IACP,QAAA,EAAU,uBAAA;AAAA,IACV,QAAA,EAAU;AAAA,MACR;AAAA,QACE,EAAA,EAAI,YAAA;AAAA,QACJ,KAAA,EAAO,YAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL;AAAA,YACE,EAAA,EAAI,QAAA;AAAA,YACJ,KAAA,EAAO,eAAA;AAAA,YACP,WAAA,EAAa;AAAA,WACf;AAAA,UACA;AAAA,YACE,EAAA,EAAI,QAAA;AAAA,YACJ,KAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAa;AAAA,WACf;AAAA,UACA;AAAA,YACE,EAAA,EAAI,eAAA;AAAA,YACJ,KAAA,EAAO,eAAA;AAAA,YACP,WAAA,EAAa;AAAA;AACf;AACF,OACF;AAAA,MACA;AAAA,QACE,EAAA,EAAI,SAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL;AAAA,YACE,EAAA,EAAI,OAAA;AAAA,YACJ,KAAA,EAAO,mBAAA;AAAA,YACP,WAAA,EAAa;AAAA,WACf;AAAA,UACA;AAAA,YACE,EAAA,EAAI,gBAAA;AAAA,YACJ,KAAA,EAAO,eAAA;AAAA,YACP,WAAA,EAAa;AAAA,WACf;AAAA,UACA;AAAA,YACE,EAAA,EAAI,mBAAA;AAAA,YACJ,KAAA,EAAO,mBAAA;AAAA,YACP,WAAA,EAAa;AAAA;AACf;AACF;AACF;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU;AAAA,MACR,OAAA,EAAS,SAAA;AAAA,MACT,KAAA,EAAO,kCAAA;AAAA,MACP,WAAA,EAAa,wEAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAAA,IACA,QAAA,EAAU;AAAA,MACR;AAAA,QACE,EAAA,EAAI,QAAA;AAAA,QACJ,KAAA,EAAO,QAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,aAAA,EAAe,aAAa,uCAAA,EAAwC;AAAA,UACzF,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,iBAAA,EAAmB,aAAa,2CAAA,EAA4C;AAAA,UACnG,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,SAAA,EAAW,aAAa,6CAAA;AAA8C;AAC/F,OACF;AAAA,MACA;AAAA,QACE,EAAA,EAAI,UAAA;AAAA,QACJ,KAAA,EAAO,UAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,gBAAA,EAAkB,aAAa,iDAAA,EAAkD;AAAA,UACvG,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,gBAAA,EAAkB,aAAa,oDAAA,EAAqD;AAAA,UAC3G,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,aAAa,+CAAA;AAAgD;AAC9F;AACF;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU;AAAA,MACR,OAAA,EAAS,UAAA;AAAA,MACT,KAAA,EAAO,4BAAA;AAAA,MACP,WAAA,EAAa,6EAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAAA,IACA,QAAA,EAAU;AAAA,MACR;AAAA,QACE,EAAA,EAAI,WAAA;AAAA,QACJ,KAAA,EAAO,WAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,gBAAA,EAAkB,aAAa,kDAAA,EAAmD;AAAA,UAC3G,EAAE,EAAA,EAAI,cAAA,EAAgB,KAAA,EAAO,oBAAA,EAAsB,aAAa,wCAAA,EAAyC;AAAA,UACzG,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,mBAAA,EAAqB,aAAa,2CAAA;AAA4C;AAC3G,OACF;AAAA,MACA;AAAA,QACE,EAAA,EAAI,QAAA;AAAA,QACJ,KAAA,EAAO,QAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,aAAa,4CAAA,EAA6C;AAAA,UAC7F,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,cAAA,EAAgB,aAAa,2CAAA,EAA4C;AAAA,UAC/F,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,gBAAA,EAAkB,aAAa,6CAAA;AAA8C;AACrG;AACF;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU;AAAA,MACR,OAAA,EAAS,MAAA;AAAA,MACT,KAAA,EAAO,yBAAA;AAAA,MACP,WAAA,EAAa,oFAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAAA,IACA,QAAA,EAAU;AAAA,MACR;AAAA,QACE,EAAA,EAAI,MAAA;AAAA,QACJ,KAAA,EAAO,eAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,EAAE,EAAA,EAAI,iBAAA,EAAmB,KAAA,EAAO,iBAAA,EAAmB,aAAa,6CAAA,EAA8C;AAAA,UAC9G,EAAE,EAAA,EAAI,eAAA,EAAiB,KAAA,EAAO,eAAA,EAAiB,aAAa,sCAAA,EAAuC;AAAA,UACnG,EAAE,EAAA,EAAI,oBAAA,EAAsB,KAAA,EAAO,oBAAA,EAAsB,aAAa,uCAAA;AAAwC;AAChH,OACF;AAAA,MACA;AAAA,QACE,EAAA,EAAI,MAAA;AAAA,QACJ,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,EAAE,EAAA,EAAI,cAAA,EAAgB,KAAA,EAAO,cAAA,EAAgB,aAAa,2CAAA,EAA4C;AAAA,UACtG,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,kBAAA,EAAoB,aAAa,2CAAA,EAA4C;AAAA,UACpG,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,aAAa,2CAAA;AAA4C;AAC9F;AACF;AACF,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,QAAA;AAAA,IACJ,KAAA,EAAO,QAAA;AAAA,IACP,QAAA,EAAU;AAAA,MACR,OAAA,EAAS,MAAA;AAAA,MACT,KAAA,EAAO,0BAAA;AAAA,MACP,WAAA,EAAa,2EAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACf;AAAA,IACA,QAAA,EAAU;AAAA,MACR;AAAA,QACE,EAAA,EAAI,YAAA;AAAA,QACJ,KAAA,EAAO,YAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,aAAa,uCAAA,EAAwC;AAAA,UACxF,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,aAAa,8BAAA,EAA+B;AAAA,UACnF,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,kBAAA,EAAoB,aAAa,wCAAA;AAAyC;AACpG,OACF;AAAA,MACA;AAAA,QACE,EAAA,EAAI,WAAA;AAAA,QACJ,KAAA,EAAO,WAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,EAAE,EAAA,EAAI,aAAA,EAAe,KAAA,EAAO,aAAA,EAAe,aAAa,uCAAA,EAAwC;AAAA,UAChG,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,aAAa,6CAAA,EAA8C;AAAA,UAChG,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,aAAa,2CAAA;AAA4C;AACpG;AACF;AACF;AAEJ;AAEO,IAAM,uBAAA,GAA0B,oBAAA,CAAqB,CAAC,CAAA,CAAE;AAExD,IAAM,gCAAgC,oBAAA,CAAqB,MAAA;AAAA,EAAO,CAAC,IAAA,KACxE,IAAA,CAAK,EAAA,KAAO;AACd;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,UAAA;AAAA,EACA,aAAA,GAAgB,IAAA;AAAA,EAChB,cAAA,GAAiB,IAAA;AAAA,EACjB,OAAA,GAAU,aAAA;AAAA,EACV,QAAA,GAAW,uBAAA;AAAA,EACX,KAAA,GAAQ,SAAA;AAAA,EACR,KAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,YAAA,GAAe;AACjB,CAAA,EAAkB;AA3QlB,EAAA,IAAAD,KAAAC,GAAAA,EAAAW,GAAAA;AA4QE,EAAA,MAAM,SAASH,KAAAA,EAAM;AACrB,EAAA,MAAM,QAAQ,YAAA,EAAa;AAC3B,EAAA,MAAM,OAAA,GAAUL,OAAuB,IAAI,CAAA;AAC3C,EAAA,MAAM,QAAA,GAAWA,OAAuB,IAAI,CAAA;AAC5C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAqC,IAAI,CAAA;AAC/E,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAqB,SAAS,CAAA;AACxD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,gBAAgB,gBAAA,EAAiB;AACvC,EAAA,MAAM,kBAAkB,aAAA,KAAkB,IAAA;AAC1C,EAAA,MAAM,sBAAsB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,cAAA;AAC3C,EAAA,MAAM,aAAA,GAAgB,eAAe,CAAC,eAAA;AACtC,EAAA,MAAM,gBAAgB,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS;AAAA,IAC7B;AAAA,MACE,IAAI,YAAA,IAAA,IAAA,GAAA,YAAA,GAAgB,SAAA;AAAA,MACpB,KAAA,EAAO,YAAA;AAAA,MACP,QAAA;AAAA,MACA,UAAU,QAAA,IAAA,IAAA,GAAA,QAAA,GAAY;AAAA;AACxB,GACF;AACA,EAAA,MAAM,WAAA,GAAA,CAAcJ,GAAAA,GAAAA,CAAAD,GAAAA,GAAA,aAAA,CAAc,CAAC,MAAf,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAkB,EAAA,KAAlB,IAAA,GAAAC,GAAAA,GAAwB,SAAA;AAC5C,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAII,SAAS,WAAW,CAAA;AACxE,EAAA,MAAM,qBAAqB,UAAA,IAAA,IAAA,GAAA,UAAA,GAAc,kBAAA;AACzC,EAAA,MAAM,YAAA,GAAA,CACJO,GAAAA,GAAA,aAAA,CAAc,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,kBAAkB,CAAA,KAA3D,IAAA,GAAAA,GAAAA,GAAgE,cAAc,CAAC,CAAA;AACjF,EAAA,MAAM,UAAA,GAAa,SAAS,MAAA,IAAa,eAAA;AACzC,EAAA,MAAM,cAAA,GAAiB,eAAA,GACnB,aAAA,CAAc,IAAA,CAAK,CAAC,SAAS,aAAA,CAAc,UAAA,KAAe,IAAA,CAAK,EAAE,CAAA,GACjE,MAAA;AACJ,EAAA,MAAM,UAAU,aAAA,GACZ,IAAA,GACA,eAAA,GACE,cAAA,GACA,aACE,IAAA,GACA,YAAA;AACR,EAAA,MAAM,qBAAA,GAAwB,eAAA,GAAkB,aAAA,CAAc,aAAA,GAAgB,aAAA;AAC9E,EAAA,MAAM,sBAAA,GAAyB,eAAA,GAAkB,aAAA,CAAc,cAAA,GAAiB,cAAA;AAEhF,EAAA,MAAM,UAAA,GAAaC,WAAAA,CAAY,CAAC,QAAA,EAAmBC,OAAAA,GAAAA,CAAS,CAAAC,GAAAA,KAAAA,CAAAA,GAAAA,GAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,EAAA,KAAd,IAAA,GAAAA,GAAAA,GAAoB,WAAA,GAAA,KAAgB;AAC9F,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,aAAA,CAAc,SAASD,OAAM,CAAA;AAAA,MAC/B,CAAA,MAAO;AACL,QAAA,aAAA,CAAc,SAAA,EAAU;AAAA,MAC1B;AAAA,IACF,CAAA,MAAA,IAAW,CAAC,UAAA,EAAY;AACtB,MAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,IAC1B;AAEA,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,QAAA,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,EAAA,EAAI,YAAY,WAAA,EAAa,eAAA,EAAiB,YAAA,EAAc,aAAa,CAAC,CAAA;AAE5F,EAAA,MAAM,SAAA,GAAYD,WAAAA,CAAY,CAACC,OAAAA,KAAmB;AAChD,IAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,MAAA,qBAAA,CAAsBA,OAAM,CAAA;AAAA,IAC9B;AAEA,IAAA,kBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,kBAAA,CAAqBA,OAAAA,CAAAA;AAAA,EACvB,CAAA,EAAG,CAAC,UAAA,EAAY,kBAAkB,CAAC,CAAA;AAEnC,EAAA,MAAM,QAAA,GAAWD,WAAAA,CAAY,CAACC,OAAAA,KAAmB;AAC/C,IAAA,SAAA,CAAUA,OAAM,CAAA;AAChB,IAAA,UAAA,CAAW,MAAMA,OAAM,CAAA;AAAA,EACzB,CAAA,EAAG,CAAC,SAAA,EAAW,UAAU,CAAC,CAAA;AAE1B,EAAAP,UAAU,MAAM;AACd,IAAA,MAAM,UAAU,MAAA,CAAO,UAAA,CAAW,MAAM,cAAA,CAAe,IAAI,GAAG,CAAC,CAAA;AAC/D,IAAA,OAAO,MAAM,MAAA,CAAO,YAAA,CAAa,OAAO,CAAA;AAAA,EAC1C,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,aAAA,IAAiB,CAAC,WAAA,IAAe,CAAC,QAAQ,OAAA,EAAS;AACrD,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA;AAAA,MACF;AAEA,MAAA,cAAA,CAAe,0BAAA,CAA2B,IAAA,EAAM,eAAe,CAAC,CAAA;AAAA,IAClE,CAAA;AAEA,IAAA,cAAA,EAAe;AACf,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,cAAc,CAAA;AAChD,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AAEtD,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,UAAU,cAAc,CAAA;AACnD,MAAA,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AAAA,IAC3D,CAAA;AAAA,EACF,GAAG,CAAC,eAAA,EAAiB,aAAA,EAAe,KAAA,EAAO,WAAW,CAAC,CAAA;AAEvD,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,aAAA,IAAiB,CAAC,OAAA,EAAS;AAC7B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAwB;AAlXvD,MAAA,IAAAP,GAAAA,EAAAC,GAAAA;AAmXM,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IACE,0BACG,EAAA,CAACD,GAAAA,GAAA,OAAA,CAAQ,OAAA,KAAR,gBAAAA,GAAAA,CAAiB,QAAA,CAAS,MAAA,CAAA,CAAA,IAC3B,EAAA,CAACC,MAAA,QAAA,CAAS,OAAA,KAAT,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAkB,SAAS,MAAA,CAAA,CAAA,EAC/B;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,qBAAA,IAAyB,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU;AACnD,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,eAAe,iBAAiB,CAAA;AACxD,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAEhD,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,eAAe,iBAAiB,CAAA;AAC3D,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACrD,CAAA;AAAA,EACF,GAAG,CAAC,aAAA,EAAe,uBAAuB,sBAAA,EAAwB,UAAA,EAAY,OAAO,CAAC,CAAA;AAEtF,EAAAM,UAAU,MAAM;AACd,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAC/C,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,cAAA,CAAe,IAAI,CAAA;AACnB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,SAAS,CAAA;AAClB,MAAA,OAAA,GAAU,OAAO,UAAA,CAAW,MAAM,cAAA,CAAe,KAAK,GAAG,iBAAiB,CAAA;AAAA,IAC5E,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,qBAAqB,KAAK,CAAA;AACjC,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAA,CAAO,aAAa,OAAO,CAAA;AAAA,MAC7B;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,aAAA,EAAe,OAAO,CAAC,CAAA;AAE3B,EAAA,MAAM,iBAAiB,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,EAAA;AAErC,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,eAAA,IAAmB,aAAA,IAAiB,CAAC,cAAA,IAAkB,CAAC,mBAAA,EAAqB;AAChF,MAAA;AAAA,IACF;AAEA,IAAA,mBAAA,CAAoB,gBAAgB,WAAW,CAAA;AAC/C,IAAA,OAAO,MAAM,mBAAA,CAAoB,cAAA,EAAgB,KAAK,CAAA;AAAA,EACxD,GAAG,CAAC,cAAA,EAAgB,iBAAiB,aAAA,EAAe,mBAAA,EAAqB,WAAW,CAAC,CAAA;AAErF,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAuB;AAhb/C,IAAA,IAAAP,KAAAC,GAAAA,EAAAW,GAAAA;AAibI,IAAA,CAAAZ,GAAAA,GAAA,IAAA,CAAK,QAAA,KAAL,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACA,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,IAAA,CAAA;AACX,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,CAAAY,GAAAA,GAAA,aAAA,CAAc,YAAA,KAAd,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAA,IAAA,CAAA,aAAA,EAAA,CAA6BX,GAAAA,GAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,EAAA,KAAd,IAAA,GAAAA,GAAAA,GAAoB,WAAA,EAAa,IAAA,CAAA;AAAA,IAChE;AAEA,IAAA,IAAI,CAAC,aAAA,KAAkB,CAAC,eAAA,IAAmB,cAAc,aAAA,CAAA,EAAgB;AACvE,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,YAAY,aAAA,GAAgB,OAAA,CAAQ,YAAY,CAAA,GAAI,WAAA,IAAe,QAAQ,YAAY,CAAA;AAE7F,EAAA,MAAM,kBAAA,GAAgD,aAAA,GAClD,MAAA,GACA,cAAA,CAAA,EAAA,EACM,WAAA,GACA;AAAA,IACF,MAAM,WAAA,CAAY,IAAA;AAAA,IAClB,KAAK,WAAA,CAAY,GAAA;AAAA,IACjB,OAAO,WAAA,CAAY;AAAA,MAEjB,EAAC,CAAA;AAGX,EAAA,MAAM,SAAA,GACJ,SAAA,IAAa,YAAA,mBACXC,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,QAAA;AAAA,MACL,WAAW,gBAAA,CAAO,KAAA;AAAA,MAClB,YAAA,EAAY,gBAAgB,MAAA,GAAY,KAAA;AAAA,MACxC,eAAA,EAAe,gBAAgB,MAAA,GAAY,MAAA;AAAA,MAC3C,YAAA,EAAY,gBAAgB,MAAA,GAAY,KAAA;AAAA,MACxC,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAO,kBAAA;AAAA,MAEP,QAAA,kBAAAC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,WAAW,gBAAA,CAAO,YAAA;AAAA,UAClB,mBAAA,EAAmB,YAAA,CAAa,QAAA,GAAW,MAAA,GAAS,OAAA;AAAA,UAEpD,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,SAAI,SAAA,EAAW,gBAAA,CAAO,UAAU,cAAA,EAAc,MAAA,CAAO,aAAa,QAAA,CAAS,MAAM,GAC/E,QAAA,EAAA,YAAA,CAAa,QAAA,CAAS,IAAI,CAAC,OAAA,qBAC1BC,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,gBAAA,CAAO,OAAA,EACzB,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAA,OAAA,CAAQ,KAAA,EAAM,CAAA;AAAA,8BACnBA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,gBAAA,CAAO,KAAA,EACpB,QAAA,EAAA,OAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBAClBC,IAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,WAAW,gBAAA,CAAO,IAAA;AAAA,kBAElB,IAAA,EAAK,UAAA;AAAA,kBACL,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI,CAAA;AAAA,kBAE/B,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAK,IAAA,mBAAOD,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,gBAAA,CAAO,QAAA,EAAW,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA,GAAU,IAAA;AAAA,oCACpEC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iBAAO,QAAA,EACtB,QAAA,EAAA;AAAA,sCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,sBACjB,KAAK,WAAA,mBAAcA,IAAC,OAAA,EAAA,EAAO,QAAA,EAAA,IAAA,CAAK,aAAY,CAAA,GAAW;AAAA,qBAAA,EAC1D;AAAA;AAAA,iBAAA;AAAA,gBATK,IAAA,CAAK;AAAA,eAWb,CAAA,EACH;AAAA,aAAA,EAAA,EAlBuC,OAAA,CAAQ,EAmBjD,CACD,CAAA,EACH,CAAA;AAAA,YAEC,aAAa,QAAA,mBACZC,KAAC,OAAA,EAAA,EAAM,SAAA,EAAW,iBAAO,QAAA,EACtB,QAAA,EAAA;AAAA,cAAA,YAAA,CAAa,QAAA,CAAS,OAAA,mBACrBD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,gBAAA,CAAO,OAAA,EAAU,QAAA,EAAA,YAAA,CAAa,QAAA,CAAS,OAAA,EAAQ,CAAA,GAC9D,IAAA;AAAA,8BACJA,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,YAAA,CAAa,SAAS,KAAA,EAAM,CAAA;AAAA,8BACrCA,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,YAAA,CAAa,SAAS,WAAA,EAAY,CAAA;AAAA,cACrC,YAAA,CAAa,QAAA,CAAS,WAAA,mBACrBA,IAAC,QAAA,EAAA,EAAO,SAAA,EAAW,gBAAA,CAAO,cAAA,EAAgB,IAAA,EAAK,QAAA,EAC5C,QAAA,EAAA,YAAA,CAAa,QAAA,CAAS,aACzB,CAAA,GACE;AAAA,aAAA,EACN,CAAA,GACE;AAAA;AAAA;AAAA;AACN;AAAA,GACF,GACE,IAAA;AAEN,EAAA,uBACEC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,YAAA,EAAY,KAAA;AAAA,MACZ,WAAW,gBAAA,CAAO,IAAA;AAAA,MAClB,cAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAc,eAAA,GAAkB,YAAA,GAAe,aAAA,GAAgB,QAAA,GAAW,YAAA;AAAA,MAEzE,QAAA,EAAA;AAAA,QAAA,aAAA,GAAgB,IAAA,mBACfD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,gBAAA,CAAO,OAAA,EAAS,IAAA,EAAK,SAAA,EAClC,QAAA,EAAA,aAAA,CAAc,GAAA,CAAI,CAAC,IAAA,KAAS;AAC3B,UAAA,MAAM,YAAW,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,EAAA,MAAO,IAAA,CAAK,EAAA,IAAM,QAAQ,OAAO,CAAA;AAEhE,UAAA,uBACEA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,eAAA,EAAe,MAAA;AAAA,cACf,eAAA,EAAe,QAAA;AAAA,cACf,eAAA,EAAc,MAAA;AAAA,cACd,WAAW,gBAAA,CAAO,OAAA;AAAA,cAElB,IAAA,EAAK,UAAA;AAAA,cACL,IAAA,EAAK,QAAA;AAAA,cACL,SAAS,MAAM;AACb,gBAAA,IAAI,eAAA,EAAiB;AACnB,kBAAA,QAAA,CAAS,KAAK,EAAE,CAAA;AAChB,kBAAA;AAAA,gBACF;AAEA,gBAAA,IAAI,QAAA,EAAU;AACZ,kBAAA,UAAA,CAAW,KAAA,EAAO,KAAK,EAAE,CAAA;AACzB,kBAAA;AAAA,gBACF;AAEA,gBAAA,QAAA,CAAS,KAAK,EAAE,CAAA;AAAA,cAClB,CAAA;AAAA,cACA,OAAA,EAAS,MAAM,QAAA,CAAS,IAAA,CAAK,EAAE,CAAA;AAAA,cAC/B,YAAA,EAAc,MAAM,QAAA,CAAS,IAAA,CAAK,EAAE,CAAA;AAAA,cAEpC,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM;AAAA,aAAA;AAAA,YAnBb,IAAA,CAAK;AAAA,WAoBZ;AAAA,QAEJ,CAAC,CAAA,EACH,CAAA;AAAA,QAGD,gBAAgB,SAAA,GAAY,IAAA;AAAA,QAC5B,CAAC,iBAAiB,WAAA,IAAe,SAAA,GAAY,aAAa,SAAA,EAAW,QAAA,CAAS,IAAI,CAAA,GAAI;AAAA;AAAA;AAAA,GACzF;AAEJ;;;ACtjBA,IAAA,qBAAA,GAAA,EAAA;ACmDO,IAAM,yBAAA,GAAuD;AAAA,EAClE;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,YAAA,EAAa;AAAA,MACnC,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,gBAAA,EAAa,UAAU,SAAA,EAAK;AAAA,MACrD,EAAE,EAAA,EAAI,eAAA,EAAiB,KAAA,EAAO,yBAAA,EAAqB;AAAA,MACnD,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,WAAA,EAAa,UAAU,SAAA;AAAK;AACnD,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,UAAU,SAAA,EAAK;AAAA,MAC1C,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,YAAA,EAAS,UAAU,SAAA,EAAK;AAAA,MAC7C,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,UAAU,SAAA,EAAK;AAAA,MAC5C,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,eAAA,EAAY,UAAU,eAAA,EAAM;AAAA,MACpD,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,cAAA,EAAgB,UAAU,SAAA;AAAK;AACvD,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,UAAU,SAAA,EAAK;AAAA,MAC5C,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,UAAU,eAAA,EAAM;AAAA,MAC7C,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,UAAU,SAAA,EAAK;AAAA,MAC1C,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,UAAU,SAAA,EAAK;AAAA,MAC5C,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,UAAU,SAAA,EAAK;AAAA,MAC9C,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,UAAU,SAAA;AAAK;AAC1D,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAU,SAAA,EAAK;AAAA,MAChD,EAAE,EAAA,EAAI,aAAA,EAAe,KAAA,EAAO,aAAA,EAAe,UAAU,SAAA,EAAK;AAAA,MAC1D,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,UAAU,SAAA,EAAK;AAAA,MAClD,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,UAAU,SAAA,EAAK;AAAA,MACpD,EAAE,EAAA,EAAI,gBAAA,EAAkB,KAAA,EAAO,gBAAA,EAAkB,UAAU,SAAA;AAAK;AAClE,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,QAAA;AAAA,IACJ,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,UAAU,SAAA,EAAK;AAAA,MACpD,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,MAC5B,EAAE,EAAA,EAAI,iBAAA,EAAmB,KAAA,EAAO,oBAAA;AAAqB;AACvD,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO;AAAA,MACL,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,oBAAA,EAAqB;AAAA,MAC1C,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,oBAAA,EAAqB;AAAA,MAC/C,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,iBAAA;AAAkB;AAC3C;AAEJ;AAEA,IAAM,mBAAA,GAAsB,8BAA8B,CAAC,CAAA;AAE3D,IAAI,CAAC,mBAAA,EAAqB;AACxB,EAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAC7E;AAxHA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA0HO,IAAM,4BAAA,GAAuD;AAAA,EAClE;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,EAAA,EAAI,KAAA;AAAA,IACJ,KAAA,EAAO,KAAA;AAAA,IACP,KAAA,EAAA,CAAO,EAAA,GAAA,CAAA,EAAA,GAAA,yBAAA,CAA0B,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,MAAM,CAAA,KAA3D,IAAA,GAAA,MAAA,GAAA,EAAA,CAA8D,KAAA,KAA9D,IAAA,GAAA,EAAA,GAAuE;AAAC,GACjF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAA,CAAO,EAAA,GAAA,CAAA,EAAA,GAAA,yBAAA,CAA0B,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,MAAM,CAAA,KAA3D,IAAA,GAAA,MAAA,GAAA,EAAA,CAA8D,KAAA,KAA9D,IAAA,GAAA,EAAA,GAAuE;AAAC,GACjF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,MAAA;AAAA,IACN,IAAI,mBAAA,CAAoB,EAAA;AAAA,IACxB,OAAO,mBAAA,CAAoB,KAAA;AAAA,IAC3B,UAAU,mBAAA,CAAoB,QAAA;AAAA,IAC9B,UAAU,mBAAA,CAAoB;AAAA,GAChC;AAAA,EACA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAA,CAAO,EAAA,GAAA,CAAA,EAAA,GAAA,yBAAA,CAA0B,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,MAAM,CAAA,KAA3D,IAAA,GAAA,MAAA,GAAA,EAAA,CAA8D,KAAA,KAA9D,IAAA,GAAA,EAAA,GAAuE;AAAC,GACjF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,EAAA,EAAI,QAAA;AAAA,IACJ,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAA,CAAO,EAAA,GAAA,CAAA,EAAA,GAAA,yBAAA,CAA0B,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,QAAQ,CAAA,KAA7D,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgE,KAAA,KAAhE,IAAA,GAAA,EAAA,GAAyE;AAAC,GACnF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,EAAA,EAAI,MAAA;AAAA,IACJ,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAA,CAAO,EAAA,GAAA,CAAA,EAAA,GAAA,yBAAA,CAA0B,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,MAAM,CAAA,KAA3D,IAAA,GAAA,MAAA,GAAA,EAAA,CAA8D,KAAA,KAA9D,IAAA,GAAA,EAAA,GAAuE;AAAC;AAEnF;AAEA,SAAS,gBAAgB,KAAA,EAAe;AACtC,EAAA,MAAM,IAAA,GAAO,KAAA,CACV,IAAA,EAAK,CACL,WAAA,EAAY,CACZ,OAAA,CAAQ,aAAA,EAAe,GAAG,CAAA,CAC1B,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AAEzB,EAAA,OAAO,IAAA,IAAQ,MAAA;AACjB;AAEA,SAAS,aAAA,CAAc,OAA+B,aAAA,EAAwB;AAC5E,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACzB,IAAA,MAAM,WAAW,cAAA,CAAA,EAAA,EAAK,IAAA,CAAA;AACtB,IAAA,OAAO,QAAA,CAAS,QAAA;AAChB,IAAA,OAAO,QAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEA,SAAS,2BAAA,GAA8B;AACrC,EAAA,MAAM,OAAA,GAAUQ,WAAW,oBAAoB,CAAA;AAE/C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AAAA,EACxE;AAEA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,qBAAqB,KAAA,EAAiC;AAC7D,EAAA,uBAAOR,IAAC,QAAA,EAAA,cAAA,CAAA,EAAO,SAAA,EAAW,sBAAO,WAAA,EAAa,IAAA,EAAK,YAAa,KAAA,CAAO,CAAA;AACzE;AASO,SAAS,kBAAkB,EAAE,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,OAAM,EAA2B;AACxF,EAAA,MAAM,UAAU,2BAAA,EAA4B;AAC5C,EAAA,MAAM,MAAA,GAAS,EAAA,IAAA,IAAA,GAAA,EAAA,GAAM,eAAA,CAAgB,KAAK,CAAA;AAC1C,EAAA,MAAM,QAAA,GAAW,QAAQ,UAAA,KAAe,MAAA;AACxC,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,YAAA,CAAa,GAAA,CAAI,MAAM,CAAA;AAEjD,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,qBAAA,CAAO,QAAA;AAAA,MAClB,aAAA,EAAa,WAAW,MAAA,GAAS,OAAA;AAAA,MACjC,WAAA,EAAW,QAAA,IAAY,SAAA,GAAY,MAAA,GAAS,OAAA;AAAA,MAC5C,YAAA,EAAc,MAAM,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA;AAAA,MAE1C,wDACCA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UACR,OAAO,aAAA,CAAc,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,EAAC,EAAG,QAAQ,aAAa,CAAA;AAAA,UACvD,KAAA,EAAO,GAAG,KAAK,CAAA,KAAA,CAAA;AAAA,UACf,YAAA,EAAc,MAAA;AAAA,UACd,WAAA,EAAW,IAAA;AAAA,UACX,SAAA,EAAU,cAAA;AAAA,UACV,OAAA,kBAASA,GAAAA,CAAC,oBAAA,EAAA,EAAsB,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AACxC;AAAA,GAEJ;AAEJ;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,oBAAA,GAAuB,GAAA;AAe7B,SAAS,yBAAA,CAA0B;AAAA,EACjC,OAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,UAAU,2BAAA,EAA4B;AAC5C,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,UAAA,KAAe,IAAA,CAAK,EAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,YAAA,CAAa,GAAA,CAAI,KAAK,EAAE,CAAA;AAElD,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,qBAAA,CAAO,YAAA;AAAA,MAClB,aAAA,EAAa,WAAW,MAAA,GAAS,OAAA;AAAA,MACjC,WAAA,EAAW,QAAA,IAAY,SAAA,GAAY,MAAA,GAAS,OAAA;AAAA,MAC5C,YAAA,EAAc,MAAM,OAAA,CAAQ,QAAA,CAAS,KAAK,EAAE,CAAA;AAAA,MAE5C,QAAA,kBAAAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACL;AAAA,cACE,IAAI,IAAA,CAAK,EAAA;AAAA,cACT,OAAO,IAAA,CAAK,KAAA;AAAA,cACZ,UAAU,IAAA,CAAK,QAAA;AAAA,cACf,UAAU,IAAA,CAAK;AAAA;AACjB;AACF;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,SAAS,qBAAA,CAAsB;AAAA,EAC7B,OAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,uBACEA,GAAAA,CAAAI,QAAAA,EAAA,EACG,QAAA,EAAA,KAAA,CAAM,GAAA;AAAA,IAAI,CAAC,IAAA,KACV,IAAA,CAAK,IAAA,KAAS,6BACZJ,GAAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QAEC,IAAI,IAAA,CAAK,EAAA;AAAA,QACT,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,OAAO,IAAA,CAAK;AAAA,OAAA;AAAA,MAHP,IAAA,CAAK;AAAA,wBAMZA,GAAAA,CAAC,6BAAwC,OAAA,EAAkB,IAAA,EAAA,EAA3B,KAAK,EAAkC;AAAA,GAE3E,EACF,CAAA;AAEJ;AAEO,SAAS,aAAA,CAAc;AAAA,EAC5B,UAAA,GAAa,IAAA;AAAA,EACb,QAAA;AAAA,EACA,aAAA,GAAgB,IAAA;AAAA,EAChB,cAAA,GAAiB,IAAA;AAAA,EACjB,aAAA,GAAgB,IAAA;AAAA,EAChB,OAAA,GAAU,aAAA;AAAA,EACV,KAAA;AAAA,EACA,kBAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA,GAAgB;AAClB,CAAA,EAAuB;AACrB,EAAA,MAAM,eAAA,GAAkBE,OAAsB,IAAI,CAAA;AAClD,EAAA,MAAM,CAAC,cAAc,eAAe,CAAA,GAAIC,SAAsB,sBAAM,IAAI,KAAK,CAAA;AAE7E,EAAA,MAAM,iBAAA,GAAoBQ,YAAY,MAAM;AAC1C,IAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,MAAA,MAAA,CAAO,YAAA,CAAa,gBAAgB,OAAO,CAAA;AAC3C,MAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAA,GAAWA,WAAAA;AAAA,IACf,CAAC,MAAA,KAAmB;AAClB,MAAA,iBAAA,EAAkB;AAClB,MAAA,kBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,kBAAA,CAAqB,MAAA,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,CAAC,mBAAmB,kBAAkB;AAAA,GACxC;AAEA,EAAA,MAAM,SAAA,GAAYA,YAAY,MAAM;AAClC,IAAA,kBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,kBAAA,CAAqB,IAAA,CAAA;AAAA,EACvB,CAAA,EAAG,CAAC,kBAAkB,CAAC,CAAA;AAEvB,EAAA,MAAM,aAAA,GAAgBA,YAAY,MAAM;AACtC,IAAA,iBAAA,EAAkB;AAClB,IAAA,eAAA,CAAgB,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,SAAA,EAAW,oBAAoB,CAAA;AAAA,EAC7E,CAAA,EAAG,CAAC,iBAAA,EAAmB,SAAS,CAAC,CAAA;AAEjC,EAAA,MAAM,cAAA,GAAiBA,WAAAA,CAAY,CAAC,MAAA,EAAgB,OAAA,KAAqB;AACvE,IAAA,eAAA,CAAgB,CAAC,OAAA,KAAY;AAC3B,MAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA;AAClC,MAAA,IAAI,WAAW,OAAA,EAAS;AACtB,QAAA,OAAO,OAAA;AAAA,MACT;AAEA,MAAA,IAAI,CAAC,OAAA,IAAW,CAAC,OAAA,EAAS;AACxB,QAAA,OAAO,OAAA;AAAA,MACT;AAEA,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,OAAO,CAAA;AAC5B,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,IAAA,CAAK,IAAI,MAAM,CAAA;AAAA,MACjB,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,MACpB;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAN,SAAAA,CAAU,MAAM,iBAAA,EAAmB,CAAC,iBAAiB,CAAC,CAAA;AAEtD,EAAA,MAAM,YAAA,GAAeS,OAAAA;AAAA,IACnB,OAAO;AAAA,MACL,UAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA,EAAc,QAAA;AAAA,MACd,QAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,UAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,uBACEd,GAAAA,CAAC,oBAAA,CAAqB,UAArB,EAA8B,KAAA,EAAO,cACpC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAW,qBAAA,CAAO,GAAA;AAAA,MAClB,cAAA,EAAc,OAAA;AAAA,MACd,gBAAA,EAAgB,aAAa,MAAA,GAAS,OAAA;AAAA,MACtC,YAAA,EAAc,iBAAA;AAAA,MACd,YAAA,EAAc,aAAA;AAAA,MAEd,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,YAAA,EAAW,eAAc,SAAA,EAAW,qBAAA,CAAO,GAAA,EAC7C,QAAA,EAAA,QAAA,IAAA,IAAA,GAAA,QAAA,mBACCA,GAAAA;AAAA,QAAC,qBAAA;AAAA,QAAA;AAAA,UACC,OAAA;AAAA,UACA,OAAO,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS;AAAA;AAAA,OAClB,EAEJ;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;;;AClaO,SAAS,aAAa,IAAA,EAAmB;AAC9C,EAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IACX,IAAA,CAAK,iBAA8B,mCAAmC;AAAA,GACxE;AACF;AAEO,SAAS,aAAA,CAAc,OAAsB,KAAA,EAAe;AACjE,EAAA,MAAM,IAAA,GAAO,MAAM,KAAK,CAAA;AACxB,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,IAAA,CAAK,KAAA,EAAM;AAAA,EACb;AACF;AAEO,SAAS,iBAAA,CACd,KAAA,EACA,IAAA,EACA,QAAA,EACA;AACA,EAAA,MAAM,KAAA,GAAQ,aAAa,IAAI,CAAA;AAC/B,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,aAA4B,CAAA;AAExE,EAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,EAAA;AACA,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,EAAa;AAC7B,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,MAAM,YAAY,YAAA,GAAe,CAAA,GAAI,CAAA,GAAA,CAAK,YAAA,GAAe,KAAK,KAAA,CAAM,MAAA;AACpE,IAAA,aAAA,CAAc,OAAO,SAAS,CAAA;AAC9B,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,CAAM,QAAQ,SAAA,EAAW;AAC3B,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,MAAM,SAAA,GACJ,YAAA,GAAe,CAAA,GAAI,KAAA,CAAM,MAAA,GAAS,KAAK,YAAA,GAAe,CAAA,GAAI,KAAA,CAAM,MAAA,IAAU,KAAA,CAAM,MAAA;AAClF,IAAA,aAAA,CAAc,OAAO,SAAS,CAAA;AAC9B,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,CAAM,QAAQ,MAAA,EAAQ;AACxB,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,aAAA,CAAc,OAAO,CAAC,CAAA;AACtB,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,CAAM,QAAQ,KAAA,EAAO;AACvB,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,aAAA,CAAc,KAAA,EAAO,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AAAA,EACvC;AACF;;;ACxDA,IAAA,oBAAA,GAAA,EAAA;AC2BA,IAAM,YAAA,GAAe,GAAA;AAgCrB,IAAMe,qBAAAA,GAAuB,GAAA;AAW7B,SAASC,aAAAA,CAAa,OAAA,EAAoB,YAAA,EAA4B,KAAA,EAAe;AACnF,EAAA,IAAIC,cAAAA,CAAe,OAAO,CAAA,EAAG;AAC3B,IAAA,MAAM,OAAA,GAAU,OAAA;AAKhB,IAAA,OAAOC,YAAAA,CAAa,OAAA,EAAS,aAAA,CAAA,cAAA,CAAA,EAAA,EACxB,YAAA,CAAA,EADwB;AAAA,MAE3B,SAAS,MAAM;AA/ErB,QAAA,IAAApB,GAAAA,EAAAC,GAAAA;AAgFQ,QAAA,CAAAA,OAAAD,GAAAA,GAAA,OAAA,CAAQ,OAAM,OAAA,KAAd,IAAA,GAAA,MAAA,GAAAC,IAAA,IAAA,CAAAD,GAAAA,CAAAA;AACA,QAAA,YAAA,CAAa,OAAA,EAAQ;AAAA,MACvB,CAAA;AAAA,MACA,OAAA,EAAS,CAAC,KAAA,KAA4B;AAnF5C,QAAA,IAAAA,KAAAC,GAAAA,EAAAW,GAAAA;AAoFQ,QAAA,CAAAX,GAAAA,GAAAA,CAAAD,MAAA,OAAA,CAAQ,KAAA,EAAM,YAAd,IAAA,GAAA,MAAA,GAAAC,GAAAA,CAAA,KAAAD,GAAAA,EAAwB,KAAA,CAAA;AACxB,QAAA,CAAAY,GAAAA,GAAA,YAAA,CAAa,OAAA,KAAb,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAA,IAAA,CAAA,YAAA,CAAA;AAAA,MACF,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAA+B;AAvFjD,QAAA,IAAAZ,KAAAC,GAAAA,EAAAW,GAAAA;AAwFQ,QAAA,CAAAX,GAAAA,GAAAA,CAAAD,MAAA,OAAA,CAAQ,KAAA,EAAM,cAAd,IAAA,GAAA,MAAA,GAAAC,GAAAA,CAAA,KAAAD,GAAAA,EAA0B,KAAA,CAAA;AAC1B,QAAA,CAAAY,GAAAA,GAAA,YAAA,CAAa,SAAA,KAAb,IAAA,GAAA,MAAA,GAAAA,IAAA,IAAA,CAAA,YAAA,EAAyB,KAAA,CAAA;AAAA,MAC3B;AAAA,KACF,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,uBACEV,GAAAA,CAAC,MAAA,EAAA,aAAA,CAAA,cAAA,CAAA,EAAO,cAAY,KAAA,EAAA,EAAW,YAAA,CAAA,EAA9B,EACE,QAAA,EAAA,OAAA,EAAA,CACH,CAAA;AAEJ;AAEO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,IAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA,GAAiB;AACnB,CAAA,EAIG;AA7GH,EAAA,IAAAF,GAAAA;AA8GE,EAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,QAAA,GAAW,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,EAAA,EAAK,IAAA,CAAK,QAAQ,CAAA,CAAA,GAAK,IAAA,CAAK,KAAA;AAEjF,EAAA,uBACEG,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,cAAA,EAAA,CAAcH,GAAAA,GAAA,IAAA,CAAK,OAAA,KAAL,OAAAA,GAAAA,GAAgB,MAAA;AAAA,MAC9B,YAAA,EAAY,eAAA;AAAA,MACZ,WAAW,oBAAA,CAAO,IAAA;AAAA,MAClB,cAAA,EAAc,KAAK,OAAA,IAAW,MAAA;AAAA,MAC9B,kBAAA,EAAkB,KAAK,WAAA,IAAe,MAAA;AAAA,MACtC,sBAAA,EAAsB,iBAAiB,MAAA,GAAS,MAAA;AAAA,MAChD,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,OAAA,EAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAAA,MAC5B,IAAA,EAAK,UAAA;AAAA,MACL,IAAA,EAAK,QAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,QAAA,cAAA,mBACCE,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,oBAAA,CAAO,IAAA,EACxC,QAAA,EAAA,IAAA,CAAK,OAAA,GAAU,QAAA,GAAM,IAAA,CAAK,MAC7B,CAAA,GACE,IAAA;AAAA,wBACJA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,oBAAA,CAAO,KAAA,EAAQ,eAAK,KAAA,EAAM,CAAA;AAAA,QAC1C,IAAA,CAAK,QAAA,mBAAWA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,oBAAA,CAAO,QAAA,EAAW,QAAA,EAAA,IAAA,CAAK,QAAA,EAAS,CAAA,GAAU;AAAA;AAAA;AAAA,GAC9E;AAEJ;AAEA,SAAS,oBAAoB,IAAA,EAA4B;AACvD,EAAA,IAAI,KAAK,OAAA,EAAS;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,IAAA,CAAK,SAAS,MAAA,IAAa,IAAA,CAAK,SAAS,IAAA,IAAQ,IAAA,CAAK,SAAS,KAAA,EAAO;AACxE,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,YAAA,CAAa;AAAA,EAC3B,aAAA,GAAgB,IAAA;AAAA,EAChB,cAAA,GAAiB,IAAA;AAAA,EACjB,aAAA,GAAgB,IAAA;AAAA,EAChB,WAAA,GAAc,KAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,KAAA,GAAQ,aAAA;AAAA,EACR,YAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,SAAA,GAAY,cAAA;AAAA,EACZ;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,SAASO,KAAAA,EAAM;AACrB,EAAA,MAAM,QAAQ,YAAA,EAAa;AAC3B,EAAA,MAAM,OAAA,GAAUL,OAAwB,IAAI,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAUA,OAAwB,IAAI,CAAA;AAC5C,EAAA,MAAM,oBAAA,GAAuBA,OAAsB,IAAI,CAAA;AACvD,EAAA,MAAM,gBAAgB,gBAAA,EAAiB;AACvC,EAAA,MAAM,eAAA,GAAkB,YAAA,KAAiB,MAAA,IAAa,aAAA,KAAkB,IAAA;AACxE,EAAA,MAAM,sBAAsB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,cAAA;AAC3C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,SAAS,WAAW,CAAA;AAC5D,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,WAAW,CAAA;AACxD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAoB,SAAS,CAAA;AACvD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAqC,IAAI,CAAA;AAC/E,EAAA,MAAM,iBACJ,eAAA,IAAmB,IAAA,KAAS,MAAA,GAAY,aAAA,CAAc,eAAe,YAAA,GAAe,MAAA;AACtF,EAAA,MAAM,eAAe,IAAA,IAAA,IAAA,GAAA,IAAA,GAAQ,cAAA;AAC7B,EAAA,MAAM,aAAa,YAAA,KAAiB,MAAA;AACpC,EAAA,MAAM,OAAA,GAAU,aAAa,YAAA,GAAe,YAAA;AAC5C,EAAA,MAAM,qBAAA,GAAwB,eAAA,GAAkB,aAAA,CAAc,aAAA,GAAgB,aAAA;AAC9E,EAAA,MAAM,sBAAA,GAAyB,eAAA,GAAkB,aAAA,CAAc,cAAA,GAAiB,cAAA;AAChF,EAAA,MAAM,qBAAA,GAAwB,eAAA,GAAkB,aAAA,CAAc,aAAA,GAAgB,aAAA;AAC9E,EAAA,MAAM,mBAAmB,QAAA,IAAY,eAAA;AACrC,EAAA,MAAM,gBAAA,GAAmB,cAAc,KAAA,GAAQ,sBAAA;AAC/C,EAAA,MAAM,kBAAA,GAAqB,WAAA;AAE3B,EAAA,MAAM,UAAA,GAAaQ,WAAAA,CAAY,CAAC,QAAA,KAAsB;AACpD,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,IAC1B;AAEA,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,QAAA,CAAA;AAEf,IAAA,IAAI,CAAC,YAAY,eAAA,EAAiB;AAChC,MAAA,aAAA,CAAc,SAAA,EAAU;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,UAAA,EAAY,eAAA,EAAiB,YAAA,EAAc,aAAa,CAAC,CAAA;AAE7D,EAAA,MAAM,sBAAA,GAAyBA,YAAY,MAAM;AAC/C,IAAA,IAAI,qBAAqB,OAAA,EAAS;AAChC,MAAA,MAAA,CAAO,YAAA,CAAa,qBAAqB,OAAO,CAAA;AAChD,MAAA,oBAAA,CAAqB,OAAA,GAAU,IAAA;AAAA,IACjC;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,kBAAA,GAAqBA,YAAY,MAAM;AAC3C,IAAA,sBAAA,EAAuB;AACvB,IAAA,oBAAA,CAAqB,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AACrD,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB,GAAGI,qBAAoB,CAAA;AAAA,EACzB,CAAA,EAAG,CAAC,sBAAA,EAAwB,UAAU,CAAC,CAAA;AAEvC,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,sBAAA,EAAuB;AACvB,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,kBAAA,EAAmB;AAAA,EACrB,CAAA;AAEA,EAAAV,UAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,sBAAA,EAAuB;AAAA,IACzB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,sBAAsB,CAAC,CAAA;AAE3B,EAAAA,UAAU,MAAM;AACd,IAAA,MAAM,UAAU,MAAA,CAAO,UAAA,CAAW,MAAM,cAAA,CAAe,IAAI,GAAG,CAAC,CAAA;AAC/D,IAAA,OAAO,MAAM,MAAA,CAAO,YAAA,CAAa,OAAO,CAAA;AAAA,EAC1C,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAc,gBAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,UAAA,IAAc,CAAC,OAAA,CAAQ,OAAA,EAAS;AACnC,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAzPjC,MAAA,IAAArB,GAAAA,EAAAC,GAAAA;AA0PM,MAAA,MAAM,SAAS,OAAA,CAAQ,OAAA;AACvB,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA;AAAA,MACF;AAEA,MAAA,cAAA;AAAA,QACE,0BAAA;AAAA,UACE,OAAO,qBAAA,EAAsB;AAAA,UAAA,CAC7BA,GAAAA,GAAAA,CAAAD,MAAA,OAAA,CAAQ,OAAA,KAAR,gBAAAA,GAAAA,CAAiB,qBAAA,EAAA,KAAjB,OAAAC,GAAAA,GAA4C,IAAA;AAAA,UAC5C,SAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,IACF,CAAA;AAEA,IAAA,cAAA,EAAe;AACf,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,cAAc,CAAA;AAChD,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AAEtD,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,UAAU,cAAc,CAAA;AACnD,MAAA,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AAAA,IAC3D,CAAA;AAAA,EACF,GAAG,CAAC,SAAA,EAAW,UAAA,EAAY,gBAAA,EAAkB,KAAK,CAAC,CAAA;AAEnD,EAAAM,UAAU,MAAM;AACd,IAAA,IAAI,OAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAC/C,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,aAAA,CAAc,IAAI,CAAA;AAClB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,SAAS,CAAA;AAClB,MAAA,OAAA,GAAU,OAAO,UAAA,CAAW,MAAM,aAAA,CAAc,KAAK,GAAG,YAAY,CAAA;AAAA,IACtE,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,qBAAqB,KAAK,CAAA;AACjC,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAA,CAAO,aAAa,OAAO,CAAA;AAAA,MAC7B;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,eAAA,IAAmB,CAAC,YAAA,IAAgB,CAAC,mBAAA,EAAqB;AAC7D,MAAA;AAAA,IACF;AAEA,IAAA,mBAAA,CAAoB,cAAc,UAAU,CAAA;AAC5C,IAAA,OAAO,MAAM,mBAAA,CAAoB,YAAA,EAAc,KAAK,CAAA;AAAA,EACtD,GAAG,CAAC,eAAA,EAAiB,YAAA,EAAc,mBAAA,EAAqB,UAAU,CAAC,CAAA;AAEnE,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAtTrD,MAAA,IAAAP,GAAAA,EAAAC,GAAAA;AAuTM,MAAA,CAAAA,GAAAA,GAAAA,CAAAD,MAAA,OAAA,CAAQ,OAAA,KAAR,gBAAAA,GAAAA,CACI,aAAA,CAA2B,mCAAA,CAAA,KAD/B,IAAA,GAAA,MAAA,GAAAC,GAAAA,CAEI,KAAA,EAAA;AAAA,IACN,CAAC,CAAA;AAED,IAAA,OAAO,MAAM,MAAA,CAAO,oBAAA,CAAqB,KAAK,CAAA;AAAA,EAChD,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAAM,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAwB;AApUvD,MAAA,IAAAP,GAAAA,EAAAC,GAAAA;AAqUM,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IACE,oBACG,EAAA,CAACD,GAAAA,GAAA,OAAA,CAAQ,OAAA,KAAR,gBAAAA,GAAAA,CAAiB,QAAA,CAAS,MAAA,CAAA,CAAA,IAC3B,EAAA,CAACC,MAAA,OAAA,CAAQ,OAAA,KAAR,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAiB,SAAS,MAAA,CAAA,CAAA,EAC9B;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,qBAAA,IAAyB,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU;AACnD,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,iBAAiB,CAAA;AAC1D,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,eAAe,iBAAiB,CAAA;AAC7D,MAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACvD,CAAA;AAAA,EACF,GAAG,CAAC,gBAAA,EAAkB,qBAAA,EAAuB,UAAA,EAAY,OAAO,CAAC,CAAA;AAEjE,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAA+B;AA7VvD,IAAA,IAAAD,GAAAA,EAAAC,GAAAA;AA8VI,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA;AAAA,IACF;AAEA,IAAA,CAAAD,GAAAA,GAAA,IAAA,CAAK,QAAA,KAAL,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACA,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,IAAA,CAAA;AAEX,IAAA,IAAI,mBAAmB,YAAA,EAAc;AACnC,MAAA,CAAAC,MAAA,aAAA,CAAc,YAAA,KAAd,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAA,oBAA6B,YAAA,EAAc,IAAA,CAAA;AAAA,IAC7C;AAEA,IAAA,IAAI,qBAAA,EAAuB;AACzB,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,IAAA,CAAK,mBAAmB,CAAA;AAErD,EAAA,MAAM,SAAA,GAA2B,mBAC3B,WAAA,GACA,cAAA,CAAA;AAAA,IACA,MAAM,WAAA,CAAY,IAAA;AAAA,IAClB,KAAK,WAAA,CAAY;AAAA,GAAA,EACb,WAAA,CAAY,QAAQ,EAAE,KAAA,EAAO,YAAY,KAAA,EAAM,GAAI,EAAC,CAAA,GAExD,EAAC,CAAA;AAGP,EAAA,MAAM,QAAA,GAAW,6BACfC,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,WAAW,oBAAA,CAAO,IAAA;AAAA,MAClB,eAAA,EAAe,mBAAmB,MAAA,GAAS,MAAA;AAAA,MAC3C,YAAA,EAAY,KAAA;AAAA,MACZ,oBAAA,EAAoB,WAAA,IAAe,gBAAA,GAAmB,MAAA,GAAS,MAAA;AAAA,MAC/D,sBAAA,EAAsB,iBAAiB,MAAA,GAAS,MAAA;AAAA,MAChD,gBAAA,EAAgB,SAAA;AAAA,MAChB,eAAA,EAAc,MAAA;AAAA,MACd,YAAA,EAAY,KAAA;AAAA,MACZ,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAO,SAAA;AAAA,MACP,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,iBAAA,CAAkB,MAAM,WAAA,EAAa,KAAA,CAAM,eAAe,MAAM,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,MACnF,CAAA;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,GAAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UAEA,cAAA;AAAA,UACA,QAAA,EAAU;AAAA,SAAA;AAAA,QAFL,IAAA,CAAK;AAAA,OAIb;AAAA;AAAA,GACH,GACE,IAAA;AAEJ,EAAA,uBACEC,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,WAAW,oBAAA,CAAO,IAAA;AAAA,MAClB,eAAA,EAAe,mBAAmB,MAAA,GAAS,MAAA;AAAA,MAC3C,YAAA,EAAc,gBAAA;AAAA,MACd,YAAA,EAAc,gBAAA;AAAA,MAEb,QAAA,EAAA;AAAA,QAAAe,aAAAA;AAAA,UACC,OAAA;AAAA,UACA;AAAA,YACE,eAAA,EAAiB,MAAA;AAAA,YACjB,eAAA,EAAiB,OAAA;AAAA,YACjB,eAAA,EAAiB,MAAA;AAAA,YACjB,SAAS,MAAM;AACb,cAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,gBAAA,UAAA,CAAW,CAAC,OAAO,CAAA;AACnB,gBAAA;AAAA,cACF;AAEA,cAAA,IAAI,eAAA,EAAiB;AACnB,gBAAA,UAAA,CAAW,IAAI,CAAA;AAAA,cACjB;AAAA,YACF,CAAA;AAAA,YACA,SAAS,MAAM;AACb,cAAA,IAAI,eAAA,EAAiB;AACnB,gBAAA,UAAA,CAAW,IAAI,CAAA;AAAA,cACjB;AAAA,YACF,CAAA;AAAA,YACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,cAAA,IACE,eAAA,KACI,MAAM,GAAA,KAAQ,OAAA,IAAW,MAAM,GAAA,KAAQ,GAAA,IAAO,KAAA,CAAM,GAAA,KAAQ,WAAA,CAAA,EAChE;AACA,gBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,gBAAA,UAAA,CAAW,IAAI,CAAA;AAAA,cACjB;AAAA,YACF;AAAA,WACF;AAAA,UACA;AAAA,SACF;AAAA,QACC,eAAe,QAAA,GAAWI,YAAAA,CAAa,QAAA,EAAU,QAAA,CAAS,IAAI,CAAA,GAAI;AAAA;AAAA;AAAA,GACrE;AAEJ;;;ACncA,IAAA,mBAAA,GAAA,EAAA;ACyBA,SAASC,qBAAoB,IAAA,EAA4B;AACvD,EAAA,IAAI,KAAK,OAAA,EAAS;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,IAAA,CAAK,SAAS,MAAA,IAAa,IAAA,CAAK,SAAS,IAAA,IAAQ,IAAA,CAAK,SAAS,KAAA,EAAO;AACxE,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,aAAA,CAAc,CAAA,EAAW,CAAA,EAAW,KAAA,EAAe,MAAA,EAAgB;AAC1E,EAAA,MAAM,GAAA,GAAM,CAAA;AACZ,EAAA,MAAM,OAAO,IAAA,CAAK,GAAA,CAAI,KAAK,MAAA,CAAO,UAAA,GAAa,QAAQ,GAAG,CAAA;AAC1D,EAAA,MAAM,OAAO,IAAA,CAAK,GAAA,CAAI,KAAK,MAAA,CAAO,WAAA,GAAc,SAAS,GAAG,CAAA;AAE5D,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,GAAA,EAAK,CAAC,GAAG,IAAI,CAAA;AAAA,IAClC,CAAA,EAAG,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,GAAA,EAAK,CAAC,GAAG,IAAI;AAAA,GACpC;AACF;AAEA,SAAS,oBAAA,CAAqB,MAA0B,QAAA,EAAiB;AACvE,EAAA,IAAI,OAAA,GAAU,IAAA;AAEd,EAAA,OAAO,OAAA,EAAS;AACd,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,YAAA,CAAa,YAAY,CAAA;AAE/C,IAAA,IAAI,KAAA,KAAU,OAAA,IAAW,KAAA,KAAU,MAAA,EAAQ;AACzC,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,OAAA,GAAU,OAAA,CAAQ,aAAA;AAAA,EACpB;AAEA,EAAA,OAAO,QAAA;AACT;AA2BA,IAAM,kBAAA,GAAqBf,cAA8C,IAAI,CAAA;AAEtE,SAAS,cAAA,GAAiB;AAC/B,EAAA,MAAM,OAAA,GAAUE,WAAW,kBAAkB,CAAA;AAE7C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,yDAAyD,CAAA;AAAA,EAC3E;AAEA,EAAA,OAAO,OAAA;AACT;AAWO,SAAS,mBAAA,CAAoB;AAAA,EAClC,QAAA;AAAA,EACA,aAAA,GAAgB,IAAA;AAAA,EAChB,cAAA,GAAiB,IAAA;AAAA,EACjB,aAAA,GAAgB,IAAA;AAAA,EAChB,YAAA;AAAA,EACA;AACF,CAAA,EAA6B;AArH7B,EAAA,IAAAV,GAAAA,EAAAC,KAAAW,GAAAA,EAAAG,GAAAA;AAsHE,EAAA,MAAM,QAAQ,YAAA,EAAa;AAC3B,EAAA,MAAM,SAASN,KAAAA,EAAM;AACrB,EAAA,MAAM,OAAA,GAAUL,OAAuB,IAAI,CAAA;AAC3C,EAAA,MAAM,WAAA,GAAcA,OAA0B,IAAI,CAAA;AAClD,EAAA,MAAM,UAAA,GAAaA,MAAAA,iBAAmD,IAAI,GAAA,EAAK,CAAA;AAC/E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAmC,IAAI,CAAA;AAC3E,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,QAAAA;AAAA,IAC9C;AAAA,GACF;AACA,EAAA,MAAM,aAAa,IAAA,KAAS,MAAA;AAC5B,EAAA,MAAM,UAAU,UAAA,GAAa,OAAA,CAAQ,IAAI,CAAA,GAAI,QAAQ,UAAU,CAAA;AAE/D,EAAAE,UAAU,MAAM;AACd,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQM,YAAY,MAAM;AAC9B,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAA,mBAAA,CAAoB,IAAI,CAAA;AACxB,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,KAAA,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,cAAA,GAAiBA,WAAAA;AAAA,IACrB,CAAC,UAAkB,YAAA,KAAgD;AACjE,MAAA,UAAA,CAAW,OAAA,CAAQ,GAAA,CAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,MAAA,OAAO,MAAM;AACX,QAAA,UAAA,CAAW,OAAA,CAAQ,OAAO,QAAQ,CAAA;AAAA,MACpC,CAAA;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,cAAA,GAAiBA,WAAAA;AAAA,IACrB,CAAC,QAAA,EAAkB,CAAA,EAAW,CAAA,KAAc;AAC1C,MAAA,MAAM,YAAA,GAAe,UAAA,CAAW,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA;AAEpD,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,MAAA,GAAS,aAAa,UAAA,EAAW;AACvC,MAAA,MAAM,QAAA,GAA8B;AAAA,QAClC,OAAO,YAAA,CAAa,KAAA;AAAA,QACpB,OAAO,YAAA,CAAa,KAAA;AAAA,QACpB,UAAU,YAAA,CAAa,QAAA;AAAA,QACvB,QAAA,EAAU,EAAE,CAAA,EAAG,CAAA,EAAE;AAAA,QACjB,QAAA;AAAA,QACA,KAAA,EAAO,oBAAA,CAAqB,MAAA,EAAQ,KAAK;AAAA,OAC3C;AAEA,MAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,MAAA,mBAAA,CAAoB,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA;AAC5B,MAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,IAAA,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,cAAc,KAAK;AAAA,GACtB;AAEA,EAAAN,UAAU,MAAM;AAhLlB,IAAA,IAAAP,GAAAA,EAAAC,GAAAA;AAiLI,IAAA,IAAI,CAAC,UAAA,IAAc,CAAC,IAAA,IAAQ,UAAA,EAAY;AACtC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,eAAe,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAO,CAAE,MAAK,CAAE,KAAA;AAIxD,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAOD,GAAAA,GAAA,YAAA,CAAa,UAAA,EAAW,KAAxB,gBAAAA,GAAAA,CAA2B,qBAAA,EAAA;AAExC,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA;AAAA,IACF;AAEA,IAAA,cAAA;AAAA,MAAA,CACEC,GAAAA,GAAA,KAAA,CAAM,IAAA,CAAK,UAAA,CAAW,OAAA,CAAQ,IAAA,EAAM,CAAA,CAAE,CAAC,CAAA,KAAvC,IAAA,GAAAA,GAAAA,GAA4C,EAAA;AAAA,MAC5C,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,KAAA,GAAQ,CAAA;AAAA,MACzB,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,GAAS;AAAA,KAC3B;AAAA,EACF,GAAG,CAAC,UAAA,EAAY,UAAA,EAAY,IAAA,EAAM,cAAc,CAAC,CAAA;AAEjD,EAAAM,UAAU,MAAM;AACd,IAAA,IAAI,UAAA,IAAc,CAAC,IAAA,EAAM;AACvB,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,IAAI,CAAC,CAAA;AAErB,EAAAc,gBAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,OAAA,IAAW,CAAC,UAAA,IAAc,CAAC,QAAQ,OAAA,EAAS;AAC/C,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,OAAA,CAAQ,qBAAA,EAAsB;AACvD,IAAA,mBAAA;AAAA,MACE,aAAA;AAAA,QACE,WAAW,QAAA,CAAS,CAAA;AAAA,QACpB,WAAW,QAAA,CAAS,CAAA;AAAA,QACpB,QAAA,CAAS,KAAA;AAAA,QACT,QAAA,CAAS;AAAA;AACX,KACF;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,OAAO,CAAC,CAAA;AAExB,EAAAd,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,IAAW,CAAC,OAAA,CAAQ,OAAA,EAAS;AAChC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAC/C,MAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA;AAAA,MACF;AAEA,MAAA,MAAMiB,MAAAA,GAAQ,aAAa,IAAI,CAAA;AAC/B,MAAA,aAAA,CAAcA,QAAO,CAAC,CAAA;AAAA,IACxB,CAAC,CAAA;AAED,IAAA,OAAO,MAAM,MAAA,CAAO,oBAAA,CAAqB,KAAK,CAAA;AAAA,EAChD,CAAA,EAAG,CAAC,OAAA,EAAS,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,QAAQ,CAAC,CAAA;AAElC,EAAAjB,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAwB;AAxPvD,MAAA,IAAAP,GAAAA,EAAAC,GAAAA;AAyPM,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,MAAM,YAAA,GAAe,UAAA,GAAA,CACjBD,GAAAA,GAAA,UAAA,CAAW,OAAA,CAAQ,GAAA,CAAI,UAAA,CAAW,QAAQ,CAAA,KAA1C,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAA6C,UAAA,EAAA,GAC7C,IAAA;AAEJ,MAAA,IACE,cAAA,IACA,EAAC,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,QAAA,CAAS,MAAA,CAAA,CAAA,IACxB,EAAA,CAACC,GAAAA,GAAA,OAAA,CAAQ,OAAA,KAAR,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAiB,QAAA,CAAS,MAAA,CAAA,CAAA,EAC3B;AACA,QAAA,KAAA,EAAM;AAAA,MACR;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,aAAA,IAAiB,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU;AAC3C,QAAA,KAAA,EAAM;AACN,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,QAAA,iBAAA,CAAkB,KAAA,EAAO,OAAA,CAAQ,OAAA,EAAS,KAAK,CAAA;AAAA,MACjD;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,iBAAiB,CAAA;AAC1D,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAClD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,eAAe,iBAAiB,CAAA;AAC7D,MAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACvD,CAAA;AAAA,EACF,GAAG,CAAC,UAAA,EAAY,OAAO,aAAA,EAAe,cAAA,EAAgB,OAAO,CAAC,CAAA;AAE9D,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAA+B;AA1RvD,IAAA,IAAAD,GAAAA;AA2RI,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA;AAAA,IACF;AAEA,IAAA,CAAAA,GAAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,QAAA,KAAZ,IAAA,GAAA,MAAA,GAAAA,IAAA,IAAA,CAAA,UAAA,EAAuB,IAAA,CAAA;AAEvB,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,KAAA,EAAM;AAAA,IACR;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,YAAA,GAAwC;AAAA,IAC5C,cAAA,EAAA,CAAgBA,GAAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,QAAA,KAAZ,OAAAA,GAAAA,GAAwB,IAAA;AAAA,IACxC,KAAA;AAAA,IACA,MAAA,EAAQ,OAAA;AAAA,IACR,MAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,SAAQC,GAAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,KAAA,KAAZ,IAAA,GAAAA,MAAqB,EAAC;AACpC,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,IAAA,CAAKsB,oBAAmB,CAAA;AACrD,EAAA,MAAM,gBAAeX,GAAAA,GAAA,gBAAA,IAAA,IAAA,GAAA,gBAAA,GAAoB,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,QAAA,KAAhC,OAAAA,GAAAA,GAA4C,IAAA;AACjE,EAAA,MAAM,WAAA,GAAA,CAAcG,GAAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,KAAA,KAAZ,OAAAA,GAAAA,GAAqB,KAAA;AAEzC,EAAA,uBACEZ,IAAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,OAAO,YAAA,EACjC,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,OAAA,IAAW,OAAA,IAAW,UAAA,IAAc,YAAA,GACjCmB,YAAAA;AAAA,sBACEnB,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,mBAAA,CAAO,KAAA,EAAO,cAAY,WAAA,EACxC,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,WAAA;AAAA,YACL,YAAA,EAAW,sBAAA;AAAA,YACX,WAAW,mBAAA,CAAO,QAAA;AAAA,YAClB,IAAA,EAAK,QAAA;AAAA,YACL,SAAS,MAAM;AACb,cAAA,IAAI,cAAA,EAAgB;AAClB,gBAAA,KAAA,EAAM;AAAA,cACR;AAAA,YACF;AAAA;AAAA,SACF;AAAA,wBACAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,OAAA;AAAA,YACL,cAAY,UAAA,CAAW,KAAA;AAAA,YACvB,WAAW,mBAAA,CAAO,IAAA;AAAA,YAClB,sBAAA,EAAsB,iBAAiB,MAAA,GAAS,MAAA;AAAA,YAChD,EAAA,EAAI,MAAA;AAAA,YACJ,IAAA,EAAK,MAAA;AAAA,YACL,OAAO,EAAE,IAAA,EAAM,aAAa,CAAA,EAAG,GAAA,EAAK,aAAa,CAAA,EAAE;AAAA,YAElD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,GAAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,IAAA;AAAA,gBAEA,cAAA;AAAA,gBACA,QAAA,EAAU;AAAA,eAAA;AAAA,cAFL,IAAA,CAAK;AAAA,aAIb;AAAA;AAAA;AACH,OAAA,EACF,CAAA;AAAA,MACA,QAAA,CAAS;AAAA,KACX,GACA;AAAA,GAAA,EACN,CAAA;AAEJ;AAUO,SAAS,iBAAA,CAAkB;AAAA,EAChC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ,cAAA;AAAA,EACR;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,WAAWO,KAAAA,EAAM;AACvB,EAAA,MAAM,SAAA,GAAYL,OAAuB,IAAI,CAAA;AAC7C,EAAA,MAAM,EAAE,cAAA,EAAgB,MAAA,EAAQ,QAAQ,cAAA,EAAgB,cAAA,KAAmB,cAAA,EAAe;AAE1F,EAAAG,SAAAA;AAAA,IACE,MACE,eAAe,QAAA,EAAU;AAAA,MACvB,UAAA,EAAY,MAAM,SAAA,CAAU,OAAA;AAAA,MAC5B,KAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACH,CAAC,KAAA,EAAO,KAAA,EAAO,QAAA,EAAU,gBAAgB,QAAQ;AAAA,GACnD;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAsC;AAC/D,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,cAAA,CAAe,QAAA,EAAU,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,OAAO,CAAA;AAAA,EACvD,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA8C;AAlYvE,IAAA,IAAAP,GAAAA;AAmYI,IAAA,IAAI,MAAM,GAAA,KAAQ,aAAA,IAAkB,MAAM,QAAA,IAAY,KAAA,CAAM,QAAQ,KAAA,EAAQ;AAC1E,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,MAAM,IAAA,GAAA,CAAOA,GAAAA,GAAA,SAAA,CAAU,OAAA,KAAV,gBAAAA,GAAAA,CAAmB,qBAAA,EAAA;AAEhC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,cAAA,CAAe,QAAA,EAAU,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,KAAA,GAAQ,GAAG,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAAA,MACjF;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,UAAU,cAAA,KAAmB,QAAA;AAEhD,EAAA,uBACEE,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,SAAA;AAAA,MACL,eAAA,EAAe,aAAa,MAAA,GAAS,MAAA;AAAA,MACrC,eAAA,EAAe,UAAA;AAAA,MACf,eAAA,EAAc,MAAA;AAAA,MACd,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,YAAY,CAAA,EAAG,mBAAA,CAAO,MAAM,CAAA,CAAA,EAAI,SAAS,KAAK,mBAAA,CAAO,MAAA;AAAA,MAChE,aAAA,EAAe,iBAAA;AAAA,MACf,SAAA,EAAW,aAAA;AAAA,MACX,QAAA,EAAU,CAAA;AAAA,MAET;AAAA;AAAA,GACH;AAEJ;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;;AChahC,IAAA,sBAAA,GAAA,EAAA;AC0BA,IAAMS,kBAAAA,GAAoB,GAAA;AAmB1B,SAAS,UAAU,KAAA,EAAe;AAChC,EAAA,OAAO,KAAA,CAAM,IAAA,EAAK,CAAE,WAAA,EAAY;AAClC;AAEA,SAAS,WAAA,CAAY,MAA0B,KAAA,EAAe;AAC5D,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,CAAK,KAAA,EAAO,KAAK,WAAA,EAAa,IAAA,CAAK,KAAK,CAAA,CACvD,OAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,EACR,WAAA,EAAY;AAEf,EAAA,OAAO,QAAA,CAAS,SAAS,KAAK,CAAA;AAChC;AAEO,SAAS,cAAA,CAAe;AAAA,EAC7B,aAAA,GAAgB,IAAA;AAAA,EAChB,iBAAA,GAAoB,IAAA;AAAA,EACpB,eAAA,GAAkB,IAAA;AAAA,EAClB,YAAA,GAAe,oBAAA;AAAA,EACf,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA,GAAc,uBAAA;AAAA,EACd,KAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA,GAAmB,IAAA;AAAA,EACnB,UAAA,GAAa,IAAA;AAAA,EACb,aAAA,GAAgB;AAClB,CAAA,EAAwB;AACtB,EAAA,MAAM,UAAUF,KAAAA,EAAM;AACtB,EAAA,MAAM,UAAUA,KAAAA,EAAM;AACtB,EAAA,MAAM,YAAYA,KAAAA,EAAM;AACxB,EAAA,MAAM,QAAA,GAAWL,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAWA,OAAuB,IAAI,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAaA,OAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,SAAS,IAAI,CAAA;AAC7C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAA8B,SAAS,CAAA;AAEjE,EAAA,uBAAA,CAAwB,IAAA,IAAQ,UAAU,QAAA,EAAU;AAAA,IAClD,eAAA,EAAiB;AAAA,GAClB,CAAA;AACD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,SAAS,EAAE,CAAA;AACrD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,CAAC,CAAA;AAEhD,EAAA,MAAM,eAAe,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,aAAA;AAE9B,EAAA,MAAM,aAAA,GAAgBW,QAAQ,MAAM;AAClC,IAAA,MAAM,SAAA,GAAY,UAAU,YAAY,CAAA;AACxC,IAAA,OAAO,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,CAAC,KAAK,QAAA,IAAY,WAAA,CAAY,IAAA,EAAM,SAAS,CAAC,CAAA;AAAA,EAC9E,CAAA,EAAG,CAAC,YAAA,EAAc,KAAK,CAAC,CAAA;AAExB,EAAA,MAAM,YAAA,GAAeA,QAAQ,MAAM;AApGrC,IAAA,IAAAhB,GAAAA,EAAAC,GAAAA;AAqGI,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,OAAO,CAAC,EAAE,KAAA,EAAO,IAAA,EAAuB,KAAA,EAAO,eAAe,CAAA;AAAA,IAChE;AAEA,IAAA,MAAM,MAAA,uBAAa,GAAA,EAAyC;AAE5D,IAAA,KAAA,MAAW,QAAQ,aAAA,EAAe;AAChC,MAAA,MAAM,GAAA,GAAA,CAAMD,GAAAA,GAAA,IAAA,CAAK,KAAA,KAAL,OAAAA,GAAAA,GAAc,IAAA;AAC1B,MAAA,MAAM,MAAA,GAAA,CAASC,MAAA,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA,KAAd,IAAA,GAAAA,MAAmB,EAAC;AACnC,MAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAChB,MAAA,MAAA,CAAO,GAAA,CAAI,KAAK,MAAM,CAAA;AAAA,IACxB;AAEA,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,KAAA,EAAO,UAAU,CAAA,MAAO;AAAA,MAChE,KAAA;AAAA,MACA,KAAA,EAAO;AAAA,KACT,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,aAAA,EAAe,UAAU,CAAC,CAAA;AAE9B,EAAA,MAAM,SAAA,GAAYe,OAAAA;AAAA,IAChB,MAAM,YAAA,CAAa,OAAA,CAAQ,CAAC,KAAA,KAAU,MAAM,KAAK,CAAA;AAAA,IACjD,CAAC,YAAY;AAAA,GACf;AAEA,EAAAT,UAAU,MAAM;AACd,IAAA,IAAI,OAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAC/C,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,WAAA,CAAY,IAAI,CAAA;AAChB,QAAA,QAAA,CAAS,SAAS,CAAA;AAClB,QAAA;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,SAAS,CAAA;AAClB,MAAA,OAAA,GAAU,OAAO,UAAA,CAAW,MAAM,WAAA,CAAY,KAAK,GAAGI,kBAAiB,CAAA;AAAA,IACzE,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,qBAAqB,KAAK,CAAA;AACjC,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAA,CAAO,aAAa,OAAO,CAAA;AAAA,MAC7B;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAJ,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA;AAAA,IACF;AAEA,IAAA,cAAA,CAAe,CAAC,CAAA;AAChB,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAxJrD,MAAA,IAAAP,GAAAA,EAAAC,GAAAA;AAyJM,MAAA,CAAAD,GAAAA,GAAA,QAAA,CAAS,OAAA,KAAT,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAkB,KAAA,EAAA;AAClB,MAAA,CAAAC,GAAAA,GAAA,QAAA,CAAS,OAAA,KAAT,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAkB,MAAA,EAAA;AAAA,IACpB,CAAC,CAAA;AAED,IAAA,OAAO,MAAM,MAAA,CAAO,oBAAA,CAAqB,KAAK,CAAA;AAAA,EAChD,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAM,UAAU,MAAM;AACd,IAAA,IAAI,WAAA,IAAe,UAAU,MAAA,EAAQ;AACnC,MAAA,cAAA,CAAe,KAAK,GAAA,CAAI,CAAA,EAAG,SAAA,CAAU,MAAA,GAAS,CAAC,CAAC,CAAA;AAAA,IAClD;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,SAAA,CAAU,MAAM,CAAC,CAAA;AAElC,EAAAA,UAAU,MAAM;AAtKlB,IAAA,IAAAP,GAAAA;AAuKI,IAAA,IAAI,CAAC,IAAA,IAAQ,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACnC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,UAAU,WAAW,CAAA;AACxC,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAA,CAAUA,GAAAA,GAAA,UAAA,CAAW,OAAA,KAAX,gBAAAA,GAAAA,CAAoB,aAAA;AAAA,MAClC,CAAA,CAAA,EAAI,IAAI,MAAA,CAAO,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,UAAA,CAAW,EAAE,CAAA,CAAE,CAAC,CAAA;AAAA,KAAA;AAGjD,IAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,cAAA,CAAe,EAAE,KAAA,EAAO,SAAA,EAAU,CAAA;AAAA,EAC7C,GAAG,CAAC,WAAA,EAAa,SAAA,EAAW,SAAA,EAAW,IAAI,CAAC,CAAA;AAE5C,EAAAO,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,eAAA,EAAiB;AAC7B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,OAAA,EAAQ;AAAA,MACV;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAChD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EAClE,CAAA,EAAG,CAAC,eAAA,EAAiB,OAAA,EAAS,IAAI,CAAC,CAAA;AAEnC,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAAiB;AACjC,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,aAAA,CAAc,IAAI,CAAA;AAAA,IACpB,CAAA,MAAO;AACL,MAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,IACvB;AAEA,IAAA,cAAA,CAAe,CAAC,CAAA;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAA6B;AACjD,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,OAAA,EAAQ;AAAA,IACV;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAAgD;AAC1E,IAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,EAAa;AAC7B,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,cAAA,CAAe,CAAC,OAAA,KAAY,IAAA,CAAK,GAAA,CAAI,OAAA,GAAU,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,SAAA,CAAU,MAAA,GAAS,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AACpF,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,QAAQ,SAAA,EAAW;AAC3B,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,cAAA,CAAe,CAAC,OAAA,KAAY,IAAA,CAAK,IAAI,OAAA,GAAU,CAAA,EAAG,CAAC,CAAC,CAAA;AACpD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,SAAA,CAAU,WAAW,CAAA,EAAG;AACnD,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,YAAA,CAAa,SAAA,CAAU,WAAW,CAAC,CAAA;AAAA,IACrC;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEL,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,sBAAA,CAAO,QAAA;AAAA,MAClB,kBAAA,EAAkB,iBAAA;AAAA,MAClB,YAAA,EAAY,KAAA;AAAA,MACZ,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,IAAI,KAAA,CAAM,aAAA,KAAkB,KAAA,CAAM,MAAA,IAAU,iBAAA,EAAmB;AAC7D,UAAA,OAAA,EAAQ;AAAA,QACV;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,kBAAAC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,QAAA;AAAA,UACL,iBAAA,EAAiB,OAAA;AAAA,UACjB,YAAA,EAAW,MAAA;AAAA,UACX,WAAW,sBAAA,CAAO,KAAA;AAAA,UAClB,YAAA,EAAY,KAAA;AAAA,UACZ,IAAA,EAAK,QAAA;AAAA,UAEL,QAAA,EAAA;AAAA,4BAAAD,IAAC,IAAA,EAAA,EAAG,SAAA,EAAW,uBAAO,cAAA,EAAgB,EAAA,EAAI,SAAS,QAAA,EAAA,iBAAA,EAEnD,CAAA;AAAA,4BACAC,IAAAA,CAAC,OAAA,EAAA,EAAM,WAAW,sBAAA,CAAO,UAAA,EAAY,SAAS,OAAA,EAC5C,QAAA,EAAA;AAAA,8BAAAD,IAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,uBAAO,UAAA,EACzC,QAAA,kBAAAA,GAAAA,CAACuB,eAAAA,EAAA,EAAgB,SAAA,EAAW,sBAAA,CAAO,aAAA,EAAe,IAAA,EAAM,mBAAmB,CAAA,EAC7E,CAAA;AAAA,8BACAvB,GAAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,QAAA;AAAA,kBACL,uBAAA,EACE,SAAA,CAAU,WAAW,CAAA,GAAI,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,SAAA,CAAU,WAAW,CAAA,CAAE,EAAE,CAAA,CAAA,GAAK,MAAA;AAAA,kBAEzE,mBAAA,EAAkB,MAAA;AAAA,kBAClB,eAAA,EAAe,SAAA;AAAA,kBACf,eAAA,EAAe,IAAA;AAAA,kBACf,YAAA,EAAW,iBAAA;AAAA,kBACX,WAAW,sBAAA,CAAO,WAAA;AAAA,kBAClB,EAAA,EAAI,OAAA;AAAA,kBACJ,UAAU,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,kBAChD,SAAA,EAAW,kBAAA;AAAA,kBACX,WAAA;AAAA,kBACA,IAAA,EAAK,UAAA;AAAA,kBACL,IAAA,EAAK,QAAA;AAAA,kBACL,KAAA,EAAO;AAAA;AAAA;AACT,aAAA,EACF,CAAA;AAAA,4BAEAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,UAAA;AAAA,gBACL,YAAA,EAAW,iBAAA;AAAA,gBACX,WAAW,sBAAA,CAAO,OAAA;AAAA,gBAClB,EAAA,EAAI,SAAA;AAAA,gBACJ,IAAA,EAAK,SAAA;AAAA,gBAEJ,QAAA,EAAA,SAAA,CAAU,MAAA,KAAW,CAAA,mBACpBA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,sBAAA,CAAO,KAAA,EAAO,IAAA,EAAK,QAAA,EAC9B,QAAA,EAAA,YAAA,EACH,CAAA,GAEA,aAAa,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,KAAA,EAAO,UAAA,EAAW,qBAC3CC,IAAAA,CAAC,KAAA,EAAA,EAA6B,SAAA,EAAW,sBAAA,CAAO,KAAA,EAC7C,QAAA,EAAA;AAAA,kBAAA,UAAA,IAAc,KAAA,mBAAQD,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,sBAAA,CAAO,UAAA,EAAa,iBAAM,CAAA,GAAO,IAAA;AAAA,kBACrE,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,KAAS;AACxB,oBAAA,MAAM,KAAA,GAAQ,UAAU,SAAA,CAAU,CAAC,UAAU,KAAA,CAAM,EAAA,KAAO,KAAK,EAAE,CAAA;AACjE,oBAAA,MAAM,SAAS,KAAA,KAAU,WAAA;AAEzB,oBAAA,uBACEC,IAAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBAEC,eAAA,EAAe,MAAA;AAAA,wBACf,WAAW,sBAAA,CAAO,IAAA;AAAA,wBAClB,aAAA,EAAa,SAAS,MAAA,GAAS,OAAA;AAAA,wBAC/B,EAAA,EAAI,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,EAAE,CAAA,CAAA;AAAA,wBAC3B,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI,CAAA;AAAA,wBAChC,YAAA,EAAc,MAAM,cAAA,CAAe,KAAK,CAAA;AAAA,wBACxC,IAAA,EAAK,QAAA;AAAA,wBACL,IAAA,EAAK,QAAA;AAAA,wBAEL,QAAA,EAAA;AAAA,0CAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,sBAAA,CAAO,QAAA,EACtB,QAAA,EAAA;AAAA,4CAAAD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,sBAAA,CAAO,SAAA,EAAY,eAAK,KAAA,EAAM,CAAA;AAAA,4BAC9C,gBAAA,IAAoB,IAAA,CAAK,WAAA,mBACxBA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,sBAAA,CAAO,eAAA,EAAkB,QAAA,EAAA,IAAA,CAAK,WAAA,EAAY,CAAA,GACzD;AAAA,2BAAA,EACN,CAAA;AAAA,0BACC,aAAA,IAAiB,IAAA,CAAK,QAAA,mBACrBA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,sBAAA,CAAO,QAAA,EACxC,QAAA,EAAA,IAAA,CAAK,UACR,CAAA,GACE;AAAA;AAAA,uBAAA;AAAA,sBApBC,IAAA,CAAK;AAAA,qBAqBZ;AAAA,kBAEJ,CAAC;AAAA,iBAAA,EAAA,EA/BO,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,SAgCnB,CACD;AAAA;AAAA,aAEL;AAAA,4BAEAC,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,uBAAO,MAAA,EACxB,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,UAAK,QAAA,EAAA,uBAAA,EAAW,CAAA;AAAA,8BACjBA,GAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,eAAA,EAAQ,CAAA;AAAA,8BACdA,GAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,WAAA,EAAS;AAAA,aAAA,EACjB;AAAA;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;;;AC1VA,IAAA,sBAAA,GAAA,EAAA;ACaO,IAAM,qBAAA,GAAwBM,cAAiD,IAAI,CAAA;AAYnF,SAAS,cAAA,CAAe;AAAA,EAC7B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,YAAA;AAAA,EACA,aAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP;AACF,CAAA,EAAwB;AACtB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIH,SAA4B,MAAM;AAC1E,IAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,MAAA,OAAO,YAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA,KAAS,UAAA,GAAa,EAAC,GAAI,EAAA;AAAA,EACpC,CAAC,CAAA;AAED,EAAA,MAAM,eAAe,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,aAAA;AAE9B,EAAA,MAAM,QAAA,GAAWQ,WAAAA;AAAA,IACf,CAAC,IAAA,KAA4B;AAC3B,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,MACvB;AAEA,MAAA,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAgB,IAAA,CAAA;AAAA,IAClB,CAAA;AAAA,IACA,CAAC,eAAe,KAAK;AAAA,GACvB;AAEA,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,CAAC,SAAA,KAAsB;AACrB,MAAA,IAAI,SAAS,UAAA,EAAY;AACvB,QAAA,OAAO,MAAM,OAAA,CAAQ,YAAY,CAAA,IAAK,YAAA,CAAa,SAAS,SAAS,CAAA;AAAA,MACvE;AAEA,MAAA,OAAO,YAAA,KAAiB,SAAA;AAAA,IAC1B,CAAA;AAAA,IACA,CAAC,cAAc,IAAI;AAAA,GACrB;AAEA,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,CAAC,SAAA,KAAsB;AACrB,MAAA,IAAI,SAAS,UAAA,EAAY;AACvB,QAAA,MAAM,aAAa,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,GAAI,eAAe,EAAC;AACjE,QAAA,MAAM,IAAA,GAAO,UAAA,CAAW,QAAA,CAAS,SAAS,IACtC,UAAA,CAAW,MAAA,CAAO,CAAC,KAAA,KAAU,UAAU,SAAS,CAAA,GAChD,CAAC,GAAG,YAAY,SAAS,CAAA;AAC7B,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,kBAAkB,YAAA,KAAiB,SAAA;AACzC,MAAA,IAAI,eAAA,IAAmB,CAAC,WAAA,EAAa;AACnC,QAAA;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,eAAA,GAAkB,KAAK,SAAS,CAAA;AAAA,IAC3C,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,YAAA,EAAc,QAAA,EAAU,IAAI;AAAA,GAC5C;AAEA,EAAA,MAAM,YAAA,GAAeG,OAAAA;AAAA,IACnB,OAAO;AAAA,MACL,WAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,MAAA,EAAQ,MAAA,EAAQ,IAAI;AAAA,GACpC;AAEA,EAAA,uBACEd,GAAAA,CAAC,qBAAA,CAAsB,QAAA,EAAtB,EAA+B,KAAA,EAAO,YAAA,EACrC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,WAAA,EAAY,SAAA,EAAW,CAAC,sBAAA,CAAO,KAAA,EAAO,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,EAAG,IAAA,EAAK,OAAA,EAC9F,QAAA,EACH,CAAA,EACF,CAAA;AAEJ;;;ACxGA,IAAA,iBAAA,GAAA,EAAA;ACaA,SAAS,WAAA,GAAc;AACrB,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,WAAW,iBAAA,CAAO,OAAA,EAAS,OAAA,EAAQ,WAAA,EACzD,QAAA,kBAAAA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAE,sBAAA;AAAA,MACF,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,WAAA,EAAY;AAAA;AAAA,GACd,EACF,CAAA;AAEJ;AAaO,SAAS,SAAA,CAAU;AAAA,EACxB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,YAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,KAAA,GAAQQ,WAAW,qBAAqB,CAAA;AAC9C,EAAA,MAAM,cAAcD,KAAAA,EAAM;AAC1B,EAAA,MAAM,YAAY,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,WAAA;AAC3B,EAAA,MAAM,SAAA,GAAY,GAAG,SAAS,CAAA,QAAA,CAAA;AAC9B,EAAA,MAAM,OAAA,GAAU,GAAG,SAAS,CAAA,MAAA,CAAA;AAC5B,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIJ,SAAS,WAAW,CAAA;AAEhE,EAAA,MAAM,SAAS,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,SAAS,IAAK,IAAA,IAAA,IAAA,GAAA,IAAA,GAAQ,cAAA;AAE1D,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,KAAA,CAAM,OAAO,SAAS,CAAA;AACtB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,GAAO,EAAE,IAAA,IAAA,IAAA,GAAA,IAAA,GAAQ,cAAA,CAAA;AACvB,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,IACxB;AAEA,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,IAAA,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,0BACJF,IAAAA,CAAC,SAAI,SAAA,EAAW,CAAC,kBAAO,IAAA,EAAM,SAAS,EAAE,MAAA,CAAO,OAAO,EAAE,IAAA,CAAK,GAAG,GAAG,WAAA,EAAW,MAAA,GAAS,SAAS,OAAA,EAC/F,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,eAAA,EAAe,OAAA;AAAA,QACf,eAAA,EAAe,MAAA;AAAA,QACf,WAAW,iBAAA,CAAO,OAAA;AAAA,QAClB,QAAA;AAAA,QACA,EAAA,EAAI,SAAA;AAAA,QACJ,OAAA,EAAS,YAAA;AAAA,QACT,IAAA,EAAK,QAAA;AAAA,QAEL,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iBAAA,CAAO,cAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BAC7CA,IAAC,WAAA,EAAA,EAAY;AAAA;AAAA;AAAA,KACf;AAAA,oBACAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAiB,SAAA;AAAA,QACjB,WAAW,iBAAA,CAAO,KAAA;AAAA,QAClB,EAAA,EAAI,OAAA;AAAA,QACJ,KAAA,EAAO,CAAC,MAAA,IAAU,MAAA;AAAA,QAClB,IAAA,EAAK,QAAA;AAAA,QAEL,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAA,CAAO,UAAA,EACrB,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAA,CAAO,OAAA,EAAU,UAAS,CAAA,EAC5C;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAGF,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAA,CAAO,YAAa,QAAA,EAAA,OAAA,EAAQ,CAAA;AACrD;;;AC7GA,IAAA,gBAAA,GAAA,EAAA;ACuBA,SAASwB,YAAAA,GAAc;AACrB,EAAA,uBACExB,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,WAAW,gBAAA,CAAO,OAAA,EAAS,OAAA,EAAQ,WAAA,EACzD,QAAA,kBAAAA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAE,sBAAA;AAAA,MACF,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,WAAA,EAAY;AAAA;AAAA,GACd,EACF,CAAA;AAEJ;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,QAAA;AAAA,EACA,eAAA,GAAkB,KAAA;AAAA,EAClB,QAAA;AAAA,EACA,QAAA,GAAW,CAAA;AAAA,EACX,gBAAA;AAAA,EACA,aAAA,GAAgB,WAAA;AAAA,EAChB,aAAA,GAAgB;AAClB,CAAA,EAAkB;AAChB,EAAA,MAAM,YAAYO,KAAAA,EAAM;AACxB,EAAA,MAAM,QAAA,GAAWL,OAAuB,IAAI,CAAA;AAC5C,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIC,SAAS,eAAe,CAAA;AACxE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAqD,IAAI,CAAA;AACvF,EAAA,MAAM,aAAa,QAAA,IAAA,IAAA,GAAA,QAAA,GAAY,gBAAA;AAC/B,EAAA,MAAMsB,WAAAA,GAAa,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAQ,CAAA;AAEvC,EAAA,MAAM,cAAA,GAAiBd,YAAY,MAAM;AACvC,IAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,aAAa,MAAA,CAAO,UAAA,CAAW,gBAAA,CAAiB,KAAK,EAAE,UAAU,CAAA;AACvE,IAAA,MAAM,OAAO,KAAA,CAAM,YAAA;AACnB,IAAA,MAAM,SAAA,GAAY,OAAO,QAAA,CAAS,UAAU,IAAI,IAAA,CAAK,IAAA,CAAK,UAAA,GAAac,WAAU,CAAA,GAAI,IAAA;AAErF,IAAA,UAAA,CAAW,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AAC9B,IAAA,YAAA,CAAa,IAAA,GAAO,YAAY,CAAC,CAAA;AAAA,EACnC,CAAA,EAAG,CAACA,WAAU,CAAC,CAAA;AAEf,EAAAN,gBAAgB,MAAM;AACpB,IAAA,cAAA,EAAe;AAAA,EACjB,CAAA,EAAG,CAAC,QAAA,EAAU,cAAc,CAAC,CAAA;AAE7B,EAAAA,gBAAgB,MAAM;AACpB,IAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,IAAA,IAAI,CAAC,KAAA,IAAS,OAAO,cAAA,KAAmB,WAAA,EAAa;AACnD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,MAAM;AACxC,MAAA,cAAA,EAAe;AAAA,IACjB,CAAC,CAAA;AAED,IAAA,QAAA,CAAS,QAAQ,KAAK,CAAA;AACtB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,MAAM,OAAO,CAAC,UAAA;AACd,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,IAC1B;AACA,IAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAmB,IAAA,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,aAAa,UAAA,IAAc,SAAA;AACjC,EAAA,MAAM,UAAA,GAAa,cAAA,CAAA;AAAA,IACjB,mBAAA,EAAqBM;AAAA,GAAA,EACjB,OAAA,GACA;AAAA,IACE,8BAAA,EAAgC,CAAA,EAAG,OAAA,CAAQ,SAAS,CAAA,EAAA,CAAA;AAAA,IACpD,yBAAA,EAA2B,CAAA,EAAG,OAAA,CAAQ,IAAI,CAAA,EAAA;AAAA,MAE5C,EAAC,CAAA;AAGP,EAAA,uBACExB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAO,IAAA,EACrB,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,gBAAA,CAAO,YAAA;AAAA,QAClB,eAAA,EAAe,aAAa,MAAA,GAAS,OAAA;AAAA,QACrC,eAAA,EAAe,UAAU,MAAA,GAAS,OAAA;AAAA,QAClC,EAAA,EAAI,SAAA;AAAA,QACJ,KAAA,EAAO,CAAC,UAAA,IAAc,MAAA;AAAA,QACtB,KAAA,EAAO,UAAA;AAAA,QAEP,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAU,SAAA,EAAW,gBAAA,CAAO,OACnC,QAAA,EACH;AAAA;AAAA,KACF;AAAA,IACC,6BACCC,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,eAAA,EAAe,SAAA;AAAA,QACf,eAAA,EAAe,UAAA;AAAA,QACf,WAAW,gBAAA,CAAO,MAAA;AAAA,QAClB,eAAA,EAAe,aAAa,MAAA,GAAS,OAAA;AAAA,QACrC,OAAA,EAAS,YAAA;AAAA,QACT,IAAA,EAAK,QAAA;AAAA,QAEL,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAwC,SAAA,EAAW,gBAAA,CAAO,WAAA,EACxD,uBAAa,aAAA,GAAgB,aAAA,EAAA,EADrB,UAAA,GAAa,MAAA,GAAS,MAEjC,CAAA;AAAA,0BACAA,GAAAA,CAACwB,YAAAA,EAAA,EAAY;AAAA;AAAA;AAAA,KACf,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;;;ACzIA,IAAA,aAAA,GAAA,EAAA;ACmBO,SAAS,KAAA,CAAM;AAAA,EACpB,WAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,KAAA,GAAQ,SAAA;AAAA,EACR,MAAA,GAAS,SAAA;AAAA,EACT;AACF,CAAA,EAAe;AACb,EAAA,MAAM,YAAA,GAAe,QAAA,KAAa,MAAA,IAAa,QAAA,GAAW,CAAA;AAC1D,EAAA,MAAM,WAAA,GAAc,MAAA,KAAW,OAAA,IAAW,MAAA,KAAW,SAAA;AAErD,EAAA,uBACExB,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,aAAA,CAAO,KAAA;AAAA,MAClB,aAAA,EAAa,SAAS,MAAA,GAAS,MAAA;AAAA,MAC/B,YAAA,EAAY,KAAA;AAAA,MACZ,aAAA,EAAa,MAAA;AAAA,MACb,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA,EAAW,cAAc,WAAA,GAAc,QAAA;AAAA,MACvC,IAAA,EAAM,cAAc,OAAA,GAAU,QAAA;AAAA,MAE9B,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAO,IAAA,EACrB,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,CAAO,IAAA,EACrB,QAAA,EAAA;AAAA,0BAAAD,IAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,cAAO,IAAA,EACxC,QAAA,kBAAAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,eAAe,aAAA,CAAO,QAAA,EAAU,QAAgB,YAAA,EAAc,aAAA,CAAO,SAAS,CAAA,EACjG,CAAA;AAAA,0BACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAO,OAAA,EACrB,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,aAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YAClC,WAAA,mBAAcA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,aAAA,CAAO,WAAA,EAAc,uBAAY,CAAA,GAAO;AAAA,WAAA,EACvE,CAAA;AAAA,UACC,8BACCA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,eAAA;AAAA,cACX,WAAW,aAAA,CAAO,OAAA;AAAA,cAClB,OAAA,EAAS,SAAA;AAAA,cACT,IAAA,EAAK,QAAA;AAAA,cAEL,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,WAAW,aAAA,CAAO,WAAA,EAAa,OAAA,EAAQ,WAAA,EAC7D,QAAA,kBAAAA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,sCAAA;AAAA,kBACF,IAAA,EAAK,MAAA;AAAA,kBACL,MAAA,EAAO,cAAA;AAAA,kBACP,aAAA,EAAc,OAAA;AAAA,kBACd,WAAA,EAAY;AAAA;AAAA,eACd,EACF;AAAA;AAAA,WACF,GACE;AAAA,SAAA,EACN,CAAA;AAAA,QACC,YAAA,mBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,eAAY,MAAA,EAAO,SAAA,EAAW,aAAA,CAAO,aAAA,EACxC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,WAAW,aAAA,CAAO,WAAA;AAAA,YAClB,KAAA,EAAO,EAAE,iBAAA,EAAmB,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAA;AAAK;AAAA,WAEhD,CAAA,GACE;AAAA,OAAA,EACN;AAAA;AAAA,GACF;AAEJ;;;ACpFA,IAAA,qBAAA,GAAA,EAAA;ACiBO,IAAM,yBAAA,GAA4B;AAyBzC,IAAM,eAAA,GAAyC;AAAA,EAC7C,UAAA,EAAY,OAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,QAAA,GAAW,EAAA;AACjB,IAAM,eAAA,GAAkB,GAAA;AACxB,IAAM,cAAA,GAAiB,GAAA;AACvB,IAAM,SAAA,GAAY,+BAAA;AAClB,IAAM,sBAAA,GAAyB,CAAA,UAAA,EAAa,eAAe,CAAA,GAAA,EAAM,SAAS,CAAA,CAAA;AAC1E,IAAM,qBAAA,GAAwB,aAAa,cAAc,CAAA,6BAAA,CAAA;AAEzD,IAAM,YAAA,GAAeM,cAAwC,IAAI,CAAA;AAE1D,SAAS,QAAA,GAAW;AACzB,EAAA,MAAM,OAAA,GAAUE,WAAW,YAAY,CAAA;AACvC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAAA,EAC9D;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,eAAe,OAAA,EAAyB;AAC/C,EAAA,OAAO,OAAA,CAAQ,cAA2B,sBAAsB,CAAA;AAClE;AAEA,SAAS,qBAAqB,OAAA,EAAyB;AApEvD,EAAA,IAAAV,GAAAA;AAqEE,EAAA,MAAM,OAAA,GAAU,eAAe,OAAO,CAAA;AACtC,EAAA,OAAA,CAAOA,GAAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,YAAA,KAAT,IAAA,GAAAA,MAAyB,OAAA,CAAQ,YAAA;AAC1C;AAEA,SAAS,uBAAuB,QAAA,EAA6C;AAC3E,EAAA,OAAO,QAAA,KAAa,QAAQ,0BAAA,GAA6B,yBAAA;AAC3D;AAEA,SAAS,yBAAyB,OAAA,EAAsB;AACtD,EAAA,OAAA,CAAQ,MAAM,SAAA,GAAY,EAAA;AAC1B,EAAA,OAAA,CAAQ,MAAM,UAAA,GAAa,EAAA;AAC3B,EAAA,OAAO,QAAQ,OAAA,CAAQ,WAAA;AACzB;AAEA,SAAS,mBAAA,CACP,MAAA,EACA,OAAA,EACA,QAAA,EACA;AAvFF,EAAA,IAAAA,GAAAA,EAAAC,GAAAA;AAwFE,EAAA,MAAM,UAAkC,EAAC;AAEzC,EAAA,IAAI,aAAa,KAAA,EAAO;AACtB,IAAA,IAAI2B,WAAAA,GAAa,CAAA;AAEjB,IAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,MAAA,CAAO,MAAA,EAAQ,SAAS,CAAA,EAAG;AACrD,MAAA,MAAM,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC1B,MAAA,OAAA,CAAQ,KAAA,CAAM,EAAE,CAAA,GAAIA,WAAAA;AACpB,MAAAA,WAAAA,IAAAA,CAAAA,CAAe5B,GAAAA,GAAA,OAAA,CAAQ,GAAA,CAAI,MAAM,EAAE,CAAA,KAApB,IAAA,GAAAA,GAAAA,GAAyB,CAAA,KAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,GAAS,IAAI,QAAA,GAAW,CAAA,CAAA;AAAA,IACvF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,IAAI,UAAA,GAAa,CAAA;AAEjB,EAAA,KAAA,IAAS,QAAQ,MAAA,CAAO,MAAA,GAAS,GAAG,KAAA,IAAS,CAAA,EAAG,SAAS,CAAA,EAAG;AAC1D,IAAA,MAAM,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC1B,IAAA,OAAA,CAAQ,KAAA,CAAM,EAAE,CAAA,GAAI,UAAA;AACpB,IAAA,UAAA,IAAA,CAAA,CAAeC,GAAAA,GAAA,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA,KAApB,IAAA,GAAAA,GAAAA,GAAyB,CAAA,KAAM,KAAA,GAAQ,CAAA,GAAI,QAAA,GAAW,CAAA,CAAA;AAAA,EACvE;AAEA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,YAAA,GAAeG,MAAAA,CAAO,QAAA,IAAA,IAAA,GAAA,QAAA,GAAY,CAAC,CAAA;AACzC,EAAA,MAAM,QAAA,GAAWA,OAA2B,MAAS,CAAA;AACrD,EAAA,MAAM,YAAA,GAAeA,OAAO,CAAC,CAAA;AAE7B,EAAAG,UAAU,MAAM;AACd,IAAA,YAAA,CAAa,UAAU,QAAA,IAAA,IAAA,GAAA,QAAA,GAAY,CAAA;AAAA,EACrC,CAAA,EAAG,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA;AAErB,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,QAAA,IAAY,YAAY,CAAA,EAAG;AACzC,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,IAAI,QAAA,CAAS,YAAY,MAAA,EAAW;AAClC,QAAA,MAAA,CAAO,YAAA,CAAa,SAAS,OAAO,CAAA;AACpC,QAAA,QAAA,CAAS,OAAA,GAAU,MAAA;AACnB,QAAA,YAAA,CAAa,UAAU,IAAA,CAAK,GAAA;AAAA,UAC1B,CAAA;AAAA,UACA,YAAA,CAAa,OAAA,IAAW,IAAA,CAAK,GAAA,KAAQ,YAAA,CAAa,OAAA;AAAA,SACpD;AACA,QAAA,YAAA,CAAa,OAAA,GAAU,CAAA;AAAA,MACzB;AAEA,MAAA;AAAA,IACF;AAEA,IAAA,YAAA,CAAa,OAAA,GAAU,KAAK,GAAA,EAAI;AAChC,IAAA,QAAA,CAAS,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AACzC,MAAA,SAAA,EAAU;AAAA,IACZ,CAAA,EAAG,aAAa,OAAO,CAAA;AAEvB,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,QAAA,CAAS,YAAY,MAAA,EAAW;AAClC,QAAA,MAAA,CAAO,YAAA,CAAa,SAAS,OAAO,CAAA;AACpC,QAAA,QAAA,CAAS,OAAA,GAAU,MAAA;AACnB,QAAA,YAAA,CAAa,UAAU,IAAA,CAAK,GAAA;AAAA,UAC1B,CAAA;AAAA,UACA,YAAA,CAAa,OAAA,IAAW,IAAA,CAAK,GAAA,KAAQ,YAAA,CAAa,OAAA;AAAA,SACpD;AACA,QAAA,YAAA,CAAa,OAAA,GAAU,CAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAAA,EACF,GAAG,CAAC,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,MAAM,CAAC,CAAA;AAC1C;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,OAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAOG;AAxLH,EAAA,IAAAP,GAAAA;AAyLE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIK,SAAS,KAAK,CAAA;AAE5C,EAAA,cAAA,CAAe;AAAA,IACb,MAAA,EAAQ,MAAM,KAAA,KAAU,SAAA;AAAA,IACxB,UAAU,KAAA,CAAM,QAAA;AAAA,IAChB,SAAA,EAAW,MAAM,SAAA,CAAU,KAAA,CAAM,EAAE,CAAA;AAAA,IACnC,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,uBACEH,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,WAAW,qBAAA,CAAO,IAAA;AAAA,MAClB,cAAY,KAAA,CAAM,KAAA;AAAA,MAClB,oBAAA,EAAoB,eAAe,MAAA,GAAS,MAAA;AAAA,MAC5C,iBAAe,KAAA,CAAM,EAAA;AAAA,MACrB,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ,UAAA;AAAA,QACR,CAAC,gBAA0B,GAAG,CAAA,EAAG,WAAW,CAAA,EAAA;AAAA,OAC9C;AAAA,MAEA,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,qBAAA,CAAO,QAAA,EAAU,mBAAe,IAAA,EAC9C,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,qBAAA,CAAO,WAAA,EAAa,eAAa,KAAA,CAAM,MAAA,EAAQ,sBAAkB,IAAA,EAC/E,QAAA,EAAA;AAAA,wBAAAD,IAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,sBAAO,YAAA,EAAc,CAAA;AAAA,wBACxDA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,aAAa,KAAA,CAAM,WAAA;AAAA,YACnB,WAAA,EAAA,CAAaF,GAAAA,GAAA,KAAA,CAAM,WAAA,KAAN,OAAAA,GAAAA,GAAqB,IAAA;AAAA,YAClC,UAAU,KAAA,CAAM,QAAA;AAAA,YAChB,MAAA,EAAQ,OAAA;AAAA,YACR,OAAO,KAAA,CAAM,KAAA;AAAA,YACb,QAAQ,KAAA,CAAM,MAAA;AAAA,YACd,OAAO,KAAA,CAAM,KAAA;AAAA,YACb,SAAA,EAAW,MAAM,SAAA,CAAU,KAAA,CAAM,EAAE,CAAA;AAAA,YACnC,YAAA,EAAc,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,YACnC,YAAA,EAAc,MAAM,UAAA,CAAW,KAAK;AAAA;AAAA;AACtC,OAAA,EACF,CAAA,EACF;AAAA;AAAA,GACF;AAEJ;AASO,SAAS,aAAA,CAAc;AAAA,EAC5B,QAAA;AAAA,EACA,aAAa,eAAA,CAAgB,UAAA;AAAA,EAC7B,KAAA,EAAO,SAAA;AAAA,EACP,WAAW,eAAA,CAAgB;AAC7B,CAAA,EAAuB;AACrB,EAAA,MAAM,gBAAgB,YAAA,EAAa;AACnC,EAAA,MAAM,QAAQ,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,aAAA;AAC3B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIK,QAAAA,CAAwB,EAAE,CAAA;AACtD,EAAA,MAAM,CAAC,UAAU,gBAAgB,CAAA,GAAIA,SAAgC,EAAE,UAAA,EAAY,UAAU,CAAA;AAC7F,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,QAAAA,CAAiC,EAAE,CAAA;AAC3E,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,MAAA,GAASD,OAAO,CAAC,CAAA;AACvB,EAAA,MAAM,WAAA,GAAcA,OAAuB,IAAI,CAAA;AAC/C,EAAA,MAAM,QAAA,GAAWA,MAAAA,iBAAO,IAAI,GAAA,EAA6B,CAAA;AACzD,EAAA,MAAM,aAAA,GAAgBA,MAAAA,iBAAO,IAAI,GAAA,EAAa,CAAA;AAC9C,EAAA,MAAM,WAAA,GAAcA,MAAAA,iBAAO,IAAI,GAAA,EAAa,CAAA;AAC5C,EAAA,MAAM,mBAAA,GAAsBA,OAAO,KAAK,CAAA;AAExC,EAAA,MAAM,WAAA,GAAcS,WAAAA,CAAY,CAAC,QAAA,KAAoC;AACnE,IAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,EAC3B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAaA,WAAAA,CAAY,CAAC,EAAA,KAAe;AAC7C,IAAA,OAAO,CAAC,IAAA,KAAgC;AACtC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,EAAA,EAAI,IAAI,CAAA;AAC7B,QAAA;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC1B,MAAA,WAAA,CAAY,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC7B,MAAA,aAAA,CAAc,OAAA,CAAQ,OAAO,EAAE,CAAA;AAAA,IACjC,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAcA,WAAAA,CAAY,CAAC,EAAA,KAAe;AAC9C,IAAA,aAAA,CAAc,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC/B,IAAA,WAAA,CAAY,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC7B,IAAA,QAAA,CAAS,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC1B,IAAA,SAAA,CAAU,CAAC,YAAY,OAAA,CAAQ,MAAA,CAAO,CAAC,KAAA,KAAU,KAAA,CAAM,EAAA,KAAO,EAAE,CAAC,CAAA;AAAA,EACnE,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,OAAA,GAAUA,WAAAA,CAAY,CAAC,EAAA,KAAe;AAC1C,IAAA,SAAA;AAAA,MAAU,CAAC,OAAA,KACT,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,KAAW,KAAA,CAAM,EAAA,KAAO,EAAA,GAAK,iCAAK,KAAA,CAAA,EAAL,EAAY,KAAA,EAAO,SAAA,MAAc,KAAM;AAAA,KACnF;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAaA,YAAY,MAAM;AACnC,IAAA,SAAA,CAAU,CAAC,OAAA,KAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,KAAW,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,KAAA,CAAA,EAAL,EAAY,KAAA,EAAO,SAAA,EAAmB,CAAE,CAAC,CAAA;AAAA,EAC1F,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAcA,WAAAA,CAAY,CAAC,EAAA,KAAe;AAC9C,IAAA,WAAA,CAAY,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC7B,IAAA,SAAA;AAAA,MAAU,CAAC,YACT,OAAA,CAAQ,GAAA;AAAA,QAAI,CAAC,KAAA,KACX,KAAA,CAAM,EAAA,KAAO,EAAA,IAAM,KAAA,CAAM,KAAA,KAAU,UAAA,GAAa,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,KAAA,CAAA,EAAL,EAAY,KAAA,EAAO,WAAU,CAAA,GAAI;AAAA;AACnF,KACF;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,IAAA,GAAOA,WAAAA;AAAA,IACX,CAAC,OAAA,KAA8B;AAC7B,MAAA,MAAM,EAAA,GAAK,CAAA,MAAA,EAAS,MAAA,CAAO,OAAA,EAAS,CAAA,CAAA;AACpC,MAAA,MAAM,QAAqB,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,OAAA,CAAA,EAAL,EAAc,EAAA,EAAI,OAAO,UAAA,EAAW,CAAA;AAE/D,MAAA,SAAA;AAAA,QAAU,CAAC,OAAA,KACT,QAAA,CAAS,QAAA,KAAa,KAAA,GAAQ,CAAC,KAAA,EAAO,GAAG,OAAO,CAAA,GAAI,CAAC,GAAG,SAAS,KAAK;AAAA,OACxE;AAEA,MAAA,OAAO,EAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,SAAS,QAAQ;AAAA,GACpB;AAEA,EAAAQ,gBAAgB,MAAM;AACpB,IAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,UAAA,CAAW,kCAAkC,CAAA,CAAE,OAAA;AAC5E,IAAA,MAAM,kBAAA,GAAqB,sBAAA,CAAuB,QAAA,CAAS,QAAQ,CAAA;AAEnE,IAAA,MAAM,eAAA,GAAkB,MAAA,CACrB,MAAA,CAAO,CAAC,KAAA,KAAU,MAAM,KAAA,KAAU,SAAS,CAAA,CAC3C,GAAA,CAAI,CAAC,KAAA,KAAU,SAAS,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,EAAE,CAAC,CAAA,CAC7C,OAAO,CAAC,OAAA,KAAuC,OAAA,CAAQ,OAAO,CAAC,CAAA;AAElE,IAAA,IAAI,eAAA,CAAgB,SAAS,CAAA,EAAG;AAC9B,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,KAAA,MAAW,WAAW,eAAA,EAAiB;AACrC,UAAA,MAAM,EAAA,GAAK,QAAQ,OAAA,CAAQ,OAAA;AAC3B,UAAA,IAAI,EAAA,EAAI;AACN,YAAA,WAAA,CAAY,EAAE,CAAA;AAAA,UAChB;AAAA,QACF;AAAA,MACF,CAAA,MAAO;AACL,QAAA,KAAA,MAAW,kBAAkB,eAAA,EAAiB;AAC5C,UAAA,MAAM,EAAA,GAAK,eAAe,OAAA,CAAQ,OAAA;AAClC,UAAA,IAAI,CAAC,EAAA,IAAM,aAAA,CAAc,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA,EAAG;AACxC,YAAA;AAAA,UACF;AAEA,UAAA,aAAA,CAAc,OAAA,CAAQ,IAAI,EAAE,CAAA;AAE5B,UAAA,MAAM,OAAA,GAAU,eAAe,cAAc,CAAA;AAC7C,UAAA,IAAI,CAAC,OAAA,EAAS;AACZ,YAAA,WAAA,CAAY,EAAE,CAAA;AACd,YAAA;AAAA,UACF;AAEA,UAAA,OAAA,CAAQ,MAAM,SAAA,GAAY,sBAAA;AAC1B,UAAA,OAAA,CAAQ,MAAM,UAAA,GAAa,qBAAA;AAE3B,UAAA,IAAI,QAAA,GAAW,KAAA;AACf,UAAA,IAAI,aAAA,GAAgB,CAAA;AAEpB,UAAA,MAAM,aAAa,MAAM;AACvB,YAAA,IAAI,QAAA,EAAU;AACZ,cAAA;AAAA,YACF;AAEA,YAAA,QAAA,GAAW,IAAA;AACX,YAAA,OAAA,CAAQ,mBAAA,CAAoB,iBAAiB,mBAAmB,CAAA;AAChE,YAAA,MAAA,CAAO,aAAa,aAAa,CAAA;AACjC,YAAA,wBAAA,CAAyB,OAAO,CAAA;AAChC,YAAA,WAAA,CAAY,EAAE,CAAA;AAAA,UAChB,CAAA;AAEA,UAAA,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAA2B;AACtD,YAAA,IAAI,KAAA,CAAM,MAAA,KAAW,OAAA,IAAW,KAAA,CAAM,iBAAiB,WAAA,EAAa;AAClE,cAAA;AAAA,YACF;AAEA,YAAA,UAAA,EAAW;AAAA,UACb,CAAA;AAEA,UAAA,qBAAA,CAAsB,MAAM;AAC1B,YAAA,qBAAA,CAAsB,MAAM;AAC1B,cAAA,OAAA,CAAQ,MAAM,SAAA,GAAY,kBAAA;AAAA,YAC5B,CAAC,CAAA;AAAA,UACH,CAAC,CAAA;AAED,UAAA,OAAA,CAAQ,gBAAA,CAAiB,iBAAiB,mBAAmB,CAAA;AAC7D,UAAA,aAAA,GAAgB,MAAA,CAAO,UAAA,CAAW,UAAA,EAAY,cAAA,GAAiB,EAAE,CAAA;AAAA,QACnE;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,gBAAA,GAAmB,MAAA,CACtB,MAAA,CAAO,CAAC,KAAA,KAAU,MAAM,KAAA,KAAU,UAAU,CAAA,CAC5C,GAAA,CAAI,CAAC,KAAA,KAAU,SAAS,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,EAAE,CAAC,CAAA,CAC7C,OAAO,CAAC,OAAA,KAAuC,OAAA,CAAQ,OAAO,CAAC,CAAA;AAElE,IAAA,IAAI,gBAAA,CAAiB,SAAS,CAAA,EAAG;AAC/B,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,KAAA,MAAW,WAAW,gBAAA,EAAkB;AACtC,UAAA,MAAM,EAAA,GAAK,QAAQ,OAAA,CAAQ,OAAA;AAC3B,UAAA,IAAI,EAAA,EAAI;AACN,YAAA,WAAA,CAAY,EAAE,CAAA;AAAA,UAChB;AAAA,QACF;AAAA,MACF,CAAA,MAAO;AACL,QAAA,KAAA,MAAW,mBAAmB,gBAAA,EAAkB;AAC9C,UAAA,MAAM,EAAA,GAAK,gBAAgB,OAAA,CAAQ,OAAA;AACnC,UAAA,IAAI,CAAC,EAAA,EAAI;AACP,YAAA;AAAA,UACF;AAEA,UAAA,MAAM,OAAA,GAAU,eAAe,eAAe,CAAA;AAC9C,UAAA,IAAI,CAAC,OAAA,EAAS;AACZ,YAAA,WAAA,CAAY,EAAE,CAAA;AACd,YAAA;AAAA,UACF;AAEA,UAAA,IAAI,OAAA,CAAQ,OAAA,CAAQ,WAAA,KAAgB,MAAA,EAAQ;AAC1C,YAAA;AAAA,UACF;AAEA,UAAA,OAAA,CAAQ,QAAQ,WAAA,GAAc,MAAA;AAC9B,UAAA,WAAA,CAAY,OAAA,CAAQ,IAAI,EAAE,CAAA;AAE1B,UAAA,OAAA,CAAQ,MAAM,SAAA,GAAY,kBAAA;AAC1B,UAAA,OAAA,CAAQ,MAAM,UAAA,GAAa,sBAAA;AAE3B,UAAA,IAAI,QAAA,GAAW,KAAA;AACf,UAAA,IAAI,aAAA,GAAgB,CAAA;AAEpB,UAAA,MAAM,cAAc,MAAM;AACxB,YAAA,IAAI,QAAA,EAAU;AACZ,cAAA;AAAA,YACF;AAEA,YAAA,QAAA,GAAW,IAAA;AACX,YAAA,MAAA,CAAO,aAAa,aAAa,CAAA;AACjC,YAAA,OAAA,CAAQ,mBAAA,CAAoB,iBAAiB,mBAAmB,CAAA;AAChE,YAAA,WAAA,CAAY,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC7B,YAAA,wBAAA,CAAyB,OAAO,CAAA;AAChC,YAAA,WAAA,CAAY,EAAE,CAAA;AAAA,UAChB,CAAA;AAEA,UAAA,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAA2B;AACtD,YAAA,IAAI,KAAA,CAAM,MAAA,KAAW,OAAA,IAAW,KAAA,CAAM,iBAAiB,WAAA,EAAa;AAClE,cAAA;AAAA,YACF;AAEA,YAAA,WAAA,EAAY;AAAA,UACd,CAAA;AAEA,UAAA,qBAAA,CAAsB,MAAM;AAC1B,YAAA,qBAAA,CAAsB,MAAM;AAC1B,cAAA,OAAA,CAAQ,MAAM,SAAA,GAAY,sBAAA;AAAA,YAC5B,CAAC,CAAA;AAAA,UACH,CAAC,CAAA;AAED,UAAA,OAAA,CAAQ,gBAAA,CAAiB,iBAAiB,mBAAmB,CAAA;AAC7D,UAAA,aAAA,GAAgB,MAAA,CAAO,UAAA,CAAW,WAAA,EAAa,eAAA,GAAkB,EAAE,CAAA;AAAA,QACrE;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,uBAAc,GAAA,EAAoB;AAExC,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,MAAM,EAAE,CAAA;AAC7C,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA;AAAA,MACF;AAEA,MAAA,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,EAAA,EAAI,oBAAA,CAAqB,OAAO,CAAC,CAAA;AAAA,IACrD;AAEA,IAAA,MAAM,OAAA,GAAU,mBAAA,CAAoB,MAAA,EAAQ,OAAA,EAAS,SAAS,QAAQ,CAAA;AACtE,IAAA,eAAA,CAAgB,OAAO,CAAA;AACvB,IAAA,eAAA,CAAgB,oBAAoB,OAAO,CAAA;AAC3C,IAAA,mBAAA,CAAoB,OAAA,GAAU,IAAA;AAAA,EAChC,GAAG,CAAC,WAAA,EAAa,aAAa,MAAA,EAAQ,QAAA,CAAS,QAAQ,CAAC,CAAA;AAExD,EAAA,MAAM,iBAAA,GAAoB;AAAA,IACxB,qBAAA,CAAO,QAAA;AAAA,IACP,QAAA,CAAS,QAAA,KAAa,KAAA,GAAQ,qBAAA,CAAO,cAAc,qBAAA,CAAO,cAAA;AAAA,IAC1D,QAAA,CAAS,UAAA,KAAe,MAAA,GAAS,qBAAA,CAAO,eAAe,qBAAA,CAAO;AAAA,GAChE,CAAE,KAAK,GAAG,CAAA;AAEV,EAAA,uBACElB,IAAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EAAO,EAAE,OAAA,EAAS,UAAA,EAAY,WAAA,EAAa,IAAA,EAAM,QAAA,EAAS,EAC9E,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,oBACDD,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,WAAA,EAAa,SAAA,EAAW,iBAAA,EAAmB,YAAA,EAAY,KAAA,EAC9D,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,KAAA,KAAO;AA/dnC,MAAA,IAAAF,GAAAA;AAgeU,MAAA,uBAAAE,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UAEC,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,EAAE,CAAA;AAAA,UAC5B,YAAA;AAAA,UACA,UAAA,EAAY,OAAO,MAAA,GAAS,KAAA;AAAA,UAC5B,cAAaF,GAAAA,GAAA,YAAA,CAAa,MAAM,EAAE,CAAA,KAArB,OAAAA,GAAAA,GAA0B,CAAA;AAAA,UACvC,KAAA;AAAA,UACA,SAAA,EAAW;AAAA,SAAA;AAAA,QANN,KAAA,CAAM;AAAA,OAOb;AAAA,IAAA,CACD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;;;AC7eA,IAAA,YAAA,GAAA,EAAA;ACwBO,SAAS,IAAA,CAAK;AAAA,EACnB,cAAc,SAAA,GAAY,MAAA;AAAA,EAC1B,YAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,KAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,KAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAAc;AAjCd,EAAA,IAAAA,GAAAA,EAAAC,GAAAA,EAAAW,GAAAA,EAAAG,GAAAA,EAAAc,GAAAA;AAkCE,EAAA,MAAM,cAAcpB,KAAAA,EAAM;AAC1B,EAAA,MAAM,iBAAA,GAAA,CAAoBM,GAAAA,GAAAA,CAAAH,GAAAA,GAAAA,CAAAZ,GAAAA,GAAA,KAAA,CAAM,KAAK,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,QAAQ,CAAA,KAAnC,gBAAAA,GAAAA,CAAsC,KAAA,KAAtC,IAAA,GAAAY,GAAAA,GAAAA,CAA+CX,GAAAA,GAAA,KAAA,CAAM,CAAC,CAAA,KAAP,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAU,KAAA,KAAzD,IAAA,GAAAc,GAAAA,GAAkE,EAAA;AAC5F,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIV,QAAAA,CAAS,sCAAgB,iBAAiB,CAAA;AACpF,EAAA,MAAM,cAAc,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,aAAA;AAC7B,EAAA,MAAM,UAAA,GAAA,CAAawB,GAAAA,GAAA,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,KAAA,KAAU,WAAW,CAAA,KAA/C,IAAA,GAAAA,GAAAA,GAAoD,MAAM,CAAC,CAAA;AAE9E,EAAA,MAAM,QAAA,GAAW,CAAC,SAAA,EAAmB,QAAA,GAAW,KAAA,KAAU;AACxD,IAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,UAAU,SAAS,CAAA;AACpE,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,QAAA,EAAU;AAC1B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,IAC5B;AAEA,IAAA,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAgB,SAAA,CAAA;AAEhB,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAA,CAAO,sBAAsB,MAAM;AArDzC,QAAA,IAAA7B,GAAAA;AAsDQ,QAAA,CAAAA,GAAAA,GAAA,QAAA,CAAS,cAAA,CAAe,CAAA,EAAG,WAAW,IAAI,SAAS,CAAA,IAAA,CAAM,CAAA,KAAzD,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAA4D,KAAA,EAAA;AAAA,MAC9D,CAAC,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyC;AA3DlE,IAAA,IAAAA,GAAAA,EAAAC,GAAAA,EAAAW,GAAAA,EAAAG,GAAAA,EAAAc,GAAAA,EAAAC,GAAAA;AA4DI,IAAA,MAAM,eAAe,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,CAAC,KAAK,QAAQ,CAAA;AAC1D,IAAA,MAAM,eAAe,YAAA,CAAa,SAAA,CAAU,CAAC,IAAA,KAAS,IAAA,CAAK,UAAU,WAAW,CAAA;AAChF,IAAA,MAAM,WAAA,GAAc,WAAA,KAAgB,UAAA,GAAa,SAAA,GAAY,WAAA;AAC7D,IAAA,MAAM,OAAA,GAAU,WAAA,KAAgB,UAAA,GAAa,WAAA,GAAc,YAAA;AAE3D,IAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,WAAA,IAAe,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,MAAA,IAAU,KAAA,CAAM,GAAA,KAAQ,KAAA,EAAO;AACrG,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,cAAA,EAAe;AAErB,IAAA,IAAI,KAAA,CAAM,QAAQ,MAAA,EAAQ;AACxB,MAAA,QAAA,CAAA,CAAS7B,GAAAA,GAAAA,CAAAD,GAAAA,GAAA,YAAA,CAAa,CAAC,CAAA,KAAd,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAiB,KAAA,KAAjB,IAAA,GAAAC,GAAAA,GAA0B,WAAA,EAAa,IAAI,CAAA;AACpD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,QAAQ,KAAA,EAAO;AACvB,MAAA,QAAA,CAAA,CAASc,GAAAA,GAAAA,CAAAH,GAAAA,GAAA,YAAA,CAAa,EAAA,CAAG,EAAE,CAAA,KAAlB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAqB,KAAA,KAArB,IAAA,GAAAG,GAAAA,GAA8B,WAAA,EAAa,IAAI,CAAA;AACxD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,GAAA,KAAQ,OAAA,GAAU,CAAA,GAAI,EAAA;AAC3C,IAAA,MAAM,SAAA,GAAA,CAAa,YAAA,GAAe,MAAA,GAAS,YAAA,CAAa,UAAU,YAAA,CAAa,MAAA;AAC/E,IAAA,QAAA,CAAA,CAASe,GAAAA,GAAAA,CAAAD,GAAAA,GAAA,YAAA,CAAa,SAAS,CAAA,KAAtB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAyB,KAAA,KAAzB,IAAA,GAAAC,GAAAA,GAAkC,WAAA,EAAa,IAAI,CAAA;AAAA,EAC9D,CAAA;AAEA,EAAA,uBACE3B,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,YAAA,CAAO,IAAA;AAAA,MAClB,aAAA,EAAa,MAAA;AAAA,MACb,kBAAA,EAAkB,WAAA;AAAA,MAClB,cAAA,EAAc,OAAA;AAAA,MAEd,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAY,SAAA;AAAA,YACZ,kBAAA,EAAkB,WAAA;AAAA,YAClB,WAAW,YAAA,CAAO,IAAA;AAAA,YAClB,SAAA,EAAW,aAAA;AAAA,YACX,IAAA,EAAK,SAAA;AAAA,YAEJ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,cAAA,MAAM,QAAA,GAAW,KAAK,KAAA,KAAU,WAAA;AAChC,cAAA,MAAM,KAAA,GAAQ,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,KAAK,KAAK,CAAA,IAAA,CAAA;AAC1C,cAAA,MAAM,OAAA,GAAU,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,KAAK,KAAK,CAAA,MAAA,CAAA;AAE5C,cAAA,uBACEA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,eAAA,EAAe,OAAA;AAAA,kBACf,eAAA,EAAe,QAAA;AAAA,kBACf,WAAW,YAAA,CAAO,GAAA;AAAA,kBAClB,UAAU,IAAA,CAAK,QAAA;AAAA,kBACf,EAAA,EAAI,KAAA;AAAA,kBAEJ,OAAA,EAAS,MAAM,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAAA,kBAClC,IAAA,EAAK,KAAA;AAAA,kBACL,QAAA,EAAU,WAAW,CAAA,GAAI,EAAA;AAAA,kBACzB,IAAA,EAAK,QAAA;AAAA,kBAEJ,QAAA,EAAA,IAAA,CAAK;AAAA,iBAAA;AAAA,gBAND,IAAA,CAAK;AAAA,eAOZ;AAAA,YAEJ,CAAC;AAAA;AAAA,SACH;AAAA,QACC,6BACCA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,iBAAA,EAAiB,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,WAAW,KAAK,CAAA,IAAA,CAAA;AAAA,YACnD,WAAW,YAAA,CAAO,KAAA;AAAA,YAClB,EAAA,EAAI,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,WAAW,KAAK,CAAA,MAAA,CAAA;AAAA,YACtC,IAAA,EAAK,UAAA;AAAA,YACL,QAAA,EAAU,EAAA;AAAA,YAET,QAAA,EAAA,UAAA,CAAW;AAAA;AAAA,SACd,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;;;ACxIA,IAAA,YAAA,GAAA,EAAA;ACeO,SAAS,IAAA,CAAK;AAAA,EACnB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,aAAA;AAAA,EACV,OAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO;AACT,CAAA,EAAc;AACZ,EAAA,uBACEC,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,aAAO,IAAA,EAAM,cAAA,EAAc,OAAA,EAAS,WAAA,EAAW,IAAA,EAChE,QAAA,EAAA;AAAA,IAAA,KAAA,mBAAQD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,YAAA,CAAO,KAAA,EAAQ,iBAAM,CAAA,GAAS,IAAA;AAAA,oBACvDC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAO,IAAA,EACrB,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,CAAO,OAAA,EACpB,QAAA,EAAA;AAAA,QAAA,OAAA,mBAAUD,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,YAAA,CAAO,OAAA,EAAU,mBAAQ,CAAA,GAAO,IAAA;AAAA,wBACzDA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,YAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,OAAA,EACtC,CAAA;AAAA,sBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,CAAO,SAAU,QAAA,EAAS;AAAA,KAAA,EAC5C,CAAA;AAAA,IACC,UAAU,OAAA,mBACTC,KAAC,QAAA,EAAA,EAAO,SAAA,EAAW,aAAO,MAAA,EACvB,QAAA,EAAA;AAAA,MAAA,MAAA,mBAASD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,YAAA,CAAO,aAAA,EAAgB,kBAAO,CAAA,GAAS,IAAA;AAAA,MAChE,OAAA,mBAAUA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,YAAA,CAAO,OAAA,EAAU,mBAAQ,CAAA,GAAS;AAAA,KAAA,EAC/D,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;;;AC3CA,IAAA,iCAAA,GAAA,EAAA;;;ACAA,IAAA,gBAAA,GAAA,EAAA;ACgBO,SAAS,QAAA,CAAS;AAAA,EACvB,MAAA;AAAA,EACA,OAAA,GAAU,aAAA;AAAA,EACV,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,uBACEC,IAAAA,CAAC,SAAA,EAAA,EAAQ,WAAW,iCAAA,CAAO,KAAA,EAAO,gBAAc,OAAA,EAC9C,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,CAAO,MAAA,EACrB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iCAAA,CAAO,UACrB,QAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,mBAAQA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,iCAAA,CAAO,iBAAiB,CAAA,EACvE,CAAA;AAAA,sBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,kCAAO,QAAA,EACpB,QAAA,EAAA,MAAA,IAAU,KAAA,mBACTC,KAAC,MAAA,EAAA,EAAK,SAAA,EAAW,gBAAA,CAAO,MAAA,EAAQ,cAAY,KAAA,EACzC,QAAA,EAAA;AAAA,QAAA,KAAA,KAAU,OAAO,QAAA,GAAM,QAAA;AAAA,QAAI,GAAA;AAAA,QAAE;AAAA,OAAA,EAChC,CAAA,mBAEAD,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,SAAA,EAAW,iCAAA,CAAO,eAAA,EAAiB,QAAA,EAAA,eAAA,EAE5D,CAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,oBACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,iCAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBACnCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,iCAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EACrC,CAAA;AAEJ;;;AC9CA,IAAA,aAAA,GAAA,EAAA;AC4BA,SAAS,QAAA,CAAS;AAAA,EAChB,UAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAChD,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,eAAA,EAAiB,UAAA;AAAA,IACjB,eAAA,EAAiB;AAAA,GACnB;AACA,EAAA,MAAM,cAAA,GAAiB,GAAG,OAAO,CAAA,IAAA,CAAA;AAEjC,EAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,IAAA,uBACEC,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAO,KAAA,EAAO,cAAA,EAAa,QAAO,KAAA,EAChD,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,SAAI,aAAA,EAAY,MAAA,EAAO,WAAW,aAAA,CAAO,QAAA,EAAU,SAAQ,aAAA,EAC1D,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,WAAW,aAAA,CAAO,UAAA;AAAA,YAClB,EAAA,EAAG,KAAA;AAAA,YACH,EAAA,EAAG,KAAA;AAAA,YACH,UAAA,EAAY,GAAA;AAAA,YACZ,CAAA,EAAE;AAAA;AAAA,SACJ;AAAA,wBACAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,WAAW,aAAA,CAAO,UAAA;AAAA,YAClB,EAAA,EAAG,KAAA;AAAA,YACH,EAAA,EAAG,KAAA;AAAA,YACH,UAAA,EAAY,GAAA;AAAA,YACZ,CAAA,EAAE,IAAA;AAAA,YACF,eAAA,EAAiB;AAAA;AAAA;AACnB,OAAA,EACF,CAAA;AAAA,sBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAO,WAAA,EACrB,QAAA,EAAA;AAAA,wBAAAA,KAAC,QAAA,EAAA,EAAQ,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,MAAM,OAAO,CAAA;AAAA,UAAE;AAAA,SAAA,EAAC,CAAA;AAAA,wBAC9BA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,UAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAAA,UAAE;AAAA,SAAA,EAAM;AAAA,OAAA,EAClC;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAO,KAAA,EAAO,cAAA,EAAa,QAAO,KAAA,EAChD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,SAAI,aAAA,EAAY,MAAA,EAAO,WAAW,aAAA,CAAO,QAAA,EAAU,SAAQ,aAAA,EAC1D,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,WAAW,aAAA,CAAO,UAAA;AAAA,UAClB,CAAA,EAAE,gCAAA;AAAA,UACF,UAAA,EAAY;AAAA;AAAA,OACd;AAAA,sBACAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,WAAW,aAAA,CAAO,UAAA;AAAA,UAClB,CAAA,EAAE,gCAAA;AAAA,UACF,UAAA,EAAY,GAAA;AAAA,UACZ,eAAA,EAAiB;AAAA;AAAA;AACnB,KAAA,EACF,CAAA;AAAA,oBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAO,WAAA,EACrB,QAAA,EAAA;AAAA,sBAAAA,KAAC,QAAA,EAAA,EAAQ,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,MAAM,OAAO,CAAA;AAAA,QAAE;AAAA,OAAA,EAAC,CAAA;AAAA,sBAC9BA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,QAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAAA,QAAE;AAAA,OAAA,EAAM;AAAA,KAAA,EAClC;AAAA,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,KAAA,CAAM;AAAA,EACpB,MAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,OAAA,GAAU,aAAA;AAAA,EACV,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAAe;AACb,EAAA,uBACEA,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,cAAO,MAAA,EAAQ,cAAA,EAAc,OAAA,EAAS,cAAA,EAAc,OAAA,EACtE,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,aAAA,CAAO,MAAA,EACxB,0BAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,CAAO,OAAA,EACrB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,aAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MACnC,QAAA,mBAAWA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,aAAA,CAAO,QAAA,EAAW,oBAAS,CAAA,GAAO;AAAA,KAAA,EAC9D,CAAA,EACF,CAAA;AAAA,oBAEAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAO,IAAA,EACrB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,CAAO,SAAA,EACrB,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,UAAA,EAAwB,KAAA,EAAc,UAAA,EAAwB,OAAA,EAAkB,CAAA,EAC5F,CAAA;AAAA,MACC,MAAA,mBACCC,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,aAAA,CAAO,MAAA,EAAQ,cAAY,WAAA,EACzC,QAAA,EAAA;AAAA,QAAA,WAAA,KAAgB,OAAO,QAAA,GAAM,QAAA;AAAA,QAAI,GAAA;AAAA,QAAE;AAAA,OAAA,EACtC,CAAA,GACE,IAAA;AAAA,MACH,OAAA,mBAAUD,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,aAAA,CAAO,OAAA,EAAU,mBAAQ,CAAA,GAAO;AAAA,KAAA,EAC3D,CAAA;AAAA,IAAA,CAEC,iCAAQ,MAAA,oBACPA,GAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,aAAA,CAAO,MAAA,EAAQ,YAAA,EAAY,MAAA,CAAO,QAClD,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,0BACjBC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,aAAA,CAAO,UAAA;AAAA,QAElB,KAAA,EAAO,EAAE,sBAAA,EAAwB,IAAA,CAAK,KAAA,EAAM;AAAA,QAE5C,QAAA,EAAA;AAAA,0BAAAD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,WAAA,EAAc,eAAK,KAAA,EAAM,CAAA;AAAA,0BACjDC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAO,WAAA,EACrB,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,KAAA;AAAA,YACL,KAAK,KAAA,mBACJD,IAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,SAAA,EAAW,aAAA,CAAO,WAAA,EAAa,YAAA,EAAY,KAAK,KAAA,EACtE,QAAA,EAAA,IAAA,CAAK,UAAU,IAAA,GAAO,QAAA,GAAM,UAC/B,CAAA,GACE;AAAA,WAAA,EACN;AAAA;AAAA,OAAA;AAAA,MAXK,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,KAa9B,GACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;;;AC1JA,IAAA,iBAAA,GAAA,EAAA;ACcA,SAAS,sBAAA,CAAuB,MAAA,EAAkB,KAAA,EAAe,MAAA,EAAgB;AAC/E,EAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,IAAA,OAAO,EAAE,QAAA,EAAU,EAAA,EAAI,QAAA,EAAU,IAAA,EAAM,UAAU,EAAA,EAAG;AAAA,EACtD;AAEA,EAAA,MAAM,IAAA,GAAO,CAAA;AACb,EAAA,MAAM,IAAA,GAAO,CAAA;AACb,EAAA,MAAM,UAAA,GAAa,QAAQ,IAAA,GAAO,CAAA;AAClC,EAAA,MAAM,WAAA,GAAc,SAAS,IAAA,GAAO,CAAA;AACpC,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,MAAM,CAAA;AACjC,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAG,MAAM,CAAA;AAC9B,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,GAAG,CAAA;AAEnC,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,KAAA,KAAU;AAC1C,IAAA,MAAM,CAAA,GAAI,IAAA,IAAQ,MAAA,CAAO,MAAA,KAAW,CAAA,GAAI,aAAa,CAAA,GAAK,KAAA,IAAS,MAAA,CAAO,MAAA,GAAS,CAAA,CAAA,GAAM,UAAA,CAAA;AACzF,IAAA,MAAM,IAAI,IAAA,GAAO,WAAA,GAAA,CAAgB,QAAQ,GAAA,IAAO,KAAA,IAAU,cAAc,CAAA,CAAA,GAAK,CAAA;AAC7E,IAAA,OAAO,EAAE,GAAG,CAAA,EAAE;AAAA,EAChB,CAAC,CAAA;AAED,EAAA,MAAM,QAAA,GAAW,OAAO,GAAA,CAAI,CAAC,OAAO,KAAA,KAAU,CAAA,EAAG,UAAU,CAAA,GAAI,GAAA,GAAM,GAAG,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAE,CAAA,CAAE,KAAK,GAAG,CAAA;AAC1G,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA;AAC1C,EAAA,MAAM,WAAW,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,SAAA,CAAU,CAAC,CAAA,CAAA,EAAI,MAAA,GAAS,IAAI,CAAA,GAAA,EAAM,OAAO,CAAC,CAAA,CAAE,CAAC,CAAA,CAAA,EAAI,SAAS,IAAI,CAAA,EAAA,CAAA;AAEhG,EAAA,OAAO,EAAE,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,QAAA,EAAS;AACnD;AAEO,SAAS,SAAA,CAAU;AAAA,EACxB,MAAA,GAAS,EAAA;AAAA,EACT,KAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,MAAA;AAAA,EACA,OAAA,GAAU,QAAQ,SAAA,GAAY,QAAA;AAAA,EAC9B,KAAA,GAAQ;AACV,CAAA,EAAmB;AACjB,EAAA,MAAM,aAAaO,KAAAA,EAAM;AACzB,EAAA,MAAM,EAAE,UAAU,QAAA,EAAU,QAAA,KAAa,sBAAA,CAAuB,MAAA,EAAQ,OAAO,MAAM,CAAA;AACrF,EAAA,MAAM,eAAA,GAAkB,OAAA,KAAY,SAAA,IAAa,KAAA,GAAQ,SAAA,GAAY,QAAA;AAErE,EAAA,MAAM,wBACJN,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAa,eAAA,KAAoB,SAAA,IAAa,KAAA,GAAQ,MAAA,GAAY,IAAA;AAAA,MAClE,WAAW,iBAAA,CAAO,GAAA;AAAA,MAClB,MAAA;AAAA,MACA,IAAA,EAAM,eAAA,KAAoB,SAAA,IAAa,KAAA,GAAQ,KAAA,GAAQ,MAAA;AAAA,MACvD,OAAA,EAAS,CAAA,IAAA,EAAO,KAAK,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA,MAC/B,KAAA,EAAO,eAAA,KAAoB,SAAA,GAAY,MAAA,GAAS,KAAA;AAAA,MAEhD,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAC,IAAAA,CAAC,oBAAe,EAAA,EAAI,UAAA,EAAY,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EACtD,QAAA,EAAA;AAAA,0BAAAD,IAAC,MAAA,EAAA,EAAK,MAAA,EAAO,MAAK,SAAA,EAAU,cAAA,EAAe,aAAY,MAAA,EAAO,CAAA;AAAA,0BAC9DA,IAAC,MAAA,EAAA,EAAK,MAAA,EAAO,QAAO,SAAA,EAAU,cAAA,EAAe,aAAY,MAAA,EAAO;AAAA,SAAA,EAClE,CAAA,EACF,CAAA;AAAA,QACC,QAAA,mBAAWA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iBAAA,CAAO,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,IAAA,EAAM,CAAA,KAAA,EAAQ,UAAU,KAAK,CAAA,GAAK,IAAA;AAAA,QACxF,QAAA,mBAAWA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,iBAAA,CAAO,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,CAAA,GAAK,IAAA;AAAA,QAC3D,QAAA,mBAAWA,GAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,iBAAA,CAAO,QAAA,EAAU,EAAA,EAAI,QAAA,CAAS,GAAG,EAAA,EAAI,QAAA,CAAS,CAAA,EAAG,CAAA,EAAE,OAAM,CAAA,GAAK;AAAA;AAAA;AAAA,GAC/F;AAGF,EAAA,IAAI,oBAAoB,QAAA,EAAU;AAChC,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAA,CAAO,WAAW,cAAA,EAAc,OAAA,EAAS,cAAA,EAAa,QAAA,EACnE,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEC,KAAC,QAAA,EAAA,EAAO,SAAA,EAAW,kBAAO,SAAA,EAAW,cAAA,EAAc,OAAA,EAAS,cAAA,EAAa,SAAA,EACtE,QAAA,EAAA;AAAA,IAAA,KAAA,mBAAQD,GAAAA,CAAC,YAAA,EAAA,EAAW,WAAW,iBAAA,CAAO,KAAA,EAAQ,iBAAM,CAAA,GAAgB,IAAA;AAAA,oBACrEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EACvC,CAAA;AAEJ;;;ACvFA,IAAA,oBAAA,GAAA,EAAA;ACQO,SAAS,aAAa,EAAE,KAAA,EAAO,GAAA,GAAM,GAAA,EAAK,OAAM,EAAsB;AAC3E,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAChD,EAAA,MAAM,UAAW,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,CAAA,GAAK,GAAA;AAE/C,EAAA,uBACEC,IAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,oBAAA,CAAO,IAAA,EAAM,oBAAiB,MAAA,EAC/C,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,SAAI,aAAA,EAAY,MAAA,EAAO,WAAW,oBAAA,CAAO,GAAA,EAAK,SAAQ,aAAA,EACrD,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,oBAAA,CAAO,KAAA,EAAO,EAAA,EAAG,KAAA,EAAM,EAAA,EAAG,KAAA,EAAM,UAAA,EAAY,GAAA,EAAK,CAAA,EAAE,IAAA,EAAK,CAAA;AAAA,sBAC3EA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,WAAW,oBAAA,CAAO,KAAA;AAAA,UAClB,EAAA,EAAG,KAAA;AAAA,UACH,EAAA,EAAG,KAAA;AAAA,UACH,UAAA,EAAY,GAAA;AAAA,UACZ,CAAA,EAAE,IAAA;AAAA,UACF,eAAA,EAAiB,GAAG,OAAO,CAAA,IAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,qBAAO,MAAA,EACrB,QAAA,EAAA;AAAA,sBAAAA,KAAC,QAAA,EAAA,EAAQ,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,MAAM,OAAO,CAAA;AAAA,QAAE;AAAA,OAAA,EAAC,CAAA;AAAA,sBAC9BD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EACf;AAAA,GAAA,EACF,CAAA;AAEJ;;;AC/BA,IAAA,mBAAA,GAAA,EAAA;ACQO,SAAS,YAAY,EAAE,KAAA,EAAO,GAAA,GAAM,GAAA,EAAK,OAAM,EAAqB;AACzE,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAChD,EAAA,MAAM,UAAW,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,CAAA,GAAK,GAAA;AAE/C,EAAA,uBACEC,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,oBAAO,GAAA,EACxB,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAA,CAAO,MAAA,EACrB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,mBAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBACtCC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,oBAAO,KAAA,EAAQ,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,MAAM,OAAO,CAAA;AAAA,QAAE;AAAA,OAAA,EAAC;AAAA,KAAA,EACvD,CAAA;AAAA,oBACAD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,mBAAA,CAAO,KAAA,EACrB,0BAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,mBAAA,CAAO,IAAA,EAAM,OAAO,EAAE,KAAA,EAAO,GAAG,OAAO,CAAA,CAAA,CAAA,IAAO,CAAA,EACjE;AAAA,GAAA,EACF,CAAA;AAEJ;;;ACvBA,IAAA,mBAAA,GAAA,EAAA;ACQO,SAAS,YAAY,EAAE,KAAA,EAAO,GAAA,GAAM,GAAA,EAAK,OAAM,EAAqB;AACzE,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAChD,EAAA,MAAM,UAAW,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,CAAA,GAAK,GAAA;AAC/C,EAAA,MAAM,KAAA,GAAQ,GAAA,GAAO,OAAA,GAAU,GAAA,GAAO,GAAA;AAEtC,EAAA,uBACEC,IAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,mBAAA,CAAO,WAAA,EAAa,oBAAiB,MAAA,EACtD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,SAAI,aAAA,EAAY,MAAA,EAAO,WAAW,mBAAA,CAAO,GAAA,EAAK,SAAQ,aAAA,EACrD,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,UAAK,SAAA,EAAW,mBAAA,CAAO,OAAO,CAAA,EAAE,gCAAA,EAAiC,YAAY,GAAA,EAAK,CAAA;AAAA,sBACnFA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,WAAW,mBAAA,CAAO,KAAA;AAAA,UAClB,CAAA,EAAE,gCAAA;AAAA,UACF,UAAA,EAAY,GAAA;AAAA,UACZ,eAAA,EAAiB,GAAG,OAAO,CAAA,IAAA;AAAA;AAAA,OAC7B;AAAA,sBACAC,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,CAAA,OAAA,EAAU,KAAK,CAAA,SAAA,CAAA,EAC3B,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,mBAAA,CAAO,MAAA,EAAQ,EAAA,EAAG,KAAA,EAAM,EAAA,EAAG,KAAA,EAAM,EAAA,EAAG,KAAA,EAAM,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,wBACnEA,GAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,mBAAA,CAAO,GAAA,EAAK,EAAA,EAAG,KAAA,EAAM,EAAA,EAAG,KAAA,EAAM,CAAA,EAAE,GAAA,EAAI;AAAA,OAAA,EACzD;AAAA,KAAA,EACF,CAAA;AAAA,oBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,oBAAO,MAAA,EACrB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA,EAAE,CAAA;AAAA,sBAC7BA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EACf;AAAA,GAAA,EACF,CAAA;AAEJ;;;AClCA,IAAA,kBAAA,GAAA,EAAA;ACMA,IAAM,gBAAA,GAAmB,EAAA;AAUlB,SAAS,UAAA,CAAW,EAAE,OAAA,GAAU,aAAA,EAAe,MAAM,KAAA,EAAO,SAAA,EAAW,OAAM,EAAoB;AACtG,EAAA,uBACEC,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,CAAA,EAAG,iCAAA,CAAO,KAAK,CAAA,CAAA,EAAI,kBAAA,CAAO,IAAI,CAAA,CAAA,EAAI,cAAA,EAAc,OAAA,EAClE,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,CAAO,MAAA,EACrB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iCAAA,CAAO,UACrB,QAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,mBAAQA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,iCAAA,CAAO,iBAAiB,CAAA,EACvE,CAAA;AAAA,sBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,kCAAO,QAAA,EACrB,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAW,iCAAA,CAAO,eAAA,EAAiB,2BAE5D,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,iCAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBACnCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,iCAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBACnCA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,kBAAA,CAAO,aAAA,EACvC,QAAA,EAAA,SAAA,mBACCA,GAAAA,CAAC,SAAA,EAAA,EAAU,MAAA,EAAQ,gBAAA,EAAkB,MAAA,EAAQ,SAAA,EAAW,OAAA,EAAQ,QAAA,EAAS,KAAA,EAAO,GAAA,EAAK,CAAA,mBAErFA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,kBAAA,CAAO,gBAAA,EAAkB,CAAA,EAE9C;AAAA,GAAA,EACF,CAAA;AAEJ;;;ACxCA,IAAA,uBAAA,GAAA,EAAA;ACSO,SAAS,eAAA,CAAgB,EAAE,KAAA,EAAO,MAAA,EAAO,EAAyB;AACvE,EAAA,uBACEC,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,uBAAA,CAAO,SAAA,EAAW,eAAa,MAAA,EAC9C,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,uBAAA,CAAO,GAAA,EAAK,CAAA;AAAA,IAC5B;AAAA,GAAA,EACH,CAAA;AAEJ;;;AChBA,IAAA,kBAAA,GAAA,EAAA;ACSO,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,KAAA,EAAM,EAAoB;AAChE,EAAA,uBACEC,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,kBAAA,CAAO,KAAA,EAAO,kBAAgB,SAAA,EAC5C,QAAA,EAAA;AAAA,IAAA,SAAA,KAAc,OAAO,QAAA,GAAM,QAAA;AAAA,IAAI,GAAA;AAAA,IAAE;AAAA,GAAA,EACpC,CAAA;AAEJ;;;ACfA,IAAA,aAAA,GAAA,EAAA;ACeO,SAAS,KAAA,CAAM;AAAA,EACpB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,aAAA;AAAA,EACV,WAAA;AAAA,EACA,OAAA,GAAU,IAAA;AAAA,EACV,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO;AACT,CAAA,EAAe;AACb,EAAA,uBACEA,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,aAAA,CAAO,KAAA,EAAO,cAAA,EAAc,OAAA,EAAS,cAAA,EAAc,OAAA,EAAS,WAAA,EAAW,IAAA,EACzF,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,aAAA,CAAO,MAAA,EACxB,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,CAAO,OAAA,EACrB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,aAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QACnC,WAAA,mBAAcA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,aAAA,CAAO,WAAA,EAAc,uBAAY,CAAA,GAAO;AAAA,OAAA,EACvE,CAAA;AAAA,MACC,OAAA,mBAAUA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,aAAA,CAAO,aAAA,EAAgB,mBAAQ,CAAA,GAAS;AAAA,KAAA,EACrE,CAAA;AAAA,oBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,CAAO,MAAO,QAAA,EAAS,CAAA;AAAA,IACtC,MAAA,mBAASA,GAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,aAAA,CAAO,MAAA,EAAS,kBAAO,CAAA,GAAY;AAAA,GAAA,EAClE,CAAA;AAEJ;;;AC2BA,IAAM,UAAA,GAAyC;AAAA,EAC7C,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,cAAA,GAAsD;AAAA,EAC1D,KAAA,EAAO,SAAA;AAAA,EACP,KAAA,EAAO,SAAA;AAAA,EACP,KAAA,EAAO;AACT,CAAA;AAEA,SAAS,aAAa,KAAA,EAAe;AACnC,EAAA,OAAO,UAAU,KAAK,CAAA,iBAAA,CAAA;AACxB;AAEA,SAAS,WAAA,GAAc;AACrB,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,eAAA,CAAgB,MAAwB,KAAA,EAA4B;AAC3E,EAAA,MAAM,QAAA,GAAW,eAAe,KAAK,CAAA;AACrC,EAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,OAAO,SAAS,KAAA,CAAM,GAAG,EAAE,OAAA,EAAQ,CAAE,KAAK,GAAG,CAAA;AAC/C;AAEA,SAAS,mBAAA,CACP,MAAA,EACA,MAAA,EACA,OAAA,EACA,UAAA,EACA;AACA,EAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,QAAQ,OAAO,CAAA;AAC5C,IAAA,MAAM,QAAA,GAAW,aAAa,GAAG,CAAA;AACjC,IAAA,OAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,SAAS,QAAA,EAAS;AAAA,EACjE;AAEA,EAAA,IAAI,eAAe,QAAA,EAAU;AAC3B,IAAA,OAAO;AAAA,MACL,QAAQ,WAAA,EAAY;AAAA,MACpB,QAAQ,WAAA,EAAY;AAAA,MACpB,OAAA,EAAS,aAAa,OAAO;AAAA,KAC/B;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,QAAQ,WAAA,EAAY;AAAA,IACpB,MAAA,EAAQ,aAAa,MAAM,CAAA;AAAA,IAC3B,OAAA,EAAS,aAAa,OAAO;AAAA,GAC/B;AACF;AAEA,SAAS,qBAAA,CAAsB,IAAA,EAAwB,KAAA,EAA4B,UAAA,EAA+B;AAChH,EAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,IAAA,EAAM,KAAK,CAAA;AAE3C,EAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,IAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,SAAS,OAAA,EAAQ;AAAA,EACrD;AAEA,EAAA,IAAI,eAAe,QAAA,EAAU;AAC3B,IAAA,OAAO;AAAA,MACL,QAAQ,WAAA,EAAY;AAAA,MACpB,QAAQ,WAAA,EAAY;AAAA,MACpB;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,QAAQ,WAAA,EAAY;AAAA,IACpB,QAAQ,WAAA,EAAY;AAAA,IACpB;AAAA,GACF;AACF;AAEO,SAAS,oBAAA,CACd,MAAA,EACA,SAAA,GAA0C,EAAC,EACtB;AACrB,EAAA,MAAM,IAAA,GAA4B;AAAA,IAChC,OAAA,EAAS,CAAA;AAAA,IACT,OAAA,EAAS,MAAA;AAAA,IACT,YAAA,EAAc,KAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AAEA,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,OAAA;AACH,MAAA,OAAO,aAAA,CAAA,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,IAAA,CAAA,EAAS,SAAA,CAAA,EAAd,EAAyB,SAAS,CAAA,EAAE,CAAA;AAAA,IAC7C,KAAK,SAAA;AACH,MAAA,OAAO,aAAA,CAAA,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,IAAA,CAAA,EAAS,SAAA,CAAA,EAAd,EAAyB,SAAS,CAAA,EAAE,CAAA;AAAA,IAC7C,KAAK,SAAA;AAAA,IACL,KAAK,UAAA;AACH,MAAA,OAAO,aAAA,CAAA,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,IAAA,CAAA,EAAS,SAAA,CAAA,EAAd,EAAyB,SAAS,CAAA,EAAE,CAAA;AAAA,IAC7C,KAAK,SAAA;AACH,MAAA,OAAO,aAAA,CAAA,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,IAAA,CAAA,EAAS,SAAA,CAAA,EAAd,EAAyB,SAAS,CAAA,EAAE,CAAA;AAAA,IAC7C,KAAK,SAAA;AACH,MAAA,OAAO,aAAA,CAAA,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,IAAA,CAAA,EAAS,SAAA,CAAA,EAAd,EAAyB,SAAS,CAAA,EAAE,CAAA;AAAA,IAC7C,KAAK,cAAA;AACH,MAAA,OAAO,gDAAK,IAAA,CAAA,EAAS,SAAA,CAAA,EAAd,EAAyB,OAAA,EAAS,MAAA,EAAQ,SAAS,CAAA,EAAE,CAAA;AAAA,IAC9D,KAAK,eAAA;AACH,MAAA,OAAO,gDAAK,IAAA,CAAA,EAAS,SAAA,CAAA,EAAd,EAAyB,OAAA,EAAS,OAAA,EAAS,SAAS,CAAA,EAAE,CAAA;AAAA,IAC/D;AACE,MAAA,OAAO,kCAAK,IAAA,CAAA,EAAS,SAAA,CAAA;AAAA;AAE3B;AAEO,SAAS,2BAA2B,KAAA,EAAmD;AA/K9F,EAAA,IAAAF,GAAAA,EAAAC,KAAAW,GAAAA,EAAAG,GAAAA;AAgLE,EAAA,IAAI,MAAM,MAAA,IAAU,KAAA,CAAM,YAAY,MAAA,IAAa,KAAA,CAAM,YAAY,MAAA,EAAW;AAC9E,IAAA,OAAO,oBAAA,CAAqB,MAAM,MAAA,EAAQ;AAAA,MACxC,cAAc,KAAA,CAAM,YAAA;AAAA,MACpB,YAAY,KAAA,CAAM;AAAA,KACnB,CAAA;AAAA,EACH;AAEA,EAAA,OAAO;AAAA,IACL,OAAA,EAAA,CAASf,GAAAA,GAAA,KAAA,CAAM,OAAA,KAAN,OAAAA,GAAAA,GAAiB,CAAA;AAAA,IAC1B,OAAA,EAAA,CAASC,GAAAA,GAAA,KAAA,CAAM,OAAA,KAAN,OAAAA,GAAAA,GAAiB,MAAA;AAAA,IAC1B,YAAA,EAAA,CAAcW,GAAAA,GAAA,KAAA,CAAM,YAAA,KAAN,OAAAA,GAAAA,GAAsB,KAAA;AAAA,IACpC,UAAA,EAAA,CAAYG,GAAAA,GAAA,KAAA,CAAM,UAAA,KAAN,OAAAA,GAAAA,GAAoB;AAAA,GAClC;AACF;AAEO,SAAS,uBAAuBgB,OAAAA,EAA8C;AACnF,EAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAS,YAAA,EAAc,YAAW,GAAIA,OAAAA;AAEvD,EAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,IAAA,OAAO,qBAAA,CAAsB,OAAA,EAAS,YAAA,EAAc,UAAU,CAAA;AAAA,EAChE;AAEA,EAAA,IAAI,YAAY,CAAA,EAAG;AACjB,IAAA,OAAO;AAAA,MACL,QAAQ,WAAA,EAAY;AAAA,MACpB,QAAQ,WAAA,EAAY;AAAA,MACpB,SAAS,WAAA;AAAY,KACvB;AAAA,EACF;AAEA,EAAA,OAAO,mBAAA,CAAoB,CAAA,EAAG,OAAA,EAAS,OAAA,EAAS,UAAU,CAAA;AAC5D;AAsBO,SAAS,oBAAoB,KAAA,EAA6C;AArOjF,EAAA,IAAA/B,GAAAA,EAAAC,GAAAA,EAAAW,GAAAA,EAAAG,GAAAA,EAAAc,KAAAC,GAAAA,EAAAE,GAAAA;AAsOE,EAAA,MAAMD,OAAAA,GAAS,2BAA2B,KAAK,CAAA;AAC/C,EAAA,MAAM,gBAAA,GAAmB,cAAA,CAAA,cAAA,CAAA,EAAA,EACpB,sBAAA,CAAuBA,OAAM,IAC7B,KAAA,CAAM,QAAA,CAAA;AAGX,EAAA,OAAO,cAAA,CAAA,cAAA,CAAA;AAAA,IACL,0BAAyB/B,GAAAA,GAAA,gBAAA,CAAiB,MAAA,KAAjB,IAAA,GAAAA,MAA2B,WAAA,EAAY;AAAA,IAChE,uBAAA,EAAA,CAAyBY,GAAAA,GAAAA,CAAAX,GAAAA,GAAA,gBAAA,CAAiB,MAAA,KAAjB,IAAA,GAAAA,GAAAA,GAA2B,gBAAA,CAAiB,MAAA,KAA5C,IAAA,GAAAW,GAAAA,GAAsD,WAAA,EAAY;AAAA,IAC3F,2BACEkB,GAAAA,GAAAA,CAAAD,GAAAA,GAAAA,CAAAd,GAAAA,GAAA,gBAAA,CAAiB,YAAjB,IAAA,GAAAA,GAAAA,GACA,gBAAA,CAAiB,MAAA,KADjB,OAAAc,GAAAA,GAEA,gBAAA,CAAiB,MAAA,KAFjB,IAAA,GAAAC,MAGA,WAAA,EAAY;AAAA,IACd,iBAAiB,UAAA,CAAA,CAAWE,GAAAA,GAAA,MAAM,GAAA,KAAN,IAAA,GAAAA,MAAa,IAAI;AAAA,GAAA,EACzC,MAAM,KAAA,GAAQ,EAAE,iBAAA,EAAmB,KAAA,CAAM,OAAM,GAAI,EAAC,CAAA,EACpD,KAAA,CAAM,UAAU,EAAE,mBAAA,EAAqB,KAAA,CAAM,OAAA,KAAY,EAAC,CAAA;AAElE;AAEO,SAAS,sBAAA,CAAuB,EAAE,IAAA,EAAM,KAAA,EAAM,EAA4C;AAC/F,EAAA,MAAM,OAA+B,EAAC;AAEtC,EAAA,IAAA,CAAI,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,YAAW,MAAA,EAAW;AAC9B,IAAA,IAAA,CAAK,2BAA2B,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAA,EACxD;AAEA,EAAA,IAAA,CAAI,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,YAAW,MAAA,EAAW;AAC9B,IAAA,IAAA,CAAK,2BAA2B,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAA,EACxD;AAEA,EAAA,IAAA,CAAI,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,aAAY,MAAA,EAAW;AAC/B,IAAA,IAAA,CAAK,4BAA4B,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AAAA,EAC1D;AAEA,EAAA,IAAI,+BAAO,MAAA,EAAQ;AACjB,IAAA,IAAA,CAAK,4BAA4B,IAAI,KAAA,CAAM,MAAA;AAAA,EAC7C;AAEA,EAAA,IAAI,+BAAO,MAAA,EAAQ;AACjB,IAAA,IAAA,CAAK,4BAA4B,IAAI,KAAA,CAAM,MAAA;AAAA,EAC7C;AAEA,EAAA,IAAI,+BAAO,OAAA,EAAS;AAClB,IAAA,IAAA,CAAK,6BAA6B,IAAI,KAAA,CAAM,OAAA;AAAA,EAC9C;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,qBAAA,CAAsB,MAAkB,IAAA,EAAqB;AAC3E,EAAA,OAAO;AAAA,IACL,oBAAA,EAAsB,WAAW,GAAG;AAAA,GACtC;AACF;;;AC5RA,IAAA,eAAA,GAAA,EAAA;ACsDA,SAAS,kBAAkB,MAAA,EAAmC;AAC5D,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACxC;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAA,GAAM,IAAA;AAAA,EACN,QAAA,GAAW,MAAA;AAAA,EACX,KAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,uBACE7B,IAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,cAAA,CAAe,eAAA,CAAO,OAAA,EAAS,SAAS,CAAA;AAAA,MACnD,gBAAA,EAAgB,QAAA;AAAA,MAChB,KAAA,EAAO,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,qBAAA,CAAsB,GAAG,CAAA,CAAA,EAAM,KAAA,CAAA;AAAA,MAE1C,QAAA,EAAA;AAAA,QAAA,KAAA,IAAS,8BACRA,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,gBAAO,MAAA,EACvB,QAAA,EAAA;AAAA,UAAA,KAAA,mBAAQD,GAAAA,CAAC,IAAA,EAAA,EAAG,WAAW,eAAA,CAAO,KAAA,EAAQ,iBAAM,CAAA,GAAQ,IAAA;AAAA,UACpD,WAAA,mBAAcA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,eAAA,CAAO,WAAA,EAAc,uBAAY,CAAA,GAAO;AAAA,SAAA,EACvE,CAAA,GACE,IAAA;AAAA,wBACJA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,eAAA,CAAO,MAAO,QAAA,EAAS;AAAA;AAAA;AAAA,GACzC;AAEJ;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,cAAA,CAAe,eAAA,CAAO,GAAA,EAAK,SAAS,CAAA;AAAA,MAC/C,KAAA,EAAO,kCACF,mBAAA,CAAoB;AAAA,QACrB,KAAA;AAAA,QACA,OAAA;AAAA,QACA,GAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,YAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACD,CAAA,CAAA,EACE,KAAA,CAAA;AAAA,MAGJ;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,cAAc,EAAE,QAAA,EAAU,WAAW,IAAA,EAAM,KAAA,EAAO,OAAM,EAAuB;AACtF,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,cAAA,CAAe,eAAA,CAAO,MAAA,EAAQ,SAAS,CAAA;AAAA,MAClD,OAAO,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,sBAAA,CAAuB,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA,CAAA,EAAM,KAAA,CAAA;AAAA,MAEvD;AAAA;AAAA,GACH;AAEJ;AAEO,IAAM,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,WAAA,EAAa;AAAA,EAChD,GAAA,EAAK,UAAA;AAAA,EACL,MAAA,EAAQ;AACV,CAAC;;;ACvID,IAAA,aAAA,GAAA,EAAA;AC0BO,SAAS,KAAA,CAAM;AAAA,EACpB,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,aAAA;AAAA,EACV,YAAA,GAAe,oBAAA;AAAA,EACf,IAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,OAAA,GAAU;AACZ,CAAA,EAAe;AACb,EAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,KAAW,CAAA;AAE9B,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,CAAO,MAAM,eAAA,EAAe,QAAA,EAAU,cAAA,EAAc,OAAA,EAAS,gBAAc,OAAA,EACzF,QAAA,kBAAAC,KAAC,OAAA,EAAA,EAAM,SAAA,EAAW,cAAO,KAAA,EACtB,QAAA,EAAA;AAAA,IAAA,OAAA,mBACCD,GAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,WAAA,GAAc,cAAO,OAAA,GAAU,aAAA,CAAO,cAAA,EAAiB,QAAA,EAAA,OAAA,EAAQ,CAAA,GACjF,IAAA;AAAA,oBACJA,IAAC,OAAA,EAAA,EACC,QAAA,kBAAAA,IAAC,IAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAQ;AA9ClC,MAAA,IAAAF,GAAAA;AA+Cc,MAAA,uBAAAE,GAAAA,CAAC,IAAA,EAAA,EAAG,YAAA,EAAA,CAAYF,GAAAA,GAAA,OAAO,KAAA,KAAP,IAAA,GAAAA,GAAAA,GAAgB,MAAA,EAAyB,KAAA,EAAM,KAAA,EAC5D,QAAA,EAAA,MAAA,CAAO,KAAA,EAAA,EADmC,OAAO,GAEpD,CAAA;AAAA,IAAA,CACD,GACH,CAAA,EACF,CAAA;AAAA,oBACAE,GAAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA,KAAA,mBACCA,GAAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,aAAA,CAAO,OAAO,OAAA,EAAS,OAAA,CAAQ,MAAA,EAAQ,IAAA,EAAK,QAAA,EACxD,QAAA,EAAA,YAAA,EACH,CAAA,EACF,CAAA,GAEA,KAAK,GAAA,CAAI,CAAC,GAAA,qBACRA,GAAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAQ;AA/DtC,MAAA,IAAAF,GAAAA;AAgEkB,MAAA,uBAAAE,GAAAA,CAAC,IAAA,EAAA,EAAG,YAAA,EAAA,CAAYF,GAAAA,GAAA,OAAO,KAAA,KAAP,IAAA,GAAAA,GAAAA,GAAgB,MAAA,EAC7B,cAAI,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA,EAAA,EADqB,OAAO,GAEpD,CAAA;AAAA,IAAA,CACD,CAAA,EAAA,EALM,GAAA,CAAI,EAMb,CACD,CAAA,EAEL;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;;;AC3EA,IAAA,gBAAA,GAAA,EAAA;ACkEA,IAAM,UAAA,GAAa,GAAA;AACnB,IAAM,QAAA,GAAW,CAAA;AACjB,IAAM,SAAA,GAAY,CAAA;AAClB,IAAM,eAAA,GAAkB,GAAA;AACxB,IAAM,qBAAA,GAAwB,GAAA;AAC9B,IAAM,yBAAA,GAA4B,EAAA;AAClC,IAAM,iBAAA,GAAoB,EAAA;AAC1B,IAAM,kBAAA,GAAqB,CAAA;AAC3B,IAAM,oBAAA,GAAuB,CAAA;AAC7B,IAAM,cAAA,GAAiB,CAAA;AACvB,IAAM,mBAAA,GAAsB,EAAA;AAE5B,SAAS,sBACP,MAAA,EACA;AACA,EAAA,OAAO;AAAA,IACL,UAAA,EAAA,CAAY,iCAAQ,UAAA,MAAe,IAAA;AAAA,IACnC,SAAA,EAAA,CAAW,iCAAQ,SAAA,MAAc,IAAA;AAAA,IACjC,QAAA,EAAA,CAAU,iCAAQ,QAAA,MAAa;AAAA,GACjC;AACF;AAEA,SAAS,iBAAA,CAAkB,QAAA,EAAmB,OAAA,EAAkB,OAAA,EAAuB;AACrF,EAAA,MAAM,aAAA,GAAgB,OAAA,KAAY,aAAA,GAAgB,EAAA,GAAK,EAAA;AACvD,EAAA,IAAI,QAAQ,aAAA,GAAgB,CAAA;AAE5B,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,KAAA,IAAS,iBAAA,GAAoB,kBAAA;AAAA,EAC/B;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,KAAA,IAAS,oBAAA,GAAuB,cAAA;AAAA,EAClC;AAEA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,SAAS,KAAA,EAA0B;AAC1C,EAAA,IAAI,UAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,IAAa,OAAO,UAAU,SAAA,EAAW;AACvE,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU;AAC1D,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB;AAEA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,KAAA,CAAM,GAAA,CAAI,QAAQ,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO,EAAA;AACT;AAEA,SAAS,aAAa,GAAA,EAA0B;AAvHhD,EAAA,IAAAA,GAAAA;AAwHE,EAAA,OAAO,QAAA,CAAA,CAASA,MAAA,GAAA,CAAI,MAAA,CAAO,SAAX,IAAA,GAAAA,GAAAA,GAAmB,IAAI,KAAK,CAAA;AAC9C;AAEA,SAAS,eAAe,KAAA,EAAe;AACrC,EAAA,OAAO,mBAAA,CAAoB,KAAK,KAAK,CAAA;AACvC;AAEA,SAAS,aAAA,CAAc,GAAW,CAAA,EAAW;AAC3C,EAAA,MAAM,KAAA,GAAQ,EAAE,IAAA,EAAK;AACrB,EAAA,MAAM,KAAA,GAAQ,EAAE,IAAA,EAAK;AAErB,EAAA,IAAI,SAAS,KAAA,IAAS,cAAA,CAAe,KAAK,CAAA,IAAK,cAAA,CAAe,KAAK,CAAA,EAAG;AACpE,IAAA,OAAO,MAAA,CAAO,KAAK,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO,KAAA,CAAM,cAAc,KAAA,EAAO,MAAA,EAAW,EAAE,OAAA,EAAS,IAAA,EAAM,WAAA,EAAa,MAAA,EAAQ,CAAA;AACrF;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,QAAA,GAAW,IAAA;AAAA,EACX,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,SAAA;AAAA,EACA,IAAA;AAAA,EACA,iBAAA,GAAoB,IAAA;AAAA,EACpB,YAAA,GAAe,IAAA;AAAA,EACf,OAAA,GAAU;AACZ,CAAA,EAAkB;AApJlB,EAAA,IAAAA,GAAAA,EAAAC,KAAAW,GAAAA,EAAAG,GAAAA;AAqJE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIV,QAAAA,CAAiC,EAAE,CAAA;AAC3E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,QAAAA,CAAiC,EAAE,CAAA;AACjE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAA+B,IAAI,CAAA;AACnE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAA6B,IAAI,CAAA;AACjE,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,SAA2B,IAAI,CAAA;AACvD,EAAA,MAAM,aAAA,GAAgBD,OAA0B,IAAI,CAAA;AACpD,EAAA,MAAM,WAAA,GAAcA,OAA8B,IAAI,CAAA;AACtD,EAAA,MAAM,OAAA,GAAUA,OAA+B,IAAI,CAAA;AACnD,EAAA,MAAM,YAAA,GAAeA,OAAsB,IAAI,CAAA;AAC/C,EAAA,MAAM,aAAA,GAAgBA,OAA2B,IAAI,CAAA;AACrD,EAAA,MAAM,OAAA,GAAUA,OAA8B,IAAI,CAAA;AAClD,EAAA,MAAM,gBAAgB,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,QAAQ,MAAM,CAAA;AACpE,EAAA,MAAM,WAAA,GAAcY,OAAAA;AAAA,IAClB,MACE,aAAA,GACI,OAAA,GACA,CAAC,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAgB,EAAG,GAAG,OAAO,CAAA;AAAA,IACzE,CAAC,SAAS,aAAa;AAAA,GACzB;AACA,EAAA,MAAM,WAAA,GAAcA,OAAAA;AAAA,IAClB,MAAM,WAAA,CAAY,MAAA,CAAO,CAAC,MAAA,KAAW,MAAA,CAAO,QAAQ,MAAM,CAAA;AAAA,IAC1D,CAAC,WAAW;AAAA,GACd;AACA,EAAA,MAAM,cAAA,GAAiBA,QAAQ,MAAM;AACnC,IAAA,MAAM,WAA2F,EAAC;AAElG,IAAA,KAAA,MAAW,UAAU,WAAA,EAAa;AAChC,MAAA,MAAMe,UAAS,MAAA,CAAO,GAAA,KAAQ,MAAA,IAAU,CAAC,gBAAgB,SAAA,GAAY,MAAA;AACrE,MAAA,QAAA,CAAS,MAAA,CAAO,GAAG,CAAA,GAAI,qBAAA,CAAsBA,OAAM,CAAA;AAAA,IACrD;AAEA,IAAA,OAAO,QAAA;AAAA,EACT,CAAA,EAAG,CAAC,WAAA,EAAa,aAAA,EAAe,SAAS,CAAC,CAAA;AAC1C,EAAA,MAAM,cAAc,IAAA,CACjB,MAAA;AAAA,IAAO,CAAC,GAAA,KACP,WAAA,CAAY,KAAA,CAAM,CAAC,MAAA,KAAW;AAxLpC,MAAA,IAAA/B,GAAAA;AAyLQ,MAAA,MAAM,QAAA,GAAW,cAAA,CAAe,MAAA,CAAO,GAAG,CAAA;AAE1C,MAAA,IAAI,EAAC,qCAAU,UAAA,CAAA,EAAY;AACzB,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,MAAA,GAAA,CAASA,MAAA,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAA,KAAlB,IAAA,GAAA,MAAA,GAAAA,IAAqB,IAAA,EAAA,CAAO,WAAA,EAAA;AAE3C,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,KAAQ,MAAA,GAAS,YAAA,CAAa,GAAG,CAAA,GAAI,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,MAAA,CAAO,GAAG,CAAC,CAAA;AACzF,MAAA,OAAO,KAAA,CAAM,WAAA,EAAY,CAAE,QAAA,CAAS,MAAM,CAAA;AAAA,IAC5C,CAAC;AAAA,GACH,CACC,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM;AAzMpB,IAAA,IAAAA,GAAAA;AA0MM,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,CAAA;AAAA,IACT;AAEA,IAAA,IAAI,EAAA,CAACA,MAAA,cAAA,CAAe,IAAA,CAAK,GAAG,CAAA,KAAvB,IAAA,GAAA,MAAA,GAAAA,IAA0B,QAAA,CAAA,EAAU;AACvC,MAAA,OAAO,CAAA;AAAA,IACT;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,KAAQ,MAAA,GAAS,YAAA,CAAa,CAAC,CAAA,GAAI,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,GAAG,CAAC,CAAA;AAClF,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,KAAQ,MAAA,GAAS,YAAA,CAAa,CAAC,CAAA,GAAI,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,GAAG,CAAC,CAAA;AAClF,IAAA,MAAM,MAAA,GAAS,aAAA,CAAc,MAAA,EAAQ,MAAM,CAAA;AAE3C,IAAA,OAAO,IAAA,CAAK,SAAA,KAAc,WAAA,GAAc,MAAA,GAAS,CAAC,MAAA;AAAA,EACpD,CAAC,CAAA;AACH,EAAA,MAAM,gBAAA,GAAmB,QAAA,GAAW,cAAA,CAAe,QAAA,CAAS,GAAG,CAAA,GAAI,MAAA;AAEnE,EAAA,MAAM,kBAAA,GAAqBa,YAAY,MAAM;AAC3C,IAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,MAAA,OAAA,CAAQ,OAAA,CAAQ,MAAM,SAAA,GAAY,EAAA;AAAA,IACpC;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAA,GAAkBA,YAAY,MAAM;AACxC,IAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AACxB,IAAA,kBAAA,EAAmB;AACnB,IAAA,WAAA,CAAY,IAAI,CAAA;AAAA,EAClB,CAAA,EAAG,CAAC,kBAAkB,CAAC,CAAA;AAEvB,EAAA,MAAM,gBAAA,GAAmB,YAAWb,GAAAA,GAAA,OAAA,CAAQ,SAAS,GAAG,CAAA,KAApB,IAAA,GAAAA,GAAAA,GAAyB,EAAA,GAAK,EAAA;AAElE,EAAA,MAAM,iBAAA,GAAoBa,YAAY,MAAM;AAC1C,IAAA,MAAM,SAAS,aAAA,CAAc,OAAA;AAC7B,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,MAAM,OAAO,WAAA,CAAY,OAAA;AACzB,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AAErB,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,IAAA,IAAQ,CAAC,IAAA,EAAM;AAC7B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,qBAAA,EAAsB;AACvD,IAAA,MAAM,QAAA,GAAW,KAAK,qBAAA,EAAsB;AAC5C,IAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,YAAY,QAAA,CAAS,KAAA,GAAQ,YAAY,CAAC,CAAA;AACrE,IAAA,MAAM,aAAA,GACJ,UAAA,CAAW,MAAA,GAAS,QAAA,CAAS,OAC1B,UAAA,CAAW,GAAA,GAAM,QAAA,CAAS,MAAA,IAC1B,WAAW,KAAA,GAAQ,QAAA,CAAS,IAAA,IAC5B,UAAA,CAAW,OAAO,QAAA,CAAS,KAAA;AAEhC,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,eAAA,EAAgB;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,GAAO,MAAA,CAAO,KAAA,KAAU,MAAA,GACxB,UAAA,CAAW,IAAA,GAAO,QAAA,CAAS,IAAA,GAC3B,UAAA,CAAW,KAAA,GAAQ,QAAA,CAAS,IAAA,GAAO,SAAA;AACvC,IAAA,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,SAAS,CAAA,EAAG,QAAA,CAAS,KAAA,GAAQ,SAAA,GAAY,SAAS,CAAA;AAEjF,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,MAAA,GAAS,QAAA,CAAS,GAAA,GAAM,QAAA;AACpD,IAAA,IAAA,CAAK,MAAM,SAAA,GAAY,MAAA;AACvB,IAAA,IAAI,oBAAoB,IAAA,CAAK,YAAA;AAE7B,IAAA,IAAA,CAAI,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAkB,UAAA,KAAc,CAAC,gBAAA,CAAiB,MAAK,EAAG;AAC5D,MAAA,iBAAA,IAAqB,yBAAA;AAAA,IACvB;AAEA,IAAA,iBAAA,GAAoB,IAAA,CAAK,GAAA,CAAI,iBAAA,EAAmB,eAAA,EAAiB,qBAAqB,CAAA;AACtF,IAAA,IAAA,CAAK,MAAM,SAAA,GAAY,EAAA;AAEvB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,KAAA,CAAM,YAAY,CAAA,EAAG,IAAA,CAAK,KAAK,QAAA,GAAW,iBAAA,GAAoB,SAAS,CAAC,CAAA,EAAA,CAAA;AAAA,IAC/E;AAEA,IAAA,MAAM,gBAAA,GAAmB,KAAK,qBAAA,EAAsB;AACpD,IAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,MAAA,GAAS,QAAA,GAAW,SAAA;AACxD,IAAA,MAAM,UAAA,GAAa,UAAA,CAAW,GAAA,GAAM,gBAAA,CAAiB,MAAM,QAAA,GAAW,SAAA;AACtE,IAAA,MAAM,SAAA,GAAY,UAAA,IAAc,eAAA,IAAmB,UAAA,IAAc,UAAA;AACjE,IAAA,MAAM,GAAA,GAAM,SAAA,GACR,QAAA,GACA,IAAA,CAAK,GAAA,CAAI,WAAW,UAAA,CAAW,GAAA,GAAM,gBAAA,CAAiB,GAAA,GAAM,QAAQ,CAAA;AACxE,IAAA,MAAM,YAAY,SAAA,GACd,IAAA,CAAK,IAAI,iBAAA,EAAmB,IAAA,CAAK,IAAI,eAAA,EAAiB,UAAU,CAAC,CAAA,GACjE,KAAK,GAAA,CAAI,iBAAA,EAAmB,KAAK,GAAA,CAAI,eAAA,EAAiB,UAAU,CAAC,CAAA;AAErE,IAAA,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA;AAC/B,IAAA,IAAA,CAAK,KAAA,CAAM,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,EAAA,CAAA;AACzB,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,CAAA,EAAG,GAAG,CAAA,EAAA,CAAA;AACvB,IAAA,IAAA,CAAK,KAAA,CAAM,SAAA,GAAY,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA;AACnC,IAAA,IAAA,CAAK,KAAA,CAAM,SAAA,GAAY,SAAA,GAAY,EAAA,GAAK,mBAAA;AAAA,EAC1C,GAAG,CAAC,gBAAA,EAAkB,eAAA,EAAiB,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAkB,UAAU,CAAC,CAAA;AAEpE,EAAA,MAAM,oBAAA,GAAuBA,YAAY,MAAM;AAC7C,IAAA,IAAI,YAAA,CAAa,YAAY,IAAA,EAAM;AACjC,MAAA;AAAA,IACF;AAEA,IAAA,YAAA,CAAa,OAAA,GAAU,MAAA,CAAO,qBAAA,CAAsB,MAAM;AACxD,MAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,MAAA,iBAAA,EAAkB;AAAA,IACpB,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAAQ,gBAAgB,MAAM;AAjTxB,IAAA,IAAArB,GAAAA;AAkTI,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,kBAAA,EAAmB;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,iBAAA,EAAkB;AAElB,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,gBAAA,CAAiB,QAAA,EAAU,oBAAA,EAAsB,EAAE,SAAS,IAAA,EAAK,CAAA;AACvE,IAAA,MAAA,CAAO,iBAAiB,QAAA,EAAU,oBAAA,EAAsB,EAAE,OAAA,EAAS,MAAM,CAAA;AAEzE,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAyB;AA9TxD,MAAA,IAAAA,GAAAA;AA+TM,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA;AAAA,MACF;AAEA,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,MAAA,MAAM,OAAA,GAAA,CAAUA,GAAAA,GAAA,aAAA,CAAc,OAAA,KAAd,gBAAAA,GAAAA,CAAuB,MAAA;AACvC,MAAA,eAAA,EAAgB;AAChB,MAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,KAAA,EAAA;AAAA,IACX,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,SAAA,EAAW,iBAAA,EAAmB,IAAI,CAAA;AAE5D,IAAA,MAAM,cAAA,GAAiB,IAAA,GACnB,IAAI,cAAA,CAAe,MAAM;AACvB,MAAA,oBAAA,EAAqB;AAAA,IACvB,CAAC,CAAA,GACD,IAAA;AAEJ,IAAA,IAAI,QAAQ,cAAA,EAAgB;AAC1B,MAAA,cAAA,CAAe,QAAQ,IAAI,CAAA;AAAA,IAC7B;AAEA,IAAA,MAAM,YAAA,GAAA,CAAeA,GAAAA,GAAA,aAAA,CAAc,OAAA,KAAd,gBAAAA,GAAAA,CAAuB,MAAA;AAC5C,IAAA,MAAM,UAAA,GAAa,6CAAc,OAAA,CAAQ,IAAA,CAAA;AACzC,IAAA,MAAM,oBAAA,GAAuB,UAAA,GACzB,IAAI,cAAA,CAAe,MAAM;AACvB,MAAA,oBAAA,EAAqB;AAAA,IACvB,CAAC,CAAA,GACD,IAAA;AAEJ,IAAA,IAAI,cAAc,oBAAA,EAAsB;AACtC,MAAA,oBAAA,CAAqB,QAAQ,UAAU,CAAA;AAAA,IACzC;AAEA,IAAA,MAAM,WAAA,GAAc,6BAAM,aAAA,CAAc,OAAA,CAAA;AAExC,IAAA,IAAI,uBAAuB,gBAAA,EAAkB;AAC3C,MAAA,WAAA,CAAY,KAAA,EAAM;AAAA,IACpB,CAAA,MAAO;AACL,MAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,KAAA,EAAA;AAAA,IACR;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,oBAAoB,QAAA,EAAU,oBAAA,CAAA;AACpC,MAAA,MAAA,CAAO,mBAAA,CAAoB,UAAU,oBAAoB,CAAA;AACzD,MAAA,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,iBAAA,EAAmB,IAAI,CAAA;AAC/D,MAAA,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,UAAA,EAAA;AAChB,MAAA,oBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,oBAAA,CAAsB,UAAA,EAAA;AACtB,MAAA,kBAAA,EAAmB;AAEnB,MAAA,IAAI,YAAA,CAAa,YAAY,IAAA,EAAM;AACjC,QAAA,MAAA,CAAO,oBAAA,CAAqB,aAAa,OAAO,CAAA;AAChD,QAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,gBAAA,EAAkB,iBAAA,EAAmB,iBAAiB,QAAA,EAAU,kBAAA,EAAoB,oBAAoB,CAAC,CAAA;AAE7G,EAAAqB,gBAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA;AAAA,IACF;AAEA,IAAA,oBAAA,EAAqB;AAAA,EACvB,CAAA,EAAG,CAAC,YAAA,EAAc,QAAA,EAAU,oBAAoB,CAAC,CAAA;AAEjD,EAAA,MAAM,UAAA,GAAa,CAAC,GAAA,KAAgB;AAjYtC,IAAA,IAAArB,GAAAA;AAkYI,IAAA,IAAI,GAACA,GAAAA,GAAA,cAAA,CAAe,GAAG,CAAA,KAAlB,IAAA,GAAA,MAAA,GAAAA,IAAqB,QAAA,CAAA,EAAU;AAClC,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,CAAQ,CAAC,OAAA,KAAY;AACnB,MAAA,IAAA,CAAI,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,SAAQ,GAAA,EAAK;AACxB,QAAA,OAAO,EAAE,GAAA,EAAK,SAAA,EAAW,WAAA,EAAY;AAAA,MACvC;AAEA,MAAA,IAAI,OAAA,CAAQ,cAAc,WAAA,EAAa;AACrC,QAAA,OAAO,EAAE,GAAA,EAAK,SAAA,EAAW,YAAA,EAAa;AAAA,MACxC;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,GAAA,EAAa,SAAA,KAA6C;AAClF,IAAA,OAAA,CAAQ,SAAA,GAAY,EAAE,GAAA,EAAK,SAAA,KAAc,IAAI,CAAA;AAC7C,IAAA,eAAA,EAAgB;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,iBAAiB,CAAC;AAAA,IACtB,KAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAA;AAAA,IACA;AAAA,GACF,KAKM;AACJ,IAAA,aAAA,CAAc,OAAA,GAAU,EAAE,KAAA,EAAO,MAAA,EAAO;AACxC,IAAA,WAAA,CAAY;AAAA,MACV,KAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,WAAA,GAAca,WAAAA,CAAY,CAC9B,KAAA,EACA,KACA,aAAA,KACG;AAhbP,IAAA,IAAAb,GAAAA,EAAAC,KAAAW,GAAAA,EAAAG,GAAAA;AAibI,IAAA,IAAI,GAACf,GAAAA,GAAA,cAAA,CAAe,GAAG,CAAA,KAAlB,IAAA,GAAA,MAAA,GAAAA,IAAqB,SAAA,CAAA,EAAW;AACnC,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,eAAA,EAAgB;AAEhB,IAAA,MAAM,OAAO,eAAA,IAAmB,KAAA,GAC3B,MAAM,aAAA,CAA8B,OAAA,CAAQ,QAAQ,CAAA,GACrD,IAAA;AACJ,IAAA,MAAM,aAAA,GAAgB,6BAAM,qBAAA,EAAA,CAAwB,KAAA;AACpD,IAAA,MAAM,gBACJe,GAAAA,GAAAA,CAAAH,GAAAA,GAAAA,CAAAX,GAAAA,GAAA,YAAA,CAAa,GAAG,CAAA,KAAhB,IAAA,GAAAA,GAAAA,GAAqB,aAAA,KAArB,OAAAW,GAAAA,GAAsC,aAAA,KAAtC,OAAAG,GAAAA,GAAwD,GAAA,KAAQ,SAAS,GAAA,GAAM,GAAA;AAEjF,IAAA,MAAM,SAAA,GAAyB;AAAA,MAC7B,GAAA;AAAA,MACA,UAAA,EAAY,YAAA;AAAA,MACZ,QAAQ,KAAA,CAAM;AAAA,KAChB;AAEA,IAAA,aAAA,CAAc,OAAA,GAAU,SAAA;AACxB,IAAA,WAAA,CAAY,SAAS,CAAA;AAErB,IAAA,MAAM,aAAA,GAAgB,CAAC,SAAA,KAAuC;AAzclE,MAAA,IAAAf,GAAAA;AA0cM,MAAA,MAAM,OAAO,aAAA,CAAc,OAAA;AAE3B,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,YAAWA,GAAAA,GAAA,cAAA,CAAe,KAAK,GAAG,CAAA,KAAvB,OAAAA,GAAAA,GAA4B;AAAA,QAC3C,UAAA,EAAY,KAAA;AAAA,QAEZ,QAAA,EAAU;AAAA,OACZ;AACA,MAAA,MAAM,YAAY,IAAA,CAAK,GAAA;AAAA,QACrB,iBAAA;AAAA,UACE,QAAA,CAAS,QAAA;AAAA,UACT,QAAA,CAAS,YAAY,QAAA,CAAS,UAAA;AAAA,UAC9B;AAAA,SACF;AAAA,QACA,IAAA,CAAK,UAAA,GAAa,SAAA,CAAU,OAAA,GAAU,IAAA,CAAK;AAAA,OAC7C;AAEA,MAAA,eAAA,CAAgB,CAAC,OAAA,KAAa,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,OAAA,CAAA,EAAL,EAAc,CAAC,IAAA,CAAK,GAAG,GAAG,SAAA,EAAU,CAAE,CAAA;AAAA,IACtE,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,MAAA,CAAO,mBAAA,CAAoB,eAAe,aAAa,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,YAAY,CAAA;AACpD,MAAA,MAAA,CAAO,mBAAA,CAAoB,iBAAiB,YAAY,CAAA;AACxD,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AACxB,MAAA,WAAA,CAAY,IAAI,CAAA;AAAA,IAClB,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,eAAe,aAAa,CAAA;AACpD,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,YAAY,CAAA;AACjD,IAAA,MAAA,CAAO,gBAAA,CAAiB,iBAAiB,YAAY,CAAA;AAAA,EACvD,GAAG,CAAC,eAAA,EAAiB,cAAA,EAAgB,YAAA,EAAc,OAAO,CAAC,CAAA;AAE3D,EAAA,MAAM,qBAAA,GAAwBa,WAAAA,CAAY,CAAC,KAAA,KAAiD;AA9e9F,IAAA,IAAAb,GAAAA;AA+eI,IAAA,MAAM,IAAA,GAAQ,MAAM,MAAA,CAAuB,OAAA;AAAA,MACzC;AAAA,KACF;AAEA,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,OAAA,CAAQ,oBAAoB,MAAA,EAAQ;AACpD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,SAAA,GAAY,KAAK,OAAA,CAAQ,SAAA;AAE/B,IAAA,IAAI,CAAC,aAAa,EAAA,CAACA,GAAAA,GAAA,eAAe,SAAS,CAAA,KAAxB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAA2B,SAAA,CAAA,EAAW;AACvD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,KAAK,qBAAA,EAAsB;AAEpD,IAAA,IAAI,KAAA,CAAM,OAAA,GAAU,KAAA,GAAQ,mBAAA,EAAqB;AAC/C,MAAA;AAAA,IACF;AAEA,IAAA,WAAA,CAAY,KAAA,EAAO,WAAW,KAAK,CAAA;AAAA,EACrC,CAAA,EAAG,CAAC,WAAA,EAAa,cAAc,CAAC,CAAA;AAEhC,EAAA,uBACEG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAO,KAAA,EACpB,QAAA,EAAA;AAAA,IAAA,OAAA,mBAAUD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,gBAAA,CAAO,OAAA,EAAU,mBAAQ,CAAA,GAAS,IAAA;AAAA,oBAC7DC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAO,QAAA,EACrB,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,OAAA;AAAA,UACL,WAAW,gBAAA,CAAO,IAAA;AAAA,UAClB,eAAA,EAAe,QAAA;AAAA,UACf,cAAA,EAAc,OAAA;AAAA,UACd,iBAAA,EAAiB,OAAO,MAAA,CAAO,cAAc,EAAE,IAAA,CAAK,CAAC,OAAA,KAAY,OAAA,CAAQ,UAAU,CAAA;AAAA,UACnF,gBAAA,EAAgB,OAAO,MAAA,CAAO,cAAc,EAAE,IAAA,CAAK,CAAC,OAAA,KAAY,OAAA,CAAQ,SAAS,CAAA;AAAA,UACjF,eAAA,EAAe,QAAQ,QAAQ,CAAA;AAAA,UAC/B,eAAA,EAAe,OAAO,MAAA,CAAO,cAAc,EAAE,IAAA,CAAK,CAAC,OAAA,KAAY,OAAA,CAAQ,QAAQ,CAAA;AAAA,UAC/E,oBAAA,EAAoB,iBAAA;AAAA,UACpB,oBAAA,EAAoB,YAAA;AAAA,UACpB,cAAA,EAAc,OAAA;AAAA,UAEd,QAAA,kBAAAC,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,iBAAO,IAAA,EACtB,QAAA,EAAA;AAAA,YAAA,OAAA,mBAAUD,GAAAA,CAAC,SAAA,EAAA,EAAQ,WAAW,gBAAA,CAAO,cAAA,EAAiB,mBAAQ,CAAA,GAAa,IAAA;AAAA,4BAC5EA,GAAAA,CAAC,UAAA,EAAA,EACE,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,MAAA,KAAQ;AA1hBxC,cAAA,IAAAF,GAAAA;AA2hBgB,cAAA,uBAAAE,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBAEC,KAAA,EAAO,EAAE,KAAA,EAAA,CAAOF,GAAAA,GAAA,aAAa,MAAA,CAAO,GAAG,CAAA,KAAvB,IAAA,GAAAA,GAAAA,GAA6B,MAAA,CAAO,GAAA,KAAQ,MAAA,GAAS,MAAM,GAAA;AAAK,iBAAA;AAAA,gBAD3E,MAAA,CAAO;AAAA,eAEd;AAAA,YAAA,CACD,CAAA,EACH,CAAA;AAAA,4BACAE,IAAC,OAAA,EAAA,EACC,QAAA,kBAAAA,IAAC,IAAA,EAAA,EACE,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,MAAA,KAAQ;AAniB1C,cAAA,IAAAF,GAAAA,EAAAC,GAAAA;AAoiBkB,cAAA,uBAAAE,IAAAA;AAAA,gBAAC,IAAA;AAAA,gBAAA;AAAA,kBACC,WAAA,EACE,cAAA,CAAe,MAAA,CAAO,GAAG,CAAA,CAAE,QAAA,GAAA,CACvB,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAA,MAAQ,MAAA,CAAO,GAAA,GACnB,IAAA,CAAK,SAAA,GACL,MAAA,GACF,MAAA;AAAA,kBAEN,SAAA,EAAW,MAAA,CAAO,GAAA,KAAQ,MAAA,GAAS,iBAAO,MAAA,GAAS,MAAA;AAAA,kBACnD,uBAAA,EAAuB,cAAA,CAAe,MAAA,CAAO,GAAG,CAAA,CAAE,SAAA;AAAA,kBAClD,oBAAA,EAAoB,SAAQH,GAAAA,GAAA,OAAA,CAAQ,OAAO,GAAG,CAAA,KAAlB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAqB,IAAA,EAAM,CAAA;AAAA,kBACvD,gBAAA,EAAA,CAAgB,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,GAAA,MAAQ,MAAA,CAAO,GAAA;AAAA,kBAEzC,KAAA,EAAM,KAAA;AAAA,kBACN,OACE,YAAA,CAAa,MAAA,CAAO,GAAG,CAAA,GACnB,EAAE,KAAA,EAAO,YAAA,CAAa,MAAA,CAAO,GAAG,GAAG,QAAA,EAAU,YAAA,CAAa,MAAA,CAAO,GAAG,GAAE,GACtE,MAAA;AAAA,kBAGN,QAAA,EAAA;AAAA,oCAAAE,GAAAA;AAAA,sBAAC,aAAA;AAAA,sBAAA;AAAA,wBACC,YAAA,EAAc,SAAQD,GAAAA,GAAA,OAAA,CAAQ,OAAO,GAAG,CAAA,KAAlB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAqB,IAAA,EAAM,CAAA;AAAA,wBACjD,UAAA,EAAY,cAAA,CAAe,MAAA,CAAO,GAAG,CAAA,CAAE,UAAA;AAAA,wBACvC,OAAO,MAAA,CAAO,KAAA;AAAA,wBACd,QAAQ,MAAA,CAAO,GAAA;AAAA,wBACf,gBAAe,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAA,MAAQ,MAAA,CAAO,GAAA,GAAM,KAAK,SAAA,GAAY,MAAA;AAAA,wBAC3D,QAAA,EAAU,cAAA,CAAe,MAAA,CAAO,GAAG,CAAA,CAAE,QAAA;AAAA,wBACrC,QAAA,EAAA,CAAU,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,GAAA,MAAQ,MAAA,CAAO,GAAA;AAAA,wBACnC,YAAA,EAAc,CAAC,MAAA,KAAW;AACxB,0BAAA,IAAA,CAAI,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,GAAA,MAAQ,MAAA,CAAO,GAAA,EAAK;AAChC,4BAAA,eAAA,EAAgB;AAChB,4BAAA;AAAA,0BACF;AAEA,0BAAA,cAAA,CAAe;AAAA,4BACb,KAAA,EAAO,MAAA,CAAO,GAAA,KAAQ,MAAA,GAAS,MAAA,GAAS,OAAA;AAAA,4BACxC,MAAA;AAAA,4BACA,KAAK,MAAA,CAAO,GAAA;AAAA,4BACZ,OAAO,MAAA,CAAO;AAAA,2BACf,CAAA;AAAA,wBACH,CAAA;AAAA,wBACA,MAAA,EAAQ,MAAM,UAAA,CAAW,MAAA,CAAO,GAAG;AAAA;AAAA,qBACrC;AAAA,oBACC,cAAA,CAAe,MAAA,CAAO,GAAG,CAAA,CAAE,4BAC1BC,GAAAA;AAAA,sBAAC,kBAAA;AAAA,sBAAA;AAAA,wBACC,eAAe,CAAC,KAAA,KAAU,WAAA,CAAY,KAAA,EAAO,OAAO,GAAG;AAAA;AAAA,qBACzD,GACE;AAAA;AAAA,iBAAA;AAAA,gBAnCC,MAAA,CAAO;AAAA,eAoCd;AAAA,YAAA,CACD,GACH,CAAA,EACF,CAAA;AAAA,4BACAC,IAAAA,CAAC,OAAA,EAAA,EAAM,aAAA,EAAe,qBAAA,EACnB,QAAA,EAAA;AAAA,cAAA,WAAA,CAAY,GAAA,CAAI,CAAC,GAAA,KAAK;AAzlBrC,gBAAA,IAAAH,GAAAA;AA0lBgB,gBAAA,uBAAAG,KAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,kCAAAD,GAAAA;AAAA,oBAAC,IAAA;AAAA,oBAAA;AAAA,sBACC,WAAW,gBAAA,CAAO,SAAA;AAAA,sBAClB,KAAA,EAAM,KAAA;AAAA,sBACN,KAAA,EACE,YAAA,CAAa,IAAA,GACT,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,QAAA,EAAU,YAAA,CAAa,IAAA,EAAK,GACxD,MAAA;AAAA,sBAGL,WAAAF,GAAAA,GAAA,GAAA,CAAI,OAAO,IAAA,KAAX,IAAA,GAAAA,MAAmB,GAAA,CAAI;AAAA;AAAA,mBAC1B;AAAA,kBACC,WAAA,CAAY,GAAA,CAAI,CAAC,MAAA,KAAQ;AAtmB5C,oBAAA,IAAAA,GAAAA;AAumBoB,oBAAA,uBAAAE,GAAAA;AAAA,sBAAC,IAAA;AAAA,sBAAA;AAAA,wBACC,YAAA,EAAA,CAAYF,GAAAA,GAAA,MAAA,CAAO,KAAA,KAAP,OAAAA,GAAAA,GAAgB,MAAA;AAAA,wBAC5B,mBAAiB,MAAA,CAAO,GAAA;AAAA,wBACxB,uBAAA,EAAuB,cAAA,CAAe,MAAA,CAAO,GAAG,CAAA,CAAE,SAAA;AAAA,wBAElD,OACE,YAAA,CAAa,MAAA,CAAO,GAAG,CAAA,GACnB,EAAE,KAAA,EAAO,YAAA,CAAa,MAAA,CAAO,GAAG,GAAG,QAAA,EAAU,YAAA,CAAa,MAAA,CAAO,GAAG,GAAE,GACtE,MAAA;AAAA,wBAGL,QAAA,EAAA,GAAA,CAAI,MAAA,CAAO,MAAA,CAAO,GAAG;AAAA,uBAAA;AAAA,sBAPjB,MAAA,CAAO;AAAA,qBAQd;AAAA,kBAAA,CACD;AAAA,iBAAA,EAAA,EA1BM,IAAI,EA2Bb,CAAA;AAAA,cAAA,CACD,CAAA;AAAA,cACA,CAAC,WAAA,CAAY,MAAA,mBACZG,KAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAAD,IAAC,IAAA,EAAA,EAAG,SAAA,EAAW,iBAAO,SAAA,EAAW,KAAA,EAAM,OAAM,QAAA,EAAA,SAAA,EAE7C,CAAA;AAAA,gCACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,gBAAA,CAAO,KAAA,EAAO,OAAA,EAAS,IAAA,CAAK,GAAA,CAAI,WAAA,CAAY,MAAA,EAAQ,CAAC,GAAG,QAAA,EAAA,mBAAA,EAEvE;AAAA,eAAA,EACF,CAAA,GACE;AAAA,aAAA,EACN;AAAA,WAAA,EACF;AAAA;AAAA,OACF;AAAA,MACC,QAAA,mBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,gBAAA,CAAO,QAAA,EAAU,GAAA,EAAK,WAAA,EACpC,QAAA,kBAAAA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,OAAA;AAAA,UACL,SAAQD,GAAAA,GAAA,OAAA,CAAQ,SAAS,GAAG,CAAA,KAApB,OAAAA,GAAAA,GAAyB,EAAA;AAAA,UACjC,UAAA,EAAA,CAAYW,GAAAA,GAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAkB,UAAA,KAAlB,OAAAA,GAAAA,GAAgC,KAAA;AAAA,UAC5C,OAAO,QAAA,CAAS,KAAA;AAAA,UAChB,QAAQ,QAAA,CAAS,MAAA;AAAA,UACjB,gBAAe,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAA,MAAQ,QAAA,CAAS,GAAA,GAAM,KAAK,SAAA,GAAY,MAAA;AAAA,UAC7D,QAAA,EAAA,CAAUG,GAAAA,GAAA,gBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,gBAAA,CAAkB,QAAA,KAAlB,OAAAA,GAAAA,GAA8B,KAAA;AAAA,UACxC,cAAA,EAAgB,CAAC,MAAA,KACf,UAAA,CAAW,CAAC,OAAA,KAAa,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,OAAA,CAAA,EAAL,EAAc,CAAC,QAAA,CAAS,GAAG,GAAG,QAAO,CAAE,CAAA;AAAA,UAElE,WAAA,EAAa,eAAA;AAAA,UACb,iBAAiB,CAAC,SAAA,KAAc,gBAAA,CAAiB,QAAA,CAAS,KAAK,SAAS;AAAA;AAAA,SAE5E,CAAA,GACE;AAAA,KAAA,EACN;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,kBAAA,CAAmB;AAAA,EAC1B;AACF,CAAA,EAEG;AACD,EAAA,uBACEb,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAW,gBAAA,CAAO,kBAAA;AAAA,MAClB,aAAA,EAAe;AAAA;AAAA,GACjB;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,YAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAUG;AACD,EAAA,MAAM,UAAU,QAAA,IAAY,UAAA;AAE5B,EAAA,MAAM,SAAA,GAAY,aAAA,KAAkB,WAAA,GAChC,CAAA,EAAG,KAAK,CAAA,kBAAA,CAAA,GACR,aAAA,KAAkB,YAAA,GAChB,CAAA,EAAG,KAAK,CAAA,mBAAA,CAAA,GACR,CAAA,QAAA,EAAW,KAAK,CAAA,CAAA;AAEtB,EAAA,uBACEC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iBAAO,UAAA,EACrB,QAAA,EAAA;AAAA,IAAA,QAAA,mBACCD,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAY,SAAA;AAAA,QACZ,WAAW,gBAAA,CAAO,UAAA;AAAA,QAClB,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QAET,QAAA,kBAAAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iBAAO,eAAA,EAAiB,KAAA,EAAO,OAC7C,QAAA,EAAA,KAAA,EACH;AAAA;AAAA,wBAGFA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iBAAO,WAAA,EACtB,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,gBAAA,CAAO,eAAA,EAAiB,KAAA,EAAO,KAAA,EAC7C,iBACH,CAAA,EACF,CAAA;AAAA,IAED,YAAY,OAAA,mBACXC,KAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iBAAO,cAAA,EACrB,QAAA,EAAA;AAAA,MAAA,QAAA,mBACCD,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAY,MAAA;AAAA,UACZ,WAAW,gBAAA,CAAO,aAAA;AAAA,UAClB,kBAAgB,aAAA,IAAA,IAAA,GAAA,aAAA,GAAiB;AAAA;AAAA,OACnC,GACE,IAAA;AAAA,MACH,0BACCA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,eAAA,EAAe,kBAAkB,MAAM,CAAA,CAAA;AAAA,UACvC,eAAA,EAAe,QAAA;AAAA,UACf,eAAA,EAAc,QAAA;AAAA,UACd,YAAA,EACE,YAAA,GACI,CAAA,EAAG,KAAK,yCACR,QAAA,IAAY,UAAA,GACV,CAAA,KAAA,EAAQ,KAAK,6BACb,QAAA,GACE,CAAA,KAAA,EAAQ,KAAK,CAAA,aAAA,CAAA,GACb,QAAQ,KAAK,CAAA,eAAA,CAAA;AAAA,UAEvB,WAAW,gBAAA,CAAO,UAAA;AAAA,UAClB,oBAAA,EAAoB,YAAA;AAAA,UACpB,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,CAAC,KAAA,KAAU,YAAA,CAAa,MAAM,aAAa,CAAA;AAAA,UAEnD,yCACCA,GAAAA,CAACuB,iBAAA,EAAgB,SAAA,EAAW,iBAAO,cAAA,EAAgB,IAAA,EAAM,QAAA,EAAU,CAAA,mBAEnEvB,GAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAW,iBAAO,WAAA,EAAa;AAAA;AAAA,OAE5D,GACE;AAAA,KAAA,EACN,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AAEA,IAAM,cAAA,GAAiB,UAAA,CAAW,SAAS+B,eAAAA,CACzC;AAAA,EACE,MAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAWA,GAAA,EACA;AACA,EAAA,uBACE9B,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAW,gBAAA,CAAO,UAAA;AAAA,MAClB,EAAA,EAAI,kBAAkB,MAAM,CAAA,CAAA;AAAA,MAC5B,IAAA,EAAK,QAAA;AAAA,MACL,QAAA,EAAU,EAAA;AAAA,MACV,YAAA,EAAY,GAAG,KAAK,CAAA,eAAA,CAAA;AAAA,MAEnB,QAAA,EAAA;AAAA,QAAA,QAAA,mBACCA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iBAAO,WAAA,EACtB,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,gBAAA,CAAO,WAAW,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,0BACvCA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,gBAAc,aAAA,KAAkB,WAAA;AAAA,cAChC,WAAW,gBAAA,CAAO,UAAA;AAAA,cAClB,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,MAAM,eAAA,CAAgB,WAAW,CAAA;AAAA,cAC3C,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACAA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,gBAAc,aAAA,KAAkB,YAAA;AAAA,cAChC,WAAW,gBAAA,CAAO,UAAA;AAAA,cAClB,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,MAAM,eAAA,CAAgB,YAAY,CAAA;AAAA,cAC5C,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACAA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,cAAA,EAAc,gBAAgB,KAAA,GAAQ,MAAA;AAAA,cACtC,WAAW,gBAAA,CAAO,UAAA;AAAA,cAClB,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,cACpC,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EACF,CAAA,GACE,IAAA;AAAA,QACH,6BACCC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,iBAAO,WAAA,EACtB,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,gBAAA,CAAO,WAAW,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,0BACzCA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAY,UAAU,KAAK,CAAA,CAAA;AAAA,cAC3B,WAAW,gBAAA,CAAO,WAAA;AAAA,cAClB,WAAA,EAAa,UAAU,KAAK,CAAA,CAAA;AAAA,cAC5B,KAAA,EAAO,MAAA;AAAA,cACP,UAAU,CAAC,KAAA,KAAU,cAAA,CAAe,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,cACtD,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,cAC1C,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,gBAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,QAAA,EAAU;AACnD,kBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,kBAAA,WAAA,EAAY;AAAA,gBACd;AAAA,cACF;AAAA;AAAA,WACF;AAAA,UACC,MAAA,mBACCA,GAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,gBAAA,CAAO,UAAA,EAAY,IAAA,EAAK,QAAA,EAAS,SAAS,MAAM,cAAA,CAAe,EAAE,CAAA,EAAG,0BAEvF,CAAA,GACE;AAAA,SAAA,EACN,CAAA,GACE;AAAA;AAAA;AAAA,GACN;AAEJ,CAAC,CAAA;;;ACvzBM,IAAM,eAAA,GAAmC;AAAA,EAC9C,EAAE,IAAI,UAAA,EAAY,KAAA,EAAO,YAAY,MAAA,EAAQ,CAAA,EAAG,MAAM,SAAA,EAAU;AAAA,EAChE,EAAE,IAAI,UAAA,EAAY,KAAA,EAAO,YAAY,MAAA,EAAQ,CAAA,EAAG,MAAM,SAAA,EAAU;AAAA,EAChE,EAAE,IAAI,SAAA,EAAW,KAAA,EAAO,WAAW,MAAA,EAAQ,CAAA,EAAG,MAAM,SAAA,EAAU;AAAA,EAC9D,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,QAAQ,CAAA,EAAG,IAAA,EAAM,SAAA,EAAW,aAAA,EAAe,QAAA,EAAS;AAAA,EACvF,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,QAAQ,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,aAAA,EAAe,QAAA,EAAS;AAAA,EACpF,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,QAAQ,CAAA,EAAG,IAAA,EAAM,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAS;AAAA,EAChF,EAAE,IAAI,QAAA,EAAU,KAAA,EAAO,UAAU,MAAA,EAAQ,CAAA,EAAG,MAAM,QAAA,EAAS;AAAA,EAC3D,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,OAAO,MAAA,EAAQ,CAAA,EAAG,MAAM,MAAA,EAAO;AAAA,EACnD,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,OAAO,MAAA,EAAQ,CAAA,EAAG,MAAM,MAAA;AAC9C,CAAA;AAEO,IAAM,eAAA,GAAmC;AAAA,EAC9C,EAAE,MAAA,EAAQ,UAAA,EAAY,MAAA,EAAQ,SAAA,EAAW,OAAO,EAAA,EAAG;AAAA,EACnD,EAAE,MAAA,EAAQ,UAAA,EAAY,MAAA,EAAQ,SAAA,EAAW,OAAO,EAAA,EAAG;AAAA,EACnD,EAAE,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,OAAO,EAAA,EAAG;AAAA,EAClD,EAAE,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAA,EAAG;AAAA,EACjD,EAAE,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,OAAA,EAAS,OAAO,EAAA,EAAG;AAAA,EAChD,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAA,EAAG;AAAA,EAChD,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,OAAO,EAAA,EAAG;AAAA,EAC7C,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,KAAA,EAAO,OAAO,EAAA;AAC3C,CAAA;AAEA,SAAS,SAAA,CAAU,IAAY,KAAA,EAAwB;AACrD,EAAA,MAAM,WAAW,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,KAAK,MAAA,KAAW,EAAE,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,OAAO,CAAC,CAAA;AACrG,EAAA,MAAM,WAAW,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,KAAK,MAAA,KAAW,EAAE,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,OAAO,CAAC,CAAA;AACrG,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAA;AACpC;AAEA,SAAS,oBAAA,CAAqB,QAAgB,SAAA,EAAgD;AAC5F,EAAA,IAAI,WAAW,CAAA,EAAG;AAChB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,WAAW,SAAA,EAAW;AACxB,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA,GAAS,SAAA,GAAY,CAAA,GAAI,MAAA,GAAS,OAAA;AAC3C;AAEA,SAAS,eACP,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,IACA,EAAA,EACA;AACA,EAAA,MAAM,SAAA,GAAY,GAAA;AAClB,EAAA,MAAM,EAAA,GAAA,CAAM,KAAK,EAAA,IAAM,SAAA;AAEvB,EAAA,OAAO;AAAA,IACL,CAAA,EAAA,EAAK,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,IACb,CAAA,EAAA,EAAK,EAAA,GAAK,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,EAAA,EAAK,EAAA,GAAK,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,EAAA,EAAK,EAAE,IAAI,EAAE,CAAA,CAAA;AAAA,IACjD,CAAA,EAAA,EAAK,EAAE,CAAA,CAAA,EAAI,EAAA,GAAK,EAAE,CAAA,CAAA;AAAA,IAClB,KAAK,EAAA,GAAK,EAAE,CAAA,CAAA,EAAI,EAAA,GAAK,EAAE,CAAA,EAAA,EAAK,EAAA,GAAK,EAAE,CAAA,CAAA,EAAI,KAAK,EAAE,CAAA,EAAA,EAAK,EAAE,CAAA,CAAA,EAAI,KAAK,EAAE,CAAA,CAAA;AAAA,IAChE;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AACZ;AAEO,SAAS,kBAAkB,KAAA,EAAe;AAC/C,EAAA,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA,CAAA;AAC9B;AAEO,SAAS,YAAA,CACd,QAAA,EACA,KAAA,EACA,KAAA,EACA,QACA,OAAA,EACgE;AA3GlE,EAAA,IAAAF,GAAAA,EAAAC,KAAAW,GAAAA,EAAAG,GAAAA;AA4GE,EAAA,MAAM,SAAA,GAAA,CAAYf,GAAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,SAAA,KAAT,OAAAA,GAAAA,GAAsB,CAAA;AACxC,EAAA,MAAM,WAAA,GAAA,CAAcC,GAAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,WAAA,KAAT,OAAAA,GAAAA,GAAwB,EAAA;AAC5C,EAAA,MAAM,IAAA,GAAA,CAAOW,GAAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,IAAA,KAAT,OAAAA,GAAAA,GAAiB,EAAA;AAC9B,EAAA,MAAM,IAAA,GAAA,CAAOG,GAAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,IAAA,KAAT,OAAAA,GAAAA,GAAiB,EAAA;AAE9B,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,GAAG,QAAA,CAAS,IAAI,CAAC,IAAA,KAAS,IAAA,CAAK,MAAM,CAAC,CAAA;AACjE,EAAA,MAAM,UAAU,KAAA,CAAM,IAAA;AAAA,IAAK,EAAE,MAAA,EAAQ,SAAA,GAAY,CAAA,EAAE;AAAA,IAAG,CAAC,CAAA,EAAG,MAAA,KACxD,QAAA,CACG,OAAO,CAAC,IAAA,KAAS,IAAA,CAAK,MAAA,KAAW,MAAM,CAAA,CACvC,GAAA,CAAI,CAAC,IAAA,KAAU,iCACX,IAAA,CAAA,EADW;AAAA,MAEd,KAAA,EAAO,SAAA,CAAU,IAAA,CAAK,EAAA,EAAI,KAAK;AAAA,KACjC,CAAE,CAAA,CACD,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM;AACd,MAAA,MAAM,QAAQ,QAAA,CAAS,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,EAAE,CAAA;AAC5C,MAAA,OAAO,KAAA,CAAM,QAAQ,CAAA,CAAE,EAAE,IAAI,KAAA,CAAM,OAAA,CAAQ,EAAE,EAAE,CAAA;AAAA,IACjD,CAAC;AAAA,GACL;AAEA,EAAA,MAAM,UAAA,GAAa,QAAQ,IAAA,GAAO,CAAA;AAClC,EAAA,MAAM,WAAA,GAAc,SAAS,IAAA,GAAO,CAAA;AACpC,EAAA,MAAM,UAAA,GAAa,SAAA,GAAY,CAAA,GAAI,UAAA,GAAa,SAAA,GAAY,UAAA;AAC5D,EAAA,MAAM,cAAc,IAAA,CAAK,GAAA,CAAI,GAAG,OAAA,CAAQ,GAAA,CAAI,CAAC,WAAA,KAAgB,WAAA,CAAY,OAAO,CAAC,GAAA,EAAK,SAAS,GAAA,GAAM,IAAA,CAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;AACvH,EAAA,MAAM,aAAa,WAAA,GAAc,WAAA;AAEjC,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAA8B;AAErD,EAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,WAAA,EAAa,MAAA,KAAW;AACvC,IAAA,MAAM,WAAA,GAAc,YAAY,MAAA,CAAO,CAAC,KAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA;AACzE,IAAA,MAAM,YAAA,GAAe,cAAc,UAAA,GAAa,WAAA,GAAc,KAAK,GAAA,CAAI,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG,CAAC,CAAA;AAChG,IAAA,IAAI,CAAA,GAAI,IAAA,GAAA,CAAQ,WAAA,GAAc,YAAA,IAAgB,CAAA;AAE9C,IAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,IAAA,KAAS;AA5IlC,MAAA,IAAAf,GAAAA;AA6IM,MAAA,MAAM,UAAA,GAAa,KAAK,KAAA,GAAQ,UAAA;AAChC,MAAA,MAAM,CAAA,GAAI,IAAA,GAAO,MAAA,GAAS,UAAA,GAAa,SAAA,GAAY,CAAA;AAEnD,MAAA,UAAA,CAAW,GAAA,CAAI,KAAK,EAAA,EAAI;AAAA,QACtB,IAAI,IAAA,CAAK,EAAA;AAAA,QACT,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,MAAA;AAAA,QACA,CAAA;AAAA,QACA,CAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,UAAU,CAAA;AAAA,QAC9B,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,aAAA,EAAA,CAAeA,MAAA,IAAA,CAAK,aAAA,KAAL,OAAAA,GAAAA,GAAsB,oBAAA,CAAqB,QAAQ,SAAS;AAAA,OAC5E,CAAA;AAED,MAAA,CAAA,IAAK,UAAA,GAAa,WAAA;AAAA,IACpB,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAoB;AAC9C,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAoB;AAE9C,EAAA,MAAM,WAAA,GAAc,CAAC,GAAG,KAAK,EAAE,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM;AApKhD,IAAA,IAAAA,GAAAA,EAAAC,KAAAW,GAAAA,EAAAG,GAAAA;AAqKI,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,GAAA,CAAI,CAAA,CAAE,MAAM,CAAA;AACvC,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,GAAA,CAAI,CAAA,CAAE,MAAM,CAAA;AACvC,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,GAAA,CAAI,CAAA,CAAE,MAAM,CAAA;AACvC,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,GAAA,CAAI,CAAA,CAAE,MAAM,CAAA;AACvC,IAAA,OAAA,CAAA,CAAQf,GAAAA,GAAA,mCAAS,CAAA,KAAT,IAAA,GAAAA,MAAc,CAAA,KAAA,CAAMC,GAAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,CAAA,KAAT,IAAA,GAAAA,GAAAA,GAAc,QAAOW,GAAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,MAAT,IAAA,GAAAA,GAAAA,GAAc,OAAMG,GAAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,CAAA,KAAT,IAAA,GAAAA,GAAAA,GAAc,CAAA,CAAA;AAAA,EACrF,CAAC,CAAA;AAED,EAAA,MAAM,WAAA,GAAkC,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,KAAS;AA5KpE,IAAA,IAAAf,GAAAA,EAAAC,KAAAW,GAAAA,EAAAG,GAAAA;AA6KI,IAAA,MAAM,MAAA,GAAS,UAAA,CAAW,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA;AACzC,IAAA,MAAM,MAAA,GAAS,UAAA,CAAW,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA;AACzC,IAAA,MAAM,cAAc,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,WAAW,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,MAAM,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA,IAAK,CAAA;AACtH,IAAA,MAAM,cAAc,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,WAAW,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,MAAM,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA,IAAK,CAAA;AAEtH,IAAA,MAAM,EAAA,GAAM,IAAA,CAAK,KAAA,GAAQ,WAAA,GAAe,MAAA,CAAO,MAAA;AAC/C,IAAA,MAAM,EAAA,GAAM,IAAA,CAAK,KAAA,GAAQ,WAAA,GAAe,MAAA,CAAO,MAAA;AAC/C,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,IAAA,CAAKf,GAAAA,GAAA,aAAA,CAAc,IAAI,IAAA,CAAK,MAAM,CAAA,KAA7B,IAAA,GAAAA,GAAAA,GAAkC,CAAA,CAAA;AACzD,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,IAAA,CAAKC,GAAAA,GAAA,aAAA,CAAc,IAAI,IAAA,CAAK,MAAM,CAAA,KAA7B,IAAA,GAAAA,GAAAA,GAAkC,CAAA,CAAA;AAEzD,IAAA,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,MAAA,EAAA,CAAA,CAASW,GAAAA,GAAA,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA,KAA7B,IAAA,GAAAA,GAAAA,GAAkC,CAAA,IAAK,EAAE,CAAA;AACzE,IAAA,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,MAAA,EAAA,CAAA,CAASG,GAAAA,GAAA,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA,KAA7B,IAAA,GAAAA,GAAAA,GAAkC,CAAA,IAAK,EAAE,CAAA;AAEzE,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,cAAA,CAAe,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,KAAA,EAAO,EAAA,EAAI,EAAA,EAAI,MAAA,CAAO,CAAA,EAAG,EAAA,EAAI,EAAE,CAAA;AAAA,MACtE,YAAY,MAAA,CAAO,IAAA;AAAA,MACnB,YAAY,MAAA,CAAO,IAAA;AAAA,MACnB,OAAO,IAAA,CAAK;AAAA,KACd;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,EAAE,OAAO,CAAC,GAAG,WAAW,MAAA,EAAQ,GAAG,WAAA,EAAY;AACxD;;;AC9LA,IAAM,UAAA,GAAa,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AACtG,IAAM,WAAA,GAAc,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AAExE,IAAM,aAAA,GAA8B;AAAA,EACzC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,IAAI,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA,EAAG;AAAA,EAC9D,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,IAAI,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA,EAAG;AAAA,EAC9D,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,IAAI,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA,EAAG;AAAA,EAC9D,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,IAAI,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA,EAAG;AAAA,EAC9D,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,IAAI,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA,EAAG;AAAA,EAC9D,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,IAAI,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA;AAC7D,CAAA;AAgCA,SAAS,YAAA,CAAa,MAAA,EAAgB,MAAA,EAAgB,KAAA,EAAe,QAAQ,CAAA,EAAiB;AAC5F,EAAA,OAAO,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,OAAM,EAAG,CAAC,GAAG,KAAA,MAAW;AAAA,IAClD,KAAA,EAAO,CAAA,EAAG,MAAM,CAAA,EAAG,QAAQ,CAAC,CAAA,CAAA;AAAA,IAC5B,KAAA,EAAO,IAAK,KAAA,GAAQ,CAAA;AAAA,IACpB,MAAA;AAAA,IACA;AAAA,GACF,CAAE,CAAA;AACJ;AAEoD;AAAA,EAClD,EAAE,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO,EAAA,EAAI,OAAO,GAAA,EAAI;AAAA,EACpC,EAAE,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO,EAAA,EAAI,OAAO,GAAA,EAAI;AAAA,EACpC,EAAE,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO,EAAA,EAAI,OAAO,GAAA,EAAI;AAAA,EACpC,EAAE,OAAO,GAAA,EAAK,KAAA,EAAO,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,EACjD,EAAE,OAAO,GAAA,EAAK,KAAA,EAAO,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,EACjD,EAAE,OAAO,GAAA,EAAK,KAAA,EAAO,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,EACjD,GAAG,YAAA,CAAa,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AAAA,EAC7B,GAAG,YAAA,CAAa,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AAAA,EAC7B,GAAG,YAAA,CAAa,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AAAA,EAC7B,EAAE,OAAO,GAAA,EAAK,KAAA,EAAO,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,EACjD,EAAE,OAAO,GAAA,EAAK,KAAA,EAAO,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,EACjD,EAAE,OAAO,GAAA,EAAK,KAAA,EAAO,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,EACjD,GAAG,YAAA,CAAa,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AAAA,EAC7B,GAAG,YAAA,CAAa,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AAAA,EAC7B,GAAG,YAAA,CAAa,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AAAA,EAC7B,EAAE,OAAO,GAAA,EAAK,KAAA,EAAO,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,EACjD,EAAE,OAAO,GAAA,EAAK,KAAA,EAAO,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,GAAA;AAC/C;AAa6C,eAAA,CAAgB,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,EAC1E,OAAO,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA,MAAA,EAAI,KAAK,MAAM,CAAA,CAAA;AAAA,EACpC,OAAO,IAAA,CAAK,KAAA;AAAA,EACZ,OAAO,IAAA,CAAK,MAAA;AAAA,EACZ,QAAQ,IAAA,CAAK;AACf,CAAA,CAAE;AAmFoD,MAAM,IAAA,CAAK,EAAE,QAAQ,EAAA,EAAG,EAAG,CAAC,CAAA,EAAG,KAAA,KAAU;AAC7F,EAAA,MAAM,QAAQ,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,KAAK,CAAA,CAAE,QAAQ,EAAE,CAAA;AAC7G,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,EAAE,CAAA,GAAI,CAAA;AACtC,EAAA,MAAM,OAAO,EAAA,GAAM,KAAA,GAAQ,CAAA,GAAK,CAAA,GAAK,QAAQ,CAAA,GAAK,CAAA;AAElD,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA;AAAA,IACxB,KAAA,EAAO,IAAA,GAAQ,KAAA,GAAQ,EAAA,GAAM;AAAA,GAC/B;AACF,CAAC;AAEwD,MAAM,IAAA,CAAK,EAAE,QAAQ,EAAA,EAAG,EAAG,CAAC,CAAA,EAAG,KAAA,KAAU;AAChG,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,KAAA,GAAQ,EAAE,CAAA;AACnC,EAAA,MAAM,IAAA,GAAO,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,QAAQ,EAAE,CAAA;AACvC,EAAA,MAAM,IAAA,GAAO,WAAA,CAAY,KAAA,GAAQ,EAAE,CAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,CAAM,KAAA,GAAQ,EAAE,CAAA,GAAI,EAAA,GAAM,QAAQ,CAAA,GAAK,CAAA;AAE1D,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AAAA,IACvB,OAAO,IAAA,GAAO;AAAA,GAChB;AACF,CAAC;AAEM,IAAM,eAAA,GAAiC;AAAA,EAC5C,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAE;AAAA,EAClE,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAE;AAAA,EAC5D,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AAClE,CAAA;;;ACzMO,IAAM,eAAA,GAAkB,EAAE,KAAA,EAAO,GAAA,EAAM,QAAQ,GAAA,EAAI;AAQnD,IAAM,cAAA,GAA2B,CAAC,mNAAA,EAAoN,wKAAA,EAAyK,mVAAA,EAAoV,mJAAA,EAAoJ,mHAAA,EAAoH,mNAAA,EAAoN,mZAAA,EAAoZ,unRAAA,EAAwnR,mXAAA,EAAoX,mKAAA,EAAoK,mJAAA,EAAoJ,mRAAA,EAAoR,meAAA,EAAoe,mkBAAA,EAAokB,mNAAA,EAAoN,mJAAA,EAAoJ,yJAAA,EAA0J,mFAAA,EAAoF,mHAAA,EAAoH,mxBAAA,EAAoxB,mgHAAA,EAAogH,mGAAA,EAAoG,mHAAA,EAAoH,mIAAA,EAAoI,mHAAA,EAAoH,mPAAA,EAAoP,mKAAA,EAAoK,mJAAA,EAAoJ,mJAAA,EAAoJ,mHAAA,EAAoH,mXAAA,EAAoX,mHAAA,EAAoH,mLAAA,EAAoL,mWAAA,EAAoW,mGAAA,EAAoG,mJAAA,EAAoJ,mOAAA,EAAoO,mjCAAA,EAAojC,mtBAAA,EAAotB,mNAAA,EAAoN,mjBAAA,EAAojB,muBAAA,EAAouB,mbAAA,EAAob,mKAAA,EAAoK,mIAAA,EAAoI,mMAAA,EAAoM,mJAAA,EAAoJ,mJAAA,EAAoJ,mOAAA,EAAoO,mGAAA,EAAoG,mhBAAA,EAAohB,mJAAA,EAAoJ,mLAAA,EAAoL,mkBAAA,EAAokB,mKAAA,EAAoK,kQAAA,EAAmQ,0IAAA,EAA2I,8EAAA,EAA+E,4IAA2I,4GAAA,EAA6G,mqBAAA,EAAoqB,mIAAA,EAAoI,mJAAA,EAAoJ,mGAAA,EAAoG,mHAAA,EAAoH,mMAAA,EAAoM,mMAAA,EAAoM,mLAAA,EAAoL,mLAAA,EAAoL,mKAAA,EAAoK,mlBAAA,EAAolB,mHAAA,EAAoH,mQAAA,EAAoQ,mJAAA,EAAoJ,mIAAA,EAAoI,mQAAA,EAAoQ,mhBAAA,EAAohB,+KAAA,EAAgL,iWAAA,EAAkW,+LAAA,EAAgM,6FAAA,EAA8F,iIAAA,EAAkI,8qBAAA,EAA+qB,qGAAA,EAAsG,2HAAA,EAA4H,4GAAA,EAA6G,2KAAA,EAA4K,+SAAA,EAAgT,+SAAA,EAAgT,0IAAA,EAA2I,ywoBAAA,EAA0woB,q0BAAo0B,wKAAA,EAAyK,2EAAA,EAA4E,2GAAA,EAA4G,gucAAA,EAAiuc,sqBAAA,EAAuqB,6FAAA,EAA8F,wKAAA,EAAyK,0kCAAA,EAA2kC,oOAAA,EAAqO,2HAAA,EAA4H,wKAAA,EAAyK,kQAAA,EAAmQ,4GAAA,EAA6G,2HAAA,EAA4H,0IAAA,EAA2I,sMAAA,EAAuM,6UAAA,EAA8U,yYAAA,EAA0Y,uaAAA,EAAwa,wKAAA,EAAyK,4GAAA,EAA6G,4GAAA,EAA6G,2HAAA,EAA4H,4GAAA,EAA6G,0IAAA,EAA2I,wKAAA,EAAyK,4GAAA,EAA6G,iRAAA,EAAkR,uLAAA,EAAwL,oOAAA,EAAqO,wKAAA,EAAyK,8TAAA,EAA+T,o9BAAm9B,+7DAA+7D,CAAA;AAEp59E,IAAM,eAAA,GAAoC;AAAA,EAC/C;AAAA,IACE,IAAA,EAAM,eAAA;AAAA,IACN,OAAA,EAAS,eAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,8mIAAA;AAAA,MACA,4GAAA;AAAA,MACA,wKAAA;AAAA,MACA,2HAAA;AAAA,MACA,2HAAA;AAAA,MACA,4GAAA;AAAA,MACA,0IAAA;AAAA,MACA,uaAAA;AAAA,MACA,4GAAA;AAAA,MACA,4GAAA;AAAA,MACA,mhBAAA;AAAA,MACA,+SAAA;AAAA,MACA,0kCAAA;AAAA,MACA,wKAAA;AAAA,MACA,wKAAA;AAAA,MACA,+KAAA;AAAA,MACA,wKAAA;AAAA,MACA,mQAAA;AAAA,MACA,kQAAA;AAAA,MACA,6UAAA;AAAA,MACA,sqBAAA;AAAA,MACA,oOAAA;AAAA,MACA,6FAAA;AAAA,MACA,sMAAA;AAAA,MACA,8TAAA;AAAA,MACA,k9BAAA;AAAA,MACA,0IAAA;AAAA,MACA,wKAAA;AAAA,MACA,mIAAA;AAAA,MACA,mJAAA;AAAA,MACA,mpHAAA;AAAA,MACA,kQAAA;AAAA,MACA,0IAAA;AAAA,MACA,8EAAA;AAAA,MACA,0IAAA;AAAA,MACA,4GAAA;AAAA,MACA,qGAAA;AAAA,MACA,iIAAA;AAAA,MACA,q4DAAA;AAAA,MACA,2KAAA;AAAA,MACA,mVAAA;AAAA,MACA,maAAA;AAAA,MACA,mGAAA;AAAA,MACA,mHAAA;AAAA,MACA,mIAAA;AAAA,MACA,+7DAAA;AAAA,MACA,mqFAAA;AAAA,MACA,m0BAAA;AAAA,MACA,mkBAAA;AAAA,MACA,m0BAAA;AAAA,MACA,m5BAAA;AAAA,MACA,mUAAA;AAAA,MACA,mjBAAA;AAAA,MACA,mUAAA;AAAA,MACA,m8CAAA;AAAA,MACA,mJAAA;AAAA,MACA,mLAAA;AAAA,MACA,mqBAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,eAAA;AAAA,IACN,OAAA,EAAS,eAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,mLAAA;AAAA,MACA,muDAAA;AAAA,MACA,mUAAA;AAAA,MACA,m9CAAA;AAAA,MACA,mKAAA;AAAA,MACA,mVAAA;AAAA,MACA,mrGAAA;AAAA,MACA,m8BAAA;AAAA,MACA,msCAAA;AAAA,MACA,mkDAAA;AAAA,MACA,moBAAA;AAAA,MACA,maAAA;AAAA,MACA,mTAAA;AAAA,MACA,mwBAAA;AAAA,MACA,mHAAA;AAAA,MACA,mhBAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS,QAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,iRAAA;AAAA,MACA,ivBAAA;AAAA,MACA,uLAAA;AAAA,MACA,2HAAA;AAAA,MACA,2lBAAA;AAAA,MACA,qrBAAA;AAAA,MACA,m9CAAA;AAAA,MACA,0sBAAA;AAAA,MACA,mlBAAA;AAAA,MACA,mfAAA;AAAA,MACA,mbAAA;AAAA,MACA,msBAAA;AAAA,MACA,kSAAA;AAAA,MACA,6UAAA;AAAA,MACA,kQAAA;AAAA,MACA,w5BAAA;AAAA,MACA,mcAAA;AAAA,MACA,m1BAAA;AAAA,MACA,mOAAA;AAAA,MACA,mWAAA;AAAA,MACA,mqBAAA;AAAA,MACA,mYAAA;AAAA,MACA,mHAAA;AAAA,MACA,mPAAA;AAAA,MACA,mOAAA;AAAA,MACA,mhBAAA;AAAA,MACA,mzBAAA;AAAA,MACA,8MAAA;AAAA,MACA,miCAAA;AAAA,MACA,mLAAA;AAAA,MACA,mKAAA;AAAA,MACA,iRAAA;AAAA,MACA,6FAAA;AAAA,MACA,6HAAA;AAAA,MACA,6uBAAA;AAAA,MACA,+SAAA;AAAA,MACA,mSAAA;AAAA,MACA,6jBAAA;AAAA,MACA,mhBAAA;AAAA,MACA,mjBAAA;AAAA,MACA,mWAAA;AAAA,MACA,mRAAA;AAAA,MACA,muBAAA;AAAA,MACA,mSAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS,QAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,mxBAAA;AAAA,MACA,mcAAA;AAAA,MACA,m6DAAA;AAAA,MACA,mlBAAA;AAAA,MACA,mxCAAA;AAAA,MACA,m6BAAA;AAAA,MACA,myCAAA;AAAA,MACA,mMAAA;AAAA,MACA,mMAAA;AAAA,MACA,mlBAAA;AAAA,MACA,moBAAA;AAAA,MACA,msBAAA;AAAA,MACA,msBAAA;AAAA,MACA,msCAAA;AAAA,MACA,mnBAAA;AAAA,MACA,mZAAA;AAAA,MACA,m6BAAA;AAAA,MACA,m6BAAA;AAAA,MACA,m9BAAA;AAAA,MACA,mTAAA;AAAA,MACA,mZAAA;AAAA,MACA,muBAAA;AAAA,MACA,mmCAAA;AAAA,MACA,mTAAA;AAAA,MACA,mbAAA;AAAA,MACA,mWAAA;AAAA,MACA,mnBAAA;AAAA,MACA,m+BAAA;AAAA,MACA,mxBAAA;AAAA,MACA,mfAAA;AAAA,MACA,mHAAA;AAAA,MACA,m9BAAA;AAAA,MACA,mcAAA;AAAA,MACA,mtCAAA;AAAA,MACA,mLAAA;AAAA,MACA,mJAAA;AAAA,MACA,miCAAA;AAAA,MACA,mNAAA;AAAA,MACA,mYAAA;AAAA,MACA,mLAAA;AAAA,MACA,mxBAAA;AAAA,MACA,mJAAA;AAAA,MACA,mQAAA;AAAA,MACA,mfAAA;AAAA,MACA,m+BAAA;AAAA,MACA,mTAAA;AAAA,MACA,mbAAA;AAAA,MACA,mLAAA;AAAA,MACA,mrBAAA;AAAA,MACA,mcAAA;AAAA,MACA,mQAAA;AAAA,MACA,mPAAA;AAAA,MACA,m/BAAA;AAAA,MACA,mrBAAA;AAAA,MACA,m4BAAA;AAAA,MACA,m7BAAA;AAAA,MACA,mbAAA;AAAA,MACA,mNAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,wvDAAA;AAAA,MACA,m2BAAA;AAAA,MACA,mkBAAA;AAAA,MACA,wKAAA;AAAA,MACA,4GAAA;AAAA,MACA,0IAAA;AAAA,MACA,4GAAA;AAAA,MACA,2HAAA;AAAA,MACA,oOAAA;AAAA,MACA,0IAAA;AAAA,MACA,yYAAA;AAAA,MACA,iWAAA;AAAA,MACA,ugOAAA;AAAA,MACA,yIAAA;AAAA,MACA,mSAAA;AAAA,MACA,mWAAA;AAAA,MACA,mJAAA;AAAA,MACA,mJAAA;AAAA,MACA,meAAA;AAAA,MACA,mpBAAA;AAAA,MACA,mGAAA;AAAA,MACA,mRAAA;AAAA,MACA,mgCAAA;AAAA,MACA,mlBAAA;AAAA,MACA,mmCAAA;AAAA,MACA,msBAAA;AAAA,MACA,mEAAA;AAAA,MACA,mrBAAA;AAAA,MACA,mTAAA;AAAA,MACA,mrCAAA;AAAA,MACA,moEAAA;AAAA,MACA,mkBAAA;AAAA,MACA,mNAAA;AAAA,MACA,mXAAA;AAAA,MACA,miCAAA;AAAA,MACA,mlCAAA;AAAA,MACA,mpBAAA;AAAA,MACA,mjBAAA;AAAA,MACA,m2BAAA;AAAA,MACA,mrCAAA;AAAA,MACA,mUAAA;AAAA,MACA,mKAAA;AAAA,MACA,mKAAA;AAAA,MACA,mmHAAA;AAAA,MACA,mjBAAA;AAAA,MACA,mJAAA;AAAA,MACA,mYAAA;AAAA,MACA,mlBAAA;AAAA,MACA,mQAAA;AAAA,MACA,mMAAA;AAAA,MACA,msBAAA;AAAA,MACA,msCAAA;AAAA,MACA,mPAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,mJAAA;AAAA,MACA,0KAAA;AAAA,MACA,miBAAA;AAAA,MACA,mOAAA;AAAA,MACA,mWAAA;AAAA,MACA,mLAAA;AAAA,MACA,mmBAAA;AAAA,MACA,mJAAA;AAAA,MACA,mHAAA;AAAA,MACA,mnBAAA;AAAA,MACA,mJAAA;AAAA,MACA,mGAAA;AAAA,MACA,mNAAA;AAAA,MACA,mtBAAA;AAAA,MACA,mHAAA;AAAA,MACA,mJAAA;AAAA,MACA,mKAAA;AAAA,MACA,mXAAA;AAAA,MACA,mjBAAA;AAAA,MACA,mLAAA;AAAA,MACA,mFAAA;AAAA,MACA,mHAAA;AAAA,MACA,mNAAA;AAAA,MACA,mGAAA;AAAA,MACA,mHAAA;AAAA,MACA,mIAAA;AAAA,MACA,mJAAA;AAAA,MACA,mHAAA;AAAA,MACA,mkBAAA;AAAA,MACA,meAAA;AAAA,MACA,mRAAA;AAAA,MACA,mgHAAA;AAAA,MACA,mJAAA;AAAA,MACA,mGAAA;AAAA,MACA,mMAAA;AAAA,MACA,mbAAA;AAAA,MACA,mJAAA;AAAA,MACA,mhBAAA;AAAA,MACA,mJAAA;AAAA,MACA,mOAAA;AAAA,MACA,mZAAA;AAAA,MACA,mlBAAA;AAAA,MACA;AAAA;AACF;AAEJ,CAAA;AAEO,IAAM,iBAAA,GAA8D;AAAA,EACzE,SAAA,EAAW;AAAA,IACT,GAAA,EAAK,iBAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK,iBAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,GAAA,EAAK,iBAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK,iBAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,GAAA,EAAK,iBAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK,iBAAA;AAAA,IACL,GAAA,EAAK;AAAA;AAET,CAAA;AAEiC,eAAA,CAAgB,GAAA,CAAI,CAAC,MAAA,KAAW,OAAO,EAAE;AAEnE,SAAS,aAAA,CAAc,KAAa,GAAA,EAAa;AACtD,EAAA,OAAO;AAAA,IACL,CAAA,EAAA,CAAK,GAAA,GAAM,GAAA,IAAO,GAAA,GAAO,eAAA,CAAgB,KAAA;AAAA,IACzC,CAAA,EAAA,CAAK,EAAA,GAAK,GAAA,IAAO,GAAA,GAAO,eAAA,CAAgB;AAAA,GAC1C;AACF;AAEO,SAAS,kBAAkB,KAAA,EAAe;AAC/C,EAAA,OAAO,MAAM,IAAA,EAAK,CAAE,aAAY,CAAE,OAAA,CAAQ,QAAQ,GAAG,CAAA;AACvD;AAEO,SAAS,kBAAkB,IAAA,EAK/B;AACD,EAAA,MAAM,GAAA,GAAM,CAAA;AACZ,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,WAAW,GAAA,GAAM,CAAA;AACtD,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,MAAM,GAAA,GAAM,CAAA;AAC9C,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,MAAA,GAAS,gBAAgB,KAAA,EAAO,MAAA,GAAS,gBAAgB,MAAM,CAAA;AACtF,EAAA,MAAM,IAAI,IAAA,CAAK,QAAA,GAAW,OAAO,MAAA,GAAS,eAAA,CAAgB,QAAQ,KAAA,IAAS,CAAA;AAC3E,EAAA,MAAM,IAAI,IAAA,CAAK,GAAA,GAAM,OAAO,MAAA,GAAS,eAAA,CAAgB,SAAS,KAAA,IAAS,CAAA;AACvE,EAAA,OAAO,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,EAAE;AACvB;AAEO,SAAS,kBAAkB,QAAA,EAAkB;AA9XpD,EAAA,IAAAf,GAAAA;AA+XE,EAAA,MAAM,GAAA,GAAM,kBAAkB,QAAQ,CAAA;AACtC,EAAA,OAAA,CAAOA,GAAAA,GAAA,iBAAA,CAAkB,GAAG,CAAA,KAArB,OAAAA,GAAAA,GAA0B,IAAA;AACnC;AAOO,SAAS,gBAAgB,IAAA,EAA0C;AAxY1E,EAAA,IAAAA,GAAAA;AAyYE,EAAA,OAAA,CAAOA,MAAA,IAAA,CAAK,MAAA,KAAL,OAAAA,GAAAA,GAAe,iBAAA,CAAkB,KAAK,KAAK,CAAA;AACpD;;;AC5WA,SAAS,YAAA,CACP,CAAA,EACA,CAAA,EACA,MAAA,EACA,OAAA,EACiC;AACjC,EAAA,MAAM,EAAA,GAAK,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,CAAA;AACnB,EAAA,MAAM,EAAA,GAAK,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,CAAA;AACnB,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,EAAA,EAAI,EAAE,CAAA;AAElC,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,MAAM,OAAA,GAAU,CAAA,CAAE,CAAA,GAAI,MAAA,GAAS,OAAA;AAC/B,EAAA,MAAM,OAAA,GAAU,CAAA,CAAE,CAAA,GAAI,MAAA,GAAS,OAAA;AAE/B,EAAA,IAAI,QAAA,GAAW,UAAU,OAAA,EAAS;AAChC,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,MAAM,KAAK,OAAA,GAAU,OAAA;AACrB,EAAA,MAAM,KAAK,OAAA,GAAU,OAAA;AACrB,EAAA,MAAM,KAAK,QAAA,GAAW,QAAA;AACtB,EAAA,MAAM,CAAA,GAAA,CAAK,EAAA,GAAK,EAAA,GAAK,EAAA,KAAO,CAAA,GAAI,QAAA,CAAA;AAChC,EAAA,MAAM,CAAA,GAAI,KAAK,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG,EAAA,GAAK,CAAA,GAAI,CAAC,CAAC,CAAA;AAC3C,EAAA,MAAM,EAAA,GAAK,CAAA,CAAE,CAAA,GAAK,EAAA,GAAK,CAAA,GAAK,QAAA;AAC5B,EAAA,MAAM,EAAA,GAAK,CAAA,CAAE,CAAA,GAAK,EAAA,GAAK,CAAA,GAAK,QAAA;AAC5B,EAAA,MAAM,EAAA,GAAM,CAAC,EAAA,GAAK,CAAA,GAAK,QAAA;AACvB,EAAA,MAAM,EAAA,GAAM,KAAK,CAAA,GAAK,QAAA;AAEtB,EAAA,OAAO;AAAA,IACL,EAAE,CAAA,EAAG,EAAA,GAAK,EAAA,EAAI,CAAA,EAAG,KAAK,EAAA,EAAG;AAAA,IACzB,EAAE,CAAA,EAAG,EAAA,GAAK,EAAA,EAAI,CAAA,EAAG,KAAK,EAAA;AAAG,GAC3B;AACF;AAEA,SAAS,YAAA,CACP,SAAA,EACA,MAAA,EACA,MAAA,EACA,OAAA,EACA;AACA,EAAA,KAAA,MAAW,UAAU,MAAA,EAAQ;AAC3B,IAAA,MAAM,WAAA,GAAc,MAAA,GAAS,MAAA,CAAO,CAAA,GAAI,OAAA;AACxC,IAAA,MAAM,EAAA,GAAK,SAAA,CAAU,CAAA,GAAI,MAAA,CAAO,CAAA;AAChC,IAAA,MAAM,EAAA,GAAK,SAAA,CAAU,CAAA,GAAI,MAAA,CAAO,CAAA;AAChC,IAAA,IAAI,cAAc,WAAA,GAAc,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,KAAK,IAAA,EAAM;AACxD,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,gBAAgB,OAAA,EAAqD;AAC5E,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAA,EAAG,MAAA,CAAO,CAAC,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,gBAAA,CAAiB,OAAA,EAA2B,KAAA,EAAe,MAAA,EAAgB,OAAA,EAAiB;AACnG,EAAA,IAAI,IAAA,GAAO,QAAA;AACX,EAAA,IAAI,IAAA,GAAO,QAAA;AACX,EAAA,IAAI,IAAA,GAAO,CAAA,QAAA;AACX,EAAA,IAAI,IAAA,GAAO,CAAA,QAAA;AAEX,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,IAAA,GAAO,KAAK,GAAA,CAAI,IAAA,EAAM,MAAA,CAAO,CAAA,GAAI,OAAO,CAAC,CAAA;AACzC,IAAA,IAAA,GAAO,KAAK,GAAA,CAAI,IAAA,EAAM,MAAA,CAAO,CAAA,GAAI,OAAO,CAAC,CAAA;AACzC,IAAA,IAAA,GAAO,KAAK,GAAA,CAAI,IAAA,EAAM,MAAA,CAAO,CAAA,GAAI,OAAO,CAAC,CAAA;AACzC,IAAA,IAAA,GAAO,KAAK,GAAA,CAAI,IAAA,EAAM,MAAA,CAAO,CAAA,GAAI,OAAO,CAAC,CAAA;AAAA,EAC3C;AAEA,EAAA,MAAM,WAAA,GAAc,IAAA,GAAO,IAAA,GAAO,OAAA,GAAU,CAAA;AAC5C,EAAA,MAAM,YAAA,GAAe,IAAA,GAAO,IAAA,GAAO,OAAA,GAAU,CAAA;AAC7C,EAAA,MAAM,QAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,GAAQ,WAAA,EAAa,SAAS,YAAY,CAAA;AACjE,EAAA,MAAM,WAAW,KAAA,GAAQ,WAAA,GAAc,KAAA,IAAS,CAAA,GAAA,CAAK,OAAO,OAAA,IAAW,KAAA;AACvE,EAAA,MAAM,WAAW,MAAA,GAAS,YAAA,GAAe,KAAA,IAAS,CAAA,GAAA,CAAK,OAAO,OAAA,IAAW,KAAA;AAEzE,EAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAY,iCAC3B,MAAA,CAAA,EAD2B;AAAA,IAE9B,CAAA,EAAG,MAAA,CAAO,CAAA,GAAI,KAAA,GAAQ,OAAA;AAAA,IACtB,CAAA,EAAG,MAAA,CAAO,CAAA,GAAI,KAAA,GAAQ,OAAA;AAAA,IACtB,CAAA,EAAG,OAAO,CAAA,GAAI;AAAA,GAChB,CAAE,CAAA;AACJ;AAEA,SAAS,eAAA,CACP,KAAA,EACA,KAAA,EACA,MAAA,EACA,OAAA,EACkB;AA7HpB,EAAA,IAAAA,GAAAA,EAAAC,GAAAA;AA8HE,EAAA,IAAI,CAAC,KAAA,CAAM,MAAA,IAAU,KAAA,IAAS,CAAA,IAAK,UAAU,CAAA,EAAG;AAC9C,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,MAAMiC,SAAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,KAAK,CAAC,CAAA;AAC/D,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAElC,EAAA,MAAM,UAAU,KAAA,CACb,GAAA,CAAI,CAAC,IAAA,KAAU,iCACX,IAAA,CAAA,EADW;AAAA,IAEd,YAAY,IAAA,CAAK,KAAA;AAAA,IACjB,KAAA,EAAO,CAAA;AAAA,IACP,QAAA,EAAU,KAAA;AAAA,IACV,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQA,SAAQ,CAAA,GAAI,GAAA,GAAM,IAAI,CAAA;AAAA,IAC7D,CAAA,EAAG,CAAA;AAAA,IACH,CAAA,EAAG;AAAA,GACL,CAAE,EACD,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA;AAE3B,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,OAAO,gBAAA,CAAiB,CAAC,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,OAAA,CAAQ,CAAC,CAAA,CAAA,EAAd,EAAiB,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAE,CAAC,CAAA,EAAG,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,EACjF;AAEA,EAAA,OAAA,CAAQ,CAAC,EAAE,CAAA,GAAI,CAAA;AACf,EAAA,OAAA,CAAQ,CAAC,EAAE,CAAA,GAAI,CAAA;AACf,EAAA,OAAA,CAAQ,CAAC,CAAA,CAAE,CAAA,GAAI,OAAA,CAAQ,CAAC,EAAE,CAAA,GAAI,OAAA,CAAQ,CAAC,CAAA,CAAE,CAAA,GAAI,OAAA;AAC7C,EAAA,OAAA,CAAQ,CAAC,EAAE,CAAA,GAAI,CAAA;AAEf,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,OAAA,CAAQ,QAAQ,KAAA,EAAA,EAAS;AACnD,IAAA,MAAM,MAAA,GAAS,QAAQ,KAAK,CAAA;AAC5B,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA;AACrC,IAAA,IAAI,IAAA,GAAsD,IAAA;AAE1D,IAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,KAAA,EAAO,IAAA,EAAA,EAAQ;AACvC,MAAA,KAAA,IAAS,KAAA,GAAQ,IAAA,GAAO,CAAA,EAAG,KAAA,GAAQ,OAAO,KAAA,EAAA,EAAS;AACjD,QAAA,KAAA,MAAW,QAAA,IAAY,YAAA,CAAa,MAAA,CAAO,IAAI,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,EAAG,MAAA,CAAO,CAAA,EAAG,OAAO,CAAA,EAAG;AACnF,UAAA,IAAI,CAAC,YAAA,CAAa,QAAA,EAAU,OAAO,CAAA,EAAG,MAAA,EAAQ,OAAO,CAAA,EAAG;AACtD,YAAA,MAAM,OAAO,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,CAAA,EAAG,SAAS,CAAC,CAAA;AAC9C,YAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,GAAO,IAAA,CAAK,IAAA,EAAM;AAC7B,cAAA,IAAA,GAAO,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,QAAA,CAAA,EAAL,EAAe,IAAA,EAAK,CAAA;AAAA,YAC7B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,KAAA,MAAW,UAAU,MAAA,EAAQ;AAC3B,QAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,CAAA,GAAI,OAAA;AACpC,QAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,EAAA,EAAI,IAAA,EAAA,EAAQ;AACpC,UAAA,MAAM,KAAA,GAAS,IAAA,GAAO,EAAA,GAAM,IAAA,CAAK,EAAA,GAAK,CAAA;AACtC,UAAA,MAAM,QAAA,GAAW;AAAA,YACf,GAAG,MAAA,CAAO,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,KAAA;AAAA,YAChC,GAAG,MAAA,CAAO,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI;AAAA,WAClC;AACA,UAAA,IAAI,CAAC,YAAA,CAAa,QAAA,EAAU,OAAO,CAAA,EAAG,MAAA,EAAQ,OAAO,CAAA,EAAG;AACtD,YAAA,MAAM,OAAO,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,CAAA,EAAG,SAAS,CAAC,CAAA;AAC9C,YAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,GAAO,IAAA,CAAK,IAAA,EAAM;AAC7B,cAAA,IAAA,GAAO,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,QAAA,CAAA,EAAL,EAAe,IAAA,EAAK,CAAA;AAAA,YAC7B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAA,CAAO,KAAIlC,GAAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,CAAA,KAAN,IAAA,GAAAA,MAAW,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,CAAE,IAAI,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAA,GAAI,OAAO,CAAA,GAAI,OAAA;AAC7E,IAAA,MAAA,CAAO,CAAA,GAAA,CAAIC,GAAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,CAAA,KAAN,OAAAA,GAAAA,GAAW,CAAA;AAAA,EACxB;AAEA,EAAA,OAAO,gBAAA,CAAiB,OAAA,EAAS,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAA;AACzD;AAEA,SAAS,YAAY,KAAA,EAAyC;AAC5D,EAAA,MAAM,KAAA,uBAAY,GAAA,EAA0B;AAE5C,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,KAAA,CAAM,GAAA,CAAI,KAAK,KAAA,EAAO;AAAA,MACpB,UAAU,EAAC;AAAA,MACX,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,SAAA,EAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAK,CAAA;AAAA,MACjC,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAK;AAAA,KAC9B,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,QAAwB,EAAC;AAC/B,EAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,CAAM,MAAA,EAAO,EAAG;AACjC,IAAA,IAAI,KAAK,MAAA,IAAU,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA,EAAG;AACzC,MAAA,KAAA,CAAM,IAAI,IAAA,CAAK,MAAM,CAAA,CAAG,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,IAC5C,CAAA,MAAO;AACL,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,IACjB;AAAA,EACF;AAEA,EAAA,SAAS,aAAa,IAAA,EAA4B;AAChD,IAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ;AACzB,MAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,SAAS,CAAA;AACvC,MAAA,OAAO,IAAA,CAAK,KAAA;AAAA,IACd;AAEA,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,CAAC,GAAA,EAAK,KAAA,KAAU,GAAA,GAAM,YAAA,CAAa,KAAK,CAAA,EAAG,CAAC,CAAA;AAC/E,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAA;AAC9B,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EACd;AAEA,EAAA,KAAA,CAAM,QAAQ,YAAY,CAAA;AAC1B,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,gBAAA,CAAiB,OAAA,EAA2B,OAAA,EAAiB,OAAA,EAAiB,KAAA,EAAe;AACpG,EAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAY,iCAC3B,MAAA,CAAA,EAD2B;AAAA,IAE9B,CAAA,EAAG,OAAO,CAAA,GAAI,KAAA;AAAA,IACd,CAAA,EAAG,OAAA,GAAU,MAAA,CAAO,CAAA,GAAI,KAAA;AAAA,IACxB,CAAA,EAAG,OAAA,GAAU,MAAA,CAAO,CAAA,GAAI;AAAA,GAC1B,CAAE,CAAA;AACJ;AAEA,SAAS,SAAS,IAAA,EAAoB,KAAA,EAAe,OAAA,EAAiB,UAAA,GAAa,KAAK,KAAA,EAAkB;AACxG,EAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ;AACzB,IAAA,MAAM,CAAA,GAAI,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA,GAAI,GAAG,CAAA;AAClD,IAAA,OAAO;AAAA,MACL,CAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP;AAAA,UACE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,QAAA,EAAU,KAAA;AAAA,UACV,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,CAAA;AAAA,UACA,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,CAAA,EAAG,CAAA;AAAA,UACH,CAAA,EAAG;AAAA;AACL;AACF,KACF;AAAA,EACF;AAEA,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,EAAO,KAAA,GAAQ,CAAA,EAAG,OAAA,EAAS,UAAU,CAAC,CAAA;AAC/F,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,GAAA,CAAI,GAAG,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,CAAC,CAAA,EAAG,CAAC,CAAA;AACtE,EAAA,MAAM,SAAS,cAAA,GAAiB,GAAA;AAChC,EAAA,MAAM,UAAA,GAAa,eAAA;AAAA,IACjB,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,MAAW;AAAA,MAC/B,KAAA,EAAO,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,CAAE,KAAA;AAAA,MAC5B,KAAA,EAAO,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,CAAE,KAAA;AAAA,MAC5B,MAAA,EAAQ,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,CAAE,MAAA;AAAA,MAC7B,KAAA,EAAO,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK;AAAA,KACvB,CAAE,CAAA;AAAA,IACF,MAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,SAA2B,EAAC;AAClC,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,UAAA,CAAW,QAAQ,KAAA,EAAA,EAAS;AACtD,IAAA,MAAM,QAAQ,UAAA,CAAW,KAAK,EAAE,CAAA,GAAI,UAAA,CAAW,KAAK,CAAA,CAAE,CAAA;AACtD,IAAA,MAAA,CAAO,IAAA;AAAA,MACL,GAAG,gBAAA,CAAiB,UAAA,CAAW,KAAK,EAAE,OAAA,EAAS,UAAA,CAAW,KAAK,CAAA,CAAE,CAAA,EAAG,UAAA,CAAW,KAAK,CAAA,CAAE,GAAG,KAAK;AAAA,KAChG;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,MAAM,CAAA,GAAI,OAAA;AAC5C,EAAA,MAAA,CAAO,OAAA,CAAQ;AAAA,IACb,UAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,QAAA,EAAU,IAAA;AAAA,IACV,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,CAAA,EAAG,SAAA;AAAA,IACH,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,CAAA,EAAG,CAAA;AAAA,IACH,CAAA,EAAG;AAAA,GACJ,CAAA;AAED,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,MAAA;AAAA,IACT,CAAA,EAAG;AAAA,GACL;AACF;AAEA,SAAS,aAAA,CAAc,KAAA,EAAuB,KAAA,EAAe,MAAA,EAAgB,OAAA,EAAmC;AAC9G,EAAA,IAAI,CAAC,MAAM,MAAA,EAAQ;AACjB,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,IAAI,MAAM,MAAA,KAAW,CAAA,IAAK,MAAM,CAAC,CAAA,CAAE,SAAS,MAAA,EAAQ;AAClD,IAAA,MAAM,SAAS,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAG,GAAG,OAAO,CAAA;AAC5C,IAAA,OAAO,gBAAA,CAAiB,MAAA,CAAO,OAAA,EAAS,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,EAChE;AAEA,EAAA,MAAM,SAAA,GAAY,MAAM,GAAA,CAAI,CAAC,SAAS,QAAA,CAAS,IAAA,EAAM,CAAA,EAAG,OAAO,CAAC,CAAA;AAChE,EAAA,MAAM,UAAA,GAAa,eAAA;AAAA,IACjB,SAAA,CAAU,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,MAAW;AAAA,MAC9B,KAAA,EAAO,KAAA,CAAM,KAAK,CAAA,CAAE,KAAA;AAAA,MACpB,KAAA,EAAO,KAAA,CAAM,KAAK,CAAA,CAAE,KAAA;AAAA,MACpB,MAAA,EAAQ,KAAA,CAAM,KAAK,CAAA,CAAE,MAAA;AAAA,MACrB,KAAA,EAAO,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK;AAAA,KACvB,CAAE,CAAA;AAAA,IACF,KAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,SAA2B,EAAC;AAClC,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,UAAA,CAAW,QAAQ,KAAA,EAAA,EAAS;AACtD,IAAA,MAAM,QAAQ,UAAA,CAAW,KAAK,EAAE,CAAA,GAAI,SAAA,CAAU,KAAK,CAAA,CAAE,CAAA;AACrD,IAAA,MAAA,CAAO,IAAA;AAAA,MACL,GAAG,gBAAA,CAAiB,SAAA,CAAU,KAAK,EAAE,OAAA,EAAS,UAAA,CAAW,KAAK,CAAA,CAAE,CAAA,EAAG,UAAA,CAAW,KAAK,CAAA,CAAE,GAAG,KAAK;AAAA,KAC/F;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,gBAAA,CACd,KAAA,EACA,KAAA,EACA,MAAA,EACA,UAAU,CAAA,EACQ;AAClB,EAAA,IAAI,CAAC,KAAA,CAAM,MAAA,IAAU,KAAA,IAAS,CAAA,IAAK,UAAU,CAAA,EAAG;AAC9C,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,MAAM,eAAe,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,KAAS,KAAK,MAAM,CAAA;AACrD,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,OAAO,eAAA,CAAgB,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAA;AAAA,EACtD;AAEA,EAAA,MAAM,KAAA,GAAQ,YAAY,KAAK,CAAA;AAC/B,EAAA,OAAO,aAAA,CAAc,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAA;AACpD;;;AChVA,SAAS,UAAA,CAAW,OAAe,OAAA,EAAkB;AACnD,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,OAAO,UAAU,EAAA,GAAK,EAAA;AAAA,EACxB;AAEA,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,OAAO,UAAU,EAAA,GAAK,EAAA;AAAA,EACxB;AAEA,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,OAAO,UAAU,EAAA,GAAK,CAAA;AAAA,EACxB;AAEA,EAAA,OAAO,UAAU,CAAA,GAAI,GAAA;AACvB;AAEA,SAAS,WAAA,CACP,KAAA,EACA,KAAA,EACA,MAAA,EACA,KACA,OAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW,CAAC,GAAG,IAAI,IAAI,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAM;AAhDhD,IAAA,IAAAD,GAAAA;AAgDmD,IAAA,OAAA,CAAAA,GAAAA,GAAA,IAAA,CAAK,KAAA,KAAL,IAAA,GAAAA,MAAc,IAAA,CAAK,EAAA;AAAA,EAAA,CAAE,CAAC,CAAC,CAAA;AAExE,EAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AAlD7B,IAAA,IAAAA,GAAAA;AAmDI,IAAA,MAAM,QAAQ,IAAA,CAAK,KAAA;AACnB,IAAA,MAAM,MAAA,GAAS,UAAA,CAAW,KAAA,EAAO,OAAO,CAAA;AAExC,IAAA,OAAO,iCACF,IAAA,CAAA,EADE;AAAA,MAEL,CAAA,EAAG,GAAA,GAAM,IAAA,CAAK,CAAA,IAAK,QAAQ,GAAA,GAAM,CAAA,CAAA;AAAA,MACjC,CAAA,EAAG,GAAA,GAAM,IAAA,CAAK,CAAA,IAAK,SAAS,GAAA,GAAM,CAAA,CAAA;AAAA,MAClC,MAAA;AAAA,MACA,UAAA,EAAY,SAAS,OAAA,CAAA,CAAQA,GAAAA,GAAA,KAAK,KAAA,KAAL,IAAA,GAAAA,GAAAA,GAAc,IAAA,CAAK,EAAE,CAAA;AAAA,MAClD,QAAA,EAAU,WAAW,KAAA,IAAS,CAAA;AAAA,MAC9B,SAAA,EAAW,WAAW,MAAA,IAAU;AAAA,KAClC,CAAA;AAAA,EACF,CAAC,CAAA;AACH;AAEA,SAAS,WAAA,CAAY,CAAA,EAAW,CAAA,EAAW,QAAA,EAAkB,KAAA,EAAe;AAC1E,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,QAAA;AAAA,IACzB,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI;AAAA,GAC3B;AACF;AAEA,SAAS,QAAA,CACP,KAAA,EACA,QAAA,EACA,OAAA,EACA,OAAA,EACA,WACA,QAAA,EACA,MAAA,EACA,MAAA,EACA,KAAA,EACA,KAAA,EACA;AACA,EAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AACrB,EAAA,MAAM,KAAA,GAAQ,SAAA,GAAA,CAAc,KAAA,GAAQ,CAAA,IAAK,MAAA,GAAU,CAAA;AAEnD,EAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,IAAA,MAAM,KAAA,GAAQ,KAAA,KAAU,CAAA,GAAI,SAAA,GAAY,QAAQ,KAAA,GAAQ,MAAA;AACxD,IAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,OAAA,EAAS,OAAA,EAAS,UAAU,KAAK,CAAA;AAC3D,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA;AAAA,MACA,KAAA,EAAO,CAAA;AAAA,MACP,KAAA;AAAA,MACA,OAAO,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,QAAA;AAAA,MAChB,GAAG,KAAA,CAAM,CAAA;AAAA,MACT,GAAG,KAAA,CAAM;AAAA,KACV,CAAA;AAAA,EACH,CAAC,CAAA;AACH;AAEO,SAAS,wBAAA,CAAyB,KAAA,EAAqB,KAAA,EAAe,MAAA,EAG3E;AACA,EAAA,MAAM,QAQD,EAAC;AAEN,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,EAAE,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,GAAG,GAAA,EAAK,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,GAAA,EAAI;AAAA,IAClD,EAAE,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAG,GAAA,EAAK,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,GAAA,EAAI;AAAA,IACjD,EAAE,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,GAAG,GAAA,EAAK,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,GAAA;AAAI,GACpD;AAEA,EAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,KAAS;AACtB,IAAA,KAAA,CAAM,IAAA,CAAK,iCAAK,IAAA,CAAA,EAAL,EAAW,OAAO,IAAA,CAAK,EAAA,EAAI,KAAA,EAAO,CAAA,EAAE,CAAC,CAAA;AAAA,EAClD,CAAC,CAAA;AAED,EAAA,MAAM,YAAA,GAAe;AAAA,IACnB,EAAE,IAAI,GAAA,EAAK,KAAA,EAAO,CAAC,IAAA,CAAK,EAAA,GAAK,CAAA,EAAG,KAAA,EAAO,EAAA,EAAG;AAAA,IAC1C,EAAE,EAAA,EAAI,GAAA,EAAK,OAAO,IAAA,CAAK,EAAA,EAAI,OAAO,EAAA,EAAG;AAAA,IACrC,EAAE,IAAI,GAAA,EAAK,KAAA,EAAO,KAAK,EAAA,GAAK,CAAA,EAAG,OAAO,EAAA;AAAG,GAC3C;AACA,EAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC9B,IAAA,MAAM,QAAQ,WAAA,CAAY,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,MAAM,KAAK,CAAA;AACtD,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,IAAI,KAAA,CAAM,EAAA;AAAA,MACV,OAAO,KAAA,CAAM,EAAA;AAAA,MACb,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,KAAA,EAAO,CAAA;AAAA,MACP,KAAA,EAAO,GAAA;AAAA,MACP,GAAG,KAAA,CAAM,CAAA;AAAA,MACT,GAAG,KAAA,CAAM;AAAA,KACV,CAAA;AACD,IAAA,QAAA;AAAA,MACE,KAAA;AAAA,MACA,KAAA,CAAM,EAAA;AAAA,MACN,KAAA,CAAM,CAAA;AAAA,MACN,KAAA,CAAM,CAAA;AAAA,MACN,KAAA,CAAM,KAAA;AAAA,MACN,GAAA;AAAA,MACA,KAAK,EAAA,GAAK,EAAA;AAAA,MACV,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,GAAE,EAAG,CAAC,CAAA,EAAG,KAAA,KAAU,GAAG,KAAA,CAAM,EAAE,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAA;AAAA,MACjE,CAAA;AAAA,MACA,KAAA,CAAM;AAAA,KACR;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAM,YAAA,GAAe;AAAA,IACnB,EAAE,IAAI,GAAA,EAAK,KAAA,EAAO,CAAC,IAAA,CAAK,EAAA,GAAK,CAAA,EAAG,KAAA,EAAO,EAAA,EAAG;AAAA,IAC1C,EAAE,EAAA,EAAI,GAAA,EAAK,KAAA,EAAO,CAAA,EAAG,OAAO,EAAA,EAAG;AAAA,IAC/B,EAAE,IAAI,GAAA,EAAK,KAAA,EAAO,KAAK,EAAA,GAAK,CAAA,EAAG,OAAO,EAAA;AAAG,GAC3C;AACA,EAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC9B,IAAA,MAAM,QAAQ,WAAA,CAAY,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,MAAM,KAAK,CAAA;AACtD,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,IAAI,KAAA,CAAM,EAAA;AAAA,MACV,OAAO,KAAA,CAAM,EAAA;AAAA,MACb,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,KAAA,EAAO,CAAA;AAAA,MACP,KAAA,EAAO,GAAA;AAAA,MACP,GAAG,KAAA,CAAM,CAAA;AAAA,MACT,GAAG,KAAA,CAAM;AAAA,KACV,CAAA;AACD,IAAA,QAAA;AAAA,MACE,KAAA;AAAA,MACA,KAAA,CAAM,EAAA;AAAA,MACN,KAAA,CAAM,CAAA;AAAA,MACN,KAAA,CAAM,CAAA;AAAA,MACN,KAAA,CAAM,KAAA;AAAA,MACN,GAAA;AAAA,MACA,KAAK,EAAA,GAAK,EAAA;AAAA,MACV,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,GAAE,EAAG,CAAC,CAAA,EAAG,KAAA,KAAU,GAAG,KAAA,CAAM,EAAE,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAA;AAAA,MACjE,CAAA;AAAA,MACA,KAAA,CAAM;AAAA,KACR;AAAA,EACF,CAAC,CAAA;AAED,EAAA,KAAA,CAAM,IAAA;AAAA,IACJ,EAAE,EAAA,EAAI,GAAA,EAAK,KAAA,EAAO,KAAK,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAG,IAAA,EAAK;AAAA,IACxE,EAAE,EAAA,EAAI,GAAA,EAAK,KAAA,EAAO,KAAK,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAG,IAAA;AAAK,GAC1E;AAEA,EAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,KAAA,EAAO,IAAI,CAAC,CAAC,CAAA;AAC/D,EAAA,MAAM,MAAA,GAAS,WAAA;AAAA,IACb,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAM;AAlMrB,MAAA,IAAAA,GAAAA,EAAAC,KAAAW,GAAAA,EAAAG,GAAAA;AAkMyB,MAAA,OAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAChB,IAAA,CAAA,EADgB;AAAA,QAEnB,KAAA,EAAA,CAAOd,GAAAA,GAAAA,CAAAD,GAAAA,GAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,KAAnB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAsB,KAAA,KAAtB,IAAA,GAAAC,MAA+B,IAAA,CAAK,KAAA;AAAA,QAC3C,KAAA,EAAA,CAAOc,GAAAA,GAAAA,CAAAH,GAAAA,GAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,KAAnB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAsB,KAAA,KAAtB,IAAA,GAAAG,MAA+B,IAAA,CAAK;AAAA,OAC7C,CAAA;AAAA,IAAA,CAAE,CAAA;AAAA,IACF,KAAA;AAAA,IACA,MAAA;AAAA,IACA,EAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,EAAA,EAAI,IAAI,CAAC,CAAC,CAAA;AAC1D,EAAA,MAAM,KAAA,GAA6B;AAAA,IACjC,EAAE,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,CAAG,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,CAAG,GAAG,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,CAAG,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,CAAG,CAAA,EAAG,UAAA,EAAY,IAAA,CAAK,GAAA,CAAI,GAAG,EAAG,UAAA,EAAW;AAAA,IAChI,EAAE,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,CAAG,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,CAAG,GAAG,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,CAAG,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,CAAG,CAAA,EAAG,UAAA,EAAY,IAAA,CAAK,GAAA,CAAI,GAAG,EAAG,UAAA;AAAW,GAClI;AAEA,EAAA,MAAM,UAAA,GAAsC;AAAA,IAC1C,CAAC,KAAK,GAAG,CAAA;AAAA,IACT,CAAC,KAAK,GAAG,CAAA;AAAA,IACT,CAAC,KAAK,GAAG,CAAA;AAAA,IACT,CAAC,KAAK,GAAG,CAAA;AAAA,IACT,CAAC,KAAK,GAAG,CAAA;AAAA,IACT,CAAC,KAAK,GAAG,CAAA;AAAA,IACT,CAAC,KAAK,GAAG,CAAA;AAAA,IACT,CAAC,KAAK,GAAG,CAAA;AAAA,IACT,GAAG,YAAA,CAAa,OAAA,CAAQ,CAAC,KAAA,KAAU,MAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAC,GAAG,KAAA,KAAU,CAAC,KAAA,CAAM,EAAA,EAAI,CAAA,EAAG,KAAA,CAAM,EAAE,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAqB,CAAC,CAAA;AAAA,IACrI,GAAG,YAAA,CAAa,OAAA,CAAQ,CAAC,KAAA,KAAU,MAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAC,GAAG,KAAA,KAAU,CAAC,KAAA,CAAM,EAAA,EAAI,CAAA,EAAG,KAAA,CAAM,EAAE,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAqB,CAAC;AAAA,GACvI;AAEA,EAAA,UAAA,CAAW,OAAA,CAAQ,CAAC,CAAC,IAAA,EAAM,EAAE,CAAA,KAAM;AACjC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA;AAC5B,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AAC1B,IAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,MAAA,KAAA,CAAM,IAAA,CAAK;AAAA,QACT,IAAI,MAAA,CAAO,CAAA;AAAA,QACX,IAAI,MAAA,CAAO,CAAA;AAAA,QACX,IAAI,MAAA,CAAO,CAAA;AAAA,QACX,IAAI,MAAA,CAAO,CAAA;AAAA,QACX,YAAY,MAAA,CAAO;AAAA,OACpB,CAAA;AAAA,IACH;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAM;AAChC;AAEO,SAAS,wBAAA,CAAyB,KAAA,EAAqB,KAAA,EAAe,MAAA,EAG3E;AACA,EAAA,MAAM,KAAA,GAQD;AAAA,IACH,EAAE,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,QAAQ,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,MAAA,EAAQ,CAAA,EAAG,GAAA,EAAK,GAAG,GAAA;AAAI,GAClF;AAEA,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,CAAC,IAAA,CAAK,EAAA,GAAK,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAE;AAAA,IAC3C,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,CAAC,IAAA,CAAK,EAAA,GAAK,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAE;AAAA,IAC3C,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,KAAK,EAAA,GAAK,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IAC1C,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,KAAK,EAAA,GAAK,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IAC1C,EAAE,IAAI,IAAA,EAAM,KAAA,EAAQ,IAAI,IAAA,CAAK,EAAA,GAAM,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAE;AAAA,IAChD,EAAE,IAAI,IAAA,EAAM,KAAA,EAAQ,KAAK,IAAA,CAAK,EAAA,GAAM,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAE;AAAA,IACjD,EAAE,EAAA,EAAI,IAAA,EAAM,OAAO,IAAA,CAAK,EAAA,EAAI,QAAQ,CAAA;AAAE,GACxC;AAEA,EAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,MAAA,EAAQ,WAAA,KAAgB;AACxC,IAAA,MAAM,UAAU,WAAA,CAAY,GAAA,EAAK,GAAA,EAAK,IAAA,EAAM,OAAO,KAAK,CAAA;AACxD,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,IAAI,MAAA,CAAO,EAAA;AAAA,MACX,OAAO,MAAA,CAAO,EAAA;AAAA,MACd,KAAA,EAAO,EAAA;AAAA,MACP,KAAA,EAAO,CAAA;AAAA,MACP,KAAA,EAAO,UAAU,WAAW,CAAA,CAAA;AAAA,MAC5B,GAAG,OAAA,CAAQ,CAAA;AAAA,MACX,GAAG,OAAA,CAAQ;AAAA,KACZ,CAAA;AAED,IAAA,MAAM,eAAA,GACJ,OAAO,MAAA,KAAW,CAAA,GACd,CAAC,MAAA,CAAO,KAAA,GAAQ,MAAM,MAAA,CAAO,KAAA,EAAO,OAAO,KAAA,GAAQ,IAAI,IACvD,CAAC,MAAA,CAAO,QAAQ,IAAA,EAAM,MAAA,CAAO,QAAQ,IAAI,CAAA;AAE/C,IAAA,eAAA,CAAgB,OAAA,CAAQ,CAAC,KAAA,EAAO,cAAA,KAAmB;AACjD,MAAA,MAAM,cAAc,CAAA,EAAG,MAAA,CAAO,EAAE,CAAA,CAAA,EAAI,iBAAiB,CAAC,CAAA,CAAA;AACtD,MAAA,MAAM,YAAY,WAAA,CAAY,OAAA,CAAQ,GAAG,OAAA,CAAQ,CAAA,EAAG,MAAM,KAAK,CAAA;AAC/D,MAAA,KAAA,CAAM,IAAA,CAAK;AAAA,QACT,EAAA,EAAI,WAAA;AAAA,QACJ,KAAA,EAAO,WAAA;AAAA,QACP,KAAA,EAAO,EAAA;AAAA,QACP,KAAA,EAAO,CAAA;AAAA,QACP,KAAA,EAAO,UAAU,WAAW,CAAA,CAAA;AAAA,QAC5B,GAAG,SAAA,CAAU,CAAA;AAAA,QACb,GAAG,SAAA,CAAU;AAAA,OACd,CAAA;AAED,MAAA,MAAM,YAAY,MAAA,CAAO,MAAA,KAAW,CAAA,IAAK,cAAA,KAAmB,IAAI,CAAA,GAAI,CAAA;AACpE,MAAA,MAAM,UAAA,GAAa,SAAA,KAAc,CAAA,GAAI,IAAA,GAAO,CAAA;AAC5C,MAAA,MAAM,SAAA,GAAY,KAAA,GAAA,CAAU,SAAA,GAAY,CAAA,IAAK,UAAA,GAAc,CAAA;AAC3D,MAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,WAAU,EAAG,CAAC,GAAG,SAAA,KAAc;AAClD,QAAA,MAAM,SAAA,GAAY,SAAA,KAAc,CAAA,GAAI,KAAA,GAAQ,YAAY,SAAA,GAAY,UAAA;AACpE,QAAA,MAAM,OAAO,WAAA,CAAY,SAAA,CAAU,GAAG,SAAA,CAAU,CAAA,EAAG,MAAM,SAAS,CAAA;AAClE,QAAA,KAAA,CAAM,IAAA,CAAK;AAAA,UACT,EAAA,EAAI,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,YAAY,CAAC,CAAA,CAAA;AAAA,UACnC,KAAA,EAAO,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,YAAY,CAAC,CAAA,CAAA;AAAA,UACtC,KAAA,EAAO,CAAA;AAAA,UACP,KAAA,EAAO,CAAA;AAAA,UACP,KAAA,EAAO,UAAU,WAAW,CAAA,CAAA;AAAA,UAC5B,GAAG,IAAA,CAAK,CAAA;AAAA,UACR,GAAG,IAAA,CAAK;AAAA,SACT,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,KAAA,EAAO,IAAI,CAAC,CAAC,CAAA;AAC/D,EAAA,MAAM,MAAA,GAAS,WAAA;AAAA,IACb,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAM;AA9TrB,MAAA,IAAAf,GAAAA,EAAAC,KAAAW,GAAAA,EAAAG,GAAAA;AA8TyB,MAAA,OAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAChB,IAAA,CAAA,EADgB;AAAA,QAEnB,KAAA,EAAA,CAAOd,GAAAA,GAAAA,CAAAD,GAAAA,GAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,KAAnB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAsB,KAAA,KAAtB,IAAA,GAAAC,MAA+B,IAAA,CAAK,KAAA;AAAA,QAC3C,KAAA,EAAA,CAAOc,GAAAA,GAAAA,CAAAH,GAAAA,GAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,KAAnB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAsB,KAAA,KAAtB,IAAA,GAAAG,MAA+B,IAAA,CAAK;AAAA,OAC7C,CAAA;AAAA,IAAA,CAAE,CAAA;AAAA,IACF,KAAA;AAAA,IACA,MAAA;AAAA,IACA,EAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,EAAA,EAAI,IAAI,CAAC,CAAC,CAAA;AAC1D,EAAA,MAAM,QAA6B,EAAC;AAEpC,EAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,MAAA,KAAW;AAC3B,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC5B,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA;AAClC,IAAA,KAAA,CAAM,IAAA,CAAK,EAAE,EAAA,EAAI,IAAA,CAAK,GAAG,EAAA,EAAI,IAAA,CAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,GAAG,CAAA;AAEnE,IAAA,MAAM,eAAA,GACJ,OAAO,MAAA,KAAW,CAAA,GACd,CAAC,MAAA,CAAO,KAAA,GAAQ,MAAM,MAAA,CAAO,KAAA,EAAO,OAAO,KAAA,GAAQ,IAAI,IACvD,CAAC,MAAA,CAAO,QAAQ,IAAA,EAAM,MAAA,CAAO,QAAQ,IAAI,CAAA;AAE/C,IAAA,eAAA,CAAgB,OAAA,CAAQ,CAAC,CAAA,EAAG,cAAA,KAAmB;AAC7C,MAAA,MAAM,cAAc,CAAA,EAAG,MAAA,CAAO,EAAE,CAAA,CAAA,EAAI,iBAAiB,CAAC,CAAA,CAAA;AACtD,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,WAAW,CAAA;AACtC,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA;AAAA,MACF;AAEA,MAAA,KAAA,CAAM,IAAA,CAAK,EAAE,EAAA,EAAI,OAAA,CAAQ,GAAG,EAAA,EAAI,OAAA,CAAQ,CAAA,EAAG,EAAA,EAAI,SAAA,CAAU,CAAA,EAAG,EAAA,EAAI,SAAA,CAAU,GAAG,CAAA;AAE7E,MAAA,MAAM,YAAY,MAAA,CAAO,MAAA,KAAW,CAAA,IAAK,cAAA,KAAmB,IAAI,CAAA,GAAI,CAAA;AACpE,MAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,WAAU,EAAG,CAACoB,IAAG,SAAA,KAAc;AAClD,QAAA,MAAM,IAAA,GAAO,KAAK,GAAA,CAAI,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,SAAA,GAAY,CAAC,CAAA,CAAE,CAAA;AACvD,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,KAAA,CAAM,IAAA,CAAK,EAAE,EAAA,EAAI,SAAA,CAAU,GAAG,EAAA,EAAI,SAAA,CAAU,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,GAAG,CAAA;AAAA,QACzE;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,OAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAM;AAChC;;;AC7UA,SAAS,KAAA,CAAM,KAAoB,MAAA,EAAgB;AACjD,EAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,GAAA,GAAM,IAAI,MAAA,CAAO,CAAC,OAAO,IAAA,KAAS,KAAA,GAAQ,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA;AAC7D,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAG,GAAA,CAAI,IAAI,CAAC,IAAA,KAAS,IAAA,CAAK,KAAK,CAAC,CAAA;AACrD,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAG,GAAA,CAAI,IAAI,CAAC,IAAA,KAAS,IAAA,CAAK,KAAK,CAAC,CAAA;AACrD,EAAA,MAAM,QAAQ,GAAA,GAAM,GAAA;AACpB,EAAA,MAAM,QAAQ,MAAA,GAAS,MAAA;AACvB,EAAA,OAAO,KAAK,GAAA,CAAK,KAAA,GAAQ,MAAO,KAAA,EAAO,KAAA,IAAS,QAAQ,GAAA,CAAI,CAAA;AAC9D;AAEO,SAAS,uBAAA,CACd,KAAA,EACA,CAAA,EACA,CAAA,EACA,OACA,MAAA,EACe;AACf,EAAA,IAAI,CAAC,KAAA,CAAM,MAAA,IAAU,KAAA,IAAS,CAAA,IAAK,UAAU,CAAA,EAAG;AAC9C,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO,CAAC,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAA,CAAA,EAAZ,EAAe,CAAA,EAAG,CAAA,EAAG,KAAA,EAAO,MAAA,EAAO,CAAC,CAAA;AAAA,EAC9C;AAEA,EAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,CAAC,KAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA;AAC7D,EAAA,MAAM,WAAW,KAAA,GAAQ,MAAA;AACzB,EAAA,MAAM,MAAA,GAAS,WAAW,MAAA,GAAS,KAAA;AACnC,EAAA,MAAM,MAAqB,EAAC;AAC5B,EAAA,MAAM,IAAA,GAAO,CAAC,GAAG,KAAK,CAAA;AACtB,EAAA,MAAM,SAAwB,EAAC;AAE/B,EAAA,OAAO,KAAK,MAAA,EAAQ;AAClB,IAAA,MAAM,SAAA,GAAY,KAAK,CAAC,CAAA;AACxB,IAAA,MAAM,KAAA,GAAQ,CAAC,GAAG,GAAA,EAAK,SAAS,CAAA;AAChC,IAAA,IAAI,GAAA,CAAI,UAAU,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA,GAAI,KAAA,CAAM,GAAA,EAAK,MAAM,CAAA,EAAG;AAC3D,MAAA;AAAA,IACF;AACA,IAAA,GAAA,CAAI,KAAK,SAAS,CAAA;AAClB,IAAA,IAAA,CAAK,KAAA,EAAM;AAAA,EACb;AAEA,EAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,CAAC,KAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA;AAC5D,EAAA,MAAM,KAAA,GAAS,MAAA,GAAS,KAAA,IAAU,QAAA,GAAW,KAAA,GAAQ,MAAA,CAAA;AAErD,EAAA,IAAI,MAAA,GAAS,WAAW,CAAA,GAAI,CAAA;AAC5B,EAAA,KAAA,MAAW,QAAQ,GAAA,EAAK;AACtB,IAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,GAAQ,MAAA;AAC3B,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,aAAa,KAAA,GAAQ,MAAA;AAC3B,MAAA,MAAA,CAAO,IAAA,CAAK,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,IAAA,CAAA,EAAL,EAAW,CAAA,EAAG,CAAA,EAAG,MAAA,EAAQ,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,UAAA,EAAW,CAAC,CAAA;AACvE,MAAA,MAAA,IAAU,UAAA;AAAA,IACZ,CAAA,MAAO;AACL,MAAA,MAAM,YAAY,KAAA,GAAQ,MAAA;AAC1B,MAAA,MAAA,CAAO,IAAA,CAAK,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,IAAA,CAAA,EAAL,EAAW,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,KAAA,EAAM,CAAC,CAAA;AACtE,MAAA,MAAA,IAAU,SAAA;AAAA,IACZ;AAAA,EACF;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAA,CAAO,IAAA,CAAK,GAAG,uBAAA,CAAwB,IAAA,EAAM,CAAA,GAAI,OAAO,CAAA,EAAG,KAAA,GAAQ,KAAA,EAAO,MAAM,CAAC,CAAA;AAAA,EACnF,CAAA,MAAO;AACL,IAAA,MAAA,CAAO,IAAA,CAAK,GAAG,uBAAA,CAAwB,IAAA,EAAM,CAAA,EAAG,IAAI,KAAA,EAAO,KAAA,EAAO,MAAA,GAAS,KAAK,CAAC,CAAA;AAAA,EACnF;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,oBAAA,CACd,KAAA,EACA,CAAA,EACA,CAAA,EACA,OACA,MAAA,EACsB;AA1GxB,EAAA,IAAAnC,GAAAA,EAAAC,GAAAA;AA2GE,EAAA,MAAM,OAAA,uBAAc,GAAA,EAA2B;AAC/C,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,QAAMD,GAAAA,GAAA,IAAA,CAAK,KAAA,KAAL,IAAA,GAAA,MAAA,GAAAA,IAAY,IAAA,EAAA,KAAU,EAAA;AAClC,IAAA,MAAM,MAAA,GAAA,CAASC,MAAA,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA,KAAf,IAAA,GAAAA,MAAoB,EAAC;AACpC,IAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAChB,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,MAAM,CAAA;AAAA,EACzB;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,OAAA,CAAQ,SAAS,CAAA,CACjC,MAAA,CAAO,CAAC,CAAC,GAAG,MAAM,GAAA,CAAI,MAAA,GAAS,CAAC,CAAA,CAChC,GAAA,CAAI,CAAC,CAAC,KAAA,EAAO,UAAU,CAAA,EAAG,UAAA,MAAgB;AAAA,IACzC,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA,EAAO,CAAC,GAAG,UAAU,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,CAAA,CAAE,KAAK,CAAA;AAAA,IACvD,KAAA,EAAO,WAAW,MAAA,CAAO,CAAC,KAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,KAAA,EAAO,CAAC;AAAA,GAC7D,CAAE,EACD,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,CAAA,CAAE,KAAK,CAAA;AAEnC,EAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,IAAA,OAAO;AAAA,MACL,QAAQ,EAAC;AAAA,MACT,OAAO,uBAAA,CAAwB,KAAA,EAAO,CAAA,EAAG,CAAA,EAAG,OAAO,MAAM;AAAA,KAC3D;AAAA,EACF;AAEA,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,CAAC,GAAA,EAAK,UAAU,GAAA,GAAM,KAAA,CAAM,KAAA,EAAO,CAAC,CAAA,IAAK,CAAA;AAC1E,EAAA,MAAM,QAAuB,EAAC;AAC9B,EAAA,MAAM,UAAgC,EAAC;AACvC,EAAA,IAAI,OAAA,GAAU,CAAA;AAEd,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,WAAA,GAAe,KAAA,CAAM,KAAA,GAAQ,UAAA,GAAc,KAAA;AACjD,IAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,MACX,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,CAAA,EAAG,OAAA;AAAA,MACH,CAAA;AAAA,MACA,KAAA,EAAO,WAAA;AAAA,MACP;AAAA,KACD,CAAA;AACD,IAAA,KAAA,CAAM,IAAA;AAAA,MACJ,GAAG,uBAAA,CAAwB,KAAA,CAAM,KAAA,EAAO,OAAA,EAAS,CAAA,EAAG,WAAA,EAAa,MAAM,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,KAAU,iCACnF,IAAA,CAAA,EADmF;AAAA,QAEtF,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,YAAY,KAAA,CAAM;AAAA,OACpB,CAAE;AAAA,KACJ;AACA,IAAA,OAAA,IAAW,WAAA;AAAA,EACb;AAEA,EAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAM;AAClC;ACzIO,IAAM,wBAAA,uBAA+B,GAAA,CAAkB;AAAA,EAC5D,SAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC,CAAA;AAEM,SAAS,0BAA0B,OAAA,EAAuB;AAC/D,EAAA,OAAO,wBAAA,CAAyB,IAAI,OAAO,CAAA;AAC7C;AAEO,IAAM,4BAAA,GAA+C;AAAA,EAC1D,WAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA;AAEO,SAAS,kCAAkC,OAAA,EAAuB;AACvE,EAAA,OAAO,CAAC,CAAC,UAAA,EAAY,oBAAA,EAAsB,SAAS,SAAA,EAAW,kBAAA,EAAoB,WAAA,EAAa,QAAQ,CAAA,CAAE,QAAA;AAAA,IACxG;AAAA,GACF;AACF;AAEO,SAAS,qCAAqC,OAAA,EAAuB;AAC1E,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,CAAE,SAAS,OAAO,CAAA;AACpB;AAEO,SAAS,iCAAiC,OAAA,EAAuB;AACtE,EAAA,OAAO,CAAC,WAAW,CAAA,CAAE,QAAA,CAAS,OAAO,CAAA;AACvC;AAIO,SAAS,oBAAoB,IAAA,EAGjC;AACD,EAAA,OAAO;AAAA,IACL,MAAM,IAAA,CAAK,QAAA;AAAA,IACX,OAAO,IAAA,CAAK;AAAA,GACd;AACF;AAEO,SAAS,uBAAA,CACd,IAAA,EACA,KAAA,EACA,KAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,oBAAoB,IAAI,CAAA;AAChD,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,OAAA,CAAQ,OAAO,KAAA,IAAS,CAAA;AAAA,EAC1B;AAEA,EAAA,MAAM,SAAA,GAAA,CAAa,QAAQ,IAAA,IAAQ,KAAA;AACnC,EAAA,OAAO,IAAA,GAAO,SAAA,GAAY,KAAA,GAAQ,SAAA,GAAY,CAAA;AAChD;AAuBA,IAAM,iBAAiB,CAAC,SAAA,EAAW,WAAW,SAAA,EAAW,SAAA,EAAW,WAAW,SAAS,CAAA;AAExF,SAAS,UAAA,CAAW,QAAgC,KAAA,EAAe;AACjE,EAAA,OAAO,MAAA,CAAO,cAAA,CAAe,KAAA,GAAQ,cAAA,CAAe,MAAM,CAAC,CAAA;AAC7D;AAEA,SAAS,SAAS,IAAA,EAAgB;AAChC,EAAA,OAAO,IAAA,CAAK,SAAS,IAAA,CAAK,GAAA;AAC5B;AAEA,SAAS,eAAe,IAAA,EAAgB;AACtC,EAAA,OAAO,IAAA,CAAK,YAAY,IAAA,CAAK,QAAA;AAC/B;AAEA,SAAS,aAAa,IAAA,EAAgB;AACpC,EAAA,OAAO,IAAA,CAAK,QAAA;AACd;AAEA,SAAS,cAAc,IAAA,EAAgB;AACrC,EAAA,OAAO,IAAA,CAAK,SAAA;AACd;AAEO,IAAM,qBAAA,GAAwB,EAAA;AAE9B,SAAS,oBAAoB,IAAA,EAAgB;AAClD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,YAAA,CAAa,IAAI,CAAA,GAAI,qBAAA;AAAA,IAC3B,KAAA,EAAO,aAAA,CAAc,IAAI,CAAA,GAAI;AAAA,GAC/B;AACF;AAEO,SAAS,iBAAA,CAAkB,IAAA,EAAgB,KAAA,EAAe,KAAA,EAAe;AAC9E,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,oBAAoB,IAAI,CAAA;AAChD,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,OAAA,CAAQ,OAAO,KAAA,IAAS,CAAA;AAAA,EAC1B;AAEA,EAAA,OAAO,IAAA,GAAO,KAAA,IAAA,CAAU,KAAA,GAAQ,IAAA,KAAS,KAAA,GAAQ,CAAA,CAAA,CAAA;AACnD;AAEA,SAAS,oBAAA,CAAqB,MAAgB,KAAA,EAAe;AAC3D,EAAA,MAAM,IAAA,GAAO,eAAe,IAAI,CAAA;AAChC,EAAA,MAAM,IAAA,GAAO,KAAA,GAAQ,CAAA,GAAI,IAAA,IAAQ,QAAQ,CAAA,CAAA,GAAK,IAAA;AAC9C,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,KAAA,GAAQ,CAAA,GAAI,IAAA,GAAO,IAAA,IAAQ,IAAI,CAAC,CAAA;AACnE;AAEO,SAAS,0BAAA,CAA2B,MAAgB,KAAA,EAAe;AACxE,EAAA,OAAO,oBAAA,CAAqB,IAAA,EAAM,KAAK,CAAA,GAAI,CAAA;AAC7C;AAEA,SAAS,gBAAA,CAAiB,IAAA,EAAgB,KAAA,EAAe,KAAA,EAAe,WAAW,EAAA,EAAI;AACrF,EAAA,MAAM,IAAA,GAAO,eAAe,IAAI,CAAA;AAChC,EAAA,MAAM,IAAA,GAAO,KAAA,GAAQ,CAAA,GAAI,IAAA,IAAQ,QAAQ,CAAA,CAAA,GAAK,IAAA;AAC9C,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,KAAA,GAAQ,CAAA,GAAI,IAAA,GAAO,IAAA,IAAQ,KAAK,CAAC,CAAA;AAC1E;AAEO,SAAS,wBAAA,CAAyB,MAAgB,KAAA,EAAe;AACtE,EAAA,OAAO,gBAAA,CAAiB,IAAA,EAAM,KAAA,EAAO,IAAI,CAAA,GAAI,CAAA;AAC/C;AAEO,SAAS,sBAAA,CAAuB,MAAgB,KAAA,EAAe;AACpE,EAAA,OAAO,gBAAA,CAAiB,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,EAAE,CAAA,GAAI,CAAA;AACnD;AAEO,SAAS,qBAAA,CAAsB,MAAgB,KAAA,EAAe;AACnE,EAAA,MAAM,IAAA,GAAO,eAAe,IAAI,CAAA;AAChC,EAAA,MAAM,IAAA,GAAO,KAAA,GAAQ,CAAA,GAAI,IAAA,IAAQ,QAAQ,CAAA,CAAA,GAAK,IAAA;AAC9C,EAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAA,CAAI,QAAQ,CAAA,GAAI,IAAA,GAAO,QAAQ,IAAI,CAAA;AACrD;AAEO,SAAS,gBAAA,CAAiB,IAAA,EAAgB,KAAA,EAAe,KAAA,EAAe,YAAA,EAAsB;AACnG,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,IAAI,CAAA,GAAI,YAAA;AAClC,EAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,IAAI,CAAA,GAAI,YAAA;AACpC,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,OAAA,CAAQ,OAAO,KAAA,IAAS,CAAA;AAAA,EAC1B;AAEA,EAAA,OAAO,IAAA,GAAO,KAAA,IAAA,CAAU,KAAA,GAAQ,IAAA,KAAS,KAAA,GAAQ,CAAA,CAAA,CAAA;AACnD;AAYA,SAAS,eAAA,CAAgB,IAAA,EAAgB,KAAA,EAAe,KAAA,EAAe;AACrE,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,oBAAoB,IAAI,CAAA;AAChD,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,OAAA,CAAQ,OAAO,KAAA,IAAS,CAAA;AAAA,EAC1B;AAEA,EAAA,OAAO,IAAA,GAAO,KAAA,IAAA,CAAU,KAAA,GAAQ,IAAA,KAAS,KAAA,GAAQ,CAAA,CAAA,CAAA;AACnD;AAEA,SAAS,UAAA,CAAW,KAAA,EAAe,IAAA,EAAc,IAAA,EAAc,IAAA,EAAgB;AAC7E,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAO,IAAI,CAAA;AACpC,EAAA,OAAO,KAAK,MAAA,GAAA,CAAW,KAAA,GAAQ,IAAA,IAAQ,IAAA,GAAQ,SAAS,IAAI,CAAA;AAC9D;AAEA,SAAS,YAAY,KAAA,EAAe;AAClC,EAAA,OAAO,MAAA,CAAO,UAAU,KAAK,CAAA,GAAI,OAAO,KAAK,CAAA,GAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAClE;AAEA,SAAS,eAAA,CAAgB;AAAA,EACvB,MAAA,GAAS,QAAA;AAAA,EACT,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,CAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,YAAY,UAAA,EAAY,MAAA,EAAQ,CAAA,EAAM,CAAA,EAC3D,QAAA,EACH,CAAA;AAEJ;AAEA,SAAS,SAAA,CAAU,EAAE,IAAA,EAAM,IAAA,EAAM,YAAY,MAAA,EAAQ,IAAA,EAAM,MAAK,EAA0B;AACxF,EAAA,MAAM,YAAA,GAAe,wBAAA,CAAyB,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAC/D,EAAA,MAAM,QAAQ,YAAA,GAAe,CAAA;AAE7B,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,eAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACzB,IAAA,MAAM,MAAA,GAAA,CAAW,IAAA,CAAK,KAAA,GAAQ,IAAA,IAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,GAAO,IAAI,CAAA,GAAK,QAAA,CAAS,IAAI,CAAA;AAC/E,IAAA,MAAM,UAAU,gBAAA,CAAiB,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,QAAQ,YAAY,CAAA;AACvE,IAAA,MAAM,IAAI,OAAA,GAAU,YAAA;AACpB,IAAA,MAAM,CAAA,GAAI,KAAK,MAAA,GAAS,MAAA;AACxB,IAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,GAAG,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,KAAA,GAAQ,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,UAC7E,MAAA;AAAA,UACA,EAAA,EAAG,GAAA;AAAA,UACH,KAAA;AAAA,UACA,CAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,MACC,UAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,MAAA,CAAO,UAAA,EAAY,YAAW,QAAA,EAAS,CAAA,EAAG,IAAI,KAAA,GAAQ,CAAA,EAAG,GAAG,CAAA,GAAI,CAAA,EAC9E,sBAAY,IAAA,CAAK,KAAK,GACzB,CAAA,GACE;AAAA,KAAA,EAAA,EAbE,KAAK,KAcb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,cAAc,IAAA,EAAgB;AACrC,EAAA,MAAM,OAAO,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AAC/C,EAAA,MAAM,IAAA,GAAO,CAAC,IAAA,EAAM,IAAA,EAAM,KAAK,CAAA;AAC/B,EAAA,MAAM,GAAA,GAAM,CAAA;AACZ,EAAA,MAAM,KAAA,GAAA,CAAS,eAAe,IAAI,CAAA,GAAI,OAAO,IAAA,CAAK,MAAA,GAAS,MAAM,IAAA,CAAK,MAAA;AACtE,EAAA,MAAM,KAAA,GAAA,CAAS,SAAS,IAAI,CAAA,GAAI,OAAO,IAAA,CAAK,MAAA,GAAS,MAAM,IAAA,CAAK,MAAA;AAChE,EAAA,MAAM,MAAA,GAAS,aAAa,IAAI,CAAA;AAChC,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA;AAEpB,EAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,KAAK,KAAA,EAAO,KAAA,EAAO,QAAQ,MAAA,EAAO;AACzD;AAEO,SAAS,iBAAA,CAAkB,EAAE,IAAA,EAAM,MAAA,EAAO,EAAmD;AAClG,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,KAAA,EAAO,OAAO,MAAA,EAAQ,MAAA,EAAO,GAAI,aAAA,CAAc,IAAI,CAAA;AAE5E,EAAA,uBACEC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,QAAA,qBACdD,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,WAAW,MAAA,CAAO,UAAA;AAAA,QAElB,UAAA,EAAW,QAAA;AAAA,QACX,CAAA,EAAG,MAAA,GAAS,QAAA,IAAY,KAAA,GAAQ,OAAO,KAAA,GAAQ,CAAA;AAAA,QAC/C,GAAG,MAAA,GAAS,CAAA;AAAA,QAEX,QAAA,EAAA;AAAA,OAAA;AAAA,MALI;AAAA,KAOR,CAAA;AAAA,IACA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,6BACdA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,WAAW,MAAA,CAAO,UAAA;AAAA,QAElB,UAAA,EAAW,KAAA;AAAA,QACX,CAAA,EAAG,KAAK,QAAA,GAAW,CAAA;AAAA,QACnB,GAAG,MAAA,GAAS,QAAA,IAAY,KAAA,GAAQ,GAAA,CAAA,GAAO,QAAQ,CAAA,GAAI,CAAA;AAAA,QAElD,QAAA,EAAA;AAAA,OAAA;AAAA,MALI;AAAA,KAOR;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,QAAQ,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AAC1E,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,KAAA,EAAO,OAAO,MAAA,EAAQ,MAAA,EAAO,GAAI,aAAA,CAAc,IAAI,CAAA;AAC5E,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,KAAK,CAAC,CAAA;AAEzD,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,IAAI,CAAC,GAAA,EAAK,QAAA,qBACdA,IAAC,GAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,KAAK,QAAA,KAAa;AAC3B,IAAA,MAAM,OAAO,IAAA,CAAA,CAAM,QAAA,GAAW,KAAK,MAAA,GAAS,QAAA,IAAY,KAAK,MAAM,CAAA;AACnE,IAAA,MAAM,CAAA,GAAI,MAAA,GAAS,QAAA,IAAY,KAAA,GAAQ,GAAA,CAAA;AACvC,IAAA,MAAM,CAAA,GAAI,MAAA,GAAS,QAAA,IAAY,KAAA,GAAQ,GAAA,CAAA;AACvC,IAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,GAAQ,GAAA;AAC3B,IAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,GAAG,MAAA,CAAO,GAAG,IAAI,UAAA,CAAW,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,UACjD,MAAA,EAAQ,KAAA;AAAA,UACR,OAAA,EAAS,OAAO,KAAA,GAAQ,IAAA;AAAA,UACxB,EAAA,EAAG,GAAA;AAAA,UACH,KAAA,EAAO,KAAA;AAAA,UACP,CAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,sBACAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,MAAM,UAAA,EAAY,MAAA,EAAgB,GAAG,CAAA,GAAI,KAAA,GAAQ,CAAA,EAAG,CAAA,EAAG,IAAI,KAAA,GAAQ,CAAA,GAAI,GACrF,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EACzB;AAAA,KAAA,EAAA,EAZM,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAarB,CAAA;AAAA,EAEJ,CAAC,CAAA,EAAA,EAtBK,GAuBR,CACD,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,SAAA,CAAU,EAAE,IAAA,EAAM,IAAA,EAAM,YAAY,MAAA,EAAQ,IAAA,EAAM,MAAK,EAA0B;AACxF,EAAA,IAAI,OAAA,GAAU,CAAA;AACd,EAAA,MAAM,SAAA,GAAY,eAAe,IAAI,CAAA,GAAI,KAAK,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAC,CAAA;AAChE,EAAA,MAAM,QAAA,GAAW,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,GAAA,CAAI,CAAA,EAAG,SAAA,GAAY,IAAI,CAAC,CAAA;AAE3D,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,eAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACzB,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,OAAA,IAAW,IAAA,CAAK,KAAA;AAChB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,OAAO,CAAA;AACnC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,OAAO,CAAA;AACtC,IAAA,MAAM,IAAI,uBAAA,CAAwB,IAAA,EAAM,OAAO,IAAA,CAAK,MAAM,IAAI,QAAA,GAAW,CAAA;AACzE,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,GAAA,EAAK,IAAA,EAAM,MAAM,IAAI,CAAA;AAC1C,IAAA,MAAM,SAAS,UAAA,CAAW,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA,GAAI,CAAA;AACtD,IAAA,MAAM,QAAA,GAAW,KAAK,KAAA,IAAS,CAAA;AAC/B,IAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,GAAG,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,QAAA,GAAW,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA;AAAA,UAChE,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA;AAAA,UAC1B,EAAA,EAAG,GAAA;AAAA,UACH,KAAA,EAAO,QAAA;AAAA,UACP,CAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,MACC,UAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,MAAA,CAAO,UAAA,EAAY,YAAW,QAAA,EAAS,CAAA,EAAG,IAAI,QAAA,GAAW,CAAA,EAAG,GAAG,CAAA,GAAI,CAAA,EACjF,sBAAY,IAAA,CAAK,KAAK,GACzB,CAAA,GACE;AAAA,KAAA,EAAA,EAbE,KAAK,KAcb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,IAAA,EAAM,IAAA,EAAM,YAAY,MAAA,EAAQ,IAAA,EAAM,MAAK,EAA0B;AAC1F,EAAA,MAAM,SAAA,GAAY,oBAAA,CAAqB,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AACxD,EAAA,MAAM,eAAe,SAAA,GAAY,CAAA;AACjC,EAAA,MAAM,WAAA,GAAc,IAAA,CACjB,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AA3a1B,IAAA,IAAAF,GAAAA;AA4aM,IAAA,MAAM,SAAQA,GAAAA,GAAA,IAAA,CAAK,KAAA,KAAL,IAAA,GAAAA,MAAc,IAAA,CAAK,KAAA;AACjC,IAAA,MAAM,IAAI,gBAAA,CAAiB,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,QAAQ,YAAY,CAAA;AACjE,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,KAAA,EAAO,IAAA,EAAM,MAAM,IAAI,CAAA;AAC5C,IAAA,OAAO,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAAA,EAClB,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAEX,EAAA,uBACEG,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,UAAA,EAAA,EAAS,SAAA,EAAW,CAAA,EAAG,OAAO,IAAI,CAAA,CAAA,EAAI,UAAA,CAAW,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,IAAA,EAAK,MAAA,EAAO,QAAQ,WAAA,EAAa,CAAA;AAAA,IAChG,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAtbjC,MAAA,IAAAF,GAAAA,EAAAC,KAAAW,GAAAA,EAAAG,GAAAA;AAubQ,MAAA,MAAM,QAAOf,GAAAA,GAAA,IAAA,CAAK,SAAL,IAAA,GAAAA,GAAAA,GAAa,KAAK,KAAA,GAAQ,GAAA;AACvC,MAAA,MAAM,SAAQC,GAAAA,GAAA,IAAA,CAAK,KAAA,KAAL,IAAA,GAAAA,MAAc,IAAA,CAAK,KAAA;AACjC,MAAA,MAAM,QAAOW,GAAAA,GAAA,IAAA,CAAK,SAAL,IAAA,GAAAA,GAAAA,GAAa,KAAK,KAAA,GAAQ,IAAA;AACvC,MAAA,MAAM,OAAMG,GAAAA,GAAA,IAAA,CAAK,QAAL,IAAA,GAAAA,GAAAA,GAAY,KAAK,KAAA,GAAQ,IAAA;AACrC,MAAA,MAAM,IAAI,gBAAA,CAAiB,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,QAAQ,YAAY,CAAA;AACjE,MAAA,MAAM,UAAU,KAAA,IAAS,IAAA;AACzB,MAAA,MAAM,OAAA,GAAU,WAAW,IAAA,CAAK,GAAA,CAAI,MAAM,KAAK,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAClE,MAAA,MAAM,UAAA,GAAa,WAAW,IAAA,CAAK,GAAA,CAAI,MAAM,KAAK,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AACrE,MAAA,uBACEZ,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,OAAA,GAAU,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA;AAAA,YAChE,EAAA,EAAI,CAAA;AAAA,YACJ,EAAA,EAAI,CAAA;AAAA,YACJ,EAAA,EAAI,UAAA,CAAW,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AAAA,YACrC,EAAA,EAAI,UAAA,CAAW,GAAA,EAAK,IAAA,EAAM,MAAM,IAAI;AAAA;AAAA,SACtC;AAAA,wBACAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,GAAG,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,OAAA,GAAU,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA;AAAA,YAC/D,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,aAAa,OAAO,CAAA;AAAA,YACxC,KAAA,EAAO,SAAA;AAAA,YACP,CAAA,EAAG,IAAI,SAAA,GAAY,CAAA;AAAA,YACnB,CAAA,EAAG;AAAA;AAAA,SACL;AAAA,QACC,6BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,OAAO,UAAA,EAAY,UAAA,EAAW,QAAA,EAAS,CAAA,EAAM,GAAG,OAAA,GAAU,CAAA,EACxE,QAAA,EAAA,WAAA,CAAY,KAAK,GACpB,CAAA,GACE;AAAA,OAAA,EAAA,EAnBE,KAAK,KAoBb,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,IAAA,EAAM,YAAY,MAAA,EAAQ,IAAA,EAAM,MAAK,EAA0B;AACtF,EAAA,MAAM,YAAA,GAAe,sBAAA,CAAuB,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAC7D,EAAA,MAAM,WAAW,YAAA,GAAe,CAAA;AAEhC,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,eAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AAjejC,IAAA,IAAAF,GAAAA,EAAAC,GAAAA,EAAAW,GAAAA,EAAAG,GAAAA,EAAAc,GAAAA;AAkeQ,IAAA,MAAM,OAAM7B,GAAAA,GAAA,IAAA,CAAK,QAAL,IAAA,GAAAA,GAAAA,GAAY,KAAK,KAAA,GAAQ,GAAA;AACrC,IAAA,MAAM,MAAKC,GAAAA,GAAA,IAAA,CAAK,OAAL,IAAA,GAAAA,GAAAA,GAAW,KAAK,KAAA,GAAQ,IAAA;AACnC,IAAA,MAAM,UAASW,GAAAA,GAAA,IAAA,CAAK,MAAA,KAAL,IAAA,GAAAA,MAAe,IAAA,CAAK,KAAA;AACnC,IAAA,MAAM,MAAKG,GAAAA,GAAA,IAAA,CAAK,OAAL,IAAA,GAAAA,GAAAA,GAAW,KAAK,KAAA,GAAQ,IAAA;AACnC,IAAA,MAAM,QAAOc,GAAAA,GAAA,IAAA,CAAK,QAAL,IAAA,GAAAA,GAAAA,GAAY,KAAK,KAAA,GAAQ,IAAA;AACtC,IAAA,MAAM,IAAI,gBAAA,CAAiB,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,QAAQ,YAAY,CAAA;AACjE,IAAA,MAAM,WAAA,GAAc,UAAA,CAAW,MAAA,EAAQ,KAAA,GAAQ,eAAe,MAAM,CAAA;AACpE,IAAA,uBACE1B,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,IAAI,UAAA,CAAW,GAAA,EAAK,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA,EAAG,EAAA,EAAI,UAAA,CAAW,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA,EAAG,CAAA;AAAA,sBAC/IA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,EAAA,EAAI,CAAA,GAAI,WAAW,CAAA,EAAG,EAAA,EAAI,CAAA,GAAI,QAAA,GAAW,CAAA,EAAG,EAAA,EAAI,UAAA,CAAW,GAAA,EAAK,MAAM,IAAA,EAAM,IAAI,CAAA,EAAG,EAAA,EAAI,UAAA,CAAW,GAAA,EAAK,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA,EAAG,CAAA;AAAA,sBAC5KA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,EAAA,EAAI,CAAA,GAAI,WAAW,CAAA,EAAG,EAAA,EAAI,CAAA,GAAI,QAAA,GAAW,CAAA,EAAG,EAAA,EAAI,UAAA,CAAW,IAAA,EAAM,MAAM,IAAA,EAAM,IAAI,CAAA,EAAG,EAAA,EAAI,UAAA,CAAW,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA,EAAG,CAAA;AAAA,sBAC9KA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,IAAI,IAAI,WAAW,CAAA,CAAA;AAAA,UACxC,MAAA,EAAQ,UAAA,CAAW,EAAA,EAAI,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA,GAAI,UAAA,CAAW,EAAA,EAAI,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,UAC1E,KAAA,EAAO,QAAA;AAAA,UACP,CAAA,EAAG,IAAI,QAAA,GAAW,CAAA;AAAA,UAClB,CAAA,EAAG,UAAA,CAAW,EAAA,EAAI,IAAA,EAAM,MAAM,IAAI;AAAA;AAAA,OACpC;AAAA,sBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,WAAA,EAAY,GAAA,EAAI,EAAA,EAAI,IAAI,QAAA,GAAW,CAAA,EAAG,EAAA,EAAI,CAAA,GAAI,QAAA,GAAW,CAAA,EAAG,EAAA,EAAI,UAAA,CAAW,QAAQ,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA,EAAG,IAAI,UAAA,CAAW,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA,EAAG,CAAA;AAAA,MACjM,UAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,MAAA,CAAO,UAAA,EAAY,YAAW,QAAA,EAAS,CAAA,EAAM,GAAG,UAAA,CAAW,IAAA,EAAM,MAAM,IAAA,EAAM,IAAI,IAAI,CAAA,EACnG,QAAA,EAAA,WAAA,CAAY,MAAM,CAAA,EACrB,CAAA,GACE;AAAA,KAAA,EAAA,EAhBE,KAAK,KAiBb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,aAAA,CAAc,OAAe,QAAA,EAAkB;AACtD,EAAA,IAAI,WAAW,CAAA,EAAG;AAChB,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA,CAAM,UAAU,QAAA,EAAU;AAC5B,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,GAAG,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,QAAA,GAAW,CAAC,CAAC,CAAA,MAAA,CAAA;AACxC;AAEA,SAAS,QAAQ,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AAC1E,EAAA,MAAM,GAAA,GAAM,CAAA;AACZ,EAAA,MAAM,WAAA,GAAc,EAAA;AACpB,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,MAAM,KAAA,MAAW;AAAA,IACvC,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,KAAA;AAAA,IACA,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAK;AAAA,GAC/B,CAAE,CAAA;AACF,EAAA,MAAM,MAAA,GAAS,oBAAA;AAAA,IACb,KAAA;AAAA,IACA,IAAA,CAAK,QAAA;AAAA,IACL,KAAK,GAAA,GAAM,WAAA;AAAA,IACX,IAAA,CAAK,YAAY,IAAA,CAAK,QAAA;AAAA,IACtB,QAAA,CAAS,IAAI,CAAA,GAAI;AAAA,GACnB;AAEA,EAAA,uBACEC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBAClBD,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,iBAAiB,CAAA,CAAA,EAAI,UAAA,CAAW,MAAA,EAAQ,KAAA,CAAM,UAAA,GAAa,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,QAEtG,UAAA,EAAW,QAAA;AAAA,QACX,CAAA,EAAG,KAAA,CAAM,CAAA,GAAI,KAAA,CAAM,KAAA,GAAQ,CAAA;AAAA,QAC3B,CAAA,EAAG,KAAK,GAAA,GAAM,EAAA;AAAA,QAEb,QAAA,EAAA,KAAA,CAAM;AAAA,OAAA;AAAA,MALF,KAAA,CAAM;AAAA,KAOd,CAAA;AAAA,IACA,MAAA,CAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AA5iBlC,MAAA,IAAAF,GAAAA,EAAAC,GAAAA;AA6iBQ,MAAA,MAAM,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,QAAQ,GAAG,CAAA;AAC1C,MAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,SAAS,GAAG,CAAA;AAC5C,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,CAAA,GAAI,GAAA,GAAM,CAAA;AACzB,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,CAAA,GAAI,GAAA,GAAM,CAAA;AACzB,MAAA,MAAM,cAAaD,GAAAA,GAAA,IAAA,CAAK,UAAA,KAAL,IAAA,GAAAA,MAAmB,IAAA,CAAK,KAAA;AAC3C,MAAA,MAAM,SAAA,GAAY,KAAA,IAAS,EAAA,IAAM,MAAA,IAAU,EAAA;AAC3C,MAAA,MAAM,SAAA,GAAY,UAAA,IAAc,KAAA,IAAS,EAAA,IAAM,MAAA,IAAU,EAAA;AAEzD,MAAA,uBACEG,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,GAAG,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,UAAA,GAAa,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,YAClF,MAAA;AAAA,YACA,KAAA;AAAA,YACA,CAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QACC,SAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,MAAA,CAAO,YAAA,EAAc,UAAA,EAAW,QAAA,EAAS,CAAA,EAAG,CAAA,GAAI,QAAQ,CAAA,EAAG,CAAA,EAAG,IAAI,MAAA,GAAS,CAAA,IAAK,YAAY,EAAA,GAAK,CAAA,CAAA,EAC/G,QAAA,EAAA,IAAA,CAAK,KAAA,EACR,CAAA,GACE,IAAA;AAAA,wBACJA,GAAAA,CAAC,eAAA,EAAA,EAAgB,MAAM,SAAA,EAAW,MAAA,EAAgB,GAAG,CAAA,GAAI,KAAA,GAAQ,CAAA,EAAG,CAAA,EAAG,IAAI,MAAA,GAAS,CAAA,GAAI,IACrF,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EACzB;AAAA,OAAA,EAAA,EAfM,CAAA,EAAA,CAAGD,GAAAA,GAAA,IAAA,CAAK,KAAA,KAAL,IAAA,GAAAA,MAAc,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAgB7C,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,SAAS,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AAC3E,EAAA,MAAM,EAAA,GAAA,CAAM,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,IAAa,CAAA;AAC9C,EAAA,MAAM,EAAA,GAAA,CAAM,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,IAAU,CAAA;AACtC,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,EAAK,SAAS,GAAA,GAAM,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA,IAAK,CAAA;AACjE,EAAA,IAAI,KAAA,GAAQ,CAAC,IAAA,CAAK,EAAA,GAAK,CAAA;AAEvB,EAAA,uBACEC,GAAAA,CAAC,GAAA,EAAA,EACE,eAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACzB,IAAA,MAAM,KAAA,GAAS,IAAA,CAAK,KAAA,GAAQ,KAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAC/C,IAAA,MAAM,KAAA,GAAQ,EAAA,GAAM,KAAA,GAAQ,CAAA,GAAK,EAAA;AACjC,IAAA,MAAM,QAAQ,KAAA,GAAQ,EAAA;AACtB,IAAA,MAAM,KAAA,GAAQ,KAAA;AACd,IAAA,MAAM,MAAM,KAAA,GAAQ,KAAA;AACpB,IAAA,KAAA,GAAQ,GAAA;AACR,IAAA,MAAM,QAAA,GAAW,KAAA,GAAQ,IAAA,CAAK,EAAA,GAAK,CAAA,GAAI,CAAA;AACvC,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,CAAA,EAAG,EAAA,GAAK,KAAA,GAAQ,IAAA,CAAK,IAAI,KAAK,CAAA;AAAA,MAC9B,CAAA,EAAG,EAAA,GAAK,KAAA,GAAQ,IAAA,CAAK,IAAI,KAAK;AAAA,KAChC;AACA,IAAA,MAAM,QAAA,GAAW;AAAA,MACf,CAAA,EAAG,EAAA,GAAK,KAAA,GAAQ,IAAA,CAAK,IAAI,GAAG,CAAA;AAAA,MAC5B,CAAA,EAAG,EAAA,GAAK,KAAA,GAAQ,IAAA,CAAK,IAAI,GAAG;AAAA,KAC9B;AACA,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,CAAA,EAAG,EAAA,GAAK,KAAA,GAAQ,IAAA,CAAK,IAAI,GAAG,CAAA;AAAA,MAC5B,CAAA,EAAG,EAAA,GAAK,KAAA,GAAQ,IAAA,CAAK,IAAI,GAAG;AAAA,KAC9B;AACA,IAAA,MAAM,QAAA,GAAW;AAAA,MACf,CAAA,EAAG,EAAA,GAAK,KAAA,GAAQ,IAAA,CAAK,IAAI,KAAK,CAAA;AAAA,MAC9B,CAAA,EAAG,EAAA,GAAK,KAAA,GAAQ,IAAA,CAAK,IAAI,KAAK;AAAA,KAChC;AACA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,CAAA,EAAA,EAAK,UAAA,CAAW,CAAC,CAAA,CAAA,EAAI,WAAW,CAAC,CAAA,CAAA;AAAA,MACjC,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,GAAA,EAAM,QAAQ,CAAA,GAAA,EAAM,QAAA,CAAS,CAAC,CAAA,CAAA,EAAI,QAAA,CAAS,CAAC,CAAA,CAAA;AAAA,MAC/D,CAAA,EAAA,EAAK,UAAA,CAAW,CAAC,CAAA,CAAA,EAAI,WAAW,CAAC,CAAA,CAAA;AAAA,MACjC,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,GAAA,EAAM,QAAQ,CAAA,GAAA,EAAM,QAAA,CAAS,CAAC,CAAA,CAAA,EAAI,QAAA,CAAS,CAAC,CAAA,CAAA;AAAA,MAC/D;AAAA,KACF,CAAE,KAAK,GAAG,CAAA;AACV,IAAA,MAAM,QAAA,GAAA,CAAY,QAAQ,GAAA,IAAO,CAAA;AACjC,IAAA,MAAM,MAAA,GAAA,CAAU,QAAQ,KAAA,IAAS,CAAA;AACjC,IAAA,MAAM,EAAA,GAAK,EAAA,GAAK,MAAA,GAAS,IAAA,CAAK,IAAI,QAAQ,CAAA;AAC1C,IAAA,MAAM,EAAA,GAAK,EAAA,GAAK,MAAA,GAAS,IAAA,CAAK,IAAI,QAAQ,CAAA;AAC1C,IAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,OAAO,KAAK,CAAA,CAAA,EAAI,UAAA,CAAW,MAAA,EAAQ,KAAK,CAAC,CAAA,CAAA,EAAI,CAAA,EAAG,IAAA,EAAM,SAAS,GAAA,EAAK,CAAA;AAAA,sBACxFA,GAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,YAAY,MAAA,EAAgB,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,GAAK,CAAA,EAC/D,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EACzB;AAAA,KAAA,EAAA,EAJM,KAAK,KAKb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,iBAAA,CAAkB,QAAgC,IAAA,EAAsB;AAC/E,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,OAAO,UAAA,CAAW,QAAQ,CAAC,CAAA;AAAA,EAC7B;AAEA,EAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,IAAA,OAAO,UAAA,CAAW,QAAQ,CAAC,CAAA;AAAA,EAC7B;AAEA,EAAA,OAAO,UAAA,CAAW,QAAQ,CAAC,CAAA;AAC7B;AAEA,SAAS,MAAA,CAAO,EAAE,IAAA,EAAM,MAAA,EAAO,EAAmD;AAChF,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,QAAA;AACpC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,GAAA;AAClC,EAAA,MAAM,EAAE,OAAO,WAAA,EAAY,GAAI,aAAa,eAAA,EAAiB,eAAA,EAAiB,OAAO,MAAA,EAAQ;AAAA,IAC3F,SAAA,EAAW,CAAA;AAAA,IACX,WAAA,EAAa,EAAA;AAAA,IACb,IAAA,EAAM,EAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACP,CAAA;AAED,EAAA,uBACEC,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,CAAA,UAAA,EAAa,KAAK,QAAQ,CAAA,EAAA,EAAK,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA,EAClD,QAAA,EAAA;AAAA,IAAA,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACtBD,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,MAAA,CAAO,UAAU,IAAI,iBAAA,CAAkB,MAAA,EAAQ,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA;AAAA,QAC7E,GAAG,IAAA,CAAK;AAAA,OAAA;AAAA,MACH,QAAQ,KAAK,CAAA;AAAA,KAErB,CAAA;AAAA,IACA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,MAAA,MAAM,WAAA,GAAc,iBAAA,CAAkB,MAAA,EAAQ,IAAA,CAAK,IAAI,CAAA;AACvD,MAAA,MAAM,UAAA,GAAa,iBAAA,CAAkB,IAAA,CAAK,KAAK,CAAA;AAE/C,MAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,UAAK,SAAA,EAAW,CAAA,EAAG,OAAO,UAAU,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,MAAA,EAAQ,KAAK,MAAA,EAAQ,KAAA,EAAO,KAAK,KAAA,EAAO,CAAA,EAAG,KAAK,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA,EAAG,CAAA;AAAA,QACrH,IAAA,CAAK,aAAA,KAAkB,QAAA,mBACtBC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAW,MAAA,CAAO,cAAA;AAAA,cAClB,MAAA,EAAQ,EAAA;AAAA,cACR,EAAA,EAAG,GAAA;AAAA,cACH,KAAA,EAAO,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,KAAA,CAAM,MAAA,GAAS,MAAM,EAAE,CAAA;AAAA,cAChD,CAAA,EAAG,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,IAAI,EAAA,EAAI,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,GAAA,GAAM,EAAE,CAAA,GAAI,CAAA,GAAI,KAAK,KAAA,GAAQ,CAAA;AAAA,cAC1E,CAAA,EAAG,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,SAAS,CAAA,GAAI;AAAA;AAAA,WAChC;AAAA,0BACAA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAW,MAAA,CAAO,iBAAA;AAAA,cAClB,UAAA,EAAW,QAAA;AAAA,cACX,CAAA,EAAG,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,KAAA,GAAQ,CAAA;AAAA,cACzB,CAAA,EAAG,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,SAAS,CAAA,GAAI,CAAA;AAAA,cAE7B,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,SAAA,EACF,oBAEAC,IAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,WAAW,MAAA,CAAO,eAAA;AAAA,YAClB,UAAA,EAAY,IAAA,CAAK,aAAA,KAAkB,MAAA,GAAS,KAAA,GAAQ,OAAA;AAAA,YACpD,CAAA,EAAG,IAAA,CAAK,aAAA,KAAkB,MAAA,GAAS,IAAA,CAAK,IAAI,CAAA,GAAI,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,KAAA,GAAQ,CAAA;AAAA,YACtE,CAAA,EAAG,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,SAAS,CAAA,GAAI,CAAA;AAAA,YAE9B,QAAA,EAAA;AAAA,8BAAAD,IAAC,OAAA,EAAA,EAAM,SAAA,EAAW,OAAO,cAAA,EAAgB,CAAA,EAAG,KAAK,aAAA,KAAkB,MAAA,GAAS,IAAA,CAAK,CAAA,GAAI,IAAI,IAAA,CAAK,CAAA,GAAI,KAAK,KAAA,GAAQ,CAAA,EAC5G,eAAK,KAAA,EACR,CAAA;AAAA,8BACAA,IAAC,OAAA,EAAA,EAAM,SAAA,EAAW,OAAO,eAAA,EAAiB,EAAA,EAAG,MAAK,CAAA,EAAG,IAAA,CAAK,kBAAkB,MAAA,GAAS,IAAA,CAAK,IAAI,CAAA,GAAI,IAAA,CAAK,IAAI,IAAA,CAAK,KAAA,GAAQ,GACrH,QAAA,EAAA,UAAA,EACH;AAAA;AAAA;AAAA;AACF,OAAA,EAAA,EAlCI,KAAK,EAoCb,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,YAAY,MAAA,EAAQ,IAAA,EAAM,MAAK,EAA0B;AAptB9F,EAAA,IAAAF,GAAAA,EAAAC,GAAAA;AAqtBE,EAAA,MAAM,MAAA,GAAA,CAASA,GAAAA,GAAAA,CAAAD,GAAAA,GAAA,MAAA,CAAO,CAAC,CAAA,KAAR,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAW,MAAA,CAAO,MAAA,KAAlB,IAAA,GAAAC,GAAAA,GAA4B,CAAA;AAC3C,EAAA,MAAM,SAAS,KAAA,CAAM,IAAA;AAAA,IAAK,EAAE,QAAQ,MAAA,EAAO;AAAA,IAAG,CAAC,CAAA,EAAG,KAAA,KAChD,MAAA,CAAO,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,KAAK,GAAG,CAAC;AAAA,GAC1D;AACA,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,MAAM,CAAA;AAEjC,EAAA,uBACEC,GAAAA,CAAC,GAAA,EAAA,EACE,iBAAO,GAAA,CAAI,CAAC,MAAM,WAAA,KAAgB;AA7tBzC,IAAA,IAAAF,GAAAA;AA8tBQ,IAAA,IAAI,MAAA,GAAS,CAAA;AACb,IAAA,MAAM,YAAY,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,KAAA,KAAU;AAClD,MAAA,MAAM,MAAM,MAAA,GAAS,KAAA;AACrB,MAAA,MAAA,GAAS,GAAA;AACT,MAAA,OAAO;AAAA,QACL,CAAA,EAAG,eAAA,CAAgB,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA;AAAA,QACtC,CAAA,EAAG,UAAA,CAAW,GAAA,EAAK,IAAA,EAAM,KAAK,IAAI;AAAA,OACpC;AAAA,IACF,CAAC,CAAA;AACD,IAAA,MAAA,IAAU,IAAA,CAAK,OAAO,MAAA,CAAO,CAAC,KAAK,KAAA,KAAU,GAAA,GAAM,OAAO,CAAC,CAAA;AAC3D,IAAA,MAAM,UAAA,GAAa,CAAC,GAAG,IAAA,CAAK,MAAM,CAAA,CAAE,OAAA,EAAQ,CAAE,GAAA,CAAI,CAAC,KAAA,EAAO,YAAA,KAAiB;AACzE,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,CAAA,GAAI,YAAA;AACvC,MAAA,MAAA,IAAU,KAAA;AACV,MAAA,OAAO;AAAA,QACL,CAAA,EAAG,eAAA,CAAgB,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA;AAAA,QACtC,CAAA,EAAG,UAAA,CAAW,MAAA,EAAQ,IAAA,EAAM,KAAK,IAAI;AAAA,OACvC;AAAA,IACF,CAAC,CAAA;AACD,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,CAAA,EAAA,EAAK,UAAU,CAAC,CAAA,CAAE,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,CAAC,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,MACrC,GAAG,SAAA,CAAU,KAAA,CAAM,CAAC,EAAE,GAAA,CAAI,CAAC,KAAA,KAAU,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAE,CAAA;AAAA,MAC9D,GAAG,UAAA,CAAW,GAAA,CAAI,CAAC,KAAA,KAAU,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAE,CAAA;AAAA,MACtD;AAAA,KACF,CAAE,KAAK,GAAG,CAAA;AACV,IAAA,MAAM,OAAA,GAAU,SAAA,CAAU,SAAA,CAAU,MAAA,GAAS,CAAC,CAAA;AAC9C,IAAA,MAAM,QAAA,GAAW,WAAW,CAAC,CAAA;AAC7B,IAAA,uBACEG,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,UAAA,CAAW,MAAA,EAAQ,WAAW,CAAC,CAAA,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AAAA,sBAC/EA,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,UAAA;AAAA,UACN,MAAA;AAAA,UACA,CAAA,EAAG,QAAQ,CAAA,GAAI,CAAA;AAAA,UACf,CAAA,EAAA,CAAI,OAAA,CAAQ,CAAA,GAAI,QAAA,CAAS,KAAK,CAAA,GAAI,CAAA;AAAA,UAEjC,QAAA,EAAA,WAAA,CAAA,CAAYF,GAAAA,GAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA,KAAlC,IAAA,GAAAA,GAAAA,GAAuC,CAAC;AAAA;AAAA;AACvD,KAAA,EAAA,EATM,KAAK,EAUb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,UAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAA,EAAY,QAAO,EAA0B;AAC9E,EAAA,uBACEE,GAAAA,CAAC,GAAA,EAAA,EACE,iBAAO,GAAA,CAAI,CAAC,MAAM,WAAA,KAAgB;AACjC,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,KAAK,MAAM,CAAA;AACtC,IAAA,MAAM,SAAS,WAAA,GAAc,EAAA;AAC7B,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AACzC,IAAA,MAAM,SAAS,IAAA,CAAK,MAAA,CACjB,GAAA,CAAI,CAAC,OAAO,KAAA,KAAU;AACrB,MAAA,MAAM,IAAI,eAAA,CAAgB,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,OAAO,MAAM,CAAA;AACzD,MAAA,MAAM,IAAI,IAAA,CAAK,GAAA,GAAM,MAAA,GAAA,CAAU,CAAA,GAAI,QAAQ,GAAA,IAAO,EAAA;AAClD,MAAA,OAAO,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAAA,IAClB,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AACX,IAAA,MAAM,WAAA,GAAc,UAAA,CAAW,MAAA,EAAQ,WAAW,CAAA;AAClD,IAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,UAAA,EAAA,EAAS,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,IAAA,EAAK,MAAA,EAAO,MAAA,EAAgB,CAAA;AAAA,sBAClFA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,IAAI,IAAI,WAAW,CAAA,CAAA;AAAA,UACxC,CAAA,EAAG,KAAK,eAAA,CAAgB,IAAA,EAAM,GAAG,IAAA,CAAK,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA,EAAI,KAAK,GAAA,GAAM,MAAA,GAAS,EAAE,CAAA,GAAA,EAAM,IAAA,CAAK,OACtF,GAAA,CAAI,CAAC,OAAO,KAAA,KAAU;AACrB,YAAA,MAAM,IAAI,eAAA,CAAgB,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,OAAO,MAAM,CAAA;AACzD,YAAA,MAAM,IAAI,IAAA,CAAK,GAAA,GAAM,MAAA,GAAA,CAAU,CAAA,GAAI,QAAQ,GAAA,IAAO,EAAA;AAClD,YAAA,OAAO,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAAA,UAClB,CAAC,EACA,IAAA,CAAK,KAAK,CAAC,CAAA,GAAA,EAAM,eAAA,CAAgB,MAAM,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA,EAAG,IAAA,CAAK,OAAO,MAAM,CAAC,IAAI,IAAA,CAAK,GAAA,GAAM,SAAS,EAAE,CAAA,EAAA;AAAA;AAAA,OACjH;AAAA,sBACAA,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,UAAA;AAAA,UACN,MAAA;AAAA,UACA,GAAG,eAAA,CAAgB,IAAA,EAAM,SAAA,EAAW,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,UACtD,GAAG,IAAA,CAAK,GAAA,GAAM,UAAU,CAAA,GAAI,GAAA,GAAM,OAAO,EAAA,GAAK,CAAA;AAAA,UAE7C,sBAAY,GAAG;AAAA;AAAA;AAClB,KAAA,EAAA,EAnBM,KAAK,EAoBb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,IAAA,EAAM,MAAA,EAAQ,YAAY,MAAA,EAAQ,IAAA,EAAM,MAAK,EAA0B;AAC5F,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,QAAA,EAAA,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,EAAM,WAAA,KAAgB;AAC7C,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,KAAK,MAAM,CAAA;AACtC,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AACzC,IAAA,MAAM,QAAQ,IAAA,CAAK,MAAA;AACnB,IAAA,MAAM,OAAO,IAAA,CAAK,MAAA,CACf,GAAA,CAAI,CAAC,OAAO,KAAA,KAAU;AACrB,MAAA,MAAM,IAAI,eAAA,CAAgB,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,OAAO,MAAM,CAAA;AACzD,MAAA,MAAM,CAAA,GAAI,UAAA,CAAW,KAAA,EAAO,IAAA,EAAM,MAAM,IAAI,CAAA;AAC5C,MAAA,OAAO,KAAA,KAAU,CAAA,GAAI,CAAA,EAAA,EAAK,CAAC,IAAI,KAAK,CAAA,GAAA,EAAM,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,GAAK,CAAA,EAAA,EAAK,CAAC,IAAI,CAAC,CAAA,CAAA;AAAA,IAClE,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AACX,IAAA,MAAM,QAAQ,eAAA,CAAgB,IAAA,EAAM,SAAA,EAAW,IAAA,CAAK,OAAO,MAAM,CAAA;AACjE,IAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,GAAA,EAAK,IAAA,EAAM,MAAM,IAAI,CAAA;AAC9C,IAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,GAAG,MAAA,CAAO,IAAI,IAAI,UAAA,CAAW,MAAA,EAAQ,WAAW,CAAC,CAAA,CAAA;AAAA,UAC5D,CAAA,EAAG,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,gBAAgB,IAAA,EAAM,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,GAAG,IAAA,CAAK,MAAA,CAAO,MAAM,CAAC,IAAI,KAAK,CAAA,EAAA;AAAA;AAAA,OAC5F;AAAA,sBACAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,UAAA,EAAY,MAAA,EAAgB,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,KAAA,GAAQ,CAAA,EACrE,QAAA,EAAA,WAAA,CAAY,GAAG,CAAA,EAClB;AAAA,KAAA,EAAA,EAPM,KAAK,EAQb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,IAAA,EAAM,IAAA,EAAM,YAAY,MAAA,EAAQ,IAAA,EAAM,MAAK,EAA0B;AACzF,EAAA,MAAM,YAAA,GAAe,qBAAA,CAAsB,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAE5D,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,eAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACzB,IAAA,MAAM,IAAI,gBAAA,CAAiB,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,QAAQ,YAAY,CAAA;AACjE,IAAA,MAAM,MAAA,GAAA,CAAW,IAAA,CAAK,KAAA,GAAQ,IAAA,IAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,GAAO,IAAI,CAAA,GAAK,QAAA,CAAS,IAAI,CAAA;AAC/E,IAAA,MAAM,CAAA,GAAI,KAAK,MAAA,GAAS,MAAA;AACxB,IAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,MAAM,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,KAAA,GAAQ,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,UAChF,EAAA,EAAI,CAAA;AAAA,UACJ,EAAA,EAAI,IAAI,MAAA,GAAS,CAAA;AAAA,UACjB,EAAA,EAAI,YAAA;AAAA,UACJ,IAAI,MAAA,GAAS,CAAA;AAAA,UACb,WAAA,EAAY;AAAA;AAAA,OACd;AAAA,MACC,6BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,OAAO,UAAA,EAAY,UAAA,EAAW,QAAA,EAAS,CAAA,EAAM,GAAG,CAAA,GAAI,CAAA,EAClE,sBAAY,IAAA,CAAK,KAAK,GACzB,CAAA,GACE;AAAA,KAAA,EAAA,EAbE,KAAK,KAcb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,WAAW,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AAC7E,EAAA,MAAM,IAAA,GAAO,CAAA;AACb,EAAA,MAAM,IAAA,GAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,IAAI,CAAC,CAAA;AACtD,EAAA,MAAM,GAAA,GAAM,CAAA;AACZ,EAAA,MAAM,OAAO,IAAA,CAAK,GAAA;AAAA,IAAA,CACf,KAAK,SAAA,GAAY,IAAA,CAAK,QAAA,GAAW,GAAA,IAAO,OAAO,CAAA,CAAA,IAAM,IAAA;AAAA,IAAA,CACrD,QAAA,CAAS,IAAI,CAAA,GAAI,GAAA,IAAO,OAAO,CAAA,CAAA,IAAM;AAAA,GACxC,GAAI,IAAA;AAEJ,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,eAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACzB,IAAA,MAAM,IAAI,IAAA,CAAK,QAAA,GAAY,QAAQ,IAAA,IAAS,IAAA,GAAO,IAAI,GAAA,CAAA,GAAO,IAAA;AAC9D,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,QAAQ,IAAI,CAAA,IAAK,IAAA,GAAO,GAAA,GAAM,GAAA,CAAA,GAAO,IAAA;AACrE,IAAA,MAAM,OAAA,GAAU,IAAA,GAAQ,IAAA,CAAK,KAAA,GAAQ,GAAA,GAAO,IAAA;AAC5C,IAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,GAAG,MAAA,CAAO,GAAG,IAAI,UAAA,CAAW,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,UACjD,OAAA;AAAA,UACA,QAAQ,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAA,GAAI,IAAI,CAAA,CAAA,EAAI,CAAA,GAAI,IAAI,CAAA,CAAA,EAAI,IAAI,IAAA,GAAO,CAAC,IAAI,CAAA,GAAI,IAAI,IAAI,CAAA,GAAI,IAAA,GAAO,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAA,GAAI,IAAI,CAAA,CAAA,EAAI,IAAI,IAAI,CAAA,CAAA,EAAI,CAAA,GAAI,IAAA,GAAO,CAAC,CAAA,CAAA,EAAI,CAAA,GAAI,IAAI,CAAA,CAAA,EAAI,CAAA,GAAI,OAAO,CAAC,CAAA;AAAA;AAAA,OAC3J;AAAA,sBACAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,UAAA,EAAY,MAAA,EAAgB,CAAA,EAAM,CAAA,EAAG,CAAA,GAAI,CAAA,EAC7D,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EACzB;AAAA,KAAA,EAAA,EARM,KAAK,KASb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,aAAa,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AAC/E,EAAA,MAAM,EAAA,GAAA,CAAM,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,IAAa,CAAA;AAC9C,EAAA,MAAM,EAAA,GAAA,CAAM,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,IAAU,CAAA;AACtC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,SAAA,GAAY,KAAK,QAAA,EAAU,QAAA,CAAS,IAAI,CAAC,CAAA,GAAI,IAAA;AAC1E,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,EAAK,SAAS,GAAA,GAAM,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA,IAAK,CAAA;AACjE,EAAA,IAAI,KAAA,GAAQ,CAAC,IAAA,CAAK,EAAA,GAAK,CAAA;AAEvB,EAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,MAAA,CAAO,SAAA,EAAW,IAAQ,EAAA,EAAQ,IAAA,EAAK,MAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAA,IAC3E,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACzB,MAAA,MAAM,KAAA,GAAS,IAAA,CAAK,KAAA,GAAQ,KAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAC/C,MAAA,MAAM,KAAA,GAAQ,KAAA;AACd,MAAA,MAAM,MAAM,KAAA,GAAQ,KAAA;AACpB,MAAA,KAAA,GAAQ,GAAA;AACR,MAAA,MAAM,KAAK,EAAA,GAAK,MAAA,GAAS,KAAK,GAAA,CAAA,CAAK,KAAA,GAAQ,OAAO,CAAC,CAAA;AACnD,MAAA,MAAM,KAAK,EAAA,GAAK,MAAA,GAAS,KAAK,GAAA,CAAA,CAAK,KAAA,GAAQ,OAAO,CAAC,CAAA;AACnD,MAAA,MAAM,KAAK,EAAA,GAAK,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,MAAM,GAAG,CAAA;AAC3C,MAAA,MAAM,KAAK,EAAA,GAAK,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,MAAM,GAAG,CAAA;AAC3C,MAAA,MAAM,QAAA,GAAA,CAAY,QAAQ,GAAA,IAAO,CAAA;AACjC,MAAA,MAAM,KAAK,EAAA,GAAA,CAAM,MAAA,GAAS,EAAA,IAAM,IAAA,CAAK,IAAI,QAAQ,CAAA;AACjD,MAAA,MAAM,KAAK,EAAA,GAAA,CAAM,MAAA,GAAS,EAAA,IAAM,IAAA,CAAK,IAAI,QAAQ,CAAA;AACjD,MAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,GAAG,MAAA,CAAO,IAAI,IAAI,UAAA,CAAW,MAAA,EAAQ,KAAK,CAAC,CAAA,CAAA;AAAA,YACtD,CAAA,EAAG,CAAA,EAAA,EAAK,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,GAAA,EAAM,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,YAC1C,IAAA,EAAK,MAAA;AAAA,YACL,WAAA,EAAa,CAAA,GAAK,IAAA,CAAK,KAAA,GAAQ,KAAA,GAAS;AAAA;AAAA,SAC1C;AAAA,wBACAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,YAAY,MAAA,EAAgB,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,GAAK,CAAA,EAC/D,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EACzB;AAAA,OAAA,EAAA,EATM,KAAK,KAUb,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,aAAa,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AAC/E,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,QAAA;AACpC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,GAAA;AAClC,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,KAAU,wBAAA,CAAyB,IAAA,EAAM,OAAO,MAAM,CAAA;AAErE,EAAA,uBACEC,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,CAAA,UAAA,EAAa,KAAK,QAAQ,CAAA,EAAA,EAAK,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA,EAClD,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBAChBD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,SAAA,EAAiC,EAAA,EAAI,IAAA,CAAK,IAAI,EAAA,EAAI,IAAA,CAAK,EAAA,EAAI,EAAA,EAAI,IAAA,CAAK,EAAA,EAAI,EAAA,EAAI,IAAA,CAAK,EAAA,EAAA,EAAjE,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAwD,CAC9G,CAAA;AAAA,IACA,MAAM,GAAA,CAAI,CAAC,IAAA,qBACVC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,SAAS,CAAA,CAAA,EAAI,UAAA,CAAW,MAAA,EAAQ,IAAA,CAAK,UAAA,GAAa,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,UAC7F,IAAI,IAAA,CAAK,CAAA;AAAA,UACT,IAAI,IAAA,CAAK,CAAA;AAAA,UACT,GAAG,IAAA,CAAK;AAAA;AAAA,OACV;AAAA,sBACAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,UAAA,EAAY,QAAgB,CAAA,EAAG,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA,GAAI,CAAA,EACvE,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EACzB;AAAA,KAAA,EAAA,EATM,IAAA,CAAK,EAUb,CACD;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,mBAAmB,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AACrF,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,QAAA;AACpC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,GAAA;AAClC,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,KAAU,wBAAA,CAAyB,IAAA,EAAM,OAAO,MAAM,CAAA;AAErE,EAAA,uBACEC,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,CAAA,UAAA,EAAa,KAAK,QAAQ,CAAA,EAAA,EAAK,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA,EAClD,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AA99BlC,MAAA,IAAAH,GAAAA;AA+9BQ,MAAA,MAAM,WAAA,GAAc,UAAA,CAAW,MAAA,EAAA,CAAA,CAASA,GAAAA,GAAA,IAAA,CAAK,eAAL,IAAA,GAAAA,GAAAA,GAAmB,CAAA,IAAK,cAAA,CAAe,MAAM,CAAA;AACrF,MAAA,uBACEE,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,GAAG,MAAA,CAAO,SAAS,IAAI,MAAA,CAAO,gBAAgB,IAAI,WAAW,CAAA,CAAA;AAAA,UAExE,IAAI,IAAA,CAAK,EAAA;AAAA,UACT,IAAI,IAAA,CAAK,EAAA;AAAA,UACT,IAAI,IAAA,CAAK,EAAA;AAAA,UACT,IAAI,IAAA,CAAK;AAAA,SAAA;AAAA,QAJJ,QAAQ,KAAK,CAAA;AAAA,OAKpB;AAAA,IAEJ,CAAC,CAAA;AAAA,IACA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,MAAA,MAAM,cAAc,UAAA,CAAW,MAAA,EAAQ,IAAA,CAAK,UAAA,GAAa,eAAe,MAAM,CAAA;AAC9E,MAAA,uBACEC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,QAAA,mBACJD,GAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,CAAA,EAAG,MAAA,CAAO,aAAa,CAAA,CAAA,EAAI,WAAW,IAAI,EAAA,EAAI,IAAA,CAAK,GAAG,EAAA,EAAI,IAAA,CAAK,GAAG,CAAA,EAAG,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG,CAAA,GACvG,IAAA;AAAA,wBACJA,GAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,CAAA,EAAG,MAAA,CAAO,SAAS,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,EAAA,EAAI,KAAK,CAAA,EAAG,EAAA,EAAI,KAAK,CAAA,EAAG,CAAA,EAAG,KAAK,MAAA,EAAQ,CAAA;AAAA,QAChG,KAAK,SAAA,mBACJA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,OAAO,UAAA,EAAY,UAAA,EAAW,UAAS,CAAA,EAAG,IAAA,CAAK,GAAG,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAC5E,QAAA,EAAA,IAAA,CAAK,OACR,CAAA,GACE,IAAA;AAAA,wBACJA,GAAAA,CAAC,eAAA,EAAA,EAAgB,MAAM,UAAA,EAAY,MAAA,EAAgB,GAAG,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,IAAA,CAAK,IAAI,IAAA,CAAK,MAAA,GAAS,IACrF,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EACzB;AAAA,OAAA,EAAA,EAZM,KAAK,EAab,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,cAAc,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AAChF,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,MAAM,KAAA,MAAW;AAAA,IACvC,KAAA;AAAA,IACA,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAK;AAAA,GAC/B,CAAE,CAAA;AAEF,EAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,KAAA,EAAO,IAAA,CAAK,YAAY,IAAA,CAAK,QAAA,EAAU,QAAA,CAAS,IAAI,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM;AACrG,IAAA,IAAI,CAAA,CAAE,KAAA,KAAU,CAAA,CAAE,KAAA,EAAO;AACvB,MAAA,OAAO,CAAA,CAAE,QAAQ,CAAA,CAAE,KAAA;AAAA,IACrB;AAEA,IAAA,OAAO,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAAA,EACjB,CAAC,CAAA;AAED,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,QAAA,GAAW,MAAA,CAAO,CAAA;AACjC,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,GAAM,MAAA,CAAO,CAAA;AAC5B,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,MAAO,MAAA,CAAO,CAAA,GAAI,CAAA,GAAK,GAAG,CAAC,CAAA;AAC7D,IAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,MAAA,CAAO,KAAA,EAAO,QAAQ,CAAA;AAClD,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAK,CAAA,IAAK,OAAO,CAAA,IAAK,EAAA;AAChD,IAAA,MAAM,YAAY,UAAA,IAAc,CAAC,MAAA,CAAO,QAAA,IAAY,OAAO,CAAA,IAAK,EAAA;AAEhE,IAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,QAAA,GAAW,OAAO,UAAA,GAAa,MAAA,CAAO,KAAK,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,MAAA,CAAO,UAAA,GAAa,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,UACjI,EAAA,EAAI,CAAA;AAAA,UACJ,EAAA,EAAI,CAAA;AAAA,UACJ,GAAG,MAAA,CAAO;AAAA;AAAA,OACZ;AAAA,MACC,4BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,OAAO,SAAA,EAAW,UAAA,EAAW,QAAA,EAAS,CAAA,EAAM,GAAG,CAAA,IAAK,SAAA,GAAY,EAAA,GAAK,CAAA,CAAA,EACnF,iBACH,CAAA,GACE,IAAA;AAAA,sBACJA,GAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,SAAA,EAAW,MAAA,EAAgB,CAAA,EAAM,CAAA,EAAG,CAAA,GAAI,EAAA,EAC5D,QAAA,EAAA,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA,EAC3B;AAAA,KAAA,EAAA,EAdM,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,CAAA,EAAI,MAAA,CAAO,KAAK,CAAA,CAAA,EAAI,MAAA,CAAO,QAAA,GAAW,GAAA,GAAM,GAAG,CAAA,CAetE,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,sBAAsB,IAAA,EAAgB;AAC7C,EAAA,MAAM,IAAA,GAAO,EAAA;AACb,EAAA,MAAM,IAAA,GAAO,CAAA;AACb,EAAA,MAAM,GAAA,GAAM,CAAA;AACZ,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AACvG,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,EAAO,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AAClE,EAAA,MAAM,MAAA,GAAS,eAAe,IAAI,CAAA;AAClC,EAAA,MAAM,MAAA,GAAS,SAAS,IAAI,CAAA;AAC5B,EAAA,MAAM,KAAA,GAAA,CAAS,MAAA,GAAS,GAAA,IAAO,IAAA,GAAO,CAAA,CAAA,IAAM,IAAA;AAC5C,EAAA,MAAM,KAAA,GAAA,CAAS,MAAA,GAAS,GAAA,IAAO,IAAA,GAAO,CAAA,CAAA,IAAM,IAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,aAAa,IAAI,CAAA;AAChC,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA;AAEpB,EAAA,OAAO,EAAE,MAAM,IAAA,EAAM,GAAA,EAAK,aAAa,SAAA,EAAW,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAO;AACjF;AAEO,SAAS,yBAAA,CAA0B,EAAE,IAAA,EAAM,MAAA,EAAO,EAAmD;AAC1G,EAAA,MAAM,EAAE,GAAA,EAAK,WAAA,EAAa,SAAA,EAAW,KAAA,EAAO,OAAO,MAAA,EAAQ,MAAA,EAAO,GAAI,qBAAA,CAAsB,IAAI,CAAA;AAEhG,EAAA,uBACEC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,WAAA,CAAY,GAAA,CAAI,CAAC,KAAA,EAAO,QAAA,qBACvBD,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,WAAW,MAAA,CAAO,UAAA;AAAA,QAElB,UAAA,EAAW,QAAA;AAAA,QACX,CAAA,EAAG,MAAA,GAAS,QAAA,IAAY,KAAA,GAAQ,OAAO,KAAA,GAAQ,CAAA;AAAA,QAC/C,GAAG,MAAA,GAAS,CAAA;AAAA,QAEX,QAAA,EAAA;AAAA,OAAA;AAAA,MALI;AAAA,KAOR,CAAA;AAAA,IACA,SAAA,CAAU,GAAA,CAAI,CAAC,KAAA,EAAO,6BACrBA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,WAAW,MAAA,CAAO,UAAA;AAAA,QAElB,UAAA,EAAW,KAAA;AAAA,QACX,CAAA,EAAG,KAAK,QAAA,GAAW,CAAA;AAAA,QACnB,GAAG,MAAA,GAAS,QAAA,IAAY,KAAA,GAAQ,GAAA,CAAA,GAAO,QAAQ,CAAA,GAAI,CAAA;AAAA,QAElD,QAAA,EAAA;AAAA,OAAA;AAAA,MALI;AAAA,KAOR;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,gBAAgB,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AAClF,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,KAAA,EAAO,OAAO,MAAA,EAAQ,MAAA,EAAO,GAAI,qBAAA,CAAsB,IAAI,CAAA;AACpF,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,KAAK,CAAC,CAAA;AAEzD,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAA,GAAO,IAAA,EAAK,EAAG,CAAC,CAAA,EAAG,KAAA,KAAU;AACjD,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,MAAM,CAAA;AACrC,IAAA,MAAM,MAAM,KAAA,GAAQ,IAAA;AACpB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,IAAI,CAAA;AACnC,IAAA,MAAM,CAAA,GAAI,MAAA,GAAS,GAAA,IAAO,KAAA,GAAQ,GAAA,CAAA;AAClC,IAAA,MAAM,CAAA,GAAI,MAAA,GAAS,GAAA,IAAO,KAAA,GAAQ,GAAA,CAAA;AAClC,IAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,GAAQ,GAAA;AAC3B,IAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,GAAG,MAAA,CAAO,GAAG,IAAI,UAAA,CAAW,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,UACjD,MAAA,EAAQ,KAAA;AAAA,UACR,OAAA,EAAS,OAAO,KAAA,GAAQ,IAAA;AAAA,UACxB,EAAA,EAAG,GAAA;AAAA,UACH,KAAA,EAAO,KAAA;AAAA,UACP,CAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,sBACAA,IAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,cAAc,KAAA,IAAS,EAAA,IAAM,KAAA,IAAS,EAAA,EAAI,MAAA,EAAgB,CAAA,EAAG,IAAI,KAAA,GAAQ,CAAA,EAAG,GAAG,CAAA,GAAI,KAAA,GAAQ,IAAI,CAAA,EACnH,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EACzB;AAAA,KAAA,EAAA,EAZM,KAaR,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,SAAS,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AAC3E,EAAA,MAAM,KAAA,GAAQ,oBAAoB,IAAI,CAAA;AACtC,EAAA,MAAM,CAAA,GAAA,CAAK,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,IAAU,CAAA;AACrC,EAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,WAAW,EAAA,EAAI,KAAA,CAAM,IAAA,EAAM,EAAA,EAAI,KAAA,CAAM,KAAA,EAAO,EAAA,EAAI,CAAA,EAAG,IAAI,CAAA,EAAG,CAAA;AAAA,IACjF,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACzB,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,IAAA,EAAM,KAAA,EAAO,KAAK,MAAM,CAAA;AACpD,MAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,IAAC,QAAA,EAAA,EAAO,SAAA,EAAW,GAAG,MAAA,CAAO,KAAK,IAAI,UAAA,CAAW,MAAA,EAAQ,QAAQ,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,CAAA,EAAG,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC/GA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,UAAA,EAAY,UAAA,EAAW,QAAA,EAAS,CAAA,EAAM,CAAA,EAAG,CAAA,GAAI,EAAA,EAClE,eAAK,KAAA,EACR,CAAA;AAAA,wBACAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,UAAA,EAAY,MAAA,EAAgB,CAAA,EAAM,CAAA,EAAG,CAAA,GAAI,EAAA,EAC7D,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EACzB;AAAA,OAAA,EAAA,EAPM,KAAK,KAQb,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,eAAA,CAAgB,MAAgB,QAAA,EAAkB;AACzD,EAAA,MAAM,YAAY,QAAA,CAAS,IAAI,IAAI,IAAA,CAAK,GAAA,CAAI,UAAU,CAAC,CAAA;AACvD,EAAA,MAAM,SAAA,GAAY,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,GAAA,CAAI,EAAA,EAAI,SAAA,GAAY,IAAI,CAAC,CAAA;AAC7D,EAAA,MAAM,IAAA,GAAO,CAAC,KAAA,KAAkB,IAAA,CAAK,MAAM,KAAA,GAAQ,SAAA,GAAA,CAAa,YAAY,SAAA,IAAa,CAAA;AAEzF,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,YAAY,CAAC,KAAA,KAAkB,KAAK,KAAK,CAAA,GAAI,YAAY,CAAA,GAAI;AAAA,GAC/D;AACF;AAEO,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAA4D;AAC1D,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,eAAA,CAAgB,IAAA,EAAM,KAAK,MAAM,CAAA;AAExD,EAAA,uBACEA,IAAC,GAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,IAAI,CAAC,IAAA,EAAM,0BACfA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAW,MAAA,CAAO,UAAA;AAAA,MAElB,UAAA,EAAW,KAAA;AAAA,MACX,CAAA,EAAG,KAAK,QAAA,GAAW,CAAA;AAAA,MACnB,CAAA,EAAG,WAAW,KAAK,CAAA;AAAA,MAElB,QAAA,EAAA,IAAA,CAAK;AAAA,KAAA;AAAA,IALD,IAAA,CAAK;AAAA,GAOb,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,WAAW,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AAC7E,EAAA,MAAM,EAAE,SAAA,EAAW,IAAA,KAAS,eAAA,CAAgB,IAAA,EAAM,KAAK,MAAM,CAAA;AAC7D,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,QAAA;AAEzC,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,eAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AAvsCjC,IAAA,IAAAF,GAAAA,EAAAC,GAAAA;AAwsCQ,IAAA,MAAM,SAAQD,GAAAA,GAAA,IAAA,CAAK,KAAA,KAAL,IAAA,GAAAA,MAAc,KAAA,GAAQ,EAAA;AACpC,IAAA,MAAM,OAAMC,GAAAA,GAAA,IAAA,CAAK,QAAL,IAAA,GAAAA,GAAAA,GAAY,QAAQ,IAAA,CAAK,KAAA;AACrC,IAAA,MAAM,GAAA,GAAM,GAAA;AACZ,IAAA,MAAM,CAAA,GAAI,KAAK,KAAK,CAAA;AACpB,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,QAAA,GAAY,KAAA,GAAQ,GAAA,GAAO,UAAA;AAC1C,IAAA,MAAM,KAAA,GAAA,CAAU,GAAA,GAAM,KAAA,IAAS,GAAA,GAAO,UAAA;AACtC,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,KAAK,CAAA;AACnC,IAAA,uBACEE,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,GAAG,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,KAAA,GAAQ,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,UAC7E,MAAA,EAAQ,SAAA;AAAA,UACR,EAAA,EAAG,GAAA;AAAA,UACH,KAAA,EAAO,QAAA;AAAA,UACP,CAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,sBACAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,MAAM,UAAA,EAAY,MAAA,EAAgB,GAAG,CAAA,GAAI,QAAA,GAAW,CAAA,EAAG,CAAA,EAAG,IAAI,SAAA,GAAY,CAAA,GAAI,GAC5F,QAAA,EAAA,WAAA,CAAY,GAAA,GAAM,KAAK,CAAA,EAC1B;AAAA,KAAA,EAAA,EAXM,KAAK,KAYb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,kBAAkB,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,QAAO,EAA0B;AACpF,EAAA,MAAM,KAAA,GAAQ,oBAAoB,IAAI,CAAA;AACtC,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,GAAM,QAAA,CAAS,IAAI,CAAA,GAAI,IAAA;AACtC,EAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,UAAK,SAAA,EAAW,CAAA,EAAG,OAAO,IAAI,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,EAAA,EAAI,MAAM,IAAA,EAAM,EAAA,EAAI,MAAM,KAAA,EAAO,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,CAAA;AAAA,IAC1G,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACzB,MAAA,MAAM,CAAA,GAAI,iBAAA,CAAkB,IAAA,EAAM,KAAA,EAAO,KAAK,MAAM,CAAA;AACpD,MAAA,MAAM,IAAA,GAAO,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAS,CAAA;AACnC,MAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,IAAC,QAAA,EAAA,EAAO,SAAA,EAAW,GAAG,MAAA,CAAO,KAAK,IAAI,UAAA,CAAW,MAAA,EAAQ,OAAO,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,CAAA,EAAG,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC9FA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,UAAA,EAAY,UAAA,EAAW,QAAA,EAAS,CAAA,EAAM,CAAA,EAAG,CAAA,GAAI,EAAA,EAClE,eAAK,KAAA,EACR,CAAA;AAAA,wBACAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,UAAA,EAAY,MAAA,EAAgB,CAAA,EAAM,CAAA,EAAG,CAAA,GAAI,EAAA,EAC7D,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EACzB;AAAA,OAAA,EAAA,EAPM,KAAK,KAQb,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,QAAQ,EAAE,IAAA,EAAM,MAAM,UAAA,EAAY,MAAA,EAAQ,SAAQ,EAA0B;AACnF,EAAA,MAAM,GAAA,GAAM,kBAAkB,IAAI,CAAA;AAClC,EAAA,MAAMgC,SAAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,KAAK,CAAC,CAAA;AAC9D,EAAA,MAAM,eAAe,OAAA,KAAY,YAAA;AACjC,EAAA,MAAM,YAAA,GAAe,aAAa,GAAA,CAAI,CAAC,IAAI,GAAA,CAAI,CAAC,CAAA,QAAA,EAAW,GAAA,CAAI,KAAK,CAAA,CAAA,CAAA;AAEpE,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,EAAW,CAAA,MAAe;AAAA,IAC/C,CAAA,EAAG,GAAA,CAAI,CAAA,GAAI,CAAA,GAAI,GAAA,CAAI,KAAA;AAAA,IACnB,CAAA,EAAG,GAAA,CAAI,CAAA,GAAI,CAAA,GAAI,GAAA,CAAI;AAAA,GACrB,CAAA;AAEA,EAAA,uBACE/B,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,OAAE,SAAA,EAAW,YAAA,EACX,yBAAe,GAAA,CAAI,CAAC,MAAM,KAAA,qBACzBA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,OAAO,OAAA,EAAS,CAAA,EAAG,QAAW,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAI,CACjE,CAAA,EACH,CAAA;AAAA,IAEC,YAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,cACX,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACzB,MAAA,MAAM,QAAA,GAAW,gBAAgB,IAAI,CAAA;AACrC,MAAA,MAAM,SAAS,eAAA,CAAgB,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,CAAM,OAAO,QAAQ,CAAA;AACpE,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,GAAQgC,SAAAA;AAC3B,MAAA,OAAO,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,8BAC7BhC,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,SAAS,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,KAAA,GAAQ,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,UACnF,CAAA,EAAG,IAAA;AAAA,UAEH,OAAA,EAAS,OAAO,KAAA,GAAQ;AAAA,SAAA;AAAA,QADnB,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA;AAAA,OAGhC,CAAA;AAAA,IACH,CAAC,GACH,CAAA,GACE,IAAA;AAAA,IAEH,YAAA,GACG,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS;AACjB,MAAA,MAAM,QAAA,GAAW,gBAAgB,IAAI,CAAA;AACrC,MAAA,MAAM,QAAA,GAAW,kBAAkB,QAAQ,CAAA;AAC3C,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,QAAA,CAAS,CAAA,EAAG,SAAS,CAAC,CAAA;AAClD,MAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,UAAU,UAAA,EAAW,QAAA,EAAS,CAAA,EAAG,KAAA,CAAM,GAAG,CAAA,EAAG,KAAA,CAAM,CAAA,GAAI,CAAA,EAC5E,eAAK,KAAA,EACR,CAAA;AAAA,QACC,UAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,MAAA,CAAO,QAAA,EAAU,YAAW,QAAA,EAAS,CAAA,EAAG,MAAM,CAAA,EAAG,CAAA,EAAG,MAAM,CAAA,GAAI,CAAA,EAC5E,sBAAY,IAAA,CAAK,KAAK,GACzB,CAAA,GACE;AAAA,OAAA,EAAA,EARE,KAAK,KASb,CAAA;AAAA,IAEJ,CAAC,CAAA,GACD,IAAA,CAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACxB,MAAA,IAAI,IAAA,CAAK,GAAA,IAAO,IAAA,IAAQ,IAAA,CAAK,OAAO,IAAA,EAAM;AACxC,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,QAAA,GAAW,aAAA,CAAc,IAAA,CAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AACjD,MAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,QAAA,CAAS,CAAA,EAAG,SAAS,CAAC,CAAA;AAClD,MAAA,MAAM,SAAS,OAAA,KAAY,YAAA,GAAe,KAAM,IAAA,CAAK,KAAA,GAAQgC,YAAY,EAAA,GAAK,CAAA;AAE9E,MAAA,uBACE/B,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,CAAA,EAAI,WAAW,MAAA,EAAQ,KAAA,GAAQ,cAAA,CAAe,MAAM,CAAC,CAAA,CAAA;AAAA,YAC/E,IAAI,KAAA,CAAM,CAAA;AAAA,YACV,IAAI,KAAA,CAAM,CAAA;AAAA,YACV,OAAA,EAAS,OAAA,KAAY,YAAA,GAAe,GAAA,GAAM,CAAA;AAAA,YAC1C,CAAA,EAAG;AAAA;AAAA,SACL;AAAA,QACC,OAAA,KAAY,4BACXA,GAAAA,CAAC,UAAK,SAAA,EAAW,MAAA,CAAO,UAAU,UAAA,EAAW,QAAA,EAAS,GAAG,KAAA,CAAM,CAAA,EAAG,GAAG,KAAA,CAAM,CAAA,GAAI,SAAS,CAAA,EACrF,QAAA,EAAA,IAAA,CAAK,OACR,CAAA,GACE,IAAA;AAAA,QACH,6BACCA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,WAAW,MAAA,CAAO,QAAA;AAAA,YAClB,UAAA,EAAW,QAAA;AAAA,YACX,GAAG,KAAA,CAAM,CAAA;AAAA,YACT,GAAG,KAAA,CAAM,CAAA,IAAK,OAAA,KAAY,YAAA,GAAe,SAAS,EAAA,GAAK,CAAA,CAAA;AAAA,YAEtD,QAAA,EAAA,WAAA,CAAY,KAAK,KAAK;AAAA;AAAA,SACzB,GACE;AAAA,OAAA,EAAA,EAtBE,KAAK,KAuBb,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACP,CAAA;AAEJ;AAEO,SAAS,iBAAiB,KAAA,EAA8B;AAC7D,EAAA,QAAQ,MAAM,OAAA;AAAS,IACrB,KAAK,WAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,SAAA,EAAA,cAAA,CAAA,EAAA,EAAc,KAAA,CAAO,CAAA;AAAA,IAC/B,KAAK,SAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,OAAA,EAAA,cAAA,CAAA,EAAA,EAAY,KAAA,CAAO,CAAA;AAAA,IAC7B,KAAK,WAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,SAAA,EAAA,cAAA,CAAA,EAAA,EAAc,KAAA,CAAO,CAAA;AAAA,IAC/B,KAAK,aAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,cAAA,CAAA,EAAA,EAAgB,KAAA,CAAO,CAAA;AAAA,IACjC,KAAK,UAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,OAAA,EAAA,cAAA,CAAA,EAAA,EAAY,KAAA,CAAO,CAAA;AAAA,IAC7B,KAAK,SAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,OAAA,EAAA,cAAA,CAAA,EAAA,EAAY,KAAA,CAAO,CAAA;AAAA,IAC7B,KAAK,UAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,QAAA,EAAA,cAAA,CAAA,EAAA,EAAa,KAAA,CAAO,CAAA;AAAA,IAC9B,KAAK,QAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,cAAA,CAAA,EAAA,EAAW,KAAA,CAAO,CAAA;AAAA,IAC5B,KAAK,QAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,cAAA,CAAA,EAAA,EAAgB,KAAA,CAAO,CAAA;AAAA,IACjC,KAAK,WAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,SAAA,EAAA,cAAA,CAAA,EAAA,EAAc,KAAA,CAAO,CAAA;AAAA,IAC/B,KAAK,SAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,cAAA,CAAA,EAAA,EAAgB,KAAA,CAAO,CAAA;AAAA,IACjC,KAAK,QAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,UAAA,EAAA,cAAA,CAAA,EAAA,EAAe,KAAA,CAAO,CAAA;AAAA,IAChC,KAAK,QAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,UAAA,EAAA,cAAA,CAAA,EAAA,EAAe,KAAA,CAAO,CAAA;AAAA,IAChC,KAAK,OAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,YAAA,EAAA,cAAA,CAAA,EAAA,EAAiB,KAAA,CAAO,CAAA;AAAA,IAClC,KAAK,SAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,YAAA,EAAA,cAAA,CAAA,EAAA,EAAiB,KAAA,CAAO,CAAA;AAAA,IAClC,KAAK,gBAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,kBAAA,EAAA,cAAA,CAAA,EAAA,EAAuB,KAAA,CAAO,CAAA;AAAA,IACxC,KAAK,gBAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,aAAA,EAAA,cAAA,CAAA,EAAA,EAAkB,KAAA,CAAO,CAAA;AAAA,IACnC,KAAK,kBAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,eAAA,EAAA,cAAA,CAAA,EAAA,EAAoB,KAAA,CAAO,CAAA;AAAA,IACrC,KAAK,UAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,QAAA,EAAA,cAAA,CAAA,EAAA,EAAa,KAAA,CAAO,CAAA;AAAA,IAC9B,KAAK,OAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,UAAA,EAAA,cAAA,CAAA,EAAA,EAAe,KAAA,CAAO,CAAA;AAAA,IAChC,KAAK,oBAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAsB,KAAA,CAAO,CAAA;AAAA,IACvC,KAAK,SAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,YAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC,OAAA,EAAA,cAAA,CAAA,EAAA,EAAY,KAAA,CAAO,CAAA;AAAA,IAC7B;AACE,MAAA,OAAO,IAAA;AAAA;AAEb;;;ACt5CA,IAAA,aAAA,GAAA,EAAA;ACwEA,IAAM,iBAAA,GAAoC;AAAA,EACxC,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;AAEA,SAAS,aAAA,CAAc,GAAA,EAAa,KAAA,GAAQ,CAAA,EAAG;AAC7C,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,CAAA;AAC/B,EAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IAAK,EAAE,QAAQ,KAAA,EAAM;AAAA,IAAG,CAAC,GAAG,KAAA,KACvC,IAAA,CAAK,MAAO,OAAA,GAAU,KAAA,IAAU,QAAQ,CAAA,CAAE;AAAA,GAC5C;AACF;AAEA,SAAS,SAAA,CAAU,KAAA,EAAe,GAAA,EAAa,IAAA,EAAgB;AAC7D,EAAA,OAAO,IAAA,CAAK,MAAA,GAAU,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,CAAA,IAAM,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,GAAA,CAAA;AACxE;AAEA,SAASkC,UAAS,IAAA,EAAgB;AAChC,EAAA,OAAO,IAAA,CAAK,SAAS,IAAA,CAAK,GAAA;AAC5B;AAEA,SAAS,YACP,QAAA,EACA,EAAE,YAAA,EAAc,QAAA,EAAU,SAAQ,EACxB;AACV,EAAA,IAAI,OAAA,KAAY,YAAA,IAAgB,OAAA,KAAY,SAAA,IAAa,YAAY,YAAA,EAAc;AACjF,IAAA,MAAM,QAAA,GAAW,CAAA;AACjB,IAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,SAAS,SAAA,EAAW,QAAA,CAAS,KAAK,CAAA,GAAI,CAAA;AACjE,IAAA,OAAO,iCACF,QAAA,CAAA,EADE;AAAA,MAEL,MAAA,EAAQ,GAAA;AAAA,MACR,QAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,GAAA,EAAK;AAAA,KACP,CAAA;AAAA,EACF;AAEA,EAAA,IAAA,CAAK,OAAA,KAAY,SAAA,IAAa,OAAA,KAAY,kBAAA,KAAuB,QAAA,EAAU;AACzE,IAAA,MAAM,cAAA,GAAiB,EAAA;AACvB,IAAA,MAAM,cAAA,GAAiB,EAAA;AAEvB,IAAA,OAAO,iCACF,QAAA,CAAA,EADE;AAAA,MAEL,QAAA,EAAU,SAAS,QAAA,GAAW,cAAA;AAAA,MAC9B,IAAA,EAAM,SAAS,QAAA,GAAW,cAAA;AAAA,MAC1B,GAAA,EAAK,SAAS,GAAA,GAAM;AAAA,KACtB,CAAA;AAAA,EACF;AAEA,EAAA,IAAI,YAAY,OAAA,EAAS;AACvB,IAAA,MAAM,cAAA,GAAiB,EAAA;AACvB,IAAA,MAAM,SAAA,GAAY,SAAS,QAAA,GAAW,cAAA;AAEtC,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,OAAO,iCACF,QAAA,CAAA,EADE;AAAA,QAEL,QAAA,EAAU,SAAA;AAAA,QACV,IAAA,EAAM;AAAA,OACR,CAAA;AAAA,IACF;AAEA,IAAA,OAAO,iCACF,QAAA,CAAA,EADE;AAAA,MAEL,QAAA,EAAU,SAAS,QAAA,GAAW,cAAA;AAAA,MAC9B,MAAA,EAAQ,eAAe,GAAA,GAAM,GAAA;AAAA,MAC7B,QAAA,EAAU,SAAA;AAAA,MACV,IAAA,EAAM,SAAA;AAAA,MACN,GAAA,EAAK;AAAA,KACP,CAAA;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,GAAA,GAAM,EAAA;AAEZ,EAAA,OAAO,iCACF,QAAA,CAAA,EADE;AAAA,IAEL,QAAA,EAAU,SAAS,QAAA,GAAW,GAAA;AAAA,IAC9B,MAAA,EAAQ,eAAe,GAAA,GAAM,GAAA;AAAA,IAC7B,QAAA,EAAU,SAAS,QAAA,GAAW,GAAA;AAAA,IAC9B,gBAAA,EAAkB,SAAS,gBAAA,GAAmB,GAAA;AAAA,IAC9C,IAAA,EAAM,SAAS,IAAA,GAAO,GAAA;AAAA,IACtB,GAAA,EAAK;AAAA,GACP,CAAA;AACF;AAEA,SAAS,cAAA,CAAe,UAAA,EAAoB,MAAA,EAAiB,QAAA,EAAmB;AAC9E,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,SAAS,GAAA,GAAM,GAAA;AAAA,EACxB;AAEA,EAAA,OAAO,UAAA,IAAc,SAAS,EAAA,GAAK,EAAA,CAAA;AACrC;AAEA,SAAS,WAAA,CAAY,UAAA,EAAoB,QAAA,EAAmB,KAAA,EAAgB;AAK1E,EAAA,OAAO,UAAA,IAAc,QAAQ,EAAA,GAAK,EAAA,CAAA;AACpC;AAEA,SAAS,qBAAA,CAAsB,SAAuB,KAAA,EAAe;AACnE,EAAA,MAAM,YAAA,GAAe;AAAA,IACnB,cAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,IAAI,CAAC,YAAA,CAAa,QAAA,CAAS,OAAO,CAAA,EAAG;AACnC,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAA,GAAO,OAAA,KAAY,cAAA,GAAiB,EAAA,GAAK,EAAA;AAC/C,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,EAAA,GAAK,QAAQ,IAAI,CAAA;AACxC;AAEA,SAAS,uBAAA,CAAwB,OAAe,KAAA,EAAe;AAC7D,EAAA,IAAI,SAAS,EAAA,EAAI;AACf,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAA,GAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,IAAA,CAAK,KAAA,GAAQ,EAAE,CAAC,CAAA;AAC9C,EAAA,OAAO,KAAA,GAAQ,IAAA,KAAS,CAAA,IAAK,KAAA,KAAU,KAAA,GAAQ,CAAA;AACjD;AAEA,SAAS,kBAAA,CACP,IAAA,EACA,KAAA,EACA,MAAA,EACA;AA7NF,EAAA,IAAApC,GAAAA,EAAAC,GAAAA;AA8NE,EAAA,MAAM,QAAOD,GAAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,IAAA,KAAR,IAAA,GAAAA,MAAgB,IAAA,CAAK,QAAA;AAClC,EAAA,MAAM,SAAQC,GAAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,KAAA,KAAR,IAAA,GAAAA,MAAiB,IAAA,CAAK,SAAA;AACpC,EAAA,MAAM,YAAY,KAAA,GAAQ,CAAA,GAAA,CAAK,KAAA,GAAQ,IAAA,IAAQ,QAAQ,KAAA,GAAQ,IAAA;AAC/D,EAAA,MAAM,QAAA,GAAW,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,GAAA,CAAI,CAAA,EAAG,SAAA,GAAY,IAAI,CAAC,CAAA;AAE3D,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,SAAS,CAAC,KAAA,KAAkB,IAAA,GAAO,SAAA,GAAY,QAAQ,SAAA,GAAY;AAAA,GACrE;AACF;AAEA,SAAS,oBAAA,CAAqB,MAAgB,KAAA,EAAe;AAC3D,EAAA,MAAM,aAAamC,SAAAA,CAAS,IAAI,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAC,CAAA;AACrD,EAAA,MAAM,SAAA,GAAY,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,GAAA,CAAI,EAAA,EAAI,UAAA,GAAa,IAAI,CAAC,CAAA;AAC9D,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,QAAA;AAEzC,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,IAAA,EAAM,CAAC,KAAA,KAAkB,IAAA,CAAK,MAAM,KAAA,GAAQ,UAAA,GAAA,CAAc,aAAa,SAAA,IAAa,CAAA;AAAA,IACpF,MAAA,EAAQ,CAAC,KAAA,KAAkB,IAAA,CAAK,MAAM,KAAA,GAAQ,UAAA,GAAa,aAAa,CAAA,GAAI,CAAA;AAAA,IAC5E;AAAA,GACF;AACF;AAEA,IAAMC,kBAAiB,CAAC,SAAA,EAAW,WAAW,SAAA,EAAW,SAAA,EAAW,WAAW,SAAS,CAAA;AACxF,IAAM,oBAAA,GAAuC;AAAA,EAC3C,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA;AAEA,SAAS,mBAAmB,OAAA,EAAuB;AACjD,EAAA,OAAO,kBAAkB,QAAA,CAAS,OAAO,CAAA,IAAK,4BAAA,CAA6B,SAAS,OAAO,CAAA;AAC7F;AAeA,IAAM,WAAA,GAAwB;AAAA,EAC5B,QAAA,EAAU,EAAA;AAAA,EACV,MAAA,EAAQ,GAAA;AAAA,EACR,QAAA,EAAU,EAAA;AAAA,EACV,SAAA,EAAW,GAAA;AAAA,EACX,gBAAA,EAAkB,EAAA;AAAA,EAClB,kBAAA,EAAoB,GAAA;AAAA,EACpB,IAAA,EAAM,EAAA;AAAA,EACN,KAAA,EAAO,GAAA;AAAA,EACP,WAAA,EAAa,EAAA;AAAA,EACb,YAAA,EAAc,GAAA;AAAA,EACd,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,QAAA,GAAqB,iCACtB,WAAA,CAAA,EADsB;AAAA,EAEzB,QAAA,EAAU,EAAA;AAAA,EACV,QAAA,EAAU,EAAA;AAAA,EACV,SAAA,EAAW,GAAA;AAAA,EACX,gBAAA,EAAkB,EAAA;AAAA,EAClB,kBAAA,EAAoB,GAAA;AAAA,EACpB,IAAA,EAAM,EAAA;AAAA,EACN,KAAA,EAAO,GAAA;AAAA,EACP,WAAA,EAAa,EAAA;AAAA,EACb,YAAA,EAAc;AAChB,CAAA,CAAA;AAEA,SAAS,YAAY,YAAA,EAAgC;AACnD,EAAA,MAAM,QAAA,GAAW,EAAA;AACjB,EAAA,MAAM,gBAAA,GAAmB,EAAA;AACzB,EAAA,MAAM,QAAA,GAAW,EAAA;AACjB,EAAA,MAAM,WAAW,WAAA,CAAY,QAAA;AAC7B,EAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,WAAA,CAAY,SAAA,EAAW,eAAe,QAAQ,CAAA;AAEzE,EAAA,OAAO,iCACF,QAAA,CAAA,EADE;AAAA,IAEL,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,kBAAA,EAAoB,KAAK,GAAA,CAAI,WAAA,CAAY,oBAAoB,YAAA,GAAe,QAAA,GAAW,WAAW,EAAE,CAAA;AAAA,IACpG,IAAA,EAAM,QAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,QAAA;AAAA,IACb,cAAc,SAAA,GAAY;AAAA,GAC5B,CAAA;AACF;AAEA,SAASC,WAAAA,CAAW,KAAA,EAAe,GAAA,EAAa,GAAA,EAAa,IAAA,EAAgB;AAC3E,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,GAAG,CAAA;AAClC,EAAA,OAAO,KAAK,MAAA,GAAA,CAAW,KAAA,GAAQ,GAAA,IAAO,IAAA,GAAQF,UAAS,IAAI,CAAA;AAC7D;AAEA,SAAS,kBAAA,CAAmB,GAAA,EAAa,GAAA,EAAa,KAAA,GAAQ,CAAA,EAAG;AAC/D,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,GAAG,CAAA;AAClC,EAAA,OAAO,MAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAA,IAAS,CAAC,CAAA,EAAG,KAAA,KAAU,IAAA,CAAK,MAAM,GAAA,GAAO,IAAA,GAAO,KAAA,IAAU,KAAA,GAAQ,EAAE,CAAC,CAAA;AACnG;AAEA,SAAS,mBAAmB,IAAA,EAAoB;AAC9C,EAAA,IAAI,OAAA,GAAU,CAAA;AACd,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,IAAI,GAAA,GAAM,CAAA;AAEV,EAAA,KAAA,MAAW,QAAQ,IAAA,EAAM;AACvB,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,OAAA,IAAW,IAAA,CAAK,KAAA;AAChB,IAAA,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,KAAA,EAAO,OAAO,CAAA;AAClC,IAAA,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,KAAA,EAAO,OAAO,CAAA;AAAA,EACpC;AAEA,EAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,GAAA,GAAM,OAAO,IAAI,CAAA;AAC1C,EAAA,OAAO,EAAE,GAAA,EAAK,GAAA,GAAM,GAAA,EAAK,GAAA,EAAK,MAAM,GAAA,EAAI;AAC1C;AAEA,SAAS,eAAA,CAAgB,OAAA,EAAuB,IAAA,EAAoB,MAAA,EAAuB,WAAA,EAAqB;AAC9G,EAAA,IAAI,YAAY,aAAA,EAAe;AAC7B,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAM;AApWjC,MAAA,IAAApC,GAAAA;AAoWoC,MAAA,OAAA,CAAAA,MAAA,IAAA,CAAK,GAAA,KAAL,IAAA,GAAAA,GAAAA,GAAY,KAAK,KAAA,GAAQ,IAAA;AAAA,IAAA,CAAI,CAAA;AAC7D,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAM;AArWlC,MAAA,IAAAA,GAAAA;AAqWqC,MAAA,OAAA,CAAAA,MAAA,IAAA,CAAK,IAAA,KAAL,IAAA,GAAAA,GAAAA,GAAa,KAAK,KAAA,GAAQ,IAAA;AAAA,IAAA,CAAI,CAAA;AAC/D,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAG,IAAI,CAAA;AAC5B,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAG,KAAK,CAAA;AAC7B,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,GAAA,GAAM,OAAO,IAAI,CAAA;AAC1C,IAAA,OAAO,EAAE,GAAA,EAAK,GAAA,GAAM,GAAA,EAAK,GAAA,EAAK,MAAM,GAAA,EAAI;AAAA,EAC1C;AAEA,EAAA,IAAI,YAAY,UAAA,EAAY;AAC1B,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAM;AA7WjC,MAAA,IAAAA,GAAAA;AA6WoC,MAAA,OAAA,CAAAA,MAAA,IAAA,CAAK,GAAA,KAAL,IAAA,GAAAA,GAAAA,GAAY,KAAK,KAAA,GAAQ,GAAA;AAAA,IAAA,CAAG,CAAA;AAC5D,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAM;AA9WlC,MAAA,IAAAA,GAAAA;AA8WqC,MAAA,OAAA,CAAAA,MAAA,IAAA,CAAK,GAAA,KAAL,IAAA,GAAAA,GAAAA,GAAY,KAAK,KAAA,GAAQ,IAAA;AAAA,IAAA,CAAI,CAAA;AAC9D,IAAA,OAAO,EAAE,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,GAAG,IAAI,CAAA,EAAG,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,GAAG,KAAK,CAAA,EAAE;AAAA,EAC3D;AAEA,EAAA,IAAI,OAAA,KAAY,WAAA,IAAe,OAAA,KAAY,QAAA,EAAU;AACnD,IAAA,OAAO,EAAE,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,GAAG,IAAA,CAAK,IAAI,CAAC,IAAA,KAAS,IAAA,CAAK,KAAK,CAAC,CAAA,EAAE;AAAA,EACvE;AAEA,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,OAAO,EAAE,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,GAAG,MAAA,CAAO,QAAQ,CAAC,IAAA,KAAS,IAAA,CAAK,MAAM,CAAC,CAAA,EAAE;AAAA,EAC9E;AAEA,EAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,IAAA,OAAO,mBAAmB,IAAI,CAAA;AAAA,EAChC;AAEA,EAAA,IAAI,YAAY,QAAA,EAAU;AACxB,IAAA,OAAO,EAAE,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,gBAAA,CAAiB,MAAM,CAAA,EAAE;AAAA,EACjD;AAEA,EAAA,IAAI,YAAY,OAAA,EAAS;AACvB,IAAA,OAAO,EAAE,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,EAAI;AAAA,EAC5B;AAEA,EAAA,OAAO,EAAE,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,WAAA,EAAY;AACpC;AAEA,SAAS,QAAA,CAAS,MAAoB,MAAA,EAAuB;AAC3D,EAAA,OAAO,IAAA,CAAK,GAAA;AAAA,IACV,CAAA;AAAA,IACA,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK,CAAA;AAAA,IAChC,GAAG,IAAA,CAAK,OAAA,CAAQ,CAAC,IAAA,KAAM;AA7Y3B,MAAA,IAAAA,GAAAA;AA6Y8B,MAAA,OAAA,CAAAA,GAAAA,GAAA,IAAA,CAAK,MAAA,KAAL,IAAA,GAAAA,MAAe,EAAC;AAAA,IAAA,CAAC,CAAA;AAAA,IAC3C,GAAG,MAAA,CAAO,OAAA,CAAQ,CAAC,IAAA,KAAS,KAAK,MAAM;AAAA,GACzC;AACF;AAEA,SAAS,UAAA,CAAW,EAAA,EAAY,EAAA,EAAY,MAAA,EAAgB,KAAA,EAAe;AACzE,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,EAAA,GAAK,MAAA,GAAS,IAAA,CAAK,IAAI,KAAK,CAAA;AAAA,IAC/B,CAAA,EAAG,EAAA,GAAK,MAAA,GAAS,IAAA,CAAK,IAAI,KAAK;AAAA,GACjC;AACF;AAEA,SAAS,OAAA,CAAQ,EAAA,EAAY,EAAA,EAAY,MAAA,EAAgB,YAAoB,QAAA,EAAkB;AAC7F,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,EAAA,EAAI,EAAA,EAAI,QAAQ,UAAU,CAAA;AACnD,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,EAAA,EAAI,EAAA,EAAI,QAAQ,QAAQ,CAAA;AAC/C,EAAA,MAAM,QAAA,GAAW,QAAA,GAAW,UAAA,GAAa,IAAA,CAAK,KAAK,CAAA,GAAI,CAAA;AAEvD,EAAA,OAAO,CAAA,EAAA,EAAK,EAAE,CAAA,CAAA,EAAI,EAAE,MAAM,KAAA,CAAM,CAAC,IAAI,KAAA,CAAM,CAAC,MAAM,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,GAAA,EAAM,QAAQ,MAAM,GAAA,CAAI,CAAC,CAAA,CAAA,EAAI,GAAA,CAAI,CAAC,CAAA,EAAA,CAAA;AACtG;AAEA,SAAS,SAAS,EAAA,EAAY,EAAA,EAAY,WAAA,EAAqB,WAAA,EAAqB,YAAoB,QAAA,EAAkB;AACxH,EAAA,MAAM,UAAA,GAAa,UAAA,CAAW,EAAA,EAAI,EAAA,EAAI,aAAa,UAAU,CAAA;AAC7D,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,EAAA,EAAI,EAAA,EAAI,aAAa,QAAQ,CAAA;AACzD,EAAA,MAAM,UAAA,GAAa,UAAA,CAAW,EAAA,EAAI,EAAA,EAAI,aAAa,QAAQ,CAAA;AAC3D,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,EAAA,EAAI,EAAA,EAAI,aAAa,UAAU,CAAA;AAC3D,EAAA,MAAM,QAAA,GAAW,QAAA,GAAW,UAAA,GAAa,IAAA,CAAK,KAAK,CAAA,GAAI,CAAA;AAEvD,EAAA,OAAO;AAAA,IACL,CAAA,EAAA,EAAK,UAAA,CAAW,CAAC,CAAA,CAAA,EAAI,WAAW,CAAC,CAAA,CAAA;AAAA,IACjC,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,EAAI,WAAW,CAAA,GAAA,EAAM,QAAQ,CAAA,GAAA,EAAM,QAAA,CAAS,CAAC,CAAA,CAAA,EAAI,QAAA,CAAS,CAAC,CAAA,CAAA;AAAA,IAC3E,CAAA,EAAA,EAAK,UAAA,CAAW,CAAC,CAAA,CAAA,EAAI,WAAW,CAAC,CAAA,CAAA;AAAA,IACjC,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,EAAI,WAAW,CAAA,GAAA,EAAM,QAAQ,CAAA,GAAA,EAAM,QAAA,CAAS,CAAC,CAAA,CAAA,EAAI,QAAA,CAAS,CAAC,CAAA,CAAA;AAAA,IAC3E;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AACZ;AAEA,SAAS,WAAW,MAAA,EAAoC;AACtD,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,IAAA,EAAM,OAAO,KAAA,KAAU;AAC3C,IAAA,IAAI,UAAU,CAAA,EAAG;AACf,MAAA,OAAO,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,CAAA,CAAA;AAAA,IAChC;AAEA,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AACjC,IAAA,MAAM,aAAA,GAAA,CAAiB,KAAA,CAAM,CAAA,GAAI,QAAA,CAAS,CAAA,IAAK,CAAA;AAC/C,IAAA,OAAO,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,QAAA,CAAS,IAAI,aAAa,CAAA,CAAA,EAAI,SAAS,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,GAAI,aAAa,IAAI,KAAA,CAAM,CAAC,KAAK,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAA;AAAA,EAC5H,GAAG,EAAE,CAAA;AACP;AAEA,SAASuC,YAAW,KAAA,EAAe;AACjC,EAAA,OAAO,aAAA,CAAOF,eAAAA,CAAe,KAAA,GAAQA,eAAAA,CAAe,MAAM,CAAC,CAAA;AAC7D;AAEA,SAAS,SAAA,CAAU,IAAA,EAAgB,KAAA,EAAe,KAAA,EAAe;AAC/D,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,OAAA,CAAQ,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,IAAa,CAAA;AAAA,EAC5C;AAEA,EAAA,MAAM,SAAA,GAAA,CAAa,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,QAAA,IAAY,KAAA;AACrD,EAAA,OAAO,IAAA,CAAK,QAAA,GAAW,SAAA,GAAY,KAAA,GAAQ,SAAA,GAAY,CAAA;AACzD;AAEA,SAAS,aAAA,CAAc,IAAA,EAAgB,KAAA,EAAe,KAAA,EAAe;AACnE,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,OAAA,CAAQ,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,IAAa,CAAA;AAAA,EAC5C;AAEA,EAAA,OAAO,KAAK,QAAA,GAAW,KAAA,IAAA,CAAU,KAAK,SAAA,GAAY,IAAA,CAAK,aAAa,KAAA,GAAQ,CAAA,CAAA,CAAA;AAC9E;AAEA,SAAS,IAAA,CAAK,EAAE,GAAA,EAAK,GAAA,GAAM,GAAG,IAAA,EAAM,IAAA,EAAM,SAAA,GAAY,KAAA,EAAM,EAAuF;AACjJ,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,UAAA,GAAa,OACd,SAAA,GAAY,kBAAA,CAAmB,KAAK,GAAG,CAAA,GAAI,aAAA,CAAc,GAAG,CAAA,EAAG,GAAA;AAAA,IAAI,CAAC,IAAA,KACnE,SAAA,GAAYC,WAAAA,CAAW,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,IAAI,CAAA,GAAI,SAAA,CAAU,IAAA,EAAM,GAAA,EAAK,IAAI;AAAA,GAC1E,GACA,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,GAAA,GAAM,OAAO,EAAE,CAAA;AAEnD,EAAA,uBACEpC,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,aAAA,CAAO,IAAA,EAClB,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,EAAG,KAAA,qBAClBA,GAAAA,CAAC,UAAiB,EAAA,EAAI,IAAA,CAAK,QAAA,EAAU,EAAA,EAAI,IAAA,CAAK,SAAA,EAAW,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAA,EAAzD,KAA4D,CACxE,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,IAAA,EAAK,EAAsB;AAC/C,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEC,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,cAAO,IAAA,EAClB,QAAA,EAAA;AAAA,IAAA,CAAC,IAAI,EAAA,EAAI,EAAE,EAAE,GAAA,CAAI,CAAC,2BACjBD,GAAAA,CAAC,YAAO,EAAA,EAAG,KAAA,EAAM,IAAG,KAAA,EAAM,IAAA,EAAK,QAAoB,CAAA,EAAG,MAAA,EAAA,EAAX,MAAmB,CAC/D,CAAA;AAAA,IACA,CAAC,GAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS;AAC1B,MAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,CAAC,IAAA,CAAK,EAAA,GAAK,CAAA,GAAI,IAAA,IAAQ,IAAA,CAAK,EAAA,GAAK,CAAA,CAAE,CAAA;AAC1E,MAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAgB,EAAA,EAAG,KAAA,EAAM,EAAA,EAAI,KAAA,CAAM,CAAA,EAAG,EAAA,EAAG,KAAA,EAAM,EAAA,EAAI,KAAA,CAAM,KAA/C,IAAkD,CAAA;AAAA,IACtE,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,KAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,MAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA,GAAe,KAAA;AAAA,EACf,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAUG;AACD,EAAA,MAAM,MAAA,GAAS,OAAO,MAAA,GAAS,EAAA;AAC/B,EAAA,MAAM,cAAc,YAAA,GAAe,kBAAA,CAAmB,MAAM,MAAA,CAAO,MAAA,EAAQ,UAAU,CAAA,GAAI,IAAA;AAEzF,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,aAAA,CAAO,YAClB,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,KAAU;AAC5B,IAAA,IAAI,SAAS,CAAC,uBAAA,CAAwB,KAAA,EAAO,MAAA,CAAO,MAAM,CAAA,EAAG;AAC3D,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,CAAA,GAAI,gBAAA,KAAqB,MAAA,GAC3B,gBAAA,CAAiB,MAAM,KAAA,EAAO,MAAA,CAAO,MAAA,EAAQ,gBAAgB,CAAA,GAC7D,QAAA,GACE,iBAAA,CAAkB,IAAA,EAAM,OAAO,MAAA,CAAO,MAAM,CAAA,GAC5C,WAAA,GACE,WAAA,CAAY,OAAA,CAAQ,KAAK,CAAA,GACzB,cACE,aAAA,CAAc,IAAA,EAAM,KAAA,EAAO,MAAA,CAAO,MAAM,CAAA,GACxC,SAAA,CAAU,IAAA,EAAM,KAAA,EAAO,OAAO,MAAM,CAAA;AAC9C,IAAA,MAAM,IAAI,cAAA,CAAe,IAAA,CAAK,QAAQ,MAAA,EAAQ,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAE/D,IAAA,uBACEA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QAEC,UAAA,EAAY,SAAS,KAAA,GAAQ,QAAA;AAAA,QAC7B,WAAW,MAAA,GAAS,CAAA,WAAA,EAAc,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAA,GAAM,MAAA;AAAA,QAC9C,CAAA;AAAA,QACA,CAAA;AAAA,QAEC,QAAA,EAAA;AAAA,OAAA;AAAA,MANI,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,KAOxB;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,YAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,IAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,OAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAWG;AACD,EAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,kBAAA,CAAmB,OAAO,CAAA,EAAG;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAQ,SAAA,GAAY,kBAAA,CAAmB,KAAK,GAAG,CAAA,GAAI,cAAc,GAAG,CAAA;AAC1E,EAAA,MAAM,OAAA,GAAA,CAAW,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,IAAa,CAAA;AACnD,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,QAAA;AAExC,EAAA,IAAI,YAAY,OAAA,EAAS;AACvB,IAAA,uBACEC,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,cAAO,IAAA,EACnB,QAAA,EAAA;AAAA,sBAAAD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,QAAA,EAAU,IAAI,IAAA,CAAK,QAAA,EAAU,EAAA,EAAI,IAAA,CAAK,WAAW,EAAA,EAAI,IAAA,CAAK,MAAA,EAAQ,EAAA,EAAI,KAAK,MAAA,EAAQ,CAAA;AAAA,sBAC3GA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,UAAU,EAAA,EAAI,IAAA,CAAK,QAAA,EAAU,EAAA,EAAI,KAAK,QAAA,EAAU,EAAA,EAAI,KAAK,GAAA,EAAK,EAAA,EAAI,KAAK,MAAA,EAAQ,CAAA;AAAA,MACtG,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,QAAA,MAAM,CAAA,GAAI,KAAK,QAAA,GAAY,IAAA,GAAO,KAAK,GAAA,CAAI,CAAA,EAAG,GAAG,CAAA,GAAK,SAAA;AACtD,QAAA,uBACEA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAO,QAAA,EAAqB,UAAA,EAAW,QAAA,EAAS,CAAA,EAAM,CAAA,EAAG,IAAA,CAAK,MAAA,GAAS,EAAA,EACrF,kBADoC,IAEvC,CAAA;AAAA,MAEJ,CAAC,CAAA;AAAA,MACA,UAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,aAAA,CAAO,SAAA,EAAW,YAAW,QAAA,EAAS,CAAA,EAAG,SAAS,CAAA,EAAG,WAAA,CAAY,KAAK,MAAA,EAAQ,IAAA,EAAM,QAAQ,YAAY,CAAC,CAAA,EACvH,QAAA,EAAA,UAAA,EACH,CAAA,GACE;AAAA,KAAA,EACN,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,CAAC,UAAA,EAAY,oBAAoB,EAAE,QAAA,CAAS,OAAO,CAAA,IAAK,iCAAA,CAAkC,OAAO,CAAA;AAE3H,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,MAAMsC,UAAAA,GAAY,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,QAAA;AACxC,IAAA,uBACErC,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,cAAO,IAAA,EACnB,QAAA,EAAA;AAAA,sBAAAD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,QAAA,EAAU,IAAI,IAAA,CAAK,QAAA,EAAU,EAAA,EAAI,IAAA,CAAK,WAAW,EAAA,EAAI,IAAA,CAAK,MAAA,EAAQ,EAAA,EAAI,KAAK,MAAA,EAAQ,CAAA;AAAA,sBAC3GA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,UAAU,EAAA,EAAI,IAAA,CAAK,QAAA,EAAU,EAAA,EAAI,KAAK,QAAA,EAAU,EAAA,EAAI,KAAK,GAAA,EAAK,EAAA,EAAI,KAAK,MAAA,EAAQ,CAAA;AAAA,MACtG,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,QAAA,MAAM,CAAA,GAAI,KAAK,QAAA,GAAY,IAAA,GAAO,KAAK,GAAA,CAAI,CAAA,EAAG,GAAG,CAAA,GAAKsC,UAAAA;AACtD,QAAA,uBACEtC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAO,QAAA,EAAqB,UAAA,EAAW,QAAA,EAAS,CAAA,EAAM,CAAA,EAAG,IAAA,CAAK,MAAA,GAAS,EAAA,EACrF,kBADoC,IAEvC,CAAA;AAAA,MAEJ,CAAC,CAAA;AAAA,MACA,6BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAO,SAAA,EAAW,UAAA,EAAW,QAAA,EAAS,CAAA,EAAG,SAAS,CAAA,EAAG,IAAA,CAAK,MAAA,GAAS,EAAA,EACjF,sBACH,CAAA,GACE,IAAA;AAAA,MACH,6BACCA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,WAAW,aAAA,CAAO,SAAA;AAAA,UAClB,UAAA,EAAW,QAAA;AAAA,UACX,WAAW,CAAA,cAAA,EAAA,CAAkB,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA,CAAA;AAAA,UACxD,CAAA,EAAG,EAAA;AAAA,UACH,CAAA,EAAA,CAAI,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,IAAU,CAAA;AAAA,UAE7B,QAAA,EAAA;AAAA;AAAA,OACH,GACE;AAAA,KAAA,EACN,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEC,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,cAAO,IAAA,EACnB,QAAA,EAAA;AAAA,oBAAAD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,QAAA,EAAU,IAAI,IAAA,CAAK,QAAA,EAAU,EAAA,EAAI,IAAA,CAAK,WAAW,EAAA,EAAI,IAAA,CAAK,MAAA,EAAQ,EAAA,EAAI,KAAK,MAAA,EAAQ,CAAA;AAAA,oBAC3GA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,UAAU,EAAA,EAAI,IAAA,CAAK,QAAA,EAAU,EAAA,EAAI,KAAK,QAAA,EAAU,EAAA,EAAI,KAAK,GAAA,EAAK,EAAA,EAAI,KAAK,MAAA,EAAQ,CAAA;AAAA,IACtG,gBAAA,GACG,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AAClB,MAAA,MAAM,CAAA,GAAI,SAAA,GAAYoC,WAAAA,CAAW,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,IAAI,CAAA,GAAI,SAAA,CAAU,IAAA,EAAM,GAAA,EAAK,IAAI,CAAA;AAClF,MAAA,uBACEpC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,UAAqB,UAAA,EAAW,KAAA,EAAM,CAAA,EAAG,IAAA,CAAK,WAAW,CAAA,EAAG,CAAA,EAAG,CAAA,GAAI,CAAA,EACxF,kBADoC,IAEvC,CAAA;AAAA,IAEJ,CAAC,CAAA,GACD,IAAA;AAAA,IACH,UAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,aAAA,CAAO,SAAA,EAAW,YAAW,QAAA,EAAS,CAAA,EAAG,SAAS,CAAA,EAAG,WAAA,CAAY,KAAK,MAAA,EAAQ,IAAA,EAAM,QAAQ,YAAY,CAAC,CAAA,EACvH,QAAA,EAAA,UAAA,EACH,CAAA,GACE,IAAA;AAAA,IACH,6BACCA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,WAAW,aAAA,CAAO,SAAA;AAAA,QAClB,UAAA,EAAW,QAAA;AAAA,QACX,WAAW,CAAA,cAAA,EAAA,CAAkB,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA,CAAA;AAAA,QACxD,CAAA,EAAG,EAAA;AAAA,QACH,CAAA,EAAA,CAAI,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,IAAU,CAAA;AAAA,QAE7B,QAAA,EAAA;AAAA;AAAA,KACH,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AAEA,SAAS,IAAA,CAAK;AAAA,EACZ,IAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAQG;AACD,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,MAAM,EAAE,WAAW,IAAA,EAAM,MAAA,EAAQ,YAAW,GAAI,oBAAA,CAAqB,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAEtF,IAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,eAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACzB,MAAA,MAAM,KAAA,GAAS,IAAA,CAAK,KAAA,GAAQ,GAAA,GAAO,UAAA;AACnC,MAAA,MAAM,CAAA,GAAI,KAAK,KAAK,CAAA;AACpB,MAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,UAAA,EAAY,YAAW,KAAA,EAAM,CAAA,EAAG,IAAA,CAAK,QAAA,GAAW,GAAG,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,EACvF,eAAK,KAAA,EACR,CAAA;AAAA,wBACAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,aAAA,CAAO,GAAG,IAAIqC,WAAAA,CAAW,KAAK,CAAC,CAAA,CAAA,EAAI,MAAA,EAAQ,WAAW,EAAA,EAAG,GAAA,EAAI,OAAc,CAAA,EAAG,IAAA,CAAK,UAAU,CAAA,EAAM,CAAA;AAAA,QACtH,6BACCrC,GAAAA,CAAC,UAAK,SAAA,EAAW,aAAA,CAAO,YAAY,CAAA,EAAG,IAAA,CAAK,QAAA,GAAW,KAAA,GAAQ,GAAG,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,EAC9E,QAAA,EAAA,IAAA,CAAK,OACR,CAAA,GACE;AAAA,OAAA,EAAA,EATE,KAAK,KAUb,CAAA;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACzB,MAAA,MAAM,MAAA,GAAU,IAAA,CAAK,KAAA,GAAQ,GAAA,GAAOiC,UAAS,IAAI,CAAA;AACjD,MAAA,MAAM,EAAE,QAAA,EAAU,OAAA,KAAY,kBAAA,CAAmB,IAAA,EAAM,KAAK,MAAM,CAAA;AAClE,MAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAA,GAAW,CAAA;AACtC,MAAA,MAAM,CAAA,GAAI,KAAK,MAAA,GAAS,MAAA;AACxB,MAAA,MAAM,WAAA,GAAc,cAAA,GAAiB,IAAA,CAAK,KAAA,KAAU,cAAA,GAAiB,KAAA;AAErE,MAAA,uBACEjC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,WAAW,CAAA,EAAG,aAAA,CAAO,GAAG,CAAA,CAAA,EAAIqC,WAAAA,CAAW,KAAK,CAAC,CAAA,CAAA;AAAA,YAC7C,kBAAA,EAAkB,cAAc,MAAA,GAAS,OAAA;AAAA,YACzC,MAAA;AAAA,YACA,EAAA,EAAG,GAAA;AAAA,YACH,EAAA,EAAG,GAAA;AAAA,YACH,KAAA,EAAO,QAAA;AAAA,YACP,CAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QACC,6BACCrC,GAAAA,CAAC,UAAK,SAAA,EAAW,aAAA,CAAO,YAAY,UAAA,EAAW,QAAA,EAAS,CAAA,EAAG,OAAA,CAAQ,KAAK,CAAA,EAAG,CAAA,EAAG,IAAI,CAAA,EAC/E,QAAA,EAAA,IAAA,CAAK,OACR,CAAA,GACE;AAAA,OAAA,EAAA,EAfE,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAgB9B,CAAA;AAAA,IAEJ,CAAC,CAAA;AAAA,oBACDA,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,KAAK,MAAA,GAAS,EAAA;AAAA,QACrB,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK,CAAA;AAAA,QACrC,IAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAA,EAAY;AAAA;AAAA;AACd,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,IAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAMG;AACD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,kBAAA,CAAmB,IAAA,EAAM,KAAK,MAAM,CAAA;AAExD,EAAA,uBACEC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AArxBjC,MAAA,IAAAH,GAAAA;AAsxBQ,MAAA,MAAM,UAASA,GAAAA,GAAA,IAAA,CAAK,MAAA,KAAL,IAAA,GAAAA,MAAe,EAAC;AAC/B,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,GAAS,CAAA,GAAI,IAAA,CAAK,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAC,CAAA,GAAI,CAAA;AACxE,MAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,KAAK,CAAA,GAAI,UAAA,GAAa,CAAA;AACjD,MAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,UAAA,KAAe;AACvC,QAAA,MAAM,MAAA,GAAU,KAAA,GAAQ,GAAA,GAAOoC,SAAAA,CAAS,IAAI,CAAA;AAC5C,QAAA,MAAM,CAAA,GAAI,aAAa,UAAA,GAAa,EAAA;AACpC,QAAA,MAAM,CAAA,GAAI,KAAK,MAAA,GAAS,MAAA;AACxB,QAAA,uBACEjC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,aAAA,CAAO,GAAG,CAAA,CAAA,EAAIqC,WAAAA,CAAW,UAAU,CAAC,IAAI,MAAA,EAAgB,EAAA,EAAG,KAAI,KAAA,EAAM,GAAA,EAAI,GAAM,CAAA,EAAM,CAAA;AAAA,UACxG,cAAc,UAAA,KAAe,CAAA,mBAC5BrC,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,aAAA,CAAO,UAAA,EAAY,UAAA,EAAW,QAAA,EAAS,GAAG,CAAA,GAAI,CAAA,EAAG,GAAG,CAAA,GAAI,CAAA,EACtE,iBACH,CAAA,GACE;AAAA,SAAA,EAAA,EANE,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,UAAU,CAAA,CAOnC,CAAA;AAAA,MAEJ,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,oBACDA,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,KAAK,MAAA,GAAS,EAAA;AAAA,QACrB,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK,CAAA;AAAA,QACrC,IAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAA,EAAY;AAAA;AAAA;AACd,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,gBACP,CAAA,EACA,CAAA,EACA,KAAA,EACA,MAAA,EACA,WACA,YAAA,EACA;AACA,EAAA,IAAI,SAAA,KAAc,CAAA,IAAK,YAAA,KAAiB,CAAA,EAAG;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAK,IAAA,CAAK,GAAA,CAAI,WAAW,KAAA,GAAQ,CAAA,EAAG,SAAS,CAAC,CAAA;AACpD,EAAA,MAAM,KAAK,IAAA,CAAK,GAAA,CAAI,cAAc,KAAA,GAAQ,CAAA,EAAG,SAAS,CAAC,CAAA;AACvD,EAAA,MAAM,KAAK,CAAA,GAAI,KAAA;AACf,EAAA,MAAM,KAAK,CAAA,GAAI,MAAA;AAEf,EAAA,IAAI,EAAA,GAAK,CAAA,IAAK,EAAA,KAAO,CAAA,EAAG;AACtB,IAAA,OAAO,CAAA,EAAA,EAAK,CAAA,GAAI,EAAE,CAAA,CAAA,EAAI,CAAC,CAAA,GAAA,EAAM,EAAA,GAAK,EAAE,CAAA,GAAA,EAAM,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,OAAA,EAAU,EAAE,CAAA,CAAA,EAAI,CAAA,GAAI,EAAE,CAAA,GAAA,EAAM,EAAE,CAAA,GAAA,EAAM,CAAC,CAAA,GAAA,EAAM,IAAI,EAAE,CAAA,GAAA,EAAM,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,OAAA,EAAU,CAAA,GAAI,EAAE,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,EACxI;AAEA,EAAA,IAAI,EAAA,GAAK,CAAA,IAAK,EAAA,KAAO,CAAA,EAAG;AACtB,IAAA,OAAO,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,GAAA,EAAM,EAAE,CAAA,GAAA,EAAM,EAAA,GAAK,EAAE,CAAA,GAAA,EAAM,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,OAAA,EAAU,EAAA,GAAK,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,GAAA,EAAM,CAAA,GAAI,EAAE,MAAM,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,OAAA,EAAU,CAAC,CAAA,CAAA,EAAI,EAAA,GAAK,EAAE,MAAM,CAAC,CAAA,EAAA,CAAA;AAAA,EACrI;AAEA,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,EAAE,CAAA;AAC9B,EAAA,OAAO,CAAA,EAAA,EAAK,CAAA,GAAI,MAAM,CAAA,CAAA,EAAI,CAAC,MAAM,EAAA,GAAK,MAAM,CAAA,GAAA,EAAM,MAAM,CAAA,CAAA,EAAI,MAAM,UAAU,EAAE,CAAA,CAAA,EAAI,CAAA,GAAI,MAAM,CAAA,GAAA,EAAM,EAAA,GAAK,MAAM,CAAA,GAAA,EAAM,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,OAAA,EAAU,EAAA,GAAK,MAAM,CAAA,CAAA,EAAI,EAAE,CAAA,GAAA,EAAM,CAAA,GAAI,MAAM,CAAA,GAAA,EAAM,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,OAAA,EAAU,CAAC,CAAA,CAAA,EAAI,EAAA,GAAK,MAAM,CAAA,GAAA,EAAM,CAAA,GAAI,MAAM,CAAA,GAAA,EAAM,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,OAAA,EAAU,CAAA,GAAI,MAAM,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,CAAA;AAC/R;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,IAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAMG;AACD,EAAA,MAAM,GAAA,GAAM,OAAA,GAAU,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAM;AA91B7D,IAAA,IAAAF,GAAAA;AA81BiE,IAAA,OAAA,CAAA,CAAAA,GAAAA,GAAA,IAAA,CAAK,MAAA,KAAL,IAAA,GAAAA,GAAAA,GAAe,EAAC,EAAG,MAAA,CAAO,CAAC,KAAA,EAAO,KAAA,KAAU,KAAA,GAAQ,OAAO,CAAC,CAAA;AAAA,EAAA,CAAC,CAAC,CAAA;AAE7H,EAAA,uBACEG,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAl2BjC,MAAA,IAAAH,GAAAA;AAm2BQ,MAAA,MAAM,UAASA,GAAAA,GAAA,IAAA,CAAK,MAAA,KAAL,IAAA,GAAAA,MAAe,EAAC;AAC/B,MAAA,IAAI,MAAA,GAAS,CAAA;AACb,MAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,CAAO,CAAC,KAAK,KAAA,KAAU,GAAA,GAAM,KAAA,EAAO,CAAC,CAAA,IAAK,CAAA;AAC/D,MAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,QAAA,EAAU,UAAA,KAAe;AAC1C,QAAA,MAAM,KAAA,GAAQ,OAAA,GAAW,QAAA,GAAW,KAAA,GAAS,GAAA,GAAM,QAAA;AACnD,QAAA,MAAM,MAAA,GAAU,KAAA,GAAQ,GAAA,GAAOoC,SAAAA,CAAS,IAAI,CAAA;AAC5C,QAAA,MAAM,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,MAAA,GAAS,MAAA;AACjC,QAAA,MAAM,EAAE,QAAA,EAAU,OAAA,KAAY,kBAAA,CAAmB,IAAA,EAAM,KAAK,MAAM,CAAA;AAClE,QAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAA,GAAW,CAAA;AACtC,QAAA,MAAM,KAAA,GAAQ,QAAA;AACd,QAAA,MAAA,IAAU,MAAA;AACV,QAAA,MAAM,KAAA,GAAQ,UAAA,KAAe,MAAA,CAAO,MAAA,GAAS,CAAA;AAC7C,QAAA,MAAM,KAAA,GAAQ,gBAAgB,CAAA,EAAG,CAAA,EAAG,OAAO,MAAA,EAAQ,KAAA,GAAQ,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA;AAEnE,QAAA,OAAO,wBACLlC,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,WAAW,CAAA,EAAG,aAAA,CAAO,GAAG,CAAA,CAAA,EAAIqC,WAAAA,CAAW,UAAU,CAAC,CAAA,CAAA;AAAA,YAClD,CAAA,EAAG;AAAA,WAAA;AAAA,UACE,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,UAAU,CAAA;AAAA,4BAGlCrC,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,WAAW,CAAA,EAAG,aAAA,CAAO,GAAG,CAAA,CAAA,EAAIqC,WAAAA,CAAW,UAAU,CAAC,CAAA,CAAA;AAAA,YAClD,MAAA;AAAA,YAEA,KAAA;AAAA,YACA,CAAA;AAAA,YACA;AAAA,WAAA;AAAA,UAHK,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,UAAU,CAAA;AAAA,SAIlC;AAAA,MAEJ,CAAC,CAAA,CAAE,MAAA,CAAO,UAAA,GAAa;AAAA,wBACrBrC,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAO,UAAA,EAAwC,UAAA,EAAW,QAAA,EAAS,CAAA,EAAG,SAAA,CAAU,IAAA,EAAM,OAAO,IAAA,CAAK,MAAM,CAAA,EAAG,CAAA,EAAE,IAAA,EAC3H,QAAA,EAAA,OAAA,GAAU,SAAS,KAAA,EAAA,EADmB,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,MAAA,CAEtD;AAAA,OACF,GAAI,EAAE,CAAA;AAAA,IACR,CAAC,CAAA;AAAA,oBACDA,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,KAAK,MAAA,GAAS,EAAA;AAAA,QACrB,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK,CAAA;AAAA,QACrC,IAAA;AAAA,QACA;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,iBAAiB,MAAA,EAAuB;AAC/C,EAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA,CAAK,GAAA;AAAA,IACV,CAAA;AAAA,IACA,GAAG,MAAA,CAAO,CAAC,CAAA,CAAE,MAAA,CAAO,GAAA;AAAA,MAAI,CAAC,CAAA,EAAG,KAAA,KAC1B,OAAO,MAAA,CAAO,CAAC,KAAK,IAAA,KAAM;AAz5BhC,QAAA,IAAAF,GAAAA;AAy5BmC,QAAA,OAAA,GAAA,IAAA,CAAOA,MAAA,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,KAAjB,OAAAA,GAAAA,GAAsB,CAAA,CAAA;AAAA,MAAA,CAAA,EAAI,CAAC;AAAA;AACjE,GACF;AACF;AAEA,SAAS,oBAAoB,MAAA,EAA0D;AACrF,EAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,GAAA,CAAI,CAAC,UAAU,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA,CAAE,KAAK,GAAG,CAAA;AAC5E,EAAA,MAAM,eAAe,CAAC,GAAG,MAAM,CAAA,CAAE,OAAA,GAAU,GAAA,CAAI,CAAC,UAAU,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,SAAS,CAAA,CAAE,CAAA,CAAE,KAAK,GAAG,CAAA;AAErG,EAAA,OAAO,CAAA,EAAA,EAAK,MAAA,CAAO,CAAC,CAAA,CAAE,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,CAAC,CAAA,CAAE,SAAS,CAAA,CAAA,EAAI,OAAO,IAAI,YAAY,CAAA,EAAA,CAAA;AAC3E;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,IAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,UAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAWG;AACD,EAAA,MAAM,gBAAgB,KAAA,IAAS,OAAA,GAAU,SAAS,CAAC,MAAA,CAAO,CAAC,CAAC,CAAA;AAC5D,EAAA,MAAM,SAAS,MAAA,CAAO,GAAA;AAAA,IAAI,CAAC,CAAA,EAAG,KAAA,KAC5B,aAAA,CAAc,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,KAAK,GAAG,CAAC;AAAA,GACjE;AACA,EAAA,MAAM,aAAa,OAAA,GAAU,IAAA,CAAK,IAAI,CAAA,EAAG,GAAG,MAAM,CAAA,GAAI,GAAA;AACtD,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,KAAkB,IAAA,CAAK,SAAU,KAAA,GAAQ,UAAA,GAAcoC,UAAS,IAAI,CAAA;AAEpF,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,uBACEjC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,aAAA,CAAc,GAAA,CAAI,CAAC,IAAA,EAAM,WAAA,KAAgB;AACxC,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,GAAA,CAAI,CAAC,GAAG,KAAA,KAAU;AACtC,UAAA,MAAM,QAAA,GAAW,aAAA,CACd,KAAA,CAAM,CAAA,EAAG,WAAW,CAAA,CACpB,MAAA,CAAO,CAAC,GAAA,EAAK,eAAe,GAAA,GAAM,UAAA,CAAW,MAAA,CAAO,KAAK,GAAG,CAAC,CAAA;AAChE,UAAA,MAAM,GAAA,GAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AAExC,UAAA,OAAO;AAAA,YACL,CAAA,EAAG,aAAA,CAAc,IAAA,EAAM,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,YAC3C,SAAA,EAAW,OAAO,QAAQ,CAAA;AAAA,YAC1B,IAAA,EAAM,OAAO,GAAG;AAAA,WAClB;AAAA,QACF,CAAC,CAAA;AAED,QAAA,uBACEA,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,cAAO,IAAI,CAAA,CAAA,EAAIqC,WAAAA,CAAW,WAAW,CAAC,CAAA,CAAA,EAAI,CAAA,EAAG,mBAAA,CAAoB,MAAM,CAAA,EAAG,CAAA;AAAA,0BAC9FrC,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,WAAW,CAAA,EAAG,aAAA,CAAO,IAAI,CAAA,CAAA,EAAIqC,WAAAA,CAAW,WAAW,CAAC,CAAA,CAAA;AAAA,cACpD,IAAA,EAAK,MAAA;AAAA,cACL,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,UAAU,CAAA,EAAG,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA,CAAE,KAAK,GAAG;AAAA;AAAA;AACpE,SAAA,EAAA,EANM,KAAK,EAOb,CAAA;AAAA,MAEJ,CAAC,CAAA;AAAA,sBACDrC,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,MAAA,CAAO,MAAA,GAAS,EAAA,EAAI,WAAA,EAAW,IAAA,EAAC,MAAA,EAAgB,IAAA,EAAY,QAAA,EAAoB;AAAA,KAAA,EACrG,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,aAAA,CAAc,GAAA,CAAI,CAAC,IAAA,EAAM,WAAA,KAAgB;AACxC,MAAA,IAAI,aAAA,GAAgB,CAAA;AACpB,MAAA,MAAM,SAAS,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,KAAA,KAAU;AAC/C,QAAA,MAAM,SAAA,GAAY,OAAA,GAAU,KAAA,GAAQ,aAAA,GAAgB,KAAA;AACpD,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,aAAA,IAAiB,KAAA;AAAA,QACnB;AACA,QAAA,OAAO;AAAA,UACL,CAAA,EAAG,aAAA,CAAc,IAAA,EAAM,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,UAC3C,GAAG,IAAA,CAAK,MAAA,GAAU,SAAA,GAAY,UAAA,GAAciC,UAAS,IAAI;AAAA,SAC3D;AAAA,MACF,CAAC,CAAA;AACD,MAAA,MAAM,OAAO,MAAA,GAAS,UAAA,CAAW,MAAM,CAAA,GAAI,MAAA,CAAO,IAAI,CAAC,KAAA,KAAU,CAAA,EAAG,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAE,CAAA,CAAE,KAAK,GAAG,CAAA;AAClG,MAAA,MAAM,QAAA,GAAW,CAAA,EAAA,EAAK,MAAA,CAAO,CAAC,EAAE,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,MAAM,MAAM,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,GAAG,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,KAAK,CAAC,CAAA,GAAA,EAAM,MAAA,CAAO,MAAA,CAAO,SAAS,CAAC,CAAA,CAAE,CAAC,CAAA,CAAA,EAAI,KAAK,MAAM,CAAA,EAAA,CAAA;AAEhK,MAAA,uBACEjC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,IAAA,mBAAOD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,aAAA,CAAO,IAAI,CAAA,CAAA,EAAIqC,WAAAA,CAAW,WAAW,CAAC,CAAA,CAAA,EAAI,CAAA,EAAG,UAAU,CAAA,GAAK,IAAA;AAAA,QACvF,MAAA,mBACCrC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,aAAA,CAAO,IAAI,CAAA,CAAA,EAAIqC,WAAAA,CAAW,WAAW,CAAC,CAAA,CAAA,EAAI,CAAA,EAAG,IAAA,EAAM,CAAA,mBAEvErC,GAAAA,CAAC,UAAA,EAAA,EAAS,SAAA,EAAW,CAAA,EAAG,aAAA,CAAO,IAAI,CAAA,CAAA,EAAIqC,WAAAA,CAAW,WAAW,CAAC,CAAA,CAAA,EAAI,QAAQ,IAAA,EAAM,CAAA;AAAA,QAEjF,OAAO,GAAA,CAAI,CAAC,OAAO,UAAA,qBAClBpC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,IAAC,QAAA,EAAA,EAAO,SAAA,EAAW,GAAG,aAAA,CAAO,KAAK,IAAIqC,WAAAA,CAAW,WAAW,CAAC,CAAA,CAAA,EAAI,IAAI,KAAA,CAAM,CAAA,EAAG,IAAI,KAAA,CAAM,CAAA,EAAG,GAAE,GAAA,EAAI,CAAA;AAAA,UAChG,UAAA,KAAe,CAAC,KAAA,IAAS,WAAA,KAAgB,CAAA,CAAA,mBACxCrC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,UAAA,EAAY,UAAA,EAAW,UAAS,CAAA,EAAG,KAAA,CAAM,CAAA,EAAG,CAAA,EAAG,KAAA,CAAM,CAAA,GAAI,IAC9E,QAAA,EAAA,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA,EACzB,CAAA,GACE;AAAA,SAAA,EAAA,EANE,GAAG,IAAA,CAAK,EAAE,IAAI,KAAA,CAAM,CAAC,EAO7B,CACD;AAAA,OAAA,EAAA,EAhBK,KAAK,EAiBb,CAAA;AAAA,IAEJ,CAAC,CAAA;AAAA,oBACDA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,MAAA,CAAO,MAAA,GAAS,EAAA,EAAI,WAAA,EAAW,IAAA,EAAC,MAAA,EAAgB,IAAA,EAAY,QAAA,EAAoB;AAAA,GAAA,EACrG,CAAA;AAEJ;AAEA,SAAS,OAAA,CAAQ;AAAA,EACf,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,EAAK,SAAS,GAAA,GAAM,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA,IAAK,CAAA;AACjE,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACvC,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,QAAA,KAAa,GAAA,GAAM,QAAA,CAAS,OAAO,CAAC,CAAA;AAC5F,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,CAAK,EAAA,GAAK,IAAK,aAAA,GAAgB,KAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AACtE,IAAA,MAAM,WAAW,UAAA,GAAc,IAAA,CAAK,KAAA,GAAQ,KAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAC/D,IAAA,OAAO,EAAE,QAAA,EAAU,IAAA,EAAM,UAAA,EAAW;AAAA,EACtC,CAAC,CAAA;AAED,EAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,QAAA,EAAU,CAAA;AAAA,IAC3B,MAAA,CAAO,IAAI,CAAC,EAAE,UAAU,IAAA,EAAM,UAAA,IAAc,KAAA,KAAU;AACrD,MAAA,MAAM,OAAA,GAAU,KAAK,KAAA,GAAQ,KAAA;AAC7B,MAAA,MAAM,MAAA,GAAS,KAAA,GAAQ,EAAA,GAAK,OAAA,GAAU,EAAA,GAAK,EAAA;AAC3C,MAAA,MAAM,IAAA,GAAO,KAAA,GACT,QAAA,CAAS,GAAA,EAAK,KAAK,MAAA,EAAQ,EAAA,EAAI,UAAA,EAAY,QAAQ,IACnD,OAAA,CAAQ,GAAA,EAAK,GAAA,EAAK,MAAA,EAAQ,YAAY,QAAQ,CAAA;AAClD,MAAA,MAAM,UAAA,GAAa,UAAA,CAAW,GAAA,EAAK,GAAA,EAAK,KAAA,GAAQ,EAAA,GAAK,MAAA,GAAS,IAAA,EAAM,UAAA,GAAA,CAAc,QAAA,GAAW,UAAA,IAAc,CAAC,CAAA;AAC5G,MAAA,uBACEC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,aAAA,CAAO,KAAK,CAAA,CAAA,EAAIqC,WAAAA,CAAW,KAAK,CAAC,CAAA,CAAA,EAAI,CAAA,EAAG,IAAA,EAAM,CAAA;AAAA,QACjE,UAAA,mBACCpC,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,aAAA,CAAO,UAAA,EAAY,UAAA,EAAW,QAAA,EAAS,GAAG,UAAA,CAAW,CAAA,EAAG,CAAA,EAAG,UAAA,CAAW,IAAI,CAAA,EACxF,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,KAAA,CAAM,UAAU,GAAG,CAAA;AAAA,UAAE;AAAA,SAAA,EAC7B,CAAA,GACE;AAAA,OAAA,EAAA,EANE,KAAK,KAOb,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,QAAQ,EAAE,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,YAAW,EAAkF;AAClI,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,QAAA;AAExC,EAAA,uBACEA,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAtkCjC,MAAA,IAAAH,GAAAA,EAAAC,GAAAA;AAukCQ,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,QAAA,GAAA,CAAA,CAAaD,GAAAA,GAAA,IAAA,CAAK,MAAL,IAAA,GAAAA,GAAAA,GAAU,IAAA,CAAK,KAAA,IAAS,GAAA,GAAO,SAAA;AAC3D,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,MAAA,GAAA,CAAA,CAAWC,GAAAA,GAAA,IAAA,CAAK,CAAA,KAAL,IAAA,GAAAA,GAAAA,GAAU,IAAA,CAAK,KAAA,IAAS,GAAA,GAAOmC,SAAAA,CAAS,IAAI,CAAA;AACtE,MAAA,uBACEjC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,WAAW,CAAA,EAAG,aAAA,CAAO,KAAK,CAAA,CAAA,EAAIqC,WAAAA,CAAW,KAAK,CAAC,CAAA,CAAA;AAAA,YAC/C,EAAA,EAAI,CAAA;AAAA,YACJ,EAAA,EAAI,CAAA;AAAA,YACJ,CAAA,EAAG,MAAA,GAAS,CAAA,GAAI,IAAA,CAAK,QAAQ,EAAA,GAAK;AAAA;AAAA,SACpC;AAAA,QACC,6BACCrC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAO,UAAA,EAAY,UAAA,EAAW,QAAA,EAAS,CAAA,EAAM,GAAG,CAAA,IAAK,MAAA,GAAS,KAAK,EAAA,CAAA,EACjF,QAAA,EAAA,IAAA,CAAK,OACR,CAAA,GACE;AAAA,OAAA,EAAA,EAXE,KAAK,KAYb,CAAA;AAAA,IAEJ,CAAC,CAAA;AAAA,oBACDA,GAAAA,CAAC,UAAA,EAAA,EAAW,MAAA,EAAQ,CAAC,GAAA,EAAK,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,KAAK,CAAA,EAAG,IAAA,EAAY;AAAA,GAAA,EACxE,CAAA;AAEJ;AAEA,SAAS,KAAA,CAAM,EAAE,IAAA,EAAM,QAAA,EAAU,YAAW,EAAmE;AAC7G,EAAA,MAAM,EAAA,GAAK,GAAA;AACX,EAAA,MAAM,EAAA,GAAK,GAAA;AACX,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,EAAE,CAAA;AAC7B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACvC,IAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,CAAK,EAAA,GAAK,IAAK,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAU,IAAA,CAAK,EAAA,GAAK,CAAA;AAC/D,IAAA,OAAO,WAAW,EAAA,EAAI,EAAA,EAAK,KAAK,KAAA,GAAQ,GAAA,GAAO,IAAI,KAAK,CAAA;AAAA,EAC1D,CAAC,CAAA;AACD,EAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,EAAM,IAAA,EAAM,CAAC,CAAA;AAE5B,EAAA,uBACEC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,QAAA,GACC,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACTD,GAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,WAAW,aAAA,CAAO,SAAA;AAAA,QAElB,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,GAAG,KAAA,KAAU;AAC7B,UAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,CAAK,EAAA,GAAK,IAAK,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAU,IAAA,CAAK,EAAA,GAAK,CAAA;AAC/D,UAAA,MAAM,QAAQ,UAAA,CAAW,EAAA,EAAI,EAAA,EAAI,IAAA,GAAO,IAAI,KAAK,CAAA;AACjD,UAAA,OAAO,CAAA,EAAG,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,CAAA,CAAA;AAAA,QAC9B,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,OAAA;AAAA,MALN;AAAA,KAOR,CAAA,GACC,IAAA;AAAA,oBACJA,IAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,cAAO,SAAA,EAAW,MAAA,EAAQ,OAAO,GAAA,CAAI,CAAC,UAAU,CAAA,EAAG,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,EAAG,CAAA;AAAA,IACvG,OAAO,GAAA,CAAI,CAAC,OAAO,KAAA,qBAClBC,KAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,IAAC,QAAA,EAAA,EAAO,SAAA,EAAW,GAAG,aAAA,CAAO,KAAK,IAAIqC,WAAAA,CAAW,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,KAAA,CAAM,CAAA,EAAG,IAAI,KAAA,CAAM,CAAA,EAAG,GAAE,GAAA,EAAI,CAAA;AAAA,MAC1F,UAAA,mBACCrC,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,aAAA,CAAO,UAAA,EAAY,YAAW,QAAA,EAAS,CAAA,EAAG,MAAM,CAAA,EAAG,CAAA,EAAG,MAAM,CAAA,GAAI,EAAA,EAC9E,eAAK,KAAK,CAAA,CAAE,OACf,CAAA,GACE;AAAA,KAAA,EAAA,EANE,IAAA,CAAK,KAAK,CAAA,CAAE,KAOpB,CACD;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,MAAA,GAAS,OAAA,GAAU,CAAC,GAAG,IAAI,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,KAAA,GAAQ,CAAA,CAAE,KAAK,CAAA,GAAI,IAAA;AACvE,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,MAAA,EAAQ,EAAE,CAAA;AAE/B,EAAA,uBACEA,GAAAA,CAAC,GAAA,EAAA,EACE,QAAA,EAAA,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AACvC,IAAA,MAAM,KAAA,GAAQ,GAAA,IAAO,IAAA,CAAK,KAAA,GAAQ,GAAA,CAAA;AAClC,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC7B,IAAA,MAAM,YAAY,IAAA,GAAO,GAAA,IAAO,IAAA,CAAK,KAAA,GAAQ,OAAO,KAAA,GAAQ,IAAA;AAC5D,IAAA,MAAM,CAAA,GAAI,KAAK,KAAA,GAAQ,EAAA;AACvB,IAAA,MAAM,EAAA,GAAK,MAAM,KAAA,GAAQ,CAAA;AACzB,IAAA,MAAM,EAAA,GAAK,MAAM,KAAA,GAAQ,CAAA;AACzB,IAAA,MAAM,EAAA,GAAK,MAAM,SAAA,GAAY,CAAA;AAC7B,IAAA,MAAM,EAAA,GAAK,MAAM,SAAA,GAAY,CAAA;AAC7B,IAAA,uBACEC,KAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,QAAA,mBAAWD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAO,WAAA,EAAa,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,KAAA,EAAM,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,GAAG,CAAA,GAAK,IAAA;AAAA,sBACrFA,GAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,CAAA,EAAG,aAAA,CAAO,MAAM,CAAA,CAAA,EAAIqC,WAAAA,CAAW,KAAK,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,CAAC,IAAI,EAAE,CAAA,CAAA,EAAI,CAAA,GAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,CAAA,GAAI,EAAE,CAAA,CAAA,EAAI,CAAA;AAAA,sBAC9HrC,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAO,UAAA,EAAY,UAAA,EAAW,QAAA,EAAS,CAAA,EAAE,KAAA,EAAM,CAAA,EAAG,IAAI,EAAA,EACpE,QAAA,EAAA,UAAA,GAAa,GAAG,IAAA,CAAK,KAAK,IAAI,IAAA,CAAK,KAAK,CAAA,CAAA,GAAK,IAAA,CAAK,KAAA,EACrD;AAAA,KAAA,EAAA,EALM,KAAK,KAMb,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,IAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,IAAI,OAAA,KAAY,iBAAiB,OAAA,KAAY,aAAA,IAAiB,YAAY,iBAAA,IAAqB,OAAA,KAAY,YAAA,IAAgB,OAAA,KAAY,cAAA,EAAgB;AACrJ,IAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,EAAA,EAAI,IAAA,CAAK,EAAA,EAAI,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,CAAE,CAAA;AAAA,EAClE;AAEA,EAAA,IAAI,OAAA,KAAY,MAAA,IAAU,OAAA,KAAY,MAAA,IAAU,YAAY,QAAA,EAAU;AACpE,IAAA,OAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,EAAE,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,IAAI,IAAA,CAAK,EAAA,EAAI,KAAA,EAAO,IAAA,CAAK,OAAM,CAAE,CAAA;AAAA,EAC9E;AAEA,EAAA,IAAI,OAAA,KAAY,QAAA,IAAY,OAAA,KAAY,SAAA,EAAW;AACjD,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,CAAC,EAAE,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,IAAI,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,OAAM,CAAE,CAAA;AAAA,EAC/E;AAEA,EAAA,IAAI,YAAY,aAAA,EAAe;AAC7B,IAAA,OAAO;AAAA,MACL,EAAE,EAAA,EAAI,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ;AAAA,MAC9B,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,IAAA,EAAK;AAAA,MAC7B,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,MAAA;AAAO,KACjC;AAAA,EACF;AAEA,EAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,IAAA,OAAO;AAAA,MACL,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,MACpC,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,UAAA;AAAW,KACtC;AAAA,EACF;AAEA,EAAA,IAAI,OAAA,KAAY,QAAA,IAAY,OAAA,KAAY,WAAA,IAAe,YAAY,SAAA,EAAW;AAC5E,IAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,EAAA,EAAI,IAAA,CAAK,EAAA,EAAI,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,CAAE,CAAA;AAAA,EAClE;AAEA,EAAA,IAAI,OAAA,KAAY,SAAA,IAAa,OAAA,KAAY,kBAAA,EAAoB;AAC3D,IAAA,OAAO,CAAC,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,YAAY,CAAA;AAAA,EAC/C;AAEA,EAAA,IAAI,OAAA,KAAY,YAAA,IAAgB,OAAA,KAAY,SAAA,IAAa,YAAY,YAAA,EAAc;AACjF,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,EAAA,EAAI,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,CAAE,CAAA;AAAA,EACnE;AAEA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,EAAA,EAAI,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,CAAE,CAAA;AACnE;AAEO,SAAS,KAAA,CAAM;AAAA,EACpB,IAAA,GAAO,aAAA;AAAA,EACP,MAAA,GAAS,GAAA;AAAA,EACT,cAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,GAAU,MAAA;AAAA,EACV,MAAA,GAAS,eAAA;AAAA,EACT,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,UAAA,GAAa,IAAA;AAAA,EACb,UAAA,GAAa,KAAA;AAAA,EACb,KAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAe;AACb,EAAA,MAAM,MAAA,GAASE,OAAsB,IAAI,CAAA;AACzC,EAAA,MAAM,aAAaK,KAAAA,EAAM;AACzB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIJ,SAAS,CAAC,CAAA;AAC1C,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,EAAM,MAAM,CAAA;AACjC,EAAA,MAAM,eAAA,GAAkB,oBAAA,CAAqB,QAAA,CAAS,OAAO,CAAA;AAC7D,EAAA,MAAM,aAAA,GAAgB,GAAA;AACtB,EAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,GAAG,CAAA;AAC5C,EAAA,MAAM,cAAc,eAAA,GAAkB,aAAA;AACtC,EAAA,MAAM,eAAA,GAAkB,qBAAA,CAAsB,OAAA,EAAS,IAAA,CAAK,MAAM,CAAA;AAClE,EAAA,MAAM,gBAAA,GACJ,QAAA,IAAY,eAAA,GACR,IAAA,CAAK,GAAA,CAAI,eAAA,EAAiB,QAAA,GAAW,CAAA,GAAI,QAAA,GAAW,WAAA,GAAc,eAAe,CAAA,GACjF,GAAA;AACN,EAAA,MAAM,QAAA,GAAW,QAAA,IAAY,eAAA,GAAkB,WAAA,CAAY,gBAAgB,CAAA,GAAI,WAAA;AAC/E,EAAA,MAAM,YAAA,GAAe,KAAK,MAAA,GAAS,EAAA;AACnC,EAAA,MAAM,aAAa,WAAA,CAAY,QAAA,EAAU,EAAE,YAAA,EAAc,QAAA,EAAU,SAAS,CAAA;AAC5E,EAAA,MAAM,OAAA,GAAU,CAAA,IAAA,EAAO,gBAAgB,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AACxD,EAAA,MAAM,iBAAA,GAAoB,OAAA,KAAY,UAAA,IAAc,OAAA,KAAY,oBAAA;AAChE,EAAA,MAAM,eAAA,GAAkB;AAAA,IACtB,GAAA,EAAK,EAAA;AAAA,IACL,IAAA,EAAM,qBAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AACA,EAAA,MAAM,KAAA,GAAQ,EAAE,gBAAA,EAAkB,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA,EAAK;AAChD,EAAA,MAAM,cAAc,cAAA,CAAe,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAC5D,EAAA,MAAM,WAAA,GAAc,mBAAmB,OAAO,CAAA;AAC9C,EAAA,MAAM,OAAA,GAAU,yBAAA,CAA0B,OAAO,CAAA,GAC7C,eAAA,CAAgB,OAAA,EAAS,IAAA,EAAM,MAAA,EAAQ,GAAG,CAAA,GAC1C,EAAE,GAAA,EAAK,GAAG,GAAA,EAAI;AAClB,EAAA,MAAM,aAAA,GAAgB,yBAAA,CAA0B,OAAO,CAAA,IAAK,kCAAkC,OAAO,CAAA;AACrG,EAAA,MAAM,OAAA,GACJ,OAAA,KAAY,aAAA,IAAiB,OAAA,KAAY,oBACrC,IAAA,CAAK,GAAA;AAAA,IACH,CAAA;AAAA,IACA,GAAI,YAAY,iBAAA,GACZ,CAAC,GAAG,CAAA,GACJ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAM;AApxC9B,MAAA,IAAAL,GAAAA;AAoxCkC,MAAA,OAAA,CAAA,CAAAA,GAAAA,GAAA,IAAA,CAAK,MAAA,KAAL,IAAA,GAAAA,GAAAA,GAAe,EAAC,EAAG,MAAA,CAAO,CAAC,KAAA,EAAO,KAAA,KAAU,KAAA,GAAQ,OAAO,CAAC,CAAA;AAAA,IAAA,CAAC;AAAA,GACvF,GACA,YAAY,cAAA,GACV,gBAAA,CAAiB,MAAM,CAAA,GACvB,aAAA,GACE,QAAQ,GAAA,GACR,GAAA;AACV,EAAA,MAAM,OAAA,GAAU,aAAA,GAAgB,OAAA,CAAQ,GAAA,GAAM,CAAA;AAE9C,EAAAO,UAAU,MAAM;AACd,IAAA,MAAM,MAAM,MAAA,CAAO,OAAA;AAEnB,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,WAAA,CAAY,GAAA,CAAI,qBAAA,EAAsB,CAAE,KAAK,CAAA;AAAA,IAC/C,CAAA;AAEA,IAAA,WAAA,EAAY;AAEZ,IAAA,MAAM,cAAA,GAAiB,IAAI,cAAA,CAAe,WAAW,CAAA;AACrD,IAAA,cAAA,CAAe,QAAQ,GAAG,CAAA;AAE1B,IAAA,OAAO,MAAM;AACX,MAAA,cAAA,CAAe,UAAA,EAAW;AAAA,IAC5B,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACEJ,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAW,aAAA,CAAO,KAAA;AAAA,MAClB,eAAA,EAAe,QAAA;AAAA,MACf,oBAAA,EAAoB,eAAA;AAAA,MACpB,cAAA,EAAc,OAAA;AAAA,MACd,gBAAA,EAAgB,QAAA;AAAA,MAChB,cAAA,EAAc,OAAA;AAAA,MACd,KAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,mBACCD,GAAAA,CAAC,YAAA,EAAA,EAAW,SAAA,EAAW,cAAO,MAAA,EAC5B,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,CAAO,KAAA,EAAQ,QAAA,EAAA,KAAA,EAAM,GACxC,CAAA,GACE,IAAA;AAAA,wBACJC,IAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,QAAQ,YAAA,EAAY,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,CAAA,EAAG,OAAO,UAAU,SAAA,EAAW,aAAA,CAAO,GAAA,EAAK,IAAA,EAAK,OAAM,OAAA,EAC1F,QAAA,EAAA;AAAA,UAAA,WAAA,mBAAcD,GAAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAK,OAAA,EAAS,GAAA,EAAK,OAAA,EAAS,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,eAAe,CAAA,GAAK,IAAA;AAAA,UACjH,8BACCA,GAAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,YAAA;AAAA,cACA,YAAY,OAAA,KAAY,gBAAA;AAAA,cACxB,GAAA,EAAK,OAAA;AAAA,cACL,GAAA,EAAK,OAAA;AAAA,cACL,IAAA,EAAM,UAAA;AAAA,cACN,IAAA,EAAM,QAAA;AAAA,cACN,SAAA,EAAW,aAAA;AAAA,cACX,OAAA;AAAA,cACA,UAAA;AAAA,cACA;AAAA;AAAA,WACF,GACE,IAAA;AAAA,UACH,OAAA,KAAY,iCACXA,GAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,cAAA;AAAA,cACA,GAAA;AAAA,cACA,IAAA,EAAM,UAAA;AAAA,cACN,QAAA;AAAA,cACA;AAAA;AAAA,WACF,GACE,IAAA;AAAA,UACH,OAAA,KAAY,gBAAA,mBACXA,GAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAY,UAAA,EAAU,IAAA,EAAC,GAAA,EAAU,IAAA,EAAM,UAAA,EAAY,QAAA,EAAoB,YAAwB,CAAA,GACnG,IAAA;AAAA,UACH,OAAA,KAAY,aAAA,mBACXA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAY,GAAA,EAAU,IAAA,EAAM,UAAA,EAAY,QAAA,EAAoB,UAAA,EAAwB,CAAA,GAC/F,IAAA;AAAA,UACH,OAAA,KAAY,aAAA,mBACXA,GAAAA,CAAC,WAAA,EAAA,EAAY,MAAY,IAAA,EAAM,UAAA,EAAY,QAAA,EAAoB,UAAA,EAAwB,CAAA,GACrF,IAAA;AAAA,UACH,OAAA,KAAY,iBAAA,mBACXA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAY,OAAA,EAAO,IAAA,EAAC,IAAA,EAAM,UAAA,EAAY,QAAA,EAAoB,UAAA,EAAwB,CAAA,GAC7F,IAAA;AAAA,UACH,OAAA,KAAY,yBACXA,GAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK,CAAA;AAAA,cACrC,GAAA;AAAA,cACA,IAAA,EAAM,UAAA;AAAA,cACN,MAAA;AAAA,cACA,QAAA;AAAA,cACA;AAAA;AAAA,WACF,GACE,IAAA;AAAA,UACH,OAAA,KAAY,+BACXA,GAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK,CAAA;AAAA,cACrC,GAAA;AAAA,cACA,KAAA,EAAK,IAAA;AAAA,cACL,IAAA,EAAM,UAAA;AAAA,cACN,MAAA;AAAA,cACA,QAAA;AAAA,cACA;AAAA;AAAA,WACF,GACE,IAAA;AAAA,UACH,OAAA,KAAY,yBACXA,GAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAI,IAAA;AAAA,cACJ,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK,CAAA;AAAA,cACrC,GAAA;AAAA,cACA,IAAA,EAAM,UAAA;AAAA,cACN,MAAA;AAAA,cACA,QAAA;AAAA,cACA;AAAA;AAAA,WACF,GACE,IAAA;AAAA,UACH,OAAA,KAAY,iCACXA,GAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAI,IAAA;AAAA,cACJ,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK,CAAA;AAAA,cACrC,GAAA,EAAK,iBAAiB,MAAM,CAAA;AAAA,cAC5B,IAAA,EAAM,UAAA;AAAA,cACN,MAAA;AAAA,cACA,QAAA;AAAA,cACA,UAAA;AAAA,cACA,OAAA,EAAO;AAAA;AAAA,WACT,GACE,IAAA;AAAA,UACH,OAAA,KAAY,2BACXA,GAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK,CAAA;AAAA,cACrC,GAAA;AAAA,cACA,IAAA,EAAM,UAAA;AAAA,cACN,MAAA;AAAA,cACA,QAAA;AAAA,cACA,UAAA;AAAA,cACA,MAAA,EAAM;AAAA;AAAA,WACR,GACE,IAAA;AAAA,UACH,OAAA,KAAY,wBAAQA,GAAAA,CAAC,WAAQ,IAAA,EAAY,QAAA,EAAoB,YAAwB,CAAA,GAAK,IAAA;AAAA,UAC1F,OAAA,KAAY,OAAA,mBAAUA,GAAAA,CAAC,OAAA,EAAA,EAAQ,MAAY,KAAA,EAAK,IAAA,EAAC,QAAA,EAAoB,UAAA,EAAwB,CAAA,GAAK,IAAA;AAAA,UAClG,OAAA,KAAY,YAAA,mBAAeA,GAAAA,CAAC,OAAA,EAAA,EAAQ,MAAY,KAAA,EAAK,IAAA,EAAC,QAAA,EAAoB,UAAA,EAAwB,CAAA,GAAK,IAAA;AAAA,UACvG,OAAA,KAAY,4BAAYA,GAAAA,CAAC,WAAQ,IAAA,EAAY,IAAA,EAAM,UAAA,EAAY,UAAA,EAAwB,CAAA,GAAK,IAAA;AAAA,UAC5F,OAAA,KAAY,QAAA,mBAAWA,GAAAA,CAAC,OAAA,EAAA,EAAQ,MAAA,EAAM,IAAA,EAAC,IAAA,EAAY,IAAA,EAAM,UAAA,EAAY,UAAA,EAAwB,CAAA,GAAK,IAAA;AAAA,UAClG,OAAA,KAAY,0BAAUA,GAAAA,CAAC,SAAM,IAAA,EAAY,QAAA,EAAoB,YAAwB,CAAA,GAAK,IAAA;AAAA,UAC1F,OAAA,KAAY,2BAAWA,GAAAA,CAAC,cAAW,IAAA,EAAY,QAAA,EAAoB,YAAwB,CAAA,GAAK,IAAA;AAAA,UAChG,OAAA,KAAY,SAAA,mBAAYA,GAAAA,CAAC,UAAA,EAAA,EAAW,MAAY,OAAA,EAAO,IAAA,EAAC,QAAA,EAAoB,UAAA,EAAwB,CAAA,GAAK,IAAA;AAAA,UACzG,OAAA,KAAY,OAAA,mBACXA,GAAAA,CAAC,cAAA,EAAA,EAAe,MAAY,IAAA,EAAM,UAAA,EAAY,MAAA,EAAQ,aAAA,EAAQ,CAAA,GAC5D,IAAA;AAAA,UACH,OAAA,KAAY,SAAA,IAAa,QAAA,mBAAWA,GAAAA,CAAC,qBAAkB,IAAA,EAAM,UAAA,EAAY,MAAA,EAAQ,aAAA,EAAQ,CAAA,GAAK,IAAA;AAAA,UAC9F,OAAA,KAAY,kBAAA,IAAsB,QAAA,mBACjCA,GAAAA,CAAC,6BAA0B,IAAA,EAAM,UAAA,EAAY,MAAA,EAAQ,aAAA,EAAQ,CAAA,GAC3D,IAAA;AAAA,UACH,0BAA0B,OAAO,CAAA,mBAChCC,IAAAA,CAAAG,UAAA,EACE,QAAA,EAAA;AAAA,4BAAAJ,IAAC,MAAA,EAAA,EACC,QAAA,kBAAAA,IAAC,UAAA,EAAA,EAAS,EAAA,EAAI,YACZ,QAAA,kBAAAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,QACE,UAAA,CAAW,MAAA,GACX,WAAW,GAAA,IACV,iBAAA,GAAoB,gBAAgB,GAAA,GAAM,CAAA,CAAA;AAAA,gBAE7C,KAAA,EACE,WAAW,SAAA,GACX,UAAA,CAAW,YACV,iBAAA,GAAoB,eAAA,CAAgB,IAAA,GAAO,eAAA,CAAgB,KAAA,GAAQ,CAAA,CAAA;AAAA,gBAEtE,CAAA,EAAG,UAAA,CAAW,QAAA,IAAY,iBAAA,GAAoB,gBAAgB,IAAA,GAAO,CAAA,CAAA;AAAA,gBACrE,CAAA,EAAG,UAAA,CAAW,GAAA,IAAO,iBAAA,GAAoB,gBAAgB,GAAA,GAAM,CAAA;AAAA;AAAA,eAEnE,CAAA,EACF,CAAA;AAAA,4BACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,UAAU,CAAA,KAAA,EAAQ,UAAU,KAC7B,QAAA,kBAAAA,GAAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,IAAA;AAAA,gBACA,IAAA,EAAM,UAAA;AAAA,gBACN,MAAA;AAAA,gBACA,UAAA;AAAA,gBACA,MAAA,EAAQ,aAAA;AAAA,gBACR,OAAA;AAAA,gBACA,MAAM,OAAA,CAAQ,GAAA;AAAA,gBACd,MAAM,OAAA,CAAQ;AAAA;AAAA,aAChB,EACF;AAAA,WAAA,EACF,CAAA,GACE,IAAA;AAAA,UACH,0BAA0B,OAAO,CAAA,IAAK,YAAY,oCAAA,CAAqC,OAAO,oBAC7FA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,KAAK,MAAA,GAAS,EAAA;AAAA,cACrB,WAAA,EAAa,CAAC,gCAAA,CAAiC,OAAO,CAAA;AAAA,cACtD,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,KAAK,CAAA;AAAA,cACrC,IAAA,EAAM,UAAA;AAAA,cACN,QAAA;AAAA,cACA,UAAA,EAAY,gCAAA,CAAiC,OAAO,CAAA,GAAI,EAAE,IAAA,EAAM,UAAA,CAAW,QAAA,EAAU,KAAA,EAAO,UAAA,CAAW,SAAA,EAAU,GAAI,MAAA;AAAA,cACrH,YAAA,EAAc,iCAAiC,OAAO,CAAA;AAAA,cACtD,QAAA,EAAU,OAAA,KAAY,UAAA,IAAc,OAAA,KAAY,oBAAA;AAAA,cAChD,gBAAA,EACE,OAAA,KAAY,aAAA,GACR,0BAAA,CAA2B,UAAA,EAAY,IAAA,CAAK,MAAM,CAAA,GAClD,OAAA,KAAY,WAAA,GACV,wBAAA,CAAyB,UAAA,EAAY,IAAA,CAAK,MAAM,CAAA,GAChD,OAAA,KAAY,UAAA,GACV,sBAAA,CAAuB,UAAA,EAAY,IAAA,CAAK,MAAM,CAAA,GAC9C,OAAA,KAAY,QAAA,GACV,qBAAA,CAAsB,UAAA,EAAY,IAAA,CAAK,MAAM,CAAA,GAC7C;AAAA;AAAA,WAEd,GACE;AAAA,SAAA,EACN,CAAA;AAAA,QACC,UAAA,mBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,CAAO,MAAA,EAAQ,YAAA,EAAW,cAAA,EACvC,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AAChC,UAAA,MAAM,WAAA,GACJ,OAAA,KAAY,aAAA,GACR,KAAA,KAAU,IACR,CAAA,GACA,KAAA,KAAU,CAAA,GACR,CAAA,GACA,IACJ,OAAA,KAAY,WAAA,GACV,KAAA,KAAU,CAAA,GACR,IACA,CAAA,GACF,KAAA;AACR,UAAA,uBACEC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,cAAO,UAAA,EACtB,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,aAAA,CAAO,YAAY,CAAA,CAAA,EAAIqC,WAAAA,CAAW,WAAW,CAAC,CAAA,CAAA,EAAI,CAAA;AAAA,YACrE,IAAA,CAAK;AAAA,WAAA,EAAA,EAFiC,KAAK,EAG9C,CAAA;AAAA,QAEJ,CAAC,GACH,CAAA,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;;;ACjgDA,IAAA,gBAAA,GAAA,EAAA;ACSA,IAAM,UAAA,GAAa,CAAC,KAAA,KAAkB,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAEhF,SAAS,YAAA,CAAa,EAAE,KAAA,EAAM,EAAsB;AAClD,EAAA,uBACErC,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAW,gBAAA,CAAO,IAAA;AAAA,MAClB,WAAA,EAAW;AAAA;AAAA,GACb;AAEJ;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,SAAA,GAAY,SAAA;AAAA,EACZ,KAAA,GAAQ,CAAA;AAAA,EACR,OAAA,GAAU;AACZ,CAAA,EAAkB;AAChB,EAAA,MAAM,SAAA,GAAY,WAAW,KAAK,CAAA;AAClC,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,WAAU,EAAG,CAAC,CAAA,EAAG,KAAA,KAAU,KAAK,CAAA;AAEvE,EAAA,IAAI,YAAY,QAAA,EAAU;AACxB,IAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,QAAO,YAAA,EAAW,iBAAA,EAAkB,SAAA,EAAW,gBAAA,CAAO,UAAU,gBAAA,EAAgB,SAAA,EAAW,cAAA,EAAc,OAAA,EAAS,MAAK,QAAA,EACpI,QAAA,EAAA;AAAA,sBAAAD,IAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,iBAAO,MAAA,EAAQ,CAAA;AAAA,sBACnDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,gBAAA,CAAO,eACrB,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,KAAA,qBACdA,GAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAA,EAAmB,KAAO,CACzC,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,IAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,QAAO,YAAA,EAAW,iBAAA,EAAkB,SAAA,EAAW,gBAAA,CAAO,UAAU,gBAAA,EAAgB,SAAA,EAAW,cAAA,EAAc,OAAA,EAAS,MAAK,QAAA,EACpI,QAAA,EAAA;AAAA,sBAAAD,IAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,iBAAO,KAAA,EAAO,CAAA;AAAA,sBAClDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,gBAAA,CAAO,OACrB,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,KAAA,qBACdA,GAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAA,EAAmB,KAAO,CACzC,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,YAAY,OAAA,EAAS;AACvB,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,MAAA,EAAO,cAAW,eAAA,EAAgB,SAAA,EAAW,gBAAA,CAAO,QAAA,EAAU,gBAAA,EAAgB,SAAA,EAAW,gBAAc,OAAA,EAAS,IAAA,EAAK,QAAA,EACjI,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,QAAQ,CAAA,EAAE,EAAG,CAAC,CAAA,EAAG,QAAA,qBAC7BA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,gBAAA,CAAO,QAAA,EACrB,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,CAAA,EAAE,EAAG,CAACiC,EAAAA,EAAG,SAAA,qBAC7BjC,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,gBAAA,CAAO,SAAA,EAAA,EAAgB,SAAW,CACvE,CAAA,EAAA,EAHoC,QAIvC,CACD,CAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,MAAA,EAAO,YAAA,EAAW,iBAAA,EAAkB,SAAA,EAAW,gBAAA,CAAO,QAAA,EAAU,gBAAA,EAAgB,SAAA,EAAW,cAAA,EAAc,SAAS,IAAA,EAAK,QAAA,EACnI,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,KAAA,qBACdA,GAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAA,EAAmB,KAAO,CACzC,CAAA,EACH,CAAA;AAEJ;;;AC5EA,IAAA,gBAAA,GAAA,EAAA;ACyBO,SAAS,QAAA,CAAS;AAAA,EACvB,iBAAA,GAAoB,IAAA;AAAA,EACpB,eAAA,GAAkB,IAAA;AAAA,EAClB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,OAAA;AAAA,EACA,YAAA,GAAe,eAAA;AAAA,EACf,cAAA,GAAiB,QAAA;AAAA,EACjB;AACF,CAAA,EAAkB;AAnClB,EAAA,IAAAF,GAAAA,EAAAC,GAAAA;AAoCE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAII,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,eAAe,IAAA,KAAS,MAAA;AAC9B,EAAA,MAAM,MAAA,GAAS,eAAe,IAAA,GAAO,YAAA;AACrC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,MAAM,CAAA;AACnD,EAAA,MAAM,UAAA,GAAaD,OAA0B,IAAI,CAAA;AACjD,EAAA,MAAM,QAAA,GAAWA,OAAuB,IAAI,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAWA,OAA0B,IAAI,CAAA;AAE/C,EAAA,MAAM,OAAA,GAAUS,WAAAA,CAAY,CAAC,QAAA,KAAsB;AACjD,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,IAC1B;AAEA,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,QAAA,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,YAAA,EAAc,YAAY,CAAC,CAAA;AAE/B,EAAA,uBAAA,CAAwB,MAAA,IAAU,YAAY,QAAA,EAAU;AAAA,IACtD,eAAA,EAAiB,QAAA;AAAA,IACjB,YAAA,EAAc;AAAA,GACf,CAAA;AAED,EAAAN,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,eAAA,EAAiB;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAEhD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EAClE,CAAA,EAAG,CAAC,eAAA,EAAiB,MAAA,EAAQ,OAAO,CAAC,CAAA;AAErC,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAMkC,WAAU,MAAA,CAAO,UAAA,CAAW,MAAM,aAAA,CAAc,IAAI,GAAG,CAAC,CAAA;AAE9D,MAAA,OAAO,MAAM,MAAA,CAAO,YAAA,CAAaA,QAAO,CAAA;AAAA,IAC1C;AAEA,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AACtC,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB,GAAG,GAAG,CAAA;AAEN,IAAA,OAAO,MAAM,MAAA,CAAO,YAAA,CAAa,OAAO,CAAA;AAAA,EAC1C,CAAA,EAAG,CAAC,MAAA,EAAQ,UAAU,CAAC,CAAA;AAEvB,EAAA,MAAM,WAAA,GAAA,CAAcxC,GAAAA,GAAAA,CAAAD,GAAAA,GAAA,KAAA,CAAM,OAAA,KAAN,OAAAA,GAAAA,GAAiB,KAAA,CAAM,GAAA,KAAvB,IAAA,GAAAC,GAAAA,GAA8B,YAAA;AAElD,EAAA,uBACEE,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,gBAAA,CAAO,QAAA,EAAU,wBAAsB,cAAA,EACrD,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,UAAA;AAAA,QACL,YAAA,EAAY,UAAU,YAAA,GAAe,MAAA;AAAA,QACrC,WAAW,gBAAA,CAAO,OAAA;AAAA,QAClB,cAAA,EAAc,cAAA;AAAA,QACd,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,QAE1B,QAAA,EAAA,OAAA,IAAA,IAAA,GAAA,OAAA,mBAAWA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,YAAA,EAAa;AAAA;AAAA,KAClC;AAAA,IAEC,MAAA,IAAU,6BACTA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,gBAAA,CAAO,OAAA;AAAA,QAClB,YAAA,EAAY,SAAS,MAAA,GAAS,SAAA;AAAA,QAC9B,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,UAAA,IAAI,iBAAA,IAAqB,KAAA,CAAM,MAAA,KAAW,KAAA,CAAM,aAAA,EAAe;AAC7D,YAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,UACf;AAAA,QACF,CAAA;AAAA,QAEA,QAAA,kBAAAC,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAY,WAAA;AAAA,YACZ,YAAA,EAAW,MAAA;AAAA,YACX,WAAW,gBAAA,CAAO,KAAA;AAAA,YAClB,IAAA,EAAK,QAAA;AAAA,YAEL,QAAA,EAAA;AAAA,8BAAAD,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,QAAA;AAAA,kBACL,YAAA,EAAW,gBAAA;AAAA,kBACX,WAAW,gBAAA,CAAO,KAAA;AAAA,kBAClB,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,kBAE5B,QAAA,kBAAAA,GAAAA,CAACuB,eAAAA,EAAA,EAAgB,aAAA,EAAY,QAAO,SAAA,EAAW,gBAAA,CAAO,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS;AAAA;AAAA,eAClF;AAAA,8BACAtB,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,iBAAO,KAAA,EACxB,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,KAAA,CAAM,GAAA,EAAK,WAAW,gBAAA,CAAO,KAAA,EAAO,GAAA,EAAK,KAAA,CAAM,GAAA,EAAK,CAAA;AAAA,gBAC7D,WAAA,IAAe,KAAA,CAAM,OAAA,mBACpBA,GAAAA,CAAC,YAAA,EAAA,EAAW,SAAA,EAAW,gBAAA,CAAO,OAAA,EAAU,QAAA,EAAA,KAAA,CAAM,OAAA,EAAQ,CAAA,GACpD;AAAA,eAAA,EACN;AAAA;AAAA;AAAA;AACF;AAAA,KACF,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;;;AC/IA,IAAA,gBAAA,GAAA,EAAA;ACqBA,SAAS,SAAA,CAAU,OAAe,KAAA,EAAe;AAC/C,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA,CAAK,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAC,CAAA,EAAG,QAAQ,CAAC,CAAA;AAC/C;AAEA,SAAS,gBAAA,CAAiB,QAAwB,WAAA,EAAsB;AACtE,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA;AACrC,EAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AAEtB,EAAA,OAAO,CAAC,IAAA,EAAM,GAAG,MAAA,EAAQ,KAAK,CAAA;AAChC;AAEA,SAAS,YAAA,CAAa,UAAA,EAAoB,YAAA,EAAsB,WAAA,EAAsB;AACpF,EAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,SAAA,CAAU,YAAY,YAAY,CAAA;AAAA,EAC3C;AAEA,EAAA,IAAI,eAAe,CAAA,EAAG;AACpB,IAAA,OAAO,YAAA,GAAe,CAAA;AAAA,EACxB;AAEA,EAAA,IAAI,UAAA,KAAe,eAAe,CAAA,EAAG;AACnC,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,OAAO,SAAA,CAAU,UAAA,GAAa,CAAA,EAAG,YAAY,CAAA;AAC/C;AAEA,SAAS,yBAAA,CAA0B,WAAmB,WAAA,EAAsB;AAC1E,EAAA,OAAO,WAAA,GAAc,YAAY,CAAA,GAAI,SAAA;AACvC;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,SAAA,GAAY,gBAAA;AAAA,EACZ,MAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,IAAA,GAAO,IAAA;AAAA,EACP,YAAA,GAAe,IAAA;AAAA,EACf,QAAA,GAAW;AACb,CAAA,EAAkB;AAChB,EAAA,MAAM,WAAA,GAAc,OAAO,MAAA,GAAS,CAAA;AACpC,EAAA,MAAM,cAAc,IAAA,IAAQ,WAAA;AAC5B,EAAA,MAAM,WAAA,GAAcc,OAAAA;AAAA,IAClB,MAAM,gBAAA,CAAiB,MAAA,EAAQ,WAAW,CAAA;AAAA,IAC1C,CAAC,QAAQ,WAAW;AAAA,GACtB;AAEA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIX,SAAS,MAAM;AACjD,IAAA,MAAM,IAAA,GAAO,SAAA,CAAU,YAAA,EAAc,MAAA,CAAO,MAAM,CAAA;AAClD,IAAA,OAAO,yBAAA,CAA0B,MAAM,WAAW,CAAA;AAAA,EACpD,CAAC,CAAA;AACD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,SAAS,IAAI,CAAA;AAC/D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,YAAA,GAAeD,OAAO,KAAK,CAAA;AAEjC,EAAAG,UAAU,MAAM;AACd,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,GAAO,SAAA,CAAU,YAAA,EAAc,MAAA,CAAO,MAAM,CAAA;AAClD,IAAA,oBAAA,CAAqB,KAAK,CAAA;AAC1B,IAAA,cAAA,CAAe,KAAK,CAAA;AACpB,IAAA,aAAA,CAAc,yBAAA,CAA0B,IAAA,EAAM,WAAW,CAAC,CAAA;AAE1D,IAAA,MAAM,KAAA,GAAQ,sBAAsB,MAAM;AACxC,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA,MAC3B,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,OAAO,MAAM,qBAAqB,KAAK,CAAA;AAAA,EACzC,GAAG,CAAC,MAAA,CAAO,MAAA,EAAQ,YAAA,EAAc,WAAW,CAAC,CAAA;AAE7C,EAAA,MAAM,WAAA,GAAc,YAAA,CAAa,UAAA,EAAY,MAAA,CAAO,QAAQ,WAAW,CAAA;AACvE,EAAA,MAAM,WAAA,GAAc,OAAO,WAAW,CAAA;AAEtC,EAAA,MAAM,cAAA,GAAiBM,WAAAA,CAAY,CAAC,cAAA,EAAwB,UAAU,IAAA,KAAS;AAC7E,IAAA,IAAI,WAAA,CAAY,WAAW,CAAA,EAAG;AAC5B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,YAAY,MAAA,GAAS,CAAA;AACtC,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,cAAA,EAAgB,CAAC,GAAG,QAAQ,CAAA;AAE9D,IAAA,IAAI,WAAW,WAAA,EAAa;AAC1B,MAAA;AAAA,IACF;AAEA,IAAA,oBAAA,CAAqB,OAAO,CAAA;AAC5B,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACrB;AAEA,IAAA,aAAA,CAAc,OAAO,CAAA;AAAA,EACvB,CAAA,EAAG,CAAC,WAAA,EAAa,WAAA,CAAY,MAAM,CAAC,CAAA;AAEpC,EAAA,MAAM,IAAA,GAAOA,WAAAA,CAAY,CAAC,WAAA,KAAwB;AAChD,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,WAAA,GAAA,CACb,WAAA,GAAc,MAAA,CAAO,MAAA,GAAU,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,MAAA,GACzD,SAAA,CAAU,WAAA,EAAa,MAAA,CAAO,MAAM,CAAA;AAExC,IAAA,IAAI,eAAe,WAAA,EAAa;AAC9B,MAAA;AAAA,IACF;AAEA,IAAA,cAAA,CAAe,yBAAA,CAA0B,UAAA,EAAY,WAAW,CAAA,EAAG,IAAI,CAAA;AAAA,EACzE,GAAG,CAAC,WAAA,EAAa,gBAAgB,MAAA,CAAO,MAAA,EAAQ,WAAW,CAAC,CAAA;AAE5D,EAAA,MAAM,UAAA,GAAaA,WAAAA,CAAY,CAAC,cAAA,KAA2B;AACzD,IAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,IAAA,oBAAA,CAAqB,KAAK,CAAA;AAC1B,IAAA,aAAA,CAAc,cAAc,CAAA;AAC5B,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,YAAA,CAAa,OAAA,GAAU,KAAA;AACvB,QAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,QAAA,cAAA,CAAe,KAAK,CAAA;AAAA,MACtB,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,IAAI,WAAA,EAAa;AACf,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,WAAA,IAAe,UAAA,KAAe,CAAA,EAAG;AACpC,MAAA;AAAA,IACF;AAEA,IAAA,cAAA,CAAe,UAAA,GAAa,GAAG,IAAI,CAAA;AAAA,EACrC,CAAA;AAEA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,IAAI,WAAA,EAAa;AACf,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,WAAA,IAAe,UAAA,KAAe,WAAA,CAAY,SAAS,CAAA,EAAG;AACzD,MAAA;AAAA,IACF;AAEA,IAAA,cAAA,CAAe,UAAA,GAAa,GAAG,IAAI,CAAA;AAAA,EACrC,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAAiD;AAC5E,IAAA,IACE,KAAA,CAAM,WAAW,KAAA,CAAM,aAAA,IACpB,MAAM,YAAA,KAAiB,WAAA,IACvB,aAAa,OAAA,EAChB;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,UAAA,KAAe,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AACzC,MAAA,UAAA,CAAW,CAAC,CAAA;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,eAAe,CAAA,EAAG;AACpB,MAAA,UAAA,CAAW,WAAA,CAAY,SAAS,CAAC,CAAA;AACjC,MAAA;AAAA,IACF;AAEA,IAAA,cAAA,CAAe,KAAK,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,uBACEX,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAO,KAAA,EAAO,IAAA,EAAK,UAAS,QAAA,EAAA,+BAAA,EAE5C,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEC,IAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,SAAA;AAAA,MACZ,WAAW,gBAAA,CAAO,QAAA;AAAA,MAClB,QAAA,EAAU,cAAc,CAAA,GAAI,MAAA;AAAA,MAC5B,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,CAAC,eAAe,WAAA,EAAa;AAC/B,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,EAAa;AAC7B,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,cAAA,EAAe;AACf,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAA,CAAM,QAAQ,YAAA,EAAc;AAC9B,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,UAAA,EAAW;AAAA,QACb;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,UAAK,aAAA,EAAY,MAAA,EAAO,aAAU,QAAA,EAAS,SAAA,EAAW,gBAAA,CAAO,cAAA,EAC3D,QAAA,EAAA,CAAA,MAAA,EAAS,WAAA,GAAc,CAAC,CAAA,IAAA,EAAO,MAAA,CAAO,MAAM,CAAA,EAAA,CAAG,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa,OAAA,IAAU,KAAK,WAAA,CAAY,OAAO,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA,EACxG,CAAA;AAAA,wBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAO,KAAA,EACrB,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAW,gBAAA,CAAO,KAAA;AAAA,cAClB,iBAAA,EAAiB,oBAAoB,MAAA,GAAS,OAAA;AAAA,cAC9C,OAAO,EAAE,SAAA,EAAW,CAAA,YAAA,EAAe,UAAA,GAAa,GAAG,CAAA,EAAA,CAAA,EAAK;AAAA,cACxD,eAAA,EAAiB,mBAAA;AAAA,cAEhB,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,KAAO;AAzP1C,gBAAA,IAAAF,GAAAA,EAAAC,GAAAA;AA0PY,gBAAA,uBAAAC,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,gBAAA,CAAO,OACrB,QAAA,kBAAAA,GAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,KAAA;AAAA,oBACA,WAAA,EAAa,YAAA;AAAA,oBACb,yBACEA,GAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,GAAA,EAAI,EAAA;AAAA,wBACJ,WAAW,gBAAA,CAAO,KAAA;AAAA,wBAClB,KAAK,KAAA,CAAM;AAAA;AAAA,qBACb;AAAA,oBAEF,YAAA,EAAc,SAAQD,GAAAA,GAAA,KAAA,CAAM,YAAN,IAAA,GAAAA,GAAAA,GAAiB,MAAM,GAAG,CAAA,CAAA;AAAA,oBAChD,cAAA,EAAe;AAAA;AAAA,iBACjB,EAAA,EAbiC,CAAA,EAAA,CAAGD,GAAAA,GAAA,KAAA,CAAM,EAAA,KAAN,IAAA,GAAAA,GAAAA,GAAY,KAAA,CAAM,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAcpE,CAAA;AAAA,cAAA,CACD;AAAA;AAAA,WACH;AAAA,UACC,WAAA,mBACCG,IAAAA,CAAAG,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAAJ,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAW,gBAAA;AAAA,gBACX,WAAW,gBAAA,CAAO,GAAA;AAAA,gBAClB,gBAAA,EAAe,UAAA;AAAA,gBACf,QAAA,EAAU,WAAA,IAAgB,CAAC,WAAA,IAAe,UAAA,KAAe,CAAA;AAAA,gBACzD,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,cAAA;AAAA,gBAET,QAAA,kBAAAA,GAAAA,CAACuB,eAAAA,EAAA,EAAgB,aAAA,EAAY,QAAO,SAAA,EAAW,gBAAA,CAAO,OAAA,EAAS,IAAA,EAAM,aAAA,EAAe;AAAA;AAAA,aACtF;AAAA,4BACAvB,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAW,YAAA;AAAA,gBACX,WAAW,gBAAA,CAAO,GAAA;AAAA,gBAClB,gBAAA,EAAe,MAAA;AAAA,gBACf,UAAU,WAAA,IAAgB,CAAC,WAAA,IAAe,UAAA,KAAe,YAAY,MAAA,GAAS,CAAA;AAAA,gBAC9E,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,UAAA;AAAA,gBAET,QAAA,kBAAAA,GAAAA,CAACuB,eAAAA,EAAA,EAAgB,aAAA,EAAY,QAAO,SAAA,EAAW,gBAAA,CAAO,OAAA,EAAS,IAAA,EAAM,cAAA,EAAgB;AAAA;AAAA,aACvF;AAAA,YACC,QAAA,mBACCvB,GAAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,cAAA,EAAe,SAAA,EAAW,gBAAA,CAAO,IAAA,EAC9C,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,KAAA,KAAO;AAnS3C,cAAA,IAAAF,GAAAA,EAAAC,GAAAA;AAoSkB,cAAA,uBAAAC,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,cAAA,EAAc,KAAA,KAAU,WAAA,GAAc,MAAA,GAAS,MAAA;AAAA,kBAC/C,YAAA,EAAY,SAAQF,GAAAA,GAAA,KAAA,CAAM,YAAN,IAAA,GAAAA,GAAAA,GAAiB,MAAM,GAAG,CAAA,CAAA;AAAA,kBAC9C,WAAW,gBAAA,CAAO,GAAA;AAAA,kBAClB,eAAa,KAAA,KAAU,WAAA;AAAA,kBACvB,QAAA,EAAU,WAAA;AAAA,kBAEV,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAS,MAAM,IAAA,CAAK,KAAK;AAAA,iBAAA;AAAA,gBAAA,CAFpBC,GAAAA,GAAA,KAAA,CAAM,EAAA,KAAN,IAAA,GAAAA,MAAY,KAAA,CAAM;AAAA,eAGzB;AAAA,YAAA,CACD,GACH,CAAA,GACE;AAAA,WAAA,EACN,CAAA,GACE;AAAA,SAAA,EACN,CAAA;AAAA,QAEC,iBAAgB,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa,OAAA,CAAA,mBAC5BC,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,gBAAA,CAAO,MAAA,EACrB,QAAA,kBAAAA,GAAAA,CAAC,OAAE,SAAA,EAAW,gBAAA,CAAO,SAAU,QAAA,EAAA,WAAA,CAAY,OAAA,EAAQ,GACrD,CAAA,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;;;AC5TA,IAAA,sBAAA,GAAA,EAAA;ACgBA,SAAS,cAAA,CAAe,EAAE,UAAA,EAAY,KAAA,EAAM,EAAkD;AAC5F,EAAA,uBACEA,IAAC,QAAA,EAAA,EAAO,SAAA,EAAW,uBAAO,MAAA,EACxB,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,GAAA,EAAK,aAAa,EAAA,GAAK,KAAA,CAAM,KAAK,SAAA,EAAW,sBAAA,CAAO,OAAO,GAAA,EAAK,KAAA,CAAM,KAAK,CAAA,EAClF,CAAA;AAEJ;AAEO,SAAS,cAAA,CAAe;AAAA,EAC7B,eAAA,GAAkB,KAAA;AAAA,EAClB,KAAA;AAAA,EACA,cAAA,GAAiB,IAAA;AAAA,EACjB,WAAA,GAAc,IAAA;AAAA,EACd,IAAA,GAAO;AACT,CAAA,EAAwB;AA9BxB,EAAA,IAAAF,GAAAA;AA+BE,EAAA,uBACEG,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,uBAAO,SAAA,EAAW,gBAAA,EAAgB,cAAA,EAAgB,WAAA,EAAW,IAAA,EAC1E,QAAA,EAAA;AAAA,IAAA,cAAA,mBACCD,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,WAAA;AAAA,QACA,yBAASA,GAAAA,CAAC,cAAA,EAAA,EAAe,UAAA,EAAU,MAAC,KAAA,EAAc,CAAA;AAAA,QAClD,YAAA,EAAc,SAAQF,GAAAA,GAAA,KAAA,CAAM,YAAN,IAAA,GAAAA,GAAAA,GAAiB,MAAM,GAAG,CAAA,CAAA;AAAA,QAChD,cAAA,EAAe;AAAA;AAAA,KACjB,mBAEAE,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAc,CAAA;AAAA,IAE/B,WAAA,IAAe,KAAA,CAAM,OAAA,mBACpBA,GAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,WAAW,sBAAA,CAAO,OAAA;AAAA,QAClB,eAAA,EAAe,kBAAkB,MAAA,GAAS,MAAA;AAAA,QAC1C,KAAA,EAAO,eAAA,GAAkB,KAAA,CAAM,OAAA,GAAU,MAAA;AAAA,QAExC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,KACT,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;;;ACvDA,IAAA,oBAAA,GAAA,EAAA;ACaO,SAAS,YAAA,CAAa;AAAA,EAC3B,OAAA,GAAU,CAAA;AAAA,EACV,MAAA;AAAA,EACA,YAAA,GAAe,IAAA;AAAA,EACf,aAAA,GAAgB;AAClB,CAAA,EAAsB;AACpB,EAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,IAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,qBAAO,KAAA,EAAO,IAAA,EAAK,UAAS,QAAA,EAAA,8BAAA,EAE5C,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,eAAA,EAAgB,SAAA,EAAW,oBAAA,CAAO,OAAA,EAAS,cAAA,EAAc,OAAA,EACtE,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAO;AA7B1B,IAAA,IAAAF,GAAAA;AA8BQ,IAAA,uBAAAE,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,eAAA,EAAe,IAAA;AAAA,QACf,KAAA;AAAA,QAEA,cAAA,EAAc,IAAA;AAAA,QACd,WAAA,EAAa,YAAA;AAAA,QACb,IAAA,EAAM;AAAA,OAAA;AAAA,MAAA,CAHDF,GAAAA,GAAA,KAAA,CAAM,EAAA,KAAN,IAAA,GAAAA,MAAY,KAAA,CAAM;AAAA,KAIzB;AAAA,EAAA,CACD,CAAA,EACH,CAAA;AAEJ;;;ACzCA,IAAA,mBAAA,GAAA,EAAA;ACcO,SAAS,qBAAA,CAAsB;AAAA,EACpC,KAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,cAAA,GAAiB,IAAA;AAAA,EACjB,MAAA,GAAS,SAAA;AAAA,EACT,WAAA,GAAc;AAChB,CAAA,EAA+B;AAC7B,EAAA,MAAM,aAAA,GAAgBI,OAAuB,IAAI,CAAA;AACjD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIC,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAS,IAAI,CAAA;AAE3C,EAAAE,UAAU,MAAM;AACd,IAAA,MAAM,aAAa,aAAA,CAAc,OAAA;AACjC,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,QAAA,GAAW,KAAA;AACf,IAAA,IAAI,WAAW,MAAM;AAAA,IAAC,CAAA;AAEtB,IAAA,KAAA,CAAM,YAAY;AAChB,MAAA,MAAM,EAAE,oBAAA,EAAAmC,qBAAAA,EAAqB,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,yBAAA,EAAA,EAAA,4BAAA,CAAA,CAAA;AACvC,MAAA,MAAM,OAAA,GAAU,MAAMA,qBAAAA,CAAqB;AAAA,QACzC,UAAA;AAAA,QACA,cAAA;AAAA,QACA,IAAA,EAAM,UAAA;AAAA,QACN,UAAU,KAAA,CAAM;AAAA,OACjB,CAAA;AAED,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAA,EAAQ;AACR,QAAA;AAAA,MACF;AAEA,MAAA,QAAA,GAAW,OAAA;AACX,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB,CAAA,GAAG,CAAE,KAAA,CAAM,MAAM;AACf,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,SAAA,CAAU,IAAI,CAAA;AACd,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,GAAW,IAAA;AACX,MAAA,QAAA,EAAS;AAAA,IACX,CAAA;AAAA,EACF,GAAG,CAAC,KAAA,CAAM,GAAA,EAAK,UAAA,EAAY,cAAc,CAAC,CAAA;AAE1C,EAAA,uBACEvC,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAW,mBAAA,CAAO,MAAA;AAAA,MAClB,cAAA,EAAc,cAAc,MAAA,GAAS,OAAA;AAAA,MACrC,mBAAA,EAAkB,MAAA;AAAA,MAClB,aAAA,EAAa,MAAA;AAAA,MAEb,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAA,CAAO,KAAA,EACrB,QAAA,EAAA;AAAA,0BAAAD,IAAC,KAAA,EAAA,EAAI,GAAA,EAAK,aAAA,EAAe,SAAA,EAAW,oBAAO,UAAA,EAAY,CAAA;AAAA,UACtD,OAAA,IAAW,CAAC,MAAA,mBACXA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAA,CAAO,OAAA,EAAS,IAAA,EAAK,QAAA,EAAS,QAAA,EAAA,qBAAA,EAE9C,CAAA,GACE,IAAA;AAAA,UACH,MAAA,mBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,oBAAO,OAAA,EAAS,IAAA,EAAK,OAAA,EAAQ,QAAA,EAAA,4BAAA,EAE7C,CAAA,GACE;AAAA,SAAA,EACN,CAAA;AAAA,QACC,8BACCC,IAAAA,CAAC,YAAA,EAAA,EAAW,SAAA,EAAW,oBAAO,OAAA,EAC5B,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,CAAM,IAAA,EAAK,CAAA;AAAA,UACjB,MAAM,WAAA,mBAAcA,IAAC,OAAA,EAAA,EAAO,QAAA,EAAA,KAAA,CAAM,aAAY,CAAA,GAAW;AAAA,SAAA,EAC5D,CAAA,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;ACpFA,IAAM,gBAAA,GAAmB,8EAAA;AAiBzB,IAAI,wBAAA,GAAiD,IAAA;AAErD,SAAS,eAAA,GAAkB;AACzB,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACzB;AAEA,EAAA,IAAI,cAAA,CAAe,GAAA,CAAI,cAAc,CAAA,EAAG;AACtC,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACzB;AAEA,EAAA,IAAI,CAAC,wBAAA,EAA0B;AAC7B,IAAA,wBAAA,GAA2B,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AAC1D,MAAA,MAAM,WAAW,QAAA,CAAS,aAAA;AAAA,QACxB,eAAe,gBAAgB,CAAA,EAAA;AAAA,OACjC;AAEA,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,gBAAA,CAAiB,QAAQ,MAAM,OAAA,IAAW,EAAE,IAAA,EAAM,MAAM,CAAA;AACjE,QAAA,QAAA,CAAS,gBAAA,CAAiB,SAAS,MAAM,MAAA,CAAO,IAAI,KAAA,CAAM,8BAA8B,CAAC,CAAA,EAAG;AAAA,UAC1F,IAAA,EAAM;AAAA,SACP,CAAA;AACD,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,MAAA,MAAA,CAAO,IAAA,GAAO,QAAA;AACd,MAAA,MAAA,CAAO,GAAA,GAAM,gBAAA;AACb,MAAA,MAAA,CAAO,MAAA,GAAS,MAAM,OAAA,EAAQ;AAC9B,MAAA,MAAA,CAAO,UAAU,MAAM,MAAA,CAAO,IAAI,KAAA,CAAM,8BAA8B,CAAC,CAAA;AACvE,MAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,IAClC,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,wBAAA;AACT;AAEA,SAAS,mBAAA,CAAoB,QAA4B,KAAA,EAAmB;AA7D5E,EAAA,IAAAF,GAAAA,EAAAC,GAAAA;AA8DE,EAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACnB,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,aAAYD,GAAAA,GAAA,MAAA,CAAO,mBAAA,KAAP,IAAA,GAAAA,MAA8B,EAAC;AACjD,EAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,aAAA,IAAiB,SAAA,CAAU,QAAA,CAAS,KAAA,CAAM,aAAa,CAAA,GAC/E,KAAA,CAAM,aAAA,GACN,SAAA,CAAU,CAAC,CAAA;AAEf,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,MAAA,CAAO,aAAA,GAAgB,aAAA;AAAA,EACzB;AAEA,EAAA,CAAAC,GAAAA,GAAA,MAAA,CAAO,IAAA,KAAP,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAA,IAAA,CAAA,MAAA,CAAA;AACF;AAEO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,cAAA,GAAiB,IAAA;AAAA,EACjB,MAAA,GAAS,SAAA;AAAA,EACT,WAAA,GAAc;AAChB,CAAA,EAAqB;AACnB,EAAA,IAAI,MAAM,WAAA,EAAa;AACrB,IAAA,uBACEC,GAAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,KAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,cAAA,GAAiB,IAAA;AAAA,EACjB,MAAA,GAAS,SAAA;AAAA,EACT,WAAA,GAAc;AAChB,CAAA,EAAqB;AACnB,EAAA,MAAM,SAAA,GAAYE,OAAkC,IAAI,CAAA;AACxD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,SAAS,KAAK,CAAA;AACxC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,gBAAA,GAAmB,UAAA,IAAc,CAAC,KAAA,CAAM,QAAA;AAE9C,EAAA,MAAM,YAAA,GAAeQ,WAAAA,CAAY,CAAC,IAAA,KAAoC;AACpE,IAAA,SAAA,CAAU,OAAA,GAAU,IAAA;AAAA,EACtB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAN,UAAU,MAAM;AACd,IAAA,IAAI,OAAA,GAAU,IAAA;AAEd,IAAA,eAAA,EAAgB,CACb,KAAK,MAAM;AACV,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,QAAA,CAAS,IAAI,CAAA;AAAA,MACf;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACX,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,SAAA,CAAU,IAAI,CAAA;AAAA,MAChB;AAAA,IACF,CAAC,CAAA;AAEH,IAAA,OAAO,MAAM;AACX,MAAA,OAAA,GAAU,KAAA;AAAA,IACZ,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,KAAA,IAAS,MAAA,IAAU,CAAC,MAAM,QAAA,EAAU;AACvC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AACzB,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,MAAM,mBAAA,CAAoB,MAAA,EAAQ,KAAK,CAAA;AAEtD,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAQ,MAAM,CAAA;AAEtC,IAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,MAAA,MAAA,EAAO;AAAA,IACT;AAEA,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,MAAA,EAAQ,MAAM,CAAA;AAAA,EACxD,CAAA,EAAG,CAAC,KAAA,EAAO,MAAA,EAAQ,KAAK,CAAC,CAAA;AAEzB,EAAA,uBACEJ,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,mBAAA,CAAO,MAAA,EAAQ,cAAA,EAAc,WAAA,GAAc,MAAA,GAAS,OAAA,EAAS,aAAA,EAAa,MAAA,EAC3F,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,SAAI,SAAA,EAAW,mBAAA,CAAO,OACpB,QAAA,EAAA,KAAA,IAAS,CAAC,MAAA,GACP,aAAA,CAAc,cAAA,EAAgB;AAAA,MAC5B,KAAK,KAAA,CAAM,GAAA;AAAA,MACX,GAAA,EAAK,YAAA;AAAA,MACL,KAAK,KAAA,CAAM,GAAA;AAAA,MACX,QAAA,EAAU,KAAA,CAAM,QAAA,GAAW,EAAA,GAAK,MAAA;AAAA,MAChC,kBAAkB,KAAA,CAAM,aAAA;AAAA,MACxB,aAAA,EAAe,mBAAmB,EAAA,GAAK,MAAA;AAAA,MACvC,iBAAA,EAAmB,iBAAiB,EAAA,GAAK,MAAA;AAAA,MACzC,gBAAgB,KAAA,CAAM,WAAA;AAAA,MACtB,mBAAA,EAAqB,SAAA;AAAA,MACrB,QAAA,EAAU,MAAA;AAAA,MACV,oBAAA,EAAsB,MAAA;AAAA,MACtB,kBAAA,EAAoB,MAAA;AAAA,MACpB,KAAK,KAAA,CAAM,GAAA;AAAA,MACX,WAAW,mBAAA,CAAO;AAAA,KACnB,CAAA,mBAEDA,GAAAA,CAAC,SAAI,SAAA,EAAW,mBAAA,CAAO,OAAA,EAAS,IAAA,EAAM,SAAS,OAAA,GAAU,QAAA,EACtD,QAAA,EAAA,MAAA,GAAS,4BAAA,GAA+B,uBAC3C,CAAA,EAEN,CAAA;AAAA,IACC,8BACCC,IAAAA,CAAC,YAAA,EAAA,EAAW,SAAA,EAAW,oBAAO,OAAA,EAC5B,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,CAAM,IAAA,EAAK,CAAA;AAAA,MACjB,MAAM,WAAA,mBAAcA,IAAC,OAAA,EAAA,EAAO,QAAA,EAAA,KAAA,CAAM,aAAY,CAAA,GAAW;AAAA,KAAA,EAC5D,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;;;ACvMA,IAAA,qBAAA,GAAA,EAAA;ACuBO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA,iBAAA,GAAoB,IAAA;AAAA,EACpB,eAAA,GAAkB,IAAA;AAAA,EAClB,IAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,OAAA;AAAA,EACA,YAAA,GAAe,eAAA;AAAA,EACf;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIG,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,eAAe,IAAA,KAAS,MAAA;AAC9B,EAAA,MAAM,MAAA,GAAS,eAAe,IAAA,GAAO,YAAA;AACrC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,MAAM,CAAA;AACnD,EAAA,MAAM,QAAA,GAAWD,OAAuB,IAAI,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAWA,OAA0B,IAAI,CAAA;AAE/C,EAAA,MAAM,OAAA,GAAUS,WAAAA,CAAY,CAAC,QAAA,KAAsB;AACjD,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,IAC1B;AAEA,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,QAAA,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,YAAA,EAAc,YAAY,CAAC,CAAA;AAE/B,EAAA,uBAAA,CAAwB,MAAA,IAAU,YAAY,QAAA,EAAU;AAAA,IACtD,eAAA,EAAiB,QAAA;AAAA,IACjB,YAAA,EAAc;AAAA,GACf,CAAA;AAED,EAAAN,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,eAAA,EAAiB;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAEhD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EAClE,CAAA,EAAG,CAAC,eAAA,EAAiB,MAAA,EAAQ,OAAO,CAAC,CAAA;AAErC,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAMkC,WAAU,MAAA,CAAO,UAAA,CAAW,MAAM,aAAA,CAAc,IAAI,GAAG,CAAC,CAAA;AAE9D,MAAA,OAAO,MAAM,MAAA,CAAO,YAAA,CAAaA,QAAO,CAAA;AAAA,IAC1C;AAEA,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAU,MAAA,CAAO,UAAA,CAAW,MAAM,aAAA,CAAc,KAAK,GAAG,GAAG,CAAA;AAEjE,IAAA,OAAO,MAAM,MAAA,CAAO,YAAA,CAAa,OAAO,CAAA;AAAA,EAC1C,CAAA,EAAG,CAAC,MAAA,EAAQ,UAAU,CAAC,CAAA;AAEvB,EAAA,uBACEtC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,sBAAO,QAAA,EACrB,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAY,UAAU,YAAA,GAAe,MAAA;AAAA,QACrC,WAAW,qBAAA,CAAO,OAAA;AAAA,QAClB,aAAA,EAAa,UAAU,MAAA,GAAS,OAAA;AAAA,QAChC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,QAE1B,QAAA,EAAA,OAAA,IAAA,IAAA,GAAA,OAAA,mBAAWA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,YAAA,EAAa;AAAA;AAAA,KAClC;AAAA,IAEC,MAAA,IAAU,6BACTA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,qBAAA,CAAO,OAAA;AAAA,QAClB,YAAA,EAAY,SAAS,MAAA,GAAS,SAAA;AAAA,QAC9B,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,UAAA,IAAI,iBAAA,IAAqB,KAAA,CAAM,MAAA,KAAW,KAAA,CAAM,aAAA,EAAe;AAC7D,YAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,UACf;AAAA,QACF,CAAA;AAAA,QAEA,QAAA,kBAAAC,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,cAAY,KAAA,CAAM,IAAA;AAAA,YAClB,YAAA,EAAW,MAAA;AAAA,YACX,WAAW,qBAAA,CAAO,KAAA;AAAA,YAClB,IAAA,EAAK,QAAA;AAAA,YAEL,QAAA,EAAA;AAAA,8BAAAD,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,QAAA;AAAA,kBACL,YAAA,EAAW,wBAAA;AAAA,kBACX,WAAW,qBAAA,CAAO,KAAA;AAAA,kBAClB,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,kBAE5B,QAAA,kBAAAA,GAAAA,CAACuB,eAAAA,EAAA,EAAgB,aAAA,EAAY,QAAO,SAAA,EAAW,qBAAA,CAAO,SAAA,EAAW,IAAA,EAAMkB,OAAAA,EAAS;AAAA;AAAA,eAClF;AAAA,8BACAzC,GAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAc,MAAA,EAAO,YAAW,WAAA,EAA0B;AAAA;AAAA;AAAA;AACzE;AAAA,KACF,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;;;ACjIA,IAAA,sBAAA,GAAA,EAAA;ACcA,SAAS,gBAAA,CAAiB;AAAA,EACxB,KAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,uBACEC,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,sBAAA,CAAO,OAAA,EAAS,aAAW,IAAA,EAC1C,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,eAAY,KAAA,EAAc,cAAA,EAAgB,OAAO,MAAA,EAAO,SAAA,EAAU,aAAa,KAAA,EAAO,CAAA;AAAA,IACtF,WAAA,mBAAcA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,sBAAA,CAAO,OAAA,EAAU,QAAA,EAAA,KAAA,CAAM,IAAA,EAAK,CAAA,GAAU;AAAA,GAAA,EACxE,CAAA;AAEJ;AAEO,SAAS,cAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,cAAA,GAAiB,IAAA;AAAA,EACjB,WAAA,GAAc,IAAA;AAAA,EACd,IAAA,GAAO;AACT,CAAA,EAAwB;AACtB,EAAA,MAAM,0BAAUA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,KAAA,EAAc,aAA0B,IAAA,EAAY,CAAA;AAEtF,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,uBACEA,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,OAAA,EAAS,OAAA;AAAA,QACT,YAAA,EAAc,CAAA,KAAA,EAAQ,KAAA,CAAM,IAAI,CAAA;AAAA;AAAA,KAClC;AAAA,EAEJ;AAEA,EAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,sBAAA,CAAO,iBAAkB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAC1D;;;AClDA,IAAA,oBAAA,GAAA,EAAA;ACaO,SAAS,YAAA,CAAa;AAAA,EAC3B,MAAA;AAAA,EACA,OAAA,GAAU,CAAA;AAAA,EACV,YAAA,GAAe,IAAA;AAAA,EACf,aAAA,GAAgB;AAClB,CAAA,EAAsB;AACpB,EAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,IAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,qBAAO,KAAA,EAAO,IAAA,EAAK,UAAS,QAAA,EAAA,yBAAA,EAE5C,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,kBAAA,EAAmB,SAAA,EAAW,oBAAA,CAAO,OAAA,EAAS,cAAA,EAAc,OAAA,EACzE,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAO;AA7B1B,IAAA,IAAAF,GAAAA;AA8BQ,IAAA,uBAAAE,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QAEA,cAAA,EAAc,IAAA;AAAA,QACd,WAAA,EAAa,YAAA;AAAA,QACb,IAAA,EAAM;AAAA,OAAA;AAAA,MAAA,CAHDF,GAAAA,GAAA,KAAA,CAAM,EAAA,KAAN,IAAA,GAAAA,MAAY,KAAA,CAAM;AAAA,KAIzB;AAAA,EAAA,CACD,CAAA,EACH,CAAA;AAEJ;AC9BA,SAAS,gBAAgB,QAAA,EAAkB;AACzC,EAAA,OAAO,SACJ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KAAgB,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAC1D,KAAK,GAAG,CAAA;AACb;AAEA,SAAS,2BAAA,GAA8B;AACrC,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,UAAyC,EAAC;AAEhD,EAAA,KAAA,MAAW,CAAC,UAAA,EAAY,IAAI,KAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AACpD,IAAA,IAAI,CAAC,UAAA,CAAW,UAAA,CAAW,IAAI,CAAA,IAAK,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,IAAA,IAAQ,EAAE,UAAA,IAAc,IAAA,CAAA,EAAO;AACtG,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,IAAA;AACnB,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,QAAQ,CAAA,EAAG;AACjC,MAAA;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,GAAA,CAAI,WAAW,QAAQ,CAAA;AAC5B,IAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,MACX,UAAU,UAAA,CAAW,QAAA;AAAA,MACrB,UAAA;AAAA,MACA,KAAA,EAAO,eAAA,CAAgB,UAAA,CAAW,QAAQ,CAAA;AAAA,MAC1C,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,IAAA,EAAM,KAAA,KAAU,KAAK,KAAA,CAAM,aAAA,CAAc,KAAA,CAAM,KAAK,CAAC,CAAA;AAC5E;AAEO,IAAM,yBAAyB,2BAAA,EAA4B;AAElE,IAAM,UAAA,GAAa,IAAI,GAAA,CAAI,sBAAA,CAAuB,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,KAAA,CAAM,QAAA,EAAU,KAAK,CAAC,CAAC,CAAA;AAElF,SAAS,yBAAyB,QAAA,EAAkB;AA/C3D,EAAA,IAAAA,GAAAA;AAgDE,EAAA,OAAA,CAAOA,GAAAA,GAAA,WAAW,GAAA,CAAI,QAAQ,MAAvB,IAAA,GAAAA,GAAAA,GAA4B,uBAAuB,CAAC,CAAA;AAC7D;AAEO,SAAS,uBAAuB,KAAA,EAAe;AACpD,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,EAAK,CAAE,WAAA,EAAY;AAC5C,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAO,sBAAA;AAAA,EACT;AAEA,EAAA,OAAO,sBAAA,CAAuB,MAAA,CAAO,CAAC,KAAA,KAAU;AAC9C,IAAA,OACE,MAAM,KAAA,CAAM,WAAA,EAAY,CAAE,QAAA,CAAS,UAAU,CAAA,IAC7C,KAAA,CAAM,QAAA,CAAS,QAAA,CAAS,UAAU,CAAA,IAClC,KAAA,CAAM,WAAW,WAAA,EAAY,CAAE,SAAS,UAAU,CAAA;AAAA,EAEtD,CAAC,CAAA;AACH;ACtDO,SAAS,WAAA,CAAY,EAAE,QAAA,EAAS,EAAqB;AAC1D,EAAA,uBAAOE,GAAAA,CAACuB,eAAAA,EAAA,EAAgB,aAAA,EAAY,QAAO,IAAA,EAAM,wBAAA,CAAyB,QAAQ,CAAA,CAAE,IAAA,EAAM,CAAA;AAC5F;;;ACZA,IAAA,kBAAA,GAAA,EAAA;ACeO,SAAS,UAAA,CAAW;AAAA,EACzB,OAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA,GAAU,aAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,SAAShB,KAAAA,EAAM;AACrB,EAAA,MAAM,OAAA,GAAU,GAAG,MAAM,CAAA,MAAA,CAAA;AACzB,EAAA,MAAM,aAAA,GAAgB,WAAA,GAAc,CAAA,EAAG,MAAM,CAAA,YAAA,CAAA,GAAiB,MAAA;AAE9D,EAAA,uBACEN,IAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,kBAAA,EAAkB,aAAA;AAAA,MAClB,iBAAA,EAAiB,OAAA;AAAA,MACjB,WAAW,kBAAA,CAAO,IAAA;AAAA,MAClB,cAAA,EAAc,OAAA;AAAA,MAEb,QAAA,EAAA;AAAA,QAAA,IAAA,mBACCD,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,QAAO,SAAA,EAAW,kBAAA,CAAO,QAAA,EACxC,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAU,IAAA,EAAM,GAC/B,CAAA,GACE,IAAA;AAAA,wBACJC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAO,IAAA,EACrB,QAAA,EAAA;AAAA,0BAAAD,IAAC,IAAA,EAAA,EAAG,SAAA,EAAW,mBAAO,KAAA,EAAO,EAAA,EAAI,SAC9B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,UACC,WAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,mBAAO,WAAA,EAAa,EAAA,EAAI,aAAA,EACnC,QAAA,EAAA,WAAA,EACH,CAAA,GACE;AAAA,SAAA,EACN,CAAA;AAAA,QACC,OAAA,mBAAUA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,kBAAA,CAAO,OAAA,EAAU,mBAAQ,CAAA,GAAS;AAAA;AAAA;AAAA,GAC/D;AAEJ;;;ACnDA,IAAA,eAAA,GAAA,EAAA;ACgBA,IAAM,iBAAiBM,aAAAA,CAAmC;AAAA,EACxD,SAAA,EAAW,KAAA;AAAA,EACX,OAAA,EAAS;AACX,CAAC,CAAA;AAWM,SAAS,OAAA,CAAQ;AAAA,EACtB,QAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,OAAA,GAAU,aAAA;AAAA,EACV,MAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA,GAAO;AACT,CAAA,EAAiB;AACf,EAAA,uBACEN,GAAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EAAwB,OAAO,EAAE,SAAA,EAAW,OAAA,EAAQ,EACnD,QAAA,kBAAAC,IAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,SAAA;AAAA,MACX,WAAW,eAAA,CAAO,OAAA;AAAA,MAClB,gBAAA,EAAgB,YAAY,MAAA,GAAS,OAAA;AAAA,MACrC,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MAEV,QAAA,EAAA;AAAA,QAAA,MAAA,mBAASD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,eAAA,CAAO,MAAA,EAAS,kBAAO,CAAA,GAAS,IAAA;AAAA,wBAC1DA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,eAAA,CAAO,MAAO,QAAA,EAAS,CAAA;AAAA,QACtC,MAAA,mBAASA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,eAAA,CAAO,MAAA,EAAS,kBAAO,CAAA,GAAS;AAAA;AAAA;AAAA,GAC5D,EACF,CAAA;AAEJ;AAOO,SAAS,aAAA,CAAc,EAAE,QAAA,EAAU,KAAA,EAAM,EAAuB;AACrE,EAAA,MAAM,EAAE,SAAA,EAAU,GAAIQ,UAAAA,CAAW,cAAc,CAAA;AAE/C,EAAA,uBACEP,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,gBAAO,WAAA,EACrB,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,QAAG,SAAA,EAAW,SAAA,GAAY,gBAAO,cAAA,GAAiB,eAAA,CAAO,aAAc,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAC7E;AAAA,GAAA,EACH,CAAA;AAEJ;AAOO,SAAS,UAAA,CAAW,EAAE,YAAA,EAAc,SAAA,EAAW,UAAS,EAAoB;AACjF,EAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,YAAA,EAAY,WAAW,SAAA,EAAW,eAAA,CAAO,KAC3C,QAAA,EACH,CAAA;AAEJ;AASO,SAAS,YAAY,EAAE,MAAA,GAAS,OAAO,QAAA,EAAU,IAAA,EAAM,SAAQ,EAAqB;AACzF,EAAA,MAAM,EAAE,SAAA,EAAU,GAAIQ,UAAAA,CAAW,cAAc,CAAA;AAC/C,EAAA,MAAM,SAAA,GAAY,CAAC,eAAA,CAAO,IAAA,EAAM,MAAA,GAAS,eAAA,CAAO,UAAA,GAAa,EAAE,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzF,EAAA,MAAM,KAAA,GAAQ,OAAO,QAAA,KAAa,QAAA,GAAW,QAAA,GAAW,IAAA;AACxD,EAAA,MAAM,OAAA,mBACJP,IAAAA,CAAAG,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,SAAA,IAAa,KAAA,mBAAQJ,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAQ,QAAA,EAAA,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAE,CAAA,GAAU,IAAA;AAAA,oBAC1EA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,YAAY,eAAA,CAAO,cAAA,GAAiB,QAAY,QAAA,EAAS;AAAA,GAAA,EAC5E,CAAA;AAGF,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACEA,IAAC,GAAA,EAAA,EAAE,cAAA,EAAc,SAAS,MAAA,GAAS,MAAA,EAAW,SAAA,EAAsB,IAAA,EACjE,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,cAAA,EAAc,SAAS,MAAA,GAAS,MAAA;AAAA,MAChC,SAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MAEJ,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,iBAAA,CAAkB,OAAe,EAAA,EAAa;AACrD,EAAA,IAAI,EAAA,EAAI;AACN,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAA,GAAO,KAAA,CACV,IAAA,EAAK,CACL,WAAA,EAAY,CACZ,OAAA,CAAQ,aAAA,EAAe,GAAG,CAAA,CAC1B,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AAEzB,EAAA,OAAO,IAAA,GAAO,CAAA,cAAA,EAAiB,IAAI,CAAA,CAAA,GAAK,eAAA;AAC1C;AASO,SAAS,aAAa,EAAE,QAAA,EAAU,cAAc,IAAA,EAAM,EAAA,EAAI,OAAM,EAAsB;AAC3F,EAAA,MAAM,EAAE,SAAA,EAAU,GAAIQ,UAAAA,CAAW,cAAc,CAAA;AAC/C,EAAA,MAAM,MAAA,GAAS,iBAAA,CAAkB,KAAA,EAAO,EAAE,CAAA;AAC1C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIL,SAAS,WAAW,CAAA;AAE5C,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBACEH,GAAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAY,KAAA,EAAO,WAAW,eAAA,CAAO,KAAA,EAAO,IAAA,EAAK,OAAA,EACnD,QAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEC,KAAC,KAAA,EAAA,EAAI,YAAA,EAAY,OAAO,SAAA,EAAW,eAAA,CAAO,KAAA,EAAO,IAAA,EAAK,OAAA,EACpD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,eAAA,CAAO,WAAA,EACrB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,eAAA,CAAO,YAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAC3CA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,eAAA,EAAe,MAAA;AAAA,UACf,eAAA,EAAe,IAAA;AAAA,UACf,cAAY,CAAA,EAAG,IAAA,GAAO,UAAA,GAAa,QAAQ,IAAI,KAAK,CAAA,CAAA;AAAA,UACpD,WAAW,eAAA,CAAO,WAAA;AAAA,UAClB,SAAS,MAAM,OAAA,CAAQ,CAAC,OAAA,KAAY,CAAC,OAAO,CAAA;AAAA,UAC5C,IAAA,EAAK,QAAA;AAAA,UAEL,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,WAAW,IAAA,GAAO,eAAA,CAAO,gBAAA,GAAmB,eAAA,CAAO,YAAA,EAAc;AAAA;AAAA;AAC5F,KAAA,EACF,CAAA;AAAA,oBACAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,gBAAO,cAAA,EAAgB,WAAA,EAAW,IAAA,GAAO,MAAA,GAAS,OAAA,EAChE,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,eAAA,CAAO,UAAA,EAAY,EAAA,EAAI,MAAA,EAAQ,OAAO,CAAC,IAAA,IAAQ,MAAA,EAC5D,QAAA,EACH,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AASO,SAAS,aAAA,CAAc,EAAE,QAAA,EAAU,SAAA,GAAY,OAAO,IAAA,EAAM,IAAA,GAAO,QAAO,EAAuB;AACtG,EAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,eAAA,CAAO,MAAA,EAAQ,gBAAA,EAAgB,SAAA,GAAY,MAAA,GAAS,OAAA,EAAS,WAAA,EAAW,IAAA,EACrF,QAAA,EAAA;AAAA,IAAA,IAAA,KAAS,SAAS,QAAA,GAAW,IAAA;AAAA,oBAC9BD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,eAAA,CAAO,MAAO,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,IAClC,IAAA,KAAS,UAAU,QAAA,GAAW;AAAA,GAAA,EACjC,CAAA;AAEJ;;;ACnMA,IAAA,yBAAA,GAAA,EAAA;ACOO,IAAM,kBAAA,GAAqB,wBAAA;AAC3B,IAAM,oBAAA,GAAuB,SAAA;AAO7B,IAAM,YAAA,GAA8B;AAAA,EACzC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,SAAA,EAAU;AAAA,EACpC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAU;AAAA,EAClC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAU;AAAA,EAClC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,SAAA,EAAU;AAAA,EACnC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,SAAA,EAAU;AAAA,EACnC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,SAAA;AAC1B;AAEA,SAAS,cAAc,KAAA,EAAuC;AAC5D,EAAA,OAAO,OAAA,CAAQ,SAAS,YAAA,CAAa,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,KAAA,KAAU,KAAK,CAAC,CAAA;AAC/E;AAEO,SAAS,kBAAkB,MAAA,EAA+B;AAC/D,EAAA,OAAO;AAAA,IACL,oBAAA,EAAsB,MAAA;AAAA,IACtB,yBAAA,EAA2B,sBAAsB,MAAM,CAAA,kBAAA,CAAA;AAAA,IACvD,eAAA,EAAiB,MAAA;AAAA,IACjB,oBAAA,EAAsB,sBAAsB,MAAM,CAAA,kBAAA,CAAA;AAAA,IAClD,wBAAA,EAA0B;AAAA,GAC5B;AACF;AAEA,SAAS,oBAAoB,MAAA,EAAgB;AAC3C,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,IAAA;AAAA,EACF;AAEA,EAAA,QAAA,CAAS,eAAA,CAAgB,KAAA,CAAM,WAAA,CAAY,oBAAA,EAAsB,MAAM,CAAA;AACvE,EAAA,QAAA,CAAS,gBAAgB,KAAA,CAAM,WAAA;AAAA,IAC7B,yBAAA;AAAA,IACA,sBAAsB,MAAM,CAAA,kBAAA;AAAA,GAC9B;AACF;AAEO,SAAS,mBAAA,GAAsB;AACpC,EAAA,MAAM,CAAC,MAAA,EAAQ,cAAc,CAAA,GAAIG,SAAS,oBAAoB,CAAA;AAE9D,EAAAE,UAAU,MAAM;AACd,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AACtC,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,kBAAkB,CAAA;AAC7D,MAAA,IAAI,aAAA,CAAc,MAAM,CAAA,EAAG;AACzB,QAAA,mBAAA,CAAoB,MAAM,CAAA;AAC1B,QAAA,cAAA,CAAe,MAAM,CAAA;AACrB,QAAA;AAAA,MACF;AAEA,MAAA,mBAAA,CAAoB,oBAAoB,CAAA;AAAA,IAC1C,GAAG,CAAC,CAAA;AAEJ,IAAA,OAAO,MAAM,MAAA,CAAO,YAAA,CAAa,OAAO,CAAA;AAAA,EAC1C,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,SAAA,GAAYM,WAAAA,CAAY,CAAC,IAAA,KAAiB;AAC9C,IAAA,IAAI,CAAC,aAAA,CAAc,IAAI,CAAA,EAAG;AACxB,MAAA;AAAA,IACF;AAEA,IAAA,cAAA,CAAe,IAAI,CAAA;AACnB,IAAA,mBAAA,CAAoB,IAAI,CAAA;AACxB,IAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,kBAAA,EAAoB,IAAI,CAAA;AAAA,EACtD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAcG,QAAQ,MAAM,iBAAA,CAAkB,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAErE,EAAA,OAAO,EAAE,MAAA,EAAQ,WAAA,EAAa,SAAA,EAAU;AAC1C;AAWO,SAAS,iBAAA,CAAkB;AAAA,EAChC,EAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,uBACEd,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAU,IAAA;AAAA,MACV,YAAA,EAAa,QAAA;AAAA,MACb,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA,EAAS,KAAA;AAAA,MACT,IAAA;AAAA,MAEA,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,iBAAA,EAAiB,GAAG,EAAE,CAAA,MAAA,CAAA,EAAU,SAAA,EAAW,yBAAA,CAAO,UAAU,IAAA,EAAK,YAAA,EACnE,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,MAAA,KAAW;AAC5B,QAAA,MAAM,QAAA,GAAW,UAAU,MAAA,CAAO,KAAA;AAElC,QAAA,uBACEA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,cAAA,EAAc,QAAA;AAAA,YACd,cAAY,MAAA,CAAO,KAAA;AAAA,YACnB,WAAW,yBAAA,CAAO,MAAA;AAAA,YAClB,eAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,YAEnC,IAAA,EAAK,OAAA;AAAA,YACL,KAAA,EAAO,EAAE,iBAAA,EAAmB,MAAA,CAAO,KAAA,EAAM;AAAA,YACzC,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,QAAA,CAAS,MAAA,CAAO,KAAK;AAAA,WAAA;AAAA,UAL/B,MAAA,CAAO;AAAA,SAMd;AAAA,MAEJ,CAAC,CAAA,EACH;AAAA;AAAA,GACF;AAEJ;;;ACpIA,IAAA,kBAAA,GAAA,EAAA;ACuBO,SAAS,UAAA,CAAW;AAAA,EACzB,EAAA;AAAA,EACA,KAAA,GAAQ,MAAA;AAAA,EACR,aAAA,GAAgB,MAAA;AAAA,EAChB,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,iBAAA,GAAoB,cAAA;AAAA,EACpB;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIG,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,OAAA,GAAUD,OAAuB,IAAI,CAAA;AAC3C,EAAA,MAAM,SAAA,GAAYA,OAAyB,IAAI,CAAA;AAC/C,EAAA,MAAM,YAAYK,KAAAA,EAAM;AACxB,EAAA,MAAM,QAAA,GAAW,yBAAyB,KAAK,CAAA;AAC/C,EAAA,MAAM,aAAA,GAAgBO,QAAQ,MAAM,sBAAA,CAAuB,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAE1E,EAAAT,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAG;AA7CzC,MAAA,IAAAP,GAAAA;AA6C4C,MAAA,OAAA,CAAAA,GAAAA,GAAA,SAAA,CAAU,OAAA,KAAV,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAmB,KAAA,EAAA;AAAA,IAAA,CAAA,EAAS,CAAC,CAAA;AAErE,IAAA,SAAS,kBAAkB,KAAA,EAAmB;AA/ClD,MAAA,IAAAA,GAAAA;AAgDM,MAAA,IAAI,EAAA,CAACA,MAAA,OAAA,CAAQ,OAAA,KAAR,gBAAAA,GAAAA,CAAiB,QAAA,CAAS,MAAM,MAAA,CAAA,CAAA,EAAiB;AACpD,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF;AAEA,IAAA,SAAS,cAAc,KAAA,EAAsB;AAC3C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,iBAAiB,CAAA;AACxD,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAElD,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,aAAa,OAAO,CAAA;AAC3B,MAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,iBAAiB,CAAA;AAC3D,MAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACvD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,uBACEE,GAAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAQ,OAAc,aAAA,EAA8B,IAAA,EAC9D,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,kBAAA,CAAO,IAAA,EAAM,KAAK,OAAA,EAChC,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,eAAA,EAAe,OAAO,SAAA,GAAY,MAAA;AAAA,QAClC,eAAA,EAAe,IAAA;AAAA,QACf,eAAA,EAAc,SAAA;AAAA,QACd,WAAW,kBAAA,CAAO,OAAA;AAAA,QAClB,EAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,SAAS,MAAM,OAAA,CAAQ,CAAC,OAAA,KAAY,CAAC,OAAO,CAAA;AAAA,QAE5C,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,WAAW,kBAAA,CAAO,WAAA,EACzC,QAAA,kBAAAA,GAAAA,CAACuB,eAAAA,EAAA,EAAgB,IAAA,EAAM,QAAA,CAAS,MAAM,CAAA,EACxC,CAAA;AAAA,0BACAvB,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,kBAAA,CAAO,YAAA,EAAe,mBAAS,KAAA,EAAM;AAAA;AAAA;AAAA,KACxD;AAAA,oBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAW,mBAAO,OAAA,EAAS,CAAA;AAAA,IACnD,uBACCC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAO,IAAA,EACrB,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAY,iBAAA;AAAA,UACZ,WAAW,kBAAA,CAAO,MAAA;AAAA,UAClB,WAAA,EAAa,iBAAA;AAAA,UACb,GAAA,EAAK,SAAA;AAAA,UACL,IAAA,EAAK,QAAA;AAAA,UACL,KAAA,EAAO,KAAA;AAAA,UACP,UAAU,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,CAAM,OAAO,KAAK;AAAA;AAAA,OAClD;AAAA,sBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,kBAAA,CAAO,MAAM,EAAA,EAAI,SAAA,EAAW,IAAA,EAAK,SAAA,EAC9C,wBAAc,MAAA,GACb,aAAA,CAAc,GAAA,CAAI,CAAC,0BACjBA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,cAAY,KAAA,CAAM,KAAA;AAAA,UAClB,eAAA,EAAe,MAAM,QAAA,KAAa,KAAA;AAAA,UAClC,WAAW,kBAAA,CAAO,MAAA;AAAA,UAClB,eAAA,EAAe,KAAA,CAAM,QAAA,KAAa,KAAA,GAAQ,MAAA,GAAS,MAAA;AAAA,UAEnD,IAAA,EAAK,QAAA;AAAA,UACL,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,IAAA,EAAK,QAAA;AAAA,UACL,SAAS,MAAM;AACb,YAAA,QAAA,CAAS,MAAM,QAAQ,CAAA;AACvB,YAAA,OAAA,CAAQ,KAAK,CAAA;AACb,YAAA,QAAA,CAAS,EAAE,CAAA;AAAA,UACb,CAAA;AAAA,UAEA,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,SAAA,EAAW,kBAAA,CAAO,UAAA,EACzC,QAAA,kBAAAA,IAACuB,eAAAA,EAAA,EAAgB,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA,EACrC;AAAA,SAAA;AAAA,QAZK,KAAA,CAAM;AAAA,OAcd,oBAEDvB,GAAAA,CAAC,OAAE,SAAA,EAAW,kBAAA,CAAO,KAAA,EAAO,QAAA,EAAA,6BAAA,EAA2B,CAAA,EAE3D;AAAA,KAAA,EACF,CAAA,GACE;AAAA,GAAA,EACN,CAAA,EACF,CAAA;AAEJ","file":"index.js","sourcesContent":["/** Barrel dimensions from GameEngine2 `OilBarrelDimensions.js` / `OilBarrel.js`. */\nexport const OIL_BARREL_PLAYER_STAND_EYE = 1.65;\nexport const OIL_BARREL_HEIGHT = OIL_BARREL_PLAYER_STAND_EYE * 0.5;\nexport const OIL_BARREL_RADIUS = 0.3;\nexport const RIM_BEVEL = Math.min(0.038, OIL_BARREL_RADIUS * 0.11);\nexport const VIDEO_FLOOR_LIFT = 0.04;\nexport const VIDEO_CLIP_RADIUS_FACTOR = 0.96;\n\nexport type InteriorFireTuning = {\n interiorFireOffsetX: number;\n interiorFlameTexBottom: number;\n interiorFlameTexTop: number;\n interiorVideoCenterOffsetX: number;\n interiorVideoCenterOffsetY: number;\n interiorVideoHeightScale: number;\n interiorVideoWidthScale: number;\n};\n\nexport const DEFAULT_INTERIOR_FIRE_TUNING: InteriorFireTuning = {\n interiorVideoWidthScale: 1.9,\n interiorVideoHeightScale: 2,\n interiorVideoCenterOffsetX: -0.195,\n interiorVideoCenterOffsetY: 0.185,\n interiorFireOffsetX: 0.185,\n interiorFlameTexBottom: 0.15,\n interiorFlameTexTop: 0.92,\n};\n\nexport function getOpenBarrelInteriorMetrics() {\n const bevel = RIM_BEVEL;\n const halfHeight = OIL_BARREL_HEIGHT / 2;\n const innerRadius = OIL_BARREL_RADIUS - bevel;\n const floorY = -halfHeight + bevel + 0.003;\n const topLipY = halfHeight - bevel;\n\n return {\n bevel,\n floorY,\n halfHeight,\n innerRadius,\n topLipY,\n };\n}\n\nexport function computeInteriorFireCenterX(tuning: InteriorFireTuning) {\n return tuning.interiorVideoCenterOffsetX + tuning.interiorFireOffsetX;\n}\n\nexport function normalizeFlameTexVRange(tuning: InteriorFireTuning) {\n let sampleV0 = tuning.interiorFlameTexBottom;\n let sampleV1 = tuning.interiorFlameTexTop;\n sampleV0 = Math.min(sampleV0, 0.98);\n sampleV1 = Math.min(sampleV1, 1);\n\n if (sampleV1 < sampleV0 + 0.02) {\n sampleV1 = Math.min(1, sampleV0 + 0.02);\n }\n\n return { sampleV0, sampleV1 };\n}\n\nexport function computeInteriorFlameLayout(\n innerRadius: number,\n floorY: number,\n rimY: number,\n tuning: InteriorFireTuning,\n) {\n const widthScale = tuning.interiorVideoWidthScale;\n const heightScale = tuning.interiorVideoHeightScale;\n const maxWidth = innerRadius * 2.08 * widthScale;\n const offsetY = tuning.interiorVideoCenterOffsetY;\n const x = computeInteriorFireCenterX(tuning);\n\n const bottomY = floorY + VIDEO_FLOOR_LIFT;\n const topY = rimY + 0.03;\n let height = (topY - bottomY) * heightScale;\n let width = height * (540 / 304) * widthScale;\n\n if (width > maxWidth) {\n width = maxWidth;\n }\n\n return {\n height,\n width,\n x,\n y: bottomY + height * 0.5 + offsetY,\n z: 0,\n };\n}\n","/** Defaults mirrored from GameEngine2 `OilBarrelTuning.js`. */\nexport const INTERIOR_FLAME_TEX_BOTTOM = 0.15;\nexport const INTERIOR_FLAME_TEX_TOP = 0.92;\nexport const VIDEO_TOP_FADE_START = 0.48;\nexport const VIDEO_TOP_FADE_END = 0.9;\nexport const VIDEO_ASPECT = 540 / 304;\n\nexport const OIL_BARREL_FIRE_COLOR_SRC =\n \"/textures/oil-barrel/oil_can_interior_color.mp4?v=fire-alpha-looped\";\nexport const OIL_BARREL_FIRE_ALPHA_SRC =\n \"/textures/oil-barrel/oil_can_interior_alpha.mp4?v=fire-alpha-looped\";\n","import * as THREE from \"three\";\nimport {\n DEFAULT_INTERIOR_FIRE_TUNING,\n normalizeFlameTexVRange,\n VIDEO_CLIP_RADIUS_FACTOR,\n} from \"./barrelFireLayout\";\nimport {\n OIL_BARREL_FIRE_ALPHA_SRC,\n OIL_BARREL_FIRE_COLOR_SRC,\n VIDEO_TOP_FADE_END,\n VIDEO_TOP_FADE_START,\n} from \"./interiorFireTuning\";\n\nfunction makeLoopingVideo(url: string) {\n const video = document.createElement(\"video\");\n video.src = url;\n video.loop = true;\n video.muted = true;\n video.playsInline = true;\n video.setAttribute(\"playsinline\", \"\");\n video.preload = \"auto\";\n return video;\n}\n\nfunction configureVideoTexture(\n texture: THREE.VideoTexture,\n video: HTMLVideoElement,\n colorSpace: THREE.ColorSpace,\n) {\n texture.colorSpace = colorSpace;\n texture.minFilter = THREE.LinearFilter;\n texture.magFilter = THREE.LinearFilter;\n texture.generateMipmaps = false;\n texture.wrapS = THREE.ClampToEdgeWrapping;\n texture.wrapT = THREE.ClampToEdgeWrapping;\n void video.play().catch(() => {});\n return texture;\n}\n\nexport function createInteriorFireMaterial(\n colorTex: THREE.VideoTexture,\n alphaTex: THREE.VideoTexture,\n innerRadius: number,\n clipTopY: number,\n) {\n const { sampleV0, sampleV1 } = normalizeFlameTexVRange(DEFAULT_INTERIOR_FIRE_TUNING);\n\n return new THREE.ShaderMaterial({\n uniforms: {\n uColorTex: { value: colorTex },\n uAlphaTex: { value: alphaTex },\n clipRadius: { value: innerRadius * VIDEO_CLIP_RADIUS_FACTOR },\n clipTopY: { value: clipTopY },\n sampleV0: { value: sampleV0 },\n sampleV1: { value: sampleV1 },\n topFadeStart: { value: VIDEO_TOP_FADE_START },\n topFadeEnd: { value: VIDEO_TOP_FADE_END },\n barrelMatrixInverse: { value: new THREE.Matrix4() },\n },\n vertexShader: `\n varying vec2 vUv;\n varying vec3 vWorldPos;\n void main() {\n vUv = uv;\n vWorldPos = (modelMatrix * vec4(position, 1.0)).xyz;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D uColorTex;\n uniform sampler2D uAlphaTex;\n uniform float clipRadius;\n uniform float clipTopY;\n uniform float sampleV0;\n uniform float sampleV1;\n uniform float topFadeStart;\n uniform float topFadeEnd;\n uniform mat4 barrelMatrixInverse;\n varying vec2 vUv;\n varying vec3 vWorldPos;\n void main() {\n vec4 local = barrelMatrixInverse * vec4(vWorldPos, 1.0);\n float r = length(local.xz);\n if (local.y < clipTopY && r > clipRadius) discard;\n\n vec2 uv = vec2(vUv.x, mix(sampleV0, sampleV1, clamp(vUv.y, 0.0, 1.0)));\n vec3 rgb = texture2D(uColorTex, uv).rgb;\n float matte = texture2D(uAlphaTex, uv).r;\n float lum = dot(rgb, vec3(0.2126, 0.7152, 0.0722));\n float key = smoothstep(0.05, 0.2, lum);\n float blueSpill = smoothstep(0.12, 0.42, rgb.b - max(rgb.r, rgb.g));\n float alpha = matte * key * (1.0 - blueSpill * 0.92);\n float topFade = 1.0 - smoothstep(topFadeStart, topFadeEnd, vUv.y);\n alpha *= topFade;\n if (alpha < 0.02) discard;\n rgb *= alpha;\n gl_FragColor = vec4(rgb, alpha);\n }\n `,\n transparent: true,\n depthWrite: false,\n depthTest: true,\n premultipliedAlpha: true,\n side: THREE.DoubleSide,\n toneMapped: false,\n lights: false,\n });\n}\n\nexport async function loadInteriorFireVideos() {\n const colorVideo = makeLoopingVideo(OIL_BARREL_FIRE_COLOR_SRC);\n const alphaVideo = makeLoopingVideo(OIL_BARREL_FIRE_ALPHA_SRC);\n\n await Promise.all([\n new Promise<void>((resolve, reject) => {\n colorVideo.addEventListener(\"loadeddata\", () => resolve(), { once: true });\n colorVideo.addEventListener(\"error\", () => reject(new Error(\"Fire color video failed to load.\")), {\n once: true,\n });\n colorVideo.load();\n }),\n new Promise<void>((resolve, reject) => {\n alphaVideo.addEventListener(\"loadeddata\", () => resolve(), { once: true });\n alphaVideo.addEventListener(\"error\", () => reject(new Error(\"Fire alpha video failed to load.\")), {\n once: true,\n });\n alphaVideo.load();\n }),\n ]);\n\n const colorTex = configureVideoTexture(\n new THREE.VideoTexture(colorVideo),\n colorVideo,\n THREE.SRGBColorSpace,\n );\n const alphaTex = configureVideoTexture(\n new THREE.VideoTexture(alphaVideo),\n alphaVideo,\n THREE.NoColorSpace,\n );\n\n return { alphaTex, alphaVideo, colorTex, colorVideo };\n}\n\nexport function syncInteriorFireVideos(\n colorVideo: HTMLVideoElement,\n alphaVideo: HTMLVideoElement,\n colorTex: THREE.VideoTexture,\n alphaTex: THREE.VideoTexture,\n) {\n if (Math.abs(colorVideo.currentTime - alphaVideo.currentTime) > 0.05) {\n alphaVideo.currentTime = colorVideo.currentTime;\n }\n\n if (colorVideo.readyState >= 2) {\n colorTex.needsUpdate = true;\n }\n\n if (alphaVideo.readyState >= 2) {\n alphaTex.needsUpdate = true;\n }\n}\n\nexport function billboardFireYawOnly(\n mesh: THREE.Mesh,\n barrel: THREE.Object3D,\n camera: THREE.Camera,\n) {\n const localCamera = camera.position.clone();\n barrel.worldToLocal(localCamera);\n mesh.rotation.set(0, Math.atan2(localCamera.x, localCamera.z), 0);\n}\n\nexport function updateInteriorFireUniforms(\n mesh: THREE.Mesh,\n barrel: THREE.Object3D,\n) {\n const material = mesh.material as THREE.ShaderMaterial;\n const inverse = material.uniforms.barrelMatrixInverse?.value as THREE.Matrix4 | undefined;\n\n if (!inverse) {\n return;\n }\n\n barrel.updateMatrixWorld(true);\n inverse.copy(barrel.matrixWorld).invert();\n}\n","import * as THREE from \"three\";\nimport { OrbitControls } from \"three/examples/jsm/controls/OrbitControls.js\";\nimport { GLTFLoader } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport {\n computeInteriorFlameLayout,\n DEFAULT_INTERIOR_FIRE_TUNING,\n getOpenBarrelInteriorMetrics,\n} from \"./barrelFireLayout\";\nimport {\n billboardFireYawOnly,\n createInteriorFireMaterial,\n loadInteriorFireVideos,\n syncInteriorFireVideos,\n updateInteriorFireUniforms,\n} from \"./interiorFireMaterial\";\n\ntype SetupFireBarrelSceneOptions = {\n autoRotate?: boolean;\n cameraControls: boolean;\n host: HTMLElement;\n modelSrc: string;\n};\n\nfunction fitCameraToObject(\n camera: THREE.PerspectiveCamera,\n controls: OrbitControls,\n object: THREE.Object3D,\n fitOffset = 0.92,\n) {\n const box = new THREE.Box3().setFromObject(object);\n const center = box.getCenter(new THREE.Vector3());\n const sphere = box.getBoundingSphere(new THREE.Sphere());\n const fovRad = THREE.MathUtils.degToRad(camera.fov);\n const distance = (sphere.radius / Math.sin(fovRad / 2)) * fitOffset;\n const polar = THREE.MathUtils.degToRad(75);\n const azimuth = 0;\n\n controls.target.copy(center);\n camera.position.set(\n center.x + distance * Math.sin(polar) * Math.sin(azimuth),\n center.y + distance * Math.cos(polar),\n center.z + distance * Math.sin(polar) * Math.cos(azimuth),\n );\n camera.near = Math.max(distance / 100, 0.01);\n camera.far = distance * 100;\n camera.updateProjectionMatrix();\n controls.update();\n}\n\nexport async function setupFireBarrelScene({\n autoRotate = true,\n cameraControls,\n host,\n modelSrc,\n}: SetupFireBarrelSceneOptions) {\n const width = host.clientWidth;\n const height = host.clientHeight;\n\n const scene = new THREE.Scene();\n scene.background = null;\n\n const camera = new THREE.PerspectiveCamera(38, width / Math.max(height, 1), 0.01, 100);\n\n const renderer = new THREE.WebGLRenderer({\n alpha: true,\n antialias: true,\n });\n renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\n renderer.setSize(width, height);\n renderer.outputColorSpace = THREE.SRGBColorSpace;\n renderer.toneMapping = THREE.ACESFilmicToneMapping;\n renderer.toneMappingExposure = 1.05;\n host.appendChild(renderer.domElement);\n\n const controls = new OrbitControls(camera, renderer.domElement);\n controls.enableDamping = true;\n controls.enabled = cameraControls;\n controls.autoRotate = autoRotate;\n controls.autoRotateSpeed = 1.75;\n controls.minPolarAngle = THREE.MathUtils.degToRad(28);\n controls.maxPolarAngle = THREE.MathUtils.degToRad(82);\n controls.update();\n\n const hemi = new THREE.HemisphereLight(0xdde8ff, 0x2a2418, 1.15);\n scene.add(hemi);\n\n const key = new THREE.DirectionalLight(0xffffff, 1.35);\n key.position.set(2.4, 3.6, 2.1);\n scene.add(key);\n\n const fill = new THREE.DirectionalLight(0xffb070, 0.45);\n fill.position.set(-1.8, 1.2, -1.4);\n scene.add(fill);\n\n const [{ scene: barrelScene }, videos] = await Promise.all([\n new Promise<{ scene: THREE.Group }>((resolve, reject) => {\n new GLTFLoader().load(\n modelSrc,\n (gltf) => resolve({ scene: gltf.scene as THREE.Group }),\n undefined,\n () => reject(new Error(\"Could not load fire barrel model.\")),\n );\n }),\n loadInteriorFireVideos(),\n ]);\n\n scene.add(barrelScene);\n fitCameraToObject(camera, controls, barrelScene);\n\n const barrelRoot =\n (barrelScene.getObjectByName(\"oil_barrel\") as THREE.Object3D | null) ?? barrelScene;\n\n const metrics = getOpenBarrelInteriorMetrics();\n const layout = computeInteriorFlameLayout(\n metrics.innerRadius,\n metrics.floorY,\n metrics.topLipY,\n DEFAULT_INTERIOR_FIRE_TUNING,\n );\n\n const fireMaterial = createInteriorFireMaterial(\n videos.colorTex,\n videos.alphaTex,\n metrics.innerRadius,\n metrics.topLipY,\n );\n\n const fireMesh = new THREE.Mesh(\n new THREE.PlaneGeometry(layout.width, layout.height),\n fireMaterial,\n );\n fireMesh.name = \"oil_interior_video\";\n fireMesh.position.set(layout.x, layout.y, layout.z);\n fireMesh.renderOrder = 6;\n barrelRoot.add(fireMesh);\n\n let frameId = 0;\n\n const renderLoop = () => {\n frameId = window.requestAnimationFrame(renderLoop);\n syncInteriorFireVideos(\n videos.colorVideo,\n videos.alphaVideo,\n videos.colorTex,\n videos.alphaTex,\n );\n billboardFireYawOnly(fireMesh, barrelRoot, camera);\n updateInteriorFireUniforms(fireMesh, barrelRoot);\n controls.update();\n renderer.render(scene, camera);\n };\n\n renderLoop();\n\n const resizeObserver = new ResizeObserver(() => {\n const nextWidth = host.clientWidth;\n const nextHeight = host.clientHeight;\n if (nextWidth <= 0 || nextHeight <= 0) {\n return;\n }\n\n camera.aspect = nextWidth / nextHeight;\n camera.updateProjectionMatrix();\n renderer.setSize(nextWidth, nextHeight);\n fitCameraToObject(camera, controls, barrelScene);\n });\n resizeObserver.observe(host);\n\n return () => {\n window.cancelAnimationFrame(frameId);\n resizeObserver.disconnect();\n controls.dispose();\n fireMesh.geometry.dispose();\n fireMaterial.dispose();\n videos.colorTex.dispose();\n videos.alphaTex.dispose();\n videos.colorVideo.pause();\n videos.alphaVideo.pause();\n videos.colorVideo.removeAttribute(\"src\");\n videos.alphaVideo.removeAttribute(\"src\");\n renderer.dispose();\n\n if (renderer.domElement.parentElement === host) {\n host.removeChild(renderer.domElement);\n }\n };\n}\n",".button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: var(--opus-control-height);\n padding: 0 12px;\n border: 1px solid transparent;\n border-radius: var(--opus-input-radius);\n cursor: pointer;\n font-size: var(--opus-control-font-size);\n font-weight: 700;\n line-height: 1;\n transition:\n border-color 160ms ease,\n background 160ms ease,\n box-shadow 160ms ease,\n color 160ms ease;\n}\n\n.button:focus-visible {\n outline: 2px solid color-mix(in srgb, var(--opus-accent) 65%, transparent);\n outline-offset: 2px;\n}\n\n.primary {\n border-color: color-mix(in srgb, var(--opus-accent) 72%, #ffffff);\n background: var(--opus-accent);\n color: var(--opus-accent-contrast, #ffffff);\n}\n\n.secondary {\n border-color: #6c757d;\n background: #6c757d;\n color: #ffffff;\n}\n\n.success {\n border-color: #198754;\n background: #198754;\n color: #ffffff;\n}\n\n.danger {\n border-color: #dc3545;\n background: #dc3545;\n color: #ffffff;\n}\n\n.warning {\n border-color: #ffc107;\n background: #ffc107;\n color: #17132f;\n}\n\n.info {\n border-color: #0dcaf0;\n background: #0dcaf0;\n color: #071018;\n}\n\n.light {\n border-color: #f8f9fa;\n background: #f8f9fa;\n color: #17132f;\n}\n\n.dark {\n border-color: #212529;\n background: #212529;\n color: #ffffff;\n}\n\n.link {\n border-color: transparent;\n background: transparent;\n color: var(--opus-accent);\n text-decoration: underline;\n text-underline-offset: 3px;\n}\n","import type { ButtonHTMLAttributes, ReactNode } from \"react\";\nimport styles from \"./Button.module.css\";\n\nexport type ButtonVariant =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"danger\"\n | \"warning\"\n | \"info\"\n | \"light\"\n | \"dark\"\n | \"link\";\n\ntype ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n children: ReactNode;\n variant?: ButtonVariant;\n};\n\nexport function Button({ children, className, variant = \"primary\", type = \"button\", ...props }: ButtonProps) {\n return (\n <button\n className={[styles.button, styles[variant], className ?? \"\"].filter(Boolean).join(\" \")}\n type={type}\n {...props}\n >\n {children}\n </button>\n );\n}\n",".root {\n position: relative;\n display: inline-flex;\n flex-shrink: 0;\n}\n\n.trigger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 42%, transparent);\n border-radius: 999px;\n background: color-mix(in srgb, var(--opus-accent) 12%, transparent);\n color: var(--opus-accent);\n font-size: 0.62rem;\n font-weight: 700;\n font-style: normal;\n line-height: 1;\n cursor: help;\n}\n\n.trigger:hover,\n.trigger:focus-visible {\n background: color-mix(in srgb, var(--opus-accent) 22%, transparent);\n outline: none;\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--opus-accent) 18%, transparent);\n}\n\n.popup {\n position: absolute;\n z-index: 20;\n bottom: calc(100% + 8px);\n left: 50%;\n width: max-content;\n max-width: min(240px, 70vw);\n padding: 8px 10px;\n border: 1px solid var(--opus-border-strong);\n border-radius: var(--opus-input-radius);\n background: var(--opus-panel);\n box-shadow: var(--opus-shadow);\n color: var(--opus-muted);\n font-size: 0.76rem;\n font-weight: 400;\n font-style: normal;\n line-height: 1.45;\n text-align: left;\n transform: translateX(-50%);\n}\n\n.popup::after {\n content: \"\";\n position: absolute;\n top: 100%;\n left: 50%;\n width: 8px;\n height: 8px;\n border-right: 1px solid var(--opus-border-strong);\n border-bottom: 1px solid var(--opus-border-strong);\n background: var(--opus-panel);\n transform: translate(-50%, -50%) rotate(45deg);\n}\n","\"use client\";\n\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport styles from \"./Tooltip.module.css\";\n\ntype TooltipProps = {\n content: string;\n label?: string;\n};\n\nexport function Tooltip({ content, label = \"More information\" }: TooltipProps) {\n const tooltipId = useId();\n const rootRef = useRef<HTMLSpanElement>(null);\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n\n const handlePointerDown = (event: PointerEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [open]);\n\n const handleBlur = (event: React.FocusEvent<HTMLButtonElement>) => {\n if (!rootRef.current?.contains(event.relatedTarget as Node | null)) {\n setOpen(false);\n }\n };\n\n return (\n <span\n ref={rootRef}\n className={styles.root}\n onMouseEnter={() => setOpen(true)}\n onMouseLeave={() => setOpen(false)}\n >\n <button\n aria-describedby={open ? tooltipId : undefined}\n aria-expanded={open}\n aria-label={label}\n className={styles.trigger}\n onBlur={handleBlur}\n onClick={() => setOpen((current) => !current)}\n onFocus={() => setOpen(true)}\n type=\"button\"\n >\n i\n </button>\n {open ? (\n <span className={styles.popup} id={tooltipId} role=\"tooltip\">\n {content}\n </span>\n ) : null}\n </span>\n );\n}\n",".root {\n width: 100%;\n display: grid;\n gap: 8px;\n min-width: 0;\n}\n\n.stacked {\n display: grid;\n gap: 10px;\n width: 100%;\n grid-template-columns: minmax(0, 1fr);\n}\n\n.stackedLeft,\n.stackedRight {\n width: 100%;\n}\n\n.stacked > * {\n min-width: 0;\n}\n\n.stackedLeft .label {\n justify-self: start;\n justify-content: flex-start;\n text-align: left;\n}\n\n.stackedRight .label {\n justify-self: end;\n justify-content: flex-end;\n text-align: right;\n}\n\n.flagged {\n display: grid;\n align-items: start;\n gap: 8px 12px;\n width: 100%;\n}\n\n.flaggedCenter {\n align-items: center;\n}\n\n.flaggedStart {\n align-items: start;\n}\n\n.labelLeft {\n grid-template-columns: minmax(120px, 34%) minmax(0, 1fr);\n grid-template-areas:\n \"label control\"\n \". error\";\n}\n\n.labelRight {\n grid-template-columns: minmax(0, 1fr) minmax(120px, 34%);\n grid-template-areas:\n \"control label\"\n \"error .\";\n}\n\n.compactControl.labelLeft {\n grid-template-columns: minmax(0, 1fr) var(--opus-control-height) !important;\n}\n\n.compactControl.labelRight {\n grid-template-columns: var(--opus-control-height) minmax(0, 1fr) !important;\n}\n\n.compactControl .controlFlagged {\n justify-self: end;\n width: auto;\n}\n\n.fitContent {\n width: fit-content;\n max-width: 100%;\n}\n\n.fitContent.stacked,\n.fitContent.stackedLeft,\n.fitContent.stackedRight {\n width: fit-content;\n}\n\n.fitContent.labelLeft,\n.fitContent.labelRight {\n grid-template-columns: auto auto;\n align-items: center;\n}\n\n.fitContent .label,\n.fitContent .labelFlagged {\n width: auto;\n white-space: nowrap;\n}\n\n.fitContent .control,\n.fitContent .controlFlagged {\n width: auto;\n justify-self: start;\n}\n\n.label {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n color: var(--opus-text);\n font-size: 0.86rem;\n font-weight: 600;\n line-height: 1.2;\n}\n\n.labelFlagged {\n grid-area: label;\n min-height: var(--opus-control-height);\n}\n\n.labelRight .labelFlagged {\n justify-self: end;\n}\n\n.control {\n width: 100%;\n min-width: 0;\n}\n\n.controlFlagged {\n grid-area: control;\n}\n\n.error {\n margin: 0;\n color: var(--opus-error);\n font-size: 0.78rem;\n line-height: 1.4;\n}\n\n.errorFlagged {\n grid-area: error;\n}\n\n.required {\n color: var(--opus-error);\n font-size: 0.76rem;\n font-weight: 500;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n}\n","\"use client\";\n\nimport { createContext, useContext, useMemo, type ReactNode } from \"react\";\nimport { Tooltip } from \"@/components/Tooltip\";\nimport styles from \"./FieldShell.module.css\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\n\nexport type FieldShellAriaContextValue = {\n describedBy?: string;\n errorId?: string;\n labelId?: string;\n required?: boolean;\n};\n\nconst FieldShellAriaContext = createContext<FieldShellAriaContextValue | null>(null);\n\nexport function useFieldShellAria() {\n return useContext(FieldShellAriaContext);\n}\n\nexport function fieldInputAriaProps(\n aria: FieldShellAriaContextValue | null | undefined,\n options?: { invalid?: boolean },\n) {\n if (!aria) {\n return {};\n }\n\n return {\n ...(aria.describedBy ? { \"aria-describedby\": aria.describedBy } : {}),\n ...(aria.errorId && options?.invalid ? { \"aria-errormessage\": aria.errorId } : {}),\n ...(aria.required ? { \"aria-required\": true as const, required: true as const } : {}),\n ...(aria.labelId ? { \"aria-labelledby\": aria.labelId } : {}),\n };\n}\n\ntype FieldShellProps = {\n children: ReactNode;\n className?: string;\n compactControl?: boolean;\n error?: string;\n fitContent?: boolean;\n flaggedAlign?: \"center\" | \"start\";\n help?: string;\n id?: string;\n label: string;\n labelVisuallyHidden?: boolean;\n labelPosition?: LabelPosition;\n labelTag?: \"div\" | \"label\";\n mode?: FieldMode;\n required?: boolean;\n suppressErrorDisplay?: boolean;\n};\n\nfunction FieldLabelContent({\n help,\n label,\n required,\n}: {\n help?: string;\n label: string;\n required?: boolean;\n}) {\n return (\n <>\n <span>{label}</span>\n {required ? <span className={styles.required}>(required)</span> : null}\n {help ? <Tooltip content={help} label={`Help for ${label}`} /> : null}\n </>\n );\n}\n\nfunction FieldLabel({\n className,\n help,\n id,\n label,\n labelTag,\n htmlFor,\n required,\n}: {\n className: string;\n help?: string;\n id?: string;\n label: string;\n labelTag: \"div\" | \"label\";\n htmlFor?: string;\n required?: boolean;\n}) {\n const content = <FieldLabelContent help={help} label={label} required={required} />;\n\n if (labelTag === \"label\") {\n return (\n <label className={className} htmlFor={htmlFor} id={id}>\n {content}\n </label>\n );\n }\n\n return (\n <div className={className} id={id}>\n {content}\n </div>\n );\n}\n\nexport function FieldShell({\n children,\n className,\n compactControl,\n error,\n fitContent,\n flaggedAlign = \"start\",\n help,\n id,\n label,\n labelVisuallyHidden,\n labelPosition = \"left\",\n labelTag = \"label\",\n mode = \"stacked\",\n required,\n suppressErrorDisplay,\n}: FieldShellProps) {\n const flagged = mode === \"flagged\";\n const stackedSide = labelPosition === \"right\" ? styles.stackedRight : styles.stackedLeft;\n const labelClassName = `${styles.label} ${flagged ? styles.labelFlagged : \"\"} ${\n labelVisuallyHidden ? styles.visuallyHidden : \"\"\n }`;\n const controlClassName = `${styles.control} ${flagged ? styles.controlFlagged : \"\"}`;\n const errorClassName = `${styles.error} ${flagged ? styles.errorFlagged : \"\"}`;\n const compactGridColumns =\n flagged && compactControl\n ? labelPosition === \"left\"\n ? \"minmax(0, 1fr) var(--opus-control-height)\"\n : \"var(--opus-control-height) minmax(0, 1fr)\"\n : undefined;\n\n const labelId = id ? `${id}-label` : undefined;\n const helpId = id && help ? `${id}-help` : undefined;\n const errorId = id && error ? `${id}-error` : undefined;\n const describedBy = [helpId, errorId].filter(Boolean).join(\" \") || undefined;\n\n const ariaContext = useMemo(\n () => ({\n describedBy,\n errorId,\n labelId,\n required,\n }),\n [describedBy, errorId, labelId, required],\n );\n\n const labelProps = {\n className: labelClassName,\n help,\n id: labelId,\n label,\n labelTag,\n htmlFor: labelTag === \"label\" ? id : undefined,\n required,\n };\n\n const errorNode =\n error && !suppressErrorDisplay ? (\n <p className={errorClassName} id={errorId} role=\"alert\">\n {error}\n </p>\n ) : null;\n\n const helpNode =\n help && helpId ? (\n <span className={styles.visuallyHidden} id={helpId}>\n {help}\n </span>\n ) : null;\n\n return (\n <FieldShellAriaContext.Provider value={ariaContext}>\n <div\n data-fit-content={fitContent ? \"true\" : undefined}\n className={[\n styles.root,\n flagged ? styles.flagged : styles.stacked,\n flagged && flaggedAlign === \"center\" ? styles.flaggedCenter : \"\",\n flagged && flaggedAlign === \"start\" ? styles.flaggedStart : \"\",\n flagged && compactControl ? styles.compactControl : \"\",\n flagged && fitContent ? styles.fitContent : \"\",\n !flagged ? stackedSide : \"\",\n flagged && labelPosition === \"left\" ? styles.labelLeft : \"\",\n flagged && labelPosition === \"right\" ? styles.labelRight : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n style={compactGridColumns ? { gridTemplateColumns: compactGridColumns } : undefined}\n >\n {flagged ? (\n <>\n {labelPosition === \"left\" ? <FieldLabel {...labelProps} /> : null}\n <div className={controlClassName}>\n {children}\n {helpNode}\n </div>\n {labelPosition === \"right\" ? <FieldLabel {...labelProps} /> : null}\n {errorNode}\n </>\n ) : (\n <>\n <FieldLabel {...labelProps} />\n <div className={controlClassName}>\n {children}\n {helpNode}\n </div>\n {errorNode}\n </>\n )}\n </div>\n </FieldShellAriaContext.Provider>\n );\n}\n",".shell {\n align-items: start;\n}\n\n.toggle {\n position: relative;\n display: grid;\n place-items: center;\n width: var(--opus-control-height);\n height: var(--opus-control-height);\n color: var(--opus-text);\n cursor: pointer;\n}\n\n.nativeInput {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n opacity: 0;\n}\n\n.visual {\n position: relative;\n width: var(--opus-control-height);\n height: var(--opus-control-height);\n border: 1px solid var(--opus-border-strong);\n background: var(--opus-input-bg);\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 14px 30px rgba(0, 0, 0, 0.06);\n transition:\n background 160ms ease,\n border-color 160ms ease,\n box-shadow 160ms ease;\n}\n\n.square {\n border-radius: var(--opus-input-radius);\n}\n\n.round {\n border-radius: 999px;\n}\n\n.visual::after {\n content: \"\";\n position: absolute;\n left: 50%;\n top: 45%;\n width: 11px;\n height: 6px;\n border-left: 2px solid #ffffff;\n border-bottom: 2px solid #ffffff;\n opacity: 0;\n transform: translate(-50%, -50%) rotate(-45deg);\n}\n\n.nativeInput:checked + .visual {\n border-color: var(--opus-border-strong);\n background: linear-gradient(\n 135deg,\n var(--opus-accent),\n color-mix(in srgb, var(--opus-accent) 40%, #00d2ff)\n );\n box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.18);\n}\n\n.nativeInput:checked + .visual::after {\n opacity: 1;\n}\n\n.nativeInput:focus-visible + .visual {\n box-shadow:\n 0 0 0 4px color-mix(in srgb, var(--opus-accent) 24%, transparent),\n inset 0 0 0 1px rgba(255, 255, 255, 0.08);\n}\n\n.error {\n outline: 2px solid color-mix(in srgb, var(--opus-error) 36%, transparent);\n outline-offset: 2px;\n}\n","import styles from \"./CheckboxField.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport type { ChoiceShape, FieldMode, LabelPosition } from \"@/components/fields/types\";\nimport type { ChangeEventHandler } from \"react\";\n\ntype CheckboxFieldProps = {\n checked: boolean;\n error?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n onChange: ChangeEventHandler<HTMLInputElement>;\n shape?: ChoiceShape;\n};\n\nexport function CheckboxField({\n checked,\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n mode = \"flagged\",\n onChange,\n shape = \"square\",\n}: CheckboxFieldProps) {\n const shellAria = useFieldShellAria();\n\n return (\n <FieldShell\n className={styles.shell}\n compactControl\n error={error}\n help={help}\n id={id}\n label={label}\n labelPosition={labelPosition}\n labelTag=\"label\"\n mode={mode}\n >\n <div className={styles.toggle}>\n <input\n aria-invalid={error ? \"true\" : undefined}\n className={styles.nativeInput}\n checked={checked}\n id={id}\n onChange={onChange}\n type=\"checkbox\"\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n />\n <span\n aria-hidden=\"true\"\n className={[\n styles.visual,\n shape === \"round\" ? styles.round : styles.square,\n error ? styles.error : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n />\n </div>\n </FieldShell>\n );\n}\n",".picker {\n position: relative;\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n gap: 10px;\n width: 100%;\n min-height: var(--opus-control-height);\n padding: 0 10px;\n border: 1px solid var(--opus-border-strong);\n border-radius: var(--opus-input-radius);\n background: var(--opus-input-fill);\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n cursor: pointer;\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.nativeInput {\n position: absolute;\n inset: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n border: 0;\n opacity: 0;\n cursor: pointer;\n}\n\n.swatch,\n.value,\n.icon {\n position: relative;\n z-index: 0;\n pointer-events: none;\n}\n\n.swatch {\n width: 18px;\n height: 18px;\n border-radius: 999px;\n flex-shrink: 0;\n box-shadow:\n 0 0 0 1px rgba(255, 255, 255, 0.25) inset,\n 0 0 0 3px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n}\n\n.value {\n min-width: 0;\n overflow: hidden;\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n font-weight: 700;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.icon {\n position: relative;\n width: 16px;\n height: 16px;\n color: var(--opus-accent);\n}\n\n.icon span {\n position: absolute;\n width: 10px;\n height: 5px;\n border: 2px solid currentColor;\n border-radius: var(--opus-input-radius-small);\n transform: rotate(-45deg);\n}\n\n.icon span:first-child {\n left: 1px;\n top: 8px;\n}\n\n.icon span:last-child {\n right: 1px;\n top: 5px;\n}\n\n.picker:focus-within .swatch {\n box-shadow:\n 0 0 0 1px rgba(255, 255, 255, 0.25) inset,\n 0 0 0 4px color-mix(in srgb, var(--opus-accent) 24%, transparent);\n}\n\n.error {\n border-color: color-mix(in srgb, var(--opus-error) 75%, transparent);\n}\n","import styles from \"./ColorField.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\nimport type { ChangeEventHandler } from \"react\";\n\ntype ColorFieldProps = {\n error?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n onChange: ChangeEventHandler<HTMLInputElement>;\n value: string;\n};\n\nexport function ColorField({\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n mode = \"stacked\",\n onChange,\n value,\n}: ColorFieldProps) {\n const shellAria = useFieldShellAria();\n\n return (\n <FieldShell\n error={error}\n help={help}\n id={id}\n label={label}\n labelPosition={labelPosition}\n labelTag=\"div\"\n mode={mode}\n >\n <div className={`${styles.picker} ${error ? styles.error : \"\"}`}>\n <input\n aria-invalid={error ? \"true\" : undefined}\n aria-valuetext={value.toUpperCase()}\n className={styles.nativeInput}\n id={id}\n onChange={onChange}\n type=\"color\"\n value={value}\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n />\n <span aria-hidden=\"true\" className={styles.swatch} style={{ background: value }} />\n <span className={styles.value}>{value.toUpperCase()}</span>\n <span aria-hidden=\"true\" className={styles.icon}>\n <span />\n <span />\n </span>\n </div>\n </FieldShell>\n );\n}\n",".input {\n width: 100%;\n min-height: var(--opus-control-height);\n padding: 0 10px;\n border: 1px solid var(--opus-border-strong);\n border-radius: var(--opus-input-radius);\n background: var(--opus-input-bg);\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.input:focus {\n border-color: var(--opus-accent);\n box-shadow:\n 0 0 0 4px color-mix(in srgb, var(--opus-accent) 22%, transparent),\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.input::-webkit-calendar-picker-indicator {\n cursor: pointer;\n filter: var(--opus-date-icon-filter);\n}\n\n.error {\n border-color: color-mix(in srgb, var(--opus-error) 75%, transparent);\n}\n","import styles from \"./DateField.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\nimport type { ChangeEventHandler } from \"react\";\n\nexport type DateInputType = \"date\" | \"datetime-local\" | \"month\" | \"time\" | \"week\";\n\ntype DateFieldProps = {\n error?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n required?: boolean;\n type?: DateInputType;\n value: string;\n onChange: ChangeEventHandler<HTMLInputElement>;\n};\n\nexport function DateField({\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n mode = \"stacked\",\n required,\n type = \"date\",\n value,\n onChange,\n}: DateFieldProps) {\n const shellAria = useFieldShellAria();\n\n return (\n <FieldShell\n error={error}\n help={help}\n id={id}\n label={label}\n labelPosition={labelPosition}\n mode={mode}\n required={required}\n >\n <input\n aria-invalid={error ? \"true\" : undefined}\n className={`${styles.input} ${error ? styles.error : \"\"}`}\n id={id}\n onChange={onChange}\n type={type}\n value={value}\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n />\n </FieldShell>\n );\n}\n",".preview {\n display: grid;\n gap: 6px;\n padding: 10px 12px;\n border: 1px dashed var(--opus-border);\n border-radius: var(--opus-input-radius);\n background: color-mix(in srgb, var(--opus-input-bg) 70%, transparent);\n}\n\n.note {\n margin: 0;\n color: var(--opus-muted);\n font-size: 0.78rem;\n}\n\n.meta {\n color: var(--opus-text);\n font-family: var(--font-ibm-plex-mono), monospace;\n font-size: 0.72rem;\n word-break: break-all;\n}\n","import styles from \"./HiddenField.module.css\";\nimport { FieldShell } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\n\ntype HiddenFieldProps = {\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n name?: string;\n required?: boolean;\n value: string;\n};\n\nexport function HiddenField({\n help,\n id,\n label,\n labelPosition = \"left\",\n mode = \"stacked\",\n name,\n required,\n value,\n}: HiddenFieldProps) {\n const fieldName = name ?? id;\n\n return (\n <FieldShell\n help={help ?? \"Hidden fields are not visible to users but submit with the form.\"}\n id={id}\n label={label}\n labelPosition={labelPosition}\n mode={mode}\n required={required}\n >\n <div className={styles.preview}>\n <input\n id={id}\n name={fieldName}\n type=\"hidden\"\n value={value}\n />\n <p className={styles.note}>Not visible in the UI</p>\n <code className={styles.meta}>\n name=&quot;{fieldName}&quot; value=&quot;{value}&quot;\n </code>\n </div>\n </FieldShell>\n );\n}\n",".wrapper {\n display: grid;\n gap: 6px;\n width: 100%;\n}\n\n.drop {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 14px;\n min-height: 96px;\n padding: 16px 20px;\n border-radius: var(--opus-input-radius-large);\n border: 1px dashed var(--opus-border-strong);\n background: var(--opus-input-fill);\n cursor: pointer;\n transition:\n border-color 160ms ease,\n background-color 160ms ease;\n}\n\n.drop:hover,\n.dragging {\n border-color: var(--opus-accent);\n background: color-mix(in srgb, var(--opus-accent-soft) 72%, var(--opus-input-fill));\n}\n\n.dropError {\n border-color: color-mix(in srgb, var(--opus-error) 55%, var(--opus-border-strong));\n}\n\n.icon {\n display: grid;\n place-items: center;\n flex: 0 0 auto;\n color: var(--opus-accent);\n}\n\n.iconSvg {\n width: 32px;\n height: 32px;\n}\n\n.content {\n display: grid;\n gap: 4px;\n justify-items: center;\n text-align: center;\n}\n\n.title {\n color: var(--opus-text);\n font-size: 0.9rem;\n line-height: 1.35;\n}\n\n.title strong {\n font-weight: 700;\n}\n\n.hint {\n color: var(--opus-muted);\n font-size: 0.78rem;\n line-height: 1.2;\n}\n\n.action {\n display: inline-flex;\n justify-content: center;\n margin-top: 2px;\n padding: 7px 14px;\n border-radius: var(--opus-input-radius);\n border: 1px solid var(--opus-border-strong);\n background: transparent;\n color: var(--opus-accent);\n font-size: 0.82rem;\n font-weight: 600;\n}\n\n.footnote {\n margin: 0;\n color: var(--opus-muted);\n font-size: 0.74rem;\n line-height: 1.35;\n}\n\n.input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n","\"use client\";\n\nimport styles from \"./FileField.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\nimport {\n useRef,\n useState,\n type ChangeEvent,\n type ChangeEventHandler,\n type DragEventHandler,\n} from \"react\";\n\ntype FileFieldProps = {\n error?: string;\n footnote?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n onChange: ChangeEventHandler<HTMLInputElement>;\n fileName?: string;\n};\n\nfunction CloudUploadIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className={styles.iconSvg}\n fill=\"none\"\n viewBox=\"0 0 32 32\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.5 22.5h11c2.76 0 5-2.24 5-5 0-2.39-1.68-4.39-3.93-4.88A5.5 5.5 0 0 0 12.2 9.7 4.5 4.5 0 0 0 10.5 22.5Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.5\"\n />\n <path d=\"M16 14.5v6\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.5\" />\n <path d=\"M13 17.5h6\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.5\" />\n </svg>\n );\n}\n\nexport function FileField({\n error,\n fileName,\n footnote = \"Max file size 10MB\",\n help,\n id,\n label,\n labelPosition = \"left\",\n mode = \"stacked\",\n onChange,\n}: FileFieldProps) {\n const shellAria = useFieldShellAria();\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n\n const assignFiles = (files: FileList | null) => {\n const input = inputRef.current;\n if (!input || !files?.length) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n dataTransfer.items.add(files[0]);\n input.files = dataTransfer.files;\n\n onChange({\n target: input,\n currentTarget: input,\n } as ChangeEvent<HTMLInputElement>);\n };\n\n const handleDragOver: DragEventHandler<HTMLLabelElement> = (event) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const handleDragEnter: DragEventHandler<HTMLLabelElement> = (event) => {\n event.preventDefault();\n event.stopPropagation();\n setIsDragging(true);\n };\n\n const handleDragLeave: DragEventHandler<HTMLLabelElement> = (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n setIsDragging(false);\n }\n };\n\n const handleDrop: DragEventHandler<HTMLLabelElement> = (event) => {\n event.preventDefault();\n event.stopPropagation();\n setIsDragging(false);\n assignFiles(event.dataTransfer.files);\n };\n\n return (\n <FieldShell\n error={error}\n help={help}\n id={id}\n label={label}\n labelPosition={labelPosition}\n labelTag=\"div\"\n mode={mode}\n >\n <div className={styles.wrapper}>\n <label\n className={`${styles.drop} ${isDragging ? styles.dragging : \"\"} ${error ? styles.dropError : \"\"}`}\n htmlFor={id}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <span className={styles.icon}>\n <CloudUploadIcon />\n </span>\n <div className={styles.content}>\n <div className={styles.title}>\n {fileName ? (\n <>Selected: {fileName}</>\n ) : (\n <>\n <strong>Drag</strong> and drop a file here\n </>\n )}\n </div>\n {!fileName ? <div className={styles.hint}>or</div> : null}\n <span className={styles.action}>{fileName ? \"Upload\" : \"Browse files\"}</span>\n </div>\n <input\n ref={inputRef}\n aria-invalid={error ? \"true\" : undefined}\n className={styles.input}\n id={id}\n onChange={onChange}\n type=\"file\"\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n />\n </label>\n {footnote ? <p className={styles.footnote}>{footnote}</p> : null}\n </div>\n </FieldShell>\n );\n}\n",".stepper {\n display: grid;\n grid-template-columns: 38px minmax(0, 1fr) 38px;\n width: 100%;\n min-height: var(--opus-control-height);\n overflow: hidden;\n border: 1px solid var(--opus-border-strong);\n border-radius: var(--opus-input-radius);\n background: var(--opus-input-bg);\n color: var(--opus-text);\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.input {\n width: 100%;\n min-width: 0;\n min-height: var(--opus-control-height);\n padding: 0 8px;\n border: 0;\n border-right: 1px solid color-mix(in srgb, var(--opus-border-strong) 45%, transparent);\n border-left: 1px solid color-mix(in srgb, var(--opus-border-strong) 45%, transparent);\n background: transparent;\n color: inherit;\n text-align: center;\n font-size: var(--opus-control-font-size);\n font-weight: 700;\n font-variant-numeric: tabular-nums;\n}\n\n.input:focus {\n outline: none;\n background: color-mix(in srgb, var(--opus-accent-soft) 40%, transparent);\n}\n\n.button {\n display: grid;\n place-items: center;\n min-height: var(--opus-control-height);\n border: 0;\n background: transparent;\n color: var(--opus-accent);\n cursor: pointer;\n font-size: 1rem;\n font-weight: 700;\n}\n\n.button:focus-visible {\n outline: 2px solid var(--opus-accent);\n outline-offset: -2px;\n}\n\n.error {\n border-color: color-mix(in srgb, var(--opus-error) 75%, transparent);\n}\n","export function decimalPlacesFromStep(step: number): number {\n if (!Number.isFinite(step) || step <= 0) {\n return 0;\n }\n\n if (Number.isInteger(step)) {\n return 0;\n }\n\n const stepText = step.toString().toLowerCase();\n if (stepText.includes(\"e-\")) {\n const [, exponent] = stepText.split(\"e-\");\n return Number(exponent) || 0;\n }\n\n const dotIndex = stepText.indexOf(\".\");\n if (dotIndex === -1) {\n return 0;\n }\n\n return stepText.length - dotIndex - 1;\n}\n\nexport function formatByStep(value: number, step: number): string {\n return value.toFixed(decimalPlacesFromStep(step));\n}\n\nexport function roundToStep(value: number, step: number, min = 0): number {\n if (!Number.isFinite(value) || !Number.isFinite(step) || step <= 0) {\n return value;\n }\n\n const decimals = decimalPlacesFromStep(step);\n const stepped = Math.round((value - min) / step) * step + min;\n return Number(stepped.toFixed(decimals));\n}\n","\"use client\";\n\nimport { useEffect, useState, type ChangeEventHandler, type FocusEventHandler } from \"react\";\nimport styles from \"./NumberField.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport { formatByStep, roundToStep } from \"@/components/fields/numericUtils\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\n\ntype NumberFieldProps = {\n error?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n max?: number;\n min?: number;\n mode?: FieldMode;\n onChange: ChangeEventHandler<HTMLInputElement>;\n step?: number;\n value: number;\n};\n\nfunction sanitizeNumericInput(\n raw: string,\n { allowDecimal, allowNegative }: { allowDecimal: boolean; allowNegative: boolean },\n): string {\n if (raw === \"\") {\n return \"\";\n }\n\n if (raw === \"-\" && allowNegative) {\n return \"-\";\n }\n\n let sanitized = \"\";\n let hasDecimal = false;\n\n for (const char of raw) {\n if (char >= \"0\" && char <= \"9\") {\n sanitized += char;\n continue;\n }\n\n if (char === \"-\" && allowNegative && sanitized === \"\") {\n sanitized = \"-\";\n continue;\n }\n\n if (char === \".\" && allowDecimal && !hasDecimal && sanitized !== \"\" && sanitized !== \"-\") {\n sanitized += \".\";\n hasDecimal = true;\n }\n }\n\n return sanitized;\n}\n\nexport function NumberField({\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n max,\n min,\n mode = \"stacked\",\n onChange,\n step = 1,\n value,\n}: NumberFieldProps) {\n const shellAria = useFieldShellAria();\n const [text, setText] = useState(() => formatByStep(value, step));\n\n useEffect(() => {\n setText(formatByStep(value, step));\n }, [value, step]);\n\n const boundValue = (nextValue: number) => {\n const rounded = roundToStep(nextValue, step, min ?? 0);\n return Math.min(max ?? rounded, Math.max(min ?? rounded, rounded));\n };\n\n const emitValue = (nextValue: number) => {\n const bounded = boundValue(nextValue);\n\n onChange({\n target: { value: formatByStep(bounded, step), valueAsNumber: bounded },\n } as unknown as Parameters<ChangeEventHandler<HTMLInputElement>>[0]);\n };\n\n const allowNegative = (min ?? 0) < 0;\n const allowDecimal = !Number.isInteger(step);\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const sanitized = sanitizeNumericInput(event.target.value, { allowDecimal, allowNegative });\n setText(sanitized);\n\n if (sanitized === \"\" || sanitized === \"-\" || sanitized.endsWith(\".\")) {\n return;\n }\n\n const parsed = Number(sanitized);\n if (!Number.isNaN(parsed)) {\n emitValue(parsed);\n }\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = () => {\n if (text === \"\" || text === \"-\" || Number.isNaN(Number(text))) {\n setText(formatByStep(value, step));\n return;\n }\n\n const bounded = boundValue(Number(text));\n setText(formatByStep(bounded, step));\n emitValue(bounded);\n };\n\n const atMin = min !== undefined && value <= min;\n const atMax = max !== undefined && value >= max;\n\n return (\n <FieldShell\n error={error}\n help={help}\n id={id}\n label={label}\n labelPosition={labelPosition}\n mode={mode}\n >\n <div className={`${styles.stepper} ${error ? styles.error : \"\"}`}>\n <button\n aria-controls={id}\n aria-label={`Decrease ${label}`}\n className={styles.button}\n disabled={atMin}\n onClick={() => emitValue(value - step)}\n type=\"button\"\n >\n -\n </button>\n <input\n aria-invalid={error ? \"true\" : undefined}\n className={styles.input}\n id={id}\n inputMode={allowDecimal ? \"decimal\" : \"numeric\"}\n onBlur={handleBlur}\n onChange={handleChange}\n type=\"text\"\n value={text}\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n />\n <button\n aria-controls={id}\n aria-label={`Increase ${label}`}\n className={styles.button}\n disabled={atMax}\n onClick={() => emitValue(value + step)}\n type=\"button\"\n >\n +\n </button>\n </div>\n </FieldShell>\n );\n}\n",".shell {\n width: 100%;\n}\n\n.options {\n display: grid;\n gap: 8px;\n}\n\n.option {\n display: grid;\n gap: 4px;\n min-height: var(--opus-control-height);\n}\n\n.choice {\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n min-height: var(--opus-control-height);\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n cursor: pointer;\n}\n\n.nativeInput {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n opacity: 0;\n}\n\n.visual {\n position: relative;\n flex: 0 0 auto;\n width: var(--opus-control-height);\n height: var(--opus-control-height);\n border: 1px solid var(--opus-border-strong);\n background: var(--opus-input-bg);\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 14px 30px rgba(0, 0, 0, 0.06);\n transition:\n background 160ms ease,\n border-color 160ms ease,\n box-shadow 160ms ease;\n}\n\n.round {\n border-radius: 999px;\n}\n\n.square {\n border-radius: var(--opus-input-radius);\n}\n\n.visual::after {\n content: \"\";\n position: absolute;\n inset: 8px;\n border-radius: inherit;\n background: linear-gradient(\n 135deg,\n var(--opus-accent),\n color-mix(in srgb, var(--opus-accent) 40%, #00d2ff)\n );\n opacity: 0;\n transition: opacity 160ms ease;\n}\n\n.nativeInput:checked + .visual {\n border-color: var(--opus-border-strong);\n background: var(--opus-input-bg);\n}\n\n.nativeInput:checked + .visual::after {\n opacity: 1;\n}\n\n.nativeInput:focus-visible + .visual {\n box-shadow:\n 0 0 0 4px color-mix(in srgb, var(--opus-accent) 24%, transparent),\n inset 0 0 0 1px rgba(255, 255, 255, 0.08);\n}\n\n.error {\n color: var(--opus-error);\n font-size: 0.74rem;\n line-height: 1.3;\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { createContext, useContext, useId } from \"react\";\nimport styles from \"./RadioGroup.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport type { ChoiceShape, FieldMode, LabelPosition } from \"@/components/fields/types\";\n\ntype RadioGroupContextValue = {\n name: string;\n selectedValue: string | null;\n setSelectedValue: (value: string) => void;\n shape: ChoiceShape;\n};\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\ntype RadioGroupProps = {\n children: ReactNode;\n error?: string;\n help?: string;\n id?: string;\n label: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n name: string;\n onChange: (value: string) => void;\n shape?: ChoiceShape;\n value: string | null;\n};\n\nexport function RadioGroup({\n children,\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n mode = \"stacked\",\n name,\n onChange,\n shape = \"round\",\n value,\n}: RadioGroupProps) {\n const autoId = useId();\n const groupId = id ?? `radio-group-${autoId}`;\n\n return (\n <RadioGroupContext.Provider\n value={{\n name,\n selectedValue: value,\n setSelectedValue: onChange,\n shape,\n }}\n >\n <FieldShell\n className={styles.shell}\n error={error}\n flaggedAlign=\"start\"\n help={help}\n id={groupId}\n label={label}\n labelPosition={labelPosition}\n labelTag=\"div\"\n mode={mode}\n >\n <RadioGroupOptions error={error}>{children}</RadioGroupOptions>\n </FieldShell>\n </RadioGroupContext.Provider>\n );\n}\n\nfunction RadioGroupOptions({ children, error }: { children: ReactNode; error?: string }) {\n const shellAria = useFieldShellAria();\n\n return (\n <div\n aria-invalid={error ? \"true\" : undefined}\n className={styles.options}\n role=\"radiogroup\"\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n >\n {children}\n </div>\n );\n}\n\ntype RadioProps = {\n children?: ReactNode;\n error?: string;\n name?: string;\n shape?: ChoiceShape;\n value: string;\n defaultChecked?: boolean;\n};\n\nexport function Radio({ children, error, name, shape, value, defaultChecked }: RadioProps) {\n const group = useContext(RadioGroupContext);\n const inputName = group?.name ?? name;\n const checked = group ? group.selectedValue === value : undefined;\n const choiceShape = shape ?? group?.shape ?? \"round\";\n\n return (\n <div className={styles.option}>\n <label className={styles.choice}>\n <input\n className={styles.nativeInput}\n checked={checked}\n defaultChecked={group ? undefined : defaultChecked}\n name={inputName}\n onChange={() => group?.setSelectedValue(value)}\n type=\"radio\"\n value={value}\n />\n <span\n aria-hidden=\"true\"\n className={`${styles.visual} ${\n choiceShape === \"round\" ? styles.round : styles.square\n }`}\n />\n <span>{children ?? value}</span>\n </label>\n {error ? <div className={styles.error}>{error}</div> : null}\n </div>\n );\n}\n",".shell {\n width: 100%;\n}\n\n.field {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n align-content: flex-start;\n gap: 6px;\n width: 100%;\n min-height: var(--opus-control-height);\n padding: 4px 8px;\n border: 1px solid var(--opus-border-strong);\n border-radius: var(--opus-input-radius);\n background: var(--opus-input-bg);\n color: var(--opus-text);\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 14px 30px rgba(0, 0, 0, 0.06);\n cursor: text;\n transition:\n border-color 160ms ease,\n box-shadow 160ms ease;\n}\n\n.field:hover:not(.disabled):not(.readOnly) {\n border-color: color-mix(in srgb, var(--opus-accent) 28%, var(--opus-border-strong));\n}\n\n.field:focus-within:not(.disabled):not(.readOnly) {\n border-color: var(--opus-accent);\n box-shadow:\n 0 0 0 4px color-mix(in srgb, var(--opus-accent) 22%, transparent),\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.field.error {\n border-color: color-mix(in srgb, var(--opus-error) 75%, transparent);\n}\n\n.field.error:focus-within {\n box-shadow:\n 0 0 0 4px color-mix(in srgb, var(--opus-error) 18%, transparent),\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.field.disabled {\n opacity: 0.58;\n cursor: not-allowed;\n}\n\n.field.readOnly {\n cursor: default;\n}\n\n.chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n max-width: 100%;\n min-height: calc(var(--opus-control-height) - 12px);\n padding: 0 4px 0 10px;\n border-radius: 999px;\n font-size: calc(var(--opus-control-font-size) - 1px);\n font-weight: 650;\n line-height: 1.2;\n white-space: nowrap;\n transition:\n background 160ms ease,\n border-color 160ms ease,\n box-shadow 160ms ease,\n color 160ms ease;\n}\n\n.chipLabel {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n border: 0;\n border-radius: 999px;\n background: transparent;\n color: inherit;\n font-size: 16px;\n line-height: 1;\n cursor: pointer;\n opacity: 0.72;\n transition:\n background 160ms ease,\n opacity 160ms ease;\n}\n\n.remove:hover:not(:disabled) {\n opacity: 1;\n background: color-mix(in srgb, currentColor 12%, transparent);\n}\n\n.remove:focus-visible {\n outline: 2px solid color-mix(in srgb, var(--opus-accent) 65%, transparent);\n outline-offset: 1px;\n opacity: 1;\n}\n\n.remove:disabled {\n cursor: not-allowed;\n}\n\n.input {\n flex: 1 1 120px;\n width: auto;\n min-width: 120px;\n height: calc(var(--opus-control-height) - 12px);\n padding: 0 4px;\n border: 0;\n background: transparent;\n color: var(--opus-text);\n font-family: inherit;\n font-size: var(--opus-control-font-size);\n outline: none;\n}\n\n.input::placeholder {\n color: color-mix(in srgb, var(--opus-muted) 80%, transparent);\n}\n\n.input:disabled {\n cursor: not-allowed;\n}\n\n.field[data-chip-variant=\"filled\"] .chip {\n border: 1px solid color-mix(in srgb, var(--opus-border-strong) 85%, transparent);\n background: color-mix(in srgb, var(--opus-text) 8%, var(--opus-input-bg));\n color: var(--opus-text);\n}\n\n.field[data-chip-variant=\"outlined\"] .chip {\n border: 1px solid var(--opus-border-strong);\n background: transparent;\n color: var(--opus-text);\n}\n\n.field[data-chip-variant=\"soft\"] .chip {\n border: 1px solid color-mix(in srgb, var(--opus-accent) 35%, var(--opus-border-strong));\n background: var(--opus-accent-soft);\n color: var(--opus-accent);\n}\n\n.field[data-chip-variant=\"glass\"] .chip {\n border: 1px solid color-mix(in srgb, var(--opus-border-strong) 55%, transparent);\n background: color-mix(in srgb, var(--opus-input-bg) 55%, transparent);\n backdrop-filter: blur(10px);\n color: var(--opus-text);\n}\n\n.field[data-chip-variant=\"gradient\"] .chip {\n border: 1px solid transparent;\n background:\n linear-gradient(var(--opus-input-bg), var(--opus-input-bg)) padding-box,\n linear-gradient(\n 135deg,\n color-mix(in srgb, var(--opus-accent) 85%, #4f8cff),\n color-mix(in srgb, var(--opus-accent) 55%, #7c3aed)\n )\n border-box;\n color: var(--opus-accent);\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .field,\n .chip,\n .remove {\n transition: none;\n }\n}\n","\"use client\";\n\nimport { useId, useRef, useState, type KeyboardEvent } from \"react\";\nimport styles from \"./ChipInputField.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport type { ChipInputVariant, FieldMode, LabelPosition } from \"@/components/fields/types\";\n\nconst CHIP_COMMIT_KEYS = new Set([\"Enter\", \"Tab\", \",\"]);\n\ntype ChipInputProps = {\n disabled?: boolean;\n error?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n onChange: (value: string[]) => void;\n placeholder?: string;\n readOnly?: boolean;\n required?: boolean;\n value: string[];\n variant?: ChipInputVariant;\n};\n\nexport function ChipInput({\n disabled = false,\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n mode = \"stacked\",\n onChange,\n placeholder = \"Add item…\",\n readOnly = false,\n required,\n value,\n variant = \"soft\",\n}: ChipInputProps) {\n const autoId = useId();\n const fieldId = id || `chip-input-${autoId}`;\n const shellAria = useFieldShellAria();\n const inputRef = useRef<HTMLInputElement>(null);\n const chipsRef = useRef(value);\n chipsRef.current = value;\n const [draft, setDraft] = useState(\"\");\n\n const commitDraft = () => {\n const next = draft.trim();\n if (!next || disabled || readOnly) {\n setDraft(\"\");\n return;\n }\n\n const current = chipsRef.current;\n if (!current.includes(next)) {\n onChange([...current, next]);\n }\n\n setDraft(\"\");\n };\n\n const removeChip = (index: number) => {\n if (disabled || readOnly) {\n return;\n }\n\n onChange(chipsRef.current.filter((_, chipIndex) => chipIndex !== index));\n inputRef.current?.focus();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (CHIP_COMMIT_KEYS.has(event.key)) {\n event.preventDefault();\n commitDraft();\n return;\n }\n\n if (event.key === \"Backspace\" && !draft && chipsRef.current.length > 0) {\n onChange(chipsRef.current.slice(0, -1));\n }\n };\n\n const focusInput = () => {\n if (!disabled && !readOnly) {\n inputRef.current?.focus();\n }\n };\n\n return (\n <FieldShell\n className={styles.shell}\n error={error}\n help={help}\n id={fieldId}\n label={label}\n labelPosition={labelPosition}\n mode={mode}\n required={required}\n >\n <div\n aria-disabled={disabled ? \"true\" : undefined}\n aria-invalid={error ? \"true\" : undefined}\n aria-label={`${label} values`}\n className={[\n styles.field,\n error ? styles.error : \"\",\n disabled ? styles.disabled : \"\",\n readOnly ? styles.readOnly : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n data-chip-variant={variant}\n onClick={focusInput}\n role=\"group\"\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n >\n {value.map((chip, index) => (\n <span key={`${chip}-${index}`} className={styles.chip}>\n <span className={styles.chipLabel}>{chip}</span>\n {!readOnly ? (\n <button\n aria-label={`Remove ${chip}`}\n className={styles.remove}\n disabled={disabled}\n type=\"button\"\n onClick={(event) => {\n event.stopPropagation();\n removeChip(index);\n }}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n ) : null}\n </span>\n ))}\n {!readOnly ? (\n <input\n ref={inputRef}\n aria-label={value.length ? `Add another ${label.toLowerCase()}` : `Add ${label.toLowerCase()}`}\n className={styles.input}\n disabled={disabled}\n id={fieldId}\n placeholder={value.length ? \"\" : placeholder}\n type=\"text\"\n value={draft}\n onBlur={commitDraft}\n onChange={(event) => setDraft(event.target.value)}\n onKeyDown={handleKeyDown}\n />\n ) : null}\n </div>\n </FieldShell>\n );\n}\n\nexport const ChipInputField = ChipInput;\n",".wrap {\n display: grid;\n gap: 10px;\n}\n\n.topRow {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n}\n\n.fieldLabel {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--opus-text);\n font-size: 0.86rem;\n font-weight: 600;\n line-height: 1.2;\n}\n\n.value {\n color: var(--opus-text);\n font-size: 0.92rem;\n font-weight: 700;\n font-variant-numeric: tabular-nums;\n}\n\n.footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n color: var(--opus-muted);\n font-size: 0.78rem;\n}\n\n.slider {\n appearance: none;\n width: 100%;\n height: 28px;\n margin: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.slider::-webkit-slider-runnable-track {\n height: 8px;\n border-radius: 999px;\n background: linear-gradient(\n to right,\n var(--opus-accent) 0%,\n var(--opus-accent) var(--range-progress),\n color-mix(in srgb, var(--opus-muted) 24%, var(--opus-input-bg)) var(--range-progress),\n color-mix(in srgb, var(--opus-muted) 24%, var(--opus-input-bg)) 100%\n );\n}\n\n.slider::-webkit-slider-thumb {\n appearance: none;\n width: 22px;\n height: 22px;\n margin-top: -7px;\n border: 3px solid var(--opus-accent);\n border-radius: 999px;\n background: #ffffff;\n box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);\n}\n\n.slider::-moz-range-track {\n height: 8px;\n border: 0;\n border-radius: 999px;\n background: color-mix(in srgb, var(--opus-muted) 24%, var(--opus-input-bg));\n}\n\n.slider::-moz-range-progress {\n height: 8px;\n border-radius: 999px;\n background: var(--opus-accent);\n}\n\n.slider::-moz-range-thumb {\n width: 22px;\n height: 22px;\n border: 3px solid var(--opus-accent);\n border-radius: 999px;\n background: #ffffff;\n box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);\n}\n\n.slider:focus-visible {\n outline: none;\n}\n\n.slider:focus-visible::-webkit-slider-thumb {\n box-shadow:\n 0 0 0 4px color-mix(in srgb, var(--opus-accent) 22%, transparent),\n 0 4px 14px rgba(0, 0, 0, 0.18);\n}\n\n.error::-webkit-slider-runnable-track {\n background: linear-gradient(\n to right,\n color-mix(in srgb, var(--opus-error) 82%, var(--opus-accent)) 0%,\n color-mix(in srgb, var(--opus-error) 82%, var(--opus-accent)) var(--range-progress),\n color-mix(in srgb, var(--opus-muted) 24%, var(--opus-input-bg)) var(--range-progress),\n color-mix(in srgb, var(--opus-muted) 24%, var(--opus-input-bg)) 100%\n );\n}\n\n.error {\n outline: 2px solid color-mix(in srgb, var(--opus-error) 36%, transparent);\n outline-offset: 2px;\n border-radius: 999px;\n}\n","import styles from \"./RangeField.module.css\";\nimport { Tooltip } from \"@/components/Tooltip\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport { formatByStep } from \"@/components/fields/numericUtils\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\nimport type { ChangeEventHandler, CSSProperties } from \"react\";\n\ntype RangeFieldProps = {\n error?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n max?: number;\n min?: number;\n mode?: FieldMode;\n step?: number;\n value: number;\n onChange: ChangeEventHandler<HTMLInputElement>;\n};\n\nexport function RangeField({\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n max = 100,\n min = 0,\n mode = \"stacked\",\n step = 1,\n value,\n onChange,\n}: RangeFieldProps) {\n const shellAria = useFieldShellAria();\n const progress = ((value - min) / (max - min)) * 100;\n const rangeStyle = { \"--range-progress\": `${progress}%` } as CSSProperties;\n const formattedValue = formatByStep(value, step);\n const formattedMin = formatByStep(min, step);\n const formattedMax = formatByStep(max, step);\n\n return (\n <FieldShell\n error={error}\n id={id}\n label={label}\n labelPosition={labelPosition}\n labelTag=\"div\"\n labelVisuallyHidden\n mode={mode}\n >\n <div className={styles.wrap} style={rangeStyle}>\n <div className={styles.topRow}>\n <label className={styles.fieldLabel} htmlFor={id}>\n <span>{label}</span>\n {help ? <Tooltip content={help} label={`Help for ${label}`} /> : null}\n </label>\n <span className={styles.value}>{formattedValue}%</span>\n </div>\n <input\n aria-invalid={error ? \"true\" : undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={`${formattedValue}%`}\n className={`${styles.slider} ${error ? styles.error : \"\"}`}\n id={id}\n max={max}\n min={min}\n onChange={onChange}\n step={step}\n style={rangeStyle}\n type=\"range\"\n value={value}\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n />\n <div className={styles.footer}>\n <span>{formattedMin}%</span>\n <span>{formattedMax}%</span>\n </div>\n </div>\n </FieldShell>\n );\n}\n",".wrap {\n position: relative;\n}\n\n.wrap::after {\n content: \"\";\n position: absolute;\n top: 50%;\n right: 12px;\n width: 8px;\n height: 8px;\n border-right: 2px solid var(--opus-muted);\n border-bottom: 2px solid var(--opus-muted);\n transform: translateY(-60%) rotate(45deg);\n pointer-events: none;\n}\n\n.select {\n width: 100%;\n min-height: var(--opus-control-height);\n padding: 0 32px 0 10px;\n border: 1px solid var(--opus-border-strong);\n border-radius: var(--opus-input-radius);\n background: var(--opus-input-bg);\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 14px 30px rgba(0, 0, 0, 0.06);\n appearance: none;\n}\n\n.select:focus {\n border-color: var(--opus-accent);\n box-shadow:\n 0 0 0 4px color-mix(in srgb, var(--opus-accent) 22%, transparent),\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.error {\n border-color: color-mix(in srgb, var(--opus-error) 75%, transparent);\n}\n","import styles from \"./SelectField.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\nimport type { ChangeEventHandler } from \"react\";\n\ntype SelectFieldProps = {\n error?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n options: string[];\n required?: boolean;\n value: string;\n onChange: ChangeEventHandler<HTMLSelectElement>;\n};\n\nexport function SelectField({\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n mode = \"stacked\",\n options,\n required,\n value,\n onChange,\n}: SelectFieldProps) {\n const shellAria = useFieldShellAria();\n\n return (\n <FieldShell\n error={error}\n help={help}\n id={id}\n label={label}\n labelPosition={labelPosition}\n mode={mode}\n required={required}\n >\n <div className={styles.wrap}>\n <select\n aria-invalid={error ? \"true\" : undefined}\n className={`${styles.select} ${error ? styles.error : \"\"}`}\n id={id}\n onChange={onChange}\n value={value}\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n >\n {options.map((option) => (\n <option key={option}>{option}</option>\n ))}\n </select>\n </div>\n </FieldShell>\n );\n}\n",".shell {\n align-items: center;\n}\n\n.toggle {\n display: flex;\n align-items: center;\n gap: 12px;\n min-height: var(--opus-control-height);\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n}\n\n.track {\n appearance: none;\n position: relative;\n width: 50px;\n height: var(--opus-control-height);\n margin: 0;\n border-radius: 999px;\n border: 1px solid var(--opus-border-strong);\n background: color-mix(in srgb, var(--opus-muted) 24%, transparent);\n cursor: pointer;\n box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05);\n}\n\n.track::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 4px;\n width: 20px;\n height: 20px;\n border-radius: 999px;\n background: linear-gradient(180deg, #ffffff, #d7dff9);\n transform: translateY(-50%);\n transition: transform 160ms ease;\n}\n\n.track:checked {\n background: linear-gradient(135deg, var(--opus-accent), color-mix(in srgb, var(--opus-accent) 40%, #00d2ff));\n}\n\n.track:checked::before {\n transform: translate(22px, -50%);\n}\n\n.error {\n outline: 2px solid color-mix(in srgb, var(--opus-error) 36%, transparent);\n outline-offset: 2px;\n}\n","import styles from \"./SwitchField.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\nimport type { ChangeEventHandler } from \"react\";\n\ntype SwitchFieldProps = {\n checked: boolean;\n error?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n onChange: ChangeEventHandler<HTMLInputElement>;\n};\n\nexport function SwitchField({\n checked,\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n mode = \"flagged\",\n onChange,\n}: SwitchFieldProps) {\n const shellAria = useFieldShellAria();\n\n return (\n <FieldShell\n className={styles.shell}\n error={error}\n fitContent={mode === \"flagged\"}\n flaggedAlign=\"center\"\n help={help}\n id={id}\n label={label}\n labelPosition={labelPosition}\n labelTag=\"label\"\n mode={mode}\n >\n <div className={styles.toggle}>\n <input\n aria-checked={checked}\n aria-invalid={error ? \"true\" : undefined}\n className={`${styles.track} ${error ? styles.error : \"\"}`}\n checked={checked}\n id={id}\n onChange={onChange}\n role=\"switch\"\n type=\"checkbox\"\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n />\n </div>\n </FieldShell>\n );\n}\n",".field {\n display: grid;\n gap: 6px;\n width: 100%;\n}\n\n.inputWrap {\n position: relative;\n width: 100%;\n}\n\n.textarea {\n width: 100%;\n min-height: 96px;\n padding: 8px 10px;\n border: 1px solid var(--opus-border-strong);\n border-radius: var(--opus-input-radius);\n background: var(--opus-input-bg);\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n resize: vertical;\n line-height: 1.5;\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.withCount {\n padding-bottom: 28px;\n}\n\n.textarea:focus {\n border-color: var(--opus-accent);\n box-shadow:\n 0 0 0 4px color-mix(in srgb, var(--opus-accent) 22%, transparent),\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.textarea::placeholder {\n color: color-mix(in srgb, var(--opus-muted) 80%, transparent);\n}\n\n.error {\n border-color: color-mix(in srgb, var(--opus-error) 75%, transparent);\n}\n\n.inlineCount {\n position: absolute;\n right: 10px;\n bottom: 8px;\n color: color-mix(in srgb, var(--opus-muted) 82%, transparent);\n font-size: 0.76rem;\n font-style: italic;\n line-height: 1;\n pointer-events: none;\n}\n\n.footer {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n}\n\n.footerError {\n margin: 0;\n color: var(--opus-error);\n font-size: 0.78rem;\n line-height: 1.4;\n}\n\n.externalCount {\n margin-left: auto;\n color: var(--opus-text);\n font-size: 0.78rem;\n font-weight: 600;\n line-height: 1.4;\n white-space: nowrap;\n}\n","import { useId, type ChangeEventHandler } from \"react\";\nimport styles from \"./TextAreaField.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\n\ntype TextAreaFieldProps = {\n error?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n maxChars?: number;\n mode?: FieldMode;\n placeholder?: string;\n required?: boolean;\n value: string;\n onChange: ChangeEventHandler<HTMLTextAreaElement>;\n};\n\nexport function TextAreaField({\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n maxChars,\n mode = \"stacked\",\n placeholder,\n required,\n value,\n onChange,\n}: TextAreaFieldProps) {\n const shellAria = useFieldShellAria();\n const charCountId = useId();\n const charCount = value.length;\n const showCharCount = maxChars !== undefined;\n const describedBy = [shellAria?.describedBy, showCharCount ? charCountId : undefined]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <FieldShell\n error={error}\n flaggedAlign=\"start\"\n help={help}\n id={id}\n label={label}\n labelPosition={labelPosition}\n mode={mode}\n required={required}\n suppressErrorDisplay={showCharCount}\n >\n <div className={styles.field}>\n <div className={styles.inputWrap}>\n <textarea\n aria-invalid={error ? \"true\" : undefined}\n className={[\n styles.textarea,\n error ? styles.error : \"\",\n showCharCount ? styles.withCount : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n id={id}\n maxLength={maxChars}\n onChange={onChange}\n placeholder={placeholder}\n value={value}\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n aria-describedby={describedBy || undefined}\n />\n {showCharCount ? (\n <span aria-hidden=\"true\" className={styles.inlineCount}>\n {charCount} / {maxChars}\n </span>\n ) : null}\n </div>\n {showCharCount ? (\n <div className={styles.footer}>\n {error ? (\n <p className={styles.footerError} id={shellAria?.errorId} role=\"alert\">\n {error}\n </p>\n ) : (\n <span />\n )}\n <span className={styles.externalCount} id={charCountId}>\n {charCount} / {maxChars} characters\n </span>\n </div>\n ) : null}\n </div>\n </FieldShell>\n );\n}\n",".input {\n width: 100%;\n min-height: var(--opus-control-height);\n padding: 0 10px;\n border: 1px solid var(--opus-border-strong);\n border-radius: var(--opus-input-radius);\n background: var(--opus-input-bg);\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 14px 30px rgba(0, 0, 0, 0.06);\n transition:\n border-color 160ms ease,\n box-shadow 160ms ease;\n}\n\n.input:focus {\n border-color: var(--opus-accent);\n box-shadow:\n 0 0 0 4px color-mix(in srgb, var(--opus-accent) 22%, transparent),\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.input::placeholder {\n color: color-mix(in srgb, var(--opus-muted) 80%, transparent);\n}\n\n.error {\n border-color: color-mix(in srgb, var(--opus-error) 75%, transparent);\n}\n","import styles from \"./TextField.module.css\";\nimport { FieldShell, fieldInputAriaProps, useFieldShellAria } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\nimport type { ChangeEventHandler } from \"react\";\n\ntype TextFieldProps = {\n error?: string;\n help?: string;\n id: string;\n label: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n placeholder?: string;\n required?: boolean;\n type: \"email\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"url\";\n value: string;\n onChange: ChangeEventHandler<HTMLInputElement>;\n};\n\nexport function TextField({\n error,\n help,\n id,\n label,\n labelPosition = \"left\",\n mode = \"stacked\",\n placeholder,\n required,\n type,\n value,\n onChange,\n}: TextFieldProps) {\n const shellAria = useFieldShellAria();\n\n return (\n <FieldShell\n error={error}\n help={help}\n id={id}\n label={label}\n labelPosition={labelPosition}\n mode={mode}\n required={required}\n >\n <input\n aria-invalid={error ? \"true\" : undefined}\n className={`${styles.input} ${error ? styles.error : \"\"}`}\n id={id}\n placeholder={placeholder}\n onChange={onChange}\n type={type}\n value={value}\n {...fieldInputAriaProps(shellAria, { invalid: Boolean(error) })}\n />\n </FieldShell>\n );\n}\n","import { config } from \"@fortawesome/fontawesome-svg-core\";\n\nconfig.autoAddCss = false;\n",".toggle {\n --theme-option-size: calc(var(--opus-control-height) + 2px);\n --theme-option-gap: 2px;\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: var(--theme-option-gap);\n min-height: var(--opus-control-height);\n padding: 2px;\n border: 1px solid var(--opus-border-strong);\n border-radius: 999px;\n background: color-mix(in srgb, var(--opus-input-bg) 88%, transparent);\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 8px 20px rgba(0, 0, 0, 0.06);\n transition:\n background 220ms ease,\n border-color 220ms ease,\n box-shadow 220ms ease;\n}\n\n.indicator {\n position: absolute;\n top: 2px;\n left: 2px;\n z-index: 0;\n width: var(--theme-option-size);\n height: calc(var(--opus-control-height) - 4px);\n border-radius: 999px;\n background: linear-gradient(\n 135deg,\n var(--opus-accent),\n color-mix(in srgb, var(--opus-accent) 40%, #00d2ff)\n );\n box-shadow: 0 8px 18px color-mix(in srgb, var(--opus-accent) 28%, transparent);\n transform: translateX(0);\n transition:\n transform 220ms cubic-bezier(0.4, 0, 0.2, 1),\n background 220ms ease,\n box-shadow 220ms ease;\n}\n\n.indicator[data-active=\"dark\"] {\n transform: translateX(calc(var(--theme-option-size) + var(--theme-option-gap)));\n}\n\n.option {\n position: relative;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--theme-option-size);\n height: calc(var(--opus-control-height) - 4px);\n border: 0;\n border-radius: 999px;\n background: transparent;\n color: var(--opus-muted);\n cursor: pointer;\n font-size: 0.82rem;\n transition: color 220ms ease;\n}\n\n.option:hover {\n color: var(--opus-text);\n}\n\n.option.active {\n color: #ffffff;\n}\n\n.option svg {\n width: 0.9rem;\n height: 0.9rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .indicator {\n transition: none;\n }\n}\n","import \"@/lib/fontawesome\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faMoon, faSun } from \"@fortawesome/free-solid-svg-icons\";\nimport styles from \"./ThemeToggleField.module.css\";\nimport { FieldShell } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition, Theme } from \"@/components/fields/types\";\n\ntype ThemeToggleFieldProps = {\n className?: string;\n id: string;\n label?: string;\n labelPosition?: LabelPosition;\n labelVisuallyHidden?: boolean;\n mode?: FieldMode;\n value: Theme;\n onChange: (value: Theme) => void;\n};\n\nexport function ThemeToggleField({\n className,\n id,\n label = \"Theme\",\n labelPosition = \"left\",\n labelVisuallyHidden,\n mode = \"flagged\",\n value,\n onChange,\n}: ThemeToggleFieldProps) {\n return (\n <FieldShell\n className={className}\n fitContent\n flaggedAlign=\"center\"\n id={id}\n label={label}\n labelPosition={labelPosition}\n labelTag=\"div\"\n labelVisuallyHidden={labelVisuallyHidden}\n mode={mode}\n >\n <div className={styles.toggle} role=\"group\" aria-label={label}>\n <span\n aria-hidden=\"true\"\n className={styles.indicator}\n data-active={value}\n />\n <button\n aria-label=\"Light theme\"\n aria-pressed={value === \"light\"}\n className={`${styles.option} ${value === \"light\" ? styles.active : \"\"}`}\n onClick={() => onChange(\"light\")}\n type=\"button\"\n >\n <FontAwesomeIcon aria-hidden=\"true\" icon={faSun} />\n </button>\n <button\n aria-label=\"Dark theme\"\n aria-pressed={value === \"dark\"}\n className={`${styles.option} ${value === \"dark\" ? styles.active : \"\"}`}\n onClick={() => onChange(\"dark\")}\n type=\"button\"\n >\n <FontAwesomeIcon aria-hidden=\"true\" icon={faMoon} />\n </button>\n </div>\n </FieldShell>\n );\n}\n","import type { AlertStatus } from \"@/components/fields/types\";\n\ntype AlertStatusIconProps = {\n markClassName: string;\n status: AlertStatus;\n svgClassName: string;\n};\n\nexport function AlertStatusIcon({ markClassName, status, svgClassName }: AlertStatusIconProps) {\n if (status === \"error\" || status === \"warning\") {\n return <span className={markClassName}>!</span>;\n }\n\n if (status === \"info\") {\n return <span className={markClassName}>i</span>;\n }\n\n if (status === \"success\") {\n return (\n <svg aria-hidden=\"true\" className={svgClassName} viewBox=\"0 0 16 16\">\n <path\n d=\"M4 8.5 6.8 11.2 12 5.8\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n );\n }\n\n return null;\n}\n","\"use client\";\n\nimport { createContext, useContext, type ReactNode } from \"react\";\nimport type { Theme } from \"@/components/fields/types\";\n\nconst OpusThemeContext = createContext<Theme | null>(null);\n\nfunction resolveDocumentTheme(): Theme {\n if (typeof document === \"undefined\") {\n return \"dark\";\n }\n\n const themed = document.querySelector('[data-theme=\"light\"], [data-theme=\"dark\"]');\n\n return themed?.getAttribute(\"data-theme\") === \"light\" ? \"light\" : \"dark\";\n}\n\nexport function useOpusTheme(): Theme {\n const theme = useContext(OpusThemeContext);\n\n if (theme) {\n return theme;\n }\n\n return resolveDocumentTheme();\n}\n\ntype OpusThemeProviderProps = {\n children: ReactNode;\n theme: Theme;\n};\n\nexport function OpusThemeProvider({ children, theme }: OpusThemeProviderProps) {\n return <OpusThemeContext.Provider value={theme}>{children}</OpusThemeContext.Provider>;\n}\n",".alert {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n gap: 14px;\n width: 100%;\n padding: 14px 16px;\n border: 1px solid var(--status-border);\n border-radius: var(--opus-input-radius-large);\n background: var(--status-bg);\n box-shadow: 0 10px 28px color-mix(in srgb, var(--status-border) 12%, transparent);\n}\n\n.iconFlagged {\n align-items: start;\n}\n\n.iconFlagged .icon {\n margin-top: 1px;\n}\n\n.alert[data-status=\"error\"] {\n --status-bg: #fff5f5;\n --status-border: #f87171;\n --status-icon-bg: #ef4444;\n --status-icon-fg: #ffffff;\n --status-title: #991b1b;\n --status-body: #312e81;\n --status-dismiss: #312e81;\n}\n\n.alert[data-status=\"success\"] {\n --status-bg: #f0fdf4;\n --status-border: #4ade80;\n --status-icon-bg: #16a34a;\n --status-icon-fg: #ffffff;\n --status-title: #166534;\n --status-body: #14532d;\n --status-dismiss: #14532d;\n}\n\n.alert[data-status=\"warning\"] {\n --status-bg: #fffbeb;\n --status-border: #fbbf24;\n --status-icon-bg: #d97706;\n --status-icon-fg: #ffffff;\n --status-title: #92400e;\n --status-body: #78350f;\n --status-dismiss: #78350f;\n}\n\n.alert[data-status=\"info\"] {\n --status-bg: #eff6ff;\n --status-border: #60a5fa;\n --status-icon-bg: #2563eb;\n --status-icon-fg: #ffffff;\n --status-title: #1e40af;\n --status-body: #1e3a8a;\n --status-dismiss: #1e3a8a;\n}\n\n.alert[data-theme=\"dark\"][data-status=\"error\"] {\n --status-bg: color-mix(in srgb, #ef4444 14%, var(--opus-panel));\n --status-border: color-mix(in srgb, #f87171 55%, transparent);\n --status-title: #fecaca;\n --status-body: color-mix(in srgb, var(--opus-text) 88%, #fecaca);\n --status-dismiss: color-mix(in srgb, var(--opus-text) 82%, #fecaca);\n}\n\n.alert[data-theme=\"dark\"][data-status=\"success\"] {\n --status-bg: color-mix(in srgb, #16a34a 14%, var(--opus-panel));\n --status-border: color-mix(in srgb, #4ade80 55%, transparent);\n --status-title: #bbf7d0;\n --status-body: color-mix(in srgb, var(--opus-text) 88%, #bbf7d0);\n --status-dismiss: color-mix(in srgb, var(--opus-text) 82%, #bbf7d0);\n}\n\n.alert[data-theme=\"dark\"][data-status=\"warning\"] {\n --status-bg: color-mix(in srgb, #d97706 14%, var(--opus-panel));\n --status-border: color-mix(in srgb, #fbbf24 55%, transparent);\n --status-title: #fde68a;\n --status-body: color-mix(in srgb, var(--opus-text) 88%, #fde68a);\n --status-dismiss: color-mix(in srgb, var(--opus-text) 82%, #fde68a);\n}\n\n.alert[data-theme=\"dark\"][data-status=\"info\"] {\n --status-bg: color-mix(in srgb, #2563eb 14%, var(--opus-panel));\n --status-border: color-mix(in srgb, #60a5fa 55%, transparent);\n --status-title: #bfdbfe;\n --status-body: color-mix(in srgb, var(--opus-text) 88%, #bfdbfe);\n --status-dismiss: color-mix(in srgb, var(--opus-text) 82%, #bfdbfe);\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 999px;\n background: var(--status-icon-bg);\n color: var(--status-icon-fg);\n flex-shrink: 0;\n}\n\n.iconSvg {\n width: 20px;\n height: 20px;\n}\n\n.iconMark {\n font-size: 1.35rem;\n font-weight: 800;\n line-height: 1;\n}\n\n.content {\n display: grid;\n gap: 4px;\n min-width: 0;\n}\n\n.title {\n margin: 0;\n color: var(--status-title);\n font-size: 0.92rem;\n font-weight: 700;\n line-height: 1.35;\n}\n\n.description {\n margin: 0;\n color: var(--status-body);\n font-size: 0.84rem;\n line-height: 1.45;\n}\n\n.dismiss {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n align-self: start;\n width: 28px;\n height: 28px;\n padding: 0;\n border: 0;\n border-radius: 999px;\n background: transparent;\n color: var(--status-dismiss);\n cursor: pointer;\n flex-shrink: 0;\n transition:\n background 160ms ease,\n color 160ms ease;\n}\n\n.dismiss:hover {\n background: color-mix(in srgb, var(--status-border) 16%, transparent);\n}\n\n.dismiss:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-border) 28%, transparent);\n}\n\n.dismissIcon {\n width: 16px;\n height: 16px;\n}\n","\"use client\";\n\nimport type { AlertStatus } from \"@/components/fields/types\";\nimport { AlertStatusIcon } from \"@/components/AlertStatusIcon\";\nimport { useOpusTheme } from \"@/components/OpusThemeProvider\";\nimport styles from \"./Alert.module.css\";\n\ntype AlertProps = {\n description: string;\n dismissible?: boolean;\n iconFlagged?: boolean;\n onDismiss?: () => void;\n status?: AlertStatus;\n title: string;\n};\n\nexport function Alert({\n description,\n dismissible = true,\n iconFlagged = true,\n onDismiss,\n status = \"error\",\n title,\n}: AlertProps) {\n const liveRole = status === \"error\" || status === \"warning\" ? \"alert\" : \"status\";\n const theme = useOpusTheme();\n\n return (\n <div\n className={`${styles.alert} ${iconFlagged ? styles.iconFlagged : \"\"}`}\n data-status={status}\n data-theme={theme}\n role={liveRole}\n >\n <div aria-hidden=\"true\" className={styles.icon}>\n <AlertStatusIcon markClassName={styles.iconMark} status={status} svgClassName={styles.iconSvg} />\n </div>\n <div className={styles.content}>\n <p className={styles.title}>{title}</p>\n <p className={styles.description}>{description}</p>\n </div>\n {dismissible ? (\n <button\n aria-label=\"Dismiss alert\"\n className={styles.dismiss}\n onClick={onDismiss}\n type=\"button\"\n >\n <svg aria-hidden=\"true\" className={styles.dismissIcon} viewBox=\"0 0 16 16\">\n <path\n d=\"M4.5 4.5 11.5 11.5M11.5 4.5 4.5 11.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.75\"\n />\n </svg>\n </button>\n ) : null}\n </div>\n );\n}\n","\"use client\";\n\nimport { useEffect, useRef, type RefObject } from \"react\";\n\nconst FOCUSABLE_SELECTOR = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"textarea:not([disabled])\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"[tabindex]:not([tabindex='-1'])\",\n].join(\", \");\n\nexport function getFocusableElements(container: HTMLElement) {\n return Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (element) => element.getAttribute(\"aria-hidden\") !== \"true\",\n );\n}\n\ntype OverlayAccessibilityOptions = {\n initialFocusRef?: RefObject<HTMLElement | null>;\n lockScroll?: boolean;\n restoreFocus?: boolean;\n trapFocus?: boolean;\n};\n\nexport function useOverlayAccessibility(\n active: boolean,\n containerRef: RefObject<HTMLElement | null>,\n {\n initialFocusRef,\n lockScroll = true,\n restoreFocus = true,\n trapFocus = true,\n }: OverlayAccessibilityOptions = {},\n) {\n const previouslyFocusedRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!active) {\n return;\n }\n\n previouslyFocusedRef.current = document.activeElement as HTMLElement | null;\n\n if (!lockScroll) {\n return;\n }\n\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.body.style.overflow = previousOverflow;\n };\n }, [active, lockScroll]);\n\n useEffect(() => {\n if (!active) {\n return;\n }\n\n const frame = window.requestAnimationFrame(() => {\n const initialTarget = initialFocusRef?.current;\n if (initialTarget) {\n initialTarget.focus();\n return;\n }\n\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n getFocusableElements(container)[0]?.focus();\n });\n\n return () => window.cancelAnimationFrame(frame);\n }, [active, containerRef, initialFocusRef]);\n\n useEffect(() => {\n if (!active || !restoreFocus) {\n return;\n }\n\n return () => {\n previouslyFocusedRef.current?.focus?.();\n };\n }, [active, restoreFocus]);\n\n useEffect(() => {\n if (!active || !trapFocus) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Tab\" || !containerRef.current) {\n return;\n }\n\n const focusable = getFocusableElements(containerRef.current);\n if (focusable.length === 0) {\n return;\n }\n\n const first = focusable[0]!;\n const last = focusable.at(-1)!;\n const current = document.activeElement;\n\n if (event.shiftKey && current === first) {\n event.preventDefault();\n last.focus();\n return;\n }\n\n if (!event.shiftKey && current === last) {\n event.preventDefault();\n first.focus();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [active, containerRef, trapFocus]);\n}\n",".backdrop {\n position: fixed;\n inset: 0;\n z-index: 70;\n display: grid;\n place-items: center;\n padding: 24px;\n background: var(--opus-overlay-backdrop);\n -webkit-backdrop-filter: blur(var(--opus-overlay-blur)) saturate(var(--opus-overlay-saturate));\n backdrop-filter: blur(var(--opus-overlay-blur)) saturate(var(--opus-overlay-saturate));\n}\n\n.backdrop[data-phase=\"opening\"] {\n animation: backdropIn 180ms ease-out both;\n}\n\n.backdrop[data-phase=\"closing\"] {\n animation: backdropOut 180ms ease-in both;\n}\n\n.backdrop[data-dismissible=\"false\"] {\n cursor: not-allowed;\n}\n\n.dialog {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n gap: 14px;\n width: min(100%, 520px);\n padding: 18px;\n border: 1px solid var(--dialog-border);\n border-radius: var(--opus-input-radius-large);\n background: var(--dialog-bg);\n box-shadow:\n 0 24px 80px color-mix(in srgb, #020617 32%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--dialog-border) 18%, transparent);\n cursor: default;\n}\n\n.dialog[data-phase=\"opening\"] {\n animation: dialogIn 220ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.dialog[data-phase=\"closing\"] {\n animation: dialogOut 180ms ease-in both;\n}\n\n.dialog[data-status=\"error\"] {\n --dialog-bg: color-mix(in srgb, #ef4444 10%, var(--opus-panel));\n --dialog-border: #ef4444;\n --dialog-icon-bg: #ef4444;\n --dialog-icon-fg: #ffffff;\n --dialog-title: #991b1b;\n}\n\n.dialog[data-status=\"success\"] {\n --dialog-bg: color-mix(in srgb, #16a34a 10%, var(--opus-panel));\n --dialog-border: #16a34a;\n --dialog-icon-bg: #16a34a;\n --dialog-icon-fg: #ffffff;\n --dialog-title: #166534;\n}\n\n.dialog[data-status=\"warning\"] {\n --dialog-bg: color-mix(in srgb, #d97706 10%, var(--opus-panel));\n --dialog-border: #d97706;\n --dialog-icon-bg: #d97706;\n --dialog-icon-fg: #ffffff;\n --dialog-title: #92400e;\n}\n\n.dialog[data-status=\"info\"] {\n --dialog-bg: color-mix(in srgb, #2563eb 10%, var(--opus-panel));\n --dialog-border: #2563eb;\n --dialog-icon-bg: #2563eb;\n --dialog-icon-fg: #ffffff;\n --dialog-title: #1e40af;\n}\n\n:global([data-theme=\"dark\"]) .dialog[data-status=\"error\"] {\n --dialog-title: #fecaca;\n}\n\n:global([data-theme=\"dark\"]) .dialog[data-status=\"success\"] {\n --dialog-title: #bbf7d0;\n}\n\n:global([data-theme=\"dark\"]) .dialog[data-status=\"warning\"] {\n --dialog-title: #fde68a;\n}\n\n:global([data-theme=\"dark\"]) .dialog[data-status=\"info\"] {\n --dialog-title: #bfdbfe;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 999px;\n background: var(--dialog-icon-bg);\n color: var(--dialog-icon-fg);\n}\n\n.iconSvg {\n width: 20px;\n height: 20px;\n}\n\n.iconMark {\n font-size: 1.35rem;\n font-weight: 800;\n line-height: 1;\n}\n\n.content {\n display: grid;\n gap: 10px;\n min-width: 0;\n}\n\n.title {\n margin: 0;\n color: var(--dialog-title);\n font-size: 1rem;\n font-weight: 800;\n line-height: 1.25;\n}\n\n.description,\n.body {\n margin: 0;\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n line-height: 1.5;\n}\n\n.body {\n color: var(--opus-muted);\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: 8px;\n padding-top: 4px;\n}\n\n@media (max-width: 560px) {\n .dialog {\n grid-template-columns: 1fr;\n }\n\n .actions {\n justify-content: stretch;\n }\n\n .actions > * {\n flex: 1;\n }\n}\n\n@keyframes backdropIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes backdropOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes dialogIn {\n from {\n opacity: 0;\n transform: translateY(12px) scale(0.97);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes dialogOut {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n to {\n opacity: 0;\n transform: translateY(8px) scale(0.98);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .dialog {\n animation: none;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n .backdrop {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background: var(--opus-overlay-backdrop-solid);\n }\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport type { DialogActionSet, AlertStatus } from \"@/components/fields/types\";\nimport { AlertStatusIcon } from \"@/components/AlertStatusIcon\";\nimport { Button } from \"@/components/fields/Button\";\nimport type { ButtonVariant } from \"@/components/fields/Button\";\nimport { useOverlayAccessibility } from \"@/lib/a11y/useOverlayAccessibility\";\nimport styles from \"./Dialog.module.css\";\n\nexport type DialogResult = \"confirm\" | \"cancel\" | \"dismiss\";\ntype DialogPhase = \"opening\" | \"closing\";\n\nconst EXIT_ANIMATION_MS = 180;\n\ntype DialogProps = {\n actionSet?: DialogActionSet;\n children?: ReactNode;\n description: string;\n dismissOnBackdrop?: boolean;\n dismissOnEscape?: boolean;\n onClose: (result: DialogResult) => void;\n open: boolean;\n status?: AlertStatus;\n title: string;\n};\n\ntype DialogAction = {\n label: string;\n result: DialogResult;\n variant: ButtonVariant;\n};\n\nfunction statusButtonVariant(status: AlertStatus): ButtonVariant {\n if (status === \"error\") {\n return \"danger\";\n }\n\n return status;\n}\n\nfunction getActions(actionSet: DialogActionSet, status: AlertStatus): DialogAction[] {\n const confirmVariant = statusButtonVariant(status);\n\n if (actionSet === \"ok\") {\n return [{ label: \"OK\", result: \"confirm\", variant: confirmVariant }];\n }\n\n if (actionSet === \"yes-no\") {\n return [\n { label: \"No\", result: \"cancel\", variant: \"secondary\" },\n { label: \"Yes\", result: \"confirm\", variant: confirmVariant },\n ];\n }\n\n if (actionSet === \"delete\") {\n return [\n { label: \"Cancel\", result: \"cancel\", variant: \"secondary\" },\n { label: \"Delete\", result: \"confirm\", variant: confirmVariant },\n ];\n }\n\n return [\n { label: \"Cancel\", result: \"cancel\", variant: \"secondary\" },\n { label: \"OK\", result: \"confirm\", variant: confirmVariant },\n ];\n}\n\nexport function Dialog({\n actionSet = \"ok-cancel\",\n children,\n description,\n dismissOnBackdrop = true,\n dismissOnEscape = true,\n onClose,\n open,\n status = \"info\",\n title,\n}: DialogProps) {\n const titleId = useId();\n const descriptionId = useId();\n const panelRef = useRef<HTMLElement>(null);\n const [rendered, setRendered] = useState(open);\n const [phase, setPhase] = useState<DialogPhase>(\"opening\");\n\n useOverlayAccessibility(open && rendered, panelRef);\n\n useEffect(() => {\n let timeout: number | undefined;\n const frame = window.requestAnimationFrame(() => {\n if (open) {\n setRendered(true);\n setPhase(\"opening\");\n return;\n }\n\n setPhase(\"closing\");\n timeout = window.setTimeout(() => setRendered(false), EXIT_ANIMATION_MS);\n });\n\n return () => {\n window.cancelAnimationFrame(frame);\n if (timeout) {\n window.clearTimeout(timeout);\n }\n };\n }, [open]);\n\n useEffect(() => {\n if (!open || !dismissOnEscape) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose(\"dismiss\");\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [dismissOnEscape, onClose, open]);\n\n if (!rendered) {\n return null;\n }\n\n const actions = getActions(actionSet, status);\n\n return (\n <div\n className={styles.backdrop}\n data-dismissible={dismissOnBackdrop}\n data-phase={phase}\n onMouseDown={(event) => {\n if (event.currentTarget === event.target && dismissOnBackdrop) {\n onClose(\"dismiss\");\n }\n }}\n >\n <section\n ref={panelRef}\n aria-describedby={descriptionId}\n aria-labelledby={titleId}\n aria-modal=\"true\"\n className={styles.dialog}\n data-phase={phase}\n data-status={status}\n role=\"dialog\"\n >\n <div aria-hidden=\"true\" className={styles.icon}>\n <AlertStatusIcon markClassName={styles.iconMark} status={status} svgClassName={styles.iconSvg} />\n </div>\n <div className={styles.content}>\n <h2 className={styles.title} id={titleId}>\n {title}\n </h2>\n <p className={styles.description} id={descriptionId}>\n <span className={styles.visuallyHidden}>{status}: </span>\n {description}\n </p>\n {children ? <div className={styles.body}>{children}</div> : null}\n <div className={styles.actions}>\n {actions.map((action) => (\n <Button key={action.label} variant={action.variant} onClick={() => onClose(action.result)}>\n {action.label}\n </Button>\n ))}\n </div>\n </div>\n </section>\n </div>\n );\n}\n",".backdrop {\n position: fixed;\n inset: 0;\n z-index: 70;\n display: grid;\n place-items: center;\n padding: 24px;\n background: var(--opus-overlay-backdrop);\n -webkit-backdrop-filter: blur(var(--opus-overlay-blur)) saturate(var(--opus-overlay-saturate));\n backdrop-filter: blur(var(--opus-overlay-blur)) saturate(var(--opus-overlay-saturate));\n}\n\n.backdrop[data-dismissible=\"false\"] {\n cursor: not-allowed;\n}\n\n.backdrop[data-phase=\"opening\"] {\n animation: modalBackdropIn 180ms ease-out both;\n}\n\n.backdrop[data-phase=\"closing\"] {\n animation: modalBackdropOut 180ms ease-in both;\n}\n\n.modal {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr) auto;\n width: min(100%, var(--modal-width));\n max-height: min(86vh, 100%);\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 22%, var(--opus-border));\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 94%, transparent);\n box-shadow:\n 0 24px 80px color-mix(in srgb, #020617 32%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n cursor: default;\n}\n\n.modal[data-size=\"small\"] {\n --modal-width: 420px;\n}\n\n.modal[data-size=\"medium\"] {\n --modal-width: 640px;\n}\n\n.modal[data-size=\"large\"] {\n --modal-width: 920px;\n}\n\n.modal[data-size=\"fullscreen\"] {\n --modal-width: min(calc(100vw - 48px), calc(100% - 48px));\n max-height: min(calc(100vh - 48px), calc(100% - 48px));\n min-height: min(calc(100vh - 48px), calc(100% - 48px));\n}\n\n.modal[data-phase=\"opening\"] {\n animation: modalPanelIn 220ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.modal[data-phase=\"closing\"] {\n animation: modalPanelOut 180ms ease-in both;\n}\n\n.header {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 16px;\n align-items: start;\n padding: 18px 18px 14px;\n border-bottom: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n}\n\n.heading {\n display: grid;\n gap: 5px;\n min-width: 0;\n}\n\n.title {\n margin: 0;\n color: var(--opus-text);\n font-size: 1rem;\n font-weight: 800;\n line-height: 1.25;\n}\n\n.description {\n margin: 0;\n color: var(--opus-muted);\n font-size: var(--opus-control-font-size);\n line-height: 1.45;\n}\n\n.close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: 1px solid color-mix(in srgb, var(--opus-border) 80%, transparent);\n border-radius: 999px;\n background: color-mix(in srgb, var(--opus-input-bg) 72%, transparent);\n color: var(--opus-muted);\n cursor: pointer;\n}\n\n.close:hover {\n border-color: color-mix(in srgb, var(--opus-accent) 42%, var(--opus-border));\n color: var(--opus-text);\n}\n\n.close:focus-visible {\n outline: 2px solid color-mix(in srgb, var(--opus-accent) 65%, transparent);\n outline-offset: 2px;\n}\n\n.closeIcon {\n width: 16px;\n height: 16px;\n}\n\n.body {\n min-height: 0;\n overflow: auto;\n padding: 18px;\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n line-height: 1.55;\n}\n\n.body p {\n margin: 0;\n}\n\n.body p + p {\n margin-top: 12px;\n}\n\n.footer {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n padding: 14px 18px 18px;\n border-top: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n}\n\n.footerContent {\n color: var(--opus-muted);\n font-size: 0.8rem;\n line-height: 1.4;\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: flex-end;\n margin-left: auto;\n}\n\n@keyframes modalBackdropIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes modalBackdropOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes modalPanelIn {\n from {\n opacity: 0;\n transform: translateY(12px) scale(0.97);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes modalPanelOut {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n to {\n opacity: 0;\n transform: translateY(8px) scale(0.98);\n }\n}\n\n@media (max-width: 560px) {\n .backdrop {\n padding: 14px;\n }\n\n .modal[data-size] {\n width: 100%;\n max-height: min(calc(100vh - 28px), calc(100% - 28px));\n }\n\n .modal[data-size=\"fullscreen\"] {\n min-height: min(calc(100vh - 28px), calc(100% - 28px));\n }\n\n .footer,\n .actions {\n align-items: stretch;\n flex-direction: column;\n }\n\n .actions,\n .actions > * {\n width: 100%;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .modal {\n animation: none;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n .backdrop {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background: var(--opus-overlay-backdrop-solid);\n }\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport type { ModalSize } from \"@/components/fields/types\";\nimport { Button } from \"@/components/fields/Button\";\nimport { useOverlayAccessibility } from \"@/lib/a11y/useOverlayAccessibility\";\nimport styles from \"./Modal.module.css\";\n\ntype ModalPhase = \"opening\" | \"closing\";\n\nconst EXIT_ANIMATION_MS = 180;\n\ntype ModalProps = {\n actions?: ReactNode;\n children: ReactNode;\n closeButton?: boolean;\n description?: string;\n dismissOnBackdrop?: boolean;\n dismissOnEscape?: boolean;\n footer?: ReactNode;\n onClose: () => void;\n open: boolean;\n size?: ModalSize;\n title: string;\n};\n\nexport function Modal({\n actions,\n children,\n closeButton = true,\n description,\n dismissOnBackdrop = true,\n dismissOnEscape = true,\n footer,\n onClose,\n open,\n size = \"medium\",\n title,\n}: ModalProps) {\n const titleId = useId();\n const descriptionId = useId();\n const panelRef = useRef<HTMLElement>(null);\n const closeRef = useRef<HTMLButtonElement>(null);\n const [rendered, setRendered] = useState(open);\n const [phase, setPhase] = useState<ModalPhase>(\"opening\");\n\n useOverlayAccessibility(open && rendered, panelRef, {\n initialFocusRef: closeButton ? closeRef : undefined,\n });\n\n useEffect(() => {\n let timeout: number | undefined;\n const frame = window.requestAnimationFrame(() => {\n if (open) {\n setRendered(true);\n setPhase(\"opening\");\n return;\n }\n\n setPhase(\"closing\");\n timeout = window.setTimeout(() => setRendered(false), EXIT_ANIMATION_MS);\n });\n\n return () => {\n window.cancelAnimationFrame(frame);\n if (timeout) {\n window.clearTimeout(timeout);\n }\n };\n }, [open]);\n\n useEffect(() => {\n if (!open || !dismissOnEscape) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [dismissOnEscape, onClose, open]);\n\n if (!rendered) {\n return null;\n }\n\n return (\n <div\n className={styles.backdrop}\n data-dismissible={dismissOnBackdrop}\n data-phase={phase}\n onMouseDown={(event) => {\n if (event.currentTarget === event.target && dismissOnBackdrop) {\n onClose();\n }\n }}\n >\n <section\n ref={panelRef}\n aria-describedby={description ? descriptionId : undefined}\n aria-labelledby={titleId}\n aria-modal=\"true\"\n className={styles.modal}\n data-phase={phase}\n data-size={size}\n role=\"dialog\"\n >\n <header className={styles.header}>\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>\n {title}\n </h2>\n {description ? (\n <p className={styles.description} id={descriptionId}>\n {description}\n </p>\n ) : null}\n </div>\n {closeButton ? (\n <button\n ref={closeRef}\n aria-label=\"Close modal\"\n className={styles.close}\n onClick={onClose}\n type=\"button\"\n >\n <svg aria-hidden=\"true\" className={styles.closeIcon} viewBox=\"0 0 16 16\">\n <path\n d=\"M4.5 4.5 11.5 11.5M11.5 4.5 4.5 11.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.75\"\n />\n </svg>\n </button>\n ) : null}\n </header>\n <div className={styles.body}>{children}</div>\n {footer || actions ? (\n <footer className={styles.footer}>\n {footer ? <div className={styles.footerContent}>{footer}</div> : null}\n {actions ? <div className={styles.actions}>{actions}</div> : null}\n </footer>\n ) : null}\n </section>\n </div>\n );\n}\n\nexport function ModalDefaultActions({ onClose }: { onClose: () => void }) {\n return (\n <>\n <Button variant=\"secondary\" onClick={onClose}>\n Cancel\n </Button>\n <Button variant=\"primary\" onClick={onClose}>\n Save changes\n </Button>\n </>\n );\n}\n",".backdrop {\n position: fixed;\n inset: 0;\n z-index: 70;\n display: flex;\n background: var(--opus-overlay-backdrop);\n -webkit-backdrop-filter: blur(var(--opus-overlay-blur)) saturate(var(--opus-overlay-saturate));\n backdrop-filter: blur(var(--opus-overlay-blur)) saturate(var(--opus-overlay-saturate));\n}\n\n.backdrop[data-side=\"left\"] {\n justify-content: flex-start;\n align-items: stretch;\n}\n\n.backdrop[data-side=\"right\"] {\n justify-content: flex-end;\n align-items: stretch;\n}\n\n.backdrop[data-side=\"top\"] {\n justify-content: stretch;\n align-items: flex-start;\n}\n\n.backdrop[data-side=\"bottom\"] {\n justify-content: stretch;\n align-items: flex-end;\n}\n\n.backdrop[data-dismissible=\"false\"] {\n cursor: not-allowed;\n}\n\n.backdrop[data-phase=\"opening\"] {\n animation: drawerBackdropIn 180ms ease-out both;\n}\n\n.backdrop[data-phase=\"closing\"] {\n animation: drawerBackdropOut 180ms ease-in both;\n}\n\n.drawer {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr) auto;\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 22%, var(--opus-border));\n background: color-mix(in srgb, var(--opus-panel) 95%, transparent);\n box-shadow:\n 0 24px 80px color-mix(in srgb, #020617 32%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n cursor: default;\n}\n\n.drawer[data-side=\"left\"],\n.drawer[data-side=\"right\"] {\n width: min(420px, calc(100% - 28px));\n height: 100%;\n}\n\n.drawer[data-side=\"top\"],\n.drawer[data-side=\"bottom\"] {\n width: 100%;\n max-height: min(520px, calc(100% - 28px));\n}\n\n.drawer[data-side=\"left\"] {\n border-left: 0;\n border-radius: 0 var(--opus-input-radius-large) var(--opus-input-radius-large) 0;\n}\n\n.drawer[data-side=\"right\"] {\n border-right: 0;\n border-radius: var(--opus-input-radius-large) 0 0 var(--opus-input-radius-large);\n}\n\n.drawer[data-side=\"top\"] {\n border-top: 0;\n border-radius: 0 0 var(--opus-input-radius-large) var(--opus-input-radius-large);\n}\n\n.drawer[data-side=\"bottom\"] {\n border-bottom: 0;\n border-radius: var(--opus-input-radius-large) var(--opus-input-radius-large) 0 0;\n}\n\n.drawer[data-phase=\"opening\"][data-side=\"left\"] {\n animation: drawerInLeft 220ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.drawer[data-phase=\"closing\"][data-side=\"left\"] {\n animation: drawerOutLeft 180ms ease-in both;\n}\n\n.drawer[data-phase=\"opening\"][data-side=\"right\"] {\n animation: drawerInRight 220ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.drawer[data-phase=\"closing\"][data-side=\"right\"] {\n animation: drawerOutRight 180ms ease-in both;\n}\n\n.drawer[data-phase=\"opening\"][data-side=\"top\"] {\n animation: drawerInTop 220ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.drawer[data-phase=\"closing\"][data-side=\"top\"] {\n animation: drawerOutTop 180ms ease-in both;\n}\n\n.drawer[data-phase=\"opening\"][data-side=\"bottom\"] {\n animation: drawerInBottom 220ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.drawer[data-phase=\"closing\"][data-side=\"bottom\"] {\n animation: drawerOutBottom 180ms ease-in both;\n}\n\n.header {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 16px;\n align-items: start;\n padding: 18px 18px 14px;\n border-bottom: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n}\n\n.heading {\n display: grid;\n gap: 5px;\n min-width: 0;\n}\n\n.title {\n margin: 0;\n color: var(--opus-text);\n font-size: 1rem;\n font-weight: 800;\n line-height: 1.25;\n}\n\n.description {\n margin: 0;\n color: var(--opus-muted);\n font-size: var(--opus-control-font-size);\n line-height: 1.45;\n}\n\n.close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: 1px solid color-mix(in srgb, var(--opus-border) 80%, transparent);\n border-radius: 999px;\n background: color-mix(in srgb, var(--opus-input-bg) 72%, transparent);\n color: var(--opus-muted);\n cursor: pointer;\n}\n\n.close:hover {\n border-color: color-mix(in srgb, var(--opus-accent) 42%, var(--opus-border));\n color: var(--opus-text);\n}\n\n.close:focus-visible {\n outline: 2px solid color-mix(in srgb, var(--opus-accent) 65%, transparent);\n outline-offset: 2px;\n}\n\n.closeIcon {\n width: 16px;\n height: 16px;\n}\n\n.body {\n min-height: 0;\n overflow: auto;\n padding: 18px;\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n line-height: 1.55;\n}\n\n.body p {\n margin: 0;\n}\n\n.body p + p {\n margin-top: 12px;\n}\n\n.footer {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n padding: 14px 18px 18px;\n border-top: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n}\n\n.footerContent {\n color: var(--opus-muted);\n font-size: 0.8rem;\n line-height: 1.4;\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: flex-end;\n margin-left: auto;\n}\n\n@keyframes drawerBackdropIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes drawerBackdropOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes drawerInLeft {\n from {\n transform: translateX(-100%);\n }\n}\n\n@keyframes drawerOutLeft {\n to {\n transform: translateX(-100%);\n }\n}\n\n@keyframes drawerInRight {\n from {\n transform: translateX(100%);\n }\n}\n\n@keyframes drawerOutRight {\n to {\n transform: translateX(100%);\n }\n}\n\n@keyframes drawerInTop {\n from {\n transform: translateY(-100%);\n }\n}\n\n@keyframes drawerOutTop {\n to {\n transform: translateY(-100%);\n }\n}\n\n@keyframes drawerInBottom {\n from {\n transform: translateY(100%);\n }\n}\n\n@keyframes drawerOutBottom {\n to {\n transform: translateY(100%);\n }\n}\n\n@media (max-width: 560px) {\n .drawer[data-side=\"left\"],\n .drawer[data-side=\"right\"] {\n width: min(360px, calc(100% - 18px));\n }\n\n .footer,\n .actions {\n align-items: stretch;\n flex-direction: column;\n }\n\n .actions,\n .actions > * {\n width: 100%;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .drawer {\n animation: none;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n .backdrop {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background: var(--opus-overlay-backdrop-solid);\n }\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport type { DrawerSide } from \"@/components/fields/types\";\nimport { Button } from \"@/components/fields/Button\";\nimport { useOverlayAccessibility } from \"@/lib/a11y/useOverlayAccessibility\";\nimport styles from \"./Drawer.module.css\";\n\ntype DrawerPhase = \"opening\" | \"closing\";\n\nconst EXIT_ANIMATION_MS = 180;\n\ntype DrawerProps = {\n actions?: ReactNode;\n children: ReactNode;\n closeButton?: boolean;\n description?: string;\n dismissOnBackdrop?: boolean;\n dismissOnEscape?: boolean;\n footer?: ReactNode;\n onClose: () => void;\n open: boolean;\n side?: DrawerSide;\n title: string;\n};\n\nexport function Drawer({\n actions,\n children,\n closeButton = true,\n description,\n dismissOnBackdrop = true,\n dismissOnEscape = true,\n footer,\n onClose,\n open,\n side = \"right\",\n title,\n}: DrawerProps) {\n const titleId = useId();\n const descriptionId = useId();\n const panelRef = useRef<HTMLElement>(null);\n const closeRef = useRef<HTMLButtonElement>(null);\n const [rendered, setRendered] = useState(open);\n const [phase, setPhase] = useState<DrawerPhase>(\"opening\");\n\n useOverlayAccessibility(open && rendered, panelRef, {\n initialFocusRef: closeButton ? closeRef : undefined,\n });\n\n useEffect(() => {\n let timeout: number | undefined;\n const frame = window.requestAnimationFrame(() => {\n if (open) {\n setRendered(true);\n setPhase(\"opening\");\n return;\n }\n\n setPhase(\"closing\");\n timeout = window.setTimeout(() => setRendered(false), EXIT_ANIMATION_MS);\n });\n\n return () => {\n window.cancelAnimationFrame(frame);\n if (timeout) {\n window.clearTimeout(timeout);\n }\n };\n }, [open]);\n\n useEffect(() => {\n if (!open || !dismissOnEscape) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [dismissOnEscape, onClose, open]);\n\n if (!rendered) {\n return null;\n }\n\n return (\n <div\n className={styles.backdrop}\n data-dismissible={dismissOnBackdrop}\n data-phase={phase}\n data-side={side}\n onMouseDown={(event) => {\n if (event.currentTarget === event.target && dismissOnBackdrop) {\n onClose();\n }\n }}\n >\n <aside\n ref={panelRef}\n aria-describedby={description ? descriptionId : undefined}\n aria-labelledby={titleId}\n aria-modal=\"true\"\n className={styles.drawer}\n data-phase={phase}\n data-side={side}\n role=\"dialog\"\n >\n <header className={styles.header}>\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>\n {title}\n </h2>\n {description ? (\n <p className={styles.description} id={descriptionId}>\n {description}\n </p>\n ) : null}\n </div>\n {closeButton ? (\n <button\n ref={closeRef}\n aria-label=\"Close drawer\"\n className={styles.close}\n onClick={onClose}\n type=\"button\"\n >\n <svg aria-hidden=\"true\" className={styles.closeIcon} viewBox=\"0 0 16 16\">\n <path\n d=\"M4.5 4.5 11.5 11.5M11.5 4.5 4.5 11.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.75\"\n />\n </svg>\n </button>\n ) : null}\n </header>\n <div className={styles.body}>{children}</div>\n {footer || actions ? (\n <footer className={styles.footer}>\n {footer ? <div className={styles.footerContent}>{footer}</div> : null}\n {actions ? <div className={styles.actions}>{actions}</div> : null}\n </footer>\n ) : null}\n </aside>\n </div>\n );\n}\n\nexport function DrawerDefaultActions({ onClose }: { onClose: () => void }) {\n return (\n <>\n <Button variant=\"secondary\" onClick={onClose}>\n Reset\n </Button>\n <Button variant=\"primary\" onClick={onClose}>\n Apply\n </Button>\n </>\n );\n}\n",".root {\n position: relative;\n display: inline-flex;\n}\n\n.panel {\n position: absolute;\n z-index: 40;\n display: grid;\n gap: 10px;\n width: min(320px, calc(100vw - 32px));\n padding: 12px;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 24%, var(--opus-border));\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 94%, transparent);\n box-shadow:\n 0 24px 70px color-mix(in srgb, #020617 26%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n color: var(--opus-text);\n -webkit-backdrop-filter: blur(12px) saturate(1.18);\n backdrop-filter: blur(12px) saturate(1.18);\n animation: popoverIn 150ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.panel[data-placement=\"top\"] {\n bottom: calc(100% + 10px);\n left: 50%;\n transform-origin: bottom center;\n}\n\n.panel[data-placement=\"bottom\"] {\n top: calc(100% + 10px);\n left: 50%;\n transform-origin: top center;\n}\n\n.panel[data-placement=\"left\"] {\n top: 50%;\n right: calc(100% + 10px);\n transform-origin: right center;\n}\n\n.panel[data-placement=\"right\"] {\n top: 50%;\n left: calc(100% + 10px);\n transform-origin: left center;\n}\n\n.panel[data-placement=\"top\"],\n.panel[data-placement=\"bottom\"] {\n transform: translateX(-50%);\n}\n\n.panel[data-placement=\"left\"],\n.panel[data-placement=\"right\"] {\n transform: translateY(-50%);\n}\n\n.title {\n color: var(--opus-text);\n font-size: 0.88rem;\n font-weight: 800;\n line-height: 1.25;\n}\n\n.content {\n display: grid;\n gap: 10px;\n color: var(--opus-muted);\n font-size: var(--opus-control-font-size);\n line-height: 1.45;\n}\n\n.content p {\n margin: 0;\n}\n\n.arrow {\n position: absolute;\n width: 10px;\n height: 10px;\n border-right: 1px solid color-mix(in srgb, var(--opus-accent) 24%, var(--opus-border));\n border-bottom: 1px solid color-mix(in srgb, var(--opus-accent) 24%, var(--opus-border));\n background: color-mix(in srgb, var(--opus-panel) 94%, transparent);\n transform: rotate(45deg);\n}\n\n.panel[data-placement=\"top\"] .arrow {\n bottom: -6px;\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n}\n\n.panel[data-placement=\"bottom\"] .arrow {\n top: -6px;\n left: 50%;\n transform: translateX(-50%) rotate(225deg);\n}\n\n.panel[data-placement=\"left\"] .arrow {\n top: 50%;\n right: -6px;\n transform: translateY(-50%) rotate(-45deg);\n}\n\n.panel[data-placement=\"right\"] .arrow {\n top: 50%;\n left: -6px;\n transform: translateY(-50%) rotate(135deg);\n}\n\n@keyframes popoverIn {\n from {\n opacity: 0;\n scale: 0.96;\n }\n\n to {\n opacity: 1;\n scale: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .panel {\n animation: none;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n .panel {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background: var(--opus-panel);\n }\n}\n","\"use client\";\n\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport type { PopoverPlacement } from \"@/components/fields/types\";\nimport { Button } from \"@/components/fields/Button\";\nimport { useOverlayAccessibility } from \"@/lib/a11y/useOverlayAccessibility\";\nimport styles from \"./Popover.module.css\";\n\ntype PopoverProps = {\n children: ReactNode;\n closeOnEscape?: boolean;\n closeOnOutside?: boolean;\n defaultOpen?: boolean;\n label?: string;\n onOpenChange?: (open: boolean) => void;\n open?: boolean;\n placement?: PopoverPlacement;\n showArrow?: boolean;\n title?: string;\n trigger: ReactNode;\n};\n\ntype TriggerProps = {\n \"aria-controls\": string;\n \"aria-expanded\": boolean;\n \"aria-haspopup\": \"dialog\";\n onClick: () => void;\n};\n\nfunction mergeTrigger(trigger: ReactNode, triggerProps: TriggerProps, label: string) {\n if (isValidElement(trigger)) {\n const element = trigger as ReactElement<{ onClick?: () => void }>;\n return cloneElement(element, {\n ...triggerProps,\n onClick: () => {\n element.props.onClick?.();\n triggerProps.onClick();\n },\n });\n }\n\n return (\n <Button aria-label={label} {...triggerProps}>\n {trigger}\n </Button>\n );\n}\n\nexport function Popover({\n children,\n closeOnEscape = true,\n closeOnOutside = true,\n defaultOpen = false,\n label = \"Toggle popover\",\n onOpenChange,\n open,\n placement = \"bottom\",\n showArrow = true,\n title,\n trigger,\n}: PopoverProps) {\n const popoverId = useId();\n const titleId = useId();\n const rootRef = useRef<HTMLSpanElement>(null);\n const panelRef = useRef<HTMLSpanElement>(null);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const controlled = open !== undefined;\n const visible = controlled ? open : internalOpen;\n\n useOverlayAccessibility(visible, panelRef, {\n lockScroll: false,\n restoreFocus: true,\n trapFocus: false,\n });\n\n const setVisible = useCallback((nextOpen: boolean) => {\n if (!controlled) {\n setInternalOpen(nextOpen);\n }\n\n onOpenChange?.(nextOpen);\n }, [controlled, onOpenChange]);\n\n useEffect(() => {\n if (!visible) {\n return;\n }\n\n const handlePointerDown = (event: PointerEvent) => {\n if (closeOnOutside && !rootRef.current?.contains(event.target as Node)) {\n setVisible(false);\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (closeOnEscape && event.key === \"Escape\") {\n setVisible(false);\n }\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [closeOnEscape, closeOnOutside, setVisible, visible]);\n\n return (\n <span className={styles.root} data-placement={placement} ref={rootRef}>\n {mergeTrigger(\n trigger,\n {\n \"aria-controls\": popoverId,\n \"aria-expanded\": visible,\n \"aria-haspopup\": \"dialog\",\n onClick: () => setVisible(!visible),\n },\n label,\n )}\n {visible ? (\n <span\n ref={panelRef}\n aria-labelledby={title ? titleId : undefined}\n className={styles.panel}\n data-placement={placement}\n id={popoverId}\n role=\"dialog\"\n tabIndex={-1}\n >\n {showArrow ? <span aria-hidden=\"true\" className={styles.arrow} /> : null}\n {title ? (\n <span className={styles.title} id={titleId} role=\"heading\" aria-level={3}>\n {title}\n </span>\n ) : null}\n <span className={styles.content}>{children}</span>\n </span>\n ) : null}\n </span>\n );\n}\n","\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport type TopNavigationSelectItem = {\n description?: string;\n id: string;\n label: string;\n};\n\nexport type TopNavigationContextValue = {\n activeMenu: string | null;\n closeMenu: () => void;\n closeOnEscape: boolean;\n closeOnOutside: boolean;\n closeOnSelect: boolean;\n onMenuSelect?: (menuId: string, item: TopNavigationSelectItem) => void;\n openMenu: (menuId: string) => void;\n presentMenus: ReadonlySet<string>;\n setMenuPresent: (menuId: string, present: boolean) => void;\n showShortcuts: boolean;\n};\n\nexport const TopNavigationContext = createContext<TopNavigationContextValue | null>(null);\n\nexport function useTopNavigation() {\n return useContext(TopNavigationContext);\n}\n","import type { DropdownMenuPlacement } from \"@/components/fields/types\";\n\nexport type FloatingPortalStyle = {\n left: number;\n top: number;\n width?: number;\n};\n\nexport function resolveDropdownPortalStyle(\n anchorRect: DOMRect,\n menuRect: DOMRect | null,\n placement: DropdownMenuPlacement,\n elevated: boolean,\n): FloatingPortalStyle {\n const gap = elevated ? 6 : 8;\n const menuWidth = menuRect?.width ?? Math.min(260, window.innerWidth - 32);\n const menuHeight = menuRect?.height ?? 0;\n\n switch (placement) {\n case \"bottom-end\":\n return { top: anchorRect.bottom + gap, left: anchorRect.right - menuWidth };\n case \"top-start\":\n return { top: anchorRect.top - gap - menuHeight, left: anchorRect.left };\n case \"top-end\":\n return { top: anchorRect.top - gap - menuHeight, left: anchorRect.right - menuWidth };\n case \"bottom-start\":\n default:\n return { top: anchorRect.bottom + gap, left: anchorRect.left };\n }\n}\n\nexport function resolveMegaMenuPortalStyle(\n root: HTMLElement,\n inTopNavigation: boolean,\n): FloatingPortalStyle {\n const bar = root.closest(\"header\");\n const anchorRect = (inTopNavigation && bar ? bar : root).getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const width = inTopNavigation\n ? anchorRect.width\n : Math.min(Math.max(anchorRect.width, 280), viewportWidth - 32);\n const left = inTopNavigation\n ? anchorRect.left\n : Math.min(Math.max(anchorRect.left, 16), viewportWidth - width - 16);\n\n return {\n top: anchorRect.bottom + (inTopNavigation ? 2 : 10),\n left,\n width,\n };\n}\n",".root {\n position: relative;\n z-index: 60;\n display: inline-flex;\n}\n\n.root[data-surface=\"navigation\"] {\n position: static;\n}\n\n.root[data-surface=\"static\"] {\n display: block;\n width: 100%;\n}\n\n.menuBar {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0;\n}\n\n.trigger {\n display: inline-flex;\n min-height: var(--opus-input-height);\n align-items: center;\n gap: 10px;\n border: 1px solid color-mix(in srgb, var(--opus-border) 84%, transparent);\n border-radius: var(--opus-input-radius);\n background: color-mix(in srgb, var(--opus-panel) 92%, transparent);\n color: var(--opus-text);\n cursor: pointer;\n font: inherit;\n font-size: var(--opus-control-font-size);\n font-weight: 900;\n padding: 0 16px;\n box-shadow: var(--opus-shadow);\n}\n\n.root[data-density=\"compact\"] .trigger {\n min-height: 32px;\n padding: 0 12px;\n}\n\n.root[data-surface=\"navigation\"] .trigger {\n min-height: 28px;\n border: 0;\n border-radius: var(--opus-input-radius);\n background: transparent;\n box-shadow: none;\n font-size: 0.84rem;\n font-weight: 650;\n padding: 0 10px;\n}\n\n.root[data-surface=\"navigation\"][data-density=\"compact\"] .trigger {\n min-height: 24px;\n padding: 0 8px;\n font-size: 0.8rem;\n}\n\n.trigger[aria-expanded=\"true\"] {\n border-color: color-mix(in srgb, var(--opus-accent) 56%, transparent);\n background: color-mix(in srgb, var(--opus-accent) 14%, var(--opus-panel));\n}\n\n.root[data-surface=\"navigation\"] .trigger[aria-expanded=\"true\"],\n.root[data-surface=\"navigation\"] .trigger:hover {\n background: color-mix(in srgb, var(--opus-accent) 14%, transparent);\n}\n\n.panel[data-portaled=\"true\"] {\n position: fixed;\n z-index: 1000;\n margin: 0;\n inset: auto;\n}\n\n.panel {\n position: absolute;\n top: calc(100% + 10px);\n left: 0;\n display: grid;\n width: 100%;\n max-width: calc(100vw - 32px);\n gap: 14px;\n padding: 16px;\n overflow: hidden;\n border: 1px solid var(--opus-menu-glass-border);\n border-radius: var(--opus-input-radius-large);\n background:\n radial-gradient(circle at 10% 0%, color-mix(in srgb, var(--opus-accent) 14%, transparent), transparent 34%),\n var(--opus-menu-glass-surface);\n box-shadow:\n 0 28px 80px color-mix(in srgb, #020617 34%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n color: var(--opus-text);\n -webkit-backdrop-filter: blur(20px) saturate(1.35);\n backdrop-filter: blur(20px) saturate(1.35);\n}\n\n.panelContent {\n position: relative;\n z-index: 1;\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(220px, 0.36fr);\n gap: 16px;\n}\n\n.panelContent[data-has-featured=\"false\"] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.panel[data-phase=\"opening\"] {\n animation: megaMenuIn 320ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.panel[data-phase=\"closing\"] {\n pointer-events: none;\n animation: megaMenuOut 280ms cubic-bezier(0.4, 0, 0.2, 1) both;\n}\n\n.root[data-surface=\"navigation\"] .panel {\n top: calc(100% + 2px);\n width: 100%;\n max-width: 100%;\n}\n\n.root[data-surface=\"static\"] .panel,\n.root[data-surface=\"static\"] .panel[data-phase=\"opening\"],\n.root[data-surface=\"static\"] .panel[data-phase=\"closing\"] {\n position: relative;\n top: 0;\n width: 100%;\n max-width: none;\n animation: none;\n}\n\n.sections {\n display: grid;\n gap: 14px;\n}\n\n.sections[data-columns=\"1\"] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.sections[data-columns=\"2\"] {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.sections[data-columns=\"3\"] {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n\n.sections[data-columns=\"4\"] {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n\n.section {\n display: grid;\n align-content: start;\n gap: 10px;\n}\n\n.section h3 {\n margin: 0;\n color: color-mix(in srgb, var(--opus-text) 76%, var(--opus-accent));\n font-size: 0.72rem;\n font-weight: 950;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n}\n\n.items {\n display: grid;\n gap: 6px;\n}\n\n.item {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n gap: 10px;\n width: 100%;\n align-items: start;\n border: 1px solid transparent;\n border-radius: var(--opus-input-radius);\n background: transparent;\n color: var(--opus-text);\n cursor: pointer;\n font: inherit;\n padding: 9px;\n text-align: left;\n}\n\n.item:hover,\n.item:focus-visible {\n border-color: color-mix(in srgb, var(--opus-accent) 28%, transparent);\n background: color-mix(in srgb, var(--opus-accent) 10%, transparent);\n outline: 0;\n}\n\n.itemIcon {\n display: grid;\n width: 24px;\n height: 24px;\n place-items: center;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 28%, transparent);\n border-radius: var(--opus-input-radius);\n background: color-mix(in srgb, var(--opus-accent) 12%, transparent);\n color: var(--opus-accent);\n font-size: 0.78rem;\n font-weight: 900;\n}\n\n.itemCopy {\n display: grid;\n gap: 3px;\n min-width: 0;\n}\n\n.itemCopy > span {\n font-size: var(--opus-control-font-size);\n font-weight: 900;\n}\n\n.itemCopy small {\n color: var(--opus-muted);\n font-size: 0.76rem;\n font-weight: 700;\n line-height: 1.35;\n}\n\n.featured {\n display: grid;\n align-content: start;\n gap: 10px;\n padding: 16px;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 30%, transparent);\n border-radius: var(--opus-input-radius-large);\n background:\n linear-gradient(135deg, color-mix(in srgb, var(--opus-accent) 22%, transparent), transparent 60%),\n color-mix(in srgb, var(--opus-input-bg) 78%, transparent);\n}\n\n.eyebrow {\n color: var(--opus-accent);\n font-size: 0.68rem;\n font-weight: 950;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n}\n\n.featured strong {\n font-size: 1.08rem;\n line-height: 1.15;\n}\n\n.featured p {\n margin: 0;\n color: var(--opus-muted);\n font-size: 0.82rem;\n font-weight: 750;\n line-height: 1.45;\n}\n\n.featuredAction {\n justify-self: start;\n min-height: 32px;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 58%, transparent);\n border-radius: var(--opus-input-radius);\n background: var(--opus-accent);\n color: var(--opus-accent-contrast);\n cursor: pointer;\n font: inherit;\n font-size: 0.78rem;\n font-weight: 900;\n padding: 0 12px;\n}\n\n@keyframes megaMenuIn {\n from {\n opacity: 0;\n transform: translateY(-30px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes megaMenuOut {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n\n to {\n opacity: 0;\n transform: translateY(30px);\n }\n}\n\n@media (max-width: 860px) {\n .panelContent {\n grid-template-columns: 1fr;\n }\n\n .sections {\n grid-template-columns: 1fr;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .panel[data-phase=\"opening\"],\n .panel[data-phase=\"closing\"] {\n animation: none;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n .panel {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background: color-mix(in srgb, var(--opus-panel) 96%, transparent);\n }\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useId, useLayoutEffect, useRef, useState, type CSSProperties } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { SurfaceDensity } from \"@/components/fields/types\";\nimport { useOpusTheme } from \"@/components/OpusThemeProvider\";\nimport { useTopNavigation } from \"@/components/TopNavigation/TopNavigationContext\";\nimport {\n resolveMegaMenuPortalStyle,\n type FloatingPortalStyle,\n} from \"@/lib/ui/floatingPortalPosition\";\nimport styles from \"./MegaMenu.module.css\";\n\nconst MEGA_MENU_EXIT_MS = 280;\n\ntype PanelPhase = \"closing\" | \"opening\";\n\nexport type MegaMenuItem = {\n description?: string;\n href?: string;\n icon?: ReactNode;\n id: string;\n label: string;\n onSelect?: () => void;\n};\n\nexport type MegaMenuSection = {\n id: string;\n items: MegaMenuItem[];\n title: string;\n};\n\nexport type MegaMenuFeatured = {\n actionLabel?: string;\n description: string;\n eyebrow?: string;\n title: string;\n};\n\nexport type MegaMenuConfig = {\n featured?: MegaMenuFeatured;\n id: string;\n label: string;\n sections: MegaMenuSection[];\n};\n\ntype MegaMenuProps = {\n activeMenu?: string;\n closeOnEscape?: boolean;\n closeOnOutside?: boolean;\n density?: SurfaceDensity;\n featured?: MegaMenuFeatured;\n label?: string;\n menus?: MegaMenuConfig[];\n navigationId?: string;\n onActiveMenuChange?: (menuId: string) => void;\n onOpenChange?: (open: boolean) => void;\n onSelect?: (item: MegaMenuItem) => void;\n open?: boolean;\n sections?: MegaMenuSection[];\n staticPanel?: boolean;\n triggerLabel?: string;\n};\n\nexport const defaultMegaMenuFeatured: MegaMenuFeatured = {\n eyebrow: \"Featured\",\n title: \"Build faster with Opus\",\n description:\n \"Browse production-ready components, patterns, and implementation notes from one navigation surface.\",\n actionLabel: \"Explore library\",\n};\n\nexport const defaultMegaMenuMenus: MegaMenuConfig[] = [\n {\n id: \"app\",\n label: \"App\",\n featured: defaultMegaMenuFeatured,\n sections: [\n {\n id: \"foundation\",\n title: \"Foundation\",\n items: [\n {\n id: \"tokens\",\n label: \"Design tokens\",\n description: \"Colour, radius, spacing, typography, and shared CSS variables.\",\n },\n {\n id: \"themes\",\n label: \"Theme system\",\n description: \"Light and dark modes with unified surface and form colours.\",\n },\n {\n id: \"accessibility\",\n label: \"Accessibility\",\n description: \"Keyboard, focus, aria, and contrast guidance for components.\",\n },\n ],\n },\n {\n id: \"systems\",\n title: \"Systems\",\n items: [\n {\n id: \"forms\",\n label: \"Form architecture\",\n description: \"Composable fields, labels, errors, and layout modes.\",\n },\n {\n id: \"themes-runtime\",\n label: \"Theme runtime\",\n description: \"CSS variables and provider-level theme switching.\",\n },\n {\n id: \"release-readiness\",\n label: \"Release readiness\",\n description: \"Validation, docs, and migration checks before shipping.\",\n },\n ],\n },\n ],\n },\n {\n id: \"file\",\n label: \"File\",\n featured: {\n eyebrow: \"Library\",\n title: \"Production-ready building blocks\",\n description: \"Explore form fields, overlays, navigation, media, and data components.\",\n actionLabel: \"Browse components\",\n },\n sections: [\n {\n id: \"inputs\",\n title: \"Inputs\",\n items: [\n { id: \"text\", label: \"Text fields\", description: \"Single and multi-line field patterns.\" },\n { id: \"choice\", label: \"Choice controls\", description: \"Checkboxes, radios, switches, and ranges.\" },\n { id: \"upload\", label: \"Uploads\", description: \"File, image, and future asset upload flows.\" },\n ],\n },\n {\n id: \"surfaces\",\n title: \"Surfaces\",\n items: [\n { id: \"cards\", label: \"Cards & panels\", description: \"Structured containers for pages and dashboards.\" },\n { id: \"tables\", label: \"Tables & grids\", description: \"Readable data surfaces with sorting and filtering.\" },\n { id: \"media\", label: \"Media\", description: \"Images, 3D assets, galleries, and lightboxes.\" },\n ],\n },\n ],\n },\n {\n id: \"edit\",\n label: \"Edit\",\n featured: {\n eyebrow: \"Guidance\",\n title: \"Patterns that fit together\",\n description: \"Use examples and recipes to combine components into complete product flows.\",\n actionLabel: \"View patterns\",\n },\n sections: [\n {\n id: \"workflows\",\n title: \"Workflows\",\n items: [\n { id: \"settings\", label: \"Settings pages\", description: \"Grouped controls with clear save/cancel actions.\" },\n { id: \"confirmation\", label: \"Confirmation flows\", description: \"Dialogs and modals for safe decisions.\" },\n { id: \"navigation\", label: \"Navigation shells\", description: \"Sidebars, top menus, and deep navigation.\" },\n ],\n },\n {\n id: \"states\",\n title: \"States\",\n items: [\n { id: \"loading\", label: \"Loading\", description: \"Skeletons and progressive reveal patterns.\" },\n { id: \"empty\", label: \"Empty states\", description: \"Helpful zero-state messaging and actions.\" },\n { id: \"error\", label: \"Error handling\", description: \"Alerts, inline errors, and recovery routes.\" },\n ],\n },\n ],\n },\n {\n id: \"view\",\n label: \"View\",\n featured: {\n eyebrow: \"Docs\",\n title: \"Everything in one place\",\n description: \"Reference API notes, examples, accessibility guidance, and implementation details.\",\n actionLabel: \"Open docs\",\n },\n sections: [\n {\n id: \"docs\",\n title: \"Documentation\",\n items: [\n { id: \"getting-started\", label: \"Getting started\", description: \"Install, import, and theme Opus components.\" },\n { id: \"component-api\", label: \"Component API\", description: \"Props, defaults, and usage examples.\" },\n { id: \"accessibility-docs\", label: \"Accessibility docs\", description: \"Keyboard and screen reader behaviour.\" },\n ],\n },\n {\n id: \"team\",\n title: \"Team\",\n items: [\n { id: \"contribution\", label: \"Contributing\", description: \"Add or update components with confidence.\" },\n { id: \"review\", label: \"Review checklist\", description: \"Quality gates for design and engineering.\" },\n { id: \"support\", label: \"Support\", description: \"Where to ask questions and report issues.\" },\n ],\n },\n ],\n },\n {\n id: \"window\",\n label: \"Window\",\n featured: {\n eyebrow: \"Opus\",\n title: \"Design system operations\",\n description: \"Keep teams aligned with release notes, ownership, and adoption reporting.\",\n actionLabel: \"View roadmap\",\n },\n sections: [\n {\n id: \"operations\",\n title: \"Operations\",\n items: [\n { id: \"roadmap\", label: \"Roadmap\", description: \"Upcoming components and improvements.\" },\n { id: \"changelog\", label: \"Changelog\", description: \"What changed, when, and why.\" },\n { id: \"metrics\", label: \"Adoption metrics\", description: \"Track usage across products and teams.\" },\n ],\n },\n {\n id: \"ownership\",\n title: \"Ownership\",\n items: [\n { id: \"maintainers\", label: \"Maintainers\", description: \"Component owners and review contacts.\" },\n { id: \"requests\", label: \"Requests\", description: \"Propose new components and pattern changes.\" },\n { id: \"governance\", label: \"Governance\", description: \"Decision records and contribution policy.\" },\n ],\n },\n ],\n },\n];\n\nexport const defaultMegaMenuSections = defaultMegaMenuMenus[0].sections;\n\nexport const defaultTopNavigationMegaMenus = defaultMegaMenuMenus.filter((menu) =>\n menu.id === \"edit\",\n);\n\nexport function MegaMenu({\n activeMenu,\n closeOnEscape = true,\n closeOnOutside = true,\n density = \"comfortable\",\n featured = defaultMegaMenuFeatured,\n label = \"Primary\",\n menus,\n navigationId,\n onActiveMenuChange,\n onOpenChange,\n onSelect,\n open,\n sections,\n staticPanel = false,\n triggerLabel = \"Resources\",\n}: MegaMenuProps) {\n const menuId = useId();\n const theme = useOpusTheme();\n const rootRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [internalOpen, setInternalOpen] = useState(false);\n const [portalStyle, setPortalStyle] = useState<FloatingPortalStyle | null>(null);\n const [renderPanel, setRenderPanel] = useState(false);\n const [phase, setPhase] = useState<PanelPhase>(\"opening\");\n const [portalReady, setPortalReady] = useState(false);\n const topNavigation = useTopNavigation();\n const inTopNavigation = topNavigation !== null;\n const registerMenuPresent = topNavigation?.setMenuPresent;\n const isStaticPanel = staticPanel && !inTopNavigation;\n const resolvedMenus = menus ?? [\n {\n id: navigationId ?? \"default\",\n label: triggerLabel,\n featured,\n sections: sections ?? defaultMegaMenuSections,\n },\n ];\n const firstMenuId = resolvedMenus[0]?.id ?? \"default\";\n const [internalActiveMenu, setInternalActiveMenu] = useState(firstMenuId);\n const resolvedActiveMenu = activeMenu ?? internalActiveMenu;\n const activeConfig =\n resolvedMenus.find((menu) => menu.id === resolvedActiveMenu) ?? resolvedMenus[0];\n const controlled = open !== undefined || inTopNavigation;\n const navigationOpen = inTopNavigation\n ? resolvedMenus.some((menu) => topNavigation.activeMenu === menu.id)\n : undefined;\n const visible = isStaticPanel\n ? true\n : inTopNavigation\n ? navigationOpen\n : controlled\n ? open\n : internalOpen;\n const resolvedCloseOnEscape = inTopNavigation ? topNavigation.closeOnEscape : closeOnEscape;\n const resolvedCloseOnOutside = inTopNavigation ? topNavigation.closeOnOutside : closeOnOutside;\n\n const setVisible = useCallback((nextOpen: boolean, menuId = activeConfig?.id ?? firstMenuId) => {\n if (inTopNavigation) {\n if (nextOpen) {\n topNavigation.openMenu(menuId);\n } else {\n topNavigation.closeMenu();\n }\n } else if (!controlled) {\n setInternalOpen(nextOpen);\n }\n\n onOpenChange?.(nextOpen);\n }, [activeConfig?.id, controlled, firstMenuId, inTopNavigation, onOpenChange, topNavigation]);\n\n const setActive = useCallback((menuId: string) => {\n if (activeMenu === undefined) {\n setInternalActiveMenu(menuId);\n }\n\n onActiveMenuChange?.(menuId);\n }, [activeMenu, onActiveMenuChange]);\n\n const openMenu = useCallback((menuId: string) => {\n setActive(menuId);\n setVisible(true, menuId);\n }, [setActive, setVisible]);\n\n useEffect(() => {\n const timeout = window.setTimeout(() => setPortalReady(true), 0);\n return () => window.clearTimeout(timeout);\n }, []);\n\n useLayoutEffect(() => {\n if (isStaticPanel || !renderPanel || !rootRef.current) {\n setPortalStyle(null);\n return;\n }\n\n const updatePosition = () => {\n const root = rootRef.current;\n if (!root) {\n return;\n }\n\n setPortalStyle(resolveMegaMenuPortalStyle(root, inTopNavigation));\n };\n\n updatePosition();\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [inTopNavigation, isStaticPanel, phase, renderPanel]);\n\n useEffect(() => {\n if (isStaticPanel || !visible) {\n return;\n }\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node;\n if (\n resolvedCloseOnOutside\n && !rootRef.current?.contains(target)\n && !panelRef.current?.contains(target)\n ) {\n setVisible(false);\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (resolvedCloseOnEscape && event.key === \"Escape\") {\n setVisible(false);\n }\n };\n\n window.addEventListener(\"pointerdown\", handlePointerDown);\n window.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n window.removeEventListener(\"pointerdown\", handlePointerDown);\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [isStaticPanel, resolvedCloseOnEscape, resolvedCloseOnOutside, setVisible, visible]);\n\n useEffect(() => {\n if (isStaticPanel) {\n return;\n }\n\n let timeout: number | undefined;\n const frame = window.requestAnimationFrame(() => {\n if (visible) {\n setRenderPanel(true);\n setPhase(\"opening\");\n return;\n }\n\n setPhase(\"closing\");\n timeout = window.setTimeout(() => setRenderPanel(false), MEGA_MENU_EXIT_MS);\n });\n\n return () => {\n window.cancelAnimationFrame(frame);\n if (timeout) {\n window.clearTimeout(timeout);\n }\n };\n }, [isStaticPanel, visible]);\n\n const activeConfigId = activeConfig?.id;\n\n useEffect(() => {\n if (!inTopNavigation || isStaticPanel || !activeConfigId || !registerMenuPresent) {\n return;\n }\n\n registerMenuPresent(activeConfigId, renderPanel);\n return () => registerMenuPresent(activeConfigId, false);\n }, [activeConfigId, inTopNavigation, isStaticPanel, registerMenuPresent, renderPanel]);\n\n const handleSelect = (item: MegaMenuItem) => {\n item.onSelect?.();\n onSelect?.(item);\n if (inTopNavigation) {\n topNavigation.onMenuSelect?.(activeConfig?.id ?? firstMenuId, item);\n }\n\n if (!isStaticPanel && (!inTopNavigation || topNavigation.closeOnSelect)) {\n setVisible(false);\n }\n };\n\n const showPanel = isStaticPanel ? Boolean(activeConfig) : renderPanel && Boolean(activeConfig);\n\n const portaledPanelStyle: CSSProperties | undefined = isStaticPanel\n ? undefined\n : {\n ...(portalStyle\n ? {\n left: portalStyle.left,\n top: portalStyle.top,\n width: portalStyle.width,\n }\n : {}),\n };\n\n const panelNode =\n showPanel && activeConfig ? (\n <div\n ref={panelRef}\n className={styles.panel}\n data-phase={isStaticPanel ? undefined : phase}\n data-portaled={isStaticPanel ? undefined : \"true\"}\n data-theme={isStaticPanel ? undefined : theme}\n id={menuId}\n role=\"menu\"\n style={portaledPanelStyle}\n >\n <div\n className={styles.panelContent}\n data-has-featured={activeConfig.featured ? \"true\" : \"false\"}\n >\n <div className={styles.sections} data-columns={String(activeConfig.sections.length)}>\n {activeConfig.sections.map((section) => (\n <section className={styles.section} key={section.id}>\n <h3>{section.title}</h3>\n <div className={styles.items}>\n {section.items.map((item) => (\n <button\n className={styles.item}\n key={item.id}\n role=\"menuitem\"\n type=\"button\"\n onClick={() => handleSelect(item)}\n >\n {item.icon ? <span className={styles.itemIcon}>{item.icon}</span> : null}\n <span className={styles.itemCopy}>\n <span>{item.label}</span>\n {item.description ? <small>{item.description}</small> : null}\n </span>\n </button>\n ))}\n </div>\n </section>\n ))}\n </div>\n\n {activeConfig.featured ? (\n <aside className={styles.featured}>\n {activeConfig.featured.eyebrow ? (\n <span className={styles.eyebrow}>{activeConfig.featured.eyebrow}</span>\n ) : null}\n <strong>{activeConfig.featured.title}</strong>\n <p>{activeConfig.featured.description}</p>\n {activeConfig.featured.actionLabel ? (\n <button className={styles.featuredAction} type=\"button\">\n {activeConfig.featured.actionLabel}\n </button>\n ) : null}\n </aside>\n ) : null}\n </div>\n </div>\n ) : null;\n\n return (\n <nav\n ref={rootRef}\n aria-label={label}\n className={styles.root}\n data-density={density}\n data-surface={inTopNavigation ? \"navigation\" : isStaticPanel ? \"static\" : \"standalone\"}\n >\n {isStaticPanel ? null : (\n <div className={styles.menuBar} role=\"menubar\">\n {resolvedMenus.map((menu) => {\n const isActive = activeConfig?.id === menu.id && Boolean(visible);\n\n return (\n <button\n aria-controls={menuId}\n aria-expanded={isActive}\n aria-haspopup=\"menu\"\n className={styles.trigger}\n key={menu.id}\n role=\"menuitem\"\n type=\"button\"\n onClick={() => {\n if (inTopNavigation) {\n openMenu(menu.id);\n return;\n }\n\n if (isActive) {\n setVisible(false, menu.id);\n return;\n }\n\n openMenu(menu.id);\n }}\n onFocus={() => openMenu(menu.id)}\n onMouseEnter={() => openMenu(menu.id)}\n >\n <span>{menu.label}</span>\n </button>\n );\n })}\n </div>\n )}\n\n {isStaticPanel ? panelNode : null}\n {!isStaticPanel && portalReady && panelNode ? createPortal(panelNode, document.body) : null}\n </nav>\n );\n}\n",".bar {\n position: relative;\n z-index: 200;\n display: flex;\n align-items: center;\n width: 100%;\n min-height: 36px;\n padding: 0 10px;\n border-bottom: 1px solid var(--opus-border);\n background: color-mix(in srgb, var(--opus-panel) 92%, transparent);\n backdrop-filter: blur(10px);\n}\n\n.bar[data-density=\"compact\"] {\n min-height: 32px;\n padding: 0 8px;\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0;\n}\n\n.menuSlot {\n position: relative;\n display: inline-flex;\n}\n\n.menuSlot[data-open=\"true\"] {\n z-index: 202;\n}\n\n.menuSlot[data-open=\"true\"][data-active=\"true\"] {\n z-index: 203;\n}\n\n.menuSlotMega {\n position: static;\n display: inline-flex;\n}\n\n.menuSlotMega[data-open=\"true\"] {\n z-index: 202;\n}\n\n.menuSlotMega[data-open=\"true\"][data-active=\"true\"] {\n z-index: 203;\n}\n\n.menuTrigger {\n display: inline-flex;\n align-items: center;\n min-height: 28px;\n padding: 0 10px;\n border: 0;\n border-radius: var(--opus-input-radius);\n background: transparent;\n color: var(--opus-text);\n font: inherit;\n font-size: 0.84rem;\n font-weight: 650;\n line-height: 1;\n cursor: pointer;\n transition:\n background 140ms ease,\n color 140ms ease;\n}\n\n.bar[data-density=\"compact\"] .menuTrigger {\n min-height: 24px;\n padding: 0 8px;\n font-size: 0.8rem;\n}\n\n.menuTrigger:hover,\n.menuTrigger[aria-expanded=\"true\"] {\n background: color-mix(in srgb, var(--opus-accent) 14%, transparent);\n}\n\n.menuTrigger:focus-visible {\n outline: 2px solid color-mix(in srgb, var(--opus-accent) 70%, transparent);\n outline-offset: 1px;\n}\n","\"use client\";\n\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport type { DropdownMenuItemData } from \"@/components/DropdownMenu\";\nimport { DropdownMenu } from \"@/components/DropdownMenu\";\nimport type { SurfaceDensity } from \"@/components/fields/types\";\nimport {\n MegaMenu,\n defaultTopNavigationMegaMenus,\n type MegaMenuFeatured,\n type MegaMenuSection,\n} from \"@/components/MegaMenu\";\nimport {\n TopNavigationContext,\n type TopNavigationContextValue,\n type TopNavigationSelectItem,\n} from \"./TopNavigationContext\";\nimport styles from \"./TopNavigation.module.css\";\n\nexport type TopNavigationMenuConfig = {\n id: string;\n items: DropdownMenuItemData[];\n label: string;\n};\n\nexport type TopNavigationDropdownMenu = {\n type: \"dropdown\";\n id: string;\n items: DropdownMenuItemData[];\n label: string;\n};\n\nexport type TopNavigationMegaMenu = {\n type: \"mega\";\n featured?: MegaMenuFeatured;\n id: string;\n label: string;\n sections: MegaMenuSection[];\n};\n\nexport type TopNavigationBarMenu = TopNavigationDropdownMenu | TopNavigationMegaMenu;\n\nexport const defaultTopNavigationMenus: TopNavigationMenuConfig[] = [\n {\n id: \"opus\",\n label: \"Opus\",\n items: [\n { id: \"about\", label: \"About Opus\" },\n { id: \"settings\", label: \"Settings…\", shortcut: \"⌘,\" },\n { id: \"check-updates\", label: \"Check for Updates…\" },\n { id: \"quit\", label: \"Quit Opus\", shortcut: \"⌘Q\" },\n ],\n },\n {\n id: \"file\",\n label: \"File\",\n items: [\n { id: \"new\", label: \"New\", shortcut: \"⌘N\" },\n { id: \"open\", label: \"Open…\", shortcut: \"⌘O\" },\n { id: \"save\", label: \"Save\", shortcut: \"⌘S\" },\n { id: \"save-as\", label: \"Save As…\", shortcut: \"⇧⌘S\" },\n { id: \"close\", label: \"Close Window\", shortcut: \"⌘W\" },\n ],\n },\n {\n id: \"edit\",\n label: \"Edit\",\n items: [\n { id: \"undo\", label: \"Undo\", shortcut: \"⌘Z\" },\n { id: \"redo\", label: \"Redo\", shortcut: \"⇧⌘Z\" },\n { id: \"cut\", label: \"Cut\", shortcut: \"⌘X\" },\n { id: \"copy\", label: \"Copy\", shortcut: \"⌘C\" },\n { id: \"paste\", label: \"Paste\", shortcut: \"⌘V\" },\n { id: \"select-all\", label: \"Select All\", shortcut: \"⌘A\" },\n ],\n },\n {\n id: \"view\",\n label: \"View\",\n items: [\n { id: \"reload\", label: \"Reload\", shortcut: \"⌘R\" },\n { id: \"actual-size\", label: \"Actual Size\", shortcut: \"⌘0\" },\n { id: \"zoom-in\", label: \"Zoom In\", shortcut: \"⌘+\" },\n { id: \"zoom-out\", label: \"Zoom Out\", shortcut: \"⌘-\" },\n { id: \"toggle-sidebar\", label: \"Toggle Sidebar\", shortcut: \"⌘B\" },\n ],\n },\n {\n id: \"window\",\n label: \"Window\",\n items: [\n { id: \"minimize\", label: \"Minimize\", shortcut: \"⌘M\" },\n { id: \"zoom\", label: \"Zoom\" },\n { id: \"bring-all-front\", label: \"Bring All to Front\" },\n ],\n },\n {\n id: \"help\",\n label: \"Help\",\n items: [\n { id: \"docs\", label: \"Opus Documentation\" },\n { id: \"shortcuts\", label: \"Keyboard Shortcuts\" },\n { id: \"report\", label: \"Report an Issue\" },\n ],\n },\n];\n\nconst defaultEditMegaMenu = defaultTopNavigationMegaMenus[0];\n\nif (!defaultEditMegaMenu) {\n throw new Error(\"Expected edit mega menu in defaultTopNavigationMegaMenus.\");\n}\n\nexport const defaultTopNavigationBarMenus: TopNavigationBarMenu[] = [\n {\n type: \"dropdown\",\n id: \"app\",\n label: \"App\",\n items: defaultTopNavigationMenus.find((menu) => menu.id === \"opus\")?.items ?? [],\n },\n {\n type: \"dropdown\",\n id: \"file\",\n label: \"File\",\n items: defaultTopNavigationMenus.find((menu) => menu.id === \"file\")?.items ?? [],\n },\n {\n type: \"mega\",\n id: defaultEditMegaMenu.id,\n label: defaultEditMegaMenu.label,\n featured: defaultEditMegaMenu.featured,\n sections: defaultEditMegaMenu.sections,\n },\n {\n type: \"dropdown\",\n id: \"view\",\n label: \"View\",\n items: defaultTopNavigationMenus.find((menu) => menu.id === \"view\")?.items ?? [],\n },\n {\n type: \"dropdown\",\n id: \"window\",\n label: \"Window\",\n items: defaultTopNavigationMenus.find((menu) => menu.id === \"window\")?.items ?? [],\n },\n {\n type: \"dropdown\",\n id: \"help\",\n label: \"Help\",\n items: defaultTopNavigationMenus.find((menu) => menu.id === \"help\")?.items ?? [],\n },\n];\n\nfunction menuIdFromLabel(label: string) {\n const slug = label\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n return slug || \"menu\";\n}\n\nfunction withShortcuts(items: DropdownMenuItemData[], showShortcuts: boolean) {\n if (showShortcuts) {\n return items;\n }\n\n return items.map((item) => {\n const nextItem = { ...item };\n delete nextItem.shortcut;\n return nextItem;\n });\n}\n\nfunction useTopNavigationMenuContext() {\n const context = useContext(TopNavigationContext);\n\n if (!context) {\n throw new Error(\"TopNavigationMenu must be used within TopNavigation.\");\n }\n\n return context;\n}\n\nfunction TopNavigationTrigger(props: ComponentProps<\"button\">) {\n return <button className={styles.menuTrigger} type=\"button\" {...props} />;\n}\n\ntype TopNavigationMenuProps = {\n children?: ReactNode;\n id?: string;\n items?: DropdownMenuItemData[];\n label: string;\n};\n\nexport function TopNavigationMenu({ children, id, items, label }: TopNavigationMenuProps) {\n const context = useTopNavigationMenuContext();\n const menuId = id ?? menuIdFromLabel(label);\n const isActive = context.activeMenu === menuId;\n const isPresent = context.presentMenus.has(menuId);\n\n return (\n <div\n className={styles.menuSlot}\n data-active={isActive ? \"true\" : \"false\"}\n data-open={isActive || isPresent ? \"true\" : \"false\"}\n onMouseEnter={() => context.openMenu(menuId)}\n >\n {children ?? (\n <DropdownMenu\n elevated\n items={withShortcuts(items ?? [], context.showShortcuts)}\n label={`${label} menu`}\n navigationId={menuId}\n openOnHover\n placement=\"bottom-start\"\n trigger={<TopNavigationTrigger>{label}</TopNavigationTrigger>}\n />\n )}\n </div>\n );\n}\n\nTopNavigationMenu.displayName = \"TopNavigationMenu\";\n\nconst HOVER_CLOSE_DELAY_MS = 200;\n\ntype TopNavigationProps = {\n activeMenu?: string | null;\n children?: ReactNode;\n closeOnEscape?: boolean;\n closeOnOutside?: boolean;\n closeOnSelect?: boolean;\n density?: SurfaceDensity;\n menus?: TopNavigationBarMenu[];\n onActiveMenuChange?: (menuId: string | null) => void;\n onSelect?: (menuId: string, item: TopNavigationSelectItem) => void;\n showShortcuts?: boolean;\n};\n\nfunction TopNavigationMegaMenuSlot({\n density,\n menu,\n}: {\n density: SurfaceDensity;\n menu: TopNavigationMegaMenu;\n}) {\n const context = useTopNavigationMenuContext();\n const isActive = context.activeMenu === menu.id;\n const isPresent = context.presentMenus.has(menu.id);\n\n return (\n <div\n className={styles.menuSlotMega}\n data-active={isActive ? \"true\" : \"false\"}\n data-open={isActive || isPresent ? \"true\" : \"false\"}\n onMouseEnter={() => context.openMenu(menu.id)}\n >\n <MegaMenu\n density={density}\n menus={[\n {\n id: menu.id,\n label: menu.label,\n featured: menu.featured,\n sections: menu.sections,\n },\n ]}\n />\n </div>\n );\n}\n\nfunction TopNavigationBarMenus({\n density,\n menus,\n}: {\n density: SurfaceDensity;\n menus: TopNavigationBarMenu[];\n}) {\n return (\n <>\n {menus.map((menu) =>\n menu.type === \"dropdown\" ? (\n <TopNavigationMenu\n key={menu.id}\n id={menu.id}\n items={menu.items}\n label={menu.label}\n />\n ) : (\n <TopNavigationMegaMenuSlot key={menu.id} density={density} menu={menu} />\n ),\n )}\n </>\n );\n}\n\nexport function TopNavigation({\n activeMenu = null,\n children,\n closeOnEscape = true,\n closeOnOutside = true,\n closeOnSelect = true,\n density = \"comfortable\",\n menus,\n onActiveMenuChange,\n onSelect,\n showShortcuts = true,\n}: TopNavigationProps) {\n const closeTimeoutRef = useRef<number | null>(null);\n const [presentMenus, setPresentMenus] = useState<Set<string>>(() => new Set());\n\n const clearCloseTimeout = useCallback(() => {\n if (closeTimeoutRef.current) {\n window.clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = null;\n }\n }, []);\n\n const openMenu = useCallback(\n (menuId: string) => {\n clearCloseTimeout();\n onActiveMenuChange?.(menuId);\n },\n [clearCloseTimeout, onActiveMenuChange],\n );\n\n const closeMenu = useCallback(() => {\n onActiveMenuChange?.(null);\n }, [onActiveMenuChange]);\n\n const scheduleClose = useCallback(() => {\n clearCloseTimeout();\n closeTimeoutRef.current = window.setTimeout(closeMenu, HOVER_CLOSE_DELAY_MS);\n }, [clearCloseTimeout, closeMenu]);\n\n const setMenuPresent = useCallback((menuId: string, present: boolean) => {\n setPresentMenus((current) => {\n const hasMenu = current.has(menuId);\n if (present && hasMenu) {\n return current;\n }\n\n if (!present && !hasMenu) {\n return current;\n }\n\n const next = new Set(current);\n if (present) {\n next.add(menuId);\n } else {\n next.delete(menuId);\n }\n\n return next;\n });\n }, []);\n\n useEffect(() => clearCloseTimeout, [clearCloseTimeout]);\n\n const contextValue = useMemo<TopNavigationContextValue>(\n () => ({\n activeMenu,\n closeMenu,\n closeOnEscape,\n closeOnOutside,\n closeOnSelect,\n onMenuSelect: onSelect,\n openMenu,\n presentMenus,\n setMenuPresent,\n showShortcuts,\n }),\n [\n activeMenu,\n closeMenu,\n closeOnEscape,\n closeOnOutside,\n closeOnSelect,\n onSelect,\n openMenu,\n presentMenus,\n setMenuPresent,\n showShortcuts,\n ],\n );\n\n return (\n <TopNavigationContext.Provider value={contextValue}>\n <header\n className={styles.bar}\n data-density={density}\n data-menu-open={activeMenu ? \"true\" : \"false\"}\n onMouseEnter={clearCloseTimeout}\n onMouseLeave={scheduleClose}\n >\n <nav aria-label=\"Application\" className={styles.nav}>\n {children ?? (\n <TopNavigationBarMenus\n density={density}\n menus={menus ?? defaultTopNavigationBarMenus}\n />\n )}\n </nav>\n </header>\n </TopNavigationContext.Provider>\n );\n}\n\nexport { useTopNavigation } from \"./TopNavigationContext\";\n","export function getMenuItems(menu: HTMLElement) {\n return Array.from(\n menu.querySelectorAll<HTMLElement>('[role=\"menuitem\"]:not([disabled])'),\n );\n}\n\nexport function focusMenuItem(items: HTMLElement[], index: number) {\n const item = items[index];\n if (item) {\n item.focus();\n }\n}\n\nexport function handleMenuKeyDown(\n event: KeyboardEvent,\n menu: HTMLElement,\n onEscape?: () => void,\n) {\n const items = getMenuItems(menu);\n if (items.length === 0) {\n return;\n }\n\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n onEscape?.();\n return;\n }\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const nextIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % items.length;\n focusMenuItem(items, nextIndex);\n return;\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const nextIndex =\n currentIndex < 0 ? items.length - 1 : (currentIndex - 1 + items.length) % items.length;\n focusMenuItem(items, nextIndex);\n return;\n }\n\n if (event.key === \"Home\") {\n event.preventDefault();\n focusMenuItem(items, 0);\n return;\n }\n\n if (event.key === \"End\") {\n event.preventDefault();\n focusMenuItem(items, items.length - 1);\n }\n}\n",".root {\n position: relative;\n display: inline-flex;\n}\n\n.root[data-elevated=\"true\"] {\n z-index: 201;\n}\n\n.menu[data-portaled=\"true\"] {\n position: fixed;\n z-index: 1000;\n margin: 0;\n inset: auto;\n}\n\n.menu[data-portaled=\"true\"][data-placement=\"bottom-start\"],\n.menu[data-portaled=\"true\"][data-placement=\"bottom-end\"] {\n transform-origin: top left;\n}\n\n.menu[data-portaled=\"true\"][data-placement=\"top-start\"],\n.menu[data-portaled=\"true\"][data-placement=\"top-end\"] {\n transform-origin: bottom left;\n}\n\n.menu {\n position: absolute;\n z-index: 45;\n display: grid;\n gap: 4px;\n width: min(260px, calc(100vw - 32px));\n padding: 6px;\n overflow: hidden;\n border: 1px solid var(--opus-menu-glass-border);\n border-radius: var(--opus-input-radius-large);\n background:\n radial-gradient(circle at 10% 0%, color-mix(in srgb, var(--opus-accent) 14%, transparent), transparent 34%),\n var(--opus-menu-glass-surface);\n box-shadow:\n 0 28px 80px color-mix(in srgb, #020617 34%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n -webkit-backdrop-filter: blur(20px) saturate(1.35);\n backdrop-filter: blur(20px) saturate(1.35);\n}\n\n.menu > * {\n position: relative;\n z-index: 1;\n}\n\n.menu[data-phase=\"opening\"] {\n animation: dropdownIn 320ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.menu[data-phase=\"closing\"] {\n pointer-events: none;\n animation: dropdownOut 280ms cubic-bezier(0.4, 0, 0.2, 1) both;\n}\n\n.menu[data-elevated=\"true\"] {\n z-index: 201;\n}\n\n.menu[data-elevated=\"true\"][data-placement=\"bottom-start\"] {\n top: calc(100% + 6px);\n padding-top: 6px;\n background-clip: padding-box;\n}\n\n.menu[data-elevated=\"true\"][data-placement=\"bottom-end\"] {\n top: calc(100% + 6px);\n padding-top: 6px;\n background-clip: padding-box;\n}\n\n.menu[data-open-on-hover=\"true\"][data-placement=\"bottom-start\"]::before,\n.menu[data-open-on-hover=\"true\"][data-placement=\"bottom-end\"]::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n height: 8px;\n}\n\n.menu[data-placement=\"bottom-start\"] {\n top: calc(100% + 8px);\n left: 0;\n transform-origin: top left;\n}\n\n.menu[data-placement=\"bottom-end\"] {\n top: calc(100% + 8px);\n right: 0;\n transform-origin: top right;\n}\n\n.menu[data-placement=\"top-start\"] {\n bottom: calc(100% + 8px);\n left: 0;\n transform-origin: bottom left;\n}\n\n.menu[data-placement=\"top-end\"] {\n bottom: calc(100% + 8px);\n right: 0;\n transform-origin: bottom right;\n}\n\n.item {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 8px;\n align-items: center;\n width: 100%;\n min-height: 32px;\n padding: 0 8px;\n border: 0;\n border-radius: var(--opus-input-radius);\n background: transparent;\n color: var(--opus-text);\n cursor: pointer;\n font: inherit;\n font-size: var(--opus-control-font-size);\n text-align: left;\n}\n\n.item[data-has-icon-column=\"true\"] {\n grid-template-columns: 22px minmax(0, 1fr) auto;\n}\n\n.item:hover:not(:disabled),\n.item:focus-visible {\n outline: none;\n background: color-mix(in srgb, var(--opus-accent) 14%, transparent);\n}\n\n.item:disabled {\n color: color-mix(in srgb, var(--opus-muted) 52%, transparent);\n cursor: not-allowed;\n}\n\n.item[data-destructive=\"true\"] {\n color: var(--opus-error);\n}\n\n.item[data-destructive=\"true\"]:hover:not(:disabled),\n.item[data-destructive=\"true\"]:focus-visible {\n background: color-mix(in srgb, var(--opus-error) 12%, transparent);\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--opus-accent);\n font-size: 0.78rem;\n font-weight: 800;\n}\n\n.item[data-destructive=\"true\"] .icon {\n color: var(--opus-error);\n}\n\n.label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.shortcut {\n color: var(--opus-muted);\n font-size: 0.74rem;\n font-weight: 700;\n}\n\n@keyframes dropdownIn {\n from {\n opacity: 0;\n transform: translateY(-30px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes dropdownOut {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n\n to {\n opacity: 0;\n transform: translateY(30px);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .menu[data-phase=\"opening\"],\n .menu[data-phase=\"closing\"] {\n animation: none;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n .menu {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background: color-mix(in srgb, var(--opus-panel) 96%, transparent);\n }\n}\n","\"use client\";\n\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { DropdownMenuPlacement } from \"@/components/fields/types\";\nimport { useTopNavigation } from \"@/components/TopNavigation\";\nimport { useOpusTheme } from \"@/components/OpusThemeProvider\";\nimport { Button } from \"@/components/fields/Button\";\nimport { handleMenuKeyDown } from \"@/lib/a11y/menuKeyboardNavigation\";\nimport {\n resolveDropdownPortalStyle,\n type FloatingPortalStyle,\n} from \"@/lib/ui/floatingPortalPosition\";\nimport styles from \"./DropdownMenu.module.css\";\n\nconst MENU_EXIT_MS = 280;\n\ntype MenuPhase = \"closing\" | \"opening\";\n\nexport type DropdownMenuItemData = {\n checked?: boolean;\n disabled?: boolean;\n destructive?: boolean;\n icon?: ReactNode;\n id: string;\n label: string;\n onSelect?: () => void;\n shortcut?: string;\n};\n\ntype DropdownMenuProps = {\n closeOnEscape?: boolean;\n closeOnOutside?: boolean;\n closeOnSelect?: boolean;\n defaultOpen?: boolean;\n elevated?: boolean;\n items: DropdownMenuItemData[];\n label?: string;\n navigationId?: string;\n onOpenChange?: (open: boolean) => void;\n onSelect?: (item: DropdownMenuItemData) => void;\n open?: boolean;\n openOnHover?: boolean;\n placement?: DropdownMenuPlacement;\n trigger: ReactNode;\n};\n\nconst HOVER_CLOSE_DELAY_MS = 120;\n\ntype TriggerProps = {\n \"aria-controls\": string;\n \"aria-expanded\": boolean;\n \"aria-haspopup\": \"menu\";\n onClick: () => void;\n onFocus?: () => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n};\n\nfunction mergeTrigger(trigger: ReactNode, triggerProps: TriggerProps, label: string) {\n if (isValidElement(trigger)) {\n const element = trigger as ReactElement<{\n onClick?: () => void;\n onFocus?: (event: React.FocusEvent) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n }>;\n return cloneElement(element, {\n ...triggerProps,\n onClick: () => {\n element.props.onClick?.();\n triggerProps.onClick();\n },\n onFocus: (event: React.FocusEvent) => {\n element.props.onFocus?.(event);\n triggerProps.onFocus?.();\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n element.props.onKeyDown?.(event);\n triggerProps.onKeyDown?.(event);\n },\n });\n }\n\n return (\n <Button aria-label={label} {...triggerProps}>\n {trigger}\n </Button>\n );\n}\n\nexport function DropdownMenuItem({\n item,\n onSelect,\n showIconColumn = false,\n}: {\n item: DropdownMenuItemData;\n onSelect: (item: DropdownMenuItemData) => void;\n showIconColumn?: boolean;\n}) {\n const accessibleLabel = item.shortcut ? `${item.label}, ${item.shortcut}` : item.label;\n\n return (\n <button\n aria-checked={item.checked ?? undefined}\n aria-label={accessibleLabel}\n className={styles.item}\n data-checked={item.checked || undefined}\n data-destructive={item.destructive || undefined}\n data-has-icon-column={showIconColumn ? \"true\" : undefined}\n disabled={item.disabled}\n onClick={() => onSelect(item)}\n role=\"menuitem\"\n type=\"button\"\n >\n {showIconColumn ? (\n <span aria-hidden=\"true\" className={styles.icon}>\n {item.checked ? \"✓\" : item.icon}\n </span>\n ) : null}\n <span className={styles.label}>{item.label}</span>\n {item.shortcut ? <span className={styles.shortcut}>{item.shortcut}</span> : null}\n </button>\n );\n}\n\nfunction itemShowsIconColumn(item: DropdownMenuItemData) {\n if (item.checked) {\n return true;\n }\n\n if (item.icon === undefined || item.icon === null || item.icon === false) {\n return false;\n }\n\n return true;\n}\n\nexport function DropdownMenu({\n closeOnEscape = true,\n closeOnOutside = true,\n closeOnSelect = true,\n defaultOpen = false,\n elevated = false,\n items,\n label = \"Toggle menu\",\n navigationId,\n onOpenChange,\n onSelect,\n open,\n openOnHover = false,\n placement = \"bottom-start\",\n trigger,\n}: DropdownMenuProps) {\n const menuId = useId();\n const theme = useOpusTheme();\n const rootRef = useRef<HTMLSpanElement>(null);\n const menuRef = useRef<HTMLSpanElement>(null);\n const hoverCloseTimeoutRef = useRef<number | null>(null);\n const topNavigation = useTopNavigation();\n const inTopNavigation = navigationId !== undefined && topNavigation !== null;\n const registerMenuPresent = topNavigation?.setMenuPresent;\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [renderMenu, setRenderMenu] = useState(defaultOpen);\n const [phase, setPhase] = useState<MenuPhase>(\"opening\");\n const [portalReady, setPortalReady] = useState(false);\n const [portalStyle, setPortalStyle] = useState<FloatingPortalStyle | null>(null);\n const navigationOpen =\n inTopNavigation && open === undefined ? topNavigation.activeMenu === navigationId : undefined;\n const resolvedOpen = open ?? navigationOpen;\n const controlled = resolvedOpen !== undefined;\n const visible = controlled ? resolvedOpen : internalOpen;\n const resolvedCloseOnEscape = inTopNavigation ? topNavigation.closeOnEscape : closeOnEscape;\n const resolvedCloseOnOutside = inTopNavigation ? topNavigation.closeOnOutside : closeOnOutside;\n const resolvedCloseOnSelect = inTopNavigation ? topNavigation.closeOnSelect : closeOnSelect;\n const resolvedElevated = elevated || inTopNavigation;\n const dismissOnOutside = openOnHover ? false : resolvedCloseOnOutside;\n const disableClickToggle = openOnHover;\n\n const setVisible = useCallback((nextOpen: boolean) => {\n if (!controlled) {\n setInternalOpen(nextOpen);\n }\n\n onOpenChange?.(nextOpen);\n\n if (!nextOpen && inTopNavigation) {\n topNavigation.closeMenu();\n }\n }, [controlled, inTopNavigation, onOpenChange, topNavigation]);\n\n const clearHoverCloseTimeout = useCallback(() => {\n if (hoverCloseTimeoutRef.current) {\n window.clearTimeout(hoverCloseTimeoutRef.current);\n hoverCloseTimeoutRef.current = null;\n }\n }, []);\n\n const scheduleHoverClose = useCallback(() => {\n clearHoverCloseTimeout();\n hoverCloseTimeoutRef.current = window.setTimeout(() => {\n setVisible(false);\n }, HOVER_CLOSE_DELAY_MS);\n }, [clearHoverCloseTimeout, setVisible]);\n\n const handleMouseEnter = () => {\n if (!openOnHover) {\n return;\n }\n\n clearHoverCloseTimeout();\n setVisible(true);\n };\n\n const handleMouseLeave = () => {\n if (!openOnHover) {\n return;\n }\n\n scheduleHoverClose();\n };\n\n useEffect(() => {\n return () => {\n clearHoverCloseTimeout();\n };\n }, [clearHoverCloseTimeout]);\n\n useEffect(() => {\n const timeout = window.setTimeout(() => setPortalReady(true), 0);\n return () => window.clearTimeout(timeout);\n }, []);\n\n useLayoutEffect(() => {\n if (!renderMenu || !rootRef.current) {\n setPortalStyle(null);\n return;\n }\n\n const updatePosition = () => {\n const anchor = rootRef.current;\n if (!anchor) {\n return;\n }\n\n setPortalStyle(\n resolveDropdownPortalStyle(\n anchor.getBoundingClientRect(),\n menuRef.current?.getBoundingClientRect() ?? null,\n placement,\n resolvedElevated,\n ),\n );\n };\n\n updatePosition();\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [placement, renderMenu, resolvedElevated, phase]);\n\n useEffect(() => {\n let timeout: number | undefined;\n const frame = window.requestAnimationFrame(() => {\n if (visible) {\n setRenderMenu(true);\n setPhase(\"opening\");\n return;\n }\n\n setPhase(\"closing\");\n timeout = window.setTimeout(() => setRenderMenu(false), MENU_EXIT_MS);\n });\n\n return () => {\n window.cancelAnimationFrame(frame);\n if (timeout) {\n window.clearTimeout(timeout);\n }\n };\n }, [visible]);\n\n useEffect(() => {\n if (!inTopNavigation || !navigationId || !registerMenuPresent) {\n return;\n }\n\n registerMenuPresent(navigationId, renderMenu);\n return () => registerMenuPresent(navigationId, false);\n }, [inTopNavigation, navigationId, registerMenuPresent, renderMenu]);\n\n useEffect(() => {\n if (!visible) {\n return;\n }\n\n const frame = window.requestAnimationFrame(() => {\n menuRef.current\n ?.querySelector<HTMLElement>('[role=\"menuitem\"]:not([disabled])')\n ?.focus();\n });\n\n return () => window.cancelAnimationFrame(frame);\n }, [visible]);\n\n useEffect(() => {\n if (!visible) {\n return;\n }\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node;\n if (\n dismissOnOutside\n && !rootRef.current?.contains(target)\n && !menuRef.current?.contains(target)\n ) {\n setVisible(false);\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (resolvedCloseOnEscape && event.key === \"Escape\") {\n setVisible(false);\n }\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [dismissOnOutside, resolvedCloseOnEscape, setVisible, visible]);\n\n const handleSelect = (item: DropdownMenuItemData) => {\n if (item.disabled) {\n return;\n }\n\n item.onSelect?.();\n onSelect?.(item);\n\n if (inTopNavigation && navigationId) {\n topNavigation.onMenuSelect?.(navigationId, item);\n }\n\n if (resolvedCloseOnSelect) {\n setVisible(false);\n }\n };\n\n const showIconColumn = items.some(itemShowsIconColumn);\n\n const menuStyle: CSSProperties = {\n ...(portalStyle\n ? {\n left: portalStyle.left,\n top: portalStyle.top,\n ...(portalStyle.width ? { width: portalStyle.width } : {}),\n }\n : {}),\n };\n\n const menuNode = renderMenu ? (\n <span\n ref={menuRef}\n className={styles.menu}\n data-elevated={resolvedElevated ? \"true\" : undefined}\n data-phase={phase}\n data-open-on-hover={openOnHover || resolvedElevated ? \"true\" : undefined}\n data-has-icon-column={showIconColumn ? \"true\" : undefined}\n data-placement={placement}\n data-portaled=\"true\"\n data-theme={theme}\n id={menuId}\n role=\"menu\"\n style={menuStyle}\n onKeyDown={(event) => {\n handleMenuKeyDown(event.nativeEvent, event.currentTarget, () => setVisible(false));\n }}\n >\n {items.map((item) => (\n <DropdownMenuItem\n item={item}\n key={item.id}\n showIconColumn={showIconColumn}\n onSelect={handleSelect}\n />\n ))}\n </span>\n ) : null;\n\n return (\n <span\n ref={rootRef}\n className={styles.root}\n data-elevated={resolvedElevated ? \"true\" : undefined}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {mergeTrigger(\n trigger,\n {\n \"aria-controls\": menuId,\n \"aria-expanded\": visible,\n \"aria-haspopup\": \"menu\",\n onClick: () => {\n if (!disableClickToggle) {\n setVisible(!visible);\n return;\n }\n\n if (inTopNavigation) {\n setVisible(true);\n }\n },\n onFocus: () => {\n if (inTopNavigation) {\n setVisible(true);\n }\n },\n onKeyDown: (event) => {\n if (\n inTopNavigation\n && (event.key === \"Enter\" || event.key === \" \" || event.key === \"ArrowDown\")\n ) {\n event.preventDefault();\n setVisible(true);\n }\n },\n },\n label,\n )}\n {portalReady && menuNode ? createPortal(menuNode, document.body) : null}\n </span>\n );\n}\n",".target {\n display: block;\n min-width: 0;\n}\n\n.layer {\n position: fixed;\n inset: 0;\n z-index: 249;\n}\n\n.backdrop {\n position: absolute;\n inset: 0;\n margin: 0;\n padding: 0;\n border: 0;\n background: var(--opus-overlay-backdrop);\n -webkit-backdrop-filter: blur(var(--opus-overlay-blur)) saturate(var(--opus-overlay-saturate));\n backdrop-filter: blur(var(--opus-overlay-blur)) saturate(var(--opus-overlay-saturate));\n cursor: default;\n animation: contextMenuBackdropIn 180ms ease-out both;\n}\n\n.menu {\n position: fixed;\n z-index: 250;\n display: grid;\n gap: 4px;\n width: min(260px, calc(100vw - 32px));\n margin: 0;\n padding: 6px;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 24%, var(--opus-border));\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 94%, transparent);\n color: var(--opus-text);\n box-shadow:\n 0 24px 70px color-mix(in srgb, #020617 26%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n -webkit-backdrop-filter: blur(12px) saturate(1.18);\n backdrop-filter: blur(12px) saturate(1.18);\n transform-origin: top left;\n animation: contextMenuIn 150ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.layer[data-theme=\"light\"] .menu {\n box-shadow:\n 0 24px 70px color-mix(in srgb, #1a124a 12%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n}\n\n@keyframes contextMenuBackdropIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes contextMenuIn {\n from {\n opacity: 0;\n scale: 0.96;\n }\n\n to {\n opacity: 1;\n scale: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .menu {\n animation: none;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n .backdrop {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background: var(--opus-overlay-backdrop-solid);\n }\n\n .menu {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background: var(--opus-panel);\n }\n}\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n DropdownMenuItem,\n type DropdownMenuItemData,\n} from \"@/components/DropdownMenu\";\nimport type { Theme } from \"@/components/fields/types\";\nimport { useOpusTheme } from \"@/components/OpusThemeProvider\";\nimport { focusMenuItem, getMenuItems, handleMenuKeyDown } from \"@/lib/a11y/menuKeyboardNavigation\";\nimport styles from \"./ContextMenu.module.css\";\n\nfunction itemShowsIconColumn(item: DropdownMenuItemData) {\n if (item.checked) {\n return true;\n }\n\n if (item.icon === undefined || item.icon === null || item.icon === false) {\n return false;\n }\n\n return true;\n}\n\nfunction clampPosition(x: number, y: number, width: number, height: number) {\n const pad = 8;\n const maxX = Math.max(pad, window.innerWidth - width - pad);\n const maxY = Math.max(pad, window.innerHeight - height - pad);\n\n return {\n x: Math.min(Math.max(pad, x), maxX),\n y: Math.min(Math.max(pad, y), maxY),\n };\n}\n\nfunction resolveThemeFromNode(node: HTMLElement | null, fallback: Theme) {\n let current = node;\n\n while (current) {\n const theme = current.getAttribute(\"data-theme\");\n\n if (theme === \"light\" || theme === \"dark\") {\n return theme;\n }\n\n current = current.parentElement;\n }\n\n return fallback;\n}\n\ntype ActiveContextMenu = {\n items: DropdownMenuItemData[];\n label: string;\n onSelect?: (item: DropdownMenuItemData) => void;\n position: { x: number; y: number };\n targetId: string;\n theme: Theme;\n};\n\ntype ContextMenuTargetRegistration = {\n getElement: () => HTMLDivElement | null;\n items: DropdownMenuItemData[];\n label: string;\n onSelect?: (item: DropdownMenuItemData) => void;\n};\n\ntype ContextMenuContextValue = {\n activeTargetId: string | null;\n close: () => void;\n isOpen: boolean;\n menuId: string;\n openFromTarget: (targetId: string, x: number, y: number) => void;\n registerTarget: (targetId: string, registration: ContextMenuTargetRegistration) => () => void;\n};\n\nconst ContextMenuContext = createContext<ContextMenuContextValue | null>(null);\n\nexport function useContextMenu() {\n const context = useContext(ContextMenuContext);\n\n if (!context) {\n throw new Error(\"useContextMenu must be used within ContextMenuProvider.\");\n }\n\n return context;\n}\n\ntype ContextMenuProviderProps = {\n children: ReactNode;\n closeOnEscape?: boolean;\n closeOnOutside?: boolean;\n closeOnSelect?: boolean;\n onOpenChange?: (open: boolean) => void;\n open?: boolean;\n};\n\nexport function ContextMenuProvider({\n children,\n closeOnEscape = true,\n closeOnOutside = true,\n closeOnSelect = true,\n onOpenChange,\n open,\n}: ContextMenuProviderProps) {\n const theme = useOpusTheme();\n const menuId = useId();\n const menuRef = useRef<HTMLDivElement>(null);\n const backdropRef = useRef<HTMLButtonElement>(null);\n const targetsRef = useRef<Map<string, ContextMenuTargetRegistration>>(new Map());\n const [mounted, setMounted] = useState(false);\n const [activeMenu, setActiveMenu] = useState<ActiveContextMenu | null>(null);\n const [adjustedPosition, setAdjustedPosition] = useState<{ x: number; y: number } | null>(\n null,\n );\n const controlled = open !== undefined;\n const visible = controlled ? Boolean(open) : Boolean(activeMenu);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n const close = useCallback(() => {\n setActiveMenu(null);\n setAdjustedPosition(null);\n onOpenChange?.(false);\n }, [onOpenChange]);\n\n const registerTarget = useCallback(\n (targetId: string, registration: ContextMenuTargetRegistration) => {\n targetsRef.current.set(targetId, registration);\n return () => {\n targetsRef.current.delete(targetId);\n };\n },\n [],\n );\n\n const openFromTarget = useCallback(\n (targetId: string, x: number, y: number) => {\n const registration = targetsRef.current.get(targetId);\n\n if (!registration) {\n return;\n }\n\n const origin = registration.getElement();\n const nextMenu: ActiveContextMenu = {\n items: registration.items,\n label: registration.label,\n onSelect: registration.onSelect,\n position: { x, y },\n targetId,\n theme: resolveThemeFromNode(origin, theme),\n };\n\n setActiveMenu(nextMenu);\n setAdjustedPosition({ x, y });\n onOpenChange?.(true);\n },\n [onOpenChange, theme],\n );\n\n useEffect(() => {\n if (!controlled || !open || activeMenu) {\n return;\n }\n\n const registration = targetsRef.current.values().next().value as\n | ContextMenuTargetRegistration\n | undefined;\n\n if (!registration) {\n return;\n }\n\n const rect = registration.getElement()?.getBoundingClientRect();\n\n if (!rect) {\n return;\n }\n\n openFromTarget(\n Array.from(targetsRef.current.keys())[0] ?? \"\",\n rect.left + rect.width / 2,\n rect.top + rect.height / 2,\n );\n }, [activeMenu, controlled, open, openFromTarget]);\n\n useEffect(() => {\n if (controlled && !open) {\n setActiveMenu(null);\n setAdjustedPosition(null);\n }\n }, [controlled, open]);\n\n useLayoutEffect(() => {\n if (!visible || !activeMenu || !menuRef.current) {\n return;\n }\n\n const menuRect = menuRef.current.getBoundingClientRect();\n setAdjustedPosition(\n clampPosition(\n activeMenu.position.x,\n activeMenu.position.y,\n menuRect.width,\n menuRect.height,\n ),\n );\n }, [activeMenu, visible]);\n\n useEffect(() => {\n if (!visible || !menuRef.current) {\n return;\n }\n\n const frame = window.requestAnimationFrame(() => {\n const menu = menuRef.current;\n if (!menu) {\n return;\n }\n\n const items = getMenuItems(menu);\n focusMenuItem(items, 0);\n });\n\n return () => window.cancelAnimationFrame(frame);\n }, [visible, activeMenu?.targetId]);\n\n useEffect(() => {\n if (!visible) {\n return;\n }\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node;\n const activeTarget = activeMenu\n ? targetsRef.current.get(activeMenu.targetId)?.getElement()\n : null;\n\n if (\n closeOnOutside &&\n !activeTarget?.contains(target) &&\n !menuRef.current?.contains(target)\n ) {\n close();\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (closeOnEscape && event.key === \"Escape\") {\n close();\n return;\n }\n\n if (menuRef.current) {\n handleMenuKeyDown(event, menuRef.current, close);\n }\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [activeMenu, close, closeOnEscape, closeOnOutside, visible]);\n\n const handleSelect = (item: DropdownMenuItemData) => {\n if (item.disabled) {\n return;\n }\n\n activeMenu?.onSelect?.(item);\n\n if (closeOnSelect) {\n close();\n }\n };\n\n const contextValue: ContextMenuContextValue = {\n activeTargetId: activeMenu?.targetId ?? null,\n close,\n isOpen: visible,\n menuId,\n openFromTarget,\n registerTarget,\n };\n\n const items = activeMenu?.items ?? [];\n const showIconColumn = items.some(itemShowsIconColumn);\n const menuPosition = adjustedPosition ?? activeMenu?.position ?? null;\n const portalTheme = activeMenu?.theme ?? theme;\n\n return (\n <ContextMenuContext.Provider value={contextValue}>\n {children}\n {mounted && visible && activeMenu && menuPosition\n ? createPortal(\n <div className={styles.layer} data-theme={portalTheme}>\n <button\n ref={backdropRef}\n aria-label=\"Dismiss context menu\"\n className={styles.backdrop}\n type=\"button\"\n onClick={() => {\n if (closeOnOutside) {\n close();\n }\n }}\n />\n <div\n ref={menuRef}\n aria-label={activeMenu.label}\n className={styles.menu}\n data-has-icon-column={showIconColumn ? \"true\" : undefined}\n id={menuId}\n role=\"menu\"\n style={{ left: menuPosition.x, top: menuPosition.y }}\n >\n {items.map((item) => (\n <DropdownMenuItem\n item={item}\n key={item.id}\n showIconColumn={showIconColumn}\n onSelect={handleSelect}\n />\n ))}\n </div>\n </div>,\n document.body,\n )\n : null}\n </ContextMenuContext.Provider>\n );\n}\n\ntype ContextMenuTargetProps = {\n children: ReactNode;\n className?: string;\n items: DropdownMenuItemData[];\n label?: string;\n onSelect?: (item: DropdownMenuItemData) => void;\n};\n\nexport function ContextMenuTarget({\n children,\n className,\n items,\n label = \"Context menu\",\n onSelect,\n}: ContextMenuTargetProps) {\n const targetId = useId();\n const targetRef = useRef<HTMLDivElement>(null);\n const { activeTargetId, isOpen, menuId, openFromTarget, registerTarget } = useContextMenu();\n\n useEffect(\n () =>\n registerTarget(targetId, {\n getElement: () => targetRef.current,\n items,\n label,\n onSelect,\n }),\n [items, label, onSelect, registerTarget, targetId],\n );\n\n const handleContextMenu = (event: MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n openFromTarget(targetId, event.clientX, event.clientY);\n };\n\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ContextMenu\" || (event.shiftKey && event.key === \"F10\")) {\n event.preventDefault();\n const rect = targetRef.current?.getBoundingClientRect();\n\n if (rect) {\n openFromTarget(targetId, rect.left + rect.width / 2, rect.top + rect.height / 2);\n }\n }\n };\n\n const targetOpen = isOpen && activeTargetId === targetId;\n\n return (\n <div\n ref={targetRef}\n aria-controls={targetOpen ? menuId : undefined}\n aria-expanded={targetOpen}\n aria-haspopup=\"menu\"\n aria-label={label}\n className={className ? `${styles.target} ${className}` : styles.target}\n onContextMenu={handleContextMenu}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n >\n {children}\n </div>\n );\n}\n\nContextMenuTarget.displayName = \"ContextMenuTarget\";\n",".backdrop {\n position: fixed;\n inset: 0;\n z-index: 80;\n display: grid;\n place-items: start center;\n padding: min(12vh, 12%, 96px) 20px 20px;\n background: var(--opus-overlay-backdrop);\n -webkit-backdrop-filter: blur(var(--opus-overlay-blur)) saturate(var(--opus-overlay-saturate));\n backdrop-filter: blur(var(--opus-overlay-blur)) saturate(var(--opus-overlay-saturate));\n}\n\n.backdrop[data-dismissible=\"false\"] {\n cursor: not-allowed;\n}\n\n.backdrop[data-phase=\"opening\"] {\n animation: commandPaletteBackdropIn 180ms ease-out both;\n}\n\n.backdrop[data-phase=\"closing\"] {\n animation: commandPaletteBackdropOut 180ms ease-in both;\n}\n\n.panel {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr) auto;\n width: min(100%, 560px);\n max-height: min(70vh, 70%, 520px);\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 22%, var(--opus-border));\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 96%, transparent);\n box-shadow:\n 0 24px 80px color-mix(in srgb, #020617 32%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n cursor: default;\n}\n\n.panel[data-phase=\"opening\"] {\n animation: commandPalettePanelIn 220ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n.panel[data-phase=\"closing\"] {\n animation: commandPalettePanelOut 180ms ease-in both;\n}\n\n.searchWrap {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-items: center;\n gap: 10px;\n padding: 14px 16px;\n border-bottom: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n}\n\n.searchIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n color: var(--opus-muted);\n line-height: 0;\n}\n\n.searchIconSvg {\n width: 18px;\n height: 18px;\n}\n\n.searchInput {\n width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--opus-text);\n font-size: 0.95rem;\n font-weight: 600;\n}\n\n.searchInput::placeholder {\n color: color-mix(in srgb, var(--opus-muted) 84%, transparent);\n}\n\n.results {\n display: grid;\n gap: 8px;\n min-height: 0;\n padding: 10px;\n overflow: auto;\n}\n\n.group {\n display: grid;\n gap: 4px;\n}\n\n.groupLabel {\n margin: 0;\n padding: 4px 8px 2px;\n color: var(--opus-muted);\n font-size: 0.72rem;\n font-weight: 800;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n}\n\n.item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n width: 100%;\n padding: 10px 12px;\n border: 0;\n border-radius: var(--opus-input-radius);\n background: transparent;\n color: var(--opus-text);\n text-align: left;\n cursor: pointer;\n transition: background 140ms ease;\n}\n\n.item:hover,\n.item[data-active=\"true\"] {\n background: color-mix(in srgb, var(--opus-accent) 14%, transparent);\n}\n\n.itemMain {\n display: grid;\n gap: 2px;\n min-width: 0;\n}\n\n.itemLabel {\n font-size: 0.88rem;\n font-weight: 700;\n line-height: 1.3;\n}\n\n.itemDescription {\n color: var(--opus-muted);\n font-size: 0.78rem;\n line-height: 1.35;\n}\n\n.shortcut {\n flex-shrink: 0;\n padding: 3px 6px;\n border-radius: var(--opus-input-radius-small);\n border: 1px solid color-mix(in srgb, var(--opus-border) 88%, transparent);\n background: color-mix(in srgb, var(--opus-panel) 88%, transparent);\n color: var(--opus-muted);\n font-size: 0.72rem;\n font-weight: 700;\n letter-spacing: 0.04em;\n}\n\n.empty {\n margin: 0;\n padding: 28px 16px;\n color: var(--opus-muted);\n font-size: 0.88rem;\n text-align: center;\n}\n\n.footer {\n display: flex;\n flex-wrap: wrap;\n gap: 10px 14px;\n padding: 10px 14px;\n border-top: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n color: var(--opus-muted);\n font-size: 0.72rem;\n font-weight: 600;\n}\n\n@keyframes commandPaletteBackdropIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes commandPaletteBackdropOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes commandPalettePanelIn {\n from {\n opacity: 0;\n transform: translateY(-10px) scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes commandPalettePanelOut {\n from {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n to {\n opacity: 0;\n transform: translateY(-8px) scale(0.98);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .panel {\n animation: none !important;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n .backdrop {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background: var(--opus-overlay-backdrop-solid);\n }\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n}\n","\"use client\";\n\nimport {\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent as ReactKeyboardEvent,\n} from \"react\";\nimport { faMagnifyingGlass } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { useOverlayAccessibility } from \"@/lib/a11y/useOverlayAccessibility\";\nimport styles from \"./CommandPalette.module.css\";\n\nexport type CommandPaletteItem = {\n description?: string;\n disabled?: boolean;\n group?: string;\n id: string;\n label: string;\n shortcut?: string;\n};\n\ntype CommandPalettePhase = \"closing\" | \"opening\";\n\nconst EXIT_ANIMATION_MS = 180;\n\ntype CommandPaletteProps = {\n closeOnSelect?: boolean;\n dismissOnBackdrop?: boolean;\n dismissOnEscape?: boolean;\n emptyMessage?: string;\n items: CommandPaletteItem[];\n onClose: () => void;\n onSelect: (item: CommandPaletteItem) => void;\n open: boolean;\n placeholder?: string;\n query?: string;\n onQueryChange?: (query: string) => void;\n showDescriptions?: boolean;\n showGroups?: boolean;\n showShortcuts?: boolean;\n};\n\nfunction normalise(value: string) {\n return value.trim().toLowerCase();\n}\n\nfunction matchesItem(item: CommandPaletteItem, query: string) {\n if (!query) {\n return true;\n }\n\n const haystack = [item.label, item.description, item.group]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n\n return haystack.includes(query);\n}\n\nexport function CommandPalette({\n closeOnSelect = true,\n dismissOnBackdrop = true,\n dismissOnEscape = true,\n emptyMessage = \"No commands found.\",\n items,\n onClose,\n onSelect,\n open,\n placeholder = \"Search commands…\",\n query,\n onQueryChange,\n showDescriptions = true,\n showGroups = true,\n showShortcuts = true,\n}: CommandPaletteProps) {\n const titleId = useId();\n const inputId = useId();\n const listboxId = useId();\n const inputRef = useRef<HTMLInputElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const resultsRef = useRef<HTMLDivElement>(null);\n const [rendered, setRendered] = useState(open);\n const [phase, setPhase] = useState<CommandPalettePhase>(\"opening\");\n\n useOverlayAccessibility(open && rendered, panelRef, {\n initialFocusRef: inputRef,\n });\n const [internalQuery, setInternalQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n\n const currentQuery = query ?? internalQuery;\n\n const filteredItems = useMemo(() => {\n const nextQuery = normalise(currentQuery);\n return items.filter((item) => !item.disabled && matchesItem(item, nextQuery));\n }, [currentQuery, items]);\n\n const groupedItems = useMemo(() => {\n if (!showGroups) {\n return [{ group: null as string | null, items: filteredItems }];\n }\n\n const groups = new Map<string | null, CommandPaletteItem[]>();\n\n for (const item of filteredItems) {\n const key = item.group ?? null;\n const bucket = groups.get(key) ?? [];\n bucket.push(item);\n groups.set(key, bucket);\n }\n\n return Array.from(groups.entries()).map(([group, groupItems]) => ({\n group,\n items: groupItems,\n }));\n }, [filteredItems, showGroups]);\n\n const flatItems = useMemo(\n () => groupedItems.flatMap((group) => group.items),\n [groupedItems],\n );\n\n useEffect(() => {\n let timeout: number | undefined;\n const frame = window.requestAnimationFrame(() => {\n if (open) {\n setRendered(true);\n setPhase(\"opening\");\n return;\n }\n\n setPhase(\"closing\");\n timeout = window.setTimeout(() => setRendered(false), EXIT_ANIMATION_MS);\n });\n\n return () => {\n window.cancelAnimationFrame(frame);\n if (timeout) {\n window.clearTimeout(timeout);\n }\n };\n }, [open]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n\n setActiveIndex(0);\n const frame = window.requestAnimationFrame(() => {\n inputRef.current?.focus();\n inputRef.current?.select();\n });\n\n return () => window.cancelAnimationFrame(frame);\n }, [open]);\n\n useEffect(() => {\n if (activeIndex >= flatItems.length) {\n setActiveIndex(Math.max(0, flatItems.length - 1));\n }\n }, [activeIndex, flatItems.length]);\n\n useEffect(() => {\n if (!open || flatItems.length === 0) {\n return;\n }\n\n const activeItem = flatItems[activeIndex];\n if (!activeItem) {\n return;\n }\n\n const element = resultsRef.current?.querySelector<HTMLElement>(\n `#${CSS.escape(`${listboxId}-${activeItem.id}`)}`,\n );\n\n element?.scrollIntoView({ block: \"nearest\" });\n }, [activeIndex, flatItems, listboxId, open]);\n\n useEffect(() => {\n if (!open || !dismissOnEscape) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [dismissOnEscape, onClose, open]);\n\n const setQuery = (next: string) => {\n if (onQueryChange) {\n onQueryChange(next);\n } else {\n setInternalQuery(next);\n }\n\n setActiveIndex(0);\n };\n\n const handleSelect = (item: CommandPaletteItem) => {\n if (item.disabled) {\n return;\n }\n\n onSelect(item);\n if (closeOnSelect) {\n onClose();\n }\n };\n\n const handleInputKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setActiveIndex((current) => Math.min(current + 1, Math.max(flatItems.length - 1, 0)));\n return;\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setActiveIndex((current) => Math.max(current - 1, 0));\n return;\n }\n\n if (event.key === \"Enter\" && flatItems[activeIndex]) {\n event.preventDefault();\n handleSelect(flatItems[activeIndex]);\n }\n };\n\n if (!rendered) {\n return null;\n }\n\n return (\n <div\n className={styles.backdrop}\n data-dismissible={dismissOnBackdrop}\n data-phase={phase}\n onMouseDown={(event) => {\n if (event.currentTarget === event.target && dismissOnBackdrop) {\n onClose();\n }\n }}\n >\n <div\n ref={panelRef}\n aria-labelledby={titleId}\n aria-modal=\"true\"\n className={styles.panel}\n data-phase={phase}\n role=\"dialog\"\n >\n <h2 className={styles.visuallyHidden} id={titleId}>\n Command palette\n </h2>\n <label className={styles.searchWrap} htmlFor={inputId}>\n <span aria-hidden=\"true\" className={styles.searchIcon}>\n <FontAwesomeIcon className={styles.searchIconSvg} icon={faMagnifyingGlass} />\n </span>\n <input\n ref={inputRef}\n aria-activedescendant={\n flatItems[activeIndex] ? `${listboxId}-${flatItems[activeIndex].id}` : undefined\n }\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-expanded={open}\n aria-label=\"Search commands\"\n className={styles.searchInput}\n id={inputId}\n onChange={(event) => setQuery(event.target.value)}\n onKeyDown={handleInputKeyDown}\n placeholder={placeholder}\n role=\"combobox\"\n type=\"search\"\n value={currentQuery}\n />\n </label>\n\n <div\n ref={resultsRef}\n aria-label=\"Command results\"\n className={styles.results}\n id={listboxId}\n role=\"listbox\"\n >\n {flatItems.length === 0 ? (\n <p className={styles.empty} role=\"status\">\n {emptyMessage}\n </p>\n ) : (\n groupedItems.map(({ group, items: groupItems }) => (\n <div key={group ?? \"default\"} className={styles.group}>\n {showGroups && group ? <p className={styles.groupLabel}>{group}</p> : null}\n {groupItems.map((item) => {\n const index = flatItems.findIndex((entry) => entry.id === item.id);\n const active = index === activeIndex;\n\n return (\n <button\n key={item.id}\n aria-selected={active}\n className={styles.item}\n data-active={active ? \"true\" : \"false\"}\n id={`${listboxId}-${item.id}`}\n onClick={() => handleSelect(item)}\n onMouseEnter={() => setActiveIndex(index)}\n role=\"option\"\n type=\"button\"\n >\n <span className={styles.itemMain}>\n <span className={styles.itemLabel}>{item.label}</span>\n {showDescriptions && item.description ? (\n <span className={styles.itemDescription}>{item.description}</span>\n ) : null}\n </span>\n {showShortcuts && item.shortcut ? (\n <span aria-hidden=\"true\" className={styles.shortcut}>\n {item.shortcut}\n </span>\n ) : null}\n </button>\n );\n })}\n </div>\n ))\n )}\n </div>\n\n <footer className={styles.footer}>\n <span>↑↓ Navigate</span>\n <span>↵ Select</span>\n <span>Esc Close</span>\n </footer>\n </div>\n </div>\n );\n}\n",".group {\n width: 100%;\n overflow: hidden;\n border: 1px solid var(--opus-border);\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 92%, transparent);\n box-shadow: var(--opus-shadow);\n}\n","\"use client\";\n\nimport { createContext, useCallback, useMemo, useState, type ReactNode } from \"react\";\nimport type { AccordionGroupType } from \"@/components/fields/types\";\nimport styles from \"./AccordionGroup.module.css\";\n\ntype AccordionGroupContextValue = {\n collapsible: boolean;\n isOpen: (value: string) => boolean;\n toggle: (value: string) => void;\n type: AccordionGroupType;\n};\n\nexport const AccordionGroupContext = createContext<AccordionGroupContextValue | null>(null);\n\ntype AccordionGroupProps = {\n children: ReactNode;\n className?: string;\n collapsible?: boolean;\n defaultValue?: string | string[];\n onValueChange?: (value: string | string[]) => void;\n type?: AccordionGroupType;\n value?: string | string[];\n};\n\nexport function AccordionGroup({\n children,\n className,\n collapsible = true,\n defaultValue,\n onValueChange,\n type = \"single\",\n value,\n}: AccordionGroupProps) {\n const [internalValue, setInternalValue] = useState<string | string[]>(() => {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n\n return type === \"multiple\" ? [] : \"\";\n });\n\n const currentValue = value ?? internalValue;\n\n const setValue = useCallback(\n (next: string | string[]) => {\n if (value === undefined) {\n setInternalValue(next);\n }\n\n onValueChange?.(next);\n },\n [onValueChange, value],\n );\n\n const isOpen = useCallback(\n (itemValue: string) => {\n if (type === \"multiple\") {\n return Array.isArray(currentValue) && currentValue.includes(itemValue);\n }\n\n return currentValue === itemValue;\n },\n [currentValue, type],\n );\n\n const toggle = useCallback(\n (itemValue: string) => {\n if (type === \"multiple\") {\n const openValues = Array.isArray(currentValue) ? currentValue : [];\n const next = openValues.includes(itemValue)\n ? openValues.filter((entry) => entry !== itemValue)\n : [...openValues, itemValue];\n setValue(next);\n return;\n }\n\n const isCurrentlyOpen = currentValue === itemValue;\n if (isCurrentlyOpen && !collapsible) {\n return;\n }\n\n setValue(isCurrentlyOpen ? \"\" : itemValue);\n },\n [collapsible, currentValue, setValue, type],\n );\n\n const contextValue = useMemo(\n () => ({\n collapsible,\n isOpen,\n toggle,\n type,\n }),\n [collapsible, isOpen, toggle, type],\n );\n\n return (\n <AccordionGroupContext.Provider value={contextValue}>\n <div aria-label=\"Accordion\" className={[styles.group, className].filter(Boolean).join(\" \")} role=\"group\">\n {children}\n </div>\n </AccordionGroupContext.Provider>\n );\n}\n",".item {\n border-bottom: 1px solid var(--opus-border);\n}\n\n.standalone {\n overflow: hidden;\n border: 1px solid var(--opus-border);\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 92%, transparent);\n box-shadow: var(--opus-shadow);\n}\n\n.standalone .item {\n border-bottom: 0;\n}\n\n.item:last-child {\n border-bottom: 0;\n}\n\n.trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n border: 0;\n background: transparent;\n color: var(--opus-text);\n font-size: 0.92rem;\n font-weight: 600;\n line-height: 1.35;\n text-align: left;\n cursor: pointer;\n transition:\n background 160ms ease,\n color 160ms ease;\n}\n\n.trigger:hover:not(:disabled) {\n background: color-mix(in srgb, var(--opus-accent) 8%, transparent);\n}\n\n.trigger:focus-visible {\n outline: none;\n box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--opus-accent) 40%, transparent);\n}\n\n.trigger:disabled {\n color: var(--opus-muted);\n cursor: not-allowed;\n}\n\n.triggerLabel {\n min-width: 0;\n}\n\n.chevron {\n width: 16px;\n height: 16px;\n color: var(--opus-muted);\n flex-shrink: 0;\n transition: transform 220ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.item[data-open=\"true\"] .chevron {\n transform: rotate(180deg);\n color: var(--opus-accent);\n}\n\n.panel {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 260ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.item[data-open=\"true\"] .panel {\n grid-template-rows: 1fr;\n}\n\n.panelInner {\n overflow: hidden;\n min-height: 0;\n}\n\n.content {\n padding: 0 16px 16px;\n color: var(--opus-muted);\n font-size: 0.86rem;\n line-height: 1.55;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .panel {\n transition: none;\n }\n\n .chevron {\n transition: none;\n }\n}\n","\"use client\";\n\nimport {\n useCallback,\n useContext,\n useId,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { AccordionGroupContext } from \"@/components/AccordionGroup\";\nimport styles from \"./Accordion.module.css\";\n\nfunction ChevronIcon() {\n return (\n <svg aria-hidden=\"true\" className={styles.chevron} viewBox=\"0 0 16 16\">\n <path\n d=\"M4 6.2 8 10.2 12 6.2\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.75\"\n />\n </svg>\n );\n}\n\ntype AccordionProps = {\n children: ReactNode;\n className?: string;\n defaultOpen?: boolean;\n disabled?: boolean;\n onOpenChange?: (open: boolean) => void;\n open?: boolean;\n title: string;\n value?: string;\n};\n\nexport function Accordion({\n children,\n className,\n defaultOpen = false,\n disabled = false,\n onOpenChange,\n open,\n title,\n value,\n}: AccordionProps) {\n const group = useContext(AccordionGroupContext);\n const generatedId = useId();\n const itemValue = value ?? generatedId;\n const triggerId = `${itemValue}-trigger`;\n const panelId = `${itemValue}-panel`;\n const [standaloneOpen, setStandaloneOpen] = useState(defaultOpen);\n\n const isOpen = group ? group.isOpen(itemValue) : (open ?? standaloneOpen);\n\n const handleToggle = () => {\n if (disabled) {\n return;\n }\n\n if (group) {\n group.toggle(itemValue);\n return;\n }\n\n const next = !(open ?? standaloneOpen);\n if (open === undefined) {\n setStandaloneOpen(next);\n }\n\n onOpenChange?.(next);\n };\n\n const content = (\n <div className={[styles.item, className].filter(Boolean).join(\" \")} data-open={isOpen ? \"true\" : \"false\"}>\n <button\n aria-controls={panelId}\n aria-expanded={isOpen}\n className={styles.trigger}\n disabled={disabled}\n id={triggerId}\n onClick={handleToggle}\n type=\"button\"\n >\n <span className={styles.triggerLabel}>{title}</span>\n <ChevronIcon />\n </button>\n <div\n aria-labelledby={triggerId}\n className={styles.panel}\n id={panelId}\n inert={!isOpen || undefined}\n role=\"region\"\n >\n <div className={styles.panelInner}>\n <div className={styles.content}>{children}</div>\n </div>\n </div>\n </div>\n );\n\n if (group) {\n return content;\n }\n\n return <div className={styles.standalone}>{content}</div>;\n}\n",".root {\n display: grid;\n gap: 8px;\n width: 100%;\n}\n\n.contentShell {\n overflow: hidden;\n max-height: calc(var(--show-more-lines, 3) * 1.55em);\n transition: max-height 260ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.contentShell[data-measured=\"true\"] {\n max-height: var(--show-more-collapsed-height);\n}\n\n.contentShell[data-measured=\"true\"][data-expanded=\"true\"] {\n max-height: var(--show-more-full-height);\n}\n\n.inner {\n color: var(--opus-text);\n font-size: 0.86rem;\n line-height: 1.55;\n white-space: pre-wrap;\n}\n\n.toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n justify-self: center;\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--opus-text);\n font-size: 0.82rem;\n font-weight: 600;\n line-height: 1.2;\n cursor: pointer;\n transition: color 160ms ease;\n}\n\n.toggle:hover {\n color: var(--opus-muted);\n}\n\n.toggle:focus-visible {\n outline: 2px solid color-mix(in srgb, var(--opus-accent) 65%, transparent);\n outline-offset: 2px;\n border-radius: var(--opus-input-radius-mark);\n}\n\n.toggleLabel {\n animation: showMoreLabelIn 220ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.chevron {\n width: 14px;\n height: 14px;\n color: var(--opus-muted);\n flex-shrink: 0;\n transform: rotate(0deg);\n transition:\n transform 260ms cubic-bezier(0.16, 1, 0.3, 1),\n color 220ms ease;\n}\n\n.toggle[data-expanded=\"true\"] .chevron {\n transform: rotate(180deg);\n color: var(--opus-text);\n}\n\n@keyframes showMoreLabelIn {\n from {\n opacity: 0;\n transform: translateY(3px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .contentShell {\n transition: none;\n }\n\n .chevron {\n transition: none;\n }\n\n .toggleLabel {\n animation: none;\n }\n}\n","\"use client\";\n\nimport {\n useCallback,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport styles from \"./ShowMore.module.css\";\n\ntype ShowMoreProps = {\n children: ReactNode;\n defaultExpanded?: boolean;\n expanded?: boolean;\n maxLines?: number;\n onExpandedChange?: (expanded: boolean) => void;\n showLessLabel?: string;\n showMoreLabel?: string;\n};\n\nfunction ChevronIcon() {\n return (\n <svg aria-hidden=\"true\" className={styles.chevron} viewBox=\"0 0 16 16\">\n <path\n d=\"M4 6.2 8 10.2 12 6.2\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.75\"\n />\n </svg>\n );\n}\n\nexport function ShowMore({\n children,\n defaultExpanded = false,\n expanded,\n maxLines = 3,\n onExpandedChange,\n showLessLabel = \"Show less\",\n showMoreLabel = \"Show more\",\n}: ShowMoreProps) {\n const contentId = useId();\n const innerRef = useRef<HTMLDivElement>(null);\n const [internalExpanded, setInternalExpanded] = useState(defaultExpanded);\n const [canExpand, setCanExpand] = useState(false);\n const [heights, setHeights] = useState<{ collapsed: number; full: number } | null>(null);\n const isExpanded = expanded ?? internalExpanded;\n const clampLines = Math.max(1, maxLines);\n\n const measureHeights = useCallback(() => {\n const inner = innerRef.current;\n if (!inner) {\n return;\n }\n\n const lineHeight = Number.parseFloat(getComputedStyle(inner).lineHeight);\n const full = inner.scrollHeight;\n const collapsed = Number.isFinite(lineHeight) ? Math.ceil(lineHeight * clampLines) : full;\n\n setHeights({ collapsed, full });\n setCanExpand(full > collapsed + 1);\n }, [clampLines]);\n\n useLayoutEffect(() => {\n measureHeights();\n }, [children, measureHeights]);\n\n useLayoutEffect(() => {\n const inner = innerRef.current;\n if (!inner || typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n measureHeights();\n });\n\n observer.observe(inner);\n return () => observer.disconnect();\n }, [measureHeights]);\n\n const handleToggle = () => {\n const next = !isExpanded;\n if (expanded === undefined) {\n setInternalExpanded(next);\n }\n onExpandedChange?.(next);\n };\n\n const showToggle = isExpanded || canExpand;\n const shellStyle = {\n \"--show-more-lines\": clampLines,\n ...(heights\n ? {\n \"--show-more-collapsed-height\": `${heights.collapsed}px`,\n \"--show-more-full-height\": `${heights.full}px`,\n }\n : {}),\n } as CSSProperties;\n\n return (\n <div className={styles.root}>\n <div\n className={styles.contentShell}\n data-expanded={isExpanded ? \"true\" : \"false\"}\n data-measured={heights ? \"true\" : \"false\"}\n id={contentId}\n inert={!isExpanded || undefined}\n style={shellStyle}\n >\n <div ref={innerRef} className={styles.inner}>\n {children}\n </div>\n </div>\n {showToggle ? (\n <button\n aria-controls={contentId}\n aria-expanded={isExpanded}\n className={styles.toggle}\n data-expanded={isExpanded ? \"true\" : \"false\"}\n onClick={handleToggle}\n type=\"button\"\n >\n <span key={isExpanded ? \"less\" : \"more\"} className={styles.toggleLabel}>\n {isExpanded ? showLessLabel : showMoreLabel}\n </span>\n <ChevronIcon />\n </button>\n ) : null}\n </div>\n );\n}\n",".toast {\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n width: min(100%, 380px);\n}\n\n.body {\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border-radius: inherit;\n}\n\n.toast[data-status=\"error\"] {\n --toast-accent: #ef4444;\n --toast-icon-bg: #ef4444;\n --toast-icon-fg: #ffffff;\n --toast-title: var(--opus-text, #f5f7ff);\n --toast-body: var(--opus-muted, rgba(223, 226, 255, 0.72));\n}\n\n.toast[data-status=\"success\"] {\n --toast-accent: #16a34a;\n --toast-icon-bg: #16a34a;\n --toast-icon-fg: #ffffff;\n --toast-title: var(--opus-text, #f5f7ff);\n --toast-body: var(--opus-muted, rgba(223, 226, 255, 0.72));\n}\n\n.toast[data-status=\"warning\"] {\n --toast-accent: #d97706;\n --toast-icon-bg: #d97706;\n --toast-icon-fg: #ffffff;\n --toast-title: var(--opus-text, #f5f7ff);\n --toast-body: var(--opus-muted, rgba(223, 226, 255, 0.72));\n}\n\n.toast[data-status=\"info\"] {\n --toast-accent: #2563eb;\n --toast-icon-bg: #2563eb;\n --toast-icon-fg: #ffffff;\n --toast-title: var(--opus-text, #f5f7ff);\n --toast-body: var(--opus-muted, rgba(223, 226, 255, 0.72));\n}\n\n.main {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: start;\n gap: 12px;\n padding: 12px 14px;\n}\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n margin-top: 1px;\n border-radius: 999px;\n background: var(--toast-icon-bg);\n color: var(--toast-icon-fg);\n flex-shrink: 0;\n}\n\n.iconSvg {\n width: 16px;\n height: 16px;\n}\n\n.iconMark {\n font-size: 1.1rem;\n font-weight: 800;\n line-height: 1;\n}\n\n.content {\n display: grid;\n gap: 2px;\n min-width: 0;\n padding-top: 2px;\n}\n\n.title {\n margin: 0;\n color: var(--toast-title);\n font-size: 0.88rem;\n font-weight: 700;\n line-height: 1.35;\n}\n\n.description {\n margin: 0;\n color: var(--toast-body);\n font-size: 0.8rem;\n line-height: 1.4;\n}\n\n.dismiss {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n align-self: start;\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0;\n border-radius: 999px;\n background: transparent;\n color: var(--opus-muted, rgba(223, 226, 255, 0.72));\n cursor: pointer;\n flex-shrink: 0;\n transition:\n background 160ms ease,\n color 160ms ease;\n}\n\n.dismiss:hover {\n background: color-mix(in srgb, var(--toast-accent) 12%, transparent);\n color: var(--opus-text, #f5f7ff);\n}\n\n.dismiss:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--toast-accent) 24%, transparent);\n}\n\n.dismissIcon {\n width: 14px;\n height: 14px;\n}\n\n.progressTrack {\n height: 3px;\n margin-top: auto;\n background: color-mix(in srgb, var(--toast-accent, var(--opus-accent, #8f6cff)) 16%, transparent);\n}\n\n.progressBar {\n height: 100%;\n background: var(--toast-accent, var(--opus-accent, #8f6cff));\n transform-origin: left center;\n animation: toastProgress linear forwards;\n}\n\n.toast[data-paused=\"true\"] .progressBar {\n animation-play-state: paused;\n}\n\n@keyframes toastProgress {\n from {\n transform: scaleX(1);\n }\n\n to {\n transform: scaleX(0);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progressBar {\n animation: none;\n transform: scaleX(0);\n }\n}\n","\"use client\";\n\nimport type { AlertStatus } from \"@/components/fields/types\";\nimport { AlertStatusIcon } from \"@/components/AlertStatusIcon\";\nimport styles from \"./Toast.module.css\";\n\ntype ToastProps = {\n description?: string;\n dismissible?: boolean;\n duration?: number;\n onDismiss?: () => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n paused?: boolean;\n phase?: \"entering\" | \"visible\" | \"exiting\";\n status?: AlertStatus;\n title: string;\n};\n\nexport function Toast({\n description,\n dismissible = true,\n duration,\n onDismiss,\n onMouseEnter,\n onMouseLeave,\n paused = false,\n phase = \"visible\",\n status = \"success\",\n title,\n}: ToastProps) {\n const showProgress = duration !== undefined && duration > 0;\n const isAssertive = status === \"error\" || status === \"warning\";\n\n return (\n <div\n className={styles.toast}\n data-paused={paused ? \"true\" : undefined}\n data-phase={phase}\n data-status={status}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n aria-live={isAssertive ? \"assertive\" : \"polite\"}\n role={isAssertive ? \"alert\" : \"status\"}\n >\n <div className={styles.body}>\n <div className={styles.main}>\n <div aria-hidden=\"true\" className={styles.icon}>\n <AlertStatusIcon markClassName={styles.iconMark} status={status} svgClassName={styles.iconSvg} />\n </div>\n <div className={styles.content}>\n <p className={styles.title}>{title}</p>\n {description ? <p className={styles.description}>{description}</p> : null}\n </div>\n {dismissible ? (\n <button\n aria-label=\"Dismiss toast\"\n className={styles.dismiss}\n onClick={onDismiss}\n type=\"button\"\n >\n <svg aria-hidden=\"true\" className={styles.dismissIcon} viewBox=\"0 0 16 16\">\n <path\n d=\"M4.5 4.5 11.5 11.5M11.5 4.5 4.5 11.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.75\"\n />\n </svg>\n </button>\n ) : null}\n </div>\n {showProgress ? (\n <div aria-hidden=\"true\" className={styles.progressTrack}>\n <div\n className={styles.progressBar}\n style={{ animationDuration: `${duration}ms` }}\n />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n",".viewport {\n position: fixed;\n z-index: 100;\n width: min(380px, calc(100vw - 30px));\n pointer-events: none;\n transform: translate3d(0, 0, 0);\n --toast-glass: rgba(14, 16, 36, 0.52);\n --toast-glass-border: rgba(168, 131, 255, 0.22);\n}\n\n.viewport[data-theme=\"light\"] {\n --toast-glass: rgba(252, 253, 255, 0.62);\n --toast-glass-border: rgba(126, 103, 255, 0.24);\n}\n\n.viewportTop {\n top: 15px;\n}\n\n.viewportBottom {\n bottom: 15px;\n}\n\n.viewportLeft {\n left: 15px;\n}\n\n.viewportRight {\n right: 15px;\n}\n\n.item {\n position: absolute;\n left: 0;\n right: 0;\n pointer-events: auto;\n transform: translate3d(0, var(--stack-offset, 0px), 0);\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n}\n\n.viewportBottom .item {\n top: auto;\n bottom: 0;\n transform: translate3d(0, calc(-1 * var(--stack-offset, 0px)), 0);\n}\n\n.item[data-stack-animate=\"true\"] {\n transition: transform 480ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.itemClip {\n overflow: hidden;\n}\n\n.itemSurface {\n position: relative;\n overflow: hidden;\n border-radius: var(--opus-input-radius-large, 6px);\n box-shadow: var(--opus-shadow, 0 28px 110px rgba(4, 5, 14, 0.48));\n transform: translate3d(0, 0, 0);\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n}\n\n.itemSurface[data-status=\"error\"] {\n --toast-accent: #ef4444;\n}\n\n.itemSurface[data-status=\"success\"] {\n --toast-accent: #16a34a;\n}\n\n.itemSurface[data-status=\"warning\"] {\n --toast-accent: #d97706;\n}\n\n.itemSurface[data-status=\"info\"] {\n --toast-accent: #2563eb;\n}\n\n.itemBackdrop {\n position: absolute;\n inset: 0;\n border: 1px solid var(--toast-glass-border, rgba(168, 131, 255, 0.22));\n border-left: 4px solid var(--toast-accent);\n border-radius: inherit;\n background: var(--toast-glass, rgba(14, 16, 36, 0.52));\n pointer-events: none;\n transform: translate3d(0, 0, 0);\n backface-visibility: hidden;\n -webkit-backdrop-filter: blur(20px) saturate(1.35);\n backdrop-filter: blur(20px) saturate(1.35);\n}\n\n.item[data-phase=\"entering\"] .itemSurface,\n.item[data-phase=\"exiting\"] .itemSurface {\n will-change: transform;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .item[data-stack-animate=\"true\"] {\n transition: none;\n }\n\n .item[data-phase=\"entering\"] .itemSurface,\n .item[data-phase=\"exiting\"] .itemSurface {\n will-change: auto;\n }\n}\n\n@media (prefers-reduced-transparency: reduce) {\n .itemBackdrop {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background: color-mix(in srgb, var(--opus-panel, rgba(9, 11, 28, 0.95)) 96%, transparent);\n }\n}\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport type { AlertStatus, Theme, ToastViewportPosition } from \"@/components/fields/types\";\nimport { useOpusTheme } from \"@/components/OpusThemeProvider\";\nimport { Toast } from \"@/components/Toast\";\nimport styles from \"./ToastProvider.module.css\";\n\nexport const DEFAULT_TOAST_DURATION_MS = 3000;\n\nexport type ShowToastOptions = {\n description?: string;\n dismissible?: boolean;\n duration?: number;\n status?: AlertStatus;\n title: string;\n};\n\ntype ToastPhase = \"entering\" | \"visible\" | \"exiting\";\n\ntype ToastRecord = ShowToastOptions & {\n id: string;\n phase: ToastPhase;\n};\n\ntype ToastContextValue = {\n dismiss: (id: string) => void;\n dismissAll: () => void;\n setViewport: (position: ToastViewportPosition) => void;\n show: (options: ShowToastOptions) => string;\n viewport: ToastViewportPosition;\n};\n\nconst defaultViewport: ToastViewportPosition = {\n horizontal: \"right\",\n vertical: \"top\",\n};\n\nconst stackGap = 10;\nconst enterDurationMs = 480;\nconst exitDurationMs = 220;\nconst enterEase = \"cubic-bezier(0.16, 1, 0.3, 1)\";\nconst surfaceEnterTransition = `transform ${enterDurationMs}ms ${enterEase}`;\nconst surfaceExitTransition = `transform ${exitDurationMs}ms cubic-bezier(0.4, 0, 1, 1)`;\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function useToast() {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within ToastProvider\");\n }\n return context;\n}\n\nfunction getItemSurface(element: HTMLDivElement) {\n return element.querySelector<HTMLElement>(\"[data-toast-surface]\");\n}\n\nfunction measureSurfaceHeight(element: HTMLDivElement) {\n const surface = getItemSurface(element);\n return surface?.offsetHeight ?? element.offsetHeight;\n}\n\nfunction hiddenSurfaceTransform(vertical: ToastViewportPosition[\"vertical\"]) {\n return vertical === \"top\" ? \"translate3d(0, -100%, 0)\" : \"translate3d(0, 100%, 0)\";\n}\n\nfunction clearSurfaceMotionStyles(surface: HTMLElement) {\n surface.style.transform = \"\";\n surface.style.transition = \"\";\n delete surface.dataset.motionArmed;\n}\n\nfunction computeStackOffsets(\n toasts: ToastRecord[],\n heights: Map<string, number>,\n vertical: ToastViewportPosition[\"vertical\"],\n) {\n const offsets: Record<string, number> = {};\n\n if (vertical === \"top\") {\n let cumulative = 0;\n\n for (let index = 0; index < toasts.length; index += 1) {\n const toast = toasts[index];\n offsets[toast.id] = cumulative;\n cumulative += (heights.get(toast.id) ?? 0) + (index < toasts.length - 1 ? stackGap : 0);\n }\n\n return offsets;\n }\n\n let cumulative = 0;\n\n for (let index = toasts.length - 1; index >= 0; index -= 1) {\n const toast = toasts[index];\n offsets[toast.id] = cumulative;\n cumulative += (heights.get(toast.id) ?? 0) + (index > 0 ? stackGap : 0);\n }\n\n return offsets;\n}\n\nfunction useAutoDismiss({\n active,\n duration,\n onDismiss,\n paused,\n}: {\n active: boolean;\n duration?: number;\n onDismiss: () => void;\n paused: boolean;\n}) {\n const remainingRef = useRef(duration ?? 0);\n const timerRef = useRef<number | undefined>(undefined);\n const startedAtRef = useRef(0);\n\n useEffect(() => {\n remainingRef.current = duration ?? 0;\n }, [duration, active]);\n\n useEffect(() => {\n if (!active || !duration || duration <= 0) {\n return;\n }\n\n if (paused) {\n if (timerRef.current !== undefined) {\n window.clearTimeout(timerRef.current);\n timerRef.current = undefined;\n remainingRef.current = Math.max(\n 0,\n remainingRef.current - (Date.now() - startedAtRef.current),\n );\n startedAtRef.current = 0;\n }\n\n return;\n }\n\n startedAtRef.current = Date.now();\n timerRef.current = window.setTimeout(() => {\n onDismiss();\n }, remainingRef.current);\n\n return () => {\n if (timerRef.current !== undefined) {\n window.clearTimeout(timerRef.current);\n timerRef.current = undefined;\n remainingRef.current = Math.max(\n 0,\n remainingRef.current - (Date.now() - startedAtRef.current),\n );\n startedAtRef.current = 0;\n }\n };\n }, [active, duration, onDismiss, paused]);\n}\n\nfunction ToastEntry({\n itemRef,\n onDismiss,\n stackAnimate,\n stackIndex,\n stackOffset,\n toast,\n}: {\n itemRef: (node: HTMLDivElement | null) => void;\n onDismiss: (id: string) => void;\n stackAnimate: boolean;\n stackIndex: number;\n stackOffset: number;\n toast: ToastRecord;\n}) {\n const [hovered, setHovered] = useState(false);\n\n useAutoDismiss({\n active: toast.phase !== \"exiting\",\n duration: toast.duration,\n onDismiss: () => onDismiss(toast.id),\n paused: hovered,\n });\n\n return (\n <div\n ref={itemRef}\n className={styles.item}\n data-phase={toast.phase}\n data-stack-animate={stackAnimate ? \"true\" : undefined}\n data-toast-id={toast.id}\n style={{\n zIndex: stackIndex,\n [\"--stack-offset\" as string]: `${stackOffset}px`,\n }}\n >\n <div className={styles.itemClip} data-toast-clip>\n <div className={styles.itemSurface} data-status={toast.status} data-toast-surface>\n <div aria-hidden=\"true\" className={styles.itemBackdrop} />\n <Toast\n description={toast.description}\n dismissible={toast.dismissible ?? true}\n duration={toast.duration}\n paused={hovered}\n phase={toast.phase}\n status={toast.status}\n title={toast.title}\n onDismiss={() => onDismiss(toast.id)}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n />\n </div>\n </div>\n </div>\n );\n}\n\ntype ToastProviderProps = {\n children: ReactNode;\n horizontal?: ToastViewportPosition[\"horizontal\"];\n theme?: Theme;\n vertical?: ToastViewportPosition[\"vertical\"];\n};\n\nexport function ToastProvider({\n children,\n horizontal = defaultViewport.horizontal,\n theme: themeProp,\n vertical = defaultViewport.vertical,\n}: ToastProviderProps) {\n const resolvedTheme = useOpusTheme();\n const theme = themeProp ?? resolvedTheme;\n const [toasts, setToasts] = useState<ToastRecord[]>([]);\n const [viewport, setViewportState] = useState<ToastViewportPosition>({ horizontal, vertical });\n const [stackOffsets, setStackOffsets] = useState<Record<string, number>>({});\n const [stackAnimate, setStackAnimate] = useState(false);\n const nextId = useRef(0);\n const viewportRef = useRef<HTMLDivElement>(null);\n const itemRefs = useRef(new Map<string, HTMLDivElement>());\n const collapsingRef = useRef(new Set<string>());\n const enteringRef = useRef(new Set<string>());\n const stackLayoutReadyRef = useRef(false);\n\n const setViewport = useCallback((position: ToastViewportPosition) => {\n setViewportState(position);\n }, []);\n\n const setItemRef = useCallback((id: string) => {\n return (node: HTMLDivElement | null) => {\n if (node) {\n itemRefs.current.set(id, node);\n return;\n }\n\n itemRefs.current.delete(id);\n enteringRef.current.delete(id);\n collapsingRef.current.delete(id);\n };\n }, []);\n\n const removeToast = useCallback((id: string) => {\n collapsingRef.current.delete(id);\n enteringRef.current.delete(id);\n itemRefs.current.delete(id);\n setToasts((current) => current.filter((toast) => toast.id !== id));\n }, []);\n\n const dismiss = useCallback((id: string) => {\n setToasts((current) =>\n current.map((toast) => (toast.id === id ? { ...toast, phase: \"exiting\" } : toast)),\n );\n }, []);\n\n const dismissAll = useCallback(() => {\n setToasts((current) => current.map((toast) => ({ ...toast, phase: \"exiting\" as const })));\n }, []);\n\n const markEntered = useCallback((id: string) => {\n enteringRef.current.delete(id);\n setToasts((current) =>\n current.map((toast) =>\n toast.id === id && toast.phase === \"entering\" ? { ...toast, phase: \"visible\" } : toast,\n ),\n );\n }, []);\n\n const show = useCallback(\n (options: ShowToastOptions) => {\n const id = `toast-${nextId.current++}`;\n const entry: ToastRecord = { ...options, id, phase: \"entering\" };\n\n setToasts((current) =>\n viewport.vertical === \"top\" ? [entry, ...current] : [...current, entry],\n );\n\n return id;\n },\n [viewport.vertical],\n );\n\n useLayoutEffect(() => {\n const reducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n const offscreenTransform = hiddenSurfaceTransform(viewport.vertical);\n\n const exitingElements = toasts\n .filter((toast) => toast.phase === \"exiting\")\n .map((toast) => itemRefs.current.get(toast.id))\n .filter((element): element is HTMLDivElement => Boolean(element));\n\n if (exitingElements.length > 0) {\n if (reducedMotion) {\n for (const element of exitingElements) {\n const id = element.dataset.toastId;\n if (id) {\n removeToast(id);\n }\n }\n } else {\n for (const exitingElement of exitingElements) {\n const id = exitingElement.dataset.toastId;\n if (!id || collapsingRef.current.has(id)) {\n continue;\n }\n\n collapsingRef.current.add(id);\n\n const surface = getItemSurface(exitingElement);\n if (!surface) {\n removeToast(id);\n continue;\n }\n\n surface.style.transform = \"translate3d(0, 0, 0)\";\n surface.style.transition = surfaceExitTransition;\n\n let finished = false;\n let fallbackTimer = 0;\n\n const finishExit = () => {\n if (finished) {\n return;\n }\n\n finished = true;\n surface.removeEventListener(\"transitionend\", handleTransitionEnd);\n window.clearTimeout(fallbackTimer);\n clearSurfaceMotionStyles(surface);\n removeToast(id);\n };\n\n const handleTransitionEnd = (event: TransitionEvent) => {\n if (event.target !== surface || event.propertyName !== \"transform\") {\n return;\n }\n\n finishExit();\n };\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n surface.style.transform = offscreenTransform;\n });\n });\n\n surface.addEventListener(\"transitionend\", handleTransitionEnd);\n fallbackTimer = window.setTimeout(finishExit, exitDurationMs + 50);\n }\n }\n }\n\n const enteringElements = toasts\n .filter((toast) => toast.phase === \"entering\")\n .map((toast) => itemRefs.current.get(toast.id))\n .filter((element): element is HTMLDivElement => Boolean(element));\n\n if (enteringElements.length > 0) {\n if (reducedMotion) {\n for (const element of enteringElements) {\n const id = element.dataset.toastId;\n if (id) {\n markEntered(id);\n }\n }\n } else {\n for (const enteringElement of enteringElements) {\n const id = enteringElement.dataset.toastId;\n if (!id) {\n continue;\n }\n\n const surface = getItemSurface(enteringElement);\n if (!surface) {\n markEntered(id);\n continue;\n }\n\n if (surface.dataset.motionArmed === \"true\") {\n continue;\n }\n\n surface.dataset.motionArmed = \"true\";\n enteringRef.current.add(id);\n\n surface.style.transform = offscreenTransform;\n surface.style.transition = surfaceEnterTransition;\n\n let finished = false;\n let fallbackTimer = 0;\n\n const finishEnter = () => {\n if (finished) {\n return;\n }\n\n finished = true;\n window.clearTimeout(fallbackTimer);\n surface.removeEventListener(\"transitionend\", handleTransitionEnd);\n enteringRef.current.delete(id);\n clearSurfaceMotionStyles(surface);\n markEntered(id);\n };\n\n const handleTransitionEnd = (event: TransitionEvent) => {\n if (event.target !== surface || event.propertyName !== \"transform\") {\n return;\n }\n\n finishEnter();\n };\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n surface.style.transform = \"translate3d(0, 0, 0)\";\n });\n });\n\n surface.addEventListener(\"transitionend\", handleTransitionEnd);\n fallbackTimer = window.setTimeout(finishEnter, enterDurationMs + 50);\n }\n }\n }\n\n const heights = new Map<string, number>();\n\n for (const toast of toasts) {\n const element = itemRefs.current.get(toast.id);\n if (!element) {\n continue;\n }\n\n heights.set(toast.id, measureSurfaceHeight(element));\n }\n\n const offsets = computeStackOffsets(toasts, heights, viewport.vertical);\n setStackOffsets(offsets);\n setStackAnimate(stackLayoutReadyRef.current);\n stackLayoutReadyRef.current = true;\n }, [markEntered, removeToast, toasts, viewport.vertical]);\n\n const viewportClassName = [\n styles.viewport,\n viewport.vertical === \"top\" ? styles.viewportTop : styles.viewportBottom,\n viewport.horizontal === \"left\" ? styles.viewportLeft : styles.viewportRight,\n ].join(\" \");\n\n return (\n <ToastContext.Provider value={{ dismiss, dismissAll, setViewport, show, viewport }}>\n {children}\n <div ref={viewportRef} className={viewportClassName} data-theme={theme}>\n {toasts.map((toast, index) => (\n <ToastEntry\n key={toast.id}\n itemRef={setItemRef(toast.id)}\n stackAnimate={stackAnimate}\n stackIndex={toasts.length - index}\n stackOffset={stackOffsets[toast.id] ?? 0}\n toast={toast}\n onDismiss={dismiss}\n />\n ))}\n </div>\n </ToastContext.Provider>\n );\n}\n",".root {\n display: grid;\n gap: 12px;\n width: 100%;\n}\n\n.root[data-orientation=\"vertical\"] {\n grid-template-columns: minmax(140px, 220px) minmax(0, 1fr);\n align-items: start;\n}\n\n.list {\n display: flex;\n gap: 4px;\n min-width: 0;\n border-bottom: 1px solid var(--opus-border);\n}\n\n.root[data-orientation=\"vertical\"] .list {\n flex-direction: column;\n border-right: 1px solid var(--opus-border);\n border-bottom: 0;\n padding-right: 8px;\n}\n\n.root[data-fitted=\"true\"] .list {\n width: 100%;\n}\n\n.root[data-fitted=\"true\"] .tab {\n flex: 1;\n}\n\n.tab {\n position: relative;\n min-height: var(--opus-control-height);\n padding: 0 12px;\n border: 0;\n border-radius: var(--opus-input-radius) var(--opus-input-radius) 0 0;\n background: transparent;\n color: var(--opus-muted);\n cursor: pointer;\n font: inherit;\n font-size: var(--opus-control-font-size);\n font-weight: 800;\n line-height: 1;\n transition:\n background 160ms ease,\n color 160ms ease;\n}\n\n.tab:hover:not(:disabled),\n.tab:focus-visible {\n outline: none;\n background: color-mix(in srgb, var(--opus-accent) 10%, transparent);\n color: var(--opus-text);\n}\n\n.tab:disabled {\n color: color-mix(in srgb, var(--opus-muted) 46%, transparent);\n cursor: not-allowed;\n}\n\n.tab[aria-selected=\"true\"] {\n color: var(--opus-text);\n}\n\n.tab[aria-selected=\"true\"]::after {\n content: \"\";\n position: absolute;\n right: 0;\n bottom: -1px;\n left: 0;\n height: 2px;\n background: var(--opus-accent);\n}\n\n.root[data-orientation=\"vertical\"] .tab {\n justify-content: flex-start;\n border-radius: var(--opus-input-radius);\n text-align: left;\n}\n\n.root[data-orientation=\"vertical\"] .tab[aria-selected=\"true\"]::after {\n top: 0;\n right: -9px;\n bottom: 0;\n left: auto;\n width: 2px;\n height: auto;\n}\n\n.root[data-variant=\"contained\"] .list {\n gap: 6px;\n padding: 4px;\n border: 1px solid var(--opus-border);\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-input-bg) 54%, transparent);\n}\n\n.root[data-variant=\"contained\"] .tab {\n border-radius: var(--opus-input-radius);\n}\n\n.root[data-variant=\"contained\"] .tab[aria-selected=\"true\"] {\n background: color-mix(in srgb, var(--opus-accent) 18%, transparent);\n}\n\n.root[data-variant=\"contained\"] .tab[aria-selected=\"true\"]::after {\n display: none;\n}\n\n.panel {\n min-width: 0;\n padding: 14px;\n border: 1px solid var(--opus-border);\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 92%, transparent);\n color: var(--opus-muted);\n font-size: var(--opus-control-font-size);\n line-height: 1.55;\n box-shadow: var(--opus-shadow);\n}\n\n.panel:focus-visible {\n outline: 2px solid color-mix(in srgb, var(--opus-accent) 65%, transparent);\n outline-offset: 2px;\n}\n\n.panel p {\n margin: 0;\n}\n\n@media (max-width: 680px) {\n .root[data-orientation=\"vertical\"] {\n grid-template-columns: 1fr;\n }\n\n .root[data-orientation=\"vertical\"] .list {\n flex-direction: row;\n overflow-x: auto;\n border-right: 0;\n border-bottom: 1px solid var(--opus-border);\n padding-right: 0;\n }\n\n .root[data-orientation=\"vertical\"] .tab[aria-selected=\"true\"]::after {\n top: auto;\n right: 0;\n bottom: -1px;\n left: 0;\n width: auto;\n height: 2px;\n }\n}\n","\"use client\";\n\nimport { useId, useState, type ReactNode, type KeyboardEvent } from \"react\";\nimport type { TabsOrientation, TabsVariant } from \"@/components/fields/types\";\nimport styles from \"./Tabs.module.css\";\n\nexport type TabItem = {\n content: ReactNode;\n disabled?: boolean;\n label: string;\n value: string;\n};\n\ntype TabsProps = {\n \"aria-label\"?: string;\n defaultValue?: string;\n fitted?: boolean;\n items: TabItem[];\n onValueChange?: (value: string) => void;\n orientation?: TabsOrientation;\n value?: string;\n variant?: TabsVariant;\n};\n\nexport function Tabs({\n \"aria-label\": ariaLabel = \"Tabs\",\n defaultValue,\n fitted = false,\n items,\n onValueChange,\n orientation = \"horizontal\",\n value,\n variant = \"line\",\n}: TabsProps) {\n const generatedId = useId();\n const firstEnabledValue = items.find((item) => !item.disabled)?.value ?? items[0]?.value ?? \"\";\n const [internalValue, setInternalValue] = useState(defaultValue ?? firstEnabledValue);\n const activeValue = value ?? internalValue;\n const activeItem = items.find((item) => item.value === activeValue) ?? items[0];\n\n const setValue = (nextValue: string, focusTab = false) => {\n const item = items.find((candidate) => candidate.value === nextValue);\n if (!item || item.disabled) {\n return;\n }\n\n if (value === undefined) {\n setInternalValue(nextValue);\n }\n\n onValueChange?.(nextValue);\n\n if (focusTab) {\n window.requestAnimationFrame(() => {\n document.getElementById(`${generatedId}-${nextValue}-tab`)?.focus();\n });\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const enabledItems = items.filter((item) => !item.disabled);\n const currentIndex = enabledItems.findIndex((item) => item.value === activeValue);\n const previousKey = orientation === \"vertical\" ? \"ArrowUp\" : \"ArrowLeft\";\n const nextKey = orientation === \"vertical\" ? \"ArrowDown\" : \"ArrowRight\";\n\n if (event.key !== previousKey && event.key !== nextKey && event.key !== \"Home\" && event.key !== \"End\") {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === \"Home\") {\n setValue(enabledItems[0]?.value ?? activeValue, true);\n return;\n }\n\n if (event.key === \"End\") {\n setValue(enabledItems.at(-1)?.value ?? activeValue, true);\n return;\n }\n\n const offset = event.key === nextKey ? 1 : -1;\n const nextIndex = (currentIndex + offset + enabledItems.length) % enabledItems.length;\n setValue(enabledItems[nextIndex]?.value ?? activeValue, true);\n };\n\n return (\n <div\n className={styles.root}\n data-fitted={fitted}\n data-orientation={orientation}\n data-variant={variant}\n >\n <div\n aria-label={ariaLabel}\n aria-orientation={orientation}\n className={styles.list}\n onKeyDown={handleKeyDown}\n role=\"tablist\"\n >\n {items.map((item) => {\n const selected = item.value === activeValue;\n const tabId = `${generatedId}-${item.value}-tab`;\n const panelId = `${generatedId}-${item.value}-panel`;\n\n return (\n <button\n aria-controls={panelId}\n aria-selected={selected}\n className={styles.tab}\n disabled={item.disabled}\n id={tabId}\n key={item.value}\n onClick={() => setValue(item.value)}\n role=\"tab\"\n tabIndex={selected ? 0 : -1}\n type=\"button\"\n >\n {item.label}\n </button>\n );\n })}\n </div>\n {activeItem ? (\n <div\n aria-labelledby={`${generatedId}-${activeItem.value}-tab`}\n className={styles.panel}\n id={`${generatedId}-${activeItem.value}-panel`}\n role=\"tabpanel\"\n tabIndex={-1}\n >\n {activeItem.content}\n </div>\n ) : null}\n </div>\n );\n}\n",".card {\n --surface-accent: var(--opus-accent);\n display: grid;\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--surface-accent) 20%, var(--opus-border));\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 93%, transparent);\n box-shadow: var(--opus-shadow);\n}\n\n.card[data-tone=\"success\"] {\n --surface-accent: #16a34a;\n}\n\n.card[data-tone=\"warning\"] {\n --surface-accent: #d97706;\n}\n\n.card[data-tone=\"danger\"] {\n --surface-accent: #ef4444;\n}\n\n.card[data-tone=\"info\"] {\n --surface-accent: #2563eb;\n}\n\n.card[data-tone=\"default\"] {\n --surface-accent: var(--opus-border-strong);\n}\n\n.card[data-density=\"compact\"] {\n --surface-pad: 12px;\n}\n\n.card[data-density=\"comfortable\"] {\n --surface-pad: 16px;\n}\n\n.media {\n min-height: 96px;\n background:\n radial-gradient(circle at 20% 20%, color-mix(in srgb, var(--surface-accent) 34%, transparent), transparent 34%),\n linear-gradient(135deg, color-mix(in srgb, var(--surface-accent) 20%, transparent), color-mix(in srgb, var(--opus-panel) 92%, transparent));\n}\n\n.body {\n display: grid;\n gap: 10px;\n padding: var(--surface-pad);\n}\n\n.heading {\n display: grid;\n gap: 4px;\n}\n\n.eyebrow,\n.title,\n.content p,\n.footerContent {\n margin: 0;\n}\n\n.eyebrow {\n color: var(--surface-accent);\n font-size: 0.72rem;\n font-weight: 900;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n\n.title {\n color: var(--opus-text);\n font-size: 1rem;\n font-weight: 850;\n line-height: 1.25;\n}\n\n.content {\n color: var(--opus-muted);\n font-size: var(--opus-control-font-size);\n line-height: 1.55;\n}\n\n.footer {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n align-items: center;\n justify-content: space-between;\n padding: 0 var(--surface-pad) var(--surface-pad);\n}\n\n.footerContent {\n color: var(--opus-muted);\n font-size: 0.8rem;\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-left: auto;\n}\n","import type { ReactNode } from \"react\";\nimport type { SurfaceDensity, SurfaceTone } from \"@/components/fields/types\";\nimport styles from \"./Card.module.css\";\n\ntype CardProps = {\n actions?: ReactNode;\n children: ReactNode;\n density?: SurfaceDensity;\n eyebrow?: string;\n footer?: ReactNode;\n media?: ReactNode;\n title: string;\n tone?: SurfaceTone;\n};\n\nexport function Card({\n actions,\n children,\n density = \"comfortable\",\n eyebrow,\n footer,\n media,\n title,\n tone = \"default\",\n}: CardProps) {\n return (\n <article className={styles.card} data-density={density} data-tone={tone}>\n {media ? <div className={styles.media}>{media}</div> : null}\n <div className={styles.body}>\n <div className={styles.heading}>\n {eyebrow ? <p className={styles.eyebrow}>{eyebrow}</p> : null}\n <h3 className={styles.title}>{title}</h3>\n </div>\n <div className={styles.content}>{children}</div>\n </div>\n {footer || actions ? (\n <footer className={styles.footer}>\n {footer ? <div className={styles.footerContent}>{footer}</div> : null}\n {actions ? <div className={styles.actions}>{actions}</div> : null}\n </footer>\n ) : null}\n </article>\n );\n}\n",".shell {\n display: grid;\n gap: 10px;\n min-width: 0;\n padding: 18px 20px;\n border: 1px solid color-mix(in srgb, var(--opus-border) 88%, transparent);\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 96%, transparent);\n box-shadow: var(--opus-shadow);\n}\n\n.shell[data-density=\"compact\"] {\n gap: 8px;\n padding: 14px 16px;\n}\n\n.header {\n display: grid;\n grid-template-columns: 2.5rem minmax(0, 1fr);\n align-items: start;\n gap: 12px;\n min-height: 2.5rem;\n}\n\n.iconSlot {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n color: color-mix(in srgb, var(--opus-muted) 92%, transparent);\n line-height: 1;\n}\n\n.iconSlot svg {\n display: block;\n width: 2.5rem;\n height: 2.5rem;\n flex-shrink: 0;\n fill: currentColor;\n opacity: 0.9;\n}\n\n.iconPlaceholder {\n display: block;\n width: 2.5rem;\n height: 2.5rem;\n flex-shrink: 0;\n}\n\n.metaSlot {\n display: flex;\n justify-content: flex-end;\n align-items: flex-start;\n min-width: 0;\n min-height: 1.625rem;\n}\n\n.metaPlaceholder {\n display: inline-flex;\n align-items: center;\n visibility: hidden;\n padding: 4px 8px;\n font-size: 0.72rem;\n font-weight: 800;\n line-height: 1;\n white-space: nowrap;\n}\n\n.label {\n margin: 0;\n color: var(--opus-muted);\n font-size: 0.84rem;\n font-weight: 650;\n}\n\n.value {\n margin: 0;\n min-width: 0;\n color: var(--opus-text);\n font-size: 1.75rem;\n font-weight: 800;\n letter-spacing: -0.03em;\n line-height: 1;\n}\n\n.shell[data-density=\"compact\"] .value {\n font-size: 1.45rem;\n}\n",".change {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n border-radius: 999px;\n font-size: 0.72rem;\n font-weight: 800;\n padding: 4px 8px;\n white-space: nowrap;\n}\n\n.change[data-trend=\"up\"] {\n background: color-mix(in srgb, #16a34a 14%, transparent);\n color: #16a34a;\n}\n\n.change[data-trend=\"down\"] {\n background: color-mix(in srgb, #ef4444 12%, transparent);\n color: #ef4444;\n}\n","import type { ReactNode } from \"react\";\nimport type { SurfaceDensity } from \"@/components/fields/types\";\nimport layout from \"@/components/dashboardMetricCardLayout/dashboardMetricCardLayout.module.css\";\nimport styles from \"./StatCard.module.css\";\n\nexport type StatCardTrend = \"up\" | \"down\";\n\ntype StatCardProps = {\n change?: string;\n density?: SurfaceDensity;\n icon?: ReactNode;\n label: string;\n trend?: StatCardTrend;\n value: string;\n};\n\nexport function StatCard({\n change,\n density = \"comfortable\",\n icon,\n label,\n trend,\n value,\n}: StatCardProps) {\n return (\n <article className={layout.shell} data-density={density}>\n <div className={layout.header}>\n <span className={layout.iconSlot}>\n {icon ?? <span aria-hidden=\"true\" className={layout.iconPlaceholder} />}\n </span>\n <div className={layout.metaSlot}>\n {change && trend ? (\n <span className={styles.change} data-trend={trend}>\n {trend === \"up\" ? \"↑\" : \"↓\"} {change}\n </span>\n ) : (\n <span aria-hidden=\"true\" className={layout.metaPlaceholder}>\n ↑ 00.00%\n </span>\n )}\n </div>\n </div>\n <p className={layout.label}>{label}</p>\n <p className={layout.value}>{value}</p>\n </article>\n );\n}\n",".widget {\n display: grid;\n grid-template-rows: auto 1fr auto;\n gap: 18px;\n min-width: 0;\n width: 100%;\n padding: 20px;\n border: 1px solid color-mix(in srgb, var(--opus-border) 88%, transparent);\n border-radius: var(--opus-input-radius-large);\n background:\n radial-gradient(circle at 30% 20%, color-mix(in srgb, var(--opus-accent) 10%, transparent), transparent 34%),\n color-mix(in srgb, var(--opus-panel) 98%, transparent);\n box-shadow: var(--opus-shadow);\n}\n\n.widget[data-density=\"compact\"] {\n gap: 14px;\n padding: 16px;\n}\n\n.header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n}\n\n.heading {\n display: grid;\n gap: 4px;\n min-width: 0;\n}\n\n.title,\n.subtitle,\n.summary,\n.footerLabel,\n.footerValue {\n margin: 0;\n}\n\n.title {\n color: var(--opus-text);\n font-size: 1rem;\n font-weight: 800;\n}\n\n.subtitle {\n color: var(--opus-muted);\n font-size: 0.8rem;\n font-weight: 650;\n line-height: 1.4;\n}\n\n.body {\n display: grid;\n gap: 10px;\n align-content: center;\n justify-items: center;\n text-align: center;\n}\n\n.gaugeSlot {\n display: grid;\n place-items: center;\n width: 100%;\n min-height: 220px;\n}\n\n.gauge {\n position: relative;\n width: min(100%, 260px);\n aspect-ratio: 220 / 130;\n}\n\n.gauge[data-variant=\"full\"] {\n width: min(100%, 220px);\n aspect-ratio: 1;\n}\n\n.gaugeSvg {\n width: 100%;\n height: 100%;\n overflow: visible;\n}\n\n.gaugeTrack,\n.gaugeValue {\n fill: none;\n stroke-linecap: round;\n stroke-width: 14;\n}\n\n.gauge[data-variant=\"full\"] .gaugeTrack,\n.gauge[data-variant=\"full\"] .gaugeValue {\n stroke-width: 12;\n transform: rotate(-90deg);\n transform-origin: 110px 110px;\n}\n\n.gaugeTrack {\n stroke: var(--gauge-track, color-mix(in srgb, var(--opus-border-strong) 24%, transparent));\n}\n\n.gauge[data-variant=\"full\"] .gaugeTrack {\n stroke: var(--gauge-track, color-mix(in srgb, var(--opus-border-strong) 20%, transparent));\n}\n\n.gaugeValue {\n stroke: var(--gauge-value, #f04b2f);\n}\n\n.gaugeCenter {\n position: absolute;\n inset: 56% 0 auto;\n display: grid;\n place-items: center;\n}\n\n.gauge[data-variant=\"full\"] .gaugeCenter {\n inset: 0;\n align-content: center;\n gap: 2px;\n}\n\n.gaugeCenter strong {\n color: var(--opus-text);\n font-size: 1.45rem;\n font-weight: 800;\n letter-spacing: -0.04em;\n line-height: 1;\n}\n\n.gaugeCenter span {\n color: var(--opus-muted);\n font-size: 0.72rem;\n font-weight: 700;\n}\n\n.change {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n border-radius: 999px;\n font-size: 0.72rem;\n font-weight: 800;\n padding: 4px 8px;\n}\n\n.change[data-trend=\"up\"] {\n background: color-mix(in srgb, #16a34a 14%, transparent);\n color: #16a34a;\n}\n\n.change[data-trend=\"down\"] {\n background: color-mix(in srgb, #ef4444 12%, transparent);\n color: #ef4444;\n}\n\n.summary {\n max-width: 34ch;\n color: var(--opus-muted);\n font-size: 0.82rem;\n font-weight: 650;\n line-height: 1.5;\n}\n\n.footer {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(4.5rem, 1fr));\n gap: 10px;\n padding: 0;\n border-radius: var(--opus-input-radius);\n background: transparent;\n}\n\n.footerItem::before {\n content: \"\";\n width: 100%;\n height: 6px;\n border-radius: 999px;\n background: var(--gauge-footer-color, var(--opus-accent));\n}\n\n.footerItem {\n display: grid;\n gap: 5px;\n justify-items: center;\n text-align: center;\n}\n\n.footerLabel {\n color: var(--opus-muted);\n font-size: 0.72rem;\n font-weight: 700;\n}\n\n.footerValue {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--opus-text);\n font-size: 0.92rem;\n font-weight: 800;\n}\n\n.footerTrend[data-trend=\"up\"] {\n color: #16a34a;\n}\n\n.footerTrend[data-trend=\"down\"] {\n color: #ef4444;\n}\n\n@media (max-width: 520px) {\n .footer {\n grid-template-columns: 1fr !important;\n }\n}\n","import type { CSSProperties } from \"react\";\nimport type { SurfaceDensity } from \"@/components/fields/types\";\nimport styles from \"./Gauge.module.css\";\n\nexport type GaugeTrend = \"up\" | \"down\";\nexport type GaugeVariant = \"half\" | \"full\";\n\nexport type GaugeFooterItem = {\n color?: string;\n label: string;\n trend?: GaugeTrend;\n value: string;\n};\n\ntype GaugeProps = {\n change?: string;\n changeTrend?: GaugeTrend;\n density?: SurfaceDensity;\n footer?: GaugeFooterItem[];\n subtitle?: string;\n summary?: string;\n title: string;\n trackColor?: string;\n value: number;\n valueColor?: string;\n variant?: GaugeVariant;\n};\n\nfunction GaugeArc({\n trackColor,\n value,\n valueColor,\n variant,\n}: {\n trackColor?: string;\n value: number;\n valueColor?: string;\n variant: GaugeVariant;\n}) {\n const clamped = Math.max(0, Math.min(100, value));\n const style = {\n \"--gauge-track\": trackColor,\n \"--gauge-value\": valueColor,\n } as CSSProperties;\n const valueDashArray = `${clamped} 100`;\n\n if (variant === \"full\") {\n return (\n <div className={styles.gauge} data-variant=\"full\" style={style}>\n <svg aria-hidden=\"true\" className={styles.gaugeSvg} viewBox=\"0 0 220 220\">\n <circle\n className={styles.gaugeTrack}\n cx=\"110\"\n cy=\"110\"\n pathLength={100}\n r=\"82\"\n />\n <circle\n className={styles.gaugeValue}\n cx=\"110\"\n cy=\"110\"\n pathLength={100}\n r=\"82\"\n strokeDasharray={valueDashArray}\n />\n </svg>\n <div className={styles.gaugeCenter}>\n <strong>{Math.round(clamped)}%</strong>\n <span>{clamped.toFixed(2)} score</span>\n </div>\n </div>\n );\n }\n\n return (\n <div className={styles.gauge} data-variant=\"half\" style={style}>\n <svg aria-hidden=\"true\" className={styles.gaugeSvg} viewBox=\"0 0 220 130\">\n <path\n className={styles.gaugeTrack}\n d=\"M 22 118 A 88 88 0 0 1 198 118\"\n pathLength={100}\n />\n <path\n className={styles.gaugeValue}\n d=\"M 22 118 A 88 88 0 0 1 198 118\"\n pathLength={100}\n strokeDasharray={valueDashArray}\n />\n </svg>\n <div className={styles.gaugeCenter}>\n <strong>{Math.round(clamped)}%</strong>\n <span>{clamped.toFixed(2)} score</span>\n </div>\n </div>\n );\n}\n\nexport function Gauge({\n change,\n changeTrend = \"up\",\n density = \"comfortable\",\n footer,\n subtitle,\n summary,\n title,\n trackColor,\n value,\n valueColor,\n variant = \"half\",\n}: GaugeProps) {\n return (\n <section className={styles.widget} data-density={density} data-variant={variant}>\n <header className={styles.header}>\n <div className={styles.heading}>\n <h3 className={styles.title}>{title}</h3>\n {subtitle ? <p className={styles.subtitle}>{subtitle}</p> : null}\n </div>\n </header>\n\n <div className={styles.body}>\n <div className={styles.gaugeSlot}>\n <GaugeArc trackColor={trackColor} value={value} valueColor={valueColor} variant={variant} />\n </div>\n {change ? (\n <span className={styles.change} data-trend={changeTrend}>\n {changeTrend === \"up\" ? \"↑\" : \"↓\"} {change}\n </span>\n ) : null}\n {summary ? <p className={styles.summary}>{summary}</p> : null}\n </div>\n\n {footer?.length ? (\n <footer className={styles.footer} data-count={footer.length}>\n {footer.map((item, index) => (\n <div\n className={styles.footerItem}\n key={`${item.label}-${index}`}\n style={{ \"--gauge-footer-color\": item.color } as CSSProperties}\n >\n <span className={styles.footerLabel}>{item.label}</span>\n <span className={styles.footerValue}>\n {item.value}\n {item.trend ? (\n <span aria-hidden=\"true\" className={styles.footerTrend} data-trend={item.trend}>\n {item.trend === \"up\" ? \"↑\" : \"↓\"}\n </span>\n ) : null}\n </span>\n </div>\n ))}\n </footer>\n ) : null}\n </section>\n );\n}\n",".sparkline {\n min-width: 0;\n margin: 0;\n color: var(--opus-accent);\n}\n\n.sparkline[data-variant=\"labeled\"] {\n display: grid;\n gap: 8px;\n width: 100%;\n align-content: start;\n}\n\n.chart {\n display: block;\n width: 100%;\n min-width: 0;\n}\n\n.sparkline[data-variant=\"inline\"] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n.label {\n margin: 0;\n color: var(--opus-muted);\n font-size: 0.84rem;\n font-weight: 650;\n line-height: 1.3;\n}\n\n.svg {\n display: block;\n overflow: visible;\n}\n\n.sparkline[data-variant=\"labeled\"] .svg {\n display: block;\n width: 100%;\n}\n\n.line {\n fill: none;\n stroke: currentColor;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 2.5;\n}\n\n.area {\n stroke: none;\n}\n\n.endPoint {\n fill: currentColor;\n}\n\n.sparkline[data-palette=\"cool\"] {\n color: #2563eb;\n}\n\n.sparkline[data-palette=\"warm\"] {\n color: #f97316;\n}\n\n.sparkline[data-palette=\"mono\"] {\n color: color-mix(in srgb, var(--opus-accent) 72%, white);\n}\n","\"use client\";\n\nimport { useId } from \"react\";\nimport styles from \"./Sparkline.module.css\";\n\ntype SparklineProps = {\n height?: number;\n label?: string;\n palette?: \"cool\" | \"mono\" | \"opus\" | \"warm\";\n values: number[];\n variant?: \"inline\" | \"labeled\";\n width?: number;\n};\n\nfunction buildSparklineGeometry(values: number[], width: number, height: number) {\n if (!values.length) {\n return { areaPath: \"\", endPoint: null, linePath: \"\" };\n }\n\n const padX = 2;\n const padY = 3;\n const chartWidth = width - padX * 2;\n const chartHeight = height - padY * 2;\n const max = Math.max(1, ...values);\n const min = Math.min(...values);\n const range = Math.max(1, max - min);\n\n const points = values.map((value, index) => {\n const x = padX + (values.length === 1 ? chartWidth / 2 : (index / (values.length - 1)) * chartWidth);\n const y = padY + chartHeight - ((value - min) / range) * (chartHeight - 4) - 2;\n return { x, y };\n });\n\n const linePath = points.map((point, index) => `${index === 0 ? \"M\" : \"L\"} ${point.x} ${point.y}`).join(\" \");\n const lastPoint = points[points.length - 1];\n const areaPath = `${linePath} L ${lastPoint.x} ${height - padY} L ${points[0].x} ${height - padY} Z`;\n\n return { areaPath, endPoint: lastPoint, linePath };\n}\n\nexport function Sparkline({\n height = 48,\n label,\n palette = \"opus\",\n values,\n variant = label ? \"labeled\" : \"inline\",\n width = 120,\n}: SparklineProps) {\n const gradientId = useId();\n const { areaPath, endPoint, linePath } = buildSparklineGeometry(values, width, height);\n const resolvedVariant = variant === \"labeled\" || label ? \"labeled\" : \"inline\";\n\n const chart = (\n <svg\n aria-hidden={resolvedVariant === \"labeled\" && label ? undefined : true}\n className={styles.svg}\n height={height}\n role={resolvedVariant === \"labeled\" && label ? \"img\" : undefined}\n viewBox={`0 0 ${width} ${height}`}\n width={resolvedVariant === \"labeled\" ? \"100%\" : width}\n >\n <defs>\n <linearGradient id={gradientId} x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"currentColor\" stopOpacity=\"0.28\" />\n <stop offset=\"100%\" stopColor=\"currentColor\" stopOpacity=\"0.02\" />\n </linearGradient>\n </defs>\n {areaPath ? <path className={styles.area} d={areaPath} fill={`url(#${gradientId})`} /> : null}\n {linePath ? <path className={styles.line} d={linePath} /> : null}\n {endPoint ? <circle className={styles.endPoint} cx={endPoint.x} cy={endPoint.y} r=\"2.5\" /> : null}\n </svg>\n );\n\n if (resolvedVariant === \"inline\") {\n return (\n <div className={styles.sparkline} data-palette={palette} data-variant=\"inline\">\n {chart}\n </div>\n );\n }\n\n return (\n <figure className={styles.sparkline} data-palette={palette} data-variant=\"labeled\">\n {label ? <figcaption className={styles.label}>{label}</figcaption> : null}\n <div className={styles.chart}>{chart}</div>\n </figure>\n );\n}\n",".ring {\n position: relative;\n width: min(100%, 220px);\n min-width: 0;\n aspect-ratio: 1;\n}\n\n.svg {\n display: block;\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n}\n\n.track,\n.value {\n fill: none;\n stroke-linecap: round;\n stroke-width: 12;\n}\n\n.track {\n stroke: color-mix(in srgb, var(--opus-border) 80%, transparent);\n}\n\n.value {\n stroke: var(--opus-accent);\n}\n\n.center {\n position: absolute;\n inset: 0;\n display: grid;\n place-content: center;\n gap: 2px;\n text-align: center;\n}\n\n.center strong {\n color: var(--opus-text);\n font-size: 1.45rem;\n font-weight: 800;\n letter-spacing: -0.04em;\n line-height: 1;\n}\n\n.center span {\n color: var(--opus-muted);\n font-size: 0.72rem;\n font-weight: 700;\n}\n","import styles from \"./ProgressRing.module.css\";\n\ntype ProgressRingProps = {\n label: string;\n max?: number;\n value: number;\n};\n\nexport function ProgressRing({ label, max = 100, value }: ProgressRingProps) {\n const clamped = Math.max(0, Math.min(max, value));\n const percent = (clamped / Math.max(1, max)) * 100;\n\n return (\n <figure className={styles.ring} data-fit-content=\"true\">\n <svg aria-hidden=\"true\" className={styles.svg} viewBox=\"0 0 220 220\">\n <circle className={styles.track} cx=\"110\" cy=\"110\" pathLength={100} r=\"82\" />\n <circle\n className={styles.value}\n cx=\"110\"\n cy=\"110\"\n pathLength={100}\n r=\"82\"\n strokeDasharray={`${percent} 100`}\n />\n </svg>\n <div className={styles.center}>\n <strong>{Math.round(percent)}%</strong>\n <span>{label}</span>\n </div>\n </figure>\n );\n}\n",".bar {\n display: grid;\n gap: 8px;\n width: 100%;\n min-width: 0;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n}\n\n.label,\n.value {\n font-size: 0.78rem;\n font-weight: 800;\n}\n\n.label {\n color: var(--opus-muted);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.value {\n color: var(--opus-text);\n}\n\n.track {\n overflow: hidden;\n height: 10px;\n border-radius: 999px;\n background: color-mix(in srgb, var(--opus-border) 80%, transparent);\n}\n\n.fill {\n display: block;\n height: 100%;\n border-radius: inherit;\n background: linear-gradient(90deg, var(--opus-accent), color-mix(in srgb, var(--opus-accent) 70%, white));\n}\n","import styles from \"./ProgressBar.module.css\";\n\ntype ProgressBarProps = {\n label: string;\n max?: number;\n value: number;\n};\n\nexport function ProgressBar({ label, max = 100, value }: ProgressBarProps) {\n const clamped = Math.max(0, Math.min(max, value));\n const percent = (clamped / Math.max(1, max)) * 100;\n\n return (\n <figure className={styles.bar}>\n <div className={styles.header}>\n <span className={styles.label}>{label}</span>\n <span className={styles.value}>{Math.round(percent)}%</span>\n </div>\n <div className={styles.track}>\n <span className={styles.fill} style={{ width: `${percent}%` }} />\n </div>\n </figure>\n );\n}\n",".speedometer {\n position: relative;\n width: min(100%, 260px);\n min-width: 0;\n aspect-ratio: 220 / 130;\n overflow: hidden;\n}\n\n.svg {\n display: block;\n width: 100%;\n height: 100%;\n overflow: visible;\n}\n\n.track,\n.value {\n fill: none;\n stroke-linecap: round;\n stroke-width: 14;\n}\n\n.track {\n stroke: color-mix(in srgb, var(--opus-border) 80%, transparent);\n}\n\n.value {\n stroke: var(--opus-accent);\n}\n\n.needle {\n stroke: var(--opus-text);\n stroke-linecap: round;\n stroke-width: 3;\n}\n\n.hub {\n fill: var(--opus-text);\n}\n\n.center {\n position: absolute;\n left: 50%;\n top: 62%;\n display: grid;\n gap: 2px;\n text-align: center;\n transform: translate(-50%, -50%);\n}\n\n.center strong {\n color: var(--opus-text);\n font-size: 1.45rem;\n font-weight: 800;\n letter-spacing: -0.04em;\n line-height: 1;\n}\n\n.center span {\n color: var(--opus-muted);\n font-size: 0.72rem;\n font-weight: 700;\n}\n","import styles from \"./Speedometer.module.css\";\n\ntype SpeedometerProps = {\n label: string;\n max?: number;\n value: number;\n};\n\nexport function Speedometer({ label, max = 100, value }: SpeedometerProps) {\n const clamped = Math.max(0, Math.min(max, value));\n const percent = (clamped / Math.max(1, max)) * 100;\n const angle = -90 + (percent / 100) * 180;\n\n return (\n <figure className={styles.speedometer} data-fit-content=\"true\">\n <svg aria-hidden=\"true\" className={styles.svg} viewBox=\"0 0 220 130\">\n <path className={styles.track} d=\"M 22 118 A 88 88 0 0 1 198 118\" pathLength={100} />\n <path\n className={styles.value}\n d=\"M 22 118 A 88 88 0 0 1 198 118\"\n pathLength={100}\n strokeDasharray={`${percent} 100`}\n />\n <g transform={`rotate(${angle} 110 118)`}>\n <line className={styles.needle} x1=\"110\" x2=\"110\" y1=\"118\" y2=\"42\" />\n <circle className={styles.hub} cx=\"110\" cy=\"118\" r=\"6\" />\n </g>\n </svg>\n <div className={styles.center}>\n <strong>{Math.round(clamped)}</strong>\n <span>{label}</span>\n </div>\n </figure>\n );\n}\n",".tile {\n position: relative;\n}\n\n.sparklineRail {\n position: absolute;\n top: 18px;\n right: 20px;\n display: flex;\n width: 120px;\n height: calc(2.5rem + 10px + 0.84rem + 10px + 1.75rem);\n align-items: center;\n justify-content: flex-end;\n pointer-events: none;\n}\n\n.tile[data-density=\"compact\"] .sparklineRail {\n top: 14px;\n right: 16px;\n height: calc(2.5rem + 8px + 0.84rem + 8px + 1.45rem);\n}\n\n.sparklineReserve {\n display: block;\n width: 120px;\n height: 72px;\n flex-shrink: 0;\n visibility: hidden;\n}\n","import type { ReactNode } from \"react\";\nimport type { SurfaceDensity } from \"@/components/fields/types\";\nimport { Sparkline } from \"@/components/Sparkline\";\nimport layout from \"@/components/dashboardMetricCardLayout/dashboardMetricCardLayout.module.css\";\nimport styles from \"./MetricTile.module.css\";\n\nconst SPARKLINE_HEIGHT = 72;\n\ntype MetricTileProps = {\n density?: SurfaceDensity;\n icon?: ReactNode;\n label: string;\n sparkline?: number[];\n value: string;\n};\n\nexport function MetricTile({ density = \"comfortable\", icon, label, sparkline, value }: MetricTileProps) {\n return (\n <article className={`${layout.shell} ${styles.tile}`} data-density={density}>\n <div className={layout.header}>\n <span className={layout.iconSlot}>\n {icon ?? <span aria-hidden=\"true\" className={layout.iconPlaceholder} />}\n </span>\n <div className={layout.metaSlot}>\n <span aria-hidden=\"true\" className={layout.metaPlaceholder}>\n ↑ 00.00%\n </span>\n </div>\n </div>\n <p className={layout.label}>{label}</p>\n <p className={layout.value}>{value}</p>\n <div aria-hidden=\"true\" className={styles.sparklineRail}>\n {sparkline ? (\n <Sparkline height={SPARKLINE_HEIGHT} values={sparkline} variant=\"inline\" width={120} />\n ) : (\n <span className={styles.sparklineReserve} />\n )}\n </div>\n </article>\n );\n}\n",".indicator {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n color: var(--opus-text);\n font-size: 0.82rem;\n font-weight: 800;\n}\n\n.dot {\n width: 10px;\n height: 10px;\n border-radius: 999px;\n background: var(--opus-muted);\n box-shadow: 0 0 0 4px color-mix(in srgb, var(--opus-muted) 16%, transparent);\n}\n\n.indicator[data-status=\"success\"] .dot {\n background: #22c55e;\n box-shadow: 0 0 0 4px color-mix(in srgb, #22c55e 18%, transparent);\n}\n\n.indicator[data-status=\"warning\"] .dot {\n background: #f59e0b;\n box-shadow: 0 0 0 4px color-mix(in srgb, #f59e0b 18%, transparent);\n}\n\n.indicator[data-status=\"error\"] .dot {\n background: #ef4444;\n box-shadow: 0 0 0 4px color-mix(in srgb, #ef4444 18%, transparent);\n}\n\n.indicator[data-status=\"neutral\"] .dot {\n background: var(--opus-muted);\n}\n","import styles from \"./StatusIndicator.module.css\";\n\nexport type StatusIndicatorState = \"error\" | \"neutral\" | \"success\" | \"warning\";\n\ntype StatusIndicatorProps = {\n label: string;\n status: StatusIndicatorState;\n};\n\nexport function StatusIndicator({ label, status }: StatusIndicatorProps) {\n return (\n <span className={styles.indicator} data-status={status}>\n <span className={styles.dot} />\n {label}\n </span>\n );\n}\n",".badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 999px;\n font-size: 0.72rem;\n font-weight: 900;\n letter-spacing: 0.02em;\n}\n\n.badge[data-direction=\"up\"] {\n color: #15803d;\n background: color-mix(in srgb, #22c55e 16%, transparent);\n}\n\n.badge[data-direction=\"down\"] {\n color: #b91c1c;\n background: color-mix(in srgb, #ef4444 14%, transparent);\n}\n","import styles from \"./TrendBadge.module.css\";\n\nexport type TrendBadgeDirection = \"down\" | \"up\";\n\ntype TrendBadgeProps = {\n direction: TrendBadgeDirection;\n value: string;\n};\n\nexport function TrendBadge({ direction, value }: TrendBadgeProps) {\n return (\n <span className={styles.badge} data-direction={direction}>\n {direction === \"up\" ? \"↑\" : \"↓\"} {value}\n </span>\n );\n}\n",".panel {\n --surface-accent: var(--opus-accent);\n display: grid;\n grid-template-rows: auto 1fr auto;\n height: 100%;\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--surface-accent) 18%, var(--opus-border));\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 92%, transparent);\n box-shadow: var(--opus-shadow);\n}\n\n.panel[data-tone=\"success\"] {\n --surface-accent: #16a34a;\n}\n\n.panel[data-tone=\"warning\"] {\n --surface-accent: #d97706;\n}\n\n.panel[data-tone=\"danger\"] {\n --surface-accent: #ef4444;\n}\n\n.panel[data-tone=\"info\"] {\n --surface-accent: #2563eb;\n}\n\n.panel[data-tone=\"default\"] {\n --surface-accent: var(--opus-border-strong);\n}\n\n.panel[data-density=\"compact\"] {\n --surface-pad: 12px;\n}\n\n.panel[data-density=\"comfortable\"] {\n --surface-pad: 16px;\n}\n\n.header {\n display: flex;\n flex-wrap: nowrap;\n gap: 12px;\n align-items: start;\n justify-content: space-between;\n padding: var(--surface-pad);\n min-width: 0;\n}\n\n.panel[data-divided=\"true\"] .header {\n border-bottom: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n}\n\n.heading {\n display: grid;\n gap: 5px;\n min-width: 0;\n flex: 1 1 auto;\n}\n\n.title,\n.description,\n.body p,\n.footer {\n margin: 0;\n}\n\n.title {\n color: var(--opus-text);\n font-size: 1rem;\n font-weight: 850;\n line-height: 1.25;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.description {\n color: var(--opus-muted);\n font-size: var(--opus-control-font-size);\n line-height: 1.45;\n}\n\n.headerActions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.body {\n padding: var(--surface-pad);\n color: var(--opus-muted);\n font-size: var(--opus-control-font-size);\n line-height: 1.55;\n min-height: 0;\n}\n\n.panel[data-divided=\"true\"] .body {\n border-bottom: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n}\n\n.footer {\n padding: var(--surface-pad);\n color: var(--opus-muted);\n font-size: 0.8rem;\n}\n","import type { ReactNode } from \"react\";\nimport type { SurfaceDensity, SurfaceTone } from \"@/components/fields/types\";\nimport styles from \"./Panel.module.css\";\n\ntype PanelProps = {\n actions?: ReactNode;\n children: ReactNode;\n density?: SurfaceDensity;\n description?: string;\n divided?: boolean;\n footer?: ReactNode;\n title: string;\n tone?: SurfaceTone;\n};\n\nexport function Panel({\n actions,\n children,\n density = \"comfortable\",\n description,\n divided = true,\n footer,\n title,\n tone = \"default\",\n}: PanelProps) {\n return (\n <section className={styles.panel} data-density={density} data-divided={divided} data-tone={tone}>\n <header className={styles.header}>\n <div className={styles.heading}>\n <h2 className={styles.title}>{title}</h2>\n {description ? <p className={styles.description}>{description}</p> : null}\n </div>\n {actions ? <div className={styles.headerActions}>{actions}</div> : null}\n </header>\n <div className={styles.body}>{children}</div>\n {footer ? <footer className={styles.footer}>{footer}</footer> : null}\n </section>\n );\n}\n","import type { CSSProperties } from \"react\";\n\nexport type SectionBreakpoint = \"mobile\" | \"tablet\" | \"desktop\";\n\n/** @deprecated Use sidebar + columns instead. Kept for Section.Row shorthand. */\nexport type SectionLayoutPreset =\n | \"stack\"\n | \"2-equal\"\n | \"3-equal\"\n | \"4-equal\"\n | \"5-equal\"\n | \"sidebar-left\"\n | \"sidebar-right\"\n | \"auto-fit\";\n\nexport type SectionSidebar = \"none\" | \"left\" | \"right\";\n\nexport type SectionColumns = 1 | 2 | 3 | 4 | 5;\n\nexport type SectionGap = \"sm\" | \"md\" | \"lg\";\n\nexport type SectionStackBelow = \"mobile\" | \"tablet\" | \"never\";\n\nexport type SectionSidebarRatio = \"1:2\" | \"1:3\" | \"2:3\";\n\nexport type SectionAlign = \"start\" | \"center\" | \"end\" | \"stretch\";\n\nexport type SectionJustify = \"start\" | \"center\" | \"end\" | \"stretch\";\n\nexport type SectionTemplate = Partial<Record<SectionBreakpoint, string>>;\n\nexport type SectionSpan = Partial<Record<SectionBreakpoint, number>>;\n\nexport type SectionWidth = Partial<Record<SectionBreakpoint, string>>;\n\nexport type SectionLayoutConfig = {\n columns: SectionColumns;\n sidebar: SectionSidebar;\n sidebarRatio: SectionSidebarRatio;\n stackBelow: SectionStackBelow;\n};\n\nexport type SectionRowLayoutProps = {\n align?: SectionAlign;\n columns?: SectionColumns;\n gap?: SectionGap;\n justify?: SectionJustify;\n layout?: SectionLayoutPreset;\n sidebar?: SectionSidebar;\n sidebarRatio?: SectionSidebarRatio;\n stackBelow?: SectionStackBelow;\n template?: SectionTemplate;\n};\n\nexport type SectionColumnLayoutProps = {\n span?: SectionSpan;\n width?: SectionWidth;\n};\n\nexport type SectionDemoSlot = {\n content: string;\n role: \"content\" | \"sidebar\";\n title: string;\n};\n\nconst GAP_VALUES: Record<SectionGap, string> = {\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n};\n\nconst SIDEBAR_RATIOS: Record<SectionSidebarRatio, string> = {\n \"1:2\": \"1fr 2fr\",\n \"1:3\": \"1fr 3fr\",\n \"2:3\": \"2fr 3fr\",\n};\n\nfunction equalColumns(count: number) {\n return `repeat(${count}, minmax(0, 1fr))`;\n}\n\nfunction stackColumn() {\n return \"1fr\";\n}\n\nfunction sidebarTemplate(side: \"left\" | \"right\", ratio: SectionSidebarRatio) {\n const template = SIDEBAR_RATIOS[ratio];\n if (side === \"left\") {\n return template;\n }\n\n return template.split(\" \").reverse().join(\" \");\n}\n\nfunction resolveEqualColumns(\n mobile: number,\n tablet: number,\n desktop: number,\n stackBelow: SectionStackBelow,\n) {\n if (stackBelow === \"never\") {\n const max = Math.max(mobile, tablet, desktop);\n const template = equalColumns(max);\n return { mobile: template, tablet: template, desktop: template };\n }\n\n if (stackBelow === \"tablet\") {\n return {\n mobile: stackColumn(),\n tablet: stackColumn(),\n desktop: equalColumns(desktop),\n };\n }\n\n return {\n mobile: stackColumn(),\n tablet: equalColumns(tablet),\n desktop: equalColumns(desktop),\n };\n}\n\nfunction resolveSidebarColumns(side: \"left\" | \"right\", ratio: SectionSidebarRatio, stackBelow: SectionStackBelow) {\n const desktop = sidebarTemplate(side, ratio);\n\n if (stackBelow === \"never\") {\n return { mobile: desktop, tablet: desktop, desktop };\n }\n\n if (stackBelow === \"tablet\") {\n return {\n mobile: stackColumn(),\n tablet: stackColumn(),\n desktop,\n };\n }\n\n return {\n mobile: stackColumn(),\n tablet: stackColumn(),\n desktop,\n };\n}\n\nexport function layoutPresetToConfig(\n layout: SectionLayoutPreset,\n overrides: Partial<SectionLayoutConfig> = {},\n): SectionLayoutConfig {\n const base: SectionLayoutConfig = {\n columns: 1,\n sidebar: \"none\",\n sidebarRatio: \"1:2\",\n stackBelow: \"mobile\",\n };\n\n switch (layout) {\n case \"stack\":\n return { ...base, ...overrides, columns: 1 };\n case \"2-equal\":\n return { ...base, ...overrides, columns: 2 };\n case \"3-equal\":\n case \"auto-fit\":\n return { ...base, ...overrides, columns: 3 };\n case \"4-equal\":\n return { ...base, ...overrides, columns: 4 };\n case \"5-equal\":\n return { ...base, ...overrides, columns: 5 };\n case \"sidebar-left\":\n return { ...base, ...overrides, sidebar: \"left\", columns: 1 };\n case \"sidebar-right\":\n return { ...base, ...overrides, sidebar: \"right\", columns: 1 };\n default:\n return { ...base, ...overrides };\n }\n}\n\nexport function resolveSectionLayoutConfig(props: SectionRowLayoutProps): SectionLayoutConfig {\n if (props.layout && props.sidebar === undefined && props.columns === undefined) {\n return layoutPresetToConfig(props.layout, {\n sidebarRatio: props.sidebarRatio,\n stackBelow: props.stackBelow,\n });\n }\n\n return {\n columns: props.columns ?? 1,\n sidebar: props.sidebar ?? \"none\",\n sidebarRatio: props.sidebarRatio ?? \"1:2\",\n stackBelow: props.stackBelow ?? \"mobile\",\n };\n}\n\nexport function resolveLayoutTemplates(config: SectionLayoutConfig): SectionTemplate {\n const { columns, sidebar, sidebarRatio, stackBelow } = config;\n\n if (sidebar !== \"none\") {\n return resolveSidebarColumns(sidebar, sidebarRatio, stackBelow);\n }\n\n if (columns === 1) {\n return {\n mobile: stackColumn(),\n tablet: stackColumn(),\n desktop: stackColumn(),\n };\n }\n\n return resolveEqualColumns(1, columns, columns, stackBelow);\n}\n\nexport function resolveContentRowTemplates(\n columns: SectionColumns,\n stackBelow: SectionStackBelow,\n): SectionTemplate {\n if (columns === 1) {\n return {\n mobile: stackColumn(),\n tablet: stackColumn(),\n desktop: stackColumn(),\n };\n }\n\n return resolveEqualColumns(1, columns, columns, stackBelow);\n}\n\n/** Sidebar plus multiple content columns uses a nested row inside the main area. */\nexport function usesNestedContentRow(config: Pick<SectionLayoutConfig, \"columns\" | \"sidebar\">) {\n return config.sidebar !== \"none\" && config.columns > 1;\n}\n\nexport function resolveRowStyleVars(props: SectionRowLayoutProps): CSSProperties {\n const config = resolveSectionLayoutConfig(props);\n const resolvedTemplate = {\n ...resolveLayoutTemplates(config),\n ...props.template,\n };\n\n return {\n \"--section-cols-mobile\": resolvedTemplate.mobile ?? stackColumn(),\n \"--section-cols-tablet\": resolvedTemplate.tablet ?? resolvedTemplate.mobile ?? stackColumn(),\n \"--section-cols-desktop\":\n resolvedTemplate.desktop ??\n resolvedTemplate.tablet ??\n resolvedTemplate.mobile ??\n stackColumn(),\n \"--section-gap\": GAP_VALUES[props.gap ?? \"md\"],\n ...(props.align ? { \"--section-align\": props.align } : {}),\n ...(props.justify ? { \"--section-justify\": props.justify } : {}),\n } as CSSProperties;\n}\n\nexport function resolveColumnStyleVars({ span, width }: SectionColumnLayoutProps): CSSProperties {\n const vars: Record<string, string> = {};\n\n if (span?.mobile !== undefined) {\n vars[\"--section-col-span-mobile\"] = String(span.mobile);\n }\n\n if (span?.tablet !== undefined) {\n vars[\"--section-col-span-tablet\"] = String(span.tablet);\n }\n\n if (span?.desktop !== undefined) {\n vars[\"--section-col-span-desktop\"] = String(span.desktop);\n }\n\n if (width?.mobile) {\n vars[\"--section-col-width-mobile\"] = width.mobile;\n }\n\n if (width?.tablet) {\n vars[\"--section-col-width-tablet\"] = width.tablet;\n }\n\n if (width?.desktop) {\n vars[\"--section-col-width-desktop\"] = width.desktop;\n }\n\n return vars as CSSProperties;\n}\n\nexport function resolveSectionGapVars(gap: SectionGap = \"md\"): CSSProperties {\n return {\n \"--section-rows-gap\": GAP_VALUES[gap],\n } as CSSProperties;\n}\n\nexport function getSectionDemoSlots(settings: {\n columnFiveContent: string;\n columnFiveTitle: string;\n columnFourContent: string;\n columnFourTitle: string;\n columnOneContent: string;\n columnOneTitle: string;\n columnThreeContent: string;\n columnThreeTitle: string;\n columnTwoContent: string;\n columnTwoTitle: string;\n columns: SectionColumns;\n sidebar: SectionSidebar;\n sidebarContent: string;\n sidebarTitle: string;\n}): SectionDemoSlot[] {\n const contentColumns = [\n { title: settings.columnOneTitle, content: settings.columnOneContent },\n { title: settings.columnTwoTitle, content: settings.columnTwoContent },\n { title: settings.columnThreeTitle, content: settings.columnThreeContent },\n { title: settings.columnFourTitle, content: settings.columnFourContent },\n { title: settings.columnFiveTitle, content: settings.columnFiveContent },\n ];\n\n const slots: SectionDemoSlot[] = [];\n\n if (settings.sidebar !== \"none\") {\n slots.push({\n role: \"sidebar\",\n title: settings.sidebarTitle,\n content: settings.sidebarContent,\n });\n }\n\n for (const column of contentColumns.slice(0, settings.columns)) {\n slots.push({\n role: \"content\",\n title: column.title,\n content: column.content,\n });\n }\n\n return slots;\n}\n\nexport function getSectionLayoutConfigFromSettings(settings: {\n columns: SectionColumns;\n sidebar: SectionSidebar;\n sidebarRatio: SectionSidebarRatio;\n stackBelow: SectionStackBelow;\n}): SectionLayoutConfig {\n return {\n columns: settings.columns,\n sidebar: settings.sidebar,\n sidebarRatio: settings.sidebarRatio,\n stackBelow: settings.stackBelow,\n };\n}\n\n/** @deprecated Use getSectionDemoSlots instead. */\nexport function getSectionDemoColumnCount(settings: {\n columns: SectionColumns;\n sidebar: SectionSidebar;\n}) {\n const slots = getSectionDemoSlots({\n ...settings,\n columnFiveContent: \"\",\n columnFiveTitle: \"\",\n columnFourContent: \"\",\n columnFourTitle: \"\",\n columnOneContent: \"\",\n columnOneTitle: \"\",\n columnThreeContent: \"\",\n columnThreeTitle: \"\",\n columnTwoContent: \"\",\n columnTwoTitle: \"\",\n sidebarContent: \"\",\n sidebarTitle: \"\",\n });\n\n return slots.length;\n}\n",".section {\n display: grid;\n gap: var(--section-rows-gap, 16px);\n width: 100%;\n}\n\n.section[data-max-width=\"narrow\"] {\n max-width: 720px;\n margin-inline: auto;\n}\n\n.section[data-max-width=\"wide\"] {\n max-width: 1120px;\n margin-inline: auto;\n}\n\n.header {\n display: grid;\n gap: 6px;\n}\n\n.title {\n margin: 0;\n color: var(--opus-accent);\n font-size: 1rem;\n font-weight: 700;\n line-height: 1.25;\n}\n\n.description {\n margin: 0;\n color: var(--opus-muted);\n font-size: 0.88rem;\n line-height: 1.45;\n max-width: 72ch;\n}\n\n.body {\n display: grid;\n gap: var(--section-rows-gap, 16px);\n min-width: 0;\n}\n\n.row {\n display: grid;\n gap: var(--section-gap, 16px);\n align-items: stretch;\n justify-items: var(--section-justify, stretch);\n grid-template-columns: var(--section-cols-mobile, 1fr);\n grid-auto-flow: row;\n min-width: 0;\n}\n\n.column {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 100%;\n width: var(--section-col-width-mobile, auto);\n grid-column: span var(--section-col-span-mobile, 1);\n}\n\n.column > * {\n flex: 1 1 auto;\n width: 100%;\n min-height: 0;\n}\n\n.row > :not(.column) {\n min-width: 0;\n min-height: 100%;\n}\n\n@media (min-width: 720px) {\n .row {\n grid-template-columns: var(--section-cols-tablet, var(--section-cols-mobile, 1fr));\n }\n\n .column {\n width: var(--section-col-width-tablet, var(--section-col-width-mobile, auto));\n grid-column: span var(--section-col-span-tablet, var(--section-col-span-mobile, 1));\n }\n}\n\n@media (min-width: 1080px) {\n .row {\n grid-template-columns: var(\n --section-cols-desktop,\n var(--section-cols-tablet, var(--section-cols-mobile, 1fr))\n );\n }\n\n .column {\n width: var(\n --section-col-width-desktop,\n var(--section-col-width-tablet, var(--section-col-width-mobile, auto))\n );\n grid-column: span var(\n --section-col-span-desktop,\n var(--section-col-span-tablet, var(--section-col-span-mobile, 1))\n );\n }\n}\n","import type { CSSProperties, ReactNode } from \"react\";\nimport {\n resolveColumnStyleVars,\n resolveRowStyleVars,\n resolveSectionGapVars,\n type SectionAlign,\n type SectionColumns,\n type SectionGap,\n type SectionJustify,\n type SectionLayoutPreset,\n type SectionSidebar,\n type SectionSidebarRatio,\n type SectionSpan,\n type SectionStackBelow,\n type SectionTemplate,\n type SectionWidth,\n} from \"@/lib/layout/sectionLayout\";\nimport styles from \"./Section.module.css\";\n\ntype SectionMaxWidth = \"full\" | \"narrow\" | \"wide\";\n\ntype SectionProps = {\n children: ReactNode;\n className?: string;\n description?: string;\n gap?: SectionGap;\n maxWidth?: SectionMaxWidth;\n style?: CSSProperties;\n title?: string;\n};\n\ntype SectionRowProps = {\n align?: SectionAlign;\n children: ReactNode;\n className?: string;\n columns?: SectionColumns;\n gap?: SectionGap;\n justify?: SectionJustify;\n layout?: SectionLayoutPreset;\n sidebar?: SectionSidebar;\n sidebarRatio?: SectionSidebarRatio;\n stackBelow?: SectionStackBelow;\n style?: CSSProperties;\n template?: SectionTemplate;\n};\n\ntype SectionColumnProps = {\n children: ReactNode;\n className?: string;\n span?: SectionSpan;\n style?: CSSProperties;\n width?: SectionWidth;\n};\n\nfunction joinClassNames(...values: Array<string | undefined>) {\n return values.filter(Boolean).join(\" \");\n}\n\nfunction SectionRoot({\n children,\n className,\n description,\n gap = \"md\",\n maxWidth = \"full\",\n style,\n title,\n}: SectionProps) {\n return (\n <section\n className={joinClassNames(styles.section, className)}\n data-max-width={maxWidth}\n style={{ ...resolveSectionGapVars(gap), ...style }}\n >\n {title || description ? (\n <header className={styles.header}>\n {title ? <h2 className={styles.title}>{title}</h2> : null}\n {description ? <p className={styles.description}>{description}</p> : null}\n </header>\n ) : null}\n <div className={styles.body}>{children}</div>\n </section>\n );\n}\n\nfunction SectionRow({\n align,\n children,\n className,\n columns,\n gap,\n justify,\n layout,\n sidebar,\n sidebarRatio,\n stackBelow,\n style,\n template,\n}: SectionRowProps) {\n return (\n <div\n className={joinClassNames(styles.row, className)}\n style={{\n ...resolveRowStyleVars({\n align,\n columns,\n gap,\n justify,\n layout,\n sidebar,\n sidebarRatio,\n stackBelow,\n template,\n }),\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nfunction SectionColumn({ children, className, span, style, width }: SectionColumnProps) {\n return (\n <div\n className={joinClassNames(styles.column, className)}\n style={{ ...resolveColumnStyleVars({ span, width }), ...style }}\n >\n {children}\n </div>\n );\n}\n\nexport const Section = Object.assign(SectionRoot, {\n Row: SectionRow,\n Column: SectionColumn,\n});\n\nexport type {\n SectionAlign,\n SectionColumns,\n SectionGap,\n SectionJustify,\n SectionLayoutPreset,\n SectionSidebar,\n SectionSidebarRatio,\n SectionSpan,\n SectionStackBelow,\n SectionTemplate,\n SectionWidth,\n};\n",".wrap {\n width: 100%;\n overflow-x: auto;\n border: 1px solid var(--opus-border);\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 92%, transparent);\n box-shadow: var(--opus-shadow);\n}\n\n.table {\n width: 100%;\n min-width: 520px;\n border-collapse: collapse;\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n}\n\n.caption {\n padding: 12px 14px;\n color: var(--opus-muted);\n font-size: 0.82rem;\n font-weight: 700;\n text-align: left;\n}\n\n.table th,\n.table td {\n padding: var(--table-cell-padding);\n border-bottom: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n text-align: left;\n vertical-align: middle;\n}\n\n.wrap[data-density=\"compact\"] {\n --table-cell-padding: 8px 10px;\n}\n\n.wrap[data-density=\"comfortable\"] {\n --table-cell-padding: 12px 14px;\n}\n\n.table th {\n background: color-mix(in srgb, var(--opus-input-bg) 62%, transparent);\n color: var(--opus-muted);\n font-size: 0.74rem;\n font-weight: 900;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n}\n\n.table tr:last-child td {\n border-bottom: 0;\n}\n\n.wrap[data-striped=\"true\"] tbody tr:nth-child(even) td {\n background: color-mix(in srgb, var(--opus-accent) 6%, transparent);\n}\n\n.wrap[data-bordered=\"true\"] .table th,\n.wrap[data-bordered=\"true\"] .table td {\n border-right: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n}\n\n.wrap[data-bordered=\"true\"] .table th:last-child,\n.wrap[data-bordered=\"true\"] .table td:last-child {\n border-right: 0;\n}\n\n.table [data-align=\"right\"] {\n text-align: right;\n}\n\n.table [data-align=\"center\"] {\n text-align: center;\n}\n\n.empty {\n color: var(--opus-muted);\n text-align: center;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n}\n","import type { ReactNode } from \"react\";\nimport type { TableDensity } from \"@/components/fields/types\";\nimport styles from \"./Table.module.css\";\n\nexport type TableColumn = {\n align?: \"left\" | \"right\" | \"center\";\n key: string;\n label: string;\n};\n\nexport type TableRow = {\n id: string;\n values: Record<string, ReactNode>;\n};\n\ntype TableProps = {\n bordered?: boolean;\n caption?: string;\n columns: TableColumn[];\n density?: TableDensity;\n emptyMessage?: string;\n rows: TableRow[];\n showCaption?: boolean;\n striped?: boolean;\n};\n\nexport function Table({\n bordered = false,\n caption,\n columns,\n density = \"comfortable\",\n emptyMessage = \"No data available.\",\n rows,\n showCaption = true,\n striped = false,\n}: TableProps) {\n const empty = rows.length === 0;\n\n return (\n <div className={styles.wrap} data-bordered={bordered} data-density={density} data-striped={striped}>\n <table className={styles.table}>\n {caption ? (\n <caption className={showCaption ? styles.caption : styles.visuallyHidden}>{caption}</caption>\n ) : null}\n <thead>\n <tr>\n {columns.map((column) => (\n <th data-align={column.align ?? \"left\"} key={column.key} scope=\"col\">\n {column.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {empty ? (\n <tr>\n <td className={styles.empty} colSpan={columns.length} role=\"status\">\n {emptyMessage}\n </td>\n </tr>\n ) : (\n rows.map((row) => (\n <tr key={row.id}>\n {columns.map((column) => (\n <td data-align={column.align ?? \"left\"} key={column.key}>\n {row.values[column.key]}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n );\n}\n",".frame {\n --grid-header-glass: rgba(14, 16, 36, 0.28);\n --grid-header-glass-border: rgba(168, 131, 255, 0.22);\n position: relative;\n width: 100%;\n border: 1px solid var(--opus-border);\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 92%, transparent);\n box-shadow: var(--opus-shadow);\n overflow: hidden;\n}\n\n:global([data-theme=\"light\"]) .frame {\n --grid-header-glass: rgba(252, 253, 255, 0.4);\n --grid-header-glass-border: rgba(126, 103, 255, 0.24);\n}\n\n.wrap {\n width: 100%;\n max-height: 360px;\n overflow: auto;\n position: relative;\n scrollbar-width: none;\n}\n\n.wrap::-webkit-scrollbar {\n display: none;\n}\n\n.grid {\n width: max-content;\n min-width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0;\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n}\n\n.caption {\n padding: 12px 14px;\n border-bottom: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n color: var(--opus-muted);\n font-size: 0.82rem;\n font-weight: 800;\n text-align: left;\n}\n\n.gridBody {\n position: relative;\n min-height: 0;\n}\n\n.menuHost {\n position: absolute;\n inset: 0;\n z-index: 40;\n overflow: hidden;\n pointer-events: none;\n}\n\n.menuHost .headerMenu {\n pointer-events: auto;\n}\n\n.grid td[data-column-resizable=\"true\"] {\n position: relative;\n}\n\n.grid tbody td[data-column-resizable=\"true\"]::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 14px;\n height: 100%;\n cursor: col-resize;\n content: \"\";\n}\n\n.grid tbody th,\n.grid td {\n padding: var(--grid-cell-padding);\n border-bottom: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n background: color-mix(in srgb, var(--opus-panel) 96%, transparent);\n text-align: left;\n vertical-align: middle;\n white-space: nowrap;\n}\n\n.wrap[data-density=\"compact\"] {\n --grid-cell-padding: 8px 10px;\n --grid-cell-padding-block: 8px;\n --grid-cell-padding-inline: 10px;\n}\n\n.wrap[data-density=\"comfortable\"] {\n --grid-cell-padding: 12px 14px;\n --grid-cell-padding-block: 12px;\n --grid-cell-padding-inline: 14px;\n}\n\n.grid thead th {\n position: relative;\n isolation: isolate;\n overflow: hidden;\n max-width: 0;\n padding-block: var(--grid-cell-padding-block);\n padding-inline: var(--grid-cell-padding-inline) 0;\n border-bottom: 1px solid var(--grid-header-glass-border);\n background: transparent;\n color: color-mix(in srgb, var(--opus-text) 84%, var(--opus-accent));\n font-size: 0.74rem;\n font-weight: 900;\n letter-spacing: 0.06em;\n text-align: left;\n text-transform: uppercase;\n vertical-align: middle;\n white-space: nowrap;\n z-index: 2;\n}\n\n.grid thead th::before {\n position: absolute;\n inset: 0;\n z-index: -1;\n background:\n linear-gradient(\n 135deg,\n color-mix(in srgb, var(--opus-accent) 10%, transparent),\n color-mix(in srgb, #2563eb 6%, transparent)\n ),\n var(--grid-header-glass);\n -webkit-backdrop-filter: blur(20px) saturate(1.35);\n backdrop-filter: blur(20px) saturate(1.35);\n content: \"\";\n pointer-events: none;\n}\n\n.grid thead th[data-column-resizable=\"true\"] {\n overflow: visible;\n}\n\n.grid thead th[data-menu-open=\"true\"] {\n z-index: 30;\n}\n\n.rowHeader,\n.corner {\n overflow: hidden;\n max-width: 0;\n text-overflow: ellipsis;\n color: var(--opus-text);\n font-weight: 850;\n}\n\n.grid td {\n overflow: hidden;\n max-width: 0;\n text-overflow: ellipsis;\n}\n\n.headerCell {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n}\n\n.headerCell:has(.headerControls) {\n padding-right: 46px;\n}\n\n.headerControls {\n position: absolute;\n top: 50%;\n right: 6px;\n z-index: 2;\n display: inline-flex;\n align-items: center;\n gap: 0;\n transform: translateY(-50%);\n}\n\n.sortButton {\n display: inline-flex;\n flex: 1 1 auto;\n min-width: 0;\n max-width: 100%;\n align-items: center;\n justify-content: flex-start;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n font: inherit;\n font-size: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n padding: 0;\n text-align: inherit;\n text-transform: inherit;\n overflow: hidden;\n}\n\n.sortIndicatorButton {\n display: inline-grid;\n flex: 0 0 auto;\n place-items: center;\n width: 18px;\n height: 22px;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n}\n\n.headerLabel {\n display: inline-flex;\n flex: 1 1 auto;\n min-width: 0;\n max-width: 100%;\n overflow: hidden;\n}\n\n.sortButtonLabel {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.menuButton {\n display: inline-grid;\n width: 22px;\n height: 22px;\n flex: 0 0 auto;\n place-items: center;\n border: 1px solid color-mix(in srgb, var(--opus-border) 76%, transparent);\n border-radius: var(--opus-input-radius);\n background: color-mix(in srgb, var(--opus-panel) 64%, transparent);\n color: inherit;\n cursor: pointer;\n transition:\n background 160ms ease,\n border-color 160ms ease,\n color 160ms ease;\n}\n\n.menuChevron {\n width: 0;\n height: 0;\n border-top: 5px solid currentColor;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n\n.menuFilterIcon {\n width: 10px;\n height: 10px;\n}\n\n.menuButton[data-filter-active=\"true\"] {\n border-color: color-mix(in srgb, var(--opus-accent) 72%, transparent);\n background: color-mix(in srgb, var(--opus-accent) 24%, var(--opus-panel));\n color: var(--opus-accent);\n}\n\n.menuButton[aria-expanded=\"true\"] {\n border-color: color-mix(in srgb, var(--opus-accent) 62%, transparent);\n background: color-mix(in srgb, var(--opus-accent) 18%, transparent);\n}\n\n.grid thead th[data-filter-active=\"true\"]::before {\n background:\n linear-gradient(\n 135deg,\n color-mix(in srgb, var(--opus-accent) 16%, transparent),\n color-mix(in srgb, #2563eb 8%, transparent)\n ),\n var(--grid-header-glass);\n}\n\n.sortIndicator {\n position: relative;\n width: 8px;\n height: 12px;\n flex: 0 0 auto;\n opacity: 0.48;\n}\n\n.sortIndicator::before,\n.sortIndicator::after {\n position: absolute;\n left: 0;\n width: 0;\n height: 0;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n content: \"\";\n}\n\n.sortIndicator::before {\n top: 0;\n border-bottom: 5px solid currentColor;\n}\n\n.sortIndicator::after {\n bottom: 0;\n border-top: 5px solid currentColor;\n}\n\n.sortIndicator[data-direction=\"ascending\"]::before,\n.sortIndicator[data-direction=\"descending\"]::after {\n opacity: 1;\n}\n\n.sortIndicator[data-direction=\"ascending\"]::after,\n.sortIndicator[data-direction=\"descending\"]::before,\n.sortIndicator[data-direction=\"none\"] {\n opacity: 0.28;\n}\n\n.filterInput {\n width: 100%;\n min-width: 0;\n height: 34px;\n border: 1px solid color-mix(in srgb, var(--opus-border) 92%, var(--opus-accent) 8%);\n border-radius: var(--opus-input-radius);\n background: color-mix(in srgb, var(--opus-input-bg) 92%, var(--opus-panel) 8%);\n color: var(--opus-text);\n font: inherit;\n font-size: 0.82rem;\n font-weight: 700;\n letter-spacing: 0;\n padding: 0 10px;\n text-transform: none;\n}\n\n.headerMenu {\n position: absolute;\n z-index: 1;\n display: grid;\n gap: 12px;\n overflow: auto;\n padding: 12px;\n border: 1px solid color-mix(in srgb, var(--opus-border) 82%, transparent);\n border-radius: var(--opus-input-radius-large);\n background:\n linear-gradient(\n 135deg,\n color-mix(in srgb, var(--opus-accent) 12%, transparent),\n transparent 48%\n ),\n color-mix(in srgb, var(--opus-page-bg) 88%, var(--opus-panel) 12%);\n box-shadow:\n 0 18px 44px color-mix(in srgb, black 42%, transparent),\n inset 0 1px 0 color-mix(in srgb, white 10%, transparent);\n backdrop-filter: blur(14px) saturate(1.12);\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n font-weight: 800;\n letter-spacing: 0;\n text-align: left;\n text-transform: none;\n}\n\n.menuSection {\n display: grid;\n gap: 7px;\n}\n\n.menuLabel {\n color: var(--opus-muted);\n font-size: 0.68rem;\n font-weight: 900;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n}\n\n.menuAction {\n min-height: 30px;\n border: 1px solid color-mix(in srgb, var(--opus-border) 76%, transparent);\n border-radius: var(--opus-input-radius);\n background: color-mix(in srgb, var(--opus-input-bg) 78%, transparent);\n color: var(--opus-text);\n cursor: pointer;\n font: inherit;\n font-size: 0.78rem;\n font-weight: 800;\n text-align: left;\n padding: 0 9px;\n}\n\n.menuAction:hover {\n border-color: color-mix(in srgb, var(--opus-accent) 54%, transparent);\n background: color-mix(in srgb, var(--opus-accent) 14%, var(--opus-input-bg));\n}\n\n.filterInput::placeholder {\n color: var(--opus-muted);\n}\n\n.filterInput:focus {\n border-color: var(--opus-accent);\n outline: 0;\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--opus-accent) 18%, transparent);\n}\n\n.columnResizeHandle {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 30;\n width: 14px;\n height: 100%;\n cursor: col-resize;\n touch-action: none;\n}\n\n.columnResizeHandle::after {\n position: absolute;\n top: 8px;\n right: 4px;\n bottom: 8px;\n width: 1px;\n background: color-mix(in srgb, var(--opus-accent) 38%, transparent);\n content: \"\";\n opacity: 0;\n transition: opacity 160ms ease;\n}\n\n.columnResizeHandle:hover::after,\n.wrap[data-resizing=\"true\"] .columnResizeHandle::after {\n opacity: 1;\n}\n\n.wrap[data-resizing=\"true\"] {\n cursor: col-resize;\n user-select: none;\n}\n\n.grid thead th[data-menu-open=\"true\"] .columnResizeHandle {\n z-index: 35;\n}\n\n.wrap[data-sticky-header=\"true\"] thead th {\n position: sticky;\n top: 0;\n}\n\n.wrap[data-sticky-column=\"true\"] .rowHeader,\n.wrap[data-sticky-column=\"true\"] .corner {\n position: sticky;\n left: 0;\n z-index: 12;\n}\n\n.wrap[data-sticky-header=\"true\"][data-sticky-column=\"true\"] .corner {\n z-index: 16;\n}\n\n.wrap[data-sticky-header=\"true\"][data-sticky-column=\"true\"] .corner[data-menu-open=\"true\"] {\n z-index: 40;\n}\n\n.wrap[data-striped=\"true\"] tbody tr:nth-child(even) th,\n.wrap[data-striped=\"true\"] tbody tr:nth-child(even) td {\n background: color-mix(in srgb, var(--opus-accent) 6%, var(--opus-panel));\n}\n\n.wrap[data-bordered=\"true\"] .grid th,\n.wrap[data-bordered=\"true\"] .grid td {\n border-right: 1px solid color-mix(in srgb, var(--opus-border) 72%, transparent);\n}\n\n.grid tbody td[data-align=\"right\"] {\n text-align: right;\n}\n\n.grid tbody td[data-align=\"center\"] {\n text-align: center;\n}\n\n.empty {\n color: var(--opus-muted);\n font-weight: 800;\n text-align: center;\n}\n\n.grid tr:last-child th,\n.grid tr:last-child td {\n border-bottom: 0;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n}\n\n@media (prefers-reduced-transparency: reduce) {\n .grid thead th::before {\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n background:\n linear-gradient(\n 135deg,\n color-mix(in srgb, var(--opus-accent) 18%, transparent),\n color-mix(in srgb, #2563eb 10%, transparent)\n ),\n color-mix(in srgb, var(--opus-panel) 96%, transparent);\n }\n\n .grid thead th[data-filter-active=\"true\"]::before {\n background:\n linear-gradient(\n 135deg,\n color-mix(in srgb, var(--opus-accent) 28%, transparent),\n color-mix(in srgb, #2563eb 14%, transparent)\n ),\n color-mix(in srgb, var(--opus-panel) 96%, transparent);\n }\n}\n","\"use client\";\n\nimport type { PointerEvent, ReactNode, Ref } from \"react\";\nimport { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { faFilter } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport type { TableDensity } from \"@/components/fields/types\";\nimport \"@/lib/fontawesome\";\nimport styles from \"./DataGrid.module.css\";\n\nexport type DataGridColumn = {\n align?: \"left\" | \"right\" | \"center\";\n filterable?: boolean;\n key: string;\n label: string;\n resizable?: boolean;\n sortable?: boolean;\n};\n\nexport type DataGridRowHeaderColumn = {\n filterable?: boolean;\n resizable?: boolean;\n sortable?: boolean;\n};\n\nexport type DataGridRow = {\n id: string;\n label?: string;\n values: Record<string, ReactNode>;\n};\n\ntype DataGridProps = {\n bordered?: boolean;\n caption?: string;\n columns: DataGridColumn[];\n density?: TableDensity;\n rowHeader?: DataGridRowHeaderColumn;\n rows: DataGridRow[];\n stickyFirstColumn?: boolean;\n stickyHeader?: boolean;\n striped?: boolean;\n};\n\ntype ResizeState = {\n key: string;\n startWidth: number;\n startX: number;\n};\n\ntype SortState = {\n direction: \"ascending\" | \"descending\";\n key: string;\n};\n\ntype OpenMenuState = {\n align: \"left\" | \"right\";\n key: string;\n label: string;\n menuId: string;\n};\n\ntype MenuAnchor = {\n align: \"left\" | \"right\";\n button: HTMLButtonElement;\n};\n\nconst MENU_WIDTH = 260;\nconst MENU_GAP = 8;\nconst MENU_EDGE = 8;\nconst MENU_MIN_HEIGHT = 120;\nconst MENU_PREFERRED_HEIGHT = 277;\nconst MENU_CLEAR_FILTER_RESERVE = 37;\nconst MENU_BUTTON_WIDTH = 22;\nconst HEADER_CONTROL_GAP = 6;\nconst SORT_INDICATOR_WIDTH = 8;\nconst SORT_LABEL_GAP = 8;\nconst RESIZE_HANDLE_WIDTH = 14;\n\nfunction resolveColumnFeatures(\n column: DataGridColumn | DataGridRowHeaderColumn | undefined,\n) {\n return {\n filterable: column?.filterable === true,\n resizable: column?.resizable === true,\n sortable: column?.sortable === true,\n };\n}\n\nfunction getMinColumnWidth(sortable: boolean, hasMenu: boolean, density: TableDensity) {\n const paddingInline = density === \"comfortable\" ? 28 : 20;\n let width = paddingInline + 1;\n\n if (hasMenu) {\n width += MENU_BUTTON_WIDTH + HEADER_CONTROL_GAP;\n }\n\n if (sortable) {\n width += SORT_INDICATOR_WIDTH + SORT_LABEL_GAP;\n }\n\n return width;\n}\n\nfunction cellText(value: ReactNode): string {\n if (value === null || value === undefined || typeof value === \"boolean\") {\n return \"\";\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return String(value);\n }\n\n if (Array.isArray(value)) {\n return value.map(cellText).join(\" \");\n }\n\n return \"\";\n}\n\nfunction rowTeamValue(row: DataGridRow): string {\n return cellText(row.values.team ?? row.label);\n}\n\nfunction isNumericValue(value: string) {\n return /^-?\\d+(?:\\.\\d+)?$/.test(value);\n}\n\nfunction compareValues(a: string, b: string) {\n const aTrim = a.trim();\n const bTrim = b.trim();\n\n if (aTrim && bTrim && isNumericValue(aTrim) && isNumericValue(bTrim)) {\n return Number(aTrim) - Number(bTrim);\n }\n\n return aTrim.localeCompare(bTrim, undefined, { numeric: true, sensitivity: \"base\" });\n}\n\nexport function DataGrid({\n bordered = true,\n caption,\n columns,\n density = \"compact\",\n rowHeader,\n rows,\n stickyFirstColumn = true,\n stickyHeader = true,\n striped = true,\n}: DataGridProps) {\n const [columnWidths, setColumnWidths] = useState<Record<string, number>>({});\n const [filters, setFilters] = useState<Record<string, string>>({});\n const [openMenu, setOpenMenu] = useState<OpenMenuState | null>(null);\n const [resizing, setResizing] = useState<ResizeState | null>(null);\n const [sort, setSort] = useState<SortState | null>(null);\n const menuAnchorRef = useRef<MenuAnchor | null>(null);\n const menuHostRef = useRef<HTMLDivElement | null>(null);\n const menuRef = useRef<HTMLSpanElement | null>(null);\n const menuFrameRef = useRef<number | null>(null);\n const resizeDragRef = useRef<ResizeState | null>(null);\n const wrapRef = useRef<HTMLDivElement | null>(null);\n const hasTeamColumn = columns.some((column) => column.key === \"team\");\n const gridColumns = useMemo(\n () =>\n hasTeamColumn\n ? columns\n : [{ key: \"team\", label: \"Team\", align: \"left\" as const }, ...columns],\n [columns, hasTeamColumn],\n );\n const dataColumns = useMemo(\n () => gridColumns.filter((column) => column.key !== \"team\"),\n [gridColumns],\n );\n const columnFeatures = useMemo(() => {\n const features: Record<string, { filterable: boolean; resizable: boolean; sortable: boolean }> = {};\n\n for (const column of gridColumns) {\n const config = column.key === \"team\" && !hasTeamColumn ? rowHeader : column;\n features[column.key] = resolveColumnFeatures(config);\n }\n\n return features;\n }, [gridColumns, hasTeamColumn, rowHeader]);\n const visibleRows = rows\n .filter((row) =>\n gridColumns.every((column) => {\n const features = columnFeatures[column.key];\n\n if (!features?.filterable) {\n return true;\n }\n\n const filter = filters[column.key]?.trim().toLowerCase();\n\n if (!filter) {\n return true;\n }\n\n const value = column.key === \"team\" ? rowTeamValue(row) : cellText(row.values[column.key]);\n return value.toLowerCase().includes(filter);\n }),\n )\n .sort((a, b) => {\n if (!sort) {\n return 0;\n }\n\n if (!columnFeatures[sort.key]?.sortable) {\n return 0;\n }\n\n const aValue = sort.key === \"team\" ? rowTeamValue(a) : cellText(a.values[sort.key]);\n const bValue = sort.key === \"team\" ? rowTeamValue(b) : cellText(b.values[sort.key]);\n const result = compareValues(aValue, bValue);\n\n return sort.direction === \"ascending\" ? result : -result;\n });\n const openMenuFeatures = openMenu ? columnFeatures[openMenu.key] : undefined;\n\n const resetWrapMinHeight = useCallback(() => {\n if (wrapRef.current) {\n wrapRef.current.style.minHeight = \"\";\n }\n }, []);\n\n const closeHeaderMenu = useCallback(() => {\n menuAnchorRef.current = null;\n resetWrapMinHeight();\n setOpenMenu(null);\n }, [resetWrapMinHeight]);\n\n const activeMenuFilter = openMenu ? filters[openMenu.key] ?? \"\" : \"\";\n\n const applyMenuPosition = useCallback(() => {\n const anchor = menuAnchorRef.current;\n const menu = menuRef.current;\n const host = menuHostRef.current;\n const wrap = wrapRef.current;\n\n if (!anchor || !menu || !host) {\n return;\n }\n\n const buttonRect = anchor.button.getBoundingClientRect();\n const hostRect = host.getBoundingClientRect();\n const menuWidth = Math.min(MENU_WIDTH, hostRect.width - MENU_EDGE * 2);\n const buttonVisible =\n buttonRect.bottom > hostRect.top\n && buttonRect.top < hostRect.bottom\n && buttonRect.right > hostRect.left\n && buttonRect.left < hostRect.right;\n\n if (!buttonVisible) {\n closeHeaderMenu();\n return;\n }\n\n let left = anchor.align === \"left\"\n ? buttonRect.left - hostRect.left\n : buttonRect.right - hostRect.left - menuWidth;\n left = Math.min(Math.max(left, MENU_EDGE), hostRect.width - menuWidth - MENU_EDGE);\n\n const belowTop = buttonRect.bottom - hostRect.top + MENU_GAP;\n menu.style.maxHeight = \"none\";\n let menuNaturalHeight = menu.offsetHeight;\n\n if (openMenuFeatures?.filterable && !activeMenuFilter.trim()) {\n menuNaturalHeight += MENU_CLEAR_FILTER_RESERVE;\n }\n\n menuNaturalHeight = Math.max(menuNaturalHeight, MENU_MIN_HEIGHT, MENU_PREFERRED_HEIGHT);\n menu.style.maxHeight = \"\";\n\n if (wrap) {\n wrap.style.minHeight = `${Math.ceil(belowTop + menuNaturalHeight + MENU_EDGE)}px`;\n }\n\n const expandedHostRect = host.getBoundingClientRect();\n const spaceBelow = expandedHostRect.height - belowTop - MENU_EDGE;\n const spaceAbove = buttonRect.top - expandedHostRect.top - MENU_GAP - MENU_EDGE;\n const openBelow = spaceBelow >= MENU_MIN_HEIGHT || spaceBelow >= spaceAbove;\n const top = openBelow\n ? belowTop\n : Math.max(MENU_EDGE, buttonRect.top - expandedHostRect.top - MENU_GAP);\n const maxHeight = openBelow\n ? Math.min(menuNaturalHeight, Math.max(MENU_MIN_HEIGHT, spaceBelow))\n : Math.min(menuNaturalHeight, Math.max(MENU_MIN_HEIGHT, spaceAbove));\n\n menu.style.width = `${menuWidth}px`;\n menu.style.left = `${left}px`;\n menu.style.top = `${top}px`;\n menu.style.maxHeight = `${maxHeight}px`;\n menu.style.transform = openBelow ? \"\" : \"translateY(-100%)\";\n }, [activeMenuFilter, closeHeaderMenu, openMenuFeatures?.filterable]);\n\n const scheduleMenuPosition = useCallback(() => {\n if (menuFrameRef.current !== null) {\n return;\n }\n\n menuFrameRef.current = window.requestAnimationFrame(() => {\n menuFrameRef.current = null;\n applyMenuPosition();\n });\n }, [applyMenuPosition]);\n\n useLayoutEffect(() => {\n if (!openMenu) {\n resetWrapMinHeight();\n return;\n }\n\n applyMenuPosition();\n\n const wrap = wrapRef.current;\n const menu = menuRef.current;\n wrap?.addEventListener(\"scroll\", scheduleMenuPosition, { passive: true });\n window.addEventListener(\"resize\", scheduleMenuPosition, { passive: true });\n\n const onDocumentKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const trigger = menuAnchorRef.current?.button;\n closeHeaderMenu();\n trigger?.focus();\n };\n\n document.addEventListener(\"keydown\", onDocumentKeyDown, true);\n\n const resizeObserver = menu\n ? new ResizeObserver(() => {\n scheduleMenuPosition();\n })\n : null;\n\n if (menu && resizeObserver) {\n resizeObserver.observe(menu);\n }\n\n const anchorButton = menuAnchorRef.current?.button;\n const headerCell = anchorButton?.closest(\"th\");\n const headerResizeObserver = headerCell\n ? new ResizeObserver(() => {\n scheduleMenuPosition();\n })\n : null;\n\n if (headerCell && headerResizeObserver) {\n headerResizeObserver.observe(headerCell);\n }\n\n const focusTarget = menu?.querySelector(\"input\");\n\n if (focusTarget instanceof HTMLInputElement) {\n focusTarget.focus();\n } else {\n menu?.focus();\n }\n\n return () => {\n wrap?.removeEventListener(\"scroll\", scheduleMenuPosition);\n window.removeEventListener(\"resize\", scheduleMenuPosition);\n document.removeEventListener(\"keydown\", onDocumentKeyDown, true);\n resizeObserver?.disconnect();\n headerResizeObserver?.disconnect();\n resetWrapMinHeight();\n\n if (menuFrameRef.current !== null) {\n window.cancelAnimationFrame(menuFrameRef.current);\n menuFrameRef.current = null;\n }\n };\n }, [activeMenuFilter, applyMenuPosition, closeHeaderMenu, openMenu, resetWrapMinHeight, scheduleMenuPosition]);\n\n useLayoutEffect(() => {\n if (!openMenu) {\n return;\n }\n\n scheduleMenuPosition();\n }, [columnWidths, openMenu, scheduleMenuPosition]);\n\n const toggleSort = (key: string) => {\n if (!columnFeatures[key]?.sortable) {\n return;\n }\n\n setSort((current) => {\n if (current?.key !== key) {\n return { key, direction: \"ascending\" };\n }\n\n if (current.direction === \"ascending\") {\n return { key, direction: \"descending\" };\n }\n\n return null;\n });\n };\n\n const setSortDirection = (key: string, direction: SortState[\"direction\"] | null) => {\n setSort(direction ? { key, direction } : null);\n closeHeaderMenu();\n };\n\n const openHeaderMenu = ({\n align,\n button,\n key,\n label,\n }: {\n align: \"left\" | \"right\";\n button: HTMLButtonElement;\n key: string;\n label: string;\n }) => {\n menuAnchorRef.current = { align, button };\n setOpenMenu({\n align,\n key,\n label,\n menuId: key,\n });\n };\n\n const beginResize = useCallback((\n event: PointerEvent<HTMLElement> | globalThis.PointerEvent,\n key: string,\n measuredWidth?: number,\n ) => {\n if (!columnFeatures[key]?.resizable) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n closeHeaderMenu();\n\n const cell = \"currentTarget\" in event\n ? (event.currentTarget as HTMLElement).closest(\"th, td\")\n : null;\n const widthFromCell = cell?.getBoundingClientRect().width;\n const currentWidth =\n columnWidths[key] ?? measuredWidth ?? widthFromCell ?? (key === \"team\" ? 180 : 130);\n\n const dragState: ResizeState = {\n key,\n startWidth: currentWidth,\n startX: event.clientX,\n };\n\n resizeDragRef.current = dragState;\n setResizing(dragState);\n\n const onPointerMove = (moveEvent: globalThis.PointerEvent) => {\n const drag = resizeDragRef.current;\n\n if (!drag) {\n return;\n }\n\n const features = columnFeatures[drag.key] ?? {\n filterable: false,\n resizable: false,\n sortable: false,\n };\n const nextWidth = Math.max(\n getMinColumnWidth(\n features.sortable,\n features.sortable || features.filterable,\n density,\n ),\n drag.startWidth + moveEvent.clientX - drag.startX,\n );\n\n setColumnWidths((current) => ({ ...current, [drag.key]: nextWidth }));\n };\n\n const finishResize = () => {\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", finishResize);\n window.removeEventListener(\"pointercancel\", finishResize);\n resizeDragRef.current = null;\n setResizing(null);\n };\n\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", finishResize);\n window.addEventListener(\"pointercancel\", finishResize);\n }, [closeHeaderMenu, columnFeatures, columnWidths, density]);\n\n const handleBodyPointerDown = useCallback((event: PointerEvent<HTMLTableSectionElement>) => {\n const cell = (event.target as HTMLElement).closest<HTMLTableCellElement>(\n \"td[data-column-key]\",\n );\n\n if (!cell || cell.dataset.columnResizable !== \"true\") {\n return;\n }\n\n const columnKey = cell.dataset.columnKey;\n\n if (!columnKey || !columnFeatures[columnKey]?.resizable) {\n return;\n }\n\n const { right, width } = cell.getBoundingClientRect();\n\n if (event.clientX < right - RESIZE_HANDLE_WIDTH) {\n return;\n }\n\n beginResize(event, columnKey, width);\n }, [beginResize, columnFeatures]);\n\n return (\n <div className={styles.frame}>\n {caption ? <div className={styles.caption}>{caption}</div> : null}\n <div className={styles.gridBody}>\n <div\n ref={wrapRef}\n className={styles.wrap}\n data-bordered={bordered}\n data-density={density}\n data-filterable={Object.values(columnFeatures).some((feature) => feature.filterable)}\n data-resizable={Object.values(columnFeatures).some((feature) => feature.resizable)}\n data-resizing={Boolean(resizing)}\n data-sortable={Object.values(columnFeatures).some((feature) => feature.sortable)}\n data-sticky-column={stickyFirstColumn}\n data-sticky-header={stickyHeader}\n data-striped={striped}\n >\n <table className={styles.grid}>\n {caption ? <caption className={styles.visuallyHidden}>{caption}</caption> : null}\n <colgroup>\n {gridColumns.map((column) => (\n <col\n key={column.key}\n style={{ width: columnWidths[column.key] ?? (column.key === \"team\" ? 180 : 130) }}\n />\n ))}\n </colgroup>\n <thead>\n <tr>\n {gridColumns.map((column) => (\n <th\n aria-sort={\n columnFeatures[column.key].sortable\n ? sort?.key === column.key\n ? sort.direction\n : \"none\"\n : undefined\n }\n className={column.key === \"team\" ? styles.corner : undefined}\n data-column-resizable={columnFeatures[column.key].resizable}\n data-filter-active={Boolean(filters[column.key]?.trim())}\n data-menu-open={openMenu?.key === column.key}\n key={column.key}\n scope=\"col\"\n style={\n columnWidths[column.key]\n ? { width: columnWidths[column.key], minWidth: columnWidths[column.key] }\n : undefined\n }\n >\n <HeaderContent\n filterActive={Boolean(filters[column.key]?.trim())}\n filterable={columnFeatures[column.key].filterable}\n label={column.label}\n menuId={column.key}\n sortDirection={sort?.key === column.key ? sort.direction : undefined}\n sortable={columnFeatures[column.key].sortable}\n menuOpen={openMenu?.key === column.key}\n onMenuToggle={(button) => {\n if (openMenu?.key === column.key) {\n closeHeaderMenu();\n return;\n }\n\n openHeaderMenu({\n align: column.key === \"team\" ? \"left\" : \"right\",\n button,\n key: column.key,\n label: column.label,\n });\n }}\n onSort={() => toggleSort(column.key)}\n />\n {columnFeatures[column.key].resizable ? (\n <ColumnResizeHandle\n onResizeStart={(event) => beginResize(event, column.key)}\n />\n ) : null}\n </th>\n ))}\n </tr>\n </thead>\n <tbody onPointerDown={handleBodyPointerDown}>\n {visibleRows.map((row) => (\n <tr key={row.id}>\n <th\n className={styles.rowHeader}\n scope=\"row\"\n style={\n columnWidths.team\n ? { width: columnWidths.team, minWidth: columnWidths.team }\n : undefined\n }\n >\n {row.values.team ?? row.label}\n </th>\n {dataColumns.map((column) => (\n <td\n data-align={column.align ?? \"left\"}\n data-column-key={column.key}\n data-column-resizable={columnFeatures[column.key].resizable}\n key={column.key}\n style={\n columnWidths[column.key]\n ? { width: columnWidths[column.key], minWidth: columnWidths[column.key] }\n : undefined\n }\n >\n {row.values[column.key]}\n </td>\n ))}\n </tr>\n ))}\n {!visibleRows.length ? (\n <tr>\n <th className={styles.rowHeader} scope=\"row\">\n No rows\n </th>\n <td className={styles.empty} colSpan={Math.max(dataColumns.length, 1)}>\n No matching rows.\n </td>\n </tr>\n ) : null}\n </tbody>\n </table>\n </div>\n {openMenu ? (\n <div className={styles.menuHost} ref={menuHostRef}>\n <GridHeaderMenu\n ref={menuRef}\n filter={filters[openMenu.key] ?? \"\"}\n filterable={openMenuFeatures?.filterable ?? false}\n label={openMenu.label}\n menuId={openMenu.menuId}\n sortDirection={sort?.key === openMenu.key ? sort.direction : undefined}\n sortable={openMenuFeatures?.sortable ?? false}\n onFilterChange={(filter) =>\n setFilters((current) => ({ ...current, [openMenu.key]: filter }))\n }\n onMenuClose={closeHeaderMenu}\n onSortDirection={(direction) => setSortDirection(openMenu.key, direction)}\n />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction ColumnResizeHandle({\n onResizeStart,\n}: {\n onResizeStart: (event: PointerEvent<HTMLSpanElement>) => void;\n}) {\n return (\n <span\n aria-hidden=\"true\"\n className={styles.columnResizeHandle}\n onPointerDown={onResizeStart}\n />\n );\n}\n\nfunction HeaderContent({\n filterActive,\n filterable,\n label,\n menuId,\n menuOpen,\n sortDirection,\n sortable,\n onMenuToggle,\n onSort,\n}: {\n filterActive: boolean;\n filterable: boolean;\n label: string;\n menuId: string;\n menuOpen: boolean;\n sortDirection?: \"ascending\" | \"descending\";\n sortable: boolean;\n onMenuToggle: (button: HTMLButtonElement) => void;\n onSort: () => void;\n}) {\n const hasMenu = sortable || filterable;\n\n const sortLabel = sortDirection === \"ascending\"\n ? `${label}, sorted ascending`\n : sortDirection === \"descending\"\n ? `${label}, sorted descending`\n : `Sort by ${label}`;\n\n return (\n <span className={styles.headerCell}>\n {sortable ? (\n <button\n aria-label={sortLabel}\n className={styles.sortButton}\n type=\"button\"\n onClick={onSort}\n >\n <span className={styles.sortButtonLabel} title={label}>\n {label}\n </span>\n </button>\n ) : (\n <span className={styles.headerLabel}>\n <span className={styles.sortButtonLabel} title={label}>\n {label}\n </span>\n </span>\n )}\n {sortable || hasMenu ? (\n <span className={styles.headerControls}>\n {sortable ? (\n <span\n aria-hidden=\"true\"\n className={styles.sortIndicator}\n data-direction={sortDirection ?? \"none\"}\n />\n ) : null}\n {hasMenu ? (\n <button\n aria-controls={`data-grid-menu-${menuId}`}\n aria-expanded={menuOpen}\n aria-haspopup=\"dialog\"\n aria-label={\n filterActive\n ? `${label} filter active. Open column options.`\n : sortable && filterable\n ? `Open ${label} sort and filter options`\n : sortable\n ? `Open ${label} sort options`\n : `Open ${label} filter options`\n }\n className={styles.menuButton}\n data-filter-active={filterActive}\n type=\"button\"\n onClick={(event) => onMenuToggle(event.currentTarget)}\n >\n {filterActive ? (\n <FontAwesomeIcon className={styles.menuFilterIcon} icon={faFilter} />\n ) : (\n <span aria-hidden=\"true\" className={styles.menuChevron} />\n )}\n </button>\n ) : null}\n </span>\n ) : null}\n </span>\n );\n}\n\nconst GridHeaderMenu = forwardRef(function GridHeaderMenu(\n {\n filter,\n filterable,\n label,\n menuId,\n sortDirection,\n sortable,\n onFilterChange,\n onMenuClose,\n onSortDirection,\n }: {\n filter: string;\n filterable: boolean;\n label: string;\n menuId: string;\n sortDirection?: \"ascending\" | \"descending\";\n sortable: boolean;\n onFilterChange: (filter: string) => void;\n onMenuClose: () => void;\n onSortDirection: (direction: SortState[\"direction\"] | null) => void;\n },\n ref: Ref<HTMLSpanElement>,\n) {\n return (\n <span\n ref={ref}\n className={styles.headerMenu}\n id={`data-grid-menu-${menuId}`}\n role=\"dialog\"\n tabIndex={-1}\n aria-label={`${label} column options`}\n >\n {sortable ? (\n <span className={styles.menuSection}>\n <span className={styles.menuLabel}>Sort</span>\n <button\n aria-pressed={sortDirection === \"ascending\"}\n className={styles.menuAction}\n type=\"button\"\n onClick={() => onSortDirection(\"ascending\")}\n >\n Ascending\n </button>\n <button\n aria-pressed={sortDirection === \"descending\"}\n className={styles.menuAction}\n type=\"button\"\n onClick={() => onSortDirection(\"descending\")}\n >\n Descending\n </button>\n <button\n aria-pressed={sortDirection ? false : undefined}\n className={styles.menuAction}\n type=\"button\"\n onClick={() => onSortDirection(null)}\n >\n Clear sort\n </button>\n </span>\n ) : null}\n {filterable ? (\n <span className={styles.menuSection}>\n <span className={styles.menuLabel}>Filter</span>\n <input\n aria-label={`Filter ${label}`}\n className={styles.filterInput}\n placeholder={`Search ${label}`}\n value={filter}\n onChange={(event) => onFilterChange(event.target.value)}\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \"Escape\") {\n event.preventDefault();\n onMenuClose();\n }\n }}\n />\n {filter ? (\n <button className={styles.menuAction} type=\"button\" onClick={() => onFilterChange(\"\")}>\n Clear filter\n </button>\n ) : null}\n </span>\n ) : null}\n </span>\n );\n});\n","export type SankeyNodeKind = \"neutral\" | \"profit\" | \"cost\";\n\nexport type SankeyNodeDef = {\n id: string;\n label: string;\n column: number;\n kind: SankeyNodeKind;\n labelPosition?: \"left\" | \"right\" | \"center\";\n};\n\nexport type SankeyLinkDef = {\n source: string;\n target: string;\n value: number;\n};\n\nexport type SankeyLayoutNode = {\n id: string;\n label: string;\n kind: SankeyNodeKind;\n column: number;\n x: number;\n y: number;\n width: number;\n height: number;\n value: number;\n labelPosition: \"left\" | \"right\" | \"center\";\n};\n\nexport type SankeyLayoutLink = {\n path: string;\n sourceKind: SankeyNodeKind;\n targetKind: SankeyNodeKind;\n value: number;\n};\n\nexport const demoSankeyNodes: SankeyNodeDef[] = [\n { id: \"Hardware\", label: \"Hardware\", column: 0, kind: \"neutral\" },\n { id: \"Software\", label: \"Software\", column: 0, kind: \"neutral\" },\n { id: \"Support\", label: \"Support\", column: 0, kind: \"neutral\" },\n { id: \"Revenue\", label: \"Revenue\", column: 1, kind: \"neutral\", labelPosition: \"center\" },\n { id: \"Margin\", label: \"Margin\", column: 2, kind: \"profit\", labelPosition: \"center\" },\n { id: \"Spend\", label: \"Spend\", column: 2, kind: \"cost\", labelPosition: \"center\" },\n { id: \"Profit\", label: \"Profit\", column: 3, kind: \"profit\" },\n { id: \"Tax\", label: \"Tax\", column: 3, kind: \"cost\" },\n { id: \"Ops\", label: \"Ops\", column: 3, kind: \"cost\" },\n];\n\nexport const demoSankeyLinks: SankeyLinkDef[] = [\n { source: \"Hardware\", target: \"Revenue\", value: 65 },\n { source: \"Software\", target: \"Revenue\", value: 25 },\n { source: \"Support\", target: \"Revenue\", value: 10 },\n { source: \"Revenue\", target: \"Margin\", value: 42 },\n { source: \"Revenue\", target: \"Spend\", value: 58 },\n { source: \"Margin\", target: \"Profit\", value: 30 },\n { source: \"Margin\", target: \"Tax\", value: 12 },\n { source: \"Spend\", target: \"Ops\", value: 58 },\n];\n\nfunction nodeValue(id: string, links: SankeyLinkDef[]) {\n const incoming = links.filter((link) => link.target === id).reduce((sum, link) => sum + link.value, 0);\n const outgoing = links.filter((link) => link.source === id).reduce((sum, link) => sum + link.value, 0);\n return Math.max(incoming, outgoing);\n}\n\nfunction defaultLabelPosition(column: number, maxColumn: number): \"left\" | \"right\" | \"center\" {\n if (column === 0) {\n return \"left\";\n }\n\n if (column === maxColumn) {\n return \"right\";\n }\n\n return column < maxColumn / 2 ? \"left\" : \"right\";\n}\n\nfunction sankeyLinkPath(\n sx: number,\n sy: number,\n sh: number,\n tx: number,\n ty: number,\n th: number,\n) {\n const curvature = 0.5;\n const dx = (tx - sx) * curvature;\n\n return [\n `M ${sx} ${sy}`,\n `C ${sx + dx} ${sy}, ${tx - dx} ${ty}, ${tx} ${ty}`,\n `L ${tx} ${ty + th}`,\n `C ${tx - dx} ${ty + th}, ${sx + dx} ${sy + sh}, ${sx} ${sy + sh}`,\n \"Z\",\n ].join(\" \");\n}\n\nexport function formatSankeyValue(value: number) {\n return `$${Math.round(value)}`;\n}\n\nexport function layoutSankey(\n nodeDefs: SankeyNodeDef[],\n links: SankeyLinkDef[],\n width: number,\n height: number,\n options?: { nodeWidth?: number; nodePadding?: number; padX?: number; padY?: number },\n): { nodes: SankeyLayoutNode[]; layoutLinks: SankeyLayoutLink[] } {\n const nodeWidth = options?.nodeWidth ?? 5;\n const nodePadding = options?.nodePadding ?? 10;\n const padX = options?.padX ?? 52;\n const padY = options?.padY ?? 12;\n\n const maxColumn = Math.max(...nodeDefs.map((node) => node.column));\n const columns = Array.from({ length: maxColumn + 1 }, (_, column) =>\n nodeDefs\n .filter((node) => node.column === column)\n .map((node) => ({\n ...node,\n value: nodeValue(node.id, links),\n }))\n .sort((a, b) => {\n const order = nodeDefs.map((item) => item.id);\n return order.indexOf(a.id) - order.indexOf(b.id);\n }),\n );\n\n const innerWidth = width - padX * 2;\n const innerHeight = height - padY * 2;\n const columnStep = maxColumn > 0 ? innerWidth / maxColumn : innerWidth;\n const globalTotal = Math.max(...columns.map((columnNodes) => columnNodes.reduce((sum, node) => sum + node.value, 0)), 1);\n const valueScale = innerHeight / globalTotal;\n\n const positioned = new Map<string, SankeyLayoutNode>();\n\n columns.forEach((columnNodes, column) => {\n const columnTotal = columnNodes.reduce((sum, node) => sum + node.value, 0);\n const columnHeight = columnTotal * valueScale + nodePadding * Math.max(columnNodes.length - 1, 0);\n let y = padY + (innerHeight - columnHeight) / 2;\n\n columnNodes.forEach((node) => {\n const nodeHeight = node.value * valueScale;\n const x = padX + column * columnStep - nodeWidth / 2;\n\n positioned.set(node.id, {\n id: node.id,\n label: node.label,\n kind: node.kind,\n column,\n x,\n y,\n width: nodeWidth,\n height: Math.max(2, nodeHeight),\n value: node.value,\n labelPosition: node.labelPosition ?? defaultLabelPosition(column, maxColumn),\n });\n\n y += nodeHeight + nodePadding;\n });\n });\n\n const sourceOffsets = new Map<string, number>();\n const targetOffsets = new Map<string, number>();\n\n const sortedLinks = [...links].sort((a, b) => {\n const sourceA = positioned.get(a.source);\n const sourceB = positioned.get(b.source);\n const targetA = positioned.get(a.target);\n const targetB = positioned.get(b.target);\n return (targetA?.y ?? 0) - (targetB?.y ?? 0) || (sourceA?.y ?? 0) - (sourceB?.y ?? 0);\n });\n\n const layoutLinks: SankeyLayoutLink[] = sortedLinks.map((link) => {\n const source = positioned.get(link.source)!;\n const target = positioned.get(link.target)!;\n const sourceTotal = links.filter((item) => item.source === link.source).reduce((sum, item) => sum + item.value, 0) || 1;\n const targetTotal = links.filter((item) => item.target === link.target).reduce((sum, item) => sum + item.value, 0) || 1;\n\n const sh = (link.value / sourceTotal) * source.height;\n const th = (link.value / targetTotal) * target.height;\n const sy = source.y + (sourceOffsets.get(link.source) ?? 0);\n const ty = target.y + (targetOffsets.get(link.target) ?? 0);\n\n sourceOffsets.set(link.source, (sourceOffsets.get(link.source) ?? 0) + sh);\n targetOffsets.set(link.target, (targetOffsets.get(link.target) ?? 0) + th);\n\n return {\n path: sankeyLinkPath(source.x + source.width, sy, sh, target.x, ty, th),\n sourceKind: source.kind,\n targetKind: target.kind,\n value: link.value,\n };\n });\n\n return { nodes: [...positioned.values()], layoutLinks };\n}\n","import type { ChartDatum, ChartSeries } from \"@/components/Chart\";\nimport { demoSankeyLinks } from \"@/components/Chart/sankeyLayout\";\nimport type { ChartVariant } from \"@/components/fields\";\nimport type { ChartControlSlug } from \"./chartCatalog\";\n\nconst monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nconst monthValues = [180, 380, 300, 220, 190, 210, 260, 320, 280, 360, 240, 200];\n\nexport const chartDemoData: ChartDatum[] = [\n { label: \"Jan\", value: 42, values: [42, 28, 18], x: 12, y: 44 },\n { label: \"Feb\", value: 64, values: [64, 34, 22], x: 28, y: 68 },\n { label: \"Mar\", value: 52, values: [52, 46, 28], x: 44, y: 51 },\n { label: \"Apr\", value: 76, values: [76, 48, 32], x: 60, y: 79 },\n { label: \"May\", value: 58, values: [58, 56, 36], x: 74, y: 58 },\n { label: \"Jun\", value: 88, values: [88, 62, 42], x: 88, y: 92 },\n];\n\nexport const chartFinancialData: ChartDatum[] = [\n { label: \"Start\", value: 120 },\n { label: \"Product\", value: 48 },\n { label: \"Services\", value: 32 },\n { label: \"Costs\", value: -28 },\n { label: \"Tax\", value: -12 },\n { label: \"End\", value: 160 },\n];\n\nexport const chartCandlestickData: ChartDatum[] = [\n { label: \"Mon\", value: 102, open: 98, high: 108, low: 94, close: 102 },\n { label: \"Tue\", value: 106, open: 102, high: 112, low: 100, close: 106 },\n { label: \"Wed\", value: 101, open: 106, high: 108, low: 96, close: 101 },\n { label: \"Thu\", value: 110, open: 101, high: 114, low: 99, close: 110 },\n { label: \"Fri\", value: 108, open: 110, high: 113, low: 104, close: 108 },\n];\n\nexport const chartBoxPlotData: ChartDatum[] = [\n { label: \"API\", value: 84, min: 42, q1: 68, median: 84, q3: 96, max: 118 },\n { label: \"Web\", value: 72, min: 38, q1: 58, median: 72, q3: 86, max: 104 },\n { label: \"Jobs\", value: 64, min: 30, q1: 52, median: 64, q3: 78, max: 92 },\n];\n\nexport const chartGanttData: ChartDatum[] = [\n { label: \"Research\", value: 24, start: 4, end: 28 },\n { label: \"Design\", value: 20, start: 18, end: 38 },\n { label: \"Build\", value: 34, start: 32, end: 66 },\n { label: \"Launch\", value: 12, start: 64, end: 76 },\n];\n\nfunction branchLeaves(prefix: string, parent: string, group: string, count = 5): ChartDatum[] {\n return Array.from({ length: count }, (_, index) => ({\n label: `${prefix}${index + 1}`,\n value: 6 + (index % 3),\n parent,\n group,\n }));\n}\n\nexport const chartForceDirectedData: ChartDatum[] = [\n { label: \"3\", value: 28, group: \"0\" },\n { label: \"2\", value: 18, group: \"1\" },\n { label: \"1\", value: 28, group: \"2\" },\n { label: \"F\", value: 14, parent: \"3\", group: \"0\" },\n { label: \"G\", value: 14, parent: \"3\", group: \"0\" },\n { label: \"H\", value: 14, parent: \"3\", group: \"0\" },\n ...branchLeaves(\"F\", \"F\", \"F\"),\n ...branchLeaves(\"G\", \"G\", \"G\"),\n ...branchLeaves(\"H\", \"H\", \"H\"),\n { label: \"A\", value: 14, parent: \"1\", group: \"2\" },\n { label: \"B\", value: 14, parent: \"1\", group: \"2\" },\n { label: \"C\", value: 14, parent: \"1\", group: \"2\" },\n ...branchLeaves(\"A\", \"A\", \"A\"),\n ...branchLeaves(\"B\", \"B\", \"B\"),\n ...branchLeaves(\"C\", \"C\", \"C\"),\n { label: \"D\", value: 10, parent: \"2\", group: \"1\" },\n { label: \"E\", value: 10, parent: \"2\", group: \"1\" },\n];\n\nexport const chartNetworkGraphData: ChartDatum[] = [\n { label: \"Core\", value: 32, group: \"core\" },\n { label: \"B1\", value: 16, parent: \"Core\", group: \"branch-0\" },\n { label: \"B2\", value: 16, parent: \"Core\", group: \"branch-1\" },\n { label: \"B3\", value: 16, parent: \"Core\", group: \"branch-2\" },\n { label: \"B4\", value: 16, parent: \"Core\", group: \"branch-3\" },\n { label: \"B5\", value: 16, parent: \"Core\", group: \"branch-4\" },\n { label: \"B6\", value: 16, parent: \"Core\", group: \"branch-5\" },\n { label: \"B7\", value: 16, parent: \"Core\", group: \"branch-6\" },\n];\n\nexport const chartSankeyData: ChartDatum[] = demoSankeyLinks.map((link) => ({\n label: `${link.source}→${link.target}`,\n value: link.value,\n group: link.source,\n parent: link.target,\n}));\n\nexport const chartTreemapData: ChartDatum[] = [\n { label: \"A-1\", group: \"Category A\", value: 12 },\n { label: \"A-2\", group: \"Category A\", value: 10 },\n { label: \"A-3\", group: \"Category A\", value: 9 },\n { label: \"A-4\", group: \"Category A\", value: 8 },\n { label: \"A-5\", group: \"Category A\", value: 7 },\n { label: \"A-6\", group: \"Category A\", value: 6 },\n { label: \"A-7\", group: \"Category A\", value: 5 },\n { label: \"A-8\", group: \"Category A\", value: 4 },\n { label: \"B-1\", group: \"Category B\", value: 14 },\n { label: \"B-2\", group: \"Category B\", value: 11 },\n { label: \"B-3\", group: \"Category B\", value: 9 },\n { label: \"B-4\", group: \"Category B\", value: 8 },\n { label: \"B-5\", group: \"Category B\", value: 7 },\n { label: \"B-6\", group: \"Category B\", value: 6 },\n { label: \"C-1\", group: \"Category C\", value: 13 },\n { label: \"C-2\", group: \"Category C\", value: 11 },\n { label: \"C-3\", group: \"Category C\", value: 10 },\n { label: \"C-4\", group: \"Category C\", value: 8 },\n { label: \"C-5\", group: \"Category C\", value: 7 },\n { label: \"C-6\", group: \"Category C\", value: 6 },\n { label: \"D-1\", group: \"Category D\", value: 16 },\n { label: \"D-2\", group: \"Category D\", value: 12 },\n { label: \"D-3\", group: \"Category D\", value: 9 },\n { label: \"D-4\", group: \"Category D\", value: 7 },\n];\n\nexport const chartCirclePackData: ChartDatum[] = [\n { label: \"Fruity\", value: 0 },\n { label: \"Sweet\", value: 0 },\n { label: \"Sour/Fermented\", value: 0 },\n { label: \"Roasted\", value: 0 },\n { label: \"Spices\", value: 0 },\n { label: \"Berry\", value: 0, parent: \"Fruity\" },\n { label: \"Citrus Fruit\", value: 0, parent: \"Fruity\" },\n { label: \"Blackberry\", value: 10, parent: \"Berry\" },\n { label: \"Blueberry\", value: 8, parent: \"Berry\" },\n { label: \"Grapefruit\", value: 9, parent: \"Citrus Fruit\" },\n { label: \"Orange\", value: 11, parent: \"Citrus Fruit\" },\n { label: \"Chocolate\", value: 14, parent: \"Sweet\" },\n { label: \"Caramel\", value: 10, parent: \"Sweet\" },\n { label: \"Honey\", value: 8, parent: \"Sweet\" },\n { label: \"Winey\", value: 0, parent: \"Sour/Fermented\" },\n { label: \"Sour note\", value: 12, parent: \"Sour/Fermented\" },\n { label: \"Fermented\", value: 9, parent: \"Winey\" },\n { label: \"Whiskey\", value: 7, parent: \"Winey\" },\n { label: \"Nutty\", value: 0, parent: \"Roasted\" },\n { label: \"Cocoa\", value: 11, parent: \"Roasted\" },\n { label: \"Almond\", value: 8, parent: \"Nutty\" },\n { label: \"Hazelnut\", value: 9, parent: \"Nutty\" },\n { label: \"Pepper\", value: 10, parent: \"Spices\" },\n { label: \"Cinnamon\", value: 8, parent: \"Spices\" },\n { label: \"Anise\", value: 6, parent: \"Spices\" },\n];\n\nexport const chartChoroplethData: ChartDatum[] = [\n { label: \"North America\", region: \"north-america\", value: 82 },\n { label: \"South America\", region: \"south-america\", value: 44 },\n { label: \"Europe\", region: \"europe\", value: 68 },\n { label: \"Africa\", region: \"africa\", value: 53 },\n { label: \"Asia\", region: \"asia\", value: 91 },\n { label: \"Oceania\", region: \"oceania\", value: 37 },\n];\n\nexport const chartGeoMapData: ChartDatum[] = [\n { label: \"San Francisco\", lat: 37.77, lng: -122.42, value: 48 },\n { label: \"London\", lat: 51.51, lng: -0.13, value: 62 },\n { label: \"Singapore\", lat: 1.35, lng: 103.82, value: 55 },\n { label: \"Sydney\", lat: -33.87, lng: 151.21, value: 41 },\n { label: \"São Paulo\", lat: -23.55, lng: -46.63, value: 36 },\n];\n\nexport const chartBubbleMapData: ChartDatum[] = [\n { label: \"San Francisco\", lat: 37.77, lng: -122.42, value: 72 },\n { label: \"London\", lat: 51.51, lng: -0.13, value: 58 },\n { label: \"Singapore\", lat: 1.35, lng: 103.82, value: 84 },\n { label: \"Sydney\", lat: -33.87, lng: 151.21, value: 46 },\n { label: \"São Paulo\", lat: -23.55, lng: -46.63, value: 63 },\n { label: \"Tokyo\", lat: 35.68, lng: 139.65, value: 91 },\n];\n\nexport const chartCalendarHeatmapData: ChartDatum[] = Array.from({ length: 84 }, (_, index) => {\n const month = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"][index % 12];\n const week = Math.floor(index / 12) + 1;\n const base = 12 + (index % 7) * 6 + (index % 5) * 4;\n\n return {\n label: `${month} W${week}`,\n value: base + (index % 11) * 5,\n };\n});\n\nexport const chartVerticalBar36MonthData: ChartDatum[] = Array.from({ length: 36 }, (_, index) => {\n const month = monthNames[index % 12];\n const year = 24 + Math.floor(index / 12);\n const base = monthValues[index % 12];\n const drift = Math.floor(index / 12) * 18 + (index % 3) * 8;\n\n return {\n label: `${month} ${year}`,\n value: base + drift,\n };\n});\n\nexport const chartDemoSeries: ChartSeries[] = [\n { id: \"design\", label: \"Design\", values: [42, 64, 52, 76, 58, 88] },\n { id: \"web\", label: \"Web\", values: [28, 34, 46, 48, 56, 62] },\n { id: \"mobile\", label: \"Mobile\", values: [18, 22, 28, 32, 36, 42] },\n];\n\ntype ChartUsageDataMode = \"category\" | \"geo\" | \"hierarchy\" | \"labels\" | \"points\" | \"region\" | \"stacked\";\n\nexport function chartUsesSeries(variant: ChartVariant) {\n return (\n variant === \"grouped-bar\" ||\n variant === \"stacked-bar\" ||\n variant === \"stacked-bar-100\" ||\n variant === \"line\" ||\n variant === \"multi-line\" ||\n variant === \"area\" ||\n variant === \"stacked-area\" ||\n variant === \"spline\" ||\n variant === \"stream\" ||\n variant === \"ridgeline\" ||\n variant === \"density\"\n );\n}\n\nexport function getChartPreviewData(slug: ChartControlSlug): ChartDatum[] {\n if (slug === \"bar-chart-vertical\") {\n return chartVerticalBar36MonthData;\n }\n\n if (slug === \"waterfall-chart\") {\n return chartFinancialData;\n }\n\n if (slug === \"candlestick-chart\") {\n return chartCandlestickData;\n }\n\n if (slug === \"box-plot\") {\n return chartBoxPlotData;\n }\n\n if (slug === \"gantt-chart\") {\n return chartGanttData;\n }\n\n if (slug === \"treemap\") {\n return chartTreemapData;\n }\n\n if (slug === \"circle-packing\") {\n return chartCirclePackData;\n }\n\n if (slug === \"choropleth-map\") {\n return chartChoroplethData;\n }\n\n if (slug === \"geo-map\") {\n return chartGeoMapData;\n }\n\n if (slug === \"bubble-map\") {\n return chartBubbleMapData;\n }\n\n if (slug === \"calendar-heatmap\") {\n return chartCalendarHeatmapData;\n }\n\n if (slug === \"force-directed-graph\") {\n return chartForceDirectedData;\n }\n\n if (slug === \"network-graph\") {\n return chartNetworkGraphData;\n }\n\n if (slug === \"sankey-diagram\") {\n return chartSankeyData;\n }\n\n return chartDemoData;\n}\n\nexport function getChartUsageDataMode(variant: ChartVariant): ChartUsageDataMode {\n if (variant === \"grouped-bar\" || variant === \"stacked-bar\" || variant === \"stacked-bar-100\") {\n return \"stacked\";\n }\n\n if (variant === \"scatter\" || variant === \"bubble\") {\n return \"points\";\n }\n\n if (variant === \"choropleth\") {\n return \"region\";\n }\n\n if (variant === \"geo-map\" || variant === \"bubble-map\") {\n return \"geo\";\n }\n\n if (variant === \"treemap\" || variant === \"circle-packing\") {\n return \"hierarchy\";\n }\n\n if (variant === \"line\" || variant === \"multi-line\" || variant === \"area\" || variant === \"stacked-area\" || variant === \"spline\" || variant === \"stream\" || variant === \"ridgeline\" || variant === \"density\") {\n return \"labels\";\n }\n\n return \"category\";\n}\n\nexport function formatChartDataForUsage(data = chartDemoData, mode: ChartUsageDataMode = \"category\") {\n return `[\n${data\n .map((item) => {\n if (mode === \"stacked\") {\n const values = item.values ? `, values: [${item.values.join(\", \")}]` : \"\";\n return ` { label: ${JSON.stringify(item.label)}, value: ${item.value}${values} }`;\n }\n\n if (mode === \"points\") {\n const x = typeof item.x === \"number\" ? item.x : item.value;\n const y = typeof item.y === \"number\" ? item.y : item.value;\n return ` { label: ${JSON.stringify(item.label)}, value: ${item.value}, x: ${x}, y: ${y} }`;\n }\n\n if (mode === \"region\") {\n const region = item.region ? `, region: ${JSON.stringify(item.region)}` : \"\";\n return ` { label: ${JSON.stringify(item.label)}, value: ${item.value}${region} }`;\n }\n\n if (mode === \"geo\") {\n if (item.lat == null || item.lng == null) {\n return ` { label: ${JSON.stringify(item.label)}, value: ${item.value} }`;\n }\n return ` { label: ${JSON.stringify(item.label)}, value: ${item.value}, lat: ${item.lat}, lng: ${item.lng} }`;\n }\n\n if (mode === \"hierarchy\") {\n const group = item.group ? `, group: ${JSON.stringify(item.group)}` : \"\";\n const parent = item.parent ? `, parent: ${JSON.stringify(item.parent)}` : \"\";\n return ` { label: ${JSON.stringify(item.label)}, value: ${item.value}${group}${parent} }`;\n }\n\n return ` { label: ${JSON.stringify(item.label)}, value: ${item.value} }`;\n })\n .join(\",\\n\")}\n]`;\n}\n\nexport function formatChartSeriesForUsage(series = chartDemoSeries) {\n return `[\n${series\n .map(\n (item) =>\n ` { id: ${JSON.stringify(item.id)}, label: ${JSON.stringify(item.label)}, values: [${item.values.join(\", \")}] }`,\n )\n .join(\",\\n\")}\n]`;\n}\n","// Generated from Natural Earth 110m via world-atlas@2\nexport const worldMapViewBox = { width: 1000, height: 500 } as const;\n\nexport type WorldMapRegion = {\n id: string;\n label: string;\n paths: string[];\n};\n\nexport const worldLandPaths: string[] = [\"M 334.52 472.33 L 333.70 473.75 L 332.89 475.00 L 327.07 474.62 L 320.86 474.78 L 317.38 473.86 L 317.38 473.75 L 315.86 472.93 L 322.11 473.04 L 328.10 473.31 L 330.17 472.17 L 331.64 471.19 L 334.52 472.33 Z\",\"M 57.75 470.83 L 52.42 471.21 L 48.78 470.23 L 47.15 469.25 L 47.04 469.08 L 45.24 468.32 L 46.93 467.29 L 52.10 467.72 L 54.87 468.59 L 56.99 469.57 L 57.75 470.83 Z\",\"M 374.57 466.80 L 377.99 468.00 L 379.19 469.68 L 379.52 470.88 L 379.63 472.29 L 375.33 473.17 L 370.81 473.87 L 365.59 474.53 L 359.77 475.07 L 353.19 474.91 L 349.54 473.98 L 350.03 472.84 L 355.96 472.08 L 358.35 471.15 L 360.09 469.96 L 361.35 468.92 L 363.03 467.94 L 364.83 466.80 L 366.24 466.80 L 370.38 466.20 L 374.57 466.80 Z\",\"M 163.30 454.17 L 166.89 454.61 L 170.21 454.12 L 168.63 455.09 L 166.02 455.80 L 162.16 455.58 L 159.38 454.61 L 159.98 453.68 L 163.30 454.17 Z\",\"M 151.22 454.12 L 155.47 455.20 L 153.83 455.09 L 150.24 454.82 L 146.43 454.06 L 148.45 453.46 L 151.22 454.12 Z\",\"M 225.05 449.81 L 228.10 450.20 L 231.14 449.87 L 232.77 451.45 L 230.60 451.23 L 227.23 451.34 L 223.80 451.23 L 220.04 451.39 L 217.21 450.85 L 215.75 449.71 L 217.49 449.22 L 221.02 449.60 L 225.05 449.81 Z\",\"M 309.85 447.10 L 310.18 448.35 L 309.69 449.44 L 308.93 450.47 L 305.67 450.85 L 302.56 451.40 L 298.92 451.35 L 300.28 450.26 L 297.01 450.64 L 293.91 451.02 L 291.79 450.20 L 291.63 449.06 L 294.68 447.97 L 296.58 447.64 L 299.79 447.75 L 300.61 446.34 L 300.77 445.31 L 300.71 443.07 L 302.29 441.77 L 304.85 441.33 L 306.32 442.36 L 306.97 443.40 L 308.17 444.65 L 309.09 445.85 L 309.85 447.10 Z\",\"M 0.00 485.32 L 0.16 485.34 L 2.61 483.72 L 7.62 484.59 L 7.94 484.49 L 8.72 484.26 L 9.66 483.98 L 10.47 483.73 L 10.88 483.61 L 11.29 483.61 L 11.58 483.66 L 15.60 484.82 L 19.12 483.66 L 19.75 483.50 L 27.91 483.01 L 30.56 483.66 L 31.86 483.99 L 36.05 484.92 L 43.94 485.63 L 50.19 486.50 L 60.91 487.15 L 68.91 486.39 L 80.72 486.93 L 87.41 487.80 L 94.75 486.98 L 102.48 486.22 L 103.08 484.92 L 92.14 484.81 L 83.16 484.15 L 80.82 483.07 L 73.37 482.47 L 73.86 481.22 L 74.89 480.07 L 75.93 479.04 L 75.38 477.90 L 70.76 477.14 L 68.64 476.15 L 64.34 475.28 L 71.09 475.45 L 77.51 475.01 L 81.53 475.94 L 86.48 475.12 L 91.05 474.09 L 93.28 473.16 L 92.30 472.02 L 88.71 471.26 L 84.63 470.44 L 78.92 470.28 L 73.92 469.89 L 68.53 469.62 L 66.73 468.59 L 63.14 467.72 L 60.97 466.74 L 60.10 463.58 L 61.46 463.85 L 63.96 464.72 L 68.53 464.45 L 72.94 464.07 L 75.22 465.27 L 79.63 465.00 L 83.33 464.40 L 86.81 463.64 L 89.96 462.71 L 94.15 462.44 L 94.04 461.40 L 93.07 460.37 L 93.88 459.39 L 97.47 458.90 L 99.10 459.82 L 103.35 459.28 L 106.56 458.57 L 110.53 458.52 L 114.28 458.25 L 118.04 457.60 L 121.03 456.99 L 124.40 456.40 L 126.58 456.56 L 128.48 456.78 L 132.62 456.40 L 136.32 456.89 L 140.13 456.83 L 143.77 456.45 L 147.52 456.72 L 151.66 456.99 L 155.52 456.89 L 159.55 456.94 L 163.68 456.99 L 167.49 456.89 L 170.32 456.07 L 173.69 455.63 L 177.18 456.23 L 180.49 455.74 L 183.49 454.77 L 185.28 455.63 L 186.26 456.61 L 188.06 457.54 L 190.94 456.72 L 194.26 457.76 L 198.01 458.08 L 201.22 458.85 L 205.14 458.68 L 208.68 458.19 L 212.86 458.30 L 216.62 458.68 L 220.43 459.17 L 221.90 457.98 L 220.10 457.05 L 218.74 456.07 L 215.15 455.85 L 213.57 454.82 L 212.97 453.78 L 211.99 451.71 L 214.12 452.09 L 217.76 452.26 L 221.35 452.09 L 224.62 452.53 L 227.45 453.35 L 228.64 454.33 L 232.40 454.49 L 235.99 454.11 L 239.80 453.57 L 243.22 453.24 L 246.05 453.89 L 249.75 453.67 L 252.14 451.55 L 254.38 452.80 L 257.59 453.29 L 261.07 453.02 L 263.35 454.11 L 267.00 454.22 L 270.37 454.54 L 273.69 455.15 L 275.87 454.11 L 276.95 453.13 L 279.73 454.22 L 283.54 453.95 L 286.37 454.54 L 288.27 455.47 L 291.97 455.20 L 294.85 454.60 L 297.68 453.89 L 301.05 453.51 L 304.97 453.19 L 308.51 452.80 L 311.23 452.21 L 312.86 451.33 L 313.51 450.14 L 313.19 448.99 L 312.32 447.91 L 311.34 446.81 L 310.47 445.73 L 309.76 444.75 L 309.60 443.66 L 309.87 442.57 L 311.17 441.53 L 312.26 440.39 L 312.70 439.31 L 312.15 438.11 L 311.83 437.02 L 313.19 435.77 L 314.71 434.95 L 316.51 433.92 L 318.41 433.04 L 320.64 432.23 L 321.73 431.03 L 323.25 430.27 L 324.99 429.56 L 327.66 429.40 L 329.40 428.53 L 331.36 427.99 L 333.64 427.66 L 335.66 426.95 L 337.23 426.08 L 339.41 425.75 L 341.04 426.46 L 340.01 427.38 L 337.18 428.20 L 335.98 428.80 L 333.92 428.37 L 331.63 428.64 L 329.73 429.29 L 327.71 430.00 L 326.35 430.82 L 325.97 431.90 L 326.14 432.94 L 327.44 433.86 L 325.54 434.52 L 322.93 434.73 L 321.40 435.66 L 319.77 436.53 L 318.03 437.73 L 317.59 438.76 L 318.57 439.90 L 320.04 440.77 L 322.33 441.43 L 324.45 442.30 L 325.59 443.39 L 326.19 444.42 L 327.01 445.51 L 328.31 446.43 L 329.13 447.47 L 329.51 450.03 L 330.32 451.06 L 330.54 452.15 L 331.41 453.24 L 331.03 454.71 L 329.51 455.85 L 327.88 456.78 L 324.18 457.16 L 322.93 458.14 L 321.24 459.06 L 317.05 460.10 L 313.35 460.53 L 309.87 461.13 L 306.11 461.73 L 303.88 462.88 L 299.42 462.98 L 294.53 462.88 L 290.12 463.09 L 285.44 463.09 L 286.31 464.18 L 290.55 464.67 L 293.66 465.43 L 295.40 466.41 L 292.30 467.28 L 287.51 467.01 L 283.54 467.72 L 283.37 468.86 L 283.26 469.95 L 286.53 470.87 L 287.13 471.91 L 290.66 472.94 L 296.54 473.38 L 301.54 474.14 L 305.52 475.01 L 310.58 475.88 L 317.48 476.32 L 324.29 477.08 L 329.02 477.90 L 334.19 478.82 L 336.91 480.13 L 338.27 481.16 L 341.64 480.18 L 346.21 479.37 L 351.05 478.49 L 356.82 477.79 L 361.77 477.03 L 368.68 476.97 L 375.48 477.35 L 381.08 478.00 L 382.88 476.81 L 386.74 475.99 L 393.76 475.94 L 399.26 475.34 L 404.48 474.74 L 410.25 474.36 L 416.39 473.87 L 420.69 473.16 L 418.73 472.18 L 417.54 471.20 L 417.54 470.17 L 412.15 470.28 L 406.44 470.71 L 401.00 470.71 L 400.23 469.68 L 400.62 467.61 L 401.87 467.01 L 405.84 466.36 L 410.52 465.71 L 413.89 464.89 L 417.26 464.07 L 419.77 462.98 L 423.57 462.49 L 427.33 462.11 L 429.23 461.89 L 433.53 461.78 L 437.61 461.40 L 441.04 460.86 L 444.41 460.20 L 447.46 459.55 L 451.32 458.68 L 453.77 457.76 L 456.38 456.94 L 457.20 455.85 L 454.26 455.20 L 455.24 454.06 L 457.09 453.19 L 459.97 452.64 L 463.02 451.99 L 465.85 451.12 L 468.02 450.03 L 469.38 448.72 L 471.40 447.96 L 474.71 448.12 L 476.07 449.05 L 479.39 449.16 L 479.50 448.12 L 480.92 447.04 L 483.91 447.31 L 484.62 448.34 L 487.93 448.50 L 491.53 448.01 L 495.01 447.69 L 498.16 447.85 L 499.36 448.99 L 502.42 448.07 L 505.25 447.58 L 508.40 447.20 L 511.50 446.81 L 514.33 446.16 L 517.43 445.73 L 519.83 445.13 L 521.51 444.15 L 523.58 444.86 L 526.46 444.48 L 528.48 445.78 L 530.05 446.76 L 533.21 446.22 L 534.46 445.13 L 537.29 444.37 L 540.94 444.53 L 542.02 445.56 L 544.31 444.53 L 547.30 444.21 L 550.56 444.10 L 553.50 444.15 L 556.60 444.48 L 559.60 444.64 L 560.90 445.56 L 562.70 446.38 L 565.74 445.89 L 569.01 445.78 L 572.16 445.78 L 575.26 445.73 L 578.04 445.35 L 580.98 445.02 L 583.43 444.26 L 586.04 443.77 L 588.87 443.50 L 590.99 442.73 L 592.51 441.21 L 594.09 440.28 L 596.97 440.72 L 598.06 441.70 L 600.45 442.35 L 603.34 442.14 L 605.30 443.11 L 607.36 443.82 L 610.19 443.17 L 611.17 441.97 L 613.67 441.48 L 616.56 440.56 L 619.28 440.18 L 622.54 439.63 L 624.72 439.03 L 627.00 438.38 L 629.18 437.78 L 631.79 438.11 L 634.29 437.13 L 636.09 436.37 L 638.70 436.42 L 640.99 435.77 L 641.53 434.79 L 643.87 434.03 L 646.15 433.48 L 648.93 433.04 L 651.49 432.83 L 653.93 432.99 L 656.55 433.26 L 658.78 434.03 L 659.05 435.22 L 661.50 436.15 L 663.18 436.91 L 666.50 437.24 L 668.35 438.00 L 670.64 438.76 L 673.30 438.93 L 675.53 438.38 L 677.93 437.24 L 680.54 437.83 L 683.26 438.16 L 685.87 438.49 L 688.59 438.70 L 691.36 438.70 L 693.65 441.59 L 693.54 442.30 L 693.21 443.55 L 690.55 444.26 L 688.37 445.29 L 688.75 446.38 L 691.85 446.33 L 691.47 447.42 L 690.06 448.45 L 688.75 449.59 L 690.87 450.46 L 694.08 450.74 L 697.29 450.25 L 698.82 449.16 L 699.74 448.12 L 701.27 447.25 L 703.01 446.43 L 703.71 445.46 L 705.18 444.10 L 706.92 443.82 L 710.08 443.71 L 712.85 443.39 L 715.68 442.95 L 717.04 441.86 L 717.86 440.83 L 719.76 439.80 L 722.48 439.09 L 724.82 438.54 L 726.35 437.62 L 727.92 437.13 L 729.94 436.69 L 732.71 436.97 L 735.21 436.69 L 737.93 436.37 L 740.98 436.53 L 742.99 435.77 L 744.41 433.92 L 745.44 434.68 L 746.75 435.99 L 749.09 436.53 L 751.75 436.75 L 754.42 436.42 L 757.25 436.64 L 759.86 436.69 L 761.60 436.42 L 763.94 436.58 L 766.06 437.18 L 768.56 436.80 L 771.56 436.80 L 774.11 436.42 L 777.00 436.80 L 778.85 435.87 L 780.26 434.95 L 782.17 434.19 L 785.65 432.12 L 787.44 432.50 L 789.56 433.26 L 791.41 434.24 L 794.95 435.93 L 797.67 435.99 L 800.23 435.99 L 803.22 435.66 L 806.21 435.28 L 808.50 434.52 L 810.40 433.70 L 813.50 433.59 L 815.57 432.99 L 817.75 433.54 L 819.16 434.41 L 821.12 435.28 L 824.17 435.17 L 826.07 435.87 L 829.39 436.58 L 832.87 436.86 L 835.75 436.64 L 837.93 435.77 L 839.78 434.90 L 842.28 434.68 L 844.79 435.06 L 847.67 435.33 L 850.28 434.90 L 852.78 434.90 L 855.23 435.17 L 857.79 435.44 L 860.29 434.95 L 863.28 434.52 L 866.11 434.41 L 869.27 434.41 L 871.82 434.13 L 874.33 433.92 L 875.09 432.55 L 875.20 431.41 L 876.94 432.17 L 877.43 433.42 L 878.35 434.57 L 879.50 435.49 L 881.84 435.99 L 884.99 435.82 L 888.64 435.77 L 891.14 435.60 L 894.78 435.60 L 897.40 435.55 L 901.04 435.66 L 904.14 435.87 L 906.10 436.75 L 905.56 437.78 L 907.35 438.60 L 910.34 439.25 L 913.44 439.96 L 917.04 440.45 L 920.79 440.88 L 923.62 441.32 L 926.77 441.38 L 928.57 440.45 L 931.02 441.21 L 933.14 442.08 L 935.59 442.73 L 938.96 443.01 L 942.17 443.33 L 943.53 444.42 L 946.69 445.08 L 948.81 446.05 L 951.91 446.49 L 955.12 446.43 L 958.11 446.60 L 961.43 446.54 L 964.75 446.76 L 967.85 447.14 L 970.73 447.80 L 973.62 448.34 L 975.57 449.16 L 975.25 450.25 L 973.78 451.22 L 972.53 452.48 L 971.55 453.46 L 970.24 454.60 L 966.60 455.04 L 964.97 456.02 L 961.37 456.61 L 960.12 457.70 L 958.22 458.74 L 956.21 459.61 L 955.06 460.75 L 954.36 461.78 L 954.08 463.04 L 954.14 464.07 L 955.72 465.16 L 956.32 466.19 L 957.62 467.17 L 962.79 467.55 L 963.88 468.75 L 958.87 469.19 L 954.63 469.79 L 949.35 469.89 L 947.01 471.47 L 946.52 472.78 L 945.33 473.82 L 943.86 474.85 L 947.56 475.77 L 948.97 476.92 L 951.36 477.95 L 954.74 478.87 L 958.60 479.75 L 962.79 480.62 L 969.15 481.49 L 970.57 482.85 L 978.57 483.45 L 979.10 483.66 L 981.18 484.48 L 988.85 483.77 L 995.21 484.65 L 0.00 485.32 Z\",\"M 311.80 399.58 L 315.41 401.25 L 319.30 401.94 L 318.05 403.33 L 315.41 403.47 L 314.00 402.49 L 313.08 403.62 L 310.70 404.48 L 307.69 404.16 L 305.67 403.33 L 302.76 402.93 L 299.26 401.37 L 296.43 399.88 L 292.60 396.77 L 294.89 397.35 L 298.79 399.21 L 302.48 400.21 L 303.91 398.93 L 304.81 397.03 L 307.37 395.88 L 309.35 396.21 L 310.41 397.50 L 311.80 399.58 Z\",\"M 337.36 391.94 L 339.58 393.19 L 338.75 394.17 L 335.00 395.00 L 333.75 394.03 L 331.39 395.28 L 330.00 394.03 L 333.33 392.36 L 335.69 393.06 L 337.36 391.94 Z\",\"M 695.23 388.08 L 690.96 388.26 L 690.89 386.79 L 691.30 385.64 L 691.49 385.07 L 693.28 385.94 L 695.91 386.29 L 696.00 386.82 L 695.23 388.08 Z\",\"M 903.88 363.31 L 906.57 364.27 L 908.08 363.89 L 910.25 363.36 L 911.91 363.54 L 912.11 366.84 L 911.16 367.80 L 910.87 370.03 L 909.90 369.27 L 907.97 371.21 L 907.40 371.06 L 905.69 370.97 L 903.98 368.60 L 903.60 366.76 L 902.00 364.34 L 902.07 363.07 L 903.88 363.31 Z\",\"M 980.61 363.66 L 981.24 364.81 L 983.22 363.69 L 984.02 364.86 L 984.02 366.03 L 982.99 367.32 L 981.17 369.36 L 979.75 370.48 L 980.78 371.82 L 978.64 371.85 L 976.26 372.90 L 975.51 374.72 L 973.94 377.52 L 971.75 378.76 L 970.37 379.56 L 967.81 379.50 L 966.01 378.59 L 962.99 378.39 L 962.53 377.37 L 964.02 375.31 L 967.51 372.57 L 969.30 372.05 L 971.30 370.99 L 973.68 369.53 L 975.35 368.09 L 976.58 366.02 L 977.64 365.32 L 978.05 363.77 L 980.00 362.48 L 980.61 363.66 Z\",\"M 985.03 350.43 L 987.05 353.36 L 987.10 351.46 L 988.36 352.22 L 988.77 354.32 L 991.01 355.22 L 992.89 355.45 L 994.47 354.39 L 995.88 354.71 L 995.21 357.17 L 994.36 358.80 L 992.24 358.74 L 991.50 359.58 L 991.76 360.78 L 991.35 361.29 L 990.30 362.79 L 988.92 364.69 L 986.78 365.80 L 986.30 365.07 L 985.14 364.67 L 986.74 362.39 L 985.83 360.86 L 982.84 359.75 L 982.92 358.74 L 984.93 357.77 L 985.40 355.63 L 985.27 353.84 L 984.14 351.98 L 984.22 351.49 L 982.89 350.34 L 980.71 347.88 L 979.54 345.91 L 980.58 345.70 L 982.09 347.24 L 984.25 347.96 L 985.03 350.43 Z\",\"M 964.22 311.56 L 963.17 312.22 L 961.64 311.47 L 959.65 310.22 L 957.86 308.75 L 956.02 306.79 L 955.64 305.85 L 956.83 305.89 L 958.39 306.84 L 959.61 307.78 L 960.50 308.56 L 962.78 310.28 L 964.22 311.56 Z\",\"M 995.48 298.17 L 996.44 298.97 L 995.98 300.42 L 994.26 300.80 L 992.73 300.46 L 992.46 299.23 L 993.53 298.28 L 994.79 298.63 L 995.48 298.17 Z\",\"M 0.00 295.99 L 998.23 296.67 L 996.46 297.25 L 996.10 296.22 L 997.49 295.65 L 998.37 295.50 L 0.00 294.63 L 0.57 294.50 L 0.23 295.84 L 0.00 295.99 Z\",\"M 966.24 295.74 L 965.32 296.11 L 964.39 294.89 L 964.49 294.15 L 966.24 295.74 Z\",\"M 964.19 291.48 L 964.64 293.72 L 963.89 293.37 L 963.31 293.53 L 962.92 292.76 L 962.86 290.63 L 964.19 291.48 Z\",\"M 639.05 287.65 L 639.50 291.00 L 640.22 292.29 L 639.94 293.63 L 639.45 294.45 L 638.51 292.82 L 637.98 293.64 L 638.51 295.70 L 638.27 296.87 L 637.50 297.52 L 637.32 299.87 L 636.23 303.11 L 634.86 306.93 L 633.14 312.20 L 632.08 316.06 L 630.83 319.28 L 628.57 319.94 L 626.14 321.11 L 624.54 320.40 L 622.34 319.41 L 621.57 317.95 L 621.39 315.48 L 620.41 313.27 L 620.15 311.27 L 620.65 309.27 L 621.93 308.79 L 621.94 307.86 L 623.27 305.76 L 623.52 303.99 L 622.87 302.67 L 622.35 300.92 L 622.12 298.36 L 623.09 296.81 L 623.47 295.04 L 624.85 294.94 L 626.40 294.37 L 627.43 293.87 L 628.65 293.84 L 630.23 292.25 L 632.52 290.54 L 633.35 289.14 L 632.97 287.95 L 634.15 288.29 L 635.68 286.36 L 635.74 284.69 L 636.66 283.45 L 637.62 284.64 L 638.36 285.82 L 639.05 287.65 Z\",\"M 898.78 288.23 L 899.78 290.41 L 901.57 289.36 L 902.49 290.54 L 903.82 291.63 L 903.53 292.86 L 904.13 295.24 L 904.55 296.62 L 905.25 296.96 L 906.00 299.34 L 905.73 300.78 L 906.63 302.66 L 909.64 304.11 L 911.61 305.43 L 913.47 306.64 L 913.10 307.32 L 914.69 309.06 L 915.77 312.06 L 916.88 311.45 L 918.01 312.66 L 918.69 312.23 L 919.17 315.17 L 921.14 316.88 L 922.43 317.94 L 924.60 320.19 L 925.38 322.42 L 925.45 324.01 L 925.26 325.72 L 926.58 328.08 L 926.42 330.54 L 925.94 331.83 L 925.19 334.31 L 925.25 335.90 L 924.70 337.89 L 923.47 340.42 L 921.42 341.78 L 920.40 343.94 L 919.47 345.31 L 918.65 347.71 L 917.58 349.09 L 916.88 351.17 L 916.52 353.08 L 916.66 353.96 L 915.07 354.92 L 911.96 355.03 L 909.39 356.16 L 908.12 357.24 L 906.44 358.43 L 904.14 357.20 L 902.44 356.71 L 902.87 355.27 L 901.35 355.79 L 898.92 357.80 L 896.52 357.05 L 894.94 356.61 L 893.35 356.41 L 890.66 355.61 L 888.87 353.90 L 888.35 351.79 L 887.71 350.39 L 886.34 349.26 L 883.67 348.92 L 884.58 347.57 L 883.91 345.52 L 882.55 347.43 L 880.08 347.95 L 881.54 346.41 L 881.96 344.81 L 883.03 343.45 L 882.81 341.39 L 880.55 343.76 L 878.81 344.71 L 877.75 346.92 L 875.58 345.77 L 875.67 344.30 L 873.93 342.29 L 872.46 341.25 L 872.98 340.60 L 869.42 338.92 L 867.47 338.84 L 864.80 337.49 L 859.82 337.75 L 856.23 338.74 L 853.06 339.67 L 850.41 339.49 L 847.47 340.91 L 845.06 341.56 L 844.53 343.01 L 843.50 344.14 L 841.14 344.21 L 839.40 344.45 L 836.94 343.95 L 834.95 344.25 L 833.04 344.38 L 831.39 345.86 L 830.58 345.74 L 829.18 346.52 L 827.85 347.40 L 825.82 347.29 L 823.96 347.29 L 821.01 345.52 L 819.52 344.99 L 819.58 343.40 L 820.96 343.02 L 821.43 342.39 L 821.33 341.39 L 821.67 339.46 L 821.36 337.81 L 819.89 335.00 L 819.44 333.42 L 819.56 331.84 L 818.45 330.03 L 818.38 329.21 L 817.15 328.11 L 816.80 325.93 L 815.22 323.73 L 814.83 322.55 L 816.05 323.75 L 815.12 321.17 L 816.49 321.97 L 817.32 323.05 L 817.27 321.63 L 815.89 319.44 L 815.63 318.57 L 814.98 317.73 L 815.29 316.13 L 815.85 315.44 L 816.23 314.06 L 815.94 312.43 L 817.08 310.43 L 817.29 312.55 L 818.47 310.64 L 820.72 309.71 L 822.08 308.52 L 824.20 307.50 L 825.46 307.29 L 826.23 307.63 L 828.42 306.60 L 830.10 306.29 L 830.52 305.68 L 831.26 305.42 L 832.79 305.49 L 835.71 304.68 L 837.22 303.45 L 837.93 301.96 L 839.56 300.55 L 839.69 299.44 L 839.76 297.93 L 841.70 295.57 L 842.87 297.97 L 844.06 297.41 L 843.07 296.10 L 843.94 294.75 L 845.16 295.35 L 845.50 293.24 L 847.02 291.88 L 847.69 290.78 L 849.09 290.30 L 849.13 289.53 L 850.35 289.85 L 850.40 289.16 L 851.62 288.76 L 852.96 288.38 L 855.01 289.66 L 856.56 291.30 L 858.29 291.32 L 860.06 291.58 L 859.47 290.06 L 860.80 287.83 L 862.06 287.10 L 861.62 286.41 L 862.83 284.82 L 864.51 283.84 L 865.93 284.17 L 868.27 283.65 L 868.22 282.23 L 866.18 281.32 L 867.66 280.91 L 869.50 281.60 L 870.98 282.74 L 873.32 283.45 L 874.11 283.17 L 875.83 284.02 L 877.45 283.23 L 878.50 283.47 L 879.15 282.94 L 880.42 284.31 L 879.68 285.80 L 878.63 286.92 L 877.67 287.01 L 877.99 288.12 L 877.18 289.51 L 876.19 290.88 L 876.39 291.66 L 878.60 293.20 L 880.74 294.08 L 882.17 295.04 L 884.18 296.69 L 884.96 296.68 L 886.41 297.39 L 886.84 298.26 L 889.49 299.20 L 891.32 298.25 L 891.87 296.76 L 892.43 295.52 L 892.77 294.00 L 893.62 291.79 L 893.23 290.45 L 893.43 289.64 L 893.11 288.05 L 893.48 285.96 L 894.01 285.39 L 893.58 284.47 L 894.25 282.99 L 894.77 281.47 L 894.84 280.68 L 895.88 279.63 L 896.66 280.99 L 896.85 282.74 L 897.55 283.07 L 897.66 284.24 L 898.67 285.65 L 898.88 287.23 L 898.78 288.23 Z\",\"M 950.33 279.12 L 951.11 280.07 L 949.17 280.06 L 948.11 278.35 L 949.77 279.02 L 950.33 279.12 Z\",\"M 835.32 278.44 L 834.15 278.49 L 830.47 276.55 L 833.06 276.00 L 834.52 276.85 L 835.49 277.70 L 835.32 278.44 Z\",\"M 946.81 277.42 L 945.73 277.49 L 944.03 277.21 L 943.45 276.78 L 943.62 275.67 L 945.45 276.11 L 946.36 276.69 L 946.81 277.42 Z\",\"M 949.11 276.67 L 948.69 277.18 L 946.63 274.77 L 946.06 273.11 L 947.00 273.11 L 948.00 275.34 L 949.11 276.67 Z\",\"M 845.66 278.17 L 843.28 278.78 L 842.95 278.44 L 843.20 277.50 L 844.39 275.81 L 847.14 274.70 L 847.46 274.05 L 849.85 273.42 L 851.79 273.33 L 852.66 272.98 L 853.71 273.33 L 852.69 274.08 L 849.80 275.29 L 847.47 276.09 L 845.66 278.17 Z\",\"M 827.50 272.49 L 828.50 273.23 L 830.22 273.00 L 830.91 274.18 L 827.70 274.74 L 825.77 275.11 L 824.28 275.09 L 825.23 273.49 L 826.76 273.47 L 827.50 272.49 Z\",\"M 841.40 272.49 L 840.99 274.03 L 836.82 274.82 L 833.12 274.47 L 833.12 273.46 L 835.32 272.88 L 837.06 273.71 L 838.91 273.50 L 841.40 272.49 Z\",\"M 944.10 273.16 L 944.22 273.72 L 942.04 272.54 L 940.52 271.54 L 939.48 270.61 L 939.89 270.33 L 941.17 271.00 L 943.45 272.28 L 944.10 273.16 Z\",\"M 937.61 270.41 L 937.05 270.57 L 935.84 269.94 L 934.70 268.80 L 934.84 268.33 L 936.50 269.51 L 937.61 270.41 Z\",\"M 801.73 268.83 L 807.06 269.11 L 807.67 267.96 L 812.82 269.29 L 813.83 271.09 L 818.00 271.60 L 821.41 273.25 L 818.24 274.31 L 815.18 273.19 L 812.67 273.27 L 809.79 273.06 L 807.19 272.56 L 803.97 271.50 L 801.93 271.23 L 800.77 271.57 L 795.71 270.43 L 795.23 269.24 L 792.68 269.03 L 794.59 266.38 L 797.96 266.54 L 800.20 267.63 L 801.35 267.84 L 801.73 268.83 Z\",\"M 874.24 267.26 L 872.81 269.15 L 872.54 267.06 L 873.03 266.06 L 873.61 265.12 L 874.24 265.94 L 874.24 267.26 Z\",\"M 933.00 268.95 L 932.22 269.22 L 931.02 268.16 L 929.80 266.39 L 929.21 264.28 L 929.59 264.01 L 929.89 264.83 L 930.73 265.46 L 932.08 267.22 L 933.39 268.17 L 933.00 268.95 Z\",\"M 922.18 265.22 L 920.72 265.44 L 920.28 266.22 L 918.76 266.90 L 917.34 267.55 L 915.86 267.54 L 913.58 266.74 L 912.00 265.96 L 912.23 265.10 L 914.72 265.51 L 916.24 265.29 L 916.66 263.96 L 917.06 263.89 L 917.33 265.37 L 918.91 265.16 L 919.69 264.21 L 921.24 263.21 L 920.94 261.58 L 922.60 261.53 L 923.16 261.98 L 923.11 263.52 L 922.18 265.22 Z\",\"M 853.47 259.61 L 852.43 260.53 L 850.51 260.02 L 849.97 258.83 L 852.78 258.69 L 853.47 259.61 Z\",\"M 862.42 258.59 L 863.43 260.72 L 861.09 259.57 L 858.77 259.34 L 857.20 259.52 L 855.28 259.43 L 855.93 257.90 L 859.37 257.78 L 862.42 258.59 Z\",\"M 925.39 262.50 L 924.52 263.24 L 924.00 261.60 L 923.35 260.53 L 922.09 259.62 L 920.51 258.43 L 918.51 257.61 L 919.28 256.94 L 920.78 257.72 L 921.72 258.33 L 922.89 259.00 L 924.00 260.17 L 925.06 261.06 L 925.39 262.50 Z\",\"M 872.62 253.20 L 873.40 257.69 L 876.27 259.35 L 878.59 256.41 L 881.78 254.73 L 884.25 254.73 L 886.63 255.70 L 888.69 256.69 L 891.67 257.22 L 896.49 259.14 L 901.62 260.73 L 903.54 262.15 L 905.08 263.54 L 905.51 265.18 L 910.13 266.90 L 910.81 268.37 L 908.25 268.67 L 908.87 270.52 L 911.35 272.34 L 913.15 275.29 L 914.74 275.20 L 914.63 276.43 L 916.78 276.90 L 915.94 277.42 L 918.89 278.59 L 918.59 279.40 L 916.75 279.59 L 916.06 278.87 L 913.68 278.56 L 910.87 278.14 L 908.71 276.37 L 907.13 274.84 L 905.69 272.41 L 902.07 271.19 L 899.72 271.99 L 898.02 272.90 L 898.37 274.95 L 896.19 275.91 L 894.64 275.44 L 891.76 275.33 L 889.29 273.05 L 886.47 272.49 L 885.78 273.28 L 882.26 273.37 L 883.44 271.10 L 885.19 270.33 L 884.47 267.31 L 883.13 264.98 L 877.75 262.63 L 875.46 262.40 L 871.29 259.83 L 870.47 261.18 L 869.40 261.42 L 868.77 260.41 L 868.76 259.20 L 866.64 257.84 L 869.63 256.83 L 871.61 256.89 L 871.38 256.15 L 867.31 256.15 L 866.21 254.49 L 863.73 253.98 L 862.56 252.60 L 866.30 251.93 L 867.72 251.03 L 872.18 252.17 L 872.62 253.20 Z\",\"M 847.89 246.05 L 845.66 248.81 L 843.57 249.34 L 840.90 248.80 L 836.27 248.94 L 833.84 249.34 L 833.45 251.44 L 835.93 253.91 L 837.43 252.65 L 842.61 251.71 L 842.39 252.99 L 841.18 252.58 L 839.97 254.22 L 837.52 255.29 L 840.15 258.85 L 839.65 259.81 L 842.14 263.01 L 842.12 264.84 L 840.64 265.65 L 839.55 264.68 L 840.89 262.40 L 838.16 263.48 L 837.47 262.71 L 837.83 261.63 L 835.83 260.01 L 836.04 257.30 L 834.18 258.14 L 834.42 261.38 L 834.53 265.36 L 832.77 265.76 L 831.58 264.94 L 832.37 262.39 L 831.94 259.71 L 830.77 259.69 L 829.91 257.78 L 831.06 255.96 L 831.46 253.76 L 832.85 249.57 L 833.43 248.43 L 835.80 246.36 L 837.97 247.18 L 841.47 247.57 L 844.66 247.45 L 847.41 245.43 L 847.89 246.05 Z\",\"M 857.47 246.85 L 857.32 249.28 L 855.89 249.01 L 855.47 250.70 L 856.61 252.17 L 855.83 252.50 L 854.71 250.74 L 853.89 247.19 L 854.45 244.97 L 855.37 243.96 L 855.57 245.48 L 857.21 245.72 L 857.47 246.85 Z\",\"M 793.94 266.26 L 790.86 266.31 L 788.52 263.99 L 784.96 261.72 L 783.77 260.04 L 781.67 257.78 L 780.29 255.70 L 778.17 251.81 L 775.73 249.49 L 774.92 247.10 L 773.89 244.93 L 771.39 243.19 L 769.94 240.81 L 767.85 239.26 L 764.95 236.19 L 764.71 234.78 L 766.49 234.89 L 770.79 235.43 L 773.25 238.14 L 775.40 240.03 L 776.93 241.18 L 779.56 244.17 L 782.39 244.21 L 784.72 246.11 L 786.33 248.44 L 788.44 249.71 L 787.33 251.98 L 788.92 252.94 L 789.92 253.01 L 790.39 254.95 L 791.36 256.50 L 793.40 256.75 L 794.75 258.50 L 794.05 261.96 L 793.94 266.26 Z\",\"M 827.43 244.93 L 830.55 247.49 L 827.26 247.82 L 826.33 249.72 L 826.45 252.23 L 823.78 254.13 L 823.71 256.90 L 822.64 261.15 L 822.23 260.16 L 819.07 261.41 L 817.97 259.71 L 815.99 259.55 L 814.60 258.66 L 811.30 259.66 L 810.29 258.32 L 808.47 258.47 L 806.18 258.15 L 805.75 254.42 L 804.37 253.65 L 803.03 251.28 L 802.65 248.85 L 802.97 246.27 L 804.62 244.43 L 806.66 245.38 L 808.80 244.86 L 809.36 242.51 L 810.55 241.98 L 813.88 241.38 L 815.87 239.18 L 817.24 237.43 L 818.34 236.39 L 820.70 234.87 L 822.84 232.94 L 824.24 230.76 L 825.36 230.75 L 826.79 232.16 L 826.92 233.37 L 828.75 234.14 L 831.06 234.98 L 830.86 236.07 L 829.00 236.20 L 829.50 237.56 L 827.45 238.51 L 825.87 241.01 L 827.91 243.65 L 827.43 244.93 Z\",\"M 851.05 226.63 L 851.33 228.47 L 851.49 230.03 L 850.55 232.57 L 849.53 229.74 L 848.23 231.15 L 849.12 233.20 L 848.33 234.50 L 845.06 232.88 L 844.28 230.87 L 845.12 229.56 L 843.36 228.24 L 842.49 229.39 L 841.18 229.28 L 839.13 230.83 L 838.67 230.02 L 839.76 227.68 L 841.51 226.90 L 843.02 225.85 L 844.00 227.11 L 846.12 226.35 L 846.57 225.11 L 848.53 225.04 L 848.37 222.89 L 850.62 224.21 L 850.85 225.60 L 851.05 226.63 Z\",\"M 725.61 232.79 L 723.19 233.42 L 721.87 231.21 L 721.38 227.22 L 722.64 222.71 L 724.56 224.25 L 725.85 226.21 L 727.19 229.10 L 726.77 232.00 L 725.61 232.79 Z\",\"M 330.73 221.92 L 328.41 222.22 L 327.91 221.97 L 328.72 221.21 L 328.66 220.11 L 330.26 219.75 L 330.84 219.85 L 330.73 221.92 Z\",\"M 844.40 221.45 L 843.40 222.36 L 842.53 224.12 L 841.66 224.94 L 839.95 223.02 L 840.52 222.27 L 841.22 221.50 L 841.52 219.77 L 843.05 219.61 L 842.61 221.48 L 844.66 218.80 L 844.40 221.45 Z\",\"M 829.18 224.12 L 825.49 226.76 L 826.85 224.81 L 828.85 223.10 L 830.52 221.18 L 831.98 218.42 L 832.47 220.68 L 830.64 222.21 L 829.18 224.12 Z\",\"M 838.57 216.97 L 840.23 217.83 L 842.00 217.82 L 841.95 218.98 L 840.66 220.16 L 838.90 221.00 L 838.80 219.71 L 839.00 218.29 L 838.57 216.97 Z\",\"M 848.62 216.21 L 849.40 219.32 L 847.26 218.58 L 847.31 219.51 L 847.99 221.22 L 846.67 221.85 L 846.56 219.89 L 845.72 219.75 L 845.29 218.07 L 846.92 218.29 L 846.88 217.24 L 845.19 215.12 L 847.85 215.18 L 848.62 216.21 Z\",\"M 837.58 213.70 L 836.84 216.10 L 835.65 214.71 L 834.23 212.59 L 836.61 212.70 L 837.58 213.70 Z\",\"M 837.01 198.60 L 838.72 199.39 L 839.57 198.67 L 839.83 199.38 L 839.37 200.53 L 840.32 202.52 L 839.59 204.83 L 837.95 205.75 L 837.52 207.99 L 838.14 210.20 L 839.61 210.51 L 840.84 210.18 L 844.31 211.72 L 844.04 213.23 L 844.95 213.90 L 844.66 215.17 L 842.50 213.81 L 841.47 212.35 L 840.76 213.37 L 838.99 211.71 L 836.46 212.12 L 835.08 211.51 L 835.22 210.36 L 836.09 209.65 L 835.26 209.01 L 834.90 210.01 L 833.53 208.41 L 833.12 207.20 L 833.01 204.54 L 834.13 205.46 L 834.42 201.11 L 835.32 198.60 L 837.01 198.60 Z\",\"M 317.80 199.37 L 317.09 200.07 L 315.00 200.05 L 313.37 200.15 L 313.21 198.96 L 313.61 198.55 L 315.88 198.57 L 317.30 198.81 L 317.80 199.37 Z\",\"M 286.38 200.36 L 285.54 200.83 L 283.98 200.38 L 282.39 199.37 L 282.73 198.74 L 283.89 198.54 L 284.53 198.64 L 286.40 198.89 L 287.87 199.56 L 288.33 200.31 L 286.38 200.36 Z\",\"M 298.39 194.80 L 300.80 195.24 L 301.14 194.76 L 303.31 194.78 L 304.96 195.49 L 305.69 195.42 L 306.19 196.41 L 307.71 196.35 L 307.62 197.18 L 308.86 197.28 L 310.22 198.30 L 309.19 199.43 L 307.87 198.83 L 306.60 198.94 L 305.68 198.81 L 305.18 199.32 L 304.12 199.49 L 303.69 198.81 L 302.77 199.21 L 301.66 201.12 L 300.95 200.67 L 300.81 199.88 L 298.96 199.41 L 297.65 199.60 L 295.96 199.40 L 294.66 199.91 L 293.17 199.05 L 293.41 198.15 L 295.97 198.54 L 298.07 198.76 L 299.07 198.14 L 297.80 196.94 L 297.82 195.88 L 296.07 195.45 L 296.69 194.68 L 298.39 194.80 Z\",\"M 806.50 198.12 L 804.10 199.45 L 801.82 198.59 L 801.74 196.20 L 803.11 194.94 L 806.15 194.16 L 807.74 194.23 L 808.36 195.29 L 807.14 196.51 L 806.50 198.12 Z\",\"M 67.94 196.99 L 67.53 197.45 L 66.84 197.06 L 66.92 196.28 L 66.46 195.27 L 66.60 194.96 L 67.08 194.51 L 66.89 193.96 L 67.05 193.70 L 67.26 193.75 L 68.33 194.22 L 68.82 194.46 L 69.27 194.84 L 69.98 195.81 L 69.91 195.96 L 68.83 196.56 L 67.94 196.99 Z\",\"M 66.45 192.65 L 65.51 192.86 L 65.04 192.27 L 64.72 192.04 L 64.69 191.87 L 64.96 191.63 L 65.95 191.90 L 66.68 192.32 L 66.45 192.65 Z\",\"M 64.56 191.18 L 64.47 191.47 L 62.98 191.39 L 63.19 191.06 L 64.56 191.18 Z\",\"M 62.07 190.77 L 61.92 190.93 L 61.73 190.90 L 60.76 190.80 L 60.41 190.17 L 60.30 190.06 L 61.04 189.67 L 61.27 189.85 L 62.07 190.77 Z\",\"M 57.37 188.94 L 57.04 189.21 L 56.11 188.71 L 56.25 188.51 L 56.68 188.23 L 57.32 188.29 L 57.37 188.94 Z\",\"M 278.67 186.76 L 279.77 187.78 L 282.37 187.47 L 283.35 188.12 L 285.70 189.84 L 287.43 191.09 L 288.35 191.06 L 290.00 191.62 L 289.80 192.40 L 291.85 192.52 L 293.95 193.66 L 293.62 194.30 L 291.77 194.66 L 289.90 194.79 L 287.99 194.58 L 284.01 194.84 L 285.87 193.30 L 284.74 192.57 L 282.95 192.39 L 281.99 191.59 L 281.33 190.01 L 279.76 190.11 L 277.17 189.37 L 276.34 188.78 L 272.72 188.36 L 271.75 187.82 L 272.79 187.12 L 270.06 186.98 L 268.07 188.42 L 266.92 188.46 L 266.52 189.14 L 265.14 189.44 L 263.96 189.18 L 265.42 188.32 L 266.02 187.32 L 267.28 186.70 L 268.70 186.16 L 270.80 185.89 L 271.47 185.59 L 273.87 185.78 L 276.06 185.82 L 278.67 186.76 Z\",\"M 284.62 184.00 L 283.94 184.14 L 283.24 182.54 L 282.20 181.74 L 282.80 179.97 L 283.64 180.08 L 284.61 182.39 L 284.62 184.00 Z\",\"M 836.60 186.69 L 835.41 188.97 L 833.95 186.63 L 833.63 184.57 L 835.26 181.84 L 837.49 179.73 L 838.76 180.56 L 838.27 182.24 L 836.60 186.69 Z\",\"M 283.83 176.17 L 280.80 176.61 L 280.61 175.58 L 281.91 175.36 L 283.75 175.45 L 283.83 176.17 Z\",\"M 286.11 176.14 L 285.63 178.11 L 285.12 177.76 L 285.16 176.31 L 283.92 175.21 L 283.91 174.89 L 286.11 176.14 Z\",\"M 874.00 155.14 L 874.35 156.09 L 872.79 157.77 L 871.65 156.88 L 870.22 157.53 L 869.49 159.16 L 867.68 158.37 L 867.70 157.04 L 869.24 155.39 L 870.82 155.71 L 871.96 154.54 L 874.00 155.14 Z\",\"M 596.05 150.91 L 594.17 152.09 L 594.38 152.62 L 594.46 152.84 L 591.61 153.97 L 590.25 153.61 L 589.61 152.49 L 590.93 152.39 L 591.12 152.38 L 591.52 151.70 L 593.52 151.74 L 596.05 150.91 Z\",\"M 565.84 150.82 L 567.36 151.75 L 569.52 151.59 L 571.59 151.79 L 571.52 152.28 L 573.03 151.94 L 572.68 152.77 L 568.68 153.00 L 568.71 152.54 L 565.32 152.00 L 565.84 150.82 Z\",\"M 543.12 143.80 L 542.12 145.99 L 542.53 146.85 L 541.95 148.28 L 539.82 147.23 L 538.41 146.93 L 534.54 145.52 L 534.92 144.09 L 538.17 144.35 L 541.01 144.04 L 543.12 143.80 Z\",\"M 525.59 135.53 L 527.25 137.50 L 526.86 141.18 L 525.60 141.00 L 524.47 141.92 L 523.42 141.19 L 523.31 137.84 L 522.67 136.25 L 524.20 136.39 L 525.59 135.53 Z\",\"M 891.60 146.83 L 890.56 149.05 L 891.04 150.44 L 889.59 152.39 L 886.04 153.70 L 881.16 153.87 L 877.20 157.04 L 875.34 155.98 L 875.22 153.90 L 870.39 154.51 L 867.10 155.82 L 863.85 155.87 L 866.67 157.92 L 864.81 162.64 L 863.02 163.80 L 861.67 162.73 L 862.36 160.22 L 860.60 159.41 L 859.47 157.51 L 862.10 156.65 L 863.55 154.91 L 866.35 153.47 L 868.38 151.58 L 873.91 150.74 L 876.88 151.31 L 879.79 146.38 L 881.64 147.70 L 885.72 144.92 L 887.30 143.85 L 889.04 140.45 L 888.57 137.33 L 889.74 135.57 L 892.69 135.06 L 894.21 138.91 L 894.12 141.16 L 891.56 143.96 L 891.60 146.83 Z\",\"M 526.56 132.91 L 525.64 135.05 L 524.38 134.49 L 523.74 132.62 L 524.30 131.59 L 526.09 130.53 L 526.56 132.91 Z\",\"M 899.75 127.29 L 901.70 127.88 L 903.67 126.71 L 904.29 129.83 L 900.17 130.59 L 897.73 133.35 L 893.37 131.45 L 891.85 134.49 L 888.77 134.53 L 888.38 131.77 L 889.76 129.63 L 892.72 129.47 L 893.53 125.63 L 894.36 123.47 L 897.62 126.36 L 899.75 127.29 Z\",\"M 323.15 120.70 L 325.17 121.07 L 327.74 120.99 L 326.37 122.13 L 325.35 122.31 L 321.82 121.13 L 321.13 120.20 L 322.18 119.34 L 323.15 120.70 Z\",\"M 328.31 113.60 L 326.96 113.65 L 323.36 112.77 L 320.78 111.46 L 321.74 111.23 L 325.39 111.93 L 328.23 113.09 L 328.31 113.60 Z\",\"M 156.92 115.25 L 155.52 115.64 L 150.96 114.37 L 150.12 113.39 L 147.64 112.42 L 147.14 111.63 L 144.28 111.12 L 143.21 109.61 L 143.45 108.97 L 146.36 109.58 L 148.07 110.00 L 150.68 110.29 L 151.62 111.25 L 153.00 112.57 L 155.77 113.71 L 156.92 115.25 Z\",\"M 344.07 109.20 L 342.23 111.63 L 344.04 110.70 L 345.91 111.29 L 344.93 112.26 L 347.40 113.02 L 348.68 112.34 L 351.45 113.20 L 350.59 115.23 L 352.53 114.76 L 352.89 116.23 L 353.75 117.96 L 352.58 120.40 L 351.33 120.50 L 349.50 119.98 L 350.10 117.71 L 349.33 117.35 L 346.11 119.77 L 344.45 119.67 L 346.41 118.36 L 343.74 117.69 L 340.76 117.85 L 335.37 117.77 L 334.94 116.94 L 336.67 115.97 L 335.46 115.21 L 337.80 113.54 L 340.67 109.12 L 342.39 107.54 L 344.80 106.58 L 346.09 106.70 L 345.55 107.45 L 344.07 109.20 Z\",\"M 131.36 99.89 L 134.03 99.67 L 133.19 102.82 L 135.61 105.05 L 134.50 105.05 L 132.83 103.78 L 131.80 102.50 L 130.40 101.64 L 129.89 100.41 L 130.05 99.53 L 131.36 99.89 Z\",\"M 899.02 109.04 L 901.82 113.95 L 897.71 113.04 L 896.00 117.05 L 898.71 119.90 L 898.63 121.84 L 896.52 120.17 L 894.70 122.31 L 894.19 119.98 L 894.50 117.28 L 894.18 114.28 L 894.82 112.18 L 894.95 108.47 L 893.32 105.74 L 893.56 101.94 L 896.13 100.66 L 895.03 99.37 L 896.26 98.98 L 896.99 100.82 L 897.95 103.50 L 897.88 106.23 L 899.02 109.04 Z\",\"M 481.14 104.83 L 476.21 106.47 L 472.28 106.06 L 474.53 103.15 L 473.08 100.33 L 476.86 98.15 L 478.96 96.85 L 481.29 96.74 L 484.27 98.46 L 482.78 100.37 L 483.24 102.35 L 481.14 104.83 Z\",\"M 535.25 95.53 L 533.59 97.78 L 530.68 96.21 L 530.29 95.05 L 534.37 94.14 L 535.25 95.53 Z\",\"M 74.98 91.34 L 72.21 92.40 L 70.79 91.69 L 70.36 90.39 L 72.88 89.40 L 74.36 88.97 L 76.21 89.16 L 77.38 90.02 L 74.98 91.34 Z\",\"M 491.65 87.13 L 488.68 90.13 L 491.51 89.75 L 494.55 89.76 L 493.83 92.03 L 491.33 94.52 L 494.20 94.70 L 496.90 98.27 L 498.80 98.71 L 500.52 101.88 L 501.31 102.97 L 504.68 103.50 L 504.34 105.28 L 502.92 106.09 L 504.03 107.53 L 501.53 108.98 L 497.81 108.96 L 493.08 109.72 L 491.78 109.18 L 489.95 110.48 L 487.38 110.16 L 485.43 111.22 L 483.95 110.67 L 488.02 107.75 L 490.51 107.15 L 486.15 106.69 L 485.36 105.58 L 488.27 104.72 L 486.75 103.22 L 487.27 101.40 L 491.41 101.66 L 491.81 100.04 L 489.91 98.29 L 486.54 97.80 L 485.88 97.05 L 486.89 95.81 L 485.97 95.04 L 484.48 96.36 L 484.31 93.68 L 482.91 92.27 L 483.92 89.39 L 486.08 87.14 L 488.30 87.36 L 491.65 87.13 Z\",\"M 40.06 83.58 L 38.35 84.01 L 36.53 83.50 L 34.85 82.74 L 37.59 82.27 L 39.79 82.52 L 40.06 83.58 Z\",\"M 279.81 77.34 L 278.73 78.80 L 277.50 78.56 L 276.77 77.73 L 276.90 77.54 L 277.97 76.71 L 279.11 76.77 L 279.81 77.34 Z\",\"M 272.50 75.80 L 269.25 77.33 L 267.29 77.27 L 266.68 76.52 L 268.75 75.24 L 272.56 75.27 L 272.50 75.80 Z\",\"M 22.97 72.83 L 24.68 73.36 L 26.41 73.07 L 28.66 73.80 L 31.42 74.17 L 31.19 74.48 L 29.08 75.06 L 26.97 74.46 L 25.91 73.96 L 23.46 74.12 L 22.80 73.87 L 22.97 72.83 Z\",\"M 263.44 67.62 L 263.95 68.84 L 265.38 68.41 L 266.99 69.14 L 270.03 70.09 L 273.21 70.96 L 273.46 72.28 L 275.50 72.06 L 277.49 72.98 L 275.02 73.86 L 270.70 73.19 L 269.14 71.94 L 266.39 73.42 L 262.43 74.86 L 261.48 73.23 L 257.71 73.50 L 260.13 72.12 L 260.48 69.94 L 261.43 67.39 L 263.44 67.62 Z\",\"M 459.69 65.40 L 459.05 67.20 L 462.19 69.09 L 458.58 71.21 L 450.57 73.12 L 448.17 73.62 L 444.52 73.21 L 436.77 72.33 L 439.50 71.10 L 433.45 69.75 L 438.37 69.21 L 438.25 68.39 L 432.42 67.75 L 434.30 65.94 L 438.51 65.53 L 442.84 67.41 L 447.06 65.90 L 450.55 66.68 L 455.08 65.20 L 459.69 65.40 Z\",\"M 289.26 63.47 L 286.14 63.61 L 285.45 62.26 L 286.63 60.70 L 289.18 60.31 L 291.35 61.08 L 291.38 62.27 L 291.06 62.66 L 289.26 63.47 Z\",\"M 0.00 58.43 L 6.81 60.55 L 14.09 63.32 L 13.85 65.04 L 15.72 65.74 L 15.08 63.72 L 22.62 64.13 L 28.06 66.73 L 25.30 67.94 L 20.75 68.23 L 20.68 70.94 L 19.57 71.52 L 16.97 71.44 L 14.85 70.47 L 11.16 69.66 L 10.54 68.45 L 7.71 68.00 L 4.56 68.36 L 3.05 67.39 L 3.65 66.36 L 0.32 67.01 L 1.58 68.32 L 0.00 69.50 L 999.98 69.52 L 996.41 70.74 L 992.81 70.53 L 995.31 72.01 L 996.97 74.30 L 998.25 75.05 L 998.57 76.20 L 997.86 76.93 L 992.68 76.33 L 984.91 78.42 L 982.44 78.74 L 978.19 80.70 L 974.16 82.40 L 973.14 83.66 L 969.17 81.74 L 961.93 83.92 L 960.67 82.89 L 957.99 84.08 L 954.28 83.70 L 953.38 85.52 L 950.05 88.21 L 950.15 89.34 L 953.31 89.96 L 952.94 94.00 L 950.36 94.10 L 949.17 96.43 L 950.33 97.63 L 945.47 99.04 L 944.51 102.21 L 940.36 102.89 L 939.53 105.71 L 935.53 108.30 L 934.50 106.39 L 933.31 102.34 L 931.76 96.16 L 933.10 92.31 L 935.44 90.65 L 935.59 89.36 L 939.90 88.74 L 944.86 85.24 L 949.65 82.38 L 954.64 80.16 L 956.87 76.25 L 953.50 76.48 L 951.83 78.77 L 944.78 81.82 L 942.51 78.41 L 935.34 79.35 L 928.38 84.01 L 930.68 85.71 L 924.48 86.43 L 920.18 86.72 L 920.38 84.71 L 916.07 84.29 L 912.63 85.66 L 904.13 85.18 L 895.00 86.00 L 886.00 91.42 L 875.35 97.97 L 879.73 98.32 L 881.09 100.06 L 883.79 100.68 L 885.57 99.29 L 888.62 99.47 L 892.63 102.53 L 892.72 104.89 L 890.55 107.67 L 890.32 110.98 L 889.06 115.43 L 884.88 119.45 L 883.94 121.37 L 880.17 124.60 L 876.43 127.81 L 874.64 129.45 L 870.94 131.08 L 869.19 131.11 L 867.44 129.77 L 863.71 131.80 L 863.28 132.72 L 862.22 132.55 L 861.02 133.50 L 860.19 134.44 L 860.29 136.44 L 858.86 137.05 L 858.36 137.54 L 857.32 138.36 L 855.47 138.82 L 854.26 139.56 L 854.17 140.77 L 853.85 141.07 L 854.96 141.52 L 856.53 142.74 L 858.93 146.02 L 859.61 147.82 L 859.64 151.02 L 858.59 152.55 L 856.07 153.08 L 853.85 154.23 L 851.35 154.47 L 851.04 152.96 L 851.56 150.88 L 850.33 147.98 L 852.39 147.52 L 850.49 145.14 L 849.14 144.61 L 848.80 145.13 L 847.99 145.37 L 847.89 144.84 L 847.17 144.58 L 846.42 144.14 L 847.19 142.92 L 847.84 142.60 L 847.59 142.09 L 848.30 140.59 L 848.12 140.13 L 846.49 139.83 L 845.18 139.09 L 841.30 139.89 L 839.26 141.20 L 836.26 141.95 L 837.74 140.66 L 837.16 139.58 L 839.36 137.72 L 837.89 136.26 L 835.47 137.24 L 832.33 139.17 L 830.62 140.96 L 827.90 141.10 L 826.48 142.39 L 827.95 144.27 L 830.22 144.73 L 830.31 145.98 L 832.51 146.79 L 835.62 144.81 L 838.09 145.89 L 839.88 145.96 L 840.34 147.42 L 836.40 148.19 L 835.10 149.69 L 832.40 151.08 L 830.98 153.03 L 833.97 154.55 L 835.06 157.29 L 836.75 159.83 L 838.64 161.97 L 838.59 164.03 L 836.85 164.79 L 837.51 166.27 L 839.15 167.13 L 838.72 169.39 L 838.01 171.60 L 836.46 171.84 L 834.43 174.85 L 832.18 178.50 L 829.60 181.81 L 825.78 184.37 L 821.92 186.72 L 818.79 187.04 L 817.09 188.27 L 816.13 187.36 L 814.56 188.75 L 810.68 190.14 L 807.74 190.56 L 806.79 193.50 L 805.25 193.66 L 804.52 191.64 L 805.18 190.57 L 801.45 189.68 L 800.14 190.13 L 796.43 192.51 L 794.12 195.13 L 793.51 197.06 L 795.63 199.99 L 798.23 203.62 L 800.75 205.33 L 802.44 207.57 L 803.71 212.71 L 803.34 217.59 L 801.02 219.42 L 797.84 221.21 L 795.57 223.52 L 792.11 226.11 L 791.10 224.33 L 791.88 222.45 L 789.82 220.87 L 787.49 220.46 L 786.37 219.02 L 784.96 216.15 L 782.47 214.87 L 780.09 214.92 L 780.50 212.74 L 778.05 212.76 L 777.83 215.81 L 776.33 219.87 L 775.43 222.33 L 775.62 224.34 L 777.43 224.42 L 778.56 226.96 L 779.06 229.36 L 780.61 230.95 L 782.29 231.28 L 783.73 232.72 L 784.37 232.98 L 786.01 234.65 L 787.17 236.51 L 787.33 238.39 L 787.04 239.65 L 787.31 240.60 L 787.51 242.25 L 788.49 243.01 L 789.58 245.47 L 789.53 246.41 L 787.56 246.59 L 784.93 244.54 L 781.64 242.33 L 781.32 240.92 L 779.71 239.06 L 779.33 236.76 L 778.33 235.24 L 778.63 233.22 L 778.02 232.04 L 776.92 230.98 L 776.45 229.60 L 774.97 228.03 L 773.62 226.72 L 773.17 228.35 L 772.64 226.81 L 772.94 225.07 L 773.76 222.41 L 773.49 220.35 L 774.35 218.22 L 773.41 216.58 L 773.64 213.55 L 772.51 212.11 L 771.61 208.78 L 771.11 205.28 L 769.90 202.97 L 768.07 204.37 L 764.92 206.35 L 763.36 206.10 L 761.64 205.45 L 762.60 202.01 L 762.02 199.41 L 759.84 196.20 L 760.18 195.20 L 758.55 194.84 L 756.58 192.58 L 755.79 191.13 L 755.63 189.72 L 755.10 188.38 L 753.94 186.76 L 751.38 186.65 L 751.63 187.80 L 750.76 189.34 L 749.58 188.78 L 749.17 189.29 L 748.39 188.98 L 747.31 188.73 L 746.92 189.75 L 745.03 189.72 L 741.60 190.29 L 741.76 192.38 L 740.28 194.02 L 736.28 195.89 L 733.17 199.16 L 731.08 200.91 L 728.32 202.73 L 728.31 204.01 L 726.93 204.69 L 724.43 205.69 L 723.13 205.84 L 722.29 207.95 L 722.87 211.57 L 723.02 213.87 L 721.84 216.51 L 721.83 221.23 L 720.39 221.37 L 719.13 223.48 L 719.97 224.40 L 717.44 225.18 L 716.51 227.07 L 715.39 227.87 L 712.76 225.28 L 711.48 221.39 L 710.41 218.59 L 709.44 217.28 L 707.96 214.61 L 707.27 211.13 L 706.79 209.40 L 704.26 205.58 L 703.11 200.20 L 702.28 196.65 L 702.29 193.28 L 701.75 190.68 L 697.71 192.34 L 695.75 192.01 L 692.13 188.64 L 693.46 187.64 L 692.64 186.55 L 689.38 184.19 L 687.35 183.49 L 686.52 181.49 L 684.37 179.38 L 679.25 179.90 L 674.74 179.95 L 670.83 180.34 L 665.60 179.50 L 662.58 178.86 L 659.44 178.50 L 658.26 175.09 L 656.93 174.60 L 654.79 175.10 L 651.99 176.44 L 648.60 175.52 L 645.79 173.39 L 643.12 172.60 L 641.26 169.96 L 639.21 166.25 L 637.72 166.71 L 635.95 165.78 L 634.92 166.87 L 633.27 166.73 L 633.85 167.96 L 633.60 168.60 L 634.49 170.69 L 635.58 173.09 L 636.95 173.72 L 637.42 174.69 L 639.32 175.86 L 639.48 177.01 L 639.21 177.93 L 639.56 178.87 L 640.36 179.64 L 640.73 180.56 L 641.14 181.24 L 640.96 179.22 L 641.71 177.76 L 642.47 177.46 L 643.31 178.33 L 643.36 179.95 L 642.75 181.59 L 643.28 182.65 L 643.77 182.52 L 643.88 183.28 L 646.05 182.84 L 648.35 182.91 L 650.03 183.00 L 651.93 181.12 L 654.00 179.33 L 655.76 177.62 L 656.56 176.68 L 656.91 176.92 L 656.65 178.06 L 656.28 178.57 L 656.66 180.76 L 657.91 182.66 L 659.46 183.67 L 661.50 184.04 L 663.14 184.54 L 664.39 186.13 L 665.14 187.05 L 666.14 187.41 L 666.13 188.03 L 665.12 189.68 L 664.68 190.46 L 663.51 191.35 L 662.47 193.25 L 661.21 193.10 L 660.63 193.77 L 660.19 195.18 L 660.53 197.04 L 660.27 197.37 L 658.99 197.36 L 657.25 198.40 L 656.98 199.76 L 656.35 200.35 L 654.62 200.32 L 653.53 201.02 L 653.54 202.15 L 652.20 202.92 L 650.67 202.65 L 648.81 203.59 L 647.53 203.74 L 645.52 204.49 L 644.98 205.73 L 644.92 206.67 L 642.15 207.84 L 637.71 209.14 L 635.22 211.10 L 634.00 211.25 L 633.17 211.09 L 631.54 212.24 L 629.77 212.78 L 627.44 212.92 L 626.74 213.08 L 626.13 213.82 L 625.40 214.02 L 624.98 214.72 L 623.60 214.66 L 622.71 215.04 L 620.79 214.90 L 620.07 213.27 L 620.15 211.76 L 619.69 210.94 L 619.15 208.88 L 618.35 207.74 L 618.91 207.60 L 618.62 206.34 L 618.96 205.80 L 618.84 204.59 L 618.48 203.40 L 617.64 202.57 L 617.42 201.46 L 615.99 200.46 L 614.51 198.14 L 613.72 195.87 L 611.80 193.96 L 610.56 193.50 L 608.72 190.86 L 608.40 188.93 L 608.52 187.28 L 606.93 184.20 L 605.63 183.11 L 604.13 182.54 L 603.21 180.95 L 603.36 180.32 L 602.59 178.88 L 601.78 178.26 L 600.70 176.19 L 599.00 173.96 L 597.59 172.05 L 596.20 172.06 L 596.64 170.53 L 596.76 169.56 L 597.10 168.45 L 597.01 168.05 L 596.23 169.17 L 595.63 171.27 L 594.88 172.71 L 594.23 173.20 L 593.30 172.30 L 592.05 171.06 L 590.07 167.08 L 589.78 167.33 L 590.93 170.26 L 592.64 173.06 L 594.74 177.38 L 595.76 178.89 L 596.66 180.46 L 599.15 183.54 L 598.60 184.02 L 598.69 185.83 L 601.92 188.32 L 602.41 188.89 L 603.31 191.61 L 602.70 192.12 L 603.10 194.98 L 604.12 198.30 L 605.18 198.98 L 606.70 200.01 L 608.31 203.22 L 609.08 205.77 L 610.60 207.12 L 614.39 209.75 L 615.93 211.33 L 617.44 212.93 L 618.31 213.89 L 619.67 214.72 L 620.33 215.58 L 620.24 216.73 L 618.66 217.40 L 619.85 218.16 L 620.76 218.67 L 621.30 219.82 L 622.55 220.99 L 623.93 220.99 L 626.55 220.28 L 629.57 219.96 L 632.02 219.09 L 633.40 218.91 L 634.39 218.40 L 635.97 218.31 L 636.86 218.25 L 638.14 217.84 L 639.61 217.56 L 640.93 216.61 L 641.98 216.60 L 642.04 217.36 L 641.79 218.98 L 641.80 220.44 L 641.21 221.45 L 640.43 224.45 L 639.09 227.55 L 637.37 231.10 L 634.99 235.17 L 632.62 238.28 L 629.35 242.07 L 626.57 244.32 L 622.42 247.07 L 619.83 249.19 L 616.79 252.55 L 616.15 254.02 L 615.52 254.68 L 613.57 255.79 L 612.89 256.94 L 611.85 257.15 L 611.45 259.11 L 610.56 260.22 L 610.02 262.07 L 608.90 262.99 L 607.62 266.41 L 607.78 267.99 L 609.56 269.00 L 609.64 269.72 L 608.88 271.40 L 609.04 272.25 L 608.86 273.57 L 609.83 275.31 L 610.98 278.05 L 611.99 278.66 L 612.44 279.90 L 612.33 282.67 L 612.67 285.11 L 612.78 289.45 L 613.27 290.81 L 612.44 292.80 L 611.36 294.72 L 609.59 296.45 L 607.05 297.50 L 603.92 298.85 L 600.79 301.83 L 599.72 302.34 L 597.78 304.32 L 596.63 304.95 L 596.40 306.93 L 597.72 309.04 L 598.26 310.67 L 598.30 311.50 L 598.79 311.36 L 598.71 314.09 L 598.26 315.37 L 598.91 315.85 L 598.50 317.01 L 597.34 318.00 L 595.05 318.93 L 591.71 320.44 L 590.49 321.47 L 590.73 322.63 L 591.44 322.82 L 591.20 324.28 L 590.50 326.30 L 590.18 328.61 L 589.46 329.87 L 587.56 331.27 L 587.02 331.67 L 585.84 333.08 L 585.07 334.51 L 583.49 336.50 L 580.35 339.37 L 578.39 341.03 L 576.30 342.30 L 573.39 343.38 L 571.98 343.52 L 571.62 344.29 L 569.93 343.88 L 568.55 344.41 L 565.54 343.87 L 563.86 344.21 L 562.71 344.07 L 559.85 345.16 L 557.47 345.60 L 555.76 346.65 L 554.49 346.72 L 553.32 345.73 L 552.38 345.68 L 551.18 344.44 L 551.05 344.82 L 550.68 344.08 L 550.70 342.45 L 549.80 340.59 L 550.69 340.08 L 550.62 337.95 L 548.80 335.35 L 547.41 332.99 L 547.40 332.99 L 545.41 329.38 L 543.34 327.28 L 542.26 325.25 L 541.64 322.55 L 540.96 320.54 L 540.03 316.26 L 539.96 312.93 L 539.61 311.42 L 538.53 310.28 L 537.09 307.98 L 535.63 304.65 L 535.03 302.90 L 532.77 300.19 L 532.60 298.06 L 532.34 296.31 L 532.72 293.87 L 533.68 291.33 L 533.83 290.14 L 534.73 287.63 L 535.39 286.49 L 536.98 284.68 L 537.88 283.44 L 538.17 281.38 L 538.02 279.81 L 537.19 278.81 L 536.45 277.13 L 535.77 275.46 L 535.92 274.89 L 536.77 273.78 L 535.93 271.10 L 535.36 269.24 L 533.97 267.48 L 534.23 266.94 L 533.84 266.08 L 533.10 263.99 L 530.82 261.05 L 527.97 258.25 L 526.13 255.96 L 524.44 253.09 L 524.53 252.17 L 525.14 251.28 L 525.81 249.26 L 526.37 247.20 L 525.85 246.77 L 526.81 243.66 L 527.21 241.46 L 526.13 239.63 L 524.86 239.16 L 524.30 237.91 L 523.59 237.51 L 523.62 236.74 L 520.73 237.75 L 519.68 237.60 L 518.61 238.22 L 516.39 238.16 L 514.90 236.42 L 513.99 234.41 L 512.02 232.58 L 509.93 232.62 L 507.48 232.61 L 505.19 232.94 L 502.95 233.53 L 498.58 235.16 L 497.04 236.11 L 494.54 236.91 L 492.06 236.12 L 490.80 236.16 L 488.86 235.61 L 487.08 235.64 L 483.79 236.13 L 481.86 236.93 L 479.11 237.95 L 478.57 237.88 L 477.84 237.90 L 474.98 236.58 L 472.46 234.46 L 470.09 232.94 L 468.22 231.15 L 467.47 230.94 L 465.47 229.82 L 464.03 228.34 L 463.54 227.32 L 463.20 225.27 L 461.98 223.63 L 460.90 222.54 L 460.19 222.18 L 459.50 221.62 L 459.18 220.40 L 458.77 219.79 L 457.97 219.33 L 456.48 218.17 L 455.31 217.99 L 454.68 217.21 L 454.69 216.78 L 453.85 216.19 L 453.67 215.60 L 453.21 213.47 L 453.57 212.24 L 452.42 210.07 L 451.04 209.09 L 452.26 208.56 L 453.60 206.61 L 454.26 205.18 L 454.02 203.68 L 454.80 202.32 L 455.14 199.70 L 454.84 196.96 L 454.50 195.57 L 454.78 194.19 L 454.06 192.87 L 452.60 191.67 L 452.72 190.50 L 452.85 189.21 L 453.91 188.45 L 454.82 187.00 L 454.64 186.06 L 455.60 184.10 L 457.15 182.33 L 458.08 181.89 L 458.82 180.27 L 458.88 178.79 L 459.88 177.07 L 461.73 176.06 L 463.50 173.22 L 464.94 172.12 L 467.53 171.81 L 469.72 169.91 L 471.11 169.17 L 473.43 166.85 L 472.73 163.40 L 473.79 161.01 L 474.16 159.54 L 475.95 157.66 L 478.73 156.40 L 480.79 155.25 L 482.65 152.37 L 483.52 150.67 L 485.57 150.68 L 487.24 151.86 L 489.88 151.67 L 492.76 152.28 L 493.97 152.31 L 496.64 150.79 L 499.64 150.31 L 501.40 149.16 L 504.08 148.32 L 508.79 147.82 L 513.38 147.60 L 514.78 148.01 L 517.40 146.92 L 520.37 146.89 L 521.50 147.54 L 523.40 147.37 L 526.42 146.25 L 528.37 146.58 L 528.28 147.99 L 530.64 146.97 L 530.84 147.50 L 529.45 148.86 L 529.43 150.15 L 530.39 150.84 L 530.03 153.24 L 528.20 154.64 L 528.73 156.15 L 530.16 156.20 L 530.86 157.52 L 531.92 157.95 L 535.18 158.91 L 536.35 158.67 L 538.67 159.13 L 542.35 160.37 L 543.65 162.85 L 546.15 163.38 L 550.06 164.55 L 553.02 165.93 L 554.38 165.21 L 555.71 163.93 L 555.06 161.80 L 555.93 160.45 L 557.93 159.15 L 559.85 158.77 L 563.60 159.34 L 564.55 160.58 L 565.59 160.59 L 566.47 161.06 L 569.23 161.39 L 569.91 162.31 L 573.60 162.26 L 576.28 163.00 L 579.03 163.82 L 580.32 164.25 L 582.46 163.37 L 583.60 162.57 L 586.05 162.34 L 588.03 162.70 L 588.78 164.07 L 589.43 163.17 L 591.65 163.82 L 593.82 163.98 L 595.19 163.28 L 595.99 162.37 L 595.80 162.21 L 596.54 160.91 L 597.10 158.81 L 597.50 158.11 L 597.58 158.08 L 598.57 155.82 L 599.95 153.86 L 600.00 153.76 L 599.74 151.64 L 600.42 150.49 L 599.40 149.23 L 600.45 148.19 L 598.76 148.43 L 596.43 147.79 L 594.52 149.39 L 590.31 149.70 L 588.06 148.21 L 585.06 148.12 L 584.42 149.27 L 582.50 149.60 L 579.82 148.12 L 576.79 148.17 L 575.14 145.41 L 573.11 143.87 L 574.46 141.71 L 572.70 140.38 L 575.78 137.72 L 580.06 137.61 L 581.23 135.50 L 586.52 135.87 L 589.86 134.07 L 593.10 133.28 L 597.69 133.22 L 602.54 135.18 L 606.53 136.25 L 609.76 135.83 L 612.15 136.08 L 615.43 134.62 L 615.85 133.44 L 615.15 131.54 L 613.55 130.52 L 612.01 130.20 L 610.99 129.35 L 607.45 127.00 L 604.28 125.95 L 601.88 124.32 L 603.90 123.87 L 606.21 121.55 L 604.65 120.45 L 608.75 119.32 L 608.67 118.71 L 606.18 119.16 L 603.96 119.38 L 602.11 120.28 L 599.51 120.43 L 597.12 121.46 L 597.28 123.19 L 598.64 123.86 L 601.48 123.70 L 600.93 124.68 L 597.89 125.17 L 594.12 126.78 L 592.58 126.21 L 593.19 124.90 L 590.15 124.09 L 590.65 123.56 L 593.30 122.63 L 592.50 122.00 L 588.18 121.30 L 587.99 120.26 L 585.42 120.60 L 584.39 122.13 L 582.24 124.18 L 582.30 124.90 L 580.95 125.50 L 580.11 125.24 L 579.33 128.59 L 577.89 129.74 L 576.88 131.73 L 577.77 133.31 L 578.10 134.38 L 580.53 135.28 L 580.02 135.96 L 576.72 136.11 L 575.54 136.97 L 573.22 138.47 L 572.35 137.18 L 572.38 136.60 L 570.69 136.52 L 569.24 136.26 L 565.88 136.98 L 567.80 138.54 L 566.39 138.99 L 564.85 138.99 L 563.38 137.57 L 562.86 138.18 L 563.48 139.84 L 564.87 141.14 L 563.82 141.75 L 565.37 143.03 L 566.74 143.83 L 566.78 145.40 L 564.21 144.66 L 565.03 146.08 L 563.27 146.38 L 564.32 148.83 L 562.48 148.86 L 560.20 147.65 L 559.16 145.43 L 558.67 143.58 L 557.59 142.30 L 556.16 140.72 L 555.98 139.93 L 555.50 139.74 L 555.45 139.13 L 553.91 138.19 L 553.67 136.87 L 553.90 134.97 L 554.28 134.11 L 553.82 133.67 L 553.23 133.46 L 552.45 132.55 L 551.25 132.00 L 548.64 130.97 L 547.03 129.97 L 544.49 129.15 L 542.16 127.10 L 542.72 126.89 L 541.45 125.73 L 541.40 124.79 L 539.61 124.35 L 538.76 125.55 L 537.94 124.62 L 538.00 123.65 L 538.10 123.61 L 538.72 123.36 L 536.51 122.95 L 534.25 123.94 L 534.40 125.32 L 534.06 126.11 L 534.97 127.52 L 537.58 128.92 L 538.98 131.22 L 542.07 133.46 L 544.24 133.44 L 544.92 134.05 L 544.14 134.61 L 546.63 135.61 L 548.67 136.45 L 551.05 137.90 L 551.34 138.42 L 550.82 139.41 L 549.28 138.12 L 546.86 137.66 L 545.70 139.46 L 547.70 140.49 L 547.37 141.94 L 546.21 142.10 L 544.73 144.48 L 543.57 144.70 L 543.58 143.85 L 544.15 142.36 L 544.75 141.76 L 543.67 140.16 L 542.82 138.75 L 541.67 138.41 L 540.85 137.21 L 539.06 136.71 L 537.86 135.59 L 535.80 135.41 L 533.63 134.15 L 531.09 132.35 L 529.20 130.74 L 528.34 128.00 L 526.96 127.68 L 524.70 126.76 L 523.42 127.14 L 521.81 128.43 L 520.66 128.63 L 518.14 130.20 L 512.66 129.45 L 508.62 130.35 L 508.30 132.02 L 508.45 133.63 L 505.82 135.48 L 502.26 136.07 L 502.01 137.01 L 500.30 138.54 L 499.22 140.80 L 500.31 142.39 L 498.70 143.63 L 498.10 145.44 L 496.00 145.99 L 494.03 148.13 L 490.51 148.17 L 487.86 148.12 L 486.12 149.10 L 485.06 150.15 L 483.70 149.92 L 482.67 148.98 L 481.88 147.38 L 479.29 146.95 L 478.17 147.67 L 476.71 147.28 L 475.28 147.58 L 475.70 145.41 L 475.44 143.71 L 474.20 143.45 L 473.53 142.39 L 473.75 140.58 L 474.86 139.57 L 475.06 138.44 L 475.64 136.78 L 475.58 135.60 L 475.02 134.60 L 474.90 133.66 L 475.04 131.69 L 473.90 130.48 L 477.83 128.48 L 481.23 128.98 L 484.96 128.96 L 487.92 129.44 L 490.22 129.29 L 494.71 129.38 L 496.15 127.72 L 496.68 122.18 L 493.81 119.27 L 491.76 117.86 L 487.52 116.79 L 487.24 114.77 L 490.84 114.16 L 495.50 114.88 L 494.62 111.73 L 497.25 112.92 L 503.72 110.76 L 504.56 108.48 L 506.99 107.92 L 509.21 107.37 L 510.64 106.61 L 513.08 102.52 L 516.88 101.36 L 519.19 101.44 L 519.73 100.85 L 522.05 100.70 L 522.57 101.31 L 524.45 99.94 L 523.82 98.90 L 523.69 97.32 L 522.56 95.78 L 522.48 92.94 L 522.94 92.20 L 523.74 91.36 L 526.18 91.19 L 527.16 90.42 L 529.39 89.64 L 529.30 91.07 L 528.48 91.97 L 528.81 92.75 L 530.32 93.17 L 529.64 94.22 L 528.81 93.92 L 526.81 95.91 L 527.57 97.27 L 527.61 98.34 L 530.42 98.99 L 530.39 99.98 L 533.22 99.45 L 534.78 98.69 L 537.91 99.79 L 539.23 100.68 L 541.12 99.86 L 545.46 98.58 L 548.96 97.64 L 551.73 98.11 L 551.94 98.78 L 554.62 98.82 L 555.25 97.59 L 559.08 96.69 L 558.49 94.36 L 558.59 92.27 L 559.95 90.52 L 562.57 89.57 L 564.78 91.65 L 567.01 91.59 L 567.54 89.46 L 567.86 87.82 L 566.84 88.18 L 565.08 87.19 L 564.84 85.59 L 568.35 84.82 L 571.85 84.41 L 574.86 84.87 L 577.73 84.79 L 580.89 83.25 L 577.98 81.94 L 572.94 82.16 L 568.05 83.17 L 563.53 83.76 L 561.92 82.25 L 559.23 81.33 L 559.85 78.60 L 558.50 76.09 L 559.83 74.47 L 562.35 72.73 L 568.70 69.72 L 570.55 69.13 L 570.27 67.96 L 566.40 66.65 L 561.62 67.43 L 558.93 69.37 L 559.36 71.07 L 554.95 73.30 L 549.58 75.70 L 547.56 79.61 L 549.54 81.57 L 552.19 83.11 L 549.64 86.24 L 546.75 86.89 L 545.69 91.55 L 544.12 94.16 L 540.75 93.89 L 539.17 96.09 L 535.96 96.22 L 535.07 93.59 L 532.75 90.44 L 530.64 86.51 L 528.77 84.80 L 523.29 88.02 L 519.59 88.67 L 515.74 87.25 L 514.75 84.27 L 513.87 77.86 L 516.43 76.07 L 523.76 73.74 L 529.25 70.87 L 534.33 67.00 L 541.01 61.64 L 545.66 59.55 L 553.29 56.06 L 559.39 54.85 L 563.96 54.99 L 568.19 52.69 L 573.25 52.82 L 578.24 52.26 L 586.93 54.30 L 583.35 55.04 L 586.40 56.78 L 589.26 55.81 L 593.82 57.50 L 601.43 58.16 L 611.93 61.30 L 614.06 62.62 L 614.24 64.47 L 611.16 65.93 L 606.62 66.67 L 594.22 64.56 L 592.18 64.91 L 596.71 66.94 L 597.07 71.07 L 600.65 71.92 L 602.82 72.64 L 603.18 71.29 L 601.44 70.06 L 603.27 69.05 L 609.99 70.78 L 612.33 70.10 L 610.46 68.06 L 616.93 65.34 L 619.49 65.50 L 622.09 66.47 L 623.70 64.56 L 621.39 62.91 L 622.75 61.25 L 620.71 59.52 L 628.48 60.42 L 630.06 61.97 L 626.55 62.32 L 626.57 63.86 L 628.75 64.81 L 633.04 64.21 L 633.72 62.44 L 639.53 61.11 L 649.22 58.73 L 651.31 58.87 L 648.58 60.55 L 652.02 60.84 L 654.01 59.89 L 659.22 59.82 L 663.34 58.66 L 666.51 60.34 L 669.66 58.50 L 666.75 56.89 L 668.20 55.97 L 676.40 56.81 L 680.25 57.68 L 690.31 60.85 L 692.17 59.40 L 689.35 57.93 L 689.27 57.34 L 685.92 57.07 L 686.84 55.75 L 685.35 53.59 L 685.27 52.70 L 690.39 50.18 L 692.21 47.66 L 694.28 47.11 L 701.63 47.85 L 702.21 49.39 L 699.58 51.64 L 701.31 52.53 L 702.20 54.47 L 701.57 58.27 L 704.64 59.98 L 703.44 61.83 L 698.00 65.78 L 701.18 66.19 L 702.28 65.19 L 705.34 64.48 L 706.08 63.10 L 708.48 61.78 L 706.86 60.20 L 708.16 58.36 L 705.12 58.13 L 704.45 56.59 L 706.67 53.80 L 703.06 51.54 L 708.03 49.67 L 707.39 47.69 L 708.78 47.62 L 710.23 49.17 L 709.14 51.85 L 712.11 52.35 L 710.84 50.35 L 715.49 49.26 L 721.26 49.11 L 726.39 50.69 L 723.92 48.38 L 723.64 45.42 L 728.48 44.86 L 735.16 44.98 L 741.18 44.62 L 738.92 43.17 L 742.13 41.34 L 745.32 41.27 L 750.72 39.89 L 758.06 39.52 L 758.99 38.76 L 766.28 38.50 L 768.55 39.12 L 774.79 37.65 L 779.89 37.70 L 780.66 36.50 L 783.31 35.31 L 789.87 34.17 L 794.63 35.07 L 790.85 35.76 L 797.14 36.18 L 797.89 37.55 L 800.43 36.88 L 808.55 36.91 L 814.81 38.27 L 817.04 39.31 L 816.35 40.76 L 813.28 41.58 L 805.98 43.12 L 803.89 43.94 L 807.34 44.33 L 811.44 45.03 L 813.94 44.51 L 815.36 46.29 L 816.58 45.57 L 821.02 45.13 L 829.94 45.59 L 830.61 46.89 L 842.23 47.30 L 842.38 45.18 L 848.28 45.66 L 852.71 45.65 L 857.20 47.12 L 858.48 48.89 L 856.83 50.06 L 860.32 52.24 L 864.69 53.37 L 867.37 50.46 L 871.83 51.71 L 876.56 50.96 L 881.94 51.81 L 883.98 51.03 L 888.53 51.42 L 886.52 48.84 L 890.19 47.64 L 915.28 49.44 L 917.64 51.09 L 924.91 53.21 L 936.13 52.69 L 941.66 53.15 L 943.97 54.30 L 943.64 56.33 L 947.06 57.12 L 950.78 56.55 L 955.70 56.48 L 960.95 57.02 L 966.21 56.71 L 971.05 59.19 L 974.49 58.30 L 972.25 56.52 L 973.48 55.28 L 982.34 56.06 L 988.12 55.89 L 996.11 57.22 L 0.00 58.43 Z\",\"M 636.42 135.33 L 637.83 137.30 L 639.13 137.43 L 639.98 138.18 L 637.70 138.40 L 637.21 140.56 L 636.74 141.53 L 635.72 142.18 L 635.79 143.56 L 636.67 145.61 L 639.30 146.18 L 641.23 147.58 L 645.18 148.05 L 649.52 147.32 L 649.79 146.67 L 649.27 144.71 L 649.67 141.80 L 647.51 140.86 L 648.22 138.96 L 646.38 138.80 L 646.99 136.46 L 649.61 137.14 L 652.05 136.25 L 650.03 134.58 L 649.23 132.99 L 646.99 133.70 L 646.71 135.74 L 645.84 133.94 L 645.69 133.26 L 646.37 132.10 L 645.84 131.13 L 642.62 130.18 L 641.37 127.69 L 639.83 126.99 L 639.74 126.08 L 642.44 126.35 L 642.55 124.32 L 644.91 123.87 L 647.34 124.28 L 647.84 121.57 L 647.34 119.85 L 644.56 119.99 L 642.20 119.31 L 638.99 120.53 L 636.40 121.11 L 635.13 122.76 L 632.44 123.22 L 629.68 126.08 L 632.20 128.72 L 631.93 130.59 L 634.96 133.87 L 636.42 135.33 Z\",\"M 234.31 58.03 L 232.58 59.01 L 228.84 58.17 L 226.58 58.47 L 222.78 57.22 L 225.23 56.36 L 227.17 55.16 L 230.12 55.95 L 231.78 56.44 L 232.62 56.97 L 234.31 58.03 Z\",\"M 0.00 51.34 L 1000.00 53.24 L 996.95 53.38 L 996.46 52.51 L 0.00 51.34 Z\",\"M 0.00 51.34 L 0.36 51.23 L 2.71 51.24 L 6.73 52.03 L 6.49 52.41 L 3.63 53.07 L 0.00 53.24 L 0.00 51.34 Z\",\"M 248.48 56.95 L 248.47 59.79 L 252.18 57.62 L 255.50 59.40 L 254.67 61.46 L 257.36 63.34 L 260.26 61.33 L 262.28 58.93 L 262.44 55.89 L 266.38 56.10 L 270.49 56.51 L 274.22 57.88 L 274.39 59.26 L 272.32 60.74 L 274.28 62.23 L 273.92 63.58 L 268.48 65.52 L 264.62 65.95 L 261.75 65.11 L 260.92 66.51 L 258.24 68.85 L 257.43 70.07 L 254.21 71.95 L 250.24 72.13 L 248.04 73.30 L 247.86 75.11 L 244.63 75.46 L 241.23 77.71 L 238.22 80.84 L 237.14 83.03 L 236.99 86.25 L 241.07 86.72 L 242.32 89.32 L 243.62 91.42 L 247.50 90.87 L 252.67 92.08 L 255.44 93.14 L 257.43 94.45 L 260.91 95.21 L 263.85 96.38 L 268.44 96.54 L 271.46 96.81 L 271.01 99.21 L 271.87 102.01 L 273.88 105.12 L 278.02 107.75 L 280.16 106.85 L 281.66 104.00 L 280.21 99.61 L 278.25 98.14 L 282.70 96.85 L 285.84 94.89 L 287.38 92.96 L 287.16 91.10 L 285.27 88.74 L 281.89 86.65 L 285.17 83.74 L 283.96 81.23 L 283.03 76.89 L 284.97 76.25 L 289.73 77.00 L 292.59 77.27 L 294.89 76.54 L 297.47 77.48 L 300.89 79.10 L 301.74 80.17 L 306.69 80.39 L 306.61 82.72 L 307.53 86.23 L 310.07 86.66 L 312.08 88.30 L 316.10 86.76 L 318.76 83.69 L 320.60 82.40 L 322.76 84.88 L 326.38 88.42 L 329.45 91.76 L 328.33 93.50 L 332.03 95.07 L 334.53 96.66 L 338.95 97.37 L 340.74 98.26 L 341.84 100.61 L 344.00 100.98 L 345.12 102.03 L 345.32 105.15 L 343.30 106.19 L 341.31 107.17 L 336.73 108.15 L 333.24 110.44 L 328.54 110.89 L 322.60 110.30 L 318.43 110.28 L 315.56 110.48 L 313.23 112.47 L 309.69 113.70 L 305.68 117.38 L 302.48 119.94 L 304.84 119.48 L 309.30 115.83 L 315.13 113.52 L 319.29 113.24 L 321.74 114.60 L 319.12 116.47 L 320.00 119.46 L 320.91 121.56 L 324.52 122.95 L 329.11 122.54 L 331.89 119.42 L 332.08 121.44 L 333.88 122.45 L 330.44 124.26 L 324.29 125.92 L 321.53 127.04 L 318.43 129.04 L 316.32 128.83 L 316.21 126.48 L 321.04 124.19 L 316.59 124.28 L 313.50 124.62 L 313.98 125.53 L 311.02 126.87 L 308.16 127.83 L 305.23 128.66 L 303.64 130.47 L 303.29 130.93 L 303.26 132.40 L 304.18 133.87 L 305.33 133.95 L 305.04 132.93 L 305.87 133.55 L 305.65 134.34 L 303.77 134.79 L 302.44 134.74 L 300.39 135.22 L 299.18 135.36 L 297.56 135.50 L 295.25 136.30 L 299.33 135.78 L 300.15 136.31 L 296.26 137.14 L 294.49 137.14 L 294.57 136.80 L 293.73 137.57 L 294.55 137.70 L 293.95 139.70 L 291.92 141.83 L 291.72 141.12 L 291.11 140.97 L 290.20 140.28 L 290.77 141.78 L 291.43 142.28 L 291.51 143.32 L 290.62 144.40 L 289.05 146.62 L 288.80 146.51 L 289.66 144.62 L 288.24 143.56 L 287.91 141.25 L 287.38 142.45 L 287.97 144.21 L 286.22 143.80 L 288.05 144.67 L 288.17 147.32 L 288.96 147.51 L 289.25 148.47 L 289.64 151.25 L 287.88 153.31 L 285.00 154.13 L 283.18 155.76 L 281.79 155.94 L 280.38 156.96 L 279.99 157.90 L 276.94 159.70 L 275.37 161.02 L 274.06 162.67 L 273.63 164.64 L 274.13 166.57 L 275.05 168.94 L 276.29 170.91 L 276.30 172.11 L 277.62 175.33 L 277.53 177.20 L 277.41 178.29 L 276.72 179.98 L 275.89 180.33 L 274.52 180.00 L 274.08 178.78 L 273.02 178.14 L 271.55 175.75 L 270.26 173.63 L 269.84 172.54 L 270.41 170.69 L 269.64 169.16 L 267.47 166.84 L 266.39 166.41 L 263.58 167.68 L 263.09 167.54 L 261.74 166.24 L 260.00 165.55 L 256.86 165.91 L 254.39 165.60 L 252.27 165.79 L 251.09 166.18 L 251.63 166.96 L 251.58 168.09 L 252.17 168.64 L 251.64 169.00 L 250.61 168.59 L 249.57 169.12 L 247.55 169.03 L 245.48 167.56 L 243.06 167.91 L 241.04 167.27 L 239.31 167.46 L 236.97 168.11 L 234.44 170.17 L 231.68 171.37 L 230.16 172.70 L 229.53 173.95 L 229.50 175.86 L 229.64 177.19 L 230.16 178.14 L 230.17 178.14 L 230.16 178.15 L 229.09 180.58 L 228.60 182.58 L 228.40 186.30 L 228.13 187.66 L 228.61 189.17 L 229.47 190.52 L 230.03 192.68 L 231.87 194.75 L 232.52 196.33 L 233.61 197.70 L 236.56 198.44 L 237.70 199.60 L 240.14 198.82 L 242.26 198.54 L 244.34 198.04 L 246.09 197.57 L 247.85 196.43 L 248.52 194.81 L 248.74 192.48 L 249.22 191.67 L 251.10 190.94 L 254.04 190.29 L 256.50 190.39 L 258.19 190.16 L 258.85 190.74 L 258.76 192.08 L 257.27 193.73 L 256.61 195.43 L 257.12 195.91 L 256.70 197.11 L 256.01 199.28 L 255.30 198.56 L 254.72 198.61 L 254.73 199.02 L 255.26 199.03 L 255.21 199.79 L 254.76 200.99 L 255.00 201.42 L 254.71 202.41 L 254.89 202.68 L 254.57 204.08 L 254.02 204.82 L 253.52 204.91 L 252.97 205.87 L 253.87 206.37 L 254.11 205.96 L 254.93 206.31 L 255.22 206.42 L 255.83 205.93 L 256.62 205.89 L 256.88 206.12 L 257.31 205.98 L 258.60 206.23 L 259.88 206.16 L 260.78 205.85 L 261.10 205.54 L 261.99 205.69 L 262.65 205.87 L 263.38 205.81 L 263.93 205.57 L 265.20 205.95 L 265.64 206.02 L 266.49 206.53 L 267.29 207.15 L 268.30 207.58 L 269.03 208.34 L 268.79 208.61 L 268.65 209.23 L 268.94 210.25 L 268.30 211.20 L 268.00 212.31 L 267.91 213.54 L 268.06 214.25 L 268.13 215.50 L 267.70 215.78 L 267.44 216.97 L 267.63 217.70 L 267.07 218.41 L 267.19 219.16 L 267.62 219.61 L 268.32 221.12 L 269.40 222.24 L 270.70 223.43 L 271.70 224.42 L 271.64 225.01 L 272.75 225.14 L 273.01 224.91 L 273.78 225.59 L 275.14 225.40 L 276.33 224.69 L 278.01 224.13 L 278.96 223.30 L 280.49 223.46 L 280.39 223.74 L 281.94 223.83 L 283.18 224.31 L 284.08 225.15 L 285.13 225.92 L 286.56 226.00 L 288.65 224.06 L 289.79 223.77 L 289.82 222.85 L 290.33 220.50 L 291.92 219.21 L 293.67 219.16 L 293.89 218.58 L 296.07 218.81 L 298.25 217.41 L 299.34 216.79 L 300.68 215.45 L 301.66 215.62 L 302.39 216.35 L 301.85 217.29 L 301.77 217.94 L 300.14 218.27 L 301.05 219.53 L 301.02 220.98 L 299.79 222.59 L 300.84 224.80 L 302.04 224.62 L 302.66 222.61 L 301.80 221.63 L 301.66 219.53 L 305.12 218.40 L 304.74 217.09 L 305.71 216.22 L 306.71 218.17 L 308.66 218.21 L 310.46 219.76 L 310.57 220.68 L 313.06 220.71 L 316.03 220.42 L 317.62 221.66 L 319.75 222.01 L 321.30 221.14 L 321.34 220.44 L 324.78 220.28 L 328.11 220.23 L 325.75 221.06 L 326.70 222.37 L 328.92 222.57 L 331.02 223.94 L 331.47 226.17 L 332.91 226.11 L 334.00 226.76 L 335.83 227.78 L 337.54 229.59 L 337.62 231.02 L 338.67 231.08 L 340.16 232.44 L 341.25 233.41 L 344.58 233.97 L 344.88 233.46 L 347.13 233.26 L 350.11 234.01 L 351.06 234.31 L 353.10 234.97 L 356.04 237.32 L 356.50 238.46 L 357.45 238.32 L 358.14 239.86 L 359.69 244.72 L 361.18 245.17 L 361.25 247.09 L 359.17 249.38 L 360.03 250.22 L 364.94 250.65 L 365.04 253.44 L 367.15 251.62 L 370.64 252.61 L 375.26 254.31 L 376.61 255.94 L 376.16 257.47 L 379.39 256.62 L 384.79 258.09 L 388.94 257.98 L 393.05 260.28 L 396.60 263.39 L 398.74 264.19 L 401.11 264.31 L 402.12 265.18 L 403.06 268.72 L 403.52 270.40 L 402.42 274.99 L 401.00 276.80 L 397.09 280.67 L 395.32 283.81 L 393.26 286.22 L 392.57 286.27 L 391.79 288.32 L 391.99 293.52 L 391.22 297.80 L 390.92 299.63 L 390.04 300.73 L 389.55 304.44 L 386.73 308.07 L 386.26 310.94 L 384.01 312.14 L 383.36 313.81 L 380.34 313.80 L 375.97 314.87 L 374.02 316.10 L 370.91 316.92 L 367.64 319.13 L 365.29 321.88 L 364.88 323.95 L 365.34 325.49 L 364.83 328.29 L 364.20 329.65 L 362.25 331.18 L 359.17 336.07 L 356.73 338.27 L 354.84 339.57 L 353.57 342.21 L 351.74 343.80 L 350.53 345.55 L 347.40 347.09 L 345.35 346.54 L 343.84 346.83 L 341.28 345.64 L 339.39 345.73 L 337.70 344.19 L 337.51 345.64 L 341.04 348.02 L 340.66 349.94 L 342.39 351.15 L 342.25 352.51 L 339.58 356.07 L 335.46 357.56 L 329.89 358.13 L 326.84 357.86 L 327.43 359.51 L 326.86 361.59 L 327.37 362.99 L 325.70 363.97 L 322.86 364.35 L 320.19 363.34 L 319.11 364.07 L 319.50 366.83 L 321.38 367.66 L 322.90 366.79 L 323.72 368.23 L 321.17 369.09 L 318.94 370.82 L 318.53 373.62 L 317.87 375.10 L 315.25 375.11 L 313.07 376.53 L 312.27 378.61 L 315.01 380.65 L 317.66 381.21 L 316.70 383.71 L 313.42 385.27 L 311.62 388.52 L 309.08 389.63 L 307.95 390.92 L 308.84 393.81 L 310.69 395.42 L 309.52 395.28 L 307.05 395.26 L 305.71 395.94 L 303.21 396.94 L 302.76 399.54 L 301.58 399.60 L 298.45 398.70 L 295.27 396.76 L 291.81 395.17 L 290.94 393.41 L 291.73 391.79 L 290.33 389.94 L 289.97 385.21 L 291.16 382.54 L 294.09 380.39 L 289.87 379.58 L 292.52 377.12 L 293.46 372.51 L 296.55 373.48 L 298.00 367.73 L 296.14 366.99 L 295.27 370.46 L 293.52 370.07 L 294.39 366.10 L 295.34 360.95 L 296.61 359.05 L 295.82 356.34 L 295.59 353.21 L 296.76 353.12 L 298.46 348.64 L 300.38 344.19 L 301.56 340.05 L 300.92 335.89 L 301.75 333.60 L 301.41 330.17 L 303.04 326.78 L 303.54 321.41 L 304.43 315.64 L 305.30 309.43 L 305.10 304.88 L 304.52 300.97 L 301.73 299.37 L 301.49 298.23 L 295.98 295.44 L 291.00 292.41 L 288.86 290.69 L 287.71 288.40 L 288.17 287.60 L 285.81 283.95 L 283.07 278.83 L 280.45 273.29 L 279.31 272.03 L 278.44 269.98 L 276.28 268.17 L 274.30 267.05 L 275.20 265.81 L 273.86 263.16 L 274.72 261.21 L 276.93 259.46 L 278.41 257.38 L 277.81 256.17 L 276.75 257.46 L 275.09 256.24 L 275.65 255.46 L 275.18 252.94 L 276.15 252.52 L 276.67 250.79 L 277.72 249.00 L 277.52 247.86 L 279.05 247.27 L 280.95 246.16 L 280.58 245.30 L 281.61 245.09 L 281.49 243.70 L 282.14 242.70 L 283.52 242.51 L 284.69 240.76 L 285.75 239.31 L 284.73 238.64 L 285.25 237.03 L 284.63 234.49 L 285.22 233.76 L 284.78 231.41 L 283.66 229.93 L 282.73 229.13 L 282.14 227.63 L 282.82 226.89 L 282.12 226.70 L 281.60 225.79 L 280.22 225.01 L 279.00 225.19 L 278.44 226.15 L 277.32 226.85 L 276.71 226.95 L 276.44 227.52 L 277.76 229.03 L 277.01 229.39 L 276.61 229.80 L 275.31 229.94 L 274.83 228.28 L 274.47 228.76 L 273.55 228.59 L 272.99 227.47 L 271.85 227.29 L 271.13 226.97 L 269.94 226.97 L 269.86 227.57 L 269.54 227.15 L 268.03 226.54 L 267.47 225.95 L 267.79 225.47 L 267.68 224.86 L 266.91 224.19 L 265.82 223.65 L 264.87 223.29 L 264.68 222.48 L 263.95 221.98 L 264.13 222.79 L 263.58 223.45 L 262.94 222.68 L 262.05 222.41 L 261.67 221.85 L 261.69 221.00 L 262.05 220.12 L 261.27 219.73 L 261.91 219.20 L 260.95 218.32 L 259.65 217.21 L 259.04 216.26 L 257.87 215.39 L 256.47 214.14 L 256.78 213.71 L 257.24 214.13 L 257.45 213.93 L 256.97 213.06 L 256.13 212.82 L 255.82 213.48 L 254.21 213.43 L 253.21 213.17 L 252.06 212.62 L 250.52 212.44 L 249.73 211.85 L 248.31 211.36 L 246.57 211.31 L 245.30 210.76 L 243.81 209.61 L 240.67 206.62 L 239.23 205.72 L 236.97 205.00 L 235.41 205.20 L 233.18 206.25 L 231.78 206.52 L 229.82 205.79 L 227.74 205.26 L 225.14 203.98 L 223.06 203.59 L 219.92 202.30 L 217.59 200.98 L 216.89 200.23 L 215.34 200.07 L 212.50 199.19 L 211.34 197.92 L 208.35 196.34 L 206.96 194.59 L 206.30 193.24 L 207.23 192.97 L 206.94 192.17 L 207.58 191.45 L 207.59 190.50 L 206.66 189.24 L 206.41 188.14 L 205.47 186.74 L 203.03 183.98 L 200.23 181.81 L 198.88 180.08 L 196.50 178.94 L 195.99 178.26 L 196.41 176.55 L 194.99 175.90 L 193.35 174.55 L 192.66 172.61 L 191.17 172.39 L 189.55 170.92 L 188.25 169.57 L 188.13 168.70 L 186.64 166.61 L 185.65 164.48 L 185.70 163.41 L 183.69 162.31 L 182.76 162.43 L 181.17 161.67 L 180.73 162.79 L 181.19 164.13 L 181.46 166.22 L 182.41 167.36 L 184.47 169.27 L 184.93 169.93 L 185.35 170.12 L 185.72 171.08 L 186.21 171.04 L 186.77 172.83 L 187.62 173.54 L 188.21 174.52 L 189.95 175.93 L 190.87 178.52 L 191.70 179.74 L 192.47 181.04 L 192.62 182.50 L 193.96 182.60 L 195.08 183.86 L 196.08 185.10 L 196.02 185.60 L 194.85 186.62 L 194.36 186.60 L 193.62 184.91 L 191.80 183.33 L 189.80 181.99 L 188.38 181.28 L 188.47 179.25 L 188.05 177.74 L 186.73 176.88 L 184.82 175.64 L 184.45 176.00 L 183.75 175.28 L 182.04 174.60 L 180.40 172.99 L 180.60 172.78 L 181.75 172.94 L 182.78 171.90 L 182.88 170.65 L 180.74 168.67 L 179.11 167.90 L 178.09 166.17 L 177.06 164.34 L 175.77 162.12 L 174.64 159.63 L 174.18 158.21 L 172.38 156.61 L 171.08 156.27 L 170.78 155.48 L 169.22 155.34 L 168.22 154.59 L 165.64 154.31 L 164.94 153.87 L 164.60 152.34 L 161.90 149.55 L 159.59 145.69 L 159.69 145.05 L 158.46 144.13 L 156.31 141.80 L 155.93 139.54 L 154.45 138.02 L 155.06 135.72 L 154.96 133.33 L 154.07 131.20 L 155.16 128.59 L 155.83 123.55 L 155.33 119.82 L 154.45 117.44 L 153.65 116.15 L 153.98 115.61 L 158.00 116.55 L 159.48 119.18 L 160.16 118.44 L 159.72 116.16 L 158.78 113.89 L 158.40 113.88 L 153.03 111.15 L 151.04 109.95 L 146.01 108.80 L 144.46 106.34 L 144.86 104.64 L 141.30 103.46 L 140.82 101.22 L 137.46 99.20 L 137.40 97.77 L 135.87 96.72 L 133.42 95.84 L 132.64 93.42 L 129.06 91.17 L 127.56 88.55 L 124.89 88.37 L 120.48 88.30 L 117.22 87.50 L 111.48 84.62 L 108.82 84.09 L 103.96 83.10 L 100.11 83.33 L 94.65 82.06 L 91.35 80.87 L 88.26 81.46 L 88.84 83.39 L 87.30 83.57 L 84.09 84.15 L 81.64 85.09 L 78.57 85.68 L 78.17 84.04 L 79.42 81.32 L 82.37 80.46 L 81.61 79.76 L 78.07 81.31 L 76.17 83.16 L 72.17 85.14 L 74.20 86.49 L 71.58 88.48 L 68.59 89.64 L 65.81 90.49 L 65.12 91.72 L 60.78 93.15 L 59.91 94.46 L 56.66 95.65 L 54.75 95.43 L 52.16 96.21 L 49.34 97.16 L 47.03 98.08 L 42.26 98.88 L 41.83 98.41 L 44.87 97.11 L 47.58 96.26 L 50.54 94.73 L 53.99 94.42 L 55.36 93.28 L 59.21 91.62 L 59.83 91.06 L 61.88 90.08 L 62.36 87.98 L 63.77 86.34 L 60.57 87.18 L 59.67 86.70 L 58.17 87.71 L 56.36 86.30 L 55.61 87.30 L 54.57 85.91 L 51.79 87.02 L 50.09 87.02 L 49.85 85.37 L 50.35 84.35 L 48.56 83.36 L 44.95 83.89 L 42.60 82.59 L 40.70 81.92 L 40.69 80.35 L 38.55 79.17 L 39.63 77.57 L 41.89 76.02 L 42.88 74.59 L 45.13 74.39 L 47.04 74.83 L 49.28 73.49 L 51.29 73.73 L 53.41 72.87 L 52.89 71.60 L 51.34 71.10 L 53.39 70.03 L 51.69 70.07 L 48.74 70.67 L 47.89 71.28 L 45.70 70.67 L 41.78 70.98 L 37.71 70.31 L 36.54 69.20 L 33.03 67.58 L 36.93 66.42 L 43.13 65.06 L 45.41 65.06 L 45.03 66.45 L 50.89 66.35 L 48.64 64.63 L 45.22 63.56 L 43.25 62.18 L 40.58 60.99 L 36.77 60.11 L 38.32 58.66 L 43.25 58.57 L 46.75 57.30 L 47.41 55.95 L 50.25 54.63 L 52.96 54.31 L 58.22 53.08 L 60.78 53.27 L 65.05 51.79 L 69.26 52.37 L 71.27 53.62 L 72.50 53.08 L 77.19 53.25 L 77.03 53.89 L 81.28 54.36 L 84.11 54.08 L 89.96 54.96 L 95.30 55.22 L 97.44 55.58 L 101.14 55.13 L 105.35 55.97 L 108.37 56.36 L 113.55 57.02 L 117.93 58.36 L 120.82 58.62 L 123.26 57.46 L 126.62 56.59 L 130.75 56.93 L 134.91 55.71 L 139.46 55.02 L 141.37 56.17 L 143.44 55.52 L 144.06 54.21 L 145.98 54.51 L 150.68 57.00 L 154.37 55.11 L 154.75 57.22 L 158.16 56.77 L 159.21 55.96 L 162.58 56.12 L 166.82 57.28 L 173.32 58.30 L 177.15 58.77 L 179.87 58.59 L 183.62 60.00 L 179.71 61.38 L 184.73 61.98 L 192.23 61.65 L 194.59 61.17 L 197.55 62.83 L 200.57 61.42 L 197.74 60.24 L 199.53 59.29 L 202.91 59.17 L 205.14 58.89 L 207.38 59.55 L 210.17 61.06 L 213.27 60.84 L 218.18 62.09 L 222.49 61.65 L 226.54 61.72 L 226.22 59.99 L 228.69 59.51 L 233.00 60.45 L 232.98 63.07 L 234.75 60.86 L 236.98 60.93 L 238.24 58.14 L 235.26 56.43 L 232.02 55.31 L 232.24 52.24 L 235.53 50.22 L 239.19 50.67 L 242.00 51.89 L 245.78 55.03 L 243.31 56.39 L 248.48 56.95 Z\",\"M 182.87 46.89 L 181.48 48.19 L 187.66 47.35 L 191.52 48.75 L 194.66 47.33 L 197.20 48.24 L 199.47 50.97 L 200.87 49.82 L 198.90 46.97 L 201.34 46.57 L 204.10 47.01 L 207.21 48.13 L 208.96 50.84 L 209.82 52.80 L 214.48 54.17 L 219.50 55.49 L 219.19 56.71 L 214.63 56.93 L 216.41 58.00 L 215.47 59.02 L 210.44 58.58 L 205.66 57.83 L 202.44 58.00 L 197.22 58.95 L 188.98 59.43 L 185.24 59.62 L 183.73 58.31 L 179.94 57.55 L 177.48 57.86 L 174.05 55.66 L 175.90 55.37 L 180.19 54.90 L 184.11 55.02 L 187.73 54.54 L 182.36 53.89 L 176.42 54.11 L 172.48 54.05 L 171.02 53.03 L 177.46 51.92 L 173.18 51.96 L 168.33 51.23 L 170.66 49.14 L 172.59 48.04 L 180.03 46.35 L 182.87 46.89 Z\",\"M 209.72 46.05 L 207.28 47.89 L 202.94 45.95 L 203.89 45.56 L 207.61 45.44 L 209.72 46.05 Z\",\"M 287.94 46.94 L 288.19 47.70 L 285.23 47.62 L 282.24 47.56 L 279.20 47.94 L 278.40 47.77 L 275.34 46.30 L 275.46 45.30 L 276.79 45.11 L 283.15 45.41 L 287.94 46.94 Z\",\"M 259.55 46.78 L 261.74 48.52 L 264.30 46.28 L 271.34 45.14 L 276.11 48.01 L 275.69 49.83 L 281.19 49.02 L 283.82 47.92 L 289.98 49.32 L 293.81 50.65 L 294.17 51.86 L 299.32 51.23 L 302.22 53.00 L 308.92 54.10 L 311.34 55.22 L 313.97 57.82 L 308.87 59.11 L 315.41 60.93 L 319.82 61.54 L 323.82 64.09 L 328.19 64.27 L 327.32 66.22 L 322.45 69.45 L 319.03 68.26 L 314.66 65.59 L 311.07 65.94 L 310.72 67.53 L 313.64 69.14 L 317.41 70.42 L 318.55 71.16 L 320.36 73.91 L 319.40 75.90 L 315.90 75.15 L 308.93 72.93 L 312.86 75.32 L 315.75 77.00 L 316.20 77.97 L 308.67 76.86 L 302.71 75.25 L 299.34 73.90 L 300.31 73.11 L 296.17 71.68 L 292.12 70.34 L 292.17 71.14 L 284.14 71.58 L 281.79 70.63 L 283.62 68.58 L 288.84 68.54 L 294.55 68.18 L 293.63 67.19 L 294.59 65.81 L 298.19 63.10 L 297.42 61.87 L 296.35 60.92 L 292.10 59.57 L 286.47 58.63 L 288.25 57.92 L 285.31 56.20 L 282.86 56.04 L 280.67 55.09 L 279.18 55.91 L 274.15 56.27 L 264.04 55.65 L 258.16 54.83 L 253.66 54.41 L 251.35 53.44 L 254.25 52.17 L 250.31 52.16 L 249.43 49.35 L 251.56 46.86 L 254.42 45.73 L 261.59 44.99 L 259.55 46.78 Z\",\"M 221.23 44.88 L 224.54 45.46 L 229.50 45.11 L 230.22 45.92 L 227.63 47.25 L 231.83 48.44 L 231.33 50.94 L 226.78 52.02 L 224.10 51.79 L 222.18 50.73 L 215.28 48.58 L 215.33 47.70 L 221.00 48.04 L 217.94 46.22 L 221.23 44.88 Z\",\"M 898.90 46.63 L 894.69 46.65 L 889.00 46.34 L 888.51 46.20 L 891.14 45.10 L 894.62 44.84 L 898.56 45.90 L 898.90 46.63 Z\",\"M 241.12 47.86 L 238.14 49.93 L 234.97 49.83 L 233.24 47.39 L 233.28 46.01 L 234.73 44.83 L 237.49 44.07 L 243.28 44.16 L 248.58 44.84 L 244.43 47.31 L 241.12 47.86 Z\",\"M 165.39 51.67 L 158.08 53.05 L 156.61 51.83 L 150.20 50.37 L 151.13 49.46 L 153.31 47.16 L 155.72 45.34 L 153.00 43.63 L 162.39 43.20 L 166.36 43.77 L 173.45 43.93 L 176.15 44.73 L 179.13 45.90 L 175.64 46.60 L 168.83 48.56 L 165.39 50.50 L 165.39 51.67 Z\",\"M 918.70 41.43 L 915.49 42.53 L 911.05 42.28 L 905.89 41.19 L 906.55 40.29 L 911.73 40.70 L 918.70 41.43 Z\",\"M 239.96 41.72 L 238.45 42.80 L 234.42 42.59 L 231.05 41.87 L 232.53 40.61 L 236.52 39.87 L 238.95 40.85 L 239.96 41.72 Z\",\"M 903.02 40.10 L 900.83 42.17 L 890.60 42.09 L 885.99 42.74 L 880.49 40.94 L 881.98 39.03 L 885.64 38.51 L 892.98 38.63 L 903.02 40.10 Z\",\"M 226.39 36.89 L 228.51 38.17 L 228.60 39.60 L 227.33 41.67 L 222.75 41.95 L 219.77 41.51 L 219.82 39.89 L 215.27 40.10 L 215.09 37.95 L 218.08 38.04 L 222.27 37.09 L 226.17 37.25 L 226.39 36.89 Z\",\"M 199.41 38.33 L 200.50 39.32 L 202.97 38.85 L 205.88 38.97 L 206.37 40.33 L 204.68 41.65 L 195.28 42.08 L 188.27 43.29 L 184.04 43.35 L 183.69 42.44 L 189.46 41.22 L 176.91 41.55 L 173.02 41.05 L 176.81 38.33 L 179.43 37.56 L 187.25 38.49 L 192.18 40.14 L 197.03 40.35 L 193.06 37.70 L 195.61 36.68 L 198.47 37.00 L 199.41 38.33 Z\",\"M 659.82 53.55 L 658.18 53.80 L 649.11 53.44 L 648.37 52.20 L 643.34 51.46 L 642.94 49.96 L 645.78 49.36 L 645.68 47.85 L 651.19 45.48 L 648.64 45.14 L 655.29 42.70 L 654.54 41.44 L 660.75 39.98 L 669.92 38.19 L 679.17 37.67 L 683.92 36.64 L 689.33 36.28 L 691.26 37.38 L 689.39 38.24 L 679.55 39.62 L 671.07 40.94 L 662.44 43.59 L 658.30 46.30 L 653.95 48.97 L 654.51 51.28 L 659.82 53.55 Z\",\"M 236.99 35.84 L 240.07 36.73 L 245.54 36.73 L 247.94 37.64 L 247.30 38.68 L 250.49 39.31 L 252.26 39.97 L 256.00 40.09 L 260.06 40.33 L 264.47 39.73 L 270.13 39.49 L 274.64 39.68 L 277.62 40.73 L 278.24 41.88 L 276.50 42.62 L 272.36 43.21 L 268.81 42.88 L 260.84 43.30 L 255.14 43.36 L 250.65 43.01 L 243.27 42.12 L 242.31 40.59 L 241.97 39.21 L 239.18 38.00 L 233.44 37.66 L 230.22 36.80 L 231.26 35.66 L 236.99 35.84 Z\",\"M 177.22 34.32 L 176.84 36.45 L 174.70 37.42 L 172.11 37.55 L 166.94 38.74 L 162.50 39.17 L 158.73 38.56 L 163.45 36.49 L 169.15 34.69 L 173.41 34.73 L 177.22 34.32 Z\",\"M 239.33 34.67 L 238.07 34.75 L 232.86 34.57 L 232.12 33.79 L 237.71 33.84 L 239.66 34.35 L 239.33 34.67 Z\",\"M 193.92 34.17 L 188.74 34.97 L 184.63 34.07 L 186.87 33.19 L 190.93 32.91 L 194.85 33.34 L 193.92 34.17 Z\",\"M 568.68 33.74 L 562.48 34.87 L 557.58 34.23 L 559.49 33.52 L 557.82 32.63 L 563.57 32.07 L 564.67 33.11 L 568.68 33.74 Z\",\"M 195.38 31.66 L 191.99 32.20 L 187.38 32.20 L 187.43 31.80 L 190.28 30.97 L 191.77 31.10 L 195.38 31.66 Z\",\"M 233.80 33.18 L 229.69 33.75 L 227.43 33.10 L 226.24 32.06 L 226.02 30.91 L 229.62 31.02 L 231.24 31.21 L 234.56 32.17 L 233.80 33.18 Z\",\"M 222.05 32.43 L 223.13 33.59 L 218.60 33.28 L 214.03 32.38 L 207.84 32.28 L 210.52 31.45 L 207.17 30.78 L 206.96 29.72 L 212.42 30.10 L 219.93 31.11 L 222.05 32.43 Z\",\"M 791.88 32.48 L 776.22 33.55 L 781.29 29.90 L 783.58 29.59 L 785.66 29.77 L 792.70 31.35 L 791.88 32.48 Z\",\"M 550.70 28.61 L 559.85 30.68 L 552.86 31.77 L 551.31 33.82 L 548.88 34.34 L 547.56 36.64 L 544.21 36.75 L 538.23 35.05 L 540.75 34.07 L 536.59 33.27 L 531.18 30.92 L 529.02 28.74 L 536.59 27.75 L 538.11 28.72 L 542.07 28.68 L 543.12 27.73 L 547.20 27.64 L 550.70 28.61 Z\",\"M 570.69 26.65 L 576.14 27.62 L 572.02 29.11 L 563.96 29.44 L 555.77 28.98 L 555.27 28.22 L 551.29 28.17 L 548.25 26.89 L 556.83 26.12 L 560.86 26.78 L 563.67 25.95 L 570.69 26.65 Z\",\"M 642.05 26.26 L 638.32 26.62 L 635.82 26.83 L 635.43 27.29 L 632.19 27.75 L 629.18 27.09 L 630.76 26.22 L 624.58 26.14 L 630.00 25.64 L 634.22 25.60 L 634.79 26.35 L 636.38 25.68 L 639.00 25.23 L 643.12 25.83 L 642.05 26.26 Z\",\"M 777.61 30.89 L 771.55 31.23 L 763.82 30.43 L 759.20 29.37 L 757.07 27.38 L 753.28 26.83 L 760.50 24.93 L 766.50 24.31 L 771.90 25.70 L 778.30 28.39 L 777.61 30.89 Z\",\"M 258.28 28.72 L 261.62 29.62 L 257.81 30.45 L 252.68 32.54 L 247.76 32.73 L 242.01 32.38 L 239.02 31.25 L 239.06 30.24 L 241.26 29.50 L 236.18 29.52 L 233.12 28.60 L 231.36 27.34 L 233.29 26.11 L 235.21 25.26 L 238.06 25.06 L 236.84 24.43 L 243.30 24.29 L 246.85 25.77 L 251.53 26.36 L 256.08 26.89 L 258.28 28.72 Z\",\"M 309.72 19.15 L 317.14 19.37 L 323.11 19.72 L 328.19 20.48 L 328.07 21.22 L 321.29 22.42 L 314.57 22.98 L 312.06 23.61 L 318.11 23.60 L 311.55 25.28 L 307.03 26.06 L 302.27 28.33 L 296.54 28.80 L 294.77 29.36 L 286.36 29.66 L 290.19 30.01 L 288.27 30.50 L 290.57 31.87 L 287.93 32.82 L 283.64 33.61 L 282.32 34.70 L 278.44 35.53 L 278.83 36.16 L 283.58 36.05 L 283.64 36.73 L 276.22 38.40 L 268.96 37.63 L 260.80 38.06 L 256.66 37.72 L 251.41 37.58 L 251.06 36.24 L 256.20 35.62 L 254.83 33.61 L 256.53 33.42 L 263.95 34.62 L 260.16 32.83 L 255.66 32.30 L 257.91 31.23 L 262.83 30.56 L 263.62 29.59 L 259.70 28.51 L 258.52 27.08 L 266.11 27.20 L 268.31 27.50 L 272.64 26.49 L 266.39 26.17 L 256.67 26.35 L 251.76 25.40 L 249.44 24.28 L 246.20 23.46 L 245.59 22.51 L 249.72 21.99 L 252.96 21.90 L 258.41 21.45 L 262.50 20.41 L 265.94 20.55 L 268.94 21.33 L 271.05 19.83 L 274.72 19.39 L 279.70 19.08 L 288.19 18.97 L 289.67 19.27 L 297.69 18.79 L 303.70 18.97 L 309.72 19.15 Z\",\"M 424.72 18.00 L 442.09 20.21 L 436.96 21.27 L 426.34 21.39 L 411.38 21.67 L 412.78 22.16 L 422.62 21.86 L 430.98 22.81 L 436.38 21.96 L 438.69 22.96 L 435.64 24.58 L 442.71 23.54 L 456.19 22.47 L 464.52 23.00 L 466.08 24.19 L 454.76 26.17 L 453.19 26.81 L 444.31 27.29 L 450.74 27.42 L 447.50 29.44 L 445.26 31.24 L 445.35 34.34 L 448.68 36.15 L 444.34 36.27 L 439.77 37.15 L 444.90 38.62 L 445.55 40.98 L 442.58 41.24 L 446.18 43.62 L 440.01 43.82 L 443.23 44.95 L 442.32 45.93 L 438.41 46.36 L 434.53 46.37 L 438.01 48.25 L 438.05 49.49 L 432.56 48.34 L 431.13 49.08 L 434.88 49.78 L 438.52 51.48 L 439.57 53.71 L 434.62 54.25 L 432.48 53.18 L 429.04 51.58 L 429.99 53.46 L 426.77 54.93 L 434.09 55.04 L 437.92 55.19 L 430.47 57.62 L 422.92 59.81 L 414.79 60.77 L 411.73 60.78 L 408.85 61.85 L 404.99 64.78 L 399.02 66.73 L 397.10 66.84 L 393.40 67.52 L 389.41 68.17 L 387.03 69.89 L 386.99 71.84 L 385.58 73.66 L 381.05 75.88 L 382.17 78.05 L 380.92 80.35 L 379.50 83.06 L 375.59 83.23 L 371.49 80.96 L 365.93 80.95 L 363.24 79.43 L 361.38 76.71 L 356.57 73.26 L 355.16 71.45 L 354.78 68.96 L 350.94 66.39 L 351.94 64.34 L 350.08 63.37 L 352.83 60.12 L 357.01 59.08 L 358.11 57.92 L 358.69 55.75 L 355.51 56.74 L 354.00 57.15 L 351.51 57.55 L 348.10 56.64 L 347.91 54.75 L 349.00 53.28 L 351.58 53.23 L 357.25 53.97 L 352.47 52.21 L 349.98 51.26 L 347.22 51.65 L 344.90 50.96 L 348.00 48.37 L 346.31 47.34 L 344.11 45.42 L 340.76 42.47 L 337.23 41.39 L 337.26 40.23 L 329.81 38.60 L 323.91 38.40 L 316.48 38.51 L 309.71 38.72 L 306.48 37.84 L 301.66 36.09 L 308.95 35.21 L 314.54 35.07 L 302.66 34.34 L 296.39 33.21 L 296.78 32.13 L 307.29 30.79 L 317.47 29.46 L 318.54 28.45 L 311.04 27.45 L 313.47 26.35 L 323.08 24.40 L 327.12 24.11 L 325.97 22.86 L 332.55 22.13 L 341.09 21.69 L 349.62 21.67 L 352.65 22.53 L 360.02 21.00 L 366.65 22.04 L 370.55 22.26 L 376.32 23.16 L 369.72 21.67 L 370.10 20.48 L 379.42 18.82 L 389.17 18.95 L 392.71 17.92 L 402.53 17.65 L 424.72 18.00 Z\"];\n\nexport const worldMapRegions: WorldMapRegion[] = [\n {\n \"id\": \"north-america\",\n \"label\": \"North America\",\n \"paths\": [\n \"M 158.78 113.89 L 158.40 113.88 L 153.03 111.15 L 151.04 109.95 L 146.01 108.81 L 144.46 106.35 L 144.86 104.64 L 141.30 103.46 L 140.82 101.22 L 137.46 99.20 L 137.40 97.77 L 138.94 96.43 L 138.87 94.68 L 134.14 92.91 L 131.30 89.74 L 129.57 87.75 L 127.02 86.50 L 125.15 85.36 L 123.68 83.92 L 120.89 84.82 L 118.19 86.37 L 115.72 84.55 L 113.78 83.33 L 111.07 82.56 L 108.34 82.48 L 108.35 66.67 L 108.37 56.36 L 113.55 57.02 L 117.93 58.36 L 120.82 58.62 L 123.26 57.46 L 126.62 56.59 L 130.75 56.93 L 134.91 55.71 L 139.46 55.02 L 141.37 56.17 L 143.44 55.52 L 144.06 54.21 L 145.98 54.51 L 150.68 57.00 L 154.37 55.11 L 154.75 57.23 L 158.16 56.77 L 159.21 55.96 L 162.58 56.12 L 166.82 57.28 L 173.32 58.30 L 177.15 58.77 L 179.87 58.59 L 183.61 60.00 L 179.71 61.38 L 184.73 61.98 L 192.23 61.65 L 194.59 61.17 L 197.55 62.83 L 200.57 61.42 L 197.74 60.24 L 199.53 59.29 L 202.91 59.17 L 205.14 58.89 L 207.38 59.55 L 210.17 61.06 L 213.27 60.84 L 218.18 62.09 L 222.49 61.65 L 226.54 61.72 L 226.22 59.99 L 228.69 59.51 L 233.00 60.45 L 232.98 63.07 L 234.75 60.86 L 236.98 60.93 L 238.24 58.14 L 235.26 56.43 L 232.02 55.31 L 232.24 52.24 L 235.53 50.22 L 239.19 50.67 L 242.00 51.89 L 245.78 55.03 L 243.31 56.39 L 248.48 56.95 L 248.47 59.79 L 252.18 57.62 L 255.50 59.40 L 254.67 61.46 L 257.36 63.34 L 260.26 61.33 L 262.28 58.93 L 262.44 55.88 L 266.38 56.10 L 270.49 56.51 L 274.22 57.88 L 274.39 59.26 L 272.32 60.74 L 274.28 62.23 L 273.92 63.58 L 268.48 65.52 L 264.62 65.95 L 261.75 65.11 L 260.92 66.51 L 258.24 68.85 L 257.43 70.07 L 254.21 71.95 L 250.24 72.13 L 248.04 73.30 L 247.86 75.11 L 244.63 75.46 L 241.23 77.71 L 238.22 80.84 L 237.14 83.03 L 236.98 86.25 L 241.07 86.72 L 242.32 89.32 L 243.62 91.42 L 247.50 90.87 L 252.67 92.08 L 255.44 93.14 L 257.43 94.45 L 260.91 95.21 L 263.85 96.38 L 268.44 96.54 L 271.46 96.81 L 271.01 99.21 L 271.87 102.01 L 273.88 105.12 L 278.02 107.75 L 280.16 106.85 L 281.66 104.00 L 280.21 99.61 L 278.25 98.14 L 282.70 96.85 L 285.84 94.89 L 287.38 92.96 L 287.15 91.10 L 285.27 88.74 L 281.89 86.65 L 285.17 83.74 L 283.96 81.23 L 283.03 76.89 L 284.97 76.25 L 289.73 77.00 L 292.59 77.27 L 294.89 76.54 L 297.47 77.48 L 300.89 79.10 L 301.74 80.17 L 306.69 80.39 L 306.61 82.72 L 307.53 86.23 L 310.07 86.66 L 312.08 88.30 L 316.10 86.76 L 318.76 83.69 L 320.60 82.40 L 322.76 84.88 L 326.38 88.42 L 329.45 91.76 L 328.33 93.50 L 332.03 95.07 L 334.53 96.66 L 338.95 97.37 L 340.74 98.26 L 341.84 100.61 L 344.00 100.98 L 345.12 102.03 L 345.32 105.15 L 343.30 106.19 L 341.31 107.17 L 336.73 108.15 L 333.24 110.44 L 328.54 110.89 L 322.60 110.30 L 318.43 110.28 L 315.56 110.48 L 313.23 112.47 L 309.69 113.70 L 305.68 117.38 L 302.48 119.94 L 304.84 119.48 L 309.30 115.83 L 315.13 113.52 L 319.28 113.24 L 321.74 114.60 L 319.12 116.47 L 320.00 119.46 L 320.91 121.56 L 324.52 122.95 L 329.11 122.54 L 331.89 119.42 L 332.08 121.44 L 333.88 122.45 L 330.44 124.26 L 324.29 125.92 L 321.53 127.04 L 318.43 129.04 L 316.32 128.83 L 316.21 126.48 L 321.04 124.19 L 316.59 124.28 L 313.50 124.62 L 311.69 123.05 L 311.69 119.26 L 310.46 118.46 L 308.59 118.93 L 307.67 118.20 L 305.55 120.30 L 304.71 122.46 L 303.72 123.72 L 302.54 124.15 L 301.65 124.29 L 301.37 124.98 L 296.25 124.98 L 292.03 125.00 L 290.78 125.51 L 287.84 127.51 L 287.50 127.73 L 286.61 128.81 L 284.06 128.81 L 281.33 128.82 L 280.08 129.26 L 280.52 129.80 L 280.77 130.65 L 280.72 130.94 L 277.09 132.31 L 274.23 132.75 L 271.00 134.24 L 270.30 134.24 L 269.36 133.80 L 269.05 133.40 L 269.11 133.11 L 269.72 132.14 L 271.03 130.61 L 271.84 128.97 L 271.28 126.55 L 270.69 124.03 L 267.79 122.73 L 268.14 122.24 L 267.73 121.90 L 266.97 121.90 L 266.41 121.46 L 266.27 120.80 L 265.73 121.09 L 264.98 121.00 L 265.15 120.72 L 264.50 120.45 L 264.23 119.72 L 262.07 118.83 L 259.83 117.91 L 257.11 116.83 L 254.50 115.83 L 252.02 116.61 L 251.11 116.64 L 247.69 115.91 L 245.44 116.28 L 242.75 115.42 L 239.91 114.97 L 237.97 114.81 L 237.11 114.34 L 236.62 112.81 L 235.68 112.82 L 235.67 113.89 L 229.92 113.89 L 220.41 113.89 L 210.97 113.89 L 202.64 113.89 L 194.30 113.89 L 186.11 113.89 L 177.64 113.89 L 174.91 113.89 L 166.67 113.89 L 158.78 113.89 Z\",\n \"M 266.68 76.52 L 268.75 75.24 L 272.56 75.27 L 272.50 75.80 L 269.25 77.33 L 267.29 77.27 L 266.68 76.52 Z\",\n \"M 278.40 47.77 L 275.34 46.30 L 275.46 45.30 L 276.79 45.11 L 283.15 45.41 L 287.94 46.94 L 288.19 47.70 L 285.23 47.62 L 282.24 47.56 L 279.20 47.94 L 278.40 47.77 Z\",\n \"M 276.90 77.54 L 277.97 76.71 L 279.11 76.77 L 279.81 77.34 L 278.73 78.80 L 277.50 78.56 L 276.77 77.73 L 276.90 77.54 Z\",\n \"M 239.96 41.72 L 238.45 42.80 L 234.42 42.59 L 231.05 41.87 L 232.53 40.61 L 236.52 39.87 L 238.95 40.85 L 239.96 41.72 Z\",\n \"M 239.33 34.67 L 238.07 34.75 L 232.86 34.57 L 232.12 33.79 L 237.71 33.84 L 239.66 34.35 L 239.33 34.67 Z\",\n \"M 231.24 31.21 L 234.56 32.17 L 233.80 33.18 L 229.69 33.75 L 227.43 33.10 L 226.24 32.06 L 226.02 30.91 L 229.62 31.02 L 231.24 31.21 Z\",\n \"M 255.14 43.36 L 250.65 43.01 L 243.27 42.12 L 242.31 40.59 L 241.97 39.21 L 239.18 38.00 L 233.44 37.66 L 230.22 36.80 L 231.26 35.66 L 236.99 35.84 L 240.07 36.73 L 245.54 36.73 L 247.94 37.64 L 247.30 38.68 L 250.49 39.31 L 252.26 39.97 L 256.00 40.09 L 260.06 40.33 L 264.47 39.73 L 270.13 39.49 L 274.64 39.68 L 277.62 40.73 L 278.24 41.88 L 276.50 42.62 L 272.36 43.21 L 268.81 42.88 L 260.84 43.30 L 255.14 43.36 Z\",\n \"M 190.93 32.91 L 194.85 33.34 L 193.92 34.17 L 188.74 34.97 L 184.63 34.07 L 186.87 33.19 L 190.93 32.91 Z\",\n \"M 191.77 31.10 L 195.38 31.66 L 191.99 32.20 L 187.38 32.20 L 187.43 31.80 L 190.28 30.97 L 191.77 31.10 Z\",\n \"M 345.55 107.45 L 344.07 109.20 L 342.23 111.63 L 344.04 110.70 L 345.91 111.29 L 344.93 112.26 L 347.40 113.02 L 348.68 112.34 L 351.45 113.20 L 350.59 115.23 L 352.53 114.76 L 352.89 116.23 L 353.75 117.96 L 352.58 120.40 L 351.33 120.50 L 349.50 119.98 L 350.10 117.71 L 349.33 117.35 L 346.11 119.77 L 344.45 119.67 L 346.41 118.36 L 343.74 117.69 L 340.76 117.85 L 335.37 117.77 L 334.94 116.94 L 336.67 115.97 L 335.46 115.21 L 337.80 113.54 L 340.67 109.12 L 342.39 107.54 L 344.80 106.58 L 346.09 106.70 L 345.55 107.45 Z\",\n \"M 266.99 69.14 L 270.03 70.09 L 273.21 70.96 L 273.46 72.28 L 275.50 72.06 L 277.49 72.98 L 275.02 73.86 L 270.70 73.19 L 269.14 71.94 L 266.39 73.42 L 262.43 74.86 L 261.48 73.23 L 257.71 73.50 L 260.13 72.12 L 260.48 69.94 L 261.43 67.39 L 263.44 67.62 L 263.95 68.84 L 265.38 68.41 L 266.99 69.14 Z\",\n \"M 281.19 49.02 L 283.82 47.92 L 289.98 49.32 L 293.81 50.65 L 294.17 51.86 L 299.32 51.23 L 302.22 53.00 L 308.92 54.10 L 311.34 55.22 L 313.97 57.82 L 308.87 59.11 L 315.41 60.93 L 319.82 61.54 L 323.82 64.09 L 328.19 64.27 L 327.32 66.22 L 322.45 69.45 L 319.03 68.26 L 314.66 65.59 L 311.07 65.94 L 310.72 67.53 L 313.64 69.14 L 317.41 70.42 L 318.55 71.16 L 320.36 73.91 L 319.40 75.90 L 315.90 75.15 L 308.93 72.93 L 312.86 75.32 L 315.75 77.00 L 316.20 77.97 L 308.67 76.86 L 302.71 75.25 L 299.34 73.90 L 300.31 73.11 L 296.17 71.68 L 292.12 70.34 L 292.17 71.14 L 284.14 71.58 L 281.79 70.63 L 283.62 68.58 L 288.84 68.54 L 294.55 68.18 L 293.63 67.19 L 294.59 65.81 L 298.19 63.10 L 297.42 61.87 L 296.35 60.92 L 292.10 59.57 L 286.47 58.63 L 288.25 57.92 L 285.31 56.20 L 282.86 56.04 L 280.67 55.09 L 279.18 55.91 L 274.15 56.27 L 264.04 55.65 L 258.16 54.83 L 253.66 54.41 L 251.35 53.44 L 254.25 52.17 L 250.31 52.16 L 249.43 49.35 L 251.56 46.86 L 254.42 45.73 L 261.59 44.99 L 259.55 46.78 L 261.74 48.52 L 264.30 46.28 L 271.34 45.14 L 276.11 48.01 L 275.69 49.83 L 281.19 49.02 Z\",\n \"M 237.49 44.07 L 243.28 44.16 L 248.58 44.84 L 244.43 47.31 L 241.12 47.86 L 238.14 49.93 L 234.97 49.83 L 233.24 47.39 L 233.28 46.01 L 234.73 44.83 L 237.49 44.07 Z\",\n \"M 158.73 38.56 L 163.45 36.49 L 169.15 34.69 L 173.41 34.73 L 177.22 34.32 L 176.84 36.45 L 174.70 37.42 L 172.11 37.55 L 166.94 38.74 L 162.50 39.17 L 158.73 38.56 Z\",\n \"M 131.36 99.89 L 134.03 99.67 L 133.19 102.82 L 135.61 105.05 L 134.50 105.05 L 132.83 103.78 L 131.80 102.50 L 130.40 101.64 L 129.89 100.41 L 130.05 99.53 L 131.36 99.89 Z\",\n \"M 206.96 29.72 L 212.42 30.10 L 219.93 31.11 L 222.05 32.43 L 223.13 33.59 L 218.60 33.28 L 214.03 32.38 L 207.84 32.28 L 210.52 31.45 L 207.17 30.78 L 206.96 29.72 Z\",\n \"M 156.92 115.25 L 155.52 115.64 L 150.96 114.37 L 150.12 113.39 L 147.64 112.42 L 147.14 111.63 L 144.28 111.12 L 143.21 109.61 L 143.45 108.97 L 146.36 109.58 L 148.07 110.00 L 150.68 110.29 L 151.62 111.25 L 153.00 112.57 L 155.77 113.71 L 156.92 115.25 Z\",\n \"M 162.39 43.20 L 166.36 43.77 L 173.45 43.93 L 176.15 44.73 L 179.13 45.90 L 175.64 46.60 L 168.83 48.56 L 165.39 50.50 L 165.39 51.71 L 158.08 53.05 L 156.61 51.83 L 150.20 50.37 L 151.39 49.19 L 153.31 47.16 L 155.72 45.34 L 153.00 43.63 L 162.39 43.20 Z\",\n \"M 200.50 39.32 L 202.97 38.85 L 205.88 38.97 L 206.37 40.33 L 204.68 41.65 L 195.28 42.08 L 188.27 43.29 L 184.04 43.35 L 183.69 42.44 L 189.46 41.22 L 176.91 41.55 L 173.02 41.05 L 176.81 38.33 L 179.43 37.56 L 187.25 38.49 L 192.18 40.14 L 197.03 40.35 L 193.06 37.70 L 195.61 36.68 L 198.47 37.00 L 199.41 38.33 L 200.50 39.32 Z\",\n \"M 204.10 47.01 L 207.21 48.13 L 208.96 50.84 L 209.82 52.80 L 214.48 54.17 L 219.50 55.49 L 219.19 56.71 L 214.63 56.93 L 216.41 58.00 L 215.47 59.02 L 210.44 58.58 L 205.66 57.83 L 202.44 58.00 L 197.22 58.95 L 190.18 59.36 L 185.24 59.62 L 183.73 58.31 L 179.94 57.55 L 177.48 57.86 L 174.05 55.66 L 175.90 55.37 L 180.19 54.90 L 184.11 55.02 L 187.73 54.54 L 182.36 53.89 L 176.42 54.11 L 172.48 54.05 L 171.02 53.03 L 177.46 51.92 L 173.18 51.96 L 168.33 51.23 L 170.66 49.14 L 172.59 48.04 L 180.03 46.35 L 182.87 46.89 L 181.48 48.19 L 187.66 47.35 L 191.52 48.75 L 194.66 47.33 L 197.20 48.24 L 199.47 50.97 L 200.87 49.82 L 198.90 46.97 L 201.34 46.57 L 204.10 47.01 Z\",\n \"M 221.00 48.04 L 217.94 46.22 L 221.23 44.88 L 224.54 45.46 L 229.50 45.11 L 230.22 45.92 L 227.63 47.25 L 231.83 48.44 L 231.33 50.94 L 226.78 52.02 L 224.10 51.79 L 222.18 50.73 L 215.28 48.58 L 215.33 47.70 L 221.00 48.04 Z\",\n \"M 203.89 45.56 L 207.61 45.44 L 209.72 46.05 L 207.28 47.89 L 202.94 45.95 L 203.89 45.56 Z\",\n \"M 226.39 36.89 L 228.51 38.17 L 228.60 39.60 L 227.33 41.67 L 222.75 41.95 L 219.77 41.51 L 219.82 39.89 L 215.27 40.10 L 215.09 37.95 L 218.08 38.04 L 222.27 37.09 L 226.17 37.25 L 226.39 36.89 Z\",\n \"M 233.29 26.11 L 235.21 25.26 L 238.06 25.06 L 236.84 24.43 L 243.30 24.29 L 246.85 25.77 L 251.53 26.36 L 256.08 26.89 L 258.28 28.72 L 261.62 29.62 L 257.81 30.45 L 252.68 32.54 L 247.76 32.73 L 242.01 32.38 L 239.02 31.25 L 239.06 30.24 L 241.26 29.50 L 236.18 29.52 L 233.12 28.60 L 231.36 27.34 L 233.29 26.11 Z\",\n \"M 245.59 22.51 L 249.72 21.99 L 252.96 21.90 L 258.41 21.45 L 262.50 20.41 L 265.94 20.55 L 268.94 21.33 L 271.05 19.83 L 274.72 19.39 L 279.70 19.08 L 288.19 18.97 L 289.67 19.27 L 297.69 18.79 L 303.70 18.97 L 309.72 19.15 L 317.14 19.37 L 323.11 19.72 L 328.19 20.48 L 328.07 21.22 L 321.29 22.42 L 314.57 22.98 L 312.06 23.61 L 318.11 23.60 L 311.55 25.28 L 307.03 26.06 L 302.27 28.33 L 296.54 28.80 L 294.77 29.36 L 286.36 29.66 L 290.19 30.01 L 288.27 30.50 L 290.57 31.87 L 287.93 32.82 L 283.64 33.61 L 282.32 34.70 L 278.44 35.53 L 278.83 36.16 L 283.58 36.05 L 283.64 36.73 L 276.22 38.40 L 268.96 37.63 L 260.80 38.06 L 256.66 37.72 L 251.41 37.58 L 251.06 36.24 L 256.20 35.62 L 254.83 33.61 L 256.53 33.42 L 263.95 34.62 L 260.16 32.83 L 255.66 32.30 L 257.91 31.23 L 262.83 30.56 L 263.62 29.59 L 259.70 28.51 L 258.52 27.08 L 266.11 27.20 L 268.31 27.50 L 272.64 26.49 L 266.39 26.17 L 256.67 26.35 L 251.76 25.40 L 249.44 24.28 L 246.20 23.46 L 245.59 22.51 Z\",\n \"M 291.06 62.66 L 289.26 63.47 L 286.14 63.61 L 285.45 62.26 L 286.63 60.70 L 289.18 60.31 L 291.35 61.08 L 291.38 62.27 L 291.06 62.66 Z\",\n \"M 232.62 56.97 L 234.31 58.03 L 232.58 59.01 L 228.84 58.17 L 226.58 58.47 L 222.78 57.22 L 225.23 56.36 L 227.17 55.16 L 230.12 55.95 L 231.78 56.44 L 232.62 56.97 Z\",\n \"M 320.78 111.46 L 321.74 111.23 L 325.39 111.93 L 328.23 113.09 L 328.31 113.60 L 326.96 113.65 L 323.36 112.77 L 320.78 111.46 Z\",\n \"M 322.18 119.34 L 323.15 120.70 L 325.17 121.07 L 327.74 120.99 L 326.37 122.13 L 325.35 122.31 L 321.82 121.13 L 321.13 120.20 L 322.18 119.34 Z\",\n \"M 158.78 113.89 L 166.67 113.89 L 174.91 113.89 L 177.64 113.89 L 186.11 113.89 L 194.30 113.89 L 202.64 113.89 L 210.97 113.89 L 220.41 113.89 L 229.92 113.89 L 235.67 113.89 L 235.68 112.82 L 236.62 112.81 L 237.11 114.34 L 237.97 114.81 L 239.91 114.97 L 242.75 115.42 L 245.44 116.28 L 247.69 115.91 L 251.11 116.64 L 252.02 116.61 L 254.50 115.83 L 257.11 116.83 L 259.83 117.91 L 262.07 118.83 L 264.23 119.72 L 264.50 120.45 L 265.15 120.72 L 264.98 121.00 L 265.73 121.09 L 266.27 120.80 L 266.41 121.46 L 266.97 121.90 L 267.73 121.90 L 268.14 122.24 L 267.79 122.73 L 270.69 124.03 L 271.28 126.55 L 271.84 128.97 L 271.03 130.61 L 269.72 132.14 L 269.11 133.11 L 269.05 133.40 L 269.36 133.80 L 270.30 134.24 L 271.00 134.24 L 274.23 132.75 L 277.09 132.31 L 280.72 130.94 L 280.77 130.65 L 280.52 129.80 L 280.08 129.26 L 281.33 128.82 L 284.06 128.81 L 286.61 128.81 L 287.50 127.73 L 287.84 127.51 L 290.78 125.51 L 292.03 125.00 L 296.25 124.98 L 301.37 124.98 L 301.65 124.29 L 302.54 124.15 L 303.72 123.72 L 304.71 122.46 L 305.55 120.30 L 307.67 118.20 L 308.59 118.93 L 310.46 118.46 L 311.69 119.26 L 311.69 123.05 L 313.50 124.62 L 313.98 125.53 L 311.02 126.87 L 308.16 127.83 L 305.23 128.66 L 303.76 130.31 L 303.29 130.93 L 303.26 132.40 L 304.18 133.87 L 305.33 133.95 L 305.04 132.93 L 305.87 133.55 L 305.65 134.34 L 303.77 134.79 L 302.44 134.74 L 300.39 135.22 L 299.18 135.36 L 297.56 135.50 L 295.25 136.30 L 299.33 135.78 L 300.15 136.31 L 296.26 137.14 L 294.49 137.14 L 294.57 136.80 L 293.73 137.57 L 294.55 137.70 L 293.95 139.70 L 291.92 141.83 L 291.72 141.12 L 291.11 140.98 L 290.20 140.28 L 290.77 141.78 L 291.46 142.27 L 291.51 143.32 L 290.62 144.40 L 289.05 146.62 L 288.80 146.51 L 289.66 144.62 L 288.24 143.56 L 287.91 141.25 L 287.38 142.45 L 287.97 144.21 L 286.14 143.78 L 288.05 144.67 L 288.17 147.32 L 288.96 147.51 L 289.25 148.47 L 289.64 151.25 L 287.88 153.31 L 285.00 154.13 L 283.18 155.76 L 281.79 155.94 L 280.38 156.96 L 279.99 157.90 L 276.94 159.70 L 275.37 161.02 L 274.06 162.67 L 273.63 164.64 L 274.13 166.57 L 275.05 168.94 L 276.29 170.91 L 276.30 172.11 L 277.62 175.33 L 277.53 177.20 L 277.41 178.29 L 276.72 179.98 L 275.89 180.34 L 274.52 180.00 L 274.08 178.78 L 273.03 178.14 L 271.55 175.75 L 270.26 173.63 L 269.84 172.54 L 270.41 170.69 L 269.64 169.16 L 267.47 166.84 L 266.39 166.42 L 263.58 167.68 L 263.09 167.54 L 261.74 166.24 L 260.00 165.55 L 256.86 165.91 L 254.39 165.60 L 252.27 165.79 L 251.13 166.22 L 251.63 166.96 L 251.58 168.09 L 252.17 168.64 L 251.64 169.00 L 250.61 168.59 L 249.57 169.12 L 247.55 169.03 L 245.48 167.57 L 243.06 167.91 L 241.04 167.27 L 239.31 167.46 L 236.97 168.11 L 234.44 170.17 L 231.68 171.37 L 230.16 172.70 L 229.53 173.95 L 229.50 175.86 L 229.64 177.19 L 230.16 178.14 L 229.08 178.22 L 227.11 177.61 L 224.94 176.75 L 224.16 175.45 L 223.55 173.50 L 221.91 171.92 L 220.95 170.29 L 219.56 168.39 L 217.60 167.28 L 215.33 167.33 L 213.58 169.53 L 211.28 168.69 L 209.84 167.86 L 209.15 166.33 L 208.23 164.88 L 206.58 163.65 L 205.16 162.78 L 204.14 161.79 L 199.33 161.79 L 199.33 162.94 L 197.12 162.94 L 191.60 162.96 L 185.26 161.00 L 181.07 159.65 L 181.33 159.11 L 177.80 159.41 L 174.64 159.63 L 174.18 158.21 L 172.38 156.61 L 171.08 156.27 L 170.78 155.48 L 169.22 155.34 L 168.22 154.59 L 165.64 154.31 L 164.93 153.87 L 164.60 152.34 L 161.90 149.55 L 159.59 145.69 L 159.69 145.05 L 158.46 144.13 L 156.31 141.80 L 155.93 139.54 L 154.45 138.02 L 155.06 135.72 L 154.96 133.33 L 154.07 131.20 L 155.16 128.59 L 155.50 126.07 L 155.83 123.55 L 155.33 119.82 L 154.45 117.44 L 153.65 116.15 L 153.98 115.61 L 158.00 116.55 L 159.48 119.18 L 160.17 118.44 L 159.72 116.17 L 158.78 113.89 Z\",\n \"M 68.33 194.22 L 68.82 194.46 L 69.27 194.84 L 69.98 195.81 L 69.91 195.96 L 68.83 196.56 L 67.94 196.99 L 67.53 197.45 L 66.84 197.06 L 66.92 196.28 L 66.46 195.27 L 66.60 194.96 L 67.08 194.51 L 66.89 193.96 L 67.05 193.70 L 67.26 193.75 L 68.33 194.22 Z\",\n \"M 66.68 192.32 L 66.45 192.65 L 65.51 192.86 L 65.04 192.27 L 64.72 192.04 L 64.69 191.87 L 64.96 191.63 L 65.95 191.90 L 66.68 192.32 Z\",\n \"M 64.56 191.18 L 64.47 191.47 L 62.98 191.39 L 63.19 191.06 L 64.56 191.18 Z\",\n \"M 61.04 189.67 L 61.27 189.85 L 62.07 190.77 L 61.92 190.93 L 61.73 190.90 L 60.76 190.80 L 60.41 190.17 L 60.30 190.06 L 61.04 189.67 Z\",\n \"M 57.32 188.29 L 57.37 188.94 L 57.04 189.21 L 56.11 188.71 L 56.25 188.51 L 56.68 188.23 L 57.32 188.29 Z\",\n \"M 37.59 82.27 L 39.79 82.52 L 40.06 83.58 L 38.35 84.01 L 36.53 83.50 L 34.85 82.74 L 37.59 82.27 Z\",\n \"M 74.36 88.97 L 76.21 89.16 L 77.38 90.02 L 74.98 91.34 L 72.21 92.40 L 70.79 91.69 L 70.36 90.39 L 72.88 89.40 L 74.36 88.97 Z\",\n \"M 108.37 56.36 L 108.35 66.67 L 108.34 82.48 L 111.07 82.56 L 113.78 83.33 L 115.72 84.55 L 118.19 86.37 L 120.89 84.82 L 123.68 83.92 L 125.15 85.36 L 127.02 86.50 L 129.57 87.75 L 131.30 89.74 L 134.14 92.91 L 138.87 94.68 L 138.94 96.43 L 137.40 97.77 L 135.87 96.72 L 133.42 95.84 L 132.64 93.42 L 129.06 91.17 L 127.56 88.55 L 124.89 88.37 L 120.48 88.30 L 117.22 87.50 L 111.48 84.62 L 108.82 84.09 L 103.96 83.10 L 100.11 83.34 L 94.65 82.06 L 91.35 80.87 L 88.26 81.46 L 88.84 83.39 L 87.30 83.57 L 84.09 84.15 L 81.64 85.09 L 78.56 85.68 L 78.17 84.04 L 79.42 81.32 L 82.37 80.46 L 81.61 79.76 L 78.07 81.31 L 76.17 83.16 L 72.17 85.14 L 74.20 86.49 L 71.58 88.48 L 68.59 89.65 L 65.81 90.49 L 65.12 91.72 L 60.78 93.15 L 59.91 94.46 L 56.66 95.65 L 54.75 95.43 L 52.16 96.21 L 49.34 97.16 L 47.03 98.08 L 42.26 98.88 L 41.83 98.41 L 44.87 97.11 L 47.58 96.26 L 50.54 94.73 L 53.99 94.42 L 55.36 93.28 L 59.21 91.62 L 59.83 91.06 L 61.88 90.08 L 62.36 87.98 L 63.77 86.34 L 60.57 87.18 L 59.67 86.70 L 58.17 87.71 L 56.36 86.30 L 55.61 87.30 L 54.57 85.91 L 51.79 87.02 L 50.09 87.02 L 49.85 85.37 L 50.35 84.35 L 48.56 83.36 L 44.95 83.89 L 42.60 82.59 L 40.70 81.92 L 40.69 80.35 L 38.55 79.17 L 39.63 77.57 L 41.89 76.02 L 42.88 74.59 L 45.13 74.39 L 47.04 74.83 L 49.28 73.49 L 51.29 73.73 L 53.41 72.87 L 52.89 71.60 L 51.34 71.10 L 53.39 70.03 L 51.69 70.07 L 48.74 70.67 L 47.89 71.28 L 45.70 70.67 L 41.78 70.98 L 37.71 70.31 L 36.54 69.20 L 33.03 67.58 L 36.93 66.42 L 43.13 65.06 L 45.41 65.06 L 45.03 66.45 L 50.89 66.35 L 48.64 64.63 L 45.22 63.57 L 43.25 62.18 L 40.58 60.99 L 36.77 60.11 L 38.32 58.66 L 43.25 58.57 L 46.75 57.30 L 47.41 55.95 L 50.25 54.63 L 52.96 54.31 L 58.22 53.08 L 60.78 53.27 L 65.05 51.79 L 69.26 52.37 L 71.27 53.62 L 72.50 53.08 L 77.19 53.25 L 77.03 53.89 L 81.28 54.36 L 84.11 54.08 L 89.96 54.96 L 95.30 55.22 L 97.44 55.58 L 101.14 55.13 L 105.35 55.97 L 108.37 56.36 Z\",\n \"M 22.97 72.83 L 24.68 73.36 L 26.41 73.07 L 28.66 73.80 L 31.42 74.17 L 31.19 74.48 L 29.08 75.06 L 26.97 74.46 L 25.91 73.96 L 23.46 74.12 L 22.80 73.87 L 22.97 72.83 Z\",\n \"M 300.80 195.24 L 301.04 196.75 L 300.83 197.82 L 300.15 198.29 L 300.86 199.12 L 300.81 199.88 L 298.96 199.41 L 297.65 199.60 L 295.96 199.40 L 294.66 199.91 L 293.17 199.05 L 293.41 198.15 L 295.97 198.54 L 298.07 198.76 L 299.07 198.14 L 297.80 196.94 L 297.82 195.88 L 296.07 195.45 L 296.69 194.68 L 298.39 194.80 L 300.80 195.24 Z\",\n \"M 300.81 199.88 L 300.86 199.12 L 300.15 198.29 L 300.83 197.82 L 301.04 196.75 L 300.80 195.24 L 301.14 194.76 L 303.31 194.78 L 304.96 195.49 L 305.69 195.42 L 306.19 196.41 L 307.71 196.35 L 307.62 197.18 L 308.86 197.28 L 310.22 198.30 L 309.19 199.43 L 307.87 198.83 L 306.60 198.94 L 305.68 198.81 L 305.18 199.32 L 304.12 199.49 L 303.69 198.81 L 302.77 199.21 L 301.66 201.12 L 300.95 200.67 L 300.81 199.88 Z\",\n \"M 280.61 175.58 L 281.91 175.36 L 283.75 175.45 L 283.83 176.17 L 280.80 176.61 L 280.61 175.58 Z\",\n \"M 283.91 174.89 L 286.11 176.14 L 285.63 178.11 L 285.12 177.76 L 285.16 176.31 L 283.92 175.21 L 283.91 174.89 Z\",\n \"M 282.80 179.97 L 283.64 180.08 L 284.61 182.39 L 284.62 184.00 L 283.94 184.14 L 283.24 182.54 L 282.20 181.74 L 282.80 179.97 Z\",\n \"M 370.10 20.48 L 379.42 18.82 L 389.17 18.95 L 392.71 17.92 L 402.53 17.65 L 424.72 18.00 L 442.09 20.21 L 436.96 21.27 L 426.34 21.39 L 411.38 21.67 L 412.78 22.16 L 422.62 21.86 L 430.98 22.81 L 436.38 21.96 L 438.69 22.96 L 435.64 24.58 L 442.71 23.54 L 456.19 22.47 L 464.52 23.00 L 466.08 24.19 L 454.76 26.17 L 453.19 26.81 L 444.31 27.29 L 450.74 27.42 L 447.50 29.44 L 445.26 31.24 L 445.35 34.34 L 448.68 36.15 L 444.34 36.27 L 439.77 37.15 L 444.90 38.62 L 445.55 40.98 L 442.58 41.24 L 446.18 43.62 L 440.01 43.82 L 443.23 44.95 L 442.32 45.93 L 438.41 46.36 L 434.53 46.37 L 438.01 48.25 L 438.05 49.49 L 432.56 48.34 L 431.13 49.08 L 434.88 49.78 L 438.52 51.48 L 439.57 53.71 L 434.62 54.25 L 432.48 53.18 L 429.04 51.58 L 429.99 53.46 L 426.77 54.93 L 434.09 55.04 L 437.92 55.19 L 430.47 57.62 L 422.92 59.81 L 414.79 60.77 L 411.73 60.78 L 408.85 61.85 L 404.99 64.78 L 399.02 66.73 L 397.10 66.84 L 393.40 67.52 L 389.41 68.17 L 387.03 69.89 L 386.99 71.84 L 385.58 73.66 L 381.05 75.88 L 382.17 78.05 L 380.92 80.35 L 379.50 83.06 L 375.59 83.23 L 371.49 80.96 L 365.93 80.95 L 363.24 79.43 L 361.38 76.71 L 356.57 73.26 L 355.16 71.45 L 354.78 68.96 L 350.94 66.39 L 351.94 64.34 L 350.08 63.37 L 352.83 60.12 L 357.01 59.08 L 358.11 57.92 L 358.69 55.75 L 355.51 56.74 L 354.00 57.15 L 351.51 57.55 L 348.10 56.64 L 347.91 54.75 L 349.00 53.28 L 351.58 53.23 L 357.25 53.97 L 352.47 52.21 L 349.98 51.26 L 347.22 51.65 L 344.90 50.96 L 348.00 48.37 L 346.31 47.34 L 344.11 45.42 L 340.76 42.47 L 337.23 41.39 L 337.26 40.23 L 329.81 38.60 L 323.91 38.40 L 316.48 38.51 L 309.71 38.72 L 306.48 37.84 L 301.66 36.09 L 308.95 35.21 L 314.54 35.07 L 302.66 34.34 L 296.39 33.21 L 296.78 32.13 L 307.29 30.79 L 317.47 29.46 L 318.54 28.45 L 311.04 27.45 L 313.47 26.35 L 323.08 24.40 L 327.12 24.11 L 325.97 22.86 L 332.55 22.13 L 341.09 21.69 L 349.62 21.67 L 352.65 22.53 L 360.02 21.00 L 366.65 22.04 L 370.55 22.26 L 376.32 23.16 L 369.72 21.67 L 370.10 20.48 Z\",\n \"M 174.64 159.63 L 177.80 159.41 L 181.33 159.11 L 181.07 159.65 L 185.26 161.00 L 191.60 162.96 L 197.12 162.94 L 199.33 162.94 L 199.33 161.79 L 204.14 161.79 L 205.16 162.78 L 206.58 163.65 L 208.23 164.88 L 209.15 166.33 L 209.84 167.86 L 211.28 168.69 L 213.58 169.53 L 215.33 167.33 L 217.60 167.28 L 219.56 168.39 L 220.95 170.29 L 221.91 171.92 L 223.55 173.50 L 224.16 175.45 L 224.94 176.75 L 227.11 177.61 L 229.08 178.22 L 230.16 178.14 L 229.09 180.58 L 228.60 182.58 L 228.40 186.30 L 228.13 187.66 L 228.61 189.17 L 229.47 190.52 L 230.03 192.68 L 231.87 194.75 L 232.52 196.33 L 233.61 197.70 L 236.56 198.44 L 237.70 199.60 L 240.14 198.82 L 242.26 198.54 L 244.34 198.04 L 246.09 197.57 L 247.85 196.43 L 248.52 194.81 L 248.74 192.48 L 249.22 191.67 L 251.10 190.94 L 254.04 190.29 L 256.50 190.39 L 258.19 190.16 L 258.85 190.74 L 258.76 192.08 L 257.27 193.73 L 256.61 195.43 L 257.12 195.91 L 256.70 197.11 L 256.01 199.28 L 255.30 198.56 L 254.72 198.61 L 254.19 198.65 L 253.20 200.33 L 252.69 200.00 L 252.36 200.12 L 252.38 200.53 L 249.81 200.50 L 247.22 200.51 L 247.21 202.07 L 245.96 202.08 L 246.99 203.01 L 248.02 203.65 L 248.33 204.25 L 248.78 204.42 L 248.71 205.36 L 245.14 205.37 L 243.81 207.63 L 244.20 208.15 L 243.88 208.80 L 243.81 209.61 L 240.67 206.62 L 239.23 205.72 L 236.97 205.00 L 235.41 205.20 L 233.18 206.25 L 231.78 206.52 L 229.82 205.79 L 227.74 205.26 L 225.14 203.98 L 223.06 203.59 L 219.92 202.30 L 217.59 200.98 L 216.89 200.23 L 215.34 200.07 L 212.50 199.19 L 211.34 197.92 L 208.35 196.34 L 206.96 194.59 L 206.30 193.24 L 207.23 192.97 L 206.94 192.17 L 207.58 191.45 L 207.59 190.50 L 206.66 189.24 L 206.41 188.14 L 205.47 186.74 L 203.03 183.98 L 200.23 181.81 L 198.88 180.08 L 196.50 178.94 L 195.99 178.26 L 196.41 176.55 L 194.99 175.90 L 193.35 174.55 L 192.66 172.61 L 191.17 172.39 L 189.55 170.92 L 188.25 169.57 L 188.13 168.70 L 186.64 166.61 L 185.65 164.48 L 185.70 163.41 L 183.69 162.31 L 182.76 162.43 L 181.17 161.67 L 180.73 162.79 L 181.19 164.13 L 181.46 166.22 L 182.41 167.36 L 184.47 169.27 L 184.93 169.93 L 185.35 170.12 L 185.72 171.08 L 186.21 171.04 L 186.77 172.83 L 187.62 173.54 L 188.21 174.52 L 189.95 175.93 L 190.87 178.52 L 191.70 179.74 L 192.47 181.04 L 192.62 182.50 L 193.96 182.60 L 195.08 183.86 L 196.08 185.10 L 196.02 185.60 L 194.85 186.62 L 194.36 186.60 L 193.62 184.91 L 191.81 183.33 L 189.80 181.99 L 188.38 181.28 L 188.47 179.25 L 188.05 177.74 L 186.73 176.88 L 184.82 175.64 L 184.45 176.00 L 183.75 175.28 L 182.04 174.60 L 180.40 172.99 L 180.60 172.78 L 181.75 172.94 L 182.78 171.90 L 182.88 170.65 L 180.74 168.67 L 179.11 167.90 L 178.09 166.17 L 177.06 164.34 L 175.77 162.12 L 174.64 159.63 Z\",\n \"M 285.13 225.92 L 284.79 226.32 L 285.43 227.96 L 284.91 228.78 L 284.02 228.58 L 283.66 229.93 L 282.73 229.13 L 282.14 227.63 L 282.82 226.89 L 282.12 226.70 L 281.60 225.78 L 280.22 225.01 L 279.00 225.19 L 278.44 226.15 L 277.32 226.85 L 276.71 226.95 L 276.44 227.52 L 277.76 229.03 L 277.01 229.39 L 276.61 229.80 L 275.31 229.94 L 274.83 228.28 L 274.47 228.76 L 273.55 228.59 L 272.99 227.47 L 271.85 227.29 L 271.13 226.97 L 269.94 226.97 L 269.86 227.57 L 269.54 227.15 L 269.68 226.60 L 269.91 226.04 L 269.81 225.54 L 270.22 225.21 L 269.64 224.79 L 269.63 223.67 L 270.70 223.43 L 271.70 224.42 L 271.64 225.01 L 272.75 225.14 L 273.01 224.91 L 273.78 225.59 L 275.14 225.40 L 276.33 224.69 L 278.01 224.13 L 278.96 223.30 L 280.49 223.46 L 280.39 223.74 L 281.94 223.83 L 283.18 224.31 L 284.08 225.15 L 285.13 225.92 Z\",\n \"M 270.70 223.43 L 269.63 223.67 L 269.64 224.79 L 270.22 225.21 L 269.81 225.54 L 269.91 226.04 L 269.68 226.60 L 269.54 227.15 L 268.03 226.54 L 267.47 225.95 L 267.79 225.47 L 267.68 224.86 L 266.91 224.19 L 265.82 223.65 L 264.87 223.29 L 264.68 222.48 L 263.95 221.98 L 264.13 222.79 L 263.58 223.45 L 262.94 222.68 L 262.05 222.41 L 261.67 221.85 L 261.69 221.00 L 262.05 220.12 L 261.27 219.73 L 261.91 219.20 L 262.33 218.84 L 264.16 219.57 L 264.79 219.21 L 265.68 219.45 L 266.14 220.02 L 266.96 220.20 L 267.62 219.61 L 268.32 221.12 L 269.40 222.24 L 270.70 223.43 Z\",\n \"M 267.62 219.61 L 266.96 220.20 L 266.14 220.02 L 265.68 219.45 L 264.79 219.21 L 264.16 219.57 L 262.33 218.84 L 261.91 219.20 L 260.95 218.32 L 259.65 217.21 L 259.04 216.26 L 257.87 215.39 L 256.47 214.14 L 256.78 213.71 L 257.24 214.13 L 257.45 213.93 L 258.31 213.82 L 258.66 213.18 L 259.07 213.16 L 259.01 211.79 L 259.66 211.73 L 260.24 211.75 L 260.84 211.00 L 261.66 211.57 L 261.95 211.22 L 262.46 210.89 L 263.43 210.12 L 263.47 209.56 L 263.74 209.58 L 264.10 208.92 L 264.39 208.84 L 264.86 209.26 L 265.42 209.39 L 266.03 209.03 L 266.73 209.03 L 267.70 208.67 L 268.08 208.29 L 269.03 208.34 L 268.79 208.61 L 268.65 209.23 L 268.94 210.25 L 268.30 211.20 L 268.00 212.31 L 267.91 213.54 L 268.06 214.25 L 268.13 215.50 L 267.70 215.78 L 267.44 216.97 L 267.63 217.70 L 267.07 218.41 L 267.19 219.16 L 267.62 219.61 Z\",\n \"M 269.03 208.34 L 268.08 208.29 L 267.70 208.67 L 266.73 209.03 L 266.03 209.03 L 265.42 209.39 L 264.86 209.26 L 264.39 208.84 L 264.10 208.92 L 263.74 209.58 L 263.47 209.56 L 263.43 210.12 L 262.46 210.89 L 261.95 211.22 L 261.66 211.57 L 260.84 211.00 L 260.24 211.75 L 259.66 211.73 L 259.01 211.79 L 259.07 213.16 L 258.66 213.18 L 258.31 213.82 L 257.45 213.93 L 256.97 213.06 L 256.13 212.82 L 256.32 211.71 L 255.94 211.41 L 255.37 211.21 L 254.15 211.54 L 254.05 211.17 L 253.21 210.72 L 252.61 210.17 L 251.79 209.93 L 252.37 209.23 L 252.15 208.68 L 252.35 208.15 L 253.66 207.37 L 254.93 206.31 L 255.22 206.42 L 255.83 205.93 L 256.62 205.89 L 256.88 206.12 L 257.31 205.98 L 258.60 206.23 L 259.88 206.16 L 260.78 205.85 L 261.10 205.54 L 261.99 205.69 L 262.65 205.87 L 263.38 205.81 L 263.93 205.57 L 265.20 205.95 L 265.64 206.02 L 266.49 206.53 L 267.29 207.15 L 268.30 207.58 L 269.03 208.34 Z\",\n \"M 251.79 209.93 L 252.61 210.17 L 253.21 210.72 L 254.05 211.17 L 254.15 211.54 L 255.37 211.21 L 255.94 211.41 L 256.32 211.71 L 256.13 212.82 L 255.82 213.48 L 254.21 213.43 L 253.21 213.17 L 252.06 212.62 L 250.52 212.44 L 249.73 211.85 L 249.82 211.44 L 250.77 210.74 L 251.29 210.43 L 251.14 210.11 L 251.79 209.93 Z\",\n \"M 243.81 209.61 L 243.88 208.80 L 244.20 208.15 L 243.81 207.63 L 245.14 205.37 L 248.71 205.36 L 248.78 204.42 L 248.33 204.25 L 248.02 203.65 L 246.99 203.01 L 245.96 202.08 L 247.21 202.07 L 247.22 200.51 L 249.81 200.50 L 252.38 200.53 L 252.36 202.73 L 252.14 205.87 L 252.97 205.87 L 253.87 206.37 L 254.11 205.96 L 254.93 206.31 L 253.66 207.37 L 252.35 208.15 L 252.15 208.68 L 252.37 209.23 L 251.79 209.93 L 251.14 210.11 L 251.29 210.43 L 250.77 210.74 L 249.82 211.44 L 249.73 211.85 L 248.31 211.36 L 246.57 211.31 L 245.30 210.76 L 243.81 209.61 Z\",\n \"M 252.38 200.53 L 252.36 200.12 L 252.69 200.00 L 253.20 200.33 L 254.19 198.65 L 254.72 198.61 L 254.73 199.02 L 255.26 199.03 L 255.21 199.79 L 254.76 200.99 L 255.00 201.42 L 254.71 202.41 L 254.89 202.68 L 254.57 204.08 L 254.02 204.82 L 253.52 204.91 L 252.97 205.87 L 252.14 205.87 L 252.36 202.73 L 252.38 200.53 Z\",\n \"M 331.29 235.56 L 331.66 236.34 L 330.64 237.40 L 327.54 238.44 L 325.54 238.87 L 324.74 239.53 L 322.53 238.83 L 320.47 238.47 L 319.95 238.73 L 321.20 239.45 L 321.08 241.31 L 321.47 243.06 L 323.82 243.30 L 323.97 243.89 L 321.99 244.68 L 321.67 245.85 L 320.52 246.31 L 318.46 246.96 L 317.92 247.81 L 315.76 247.99 L 314.23 246.52 L 313.38 243.75 L 312.64 242.78 L 311.64 242.17 L 313.04 240.78 L 312.95 240.16 L 312.16 239.34 L 311.60 237.49 L 311.82 235.50 L 312.44 234.56 L 312.94 233.07 L 311.95 232.59 L 310.37 232.91 L 308.37 232.76 L 307.25 233.05 L 305.29 230.67 L 303.68 230.31 L 300.11 230.58 L 299.45 229.61 L 298.76 229.38 L 298.66 228.80 L 298.99 227.77 L 298.78 226.65 L 298.16 226.04 L 297.81 224.77 L 296.37 224.58 L 297.14 222.96 L 297.48 220.97 L 298.29 219.94 L 299.36 219.14 L 300.07 217.76 L 301.85 217.29 L 301.77 217.94 L 300.14 218.27 L 301.05 219.53 L 301.02 220.98 L 299.79 222.60 L 300.84 224.80 L 302.04 224.62 L 302.66 222.61 L 301.80 221.63 L 301.66 219.53 L 305.12 218.40 L 304.74 217.09 L 305.71 216.22 L 306.71 218.17 L 308.66 218.21 L 310.46 219.76 L 310.57 220.68 L 313.06 220.71 L 316.03 220.42 L 317.62 221.66 L 319.75 222.01 L 321.30 221.14 L 321.34 220.44 L 324.78 220.28 L 328.11 220.23 L 325.75 221.06 L 326.70 222.37 L 328.92 222.57 L 331.02 223.94 L 331.47 226.17 L 332.91 226.11 L 334.00 226.76 L 331.80 228.39 L 331.56 229.40 L 332.51 230.44 L 331.82 230.95 L 330.11 231.40 L 330.16 232.68 L 329.41 233.45 L 331.29 235.56 Z\",\n \"M 315.88 198.57 L 317.30 198.81 L 317.80 199.37 L 317.09 200.07 L 315.00 200.05 L 313.37 200.15 L 313.21 198.96 L 313.61 198.55 L 315.88 198.57 Z\",\n \"M 284.53 198.64 L 286.40 198.89 L 287.87 199.56 L 288.33 200.31 L 286.38 200.36 L 285.54 200.83 L 283.98 200.38 L 282.39 199.37 L 282.73 198.74 L 283.89 198.54 L 284.53 198.64 Z\",\n \"M 271.47 185.59 L 273.87 185.78 L 276.06 185.82 L 278.67 186.76 L 279.77 187.78 L 282.37 187.47 L 283.35 188.12 L 285.70 189.84 L 287.43 191.09 L 288.35 191.06 L 290.00 191.62 L 289.80 192.40 L 291.85 192.52 L 293.95 193.66 L 293.62 194.30 L 291.77 194.66 L 289.90 194.79 L 287.99 194.58 L 284.01 194.84 L 285.87 193.30 L 284.74 192.57 L 282.95 192.39 L 281.99 191.59 L 281.33 190.01 L 279.76 190.11 L 277.17 189.37 L 276.34 188.78 L 272.72 188.36 L 271.75 187.82 L 272.79 187.12 L 270.06 186.98 L 268.07 188.42 L 266.92 188.46 L 266.52 189.14 L 265.14 189.44 L 263.96 189.18 L 265.42 188.32 L 266.02 187.32 L 267.28 186.70 L 268.70 186.16 L 270.80 185.89 L 271.47 185.59 Z\",\n \"M 328.66 220.11 L 330.26 219.75 L 330.84 219.85 L 330.73 221.92 L 328.41 222.22 L 327.91 221.97 L 328.72 221.21 L 328.66 220.11 Z\"\n ]\n },\n {\n \"id\": \"south-america\",\n \"label\": \"South America\",\n \"paths\": [\n \"M 309.35 396.21 L 310.41 397.50 L 311.80 399.58 L 315.41 401.25 L 319.30 401.94 L 318.05 403.33 L 315.41 403.47 L 314.00 402.49 L 312.32 402.42 L 309.35 402.41 L 309.35 396.21 Z\",\n \"M 339.93 333.94 L 339.23 336.16 L 338.49 339.01 L 338.52 341.78 L 337.91 342.40 L 337.70 344.19 L 337.51 345.64 L 341.04 348.02 L 340.66 349.94 L 342.39 351.15 L 342.25 352.51 L 339.58 356.07 L 335.46 357.56 L 329.89 358.13 L 326.84 357.86 L 327.43 359.51 L 326.86 361.59 L 327.37 362.99 L 325.70 363.97 L 322.86 364.35 L 320.19 363.34 L 319.11 364.07 L 319.50 366.83 L 321.38 367.66 L 322.90 366.79 L 323.72 368.23 L 321.17 369.09 L 318.94 370.82 L 318.53 373.62 L 317.87 375.10 L 315.25 375.11 L 313.07 376.53 L 312.27 378.61 L 315.00 380.65 L 317.66 381.21 L 316.70 383.71 L 313.42 385.27 L 311.62 388.52 L 309.08 389.63 L 307.95 390.92 L 308.84 393.81 L 310.69 395.42 L 309.52 395.28 L 306.95 394.84 L 300.23 394.47 L 299.08 392.85 L 299.14 390.77 L 297.29 390.95 L 296.31 389.94 L 296.07 387.00 L 298.20 385.77 L 299.08 384.01 L 298.75 382.61 L 300.23 380.24 L 301.24 376.56 L 300.94 374.93 L 302.16 374.40 L 301.86 373.35 L 300.57 372.80 L 301.49 371.63 L 300.23 370.58 L 299.58 367.37 L 300.70 366.81 L 300.23 363.42 L 300.88 360.58 L 301.63 358.10 L 303.29 357.09 L 302.45 354.38 L 302.44 351.83 L 304.54 350.01 L 304.47 347.69 L 306.06 344.98 L 306.07 342.43 L 305.35 341.92 L 304.07 337.12 L 305.78 334.27 L 305.51 331.58 L 306.51 329.05 L 308.33 326.45 L 310.29 324.72 L 309.46 323.63 L 310.04 322.74 L 309.95 318.11 L 312.97 316.74 L 313.93 313.85 L 313.59 313.15 L 315.90 310.64 L 319.54 311.32 L 321.17 313.33 L 322.26 311.10 L 325.42 311.21 L 325.87 311.80 L 330.98 316.34 L 333.25 316.76 L 336.64 318.81 L 339.50 319.90 L 339.90 321.12 L 337.17 325.35 L 339.97 326.10 L 343.09 326.53 L 345.29 326.08 L 347.81 323.95 L 348.26 321.50 L 349.64 320.96 L 351.03 322.57 L 350.97 324.79 L 348.63 326.32 L 346.77 327.45 L 343.63 330.15 L 339.93 333.94 Z\",\n \"M 309.35 396.21 L 309.35 402.41 L 312.32 402.42 L 314.00 402.49 L 313.08 403.62 L 310.70 404.48 L 309.33 404.39 L 307.69 404.16 L 305.67 403.33 L 302.76 402.93 L 299.26 401.37 L 296.43 399.88 L 292.60 396.77 L 294.89 397.35 L 298.79 399.21 L 302.48 400.21 L 303.91 398.93 L 304.81 397.03 L 307.37 395.88 L 309.35 396.21 Z\",\n \"M 306.69 298.83 L 308.05 300.72 L 308.42 302.73 L 309.88 303.90 L 309.00 306.59 L 310.50 309.71 L 311.59 313.54 L 313.59 313.15 L 313.93 313.85 L 312.97 316.74 L 309.95 318.11 L 310.04 322.74 L 309.46 323.63 L 310.29 324.72 L 308.33 326.45 L 306.51 329.05 L 305.51 331.58 L 305.78 334.27 L 304.07 337.12 L 305.35 341.92 L 306.07 342.43 L 306.06 344.98 L 304.47 347.69 L 304.54 350.01 L 302.44 351.83 L 302.45 354.38 L 303.29 357.09 L 301.63 358.10 L 300.88 360.58 L 300.23 363.42 L 300.70 366.81 L 299.58 367.37 L 300.23 370.58 L 301.49 371.63 L 300.57 372.80 L 301.86 373.35 L 302.16 374.40 L 300.94 374.93 L 301.24 376.56 L 300.23 380.24 L 298.75 382.61 L 299.08 384.01 L 298.20 385.77 L 296.07 387.00 L 296.31 389.94 L 297.29 390.95 L 299.14 390.77 L 299.08 392.85 L 300.23 394.47 L 306.95 394.84 L 309.52 395.28 L 307.05 395.26 L 305.71 395.94 L 303.21 396.94 L 302.76 399.54 L 301.58 399.60 L 298.45 398.70 L 295.27 396.76 L 291.81 395.17 L 290.94 393.41 L 291.73 391.79 L 290.33 389.94 L 289.97 385.21 L 291.16 382.54 L 294.09 380.39 L 289.87 379.58 L 292.52 377.12 L 293.46 372.51 L 296.55 373.48 L 298.00 367.73 L 296.14 366.99 L 295.27 370.46 L 293.52 370.07 L 294.39 366.10 L 295.34 360.95 L 296.61 359.05 L 295.81 356.34 L 295.59 353.21 L 296.76 353.12 L 298.46 348.64 L 300.38 344.19 L 301.56 340.05 L 300.92 335.89 L 301.75 333.60 L 301.41 330.17 L 303.04 326.78 L 303.54 321.41 L 304.43 315.64 L 305.30 309.43 L 305.10 304.88 L 304.52 300.97 L 305.95 300.26 L 306.69 298.83 Z\",\n \"M 330.00 394.03 L 333.33 392.36 L 335.69 393.06 L 337.36 391.94 L 339.58 393.19 L 338.75 394.17 L 335.00 395.00 L 333.75 394.03 L 331.39 395.28 L 330.00 394.03 Z\",\n \"M 339.93 333.94 L 341.73 333.64 L 344.52 335.79 L 345.55 335.70 L 348.41 337.48 L 350.59 339.02 L 352.19 340.91 L 350.97 342.23 L 351.74 343.80 L 350.53 345.55 L 347.40 347.09 L 345.35 346.54 L 343.84 346.83 L 341.28 345.64 L 339.39 345.73 L 337.70 344.19 L 337.91 342.40 L 338.52 341.78 L 338.49 339.01 L 339.23 336.16 L 339.93 333.94 Z\",\n \"M 351.74 343.80 L 350.97 342.23 L 352.19 340.91 L 350.59 339.02 L 348.41 337.48 L 345.55 335.70 L 344.52 335.79 L 341.73 333.64 L 339.93 333.94 L 343.63 330.15 L 346.77 327.45 L 348.63 326.32 L 350.97 324.79 L 351.03 322.57 L 349.64 320.96 L 348.26 321.50 L 348.80 319.90 L 349.18 318.25 L 349.18 316.72 L 348.18 316.22 L 347.14 316.67 L 346.11 316.55 L 345.78 315.48 L 345.52 312.93 L 345.00 312.10 L 343.13 311.35 L 341.99 311.89 L 339.06 311.36 L 339.24 307.59 L 338.42 306.05 L 339.29 305.47 L 339.02 303.89 L 339.79 302.67 L 340.28 300.48 L 339.62 298.76 L 338.11 297.98 L 337.81 296.88 L 338.22 295.27 L 332.89 295.16 L 331.82 291.93 L 332.63 291.88 L 332.60 290.68 L 332.05 289.87 L 331.93 288.26 L 330.32 287.44 L 328.57 287.47 L 327.42 286.66 L 325.54 286.11 L 324.45 285.08 L 321.34 284.62 L 318.32 282.13 L 318.55 280.27 L 318.21 279.20 L 318.50 277.12 L 314.87 277.59 L 313.40 278.63 L 310.97 279.75 L 310.35 280.60 L 308.92 280.66 L 306.86 280.42 L 305.29 280.90 L 304.03 280.58 L 304.21 276.36 L 301.93 278.00 L 299.48 277.93 L 298.43 276.44 L 296.59 276.28 L 297.18 275.09 L 295.63 273.40 L 294.48 270.90 L 295.21 270.39 L 295.21 269.22 L 296.89 268.41 L 296.61 266.91 L 297.32 265.95 L 297.52 264.65 L 300.70 262.76 L 302.97 262.23 L 303.34 261.81 L 305.85 261.94 L 307.10 254.32 L 307.16 253.12 L 306.73 251.53 L 305.50 250.52 L 305.51 248.49 L 307.07 248.04 L 307.63 248.32 L 307.72 247.26 L 306.10 246.98 L 306.06 245.24 L 311.47 245.30 L 312.39 244.34 L 313.16 245.22 L 313.71 246.86 L 314.23 246.52 L 315.76 247.99 L 317.92 247.81 L 318.46 246.96 L 320.52 246.31 L 321.67 245.85 L 321.99 244.68 L 323.97 243.89 L 323.82 243.30 L 321.47 243.06 L 321.08 241.31 L 321.20 239.45 L 319.95 238.73 L 320.47 238.47 L 322.53 238.83 L 324.74 239.53 L 325.54 238.87 L 327.54 238.44 L 330.64 237.40 L 331.66 236.34 L 331.29 235.56 L 332.74 235.43 L 333.38 236.07 L 333.02 237.29 L 333.98 237.71 L 334.61 239.00 L 333.84 239.98 L 333.40 242.34 L 334.11 243.75 L 334.31 245.04 L 336.02 246.34 L 337.39 246.48 L 337.69 245.93 L 338.57 245.81 L 339.83 245.33 L 340.73 244.59 L 342.27 244.82 L 342.94 244.72 L 344.45 244.95 L 344.70 244.38 L 344.24 243.83 L 344.52 243.03 L 345.64 243.28 L 346.95 242.99 L 348.54 243.58 L 349.75 244.15 L 350.61 243.40 L 351.23 243.51 L 351.61 244.30 L 352.94 244.10 L 354.01 243.04 L 354.86 240.99 L 356.50 238.46 L 357.45 238.32 L 358.14 239.86 L 359.69 244.72 L 361.18 245.17 L 361.25 247.09 L 359.17 249.38 L 360.03 250.22 L 364.94 250.65 L 365.04 253.44 L 367.15 251.62 L 370.64 252.61 L 375.26 254.31 L 376.61 255.94 L 376.16 257.47 L 379.39 256.62 L 384.79 258.09 L 388.94 257.98 L 393.05 260.28 L 396.60 263.39 L 398.74 264.19 L 401.11 264.31 L 402.12 265.18 L 403.06 268.72 L 403.52 270.40 L 402.42 274.99 L 401.00 276.80 L 397.09 280.67 L 395.32 283.81 L 393.26 286.22 L 392.57 286.27 L 391.79 288.32 L 391.99 293.52 L 391.22 297.80 L 390.92 299.63 L 390.04 300.73 L 389.55 304.44 L 386.73 308.07 L 386.26 310.94 L 384.01 312.14 L 383.36 313.81 L 380.34 313.80 L 375.97 314.87 L 374.02 316.10 L 370.91 316.92 L 367.64 319.13 L 365.29 321.88 L 364.88 323.95 L 365.34 325.49 L 364.83 328.29 L 364.20 329.65 L 362.25 331.18 L 359.17 336.07 L 356.73 338.27 L 354.84 339.57 L 353.57 342.21 L 351.74 343.80 Z\",\n \"M 306.86 280.42 L 308.92 280.66 L 310.35 280.60 L 310.97 279.75 L 313.40 278.63 L 314.87 277.59 L 318.50 277.12 L 318.21 279.20 L 318.55 280.27 L 318.32 282.13 L 321.34 284.62 L 324.45 285.08 L 325.54 286.11 L 327.42 286.66 L 328.57 287.47 L 330.32 287.44 L 331.93 288.26 L 332.05 289.87 L 332.60 290.68 L 332.63 291.88 L 331.82 291.93 L 332.89 295.16 L 338.22 295.27 L 337.81 296.88 L 338.11 297.98 L 339.62 298.76 L 340.28 300.48 L 339.79 302.67 L 339.02 303.89 L 339.29 305.47 L 338.42 306.05 L 338.38 305.19 L 335.79 303.77 L 333.21 303.73 L 328.37 304.54 L 327.04 306.98 L 326.97 308.48 L 325.87 311.80 L 325.42 311.21 L 322.26 311.10 L 321.17 313.33 L 319.54 311.32 L 315.90 310.64 L 313.59 313.15 L 311.59 313.54 L 310.50 309.71 L 309.00 306.59 L 309.88 303.90 L 308.42 302.73 L 308.05 300.72 L 306.69 298.83 L 308.44 295.83 L 307.25 293.50 L 307.88 292.57 L 307.39 291.54 L 308.47 290.15 L 308.53 287.78 L 308.66 285.83 L 309.26 284.89 L 306.86 280.42 Z\",\n \"M 305.85 261.94 L 303.34 261.81 L 302.97 262.23 L 300.70 262.76 L 297.52 264.65 L 297.32 265.95 L 296.61 266.91 L 296.89 268.41 L 295.21 269.22 L 295.21 270.39 L 294.48 270.90 L 295.63 273.40 L 297.18 275.09 L 296.59 276.28 L 298.43 276.44 L 299.48 277.93 L 301.93 278.00 L 304.21 276.36 L 304.03 280.58 L 305.29 280.90 L 306.86 280.42 L 309.26 284.89 L 308.66 285.83 L 308.53 287.78 L 308.47 290.15 L 307.39 291.54 L 307.88 292.57 L 307.25 293.50 L 308.44 295.83 L 306.69 298.83 L 305.95 300.26 L 304.52 300.97 L 301.73 299.37 L 301.49 298.23 L 295.98 295.44 L 291.00 292.41 L 288.86 290.69 L 287.71 288.40 L 288.17 287.60 L 285.81 283.95 L 283.07 278.83 L 280.45 273.29 L 279.31 272.03 L 278.44 269.98 L 276.28 268.17 L 274.30 267.05 L 275.20 265.81 L 273.86 263.16 L 274.72 261.21 L 276.93 259.46 L 277.26 260.61 L 276.47 261.28 L 276.55 262.29 L 277.69 262.07 L 278.82 262.37 L 279.98 263.77 L 281.55 262.63 L 282.08 260.76 L 283.78 258.34 L 287.12 257.25 L 290.15 254.34 L 291.01 252.53 L 290.63 250.42 L 291.37 250.16 L 293.21 251.47 L 294.10 252.79 L 295.39 253.50 L 297.02 256.42 L 299.09 256.76 L 300.62 256.03 L 301.63 256.51 L 303.29 256.27 L 305.42 257.57 L 303.63 260.40 L 304.46 260.46 L 305.85 261.94 Z\",\n \"M 314.23 246.52 L 313.71 246.86 L 313.16 245.22 L 312.39 244.34 L 311.47 245.30 L 306.06 245.24 L 306.10 246.98 L 307.72 247.26 L 307.63 248.32 L 307.07 248.04 L 305.51 248.49 L 305.50 250.52 L 306.73 251.53 L 307.16 253.12 L 307.10 254.32 L 305.85 261.94 L 304.46 260.46 L 303.63 260.40 L 305.42 257.57 L 303.29 256.27 L 301.63 256.51 L 300.62 256.03 L 299.09 256.76 L 297.02 256.42 L 295.39 253.50 L 294.10 252.79 L 293.21 251.47 L 291.37 250.16 L 290.63 250.42 L 289.44 249.76 L 288.07 248.85 L 287.28 249.29 L 284.93 248.90 L 284.25 247.70 L 283.73 247.75 L 280.95 246.16 L 280.58 245.30 L 281.61 245.09 L 281.49 243.70 L 282.14 242.70 L 283.52 242.51 L 284.69 240.76 L 285.75 239.31 L 284.73 238.64 L 285.25 237.03 L 284.63 234.49 L 285.22 233.76 L 284.78 231.41 L 283.66 229.93 L 284.02 228.58 L 284.91 228.78 L 285.43 227.96 L 284.79 226.32 L 285.13 225.92 L 286.56 226.00 L 288.65 224.06 L 289.79 223.77 L 289.82 222.85 L 290.33 220.50 L 291.92 219.21 L 293.67 219.16 L 293.89 218.58 L 296.07 218.81 L 298.25 217.41 L 299.34 216.79 L 300.68 215.45 L 301.66 215.62 L 302.39 216.35 L 301.85 217.29 L 300.07 217.76 L 299.36 219.14 L 298.29 219.94 L 297.48 220.97 L 297.14 222.96 L 296.37 224.58 L 297.81 224.77 L 298.16 226.04 L 298.78 226.65 L 298.99 227.77 L 298.66 228.80 L 298.76 229.38 L 299.45 229.61 L 300.11 230.58 L 303.68 230.31 L 305.29 230.67 L 307.25 233.05 L 308.37 232.76 L 310.37 232.91 L 311.95 232.59 L 312.94 233.07 L 312.44 234.56 L 311.82 235.50 L 311.60 237.49 L 312.16 239.34 L 312.95 240.16 L 313.04 240.78 L 311.64 242.17 L 312.64 242.78 L 313.38 243.75 L 314.23 246.52 Z\",\n \"M 342.94 244.72 L 342.27 244.82 L 340.73 244.59 L 339.83 245.33 L 338.57 245.81 L 337.69 245.93 L 337.39 246.48 L 336.02 246.34 L 334.31 245.04 L 334.11 243.75 L 333.40 242.34 L 333.84 239.98 L 334.61 239.00 L 333.98 237.71 L 333.02 237.29 L 333.38 236.07 L 332.74 235.43 L 331.29 235.56 L 329.41 233.45 L 330.16 232.68 L 330.11 231.40 L 331.82 230.95 L 332.51 230.44 L 331.56 229.40 L 331.80 228.39 L 334.00 226.76 L 335.83 227.78 L 337.54 229.59 L 337.62 231.02 L 338.67 231.08 L 340.16 232.44 L 341.25 233.41 L 340.81 235.91 L 339.12 236.63 L 339.27 237.29 L 338.76 238.72 L 339.99 240.74 L 340.88 240.74 L 341.25 242.31 L 342.94 244.72 Z\",\n \"M 348.54 243.58 L 346.95 242.99 L 345.64 243.28 L 344.52 243.03 L 344.24 243.83 L 344.70 244.38 L 344.45 244.95 L 342.94 244.72 L 341.25 242.31 L 340.88 240.74 L 339.99 240.74 L 338.76 238.72 L 339.27 237.29 L 339.12 236.63 L 340.81 235.91 L 341.25 233.41 L 344.58 233.97 L 344.88 233.46 L 347.13 233.26 L 350.11 234.01 L 348.67 236.40 L 348.89 238.30 L 349.98 239.95 L 349.49 241.14 L 349.25 242.41 L 348.54 243.58 Z\",\n \"M 356.50 238.46 L 354.86 240.99 L 354.01 243.04 L 352.94 244.10 L 351.61 244.30 L 351.23 243.51 L 350.61 243.40 L 349.75 244.15 L 348.54 243.58 L 349.25 242.41 L 349.49 241.14 L 349.98 239.95 L 348.89 238.30 L 348.67 236.40 L 350.11 234.01 L 351.06 234.31 L 353.10 234.97 L 356.04 237.32 L 356.50 238.46 Z\",\n \"M 517.19 112.60 L 518.50 113.33 L 522.50 113.84 L 521.10 115.74 L 520.75 117.72 L 519.98 118.20 L 518.72 117.94 L 518.81 118.65 L 516.78 120.21 L 516.73 121.46 L 518.06 121.03 L 519.01 122.25 L 518.90 123.03 L 519.72 124.08 L 518.75 124.92 L 519.47 127.07 L 520.98 127.42 L 520.66 128.63 L 518.14 130.20 L 512.66 129.45 L 508.62 130.35 L 508.30 132.02 L 505.08 132.38 L 501.95 131.12 L 500.94 131.72 L 495.82 130.46 L 494.71 129.38 L 496.15 127.72 L 496.68 122.18 L 493.81 119.27 L 491.76 117.86 L 487.52 116.79 L 487.24 114.77 L 490.84 114.16 L 495.50 114.88 L 494.62 111.73 L 497.25 112.92 L 503.72 110.76 L 504.56 108.48 L 506.99 107.92 L 507.39 108.90 L 508.68 108.94 L 509.97 110.06 L 511.91 111.37 L 513.34 111.15 L 515.77 112.42 L 516.39 112.66 L 517.19 112.60 Z\",\n \"M 524.30 131.59 L 526.09 130.53 L 526.56 132.91 L 525.64 135.05 L 524.38 134.49 L 523.74 132.62 L 524.30 131.59 Z\",\n \"M 290.63 250.42 L 291.01 252.53 L 290.15 254.34 L 287.12 257.25 L 283.78 258.34 L 282.08 260.76 L 281.55 262.63 L 279.98 263.77 L 278.82 262.37 L 277.69 262.07 L 276.55 262.29 L 276.47 261.28 L 277.26 260.61 L 276.93 259.46 L 278.41 257.38 L 277.81 256.17 L 276.75 257.46 L 275.09 256.24 L 275.65 255.46 L 275.18 252.94 L 276.15 252.52 L 276.67 250.79 L 277.72 249.00 L 277.52 247.86 L 279.05 247.27 L 280.95 246.16 L 283.73 247.75 L 284.25 247.70 L 284.93 248.90 L 287.28 249.29 L 288.07 248.85 L 289.44 249.76 L 290.63 250.42 Z\",\n \"M 338.42 306.05 L 339.24 307.59 L 339.06 311.36 L 341.99 311.89 L 343.13 311.35 L 345.00 312.10 L 345.52 312.93 L 345.78 315.48 L 346.11 316.55 L 347.14 316.67 L 348.18 316.22 L 349.18 316.72 L 349.18 318.25 L 348.80 319.90 L 348.26 321.50 L 347.81 323.95 L 345.29 326.08 L 343.09 326.53 L 339.97 326.10 L 337.17 325.35 L 339.90 321.12 L 339.50 319.90 L 336.64 318.81 L 333.25 316.76 L 330.98 316.34 L 325.87 311.80 L 326.97 308.48 L 327.04 306.98 L 328.37 304.54 L 333.21 303.73 L 335.79 303.77 L 338.38 305.19 L 338.42 306.05 Z\"\n ]\n },\n {\n \"id\": \"europe\",\n \"label\": \"Europe\",\n \"paths\": [\n \"M 542.07 28.68 L 543.12 27.73 L 547.20 27.64 L 550.70 28.61 L 559.85 30.68 L 552.86 31.77 L 551.31 33.82 L 548.88 34.34 L 547.56 36.64 L 544.21 36.75 L 538.23 35.05 L 540.75 34.07 L 536.59 33.27 L 531.18 30.92 L 529.02 28.74 L 536.59 27.75 L 538.11 28.72 L 542.07 28.68 Z\",\n \"M 586.40 56.78 L 581.67 57.90 L 579.43 58.15 L 580.60 56.21 L 577.04 55.10 L 572.73 56.04 L 571.36 58.08 L 568.71 59.31 L 565.73 58.64 L 562.11 58.77 L 559.02 57.31 L 557.35 58.04 L 555.63 58.15 L 555.22 59.98 L 549.99 59.53 L 549.25 61.08 L 546.58 61.07 L 544.75 63.05 L 541.97 66.13 L 537.66 70.04 L 538.67 70.99 L 537.70 72.09 L 534.95 72.04 L 533.15 74.64 L 533.32 78.33 L 535.09 79.74 L 534.17 83.00 L 531.86 84.91 L 530.64 86.51 L 528.77 84.80 L 523.29 88.02 L 519.58 88.67 L 515.74 87.25 L 514.75 84.27 L 513.87 77.86 L 516.43 76.07 L 523.76 73.74 L 529.25 70.87 L 534.33 67.00 L 541.01 61.64 L 545.66 59.55 L 553.29 56.06 L 559.39 54.85 L 563.96 54.99 L 568.19 52.69 L 573.25 52.82 L 578.24 52.26 L 586.93 54.30 L 583.35 55.04 L 586.40 56.78 Z\",\n \"M 576.14 27.62 L 572.02 29.11 L 563.96 29.44 L 555.77 28.98 L 555.27 28.22 L 551.29 28.17 L 548.25 26.89 L 556.83 26.12 L 560.86 26.78 L 563.67 25.95 L 570.69 26.65 L 576.14 27.62 Z\",\n \"M 568.68 33.74 L 562.48 34.87 L 557.58 34.23 L 559.49 33.52 L 557.82 32.63 L 563.57 32.07 L 564.67 33.11 L 568.68 33.74 Z\",\n \"M 530.64 86.51 L 531.86 84.91 L 534.17 83.00 L 535.09 79.74 L 533.32 78.33 L 533.15 74.64 L 534.95 72.04 L 537.70 72.09 L 538.67 70.99 L 537.66 70.04 L 541.97 66.13 L 544.75 63.05 L 546.58 61.07 L 549.25 61.08 L 549.99 59.53 L 555.22 59.98 L 555.63 58.15 L 557.35 58.04 L 561.06 59.40 L 565.39 61.29 L 565.47 65.57 L 566.40 66.65 L 561.62 67.43 L 558.93 69.37 L 559.36 71.07 L 554.95 73.30 L 549.58 75.70 L 547.56 79.61 L 549.54 81.57 L 552.19 83.11 L 549.64 86.24 L 546.75 86.89 L 545.69 91.55 L 544.12 94.16 L 540.75 93.89 L 539.17 96.09 L 535.96 96.22 L 535.07 93.59 L 532.75 90.44 L 530.64 86.51 Z\",\n \"M 578.27 93.97 L 581.20 94.67 L 581.59 95.36 L 583.05 95.03 L 585.77 95.69 L 586.04 97.00 L 585.44 97.74 L 587.18 99.56 L 588.31 100.07 L 588.15 100.57 L 590.02 101.06 L 590.82 101.80 L 589.74 102.41 L 587.50 102.31 L 586.96 102.57 L 587.62 103.49 L 588.30 105.28 L 585.91 105.44 L 585.06 106.05 L 584.88 107.45 L 583.77 107.18 L 581.27 107.31 L 580.54 106.66 L 579.50 107.15 L 578.45 106.74 L 576.27 106.69 L 573.17 106.02 L 570.36 105.80 L 568.21 105.87 L 566.69 106.62 L 565.36 106.73 L 565.30 105.49 L 564.45 104.20 L 566.11 103.63 L 566.13 102.53 L 565.36 101.47 L 565.24 100.24 L 567.92 100.26 L 570.94 99.21 L 571.58 97.65 L 573.86 96.76 L 573.60 95.51 L 575.29 95.04 L 578.27 93.97 Z\",\n \"M 588.30 105.28 L 589.34 105.38 L 590.04 104.75 L 590.88 104.89 L 593.76 104.63 L 595.54 106.20 L 594.84 106.76 L 595.07 107.62 L 597.29 107.76 L 598.28 108.96 L 598.22 109.51 L 601.74 110.48 L 603.87 110.04 L 605.59 111.34 L 607.21 111.32 L 611.31 112.22 L 611.34 113.03 L 610.21 114.49 L 610.83 116.02 L 610.39 116.95 L 607.70 117.15 L 606.27 117.93 L 606.18 119.16 L 603.96 119.38 L 602.11 120.28 L 599.51 120.43 L 597.12 121.46 L 597.26 122.95 L 596.84 122.87 L 596.48 122.32 L 595.59 122.21 L 593.61 121.61 L 592.88 122.30 L 592.50 122.00 L 588.18 121.30 L 587.99 120.26 L 585.42 120.60 L 584.39 122.13 L 582.24 124.18 L 580.98 123.71 L 579.67 124.16 L 578.43 123.64 L 579.13 123.34 L 579.62 122.39 L 580.38 121.50 L 580.18 121.01 L 580.76 120.79 L 581.03 121.17 L 582.67 121.25 L 583.41 121.04 L 582.89 120.76 L 583.08 120.35 L 582.11 119.64 L 581.71 118.48 L 580.70 118.03 L 580.90 117.09 L 579.65 116.34 L 578.50 116.23 L 576.46 115.37 L 574.61 115.64 L 573.95 116.05 L 572.77 116.05 L 572.08 116.70 L 570.03 116.97 L 569.08 117.40 L 567.79 116.72 L 566.01 116.70 L 564.29 116.40 L 563.09 117.00 L 562.90 116.25 L 561.35 115.49 L 561.90 114.37 L 562.67 113.65 L 563.27 113.81 L 562.56 112.56 L 565.08 110.25 L 566.46 109.93 L 566.75 109.15 L 565.36 106.73 L 566.69 106.62 L 568.21 105.87 L 570.36 105.80 L 573.17 106.02 L 576.27 106.69 L 578.45 106.74 L 579.50 107.15 L 580.54 106.66 L 581.27 107.31 L 583.77 107.18 L 584.88 107.45 L 585.06 106.05 L 585.91 105.44 L 588.30 105.28 Z\",\n \"M 565.24 100.24 L 565.36 101.47 L 566.13 102.53 L 566.11 103.63 L 564.45 104.20 L 565.30 105.49 L 565.36 106.73 L 566.75 109.15 L 566.46 109.93 L 565.08 110.25 L 562.56 112.56 L 563.27 113.81 L 562.67 113.65 L 560.03 112.58 L 558.03 112.98 L 556.72 112.69 L 555.07 113.29 L 553.67 112.30 L 552.53 112.68 L 552.37 112.51 L 551.10 111.14 L 549.03 110.97 L 548.77 110.10 L 546.86 109.79 L 546.45 110.51 L 544.94 109.94 L 545.11 109.17 L 543.04 108.93 L 541.72 108.04 L 540.58 106.26 L 540.80 105.30 L 540.11 103.82 L 539.10 102.83 L 539.87 102.09 L 539.23 100.68 L 541.12 99.86 L 545.46 98.58 L 548.96 97.64 L 551.73 98.11 L 551.94 98.78 L 554.62 98.82 L 558.04 99.13 L 563.15 99.09 L 564.57 99.39 L 565.24 100.24 Z\",\n \"M 547.17 116.32 L 546.96 117.46 L 545.40 117.47 L 545.93 118.07 L 545.01 119.85 L 544.48 120.32 L 542.05 120.39 L 540.65 121.02 L 538.36 120.81 L 534.38 120.09 L 533.76 119.13 L 531.02 119.61 L 530.70 120.14 L 529.01 119.74 L 527.59 119.67 L 526.34 119.16 L 526.76 118.48 L 526.66 117.99 L 527.49 117.83 L 528.90 118.60 L 529.29 117.87 L 531.74 117.99 L 533.73 117.49 L 535.06 117.57 L 535.93 118.14 L 536.19 117.67 L 535.79 115.86 L 536.79 115.51 L 537.77 114.23 L 539.83 115.12 L 541.40 113.99 L 542.38 113.78 L 544.53 114.63 L 545.84 114.49 L 547.12 115.01 L 546.89 115.36 L 547.17 116.32 Z\",\n \"M 561.35 115.49 L 562.90 116.25 L 563.09 117.00 L 561.39 117.57 L 560.08 119.46 L 558.40 121.35 L 556.17 121.87 L 554.44 121.74 L 552.31 122.47 L 551.27 122.89 L 548.98 122.36 L 546.90 121.17 L 546.02 120.82 L 545.48 119.88 L 545.01 119.85 L 545.93 118.07 L 545.40 117.47 L 546.96 117.46 L 547.17 116.32 L 548.58 117.03 L 549.61 117.34 L 551.94 117.00 L 552.16 116.44 L 553.27 116.36 L 554.62 115.92 L 554.92 116.10 L 556.22 115.75 L 556.88 115.10 L 557.79 114.93 L 560.76 115.78 L 561.35 115.49 Z\",\n \"M 573.95 116.05 L 574.61 115.64 L 576.46 115.37 L 578.50 116.23 L 579.65 116.34 L 580.90 117.09 L 580.70 118.03 L 581.71 118.48 L 582.11 119.64 L 583.08 120.35 L 582.89 120.76 L 583.41 121.04 L 582.67 121.25 L 581.03 121.17 L 580.76 120.79 L 580.18 121.01 L 580.38 121.50 L 579.62 122.39 L 579.13 123.34 L 578.43 123.64 L 577.93 122.37 L 578.23 121.19 L 578.14 119.97 L 576.54 118.32 L 575.65 117.15 L 574.79 116.32 L 573.95 116.05 Z\",\n \"M 578.43 123.64 L 579.67 124.16 L 580.98 123.71 L 582.24 124.18 L 582.30 124.90 L 580.95 125.50 L 580.11 125.24 L 579.33 128.59 L 577.70 128.30 L 575.68 127.29 L 572.41 127.94 L 571.03 128.64 L 566.95 128.50 L 564.82 128.06 L 563.74 128.27 L 562.94 127.12 L 562.43 126.64 L 563.08 126.17 L 562.39 125.83 L 561.52 126.45 L 559.90 125.64 L 559.68 124.50 L 557.99 123.84 L 557.68 122.96 L 556.17 121.87 L 558.40 121.35 L 560.08 119.46 L 561.39 117.57 L 563.09 117.00 L 564.29 116.40 L 566.01 116.70 L 567.79 116.72 L 569.08 117.40 L 570.03 116.97 L 572.08 116.70 L 572.77 116.05 L 573.95 116.05 L 574.79 116.32 L 575.65 117.15 L 576.54 118.32 L 578.14 119.97 L 578.23 121.19 L 577.93 122.37 L 578.43 123.64 Z\",\n \"M 573.60 95.51 L 573.86 96.76 L 571.58 97.65 L 570.94 99.21 L 567.92 100.26 L 565.24 100.24 L 564.57 99.39 L 563.15 99.09 L 562.92 98.38 L 563.22 97.62 L 561.99 97.18 L 559.08 96.69 L 558.49 94.36 L 561.67 93.51 L 566.33 93.69 L 569.06 93.41 L 569.45 93.99 L 570.93 94.17 L 573.60 95.51 Z\",\n \"M 575.80 90.35 L 577.14 90.99 L 577.38 92.34 L 578.27 93.97 L 575.29 95.04 L 573.60 95.51 L 570.93 94.17 L 569.45 93.99 L 569.06 93.41 L 566.33 93.69 L 561.67 93.51 L 558.49 94.36 L 558.59 92.27 L 559.95 90.52 L 562.57 89.57 L 564.78 91.65 L 567.01 91.59 L 567.54 89.46 L 569.91 88.97 L 571.12 89.31 L 573.51 90.34 L 575.80 90.35 Z\",\n \"M 577.73 84.79 L 578.15 85.27 L 576.17 86.88 L 577.00 89.47 L 575.80 90.35 L 573.51 90.34 L 571.12 89.31 L 569.91 88.97 L 567.54 89.46 L 567.86 87.82 L 566.84 88.18 L 565.08 87.19 L 564.84 85.59 L 568.35 84.82 L 571.85 84.41 L 574.86 84.87 L 577.73 84.79 Z\",\n \"M 539.23 100.68 L 539.87 102.09 L 539.10 102.83 L 540.11 103.82 L 540.80 105.30 L 540.58 106.26 L 541.72 108.04 L 540.48 108.33 L 539.75 108.01 L 539.05 108.54 L 537.05 109.07 L 536.02 109.77 L 534.00 110.37 L 534.49 111.20 L 534.79 112.37 L 536.20 113.04 L 537.77 114.23 L 536.79 115.51 L 535.79 115.86 L 536.19 117.67 L 535.93 118.14 L 535.06 117.57 L 533.73 117.49 L 531.74 117.99 L 529.29 117.87 L 528.90 118.60 L 527.49 117.83 L 526.66 117.99 L 523.68 117.14 L 523.11 117.74 L 520.75 117.72 L 521.10 115.74 L 522.50 113.84 L 518.50 113.33 L 517.19 112.60 L 517.35 111.38 L 516.79 110.76 L 517.11 108.88 L 516.64 105.97 L 518.31 105.97 L 519.01 104.92 L 519.70 102.38 L 519.19 101.44 L 519.73 100.85 L 522.05 100.70 L 522.57 101.31 L 524.45 99.94 L 523.82 98.90 L 523.69 97.32 L 525.79 97.69 L 527.57 97.27 L 527.61 98.34 L 530.42 98.99 L 530.39 99.98 L 533.22 99.45 L 534.78 98.69 L 537.91 99.79 L 539.23 100.68 Z\",\n \"M 562.94 127.12 L 563.74 128.27 L 564.82 128.06 L 566.95 128.50 L 571.03 128.64 L 572.41 127.94 L 575.68 127.29 L 577.70 128.30 L 579.33 128.59 L 577.89 129.74 L 576.88 131.73 L 577.77 133.31 L 575.38 132.94 L 572.55 133.81 L 572.52 135.20 L 570.00 135.46 L 568.04 134.49 L 565.82 135.25 L 563.76 135.17 L 563.56 133.33 L 562.17 132.45 L 562.63 132.05 L 562.33 131.72 L 562.80 130.84 L 563.85 129.97 L 562.50 128.77 L 562.26 127.75 L 562.94 127.12 Z\",\n \"M 624.37 146.75 L 623.04 147.22 L 622.07 146.51 L 618.83 146.15 L 617.64 146.58 L 614.48 147.02 L 612.99 146.97 L 609.79 148.01 L 607.50 148.02 L 606.03 147.50 L 602.97 148.27 L 602.06 147.73 L 601.91 149.28 L 601.16 149.89 L 600.42 150.49 L 599.40 149.23 L 600.45 148.19 L 598.76 148.43 L 596.43 147.79 L 594.52 149.39 L 590.31 149.70 L 588.06 148.21 L 585.06 148.12 L 584.42 149.27 L 582.50 149.60 L 579.82 148.12 L 576.79 148.17 L 575.14 145.41 L 573.11 143.87 L 574.46 141.71 L 572.70 140.38 L 575.78 137.72 L 580.06 137.61 L 581.23 135.50 L 586.52 135.87 L 589.86 134.07 L 593.10 133.28 L 597.69 133.22 L 602.54 135.18 L 606.53 136.25 L 609.76 135.83 L 612.15 136.08 L 615.43 134.62 L 618.39 134.49 L 621.07 135.85 L 621.54 136.83 L 621.27 138.19 L 623.34 138.88 L 624.43 139.69 L 622.53 140.48 L 623.40 143.66 L 622.85 144.52 L 624.37 146.75 Z\",\n \"M 572.55 133.81 L 575.38 132.94 L 577.77 133.31 L 578.10 134.38 L 580.53 135.28 L 580.02 135.96 L 576.72 136.11 L 575.54 136.97 L 573.22 138.47 L 572.35 137.17 L 572.38 136.60 L 573.04 136.29 L 573.90 134.55 L 572.55 133.81 Z\",\n \"M 558.39 136.55 L 558.34 137.28 L 557.43 137.68 L 557.27 138.58 L 555.98 139.93 L 555.50 139.74 L 555.45 139.13 L 553.91 138.19 L 553.67 136.87 L 553.90 134.97 L 554.28 134.11 L 553.81 133.67 L 553.63 132.79 L 554.83 131.42 L 555.01 131.94 L 555.76 131.70 L 556.35 132.45 L 557.01 132.73 L 557.20 133.73 L 556.85 134.68 L 557.24 135.87 L 558.39 136.55 Z\",\n \"M 546.02 120.82 L 546.90 121.17 L 548.98 122.36 L 551.27 122.89 L 552.31 122.47 L 552.98 123.55 L 553.87 124.34 L 552.80 125.39 L 551.54 124.77 L 549.62 124.81 L 547.23 124.35 L 545.93 124.41 L 545.33 124.99 L 544.34 124.35 L 543.75 125.50 L 545.11 126.80 L 545.72 127.66 L 546.99 128.70 L 548.05 129.31 L 549.10 130.48 L 551.56 131.53 L 551.25 132.00 L 548.64 130.97 L 547.03 129.97 L 544.49 129.15 L 542.16 127.10 L 542.72 126.89 L 541.45 125.73 L 541.40 124.79 L 539.61 124.35 L 538.76 125.55 L 537.94 124.62 L 538.00 123.65 L 538.10 123.61 L 540.04 123.71 L 540.55 123.24 L 541.49 123.69 L 542.58 123.74 L 542.57 122.97 L 543.54 122.69 L 543.81 121.56 L 546.02 120.82 Z\",\n \"M 526.66 117.99 L 526.76 118.48 L 526.34 119.16 L 527.59 119.67 L 529.01 119.74 L 528.79 120.88 L 527.57 121.35 L 525.51 121.00 L 524.91 122.12 L 523.59 122.21 L 523.11 121.77 L 521.55 122.71 L 520.21 122.84 L 519.01 122.25 L 518.06 121.03 L 516.73 121.46 L 516.78 120.21 L 518.81 118.65 L 518.72 117.94 L 519.98 118.20 L 520.75 117.72 L 523.11 117.74 L 523.68 117.14 L 526.66 117.99 Z\",\n \"M 516.79 110.76 L 517.35 111.38 L 517.19 112.60 L 516.39 112.66 L 515.77 112.42 L 516.07 110.86 L 516.79 110.76 Z\",\n \"M 517.11 108.88 L 516.79 110.76 L 516.07 110.86 L 515.77 112.42 L 513.34 111.15 L 511.91 111.37 L 509.97 110.06 L 508.68 108.94 L 507.39 108.90 L 506.99 107.92 L 509.21 107.37 L 511.25 107.59 L 513.82 107.01 L 515.58 108.23 L 517.11 108.88 Z\",\n \"M 519.19 101.44 L 519.70 102.38 L 519.01 104.92 L 518.31 105.97 L 516.64 105.97 L 517.11 108.88 L 515.58 108.23 L 513.82 107.01 L 511.25 107.59 L 509.21 107.37 L 510.64 106.61 L 513.08 102.52 L 516.88 101.36 L 519.19 101.44 Z\",\n \"M 474.90 133.66 L 475.91 132.96 L 477.04 132.55 L 477.74 133.91 L 479.38 133.91 L 479.85 133.56 L 481.47 133.66 L 482.25 135.05 L 480.96 135.80 L 480.93 137.97 L 480.48 138.37 L 480.37 139.69 L 479.17 139.92 L 480.28 141.59 L 479.51 143.41 L 480.47 144.23 L 480.09 144.99 L 479.06 146.03 L 479.29 146.95 L 478.17 147.67 L 476.71 147.28 L 475.28 147.58 L 475.70 145.41 L 475.44 143.71 L 474.20 143.45 L 473.53 142.39 L 473.75 140.58 L 474.86 139.57 L 475.06 138.44 L 475.64 136.78 L 475.58 135.60 L 475.02 134.60 L 474.90 133.66 Z\",\n \"M 479.29 146.95 L 479.06 146.03 L 480.09 144.99 L 480.47 144.23 L 479.51 143.41 L 480.28 141.59 L 479.17 139.92 L 480.37 139.69 L 480.48 138.37 L 480.93 137.97 L 480.96 135.80 L 482.25 135.05 L 481.47 133.66 L 479.85 133.56 L 479.38 133.91 L 477.74 133.91 L 477.04 132.55 L 475.91 132.96 L 474.90 133.66 L 475.04 131.69 L 473.90 130.48 L 477.83 128.48 L 481.23 128.98 L 484.96 128.96 L 487.92 129.44 L 490.22 129.29 L 494.71 129.38 L 495.82 130.46 L 500.94 131.72 L 501.95 131.12 L 505.08 132.38 L 508.30 132.02 L 508.45 133.63 L 505.82 135.48 L 502.26 136.07 L 502.01 137.01 L 500.30 138.54 L 499.22 140.80 L 500.31 142.39 L 498.70 143.63 L 498.10 145.44 L 496.00 145.99 L 494.03 148.13 L 490.51 148.17 L 487.86 148.12 L 486.12 149.10 L 485.06 150.15 L 483.70 149.92 L 482.67 148.98 L 481.88 147.38 L 479.29 146.95 Z\",\n \"M 482.78 100.37 L 483.24 102.35 L 481.14 104.83 L 476.21 106.47 L 472.28 106.06 L 474.53 103.15 L 473.08 100.33 L 476.86 98.15 L 478.96 96.85 L 479.53 98.35 L 478.96 99.84 L 480.68 99.79 L 482.78 100.37 Z\",\n \"M 529.01 119.74 L 530.70 120.14 L 531.02 119.61 L 533.76 119.13 L 534.38 120.09 L 538.36 120.81 L 538.05 122.18 L 538.72 123.36 L 536.51 122.95 L 534.25 123.94 L 534.40 125.32 L 534.06 126.11 L 534.97 127.52 L 537.58 128.92 L 538.98 131.22 L 542.07 133.46 L 544.24 133.44 L 544.92 134.05 L 544.14 134.61 L 546.63 135.61 L 548.67 136.45 L 551.05 137.90 L 551.34 138.42 L 550.82 139.41 L 549.28 138.12 L 546.86 137.66 L 545.70 139.46 L 547.70 140.49 L 547.37 141.94 L 546.21 142.10 L 544.73 144.48 L 543.57 144.70 L 543.58 143.85 L 544.15 142.36 L 544.75 141.76 L 543.67 140.16 L 542.82 138.75 L 541.67 138.41 L 540.85 137.21 L 539.06 136.71 L 537.86 135.59 L 535.80 135.41 L 533.63 134.15 L 531.09 132.35 L 529.20 130.75 L 528.34 128.00 L 526.96 127.68 L 524.70 126.76 L 523.42 127.14 L 521.81 128.43 L 520.66 128.63 L 520.98 127.42 L 519.47 127.07 L 518.75 124.92 L 519.72 124.08 L 518.90 123.03 L 519.01 122.25 L 520.21 122.84 L 521.55 122.71 L 523.11 121.77 L 523.59 122.21 L 524.91 122.12 L 525.51 121.00 L 527.57 121.35 L 528.79 120.88 L 529.01 119.74 Z\",\n \"M 541.01 144.04 L 543.12 143.80 L 542.12 145.99 L 542.53 146.85 L 541.95 148.28 L 539.82 147.23 L 538.41 146.93 L 534.54 145.52 L 534.92 144.09 L 538.17 144.35 L 541.01 144.04 Z\",\n \"M 524.20 136.39 L 525.59 135.53 L 527.25 137.50 L 526.86 141.18 L 525.60 141.00 L 524.47 141.92 L 523.42 141.19 L 523.31 137.84 L 522.67 136.25 L 524.20 136.39 Z\",\n \"M 527.57 97.27 L 525.79 97.69 L 523.69 97.32 L 522.56 95.78 L 522.48 92.94 L 522.94 92.20 L 523.74 91.36 L 526.18 91.19 L 527.16 90.42 L 529.39 89.64 L 529.30 91.07 L 528.48 91.97 L 528.81 92.75 L 530.32 93.17 L 529.64 94.22 L 528.81 93.92 L 526.81 95.91 L 527.57 97.27 Z\",\n \"M 534.37 94.14 L 535.25 95.53 L 533.59 97.78 L 530.68 96.21 L 530.29 95.05 L 534.37 94.14 Z\",\n \"M 482.78 100.37 L 480.68 99.79 L 478.96 99.84 L 479.53 98.35 L 478.96 96.85 L 481.29 96.74 L 484.27 98.46 L 482.78 100.37 Z\",\n \"M 491.40 101.66 L 491.41 101.66 L 491.81 100.04 L 489.95 98.33 L 489.91 98.29 L 486.54 97.80 L 485.88 97.05 L 486.89 95.81 L 485.97 95.04 L 484.48 96.36 L 484.31 93.68 L 482.91 92.27 L 483.92 89.39 L 486.08 87.14 L 488.30 87.36 L 491.65 87.13 L 488.68 90.13 L 491.51 89.75 L 494.55 89.76 L 493.83 92.03 L 491.33 94.52 L 494.20 94.70 L 494.42 94.99 L 496.90 98.27 L 498.80 98.71 L 500.52 101.88 L 501.31 102.97 L 504.68 103.50 L 504.34 105.28 L 502.92 106.09 L 504.03 107.53 L 501.53 108.98 L 497.81 108.96 L 493.08 109.72 L 491.78 109.18 L 489.95 110.48 L 487.38 110.16 L 485.43 111.22 L 483.95 110.67 L 488.02 107.75 L 490.51 107.15 L 490.49 107.15 L 486.15 106.69 L 485.36 105.58 L 488.27 104.72 L 486.75 103.22 L 487.27 101.40 L 491.40 101.66 Z\",\n \"M 459.69 65.40 L 459.05 67.20 L 462.19 69.09 L 458.58 71.21 L 450.57 73.12 L 448.17 73.62 L 444.52 73.21 L 436.77 72.33 L 439.50 71.10 L 433.45 69.75 L 438.37 69.21 L 438.25 68.39 L 432.42 67.75 L 434.30 65.94 L 438.51 65.53 L 442.84 67.41 L 447.06 65.90 L 450.55 66.68 L 455.08 65.20 L 459.69 65.40 Z\",\n \"M 538.36 120.81 L 540.65 121.02 L 542.05 120.39 L 544.48 120.32 L 545.01 119.85 L 545.48 119.88 L 546.02 120.82 L 543.81 121.56 L 543.54 122.69 L 542.57 122.97 L 542.58 123.74 L 541.49 123.69 L 540.55 123.24 L 540.04 123.71 L 538.10 123.61 L 538.72 123.36 L 538.05 122.18 L 538.36 120.81 Z\",\n \"M 579.43 58.15 L 579.02 60.10 L 583.27 61.95 L 580.71 64.04 L 583.94 67.21 L 582.07 69.59 L 584.57 71.65 L 583.44 73.46 L 587.55 75.37 L 586.50 76.78 L 583.92 78.39 L 577.98 81.94 L 572.94 82.16 L 568.05 83.17 L 563.53 83.76 L 561.92 82.24 L 559.23 81.33 L 559.85 78.60 L 558.50 76.09 L 559.83 74.47 L 562.35 72.73 L 568.70 69.72 L 570.55 69.13 L 570.27 67.96 L 566.40 66.65 L 565.47 65.57 L 565.39 61.29 L 561.06 59.40 L 557.35 58.04 L 559.02 57.31 L 562.11 58.77 L 565.73 58.64 L 568.71 59.31 L 571.36 58.08 L 572.73 56.04 L 577.04 55.10 L 580.60 56.21 L 579.43 58.15 Z\",\n \"M 562.67 113.65 L 561.90 114.37 L 561.35 115.49 L 560.76 115.78 L 557.79 114.93 L 556.88 115.10 L 556.22 115.75 L 554.92 116.10 L 554.62 115.92 L 553.27 116.36 L 552.16 116.44 L 551.94 117.00 L 549.61 117.34 L 548.58 117.03 L 547.17 116.32 L 546.89 115.36 L 547.12 115.01 L 547.51 114.40 L 548.74 114.44 L 549.69 114.16 L 549.76 113.90 L 550.30 113.77 L 550.48 113.14 L 551.12 113.01 L 551.55 112.52 L 552.37 112.51 L 552.53 112.68 L 553.67 112.30 L 555.07 113.29 L 556.72 112.69 L 558.03 112.98 L 560.03 112.58 L 562.67 113.65 Z\",\n \"M 541.72 108.04 L 543.04 108.93 L 545.11 109.17 L 544.94 109.94 L 546.45 110.51 L 546.86 109.79 L 548.77 110.10 L 549.03 110.97 L 551.10 111.14 L 552.37 112.51 L 551.55 112.52 L 551.12 113.01 L 550.48 113.14 L 550.30 113.77 L 549.76 113.90 L 549.69 114.16 L 548.74 114.44 L 547.51 114.40 L 547.12 115.01 L 545.84 114.49 L 544.53 114.63 L 542.38 113.78 L 541.40 113.99 L 539.83 115.12 L 537.77 114.23 L 536.20 113.04 L 534.79 112.37 L 534.49 111.20 L 534.00 110.37 L 536.02 109.77 L 537.05 109.07 L 539.05 108.54 L 539.75 108.01 L 540.48 108.33 L 541.72 108.04 Z\",\n \"M 551.56 131.53 L 549.10 130.48 L 548.05 129.31 L 546.99 128.70 L 545.72 127.66 L 545.11 126.80 L 543.75 125.50 L 544.34 124.35 L 545.33 124.99 L 545.93 124.41 L 547.23 124.35 L 549.62 124.81 L 551.54 124.77 L 552.80 125.39 L 553.80 125.38 L 553.11 126.60 L 554.45 127.67 L 554.04 128.98 L 553.39 129.10 L 552.87 129.35 L 551.97 130.00 L 551.56 131.53 Z\",\n \"M 562.17 132.45 L 563.56 133.33 L 563.76 135.17 L 563.23 135.27 L 562.77 135.75 L 561.27 135.69 L 560.21 136.30 L 558.39 136.55 L 557.24 135.87 L 556.85 134.68 L 557.20 133.73 L 557.55 133.76 L 557.68 133.19 L 559.32 132.76 L 559.94 132.65 L 560.89 132.49 L 562.17 132.45 Z\",\n \"M 552.31 122.47 L 554.44 121.74 L 556.17 121.87 L 557.68 122.96 L 557.99 123.84 L 559.68 124.50 L 559.90 125.64 L 561.52 126.45 L 562.39 125.83 L 563.08 126.17 L 562.43 126.64 L 562.94 127.12 L 562.26 127.75 L 562.50 128.77 L 563.85 129.97 L 562.80 130.84 L 562.33 131.72 L 562.63 132.05 L 562.17 132.45 L 560.89 132.49 L 559.94 132.65 L 559.85 132.45 L 560.18 132.11 L 560.49 131.43 L 560.10 131.45 L 559.56 130.94 L 559.10 130.80 L 558.74 130.36 L 558.22 130.19 L 557.82 129.80 L 557.32 129.95 L 556.94 130.88 L 556.28 131.08 L 556.50 130.84 L 555.44 130.26 L 554.53 129.96 L 554.13 129.58 L 553.39 129.10 L 554.04 128.98 L 554.45 127.67 L 553.11 126.60 L 553.80 125.38 L 552.80 125.39 L 553.87 124.34 L 552.98 123.55 L 552.31 122.47 Z\",\n \"M 555.76 131.70 L 555.01 131.94 L 554.83 131.42 L 553.63 132.79 L 553.81 133.67 L 553.23 133.46 L 552.45 132.55 L 551.25 132.00 L 551.56 131.53 L 551.97 130.00 L 552.87 129.35 L 553.39 129.10 L 554.13 129.58 L 554.53 129.96 L 555.44 130.26 L 556.50 130.84 L 556.28 131.08 L 555.76 131.70 Z\",\n \"M 557.20 133.73 L 557.01 132.73 L 556.35 132.45 L 555.76 131.70 L 556.28 131.08 L 556.94 130.88 L 557.32 129.95 L 557.82 129.80 L 558.22 130.19 L 558.74 130.36 L 559.10 130.80 L 559.56 130.94 L 560.10 131.45 L 560.49 131.43 L 560.18 132.11 L 559.85 132.45 L 559.94 132.65 L 559.32 132.76 L 557.68 133.19 L 557.55 133.76 L 557.20 133.73 Z\"\n ]\n },\n {\n \"id\": \"africa\",\n \"label\": \"Africa\",\n \"paths\": [\n \"M 594.18 252.64 L 594.65 252.95 L 604.72 258.60 L 604.91 260.21 L 608.90 262.99 L 607.62 266.41 L 607.78 267.99 L 609.56 269.00 L 609.64 269.72 L 608.88 271.40 L 609.04 272.25 L 608.86 273.57 L 609.83 275.31 L 610.98 278.05 L 611.99 278.66 L 609.78 280.27 L 606.75 281.35 L 605.08 281.30 L 604.09 282.13 L 602.16 282.21 L 601.43 282.56 L 598.09 281.78 L 596.00 282.00 L 595.23 278.22 L 594.28 276.93 L 593.73 276.16 L 591.00 275.64 L 589.43 274.81 L 587.66 274.34 L 586.55 273.87 L 585.39 273.17 L 583.89 269.66 L 582.28 268.11 L 581.73 266.50 L 582.00 265.06 L 581.50 262.50 L 582.65 262.37 L 583.66 261.36 L 584.74 259.91 L 585.43 259.33 L 585.40 258.43 L 584.80 257.80 L 584.64 256.70 L 585.44 256.35 L 585.60 254.72 L 584.50 253.15 L 585.48 252.82 L 588.52 252.85 L 594.18 252.64 Z\",\n \"M 475.92 173.18 L 475.93 173.36 L 475.87 173.90 L 475.86 178.11 L 466.75 177.96 L 466.84 185.07 L 464.23 185.32 L 463.55 186.75 L 464.08 190.76 L 453.20 190.74 L 452.60 191.67 L 452.72 190.50 L 452.77 190.50 L 459.02 190.27 L 459.35 189.27 L 460.49 188.03 L 461.41 184.19 L 465.27 181.20 L 466.58 177.69 L 467.44 177.49 L 468.35 175.32 L 470.69 175.03 L 471.69 175.38 L 472.95 175.38 L 473.85 174.75 L 475.57 174.67 L 475.50 173.18 L 475.92 173.18 Z\",\n \"M 581.50 262.50 L 582.00 265.06 L 581.73 266.50 L 582.28 268.11 L 583.89 269.66 L 585.39 273.17 L 584.30 272.89 L 580.57 273.35 L 579.82 273.68 L 579.03 275.46 L 579.65 276.68 L 579.16 279.97 L 578.82 282.76 L 579.57 283.25 L 581.51 284.33 L 582.27 283.83 L 582.50 286.83 L 580.38 286.80 L 579.24 285.27 L 578.21 284.09 L 576.08 283.70 L 575.46 282.25 L 573.76 283.13 L 571.54 282.74 L 570.61 281.48 L 568.85 281.22 L 567.54 281.29 L 567.39 280.42 L 566.43 280.35 L 565.16 280.19 L 563.44 280.61 L 562.23 280.53 L 561.55 280.79 L 561.70 277.48 L 560.77 276.45 L 560.56 274.75 L 560.97 273.07 L 560.41 272.00 L 560.36 270.25 L 556.99 270.28 L 557.23 269.27 L 555.81 269.28 L 555.66 269.77 L 553.94 269.88 L 553.25 271.49 L 552.83 272.19 L 551.29 271.80 L 550.38 272.19 L 548.54 272.41 L 547.48 270.96 L 546.84 270.06 L 546.04 268.40 L 545.36 266.33 L 537.16 266.29 L 536.18 266.62 L 535.38 266.57 L 534.23 266.94 L 533.84 266.08 L 534.55 265.79 L 534.64 264.58 L 535.09 263.86 L 536.10 263.28 L 536.83 263.56 L 537.78 262.50 L 539.30 262.53 L 539.47 263.31 L 540.51 263.81 L 542.15 262.07 L 543.76 260.71 L 544.47 259.82 L 544.37 257.53 L 545.58 254.84 L 546.85 253.41 L 548.68 252.07 L 549.00 251.18 L 549.07 250.16 L 549.52 249.20 L 549.38 247.62 L 549.72 245.16 L 550.27 243.43 L 551.10 241.94 L 551.26 240.27 L 551.51 238.33 L 552.59 236.92 L 554.08 236.03 L 556.37 236.97 L 558.14 237.99 L 560.17 238.27 L 562.24 238.81 L 563.07 237.13 L 563.45 236.91 L 564.72 237.20 L 567.81 235.81 L 568.91 236.40 L 569.81 236.31 L 570.22 235.64 L 571.26 235.40 L 573.35 235.69 L 575.13 235.76 L 576.04 235.46 L 577.73 237.76 L 578.97 238.09 L 579.72 237.62 L 581.00 237.81 L 582.55 237.22 L 583.21 238.40 L 585.65 240.25 L 585.49 243.50 L 586.60 243.88 L 585.71 244.86 L 584.64 245.60 L 583.58 247.05 L 582.99 248.34 L 582.84 250.57 L 582.19 251.63 L 582.17 253.73 L 581.37 254.50 L 581.27 256.15 L 580.89 256.37 L 580.63 257.89 L 581.33 259.15 L 581.50 262.50 Z\",\n \"M 608.90 262.99 L 604.91 260.21 L 604.72 258.60 L 594.65 252.95 L 594.18 252.64 L 594.15 249.69 L 594.95 248.57 L 596.32 246.73 L 597.33 244.70 L 596.10 241.52 L 595.78 240.13 L 594.46 238.19 L 596.17 236.54 L 598.05 234.70 L 599.50 235.17 L 599.50 236.73 L 600.45 237.64 L 602.38 237.64 L 605.90 240.00 L 606.77 240.03 L 607.42 239.96 L 608.04 240.28 L 609.89 240.50 L 610.71 239.34 L 613.25 238.17 L 614.37 239.11 L 616.27 239.11 L 613.84 242.26 L 613.87 252.38 L 615.52 254.68 L 613.57 255.79 L 612.89 256.94 L 611.85 257.15 L 611.45 259.11 L 610.56 260.22 L 610.02 262.07 L 608.90 262.99 Z\",\n \"M 568.25 227.14 L 566.13 225.93 L 565.17 225.13 L 564.99 224.26 L 565.44 223.11 L 565.43 221.97 L 563.83 220.24 L 563.52 219.05 L 563.55 218.38 L 562.53 217.56 L 562.50 215.95 L 561.92 214.87 L 560.94 215.03 L 561.22 214.01 L 561.94 212.86 L 561.62 211.70 L 562.54 210.85 L 561.96 210.20 L 562.69 208.49 L 563.96 206.44 L 566.36 206.64 L 566.22 195.61 L 566.25 194.44 L 569.45 194.44 L 569.45 188.89 L 580.62 188.89 L 591.39 188.89 L 602.41 188.89 L 603.31 191.61 L 602.70 192.12 L 603.10 194.98 L 604.12 198.30 L 605.18 198.98 L 606.70 200.01 L 605.29 201.59 L 603.25 202.05 L 602.37 202.90 L 602.10 204.75 L 600.90 208.83 L 601.20 209.94 L 600.75 212.32 L 599.63 215.06 L 597.95 216.44 L 596.76 218.56 L 596.48 219.69 L 595.16 220.47 L 594.34 223.38 L 594.38 225.87 L 594.35 223.71 L 593.96 223.66 L 594.01 222.27 L 593.68 221.32 L 592.25 220.22 L 591.91 218.22 L 592.25 216.17 L 590.96 215.98 L 590.77 216.60 L 589.10 216.74 L 589.77 217.55 L 590.00 219.22 L 588.48 220.75 L 587.10 222.75 L 585.66 223.04 L 583.33 221.41 L 582.28 221.99 L 581.99 222.80 L 580.56 223.32 L 580.47 223.90 L 577.70 223.90 L 577.32 223.32 L 575.32 223.23 L 574.32 223.70 L 573.55 223.46 L 572.12 221.85 L 571.64 221.08 L 569.64 221.46 L 568.88 222.75 L 568.16 225.23 L 567.21 225.75 L 566.36 226.06 L 568.25 227.14 Z\",\n \"M 566.22 195.61 L 566.36 206.64 L 563.96 206.44 L 562.69 208.49 L 561.96 210.20 L 562.54 210.85 L 561.62 211.70 L 561.94 212.86 L 561.22 214.01 L 560.94 215.03 L 561.92 214.87 L 562.50 215.95 L 562.53 217.56 L 563.55 218.38 L 563.52 219.05 L 561.76 219.52 L 560.35 220.65 L 558.34 223.68 L 555.73 224.96 L 553.04 224.79 L 552.26 225.05 L 552.54 226.03 L 551.09 227.00 L 549.91 228.08 L 546.41 229.14 L 545.72 228.51 L 545.26 228.46 L 544.74 229.18 L 542.45 229.38 L 542.88 228.63 L 542.01 226.72 L 541.62 225.56 L 540.41 225.09 L 538.77 223.47 L 539.37 222.16 L 540.64 222.44 L 541.42 222.25 L 542.97 222.27 L 541.46 219.75 L 541.56 217.90 L 541.38 216.06 L 540.27 214.28 L 540.55 212.97 L 538.77 212.91 L 538.77 211.12 L 537.62 210.09 L 538.82 206.43 L 542.36 203.82 L 542.51 200.20 L 543.58 194.56 L 544.18 193.37 L 543.02 192.41 L 542.98 191.53 L 541.94 190.81 L 541.26 186.49 L 544.06 184.97 L 555.14 190.29 L 566.22 195.61 Z\",\n \"M 545.41 329.38 L 546.74 328.01 L 547.83 328.77 L 548.30 329.95 L 549.55 330.16 L 551.30 330.68 L 552.79 330.48 L 555.27 329.06 L 555.27 318.80 L 556.02 319.21 L 557.67 321.86 L 557.41 323.55 L 558.03 324.52 L 560.02 324.24 L 561.41 323.00 L 562.73 322.17 L 563.41 320.84 L 564.76 320.19 L 565.93 320.53 L 567.26 321.31 L 569.52 321.44 L 571.30 320.79 L 571.58 319.93 L 572.06 318.60 L 573.58 318.38 L 574.41 317.33 L 575.34 315.49 L 577.83 313.41 L 581.76 311.36 L 582.89 311.40 L 584.23 311.87 L 585.17 311.53 L 586.65 311.81 L 587.98 315.72 L 588.70 317.69 L 588.21 320.79 L 588.44 321.79 L 587.04 321.28 L 586.24 321.48 L 585.98 322.28 L 585.22 323.33 L 585.24 324.29 L 586.90 325.79 L 588.53 325.50 L 589.09 324.26 L 591.20 324.28 L 590.50 326.30 L 590.18 328.61 L 589.46 329.87 L 587.56 331.27 L 587.02 331.67 L 585.84 333.08 L 585.07 334.51 L 583.49 336.50 L 580.35 339.37 L 578.39 341.03 L 576.29 342.30 L 573.39 343.38 L 571.98 343.52 L 571.62 344.29 L 569.93 343.88 L 568.55 344.41 L 565.54 343.87 L 563.86 344.21 L 562.71 344.07 L 559.85 345.16 L 557.47 345.60 L 555.76 346.65 L 554.49 346.72 L 553.32 345.73 L 552.38 345.68 L 551.18 344.44 L 551.05 344.82 L 550.68 344.08 L 550.70 342.45 L 549.80 340.59 L 550.69 340.08 L 550.62 337.95 L 548.80 335.35 L 547.41 332.99 L 547.40 332.99 L 545.41 329.38 Z\",\n \"M 580.50 330.43 L 579.29 329.58 L 577.99 330.14 L 576.48 331.23 L 575.00 332.99 L 577.09 335.12 L 578.08 334.85 L 578.59 333.96 L 580.14 333.53 L 580.61 332.62 L 581.46 331.27 L 580.50 330.43 Z\",\n \"M 580.50 330.43 L 581.46 331.27 L 580.61 332.62 L 580.14 333.53 L 578.59 333.96 L 578.08 334.85 L 577.09 335.12 L 575.00 332.99 L 576.48 331.23 L 577.99 330.14 L 579.29 329.58 L 580.50 330.43 Z\",\n \"M 586.65 311.81 L 585.17 311.53 L 584.23 311.87 L 582.89 311.40 L 581.76 311.36 L 579.99 310.11 L 577.84 309.68 L 577.02 307.92 L 577.02 306.94 L 575.83 306.64 L 572.68 303.59 L 571.81 301.98 L 571.25 301.49 L 570.18 299.27 L 573.29 299.57 L 574.19 299.89 L 575.13 299.83 L 576.67 298.03 L 579.08 295.74 L 580.08 295.53 L 580.41 294.56 L 582.00 293.46 L 584.10 293.08 L 584.28 294.11 L 586.60 294.06 L 587.88 294.64 L 588.48 295.33 L 589.80 295.53 L 591.25 296.43 L 591.25 299.94 L 590.71 301.87 L 590.59 303.94 L 591.04 304.77 L 590.73 306.40 L 590.31 306.65 L 589.57 308.65 L 586.65 311.81 Z\",\n \"M 581.76 311.36 L 577.83 313.41 L 575.34 315.49 L 574.41 317.33 L 573.58 318.38 L 572.06 318.60 L 571.58 319.93 L 571.30 320.79 L 569.52 321.44 L 567.26 321.31 L 565.93 320.53 L 564.76 320.19 L 563.41 320.84 L 562.73 322.17 L 561.41 323.00 L 560.02 324.24 L 558.03 324.52 L 557.41 323.55 L 557.67 321.86 L 556.02 319.21 L 555.27 318.80 L 555.27 310.69 L 558.01 310.60 L 558.09 300.70 L 560.16 300.61 L 564.44 299.64 L 565.50 300.78 L 567.27 299.69 L 568.12 299.68 L 569.68 299.06 L 570.18 299.27 L 571.25 301.49 L 571.81 301.98 L 572.68 303.59 L 575.83 306.64 L 577.02 306.94 L 577.02 307.92 L 577.84 309.68 L 579.99 310.11 L 581.76 311.36 Z\",\n \"M 555.27 318.80 L 555.27 329.06 L 552.79 330.48 L 551.30 330.68 L 549.55 330.16 L 548.30 329.95 L 547.83 328.77 L 546.74 328.01 L 545.41 329.38 L 543.34 327.28 L 542.26 325.25 L 541.64 322.55 L 540.96 320.54 L 540.03 316.26 L 539.96 312.93 L 539.61 311.42 L 538.53 310.28 L 537.09 307.98 L 535.63 304.65 L 535.03 302.90 L 532.77 300.19 L 532.60 298.06 L 533.94 297.53 L 535.60 297.06 L 537.40 297.14 L 539.06 298.40 L 539.48 298.20 L 550.74 298.08 L 552.66 299.42 L 559.39 299.81 L 564.49 298.67 L 566.77 298.04 L 568.57 298.20 L 569.66 298.83 L 569.68 299.06 L 568.12 299.68 L 567.27 299.69 L 565.50 300.78 L 564.44 299.64 L 560.16 300.61 L 558.09 300.70 L 558.01 310.60 L 555.27 310.69 L 555.27 318.80 Z\",\n \"M 453.57 212.24 L 452.42 210.07 L 451.04 209.09 L 452.26 208.56 L 453.60 206.61 L 454.26 205.18 L 455.22 204.29 L 456.60 204.53 L 457.95 203.92 L 459.50 203.89 L 460.83 204.71 L 462.67 205.45 L 464.35 207.49 L 466.19 209.40 L 466.32 211.13 L 466.86 212.72 L 467.90 213.50 L 468.14 214.57 L 468.01 215.44 L 467.61 215.59 L 466.10 215.37 L 465.89 215.68 L 465.28 215.74 L 463.28 215.07 L 461.94 215.04 L 456.81 214.92 L 456.06 215.24 L 455.14 215.15 L 453.67 215.60 L 453.21 213.47 L 455.74 213.53 L 456.41 213.14 L 456.91 213.11 L 457.94 212.48 L 459.13 213.06 L 460.34 213.11 L 461.54 212.48 L 460.98 211.69 L 460.06 212.15 L 459.20 212.14 L 458.10 211.46 L 457.22 211.50 L 456.59 212.16 L 453.57 212.24 Z\",\n \"M 468.01 215.44 L 468.14 214.57 L 467.90 213.50 L 466.86 212.72 L 466.32 211.13 L 466.19 209.40 L 467.12 208.89 L 467.59 207.26 L 468.47 207.19 L 470.41 207.97 L 471.98 207.42 L 473.05 207.60 L 473.47 206.98 L 484.61 206.94 L 485.23 205.00 L 484.75 204.65 L 483.41 192.66 L 482.07 180.67 L 486.32 180.63 L 495.69 186.69 L 505.07 192.75 L 505.73 194.05 L 507.46 194.84 L 508.75 195.30 L 508.78 197.06 L 511.86 196.79 L 511.87 203.19 L 510.35 205.04 L 510.11 206.75 L 507.64 207.20 L 503.85 207.44 L 502.83 208.42 L 501.05 208.53 L 499.26 208.54 L 498.56 208.01 L 497.03 208.40 L 494.44 209.56 L 493.91 210.43 L 491.75 211.67 L 491.37 212.39 L 490.21 212.95 L 488.87 212.58 L 488.11 213.26 L 487.70 215.16 L 485.49 217.46 L 485.56 218.40 L 484.80 219.58 L 484.98 221.19 L 483.84 221.61 L 483.19 221.95 L 482.76 220.76 L 481.96 221.08 L 481.48 221.03 L 480.97 221.84 L 478.82 221.81 L 478.05 221.39 L 477.69 221.65 L 476.84 220.85 L 476.99 220.02 L 476.64 219.70 L 476.05 219.97 L 476.16 219.07 L 476.73 218.35 L 475.59 217.19 L 475.26 216.42 L 474.64 215.81 L 474.09 215.74 L 473.42 216.13 L 472.52 216.50 L 471.76 217.10 L 470.57 216.88 L 469.80 216.17 L 469.34 216.08 L 468.61 216.45 L 468.17 216.45 L 468.01 215.44 Z\",\n \"M 452.60 191.67 L 453.20 190.74 L 464.08 190.76 L 463.55 186.75 L 464.23 185.32 L 466.84 185.07 L 466.75 177.96 L 475.86 178.11 L 475.87 173.90 L 486.32 180.63 L 482.07 180.67 L 483.41 192.66 L 484.75 204.65 L 485.23 205.00 L 484.61 206.94 L 473.47 206.98 L 473.05 207.60 L 471.98 207.42 L 470.41 207.97 L 468.47 207.19 L 467.59 207.26 L 467.12 208.89 L 466.19 209.40 L 464.35 207.49 L 462.67 205.45 L 460.83 204.71 L 459.50 203.89 L 457.95 203.92 L 456.60 204.53 L 455.22 204.29 L 454.26 205.18 L 454.02 203.68 L 454.80 202.32 L 455.14 199.70 L 454.84 196.96 L 454.50 195.57 L 454.78 194.19 L 454.06 192.87 L 452.60 191.67 Z\",\n \"M 507.48 232.61 L 505.19 232.94 L 504.50 231.02 L 504.63 224.64 L 504.07 224.07 L 503.96 222.71 L 503.00 221.73 L 502.15 220.91 L 502.50 219.45 L 503.46 219.14 L 504.02 217.92 L 505.38 217.66 L 505.99 216.83 L 506.92 216.02 L 507.92 216.01 L 510.04 217.61 L 509.93 218.54 L 510.55 220.18 L 510.01 221.30 L 510.30 222.05 L 508.95 223.77 L 508.09 224.62 L 507.57 226.37 L 507.64 228.14 L 507.48 232.61 Z\",\n \"M 541.26 186.49 L 541.94 190.81 L 542.98 191.53 L 543.02 192.41 L 544.18 193.37 L 543.58 194.56 L 542.51 200.20 L 542.36 203.82 L 538.82 206.43 L 537.62 210.09 L 538.77 211.12 L 538.77 212.91 L 540.55 212.97 L 540.27 214.28 L 539.49 214.44 L 539.40 215.32 L 538.88 215.39 L 537.00 212.34 L 536.35 212.23 L 534.18 213.79 L 532.03 212.97 L 530.53 212.81 L 529.73 213.20 L 528.10 213.12 L 526.46 214.30 L 525.05 214.37 L 521.68 212.94 L 520.37 213.62 L 518.95 213.57 L 517.91 212.52 L 515.12 211.48 L 512.14 211.81 L 511.42 212.41 L 511.03 214.01 L 510.23 215.13 L 510.04 217.61 L 507.92 216.01 L 506.92 216.02 L 505.99 216.83 L 506.05 214.93 L 502.85 214.30 L 502.76 212.95 L 501.20 211.14 L 500.83 209.88 L 501.05 208.53 L 502.83 208.42 L 503.85 207.44 L 507.64 207.20 L 510.11 206.75 L 510.35 205.04 L 511.87 203.19 L 511.86 196.79 L 515.78 195.55 L 523.82 190.10 L 533.34 184.80 L 537.73 186.00 L 539.29 187.52 L 541.26 186.49 Z\",\n \"M 507.48 232.61 L 507.64 228.14 L 507.57 226.37 L 508.09 224.62 L 508.95 223.77 L 510.30 222.05 L 510.01 221.30 L 510.55 220.18 L 509.93 218.54 L 510.04 217.61 L 510.23 215.13 L 511.03 214.01 L 511.42 212.41 L 512.14 211.81 L 515.12 211.48 L 517.91 212.52 L 518.95 213.57 L 520.37 213.62 L 521.68 212.94 L 525.05 214.37 L 526.46 214.30 L 528.10 213.12 L 529.73 213.20 L 530.53 212.81 L 532.03 212.97 L 534.18 213.79 L 536.35 212.23 L 537.00 212.34 L 538.88 215.39 L 539.40 215.32 L 540.50 216.43 L 540.19 216.93 L 540.05 217.85 L 537.71 220.00 L 536.97 221.77 L 536.58 223.22 L 535.99 223.84 L 535.43 225.79 L 533.95 226.93 L 533.52 228.33 L 532.89 229.45 L 532.63 230.61 L 530.72 231.54 L 529.16 230.40 L 528.11 230.45 L 526.46 232.07 L 525.65 232.10 L 524.33 234.78 L 523.62 236.74 L 520.73 237.75 L 519.68 237.60 L 518.61 238.22 L 516.39 238.16 L 514.90 236.42 L 513.99 234.41 L 512.02 232.58 L 509.93 232.62 L 507.48 232.61 Z\",\n \"M 540.27 214.28 L 541.38 216.06 L 541.56 217.90 L 541.46 219.75 L 542.97 222.27 L 541.42 222.25 L 540.64 222.44 L 539.37 222.16 L 538.77 223.47 L 540.41 225.09 L 541.62 225.56 L 542.01 226.72 L 542.88 228.63 L 542.45 229.38 L 541.05 232.20 L 540.38 232.70 L 540.17 234.85 L 540.45 236.03 L 540.22 236.85 L 541.54 238.31 L 541.77 239.30 L 542.80 240.74 L 544.07 241.63 L 544.19 242.89 L 544.48 243.70 L 544.28 245.20 L 542.08 244.54 L 539.83 243.81 L 536.33 243.70 L 535.98 243.55 L 534.34 243.91 L 532.65 243.54 L 531.33 243.72 L 526.81 243.66 L 527.21 241.47 L 526.13 239.63 L 524.86 239.16 L 524.30 237.91 L 523.58 237.51 L 523.62 236.74 L 524.33 234.78 L 525.65 232.10 L 526.46 232.07 L 528.11 230.45 L 529.16 230.40 L 530.72 231.54 L 532.63 230.61 L 532.89 229.45 L 533.52 228.33 L 533.95 226.93 L 535.43 225.79 L 535.99 223.84 L 536.58 223.22 L 536.97 221.77 L 537.71 220.00 L 540.05 217.85 L 540.19 216.93 L 540.50 216.43 L 539.40 215.32 L 539.49 214.44 L 540.27 214.28 Z\",\n \"M 502.50 219.45 L 502.15 220.91 L 503.00 221.73 L 503.96 222.71 L 504.07 224.07 L 504.63 224.64 L 504.50 231.02 L 505.19 232.94 L 502.95 233.53 L 502.33 232.56 L 501.59 230.79 L 501.37 229.41 L 501.98 226.91 L 501.29 225.90 L 501.02 223.71 L 501.03 221.69 L 499.86 220.26 L 500.07 219.39 L 502.50 219.45 Z\",\n \"M 500.07 219.39 L 499.86 220.26 L 501.03 221.69 L 501.02 223.71 L 501.29 225.90 L 501.98 226.91 L 501.37 229.41 L 501.59 230.79 L 502.33 232.56 L 502.95 233.53 L 498.58 235.16 L 497.04 236.11 L 494.54 236.91 L 492.06 236.12 L 492.19 235.03 L 490.98 232.64 L 491.71 229.50 L 492.88 227.17 L 492.14 223.21 L 491.76 221.13 L 491.83 219.55 L 496.65 219.42 L 497.88 219.62 L 498.78 219.17 L 500.07 219.39 Z\",\n \"M 477.69 221.65 L 478.05 221.39 L 478.82 221.81 L 480.97 221.84 L 481.48 221.03 L 481.96 221.08 L 482.76 220.76 L 483.19 221.95 L 483.84 221.61 L 484.98 221.19 L 486.23 221.80 L 486.72 222.72 L 487.97 223.30 L 488.94 222.60 L 490.24 222.50 L 492.14 223.21 L 492.88 227.17 L 491.71 229.50 L 490.98 232.64 L 492.19 235.03 L 492.06 236.12 L 490.80 236.16 L 488.86 235.61 L 487.08 235.64 L 483.79 236.13 L 481.86 236.93 L 479.11 237.95 L 478.57 237.88 L 478.79 235.59 L 479.05 235.24 L 478.97 234.14 L 477.79 232.98 L 476.91 232.80 L 476.10 232.03 L 476.70 230.80 L 476.42 229.46 L 476.55 228.65 L 476.99 228.65 L 477.16 227.44 L 476.94 226.90 L 477.21 226.51 L 478.24 226.18 L 477.55 223.96 L 476.91 222.80 L 477.14 221.86 L 477.69 221.65 Z\",\n \"M 461.94 215.04 L 463.28 215.07 L 465.28 215.74 L 465.89 215.68 L 466.10 215.37 L 467.61 215.59 L 468.01 215.44 L 468.17 216.45 L 468.61 216.45 L 469.34 216.08 L 469.80 216.17 L 470.57 216.88 L 471.76 217.10 L 472.52 216.50 L 473.42 216.13 L 474.09 215.74 L 474.64 215.81 L 475.26 216.42 L 475.59 217.19 L 476.73 218.35 L 476.16 219.07 L 476.05 219.97 L 476.64 219.70 L 476.99 220.02 L 476.84 220.85 L 477.69 221.65 L 477.14 221.86 L 476.91 222.80 L 477.55 223.96 L 478.24 226.18 L 477.21 226.51 L 476.94 226.90 L 477.16 227.44 L 476.99 228.65 L 476.55 228.65 L 475.77 228.58 L 475.20 229.70 L 474.42 229.68 L 473.87 229.09 L 474.06 227.98 L 472.90 226.27 L 472.17 226.59 L 471.58 226.65 L 470.81 226.81 L 470.84 225.79 L 470.40 225.06 L 470.49 224.26 L 469.89 223.09 L 469.11 222.09 L 466.89 222.09 L 466.24 222.62 L 465.48 222.68 L 465.00 223.28 L 464.68 224.05 L 463.20 225.27 L 461.98 223.63 L 460.90 222.54 L 460.19 222.18 L 459.50 221.62 L 459.18 220.40 L 458.77 219.79 L 457.97 219.33 L 459.20 217.98 L 460.04 218.03 L 460.77 217.56 L 461.38 217.56 L 461.82 217.19 L 461.58 216.27 L 461.89 215.98 L 461.94 215.04 Z\",\n \"M 453.67 215.60 L 455.14 215.15 L 456.06 215.24 L 456.81 214.92 L 461.94 215.04 L 461.89 215.98 L 461.58 216.27 L 461.82 217.19 L 461.38 217.56 L 460.77 217.56 L 460.04 218.03 L 459.20 217.98 L 457.97 219.33 L 456.48 218.17 L 455.31 217.99 L 454.68 217.21 L 454.69 216.78 L 453.85 216.19 L 453.67 215.60 Z\",\n \"M 476.55 228.65 L 476.42 229.46 L 476.70 230.80 L 476.10 232.03 L 476.91 232.80 L 477.79 232.98 L 478.97 234.14 L 479.05 235.24 L 478.79 235.59 L 478.57 237.88 L 477.84 237.90 L 474.98 236.58 L 472.46 234.46 L 470.09 232.94 L 468.22 231.15 L 468.88 230.26 L 469.03 229.45 L 470.29 227.95 L 471.58 226.65 L 472.17 226.59 L 472.90 226.27 L 474.06 227.98 L 473.87 229.09 L 474.42 229.68 L 475.20 229.70 L 475.77 228.58 L 476.55 228.65 Z\",\n \"M 463.20 225.27 L 464.68 224.05 L 465.00 223.28 L 465.48 222.68 L 466.24 222.62 L 466.89 222.09 L 469.11 222.09 L 469.89 223.09 L 470.49 224.26 L 470.40 225.06 L 470.84 225.79 L 470.81 226.81 L 471.58 226.65 L 470.29 227.95 L 469.03 229.45 L 468.88 230.26 L 468.22 231.15 L 467.47 230.94 L 465.47 229.82 L 464.03 228.34 L 463.54 227.32 L 463.20 225.27 Z\",\n \"M 484.98 221.19 L 484.80 219.58 L 485.56 218.40 L 485.49 217.46 L 487.70 215.16 L 488.11 213.26 L 488.87 212.58 L 490.21 212.95 L 491.37 212.39 L 491.75 211.67 L 493.91 210.43 L 494.44 209.56 L 497.03 208.40 L 498.56 208.01 L 499.26 208.54 L 501.05 208.53 L 500.83 209.88 L 501.20 211.14 L 502.76 212.95 L 502.85 214.30 L 506.05 214.93 L 505.99 216.83 L 505.38 217.66 L 504.02 217.92 L 503.46 219.14 L 502.50 219.45 L 500.07 219.39 L 498.78 219.17 L 497.88 219.62 L 496.65 219.42 L 491.83 219.55 L 491.76 221.13 L 492.14 223.21 L 490.24 222.50 L 488.94 222.60 L 487.97 223.30 L 486.72 222.72 L 486.23 221.80 L 484.98 221.19 Z\",\n \"M 576.04 235.46 L 575.13 235.76 L 573.35 235.69 L 571.26 235.40 L 570.22 235.64 L 569.81 236.31 L 568.91 236.40 L 567.81 235.81 L 564.72 237.20 L 563.45 236.91 L 563.07 237.13 L 562.24 238.81 L 560.17 238.27 L 558.14 237.99 L 556.37 236.97 L 554.08 236.03 L 552.59 236.92 L 551.51 238.33 L 551.26 240.27 L 549.48 240.11 L 547.60 239.65 L 545.94 241.12 L 544.48 243.70 L 544.19 242.89 L 544.07 241.63 L 542.80 240.74 L 541.77 239.30 L 541.54 238.31 L 540.22 236.85 L 540.45 236.03 L 540.17 234.85 L 540.38 232.70 L 541.05 232.20 L 542.45 229.38 L 544.74 229.18 L 545.26 228.46 L 545.72 228.51 L 546.41 229.14 L 549.91 228.08 L 551.09 227.00 L 552.54 226.03 L 552.26 225.05 L 553.04 224.79 L 555.73 224.96 L 558.34 223.68 L 560.35 220.65 L 561.76 219.52 L 563.52 219.05 L 563.83 220.24 L 565.43 221.97 L 565.44 223.11 L 564.99 224.26 L 565.17 225.13 L 566.13 225.93 L 568.25 227.14 L 569.77 228.26 L 569.79 229.17 L 571.66 230.61 L 572.82 231.81 L 573.52 233.48 L 575.60 234.58 L 576.04 235.46 Z\",\n \"M 551.26 240.27 L 551.10 241.94 L 550.27 243.43 L 549.72 245.16 L 549.38 247.62 L 549.52 249.20 L 549.07 250.16 L 549.00 251.18 L 548.68 252.07 L 546.85 253.41 L 545.58 254.84 L 544.37 257.53 L 544.47 259.82 L 543.76 260.71 L 542.15 262.07 L 540.51 263.81 L 539.47 263.31 L 539.30 262.53 L 537.78 262.50 L 536.83 263.56 L 536.10 263.28 L 535.06 262.33 L 534.22 262.80 L 533.10 263.99 L 530.82 261.05 L 532.94 259.52 L 531.89 257.68 L 532.84 256.98 L 534.71 256.64 L 534.94 255.41 L 536.42 256.75 L 538.87 256.86 L 539.72 255.55 L 540.08 253.70 L 539.77 251.54 L 538.46 249.89 L 539.66 246.67 L 538.97 246.12 L 536.90 246.35 L 536.12 244.92 L 536.33 243.70 L 539.83 243.81 L 542.08 244.54 L 544.28 245.20 L 544.48 243.70 L 545.94 241.12 L 547.60 239.65 L 549.48 240.11 L 551.26 240.27 Z\",\n \"M 531.33 243.72 L 532.65 243.54 L 534.34 243.91 L 535.98 243.55 L 536.33 243.70 L 536.12 244.92 L 536.90 246.35 L 538.97 246.12 L 539.66 246.67 L 538.46 249.89 L 539.77 251.54 L 540.08 253.70 L 539.72 255.55 L 538.87 256.86 L 536.42 256.75 L 534.94 255.41 L 534.71 256.64 L 532.84 256.98 L 531.89 257.68 L 532.94 259.52 L 530.82 261.05 L 527.97 258.25 L 526.13 255.96 L 524.44 253.09 L 524.53 252.17 L 525.14 251.28 L 525.81 249.26 L 526.37 247.20 L 527.31 247.03 L 531.35 247.06 L 531.33 243.72 Z\",\n \"M 526.81 243.66 L 531.33 243.72 L 531.35 247.06 L 527.31 247.03 L 526.37 247.20 L 525.85 246.77 L 526.81 243.66 Z\",\n \"M 585.39 273.17 L 586.55 273.87 L 587.66 274.34 L 589.43 274.81 L 591.00 275.64 L 592.31 276.88 L 593.02 279.24 L 592.55 279.99 L 591.99 282.24 L 592.52 284.55 L 591.65 285.51 L 590.80 288.09 L 592.27 288.81 L 583.84 291.10 L 584.10 293.08 L 582.00 293.46 L 580.41 294.56 L 580.08 295.53 L 579.08 295.74 L 576.67 298.03 L 575.13 299.83 L 574.19 299.89 L 573.29 299.57 L 570.18 299.27 L 569.68 299.06 L 569.66 298.83 L 568.57 298.20 L 566.77 298.04 L 564.49 298.67 L 562.68 296.94 L 560.80 294.67 L 560.93 285.83 L 566.72 285.86 L 566.48 284.91 L 566.89 283.86 L 566.40 282.56 L 566.72 281.22 L 566.43 280.35 L 567.39 280.42 L 567.54 281.29 L 568.85 281.22 L 570.61 281.48 L 571.54 282.74 L 573.76 283.13 L 575.46 282.25 L 576.08 283.70 L 578.21 284.09 L 579.24 285.27 L 580.38 286.80 L 582.50 286.83 L 582.27 283.83 L 581.51 284.33 L 579.57 283.25 L 578.82 282.76 L 579.16 279.97 L 579.65 276.68 L 579.03 275.46 L 579.82 273.68 L 580.57 273.35 L 584.30 272.89 L 585.39 273.17 Z\",\n \"M 591.00 275.64 L 593.73 276.16 L 594.28 276.93 L 595.23 278.22 L 596.00 282.00 L 595.23 284.11 L 596.00 287.72 L 596.97 287.68 L 597.97 288.58 L 599.13 290.59 L 599.37 294.16 L 598.17 294.74 L 597.32 296.67 L 595.51 294.95 L 595.30 292.99 L 595.89 291.71 L 595.73 290.59 L 594.63 289.89 L 593.86 290.14 L 592.27 288.81 L 590.80 288.09 L 591.65 285.51 L 592.52 284.55 L 591.99 282.24 L 592.55 279.99 L 593.02 279.24 L 592.31 276.88 L 591.00 275.64 Z\",\n \"M 596.00 282.00 L 598.09 281.78 L 601.43 282.56 L 602.16 282.21 L 604.09 282.13 L 605.08 281.30 L 606.75 281.35 L 609.78 280.27 L 611.99 278.66 L 612.44 279.90 L 612.33 282.67 L 612.67 285.11 L 612.78 289.45 L 613.27 290.81 L 612.44 292.80 L 611.36 294.72 L 609.59 296.45 L 607.05 297.50 L 603.92 298.85 L 600.79 301.83 L 599.72 302.34 L 597.78 304.32 L 596.63 304.95 L 596.40 306.93 L 597.72 309.04 L 598.26 310.67 L 598.30 311.50 L 598.79 311.36 L 598.71 314.09 L 598.26 315.38 L 598.91 315.85 L 598.50 317.00 L 597.34 318.00 L 595.05 318.93 L 591.71 320.44 L 590.49 321.47 L 590.73 322.63 L 591.44 322.82 L 591.20 324.28 L 589.09 324.26 L 588.85 323.03 L 588.44 321.79 L 588.21 320.79 L 588.70 317.69 L 587.98 315.72 L 586.65 311.81 L 589.57 308.65 L 590.31 306.65 L 590.73 306.40 L 591.04 304.77 L 590.59 303.94 L 590.71 301.87 L 591.25 299.94 L 591.25 296.43 L 589.80 295.53 L 588.48 295.33 L 587.88 294.64 L 586.60 294.06 L 584.28 294.11 L 584.10 293.08 L 583.84 291.10 L 592.27 288.81 L 593.86 290.14 L 594.63 289.89 L 595.73 290.59 L 595.89 291.71 L 595.30 292.99 L 595.51 294.95 L 597.32 296.67 L 598.17 294.74 L 599.37 294.16 L 599.13 290.59 L 597.97 288.58 L 596.97 287.68 L 596.00 287.72 L 595.23 284.11 L 596.00 282.00 Z\",\n \"M 589.09 324.26 L 588.53 325.50 L 586.90 325.79 L 585.24 324.29 L 585.22 323.33 L 585.98 322.28 L 586.24 321.48 L 587.04 321.28 L 588.44 321.79 L 588.85 323.03 L 589.09 324.26 Z\",\n \"M 536.10 263.28 L 535.09 263.86 L 534.64 264.58 L 534.55 265.79 L 533.84 266.08 L 533.10 263.99 L 534.22 262.80 L 535.06 262.33 L 536.10 263.28 Z\",\n \"M 534.23 266.94 L 535.38 266.57 L 536.18 266.62 L 537.16 266.29 L 545.36 266.33 L 546.04 268.40 L 546.84 270.06 L 547.48 270.96 L 548.54 272.41 L 550.38 272.19 L 551.29 271.80 L 552.83 272.19 L 553.25 271.49 L 553.94 269.88 L 555.66 269.77 L 555.81 269.28 L 557.23 269.27 L 556.99 270.28 L 560.36 270.25 L 560.41 272.00 L 560.97 273.07 L 560.56 274.75 L 560.77 276.45 L 561.70 277.48 L 561.55 280.79 L 562.23 280.53 L 563.44 280.61 L 565.16 280.19 L 566.43 280.35 L 566.72 281.22 L 566.40 282.56 L 566.89 283.86 L 566.48 284.91 L 566.72 285.86 L 560.93 285.83 L 560.80 294.67 L 562.68 296.94 L 564.49 298.67 L 559.39 299.81 L 552.66 299.42 L 550.74 298.08 L 539.48 298.20 L 539.06 298.40 L 537.40 297.14 L 535.60 297.06 L 533.94 297.53 L 532.60 298.06 L 532.34 296.31 L 532.72 293.87 L 533.68 291.33 L 533.83 290.14 L 534.73 287.63 L 535.39 286.49 L 536.98 284.68 L 537.88 283.44 L 538.17 281.38 L 538.02 279.81 L 537.19 278.81 L 536.45 277.13 L 535.77 275.46 L 535.92 274.89 L 536.77 273.78 L 535.93 271.10 L 535.36 269.24 L 533.97 267.48 L 534.23 266.94 Z\",\n \"M 584.64 256.70 L 584.80 257.80 L 585.40 258.43 L 585.43 259.33 L 584.74 259.91 L 583.66 261.36 L 582.65 262.37 L 581.50 262.50 L 581.33 259.15 L 580.63 257.89 L 582.32 258.10 L 583.17 256.52 L 584.64 256.70 Z\",\n \"M 599.23 159.14 L 598.74 160.02 L 597.74 159.63 L 597.16 161.48 L 597.85 161.79 L 597.14 162.17 L 597.02 162.91 L 598.33 162.53 L 598.40 163.61 L 597.01 168.05 L 596.74 167.33 L 595.19 163.28 L 595.99 162.37 L 595.80 162.21 L 596.54 160.91 L 597.10 158.81 L 597.50 158.11 L 597.58 158.08 L 598.51 158.09 L 598.76 157.60 L 599.51 157.56 L 599.55 158.70 L 599.17 159.12 L 599.23 159.14 Z\",\n \"M 599.51 157.56 L 598.76 157.60 L 598.51 158.09 L 597.58 158.08 L 598.57 155.82 L 599.95 153.86 L 600.00 153.76 L 601.25 153.91 L 601.70 154.99 L 600.19 156.04 L 599.51 157.56 Z\",\n \"M 637.62 284.64 L 638.36 285.82 L 639.05 287.65 L 639.50 291.00 L 640.22 292.29 L 639.94 293.63 L 639.45 294.45 L 638.51 292.82 L 637.98 293.64 L 638.51 295.70 L 638.27 296.87 L 637.50 297.52 L 637.32 299.87 L 636.23 303.11 L 634.86 306.93 L 633.14 312.20 L 632.08 316.06 L 630.83 319.28 L 628.57 319.94 L 626.14 321.11 L 624.54 320.40 L 622.34 319.41 L 621.57 317.95 L 621.39 315.48 L 620.41 313.27 L 620.15 311.27 L 620.65 309.27 L 621.93 308.79 L 621.94 307.86 L 623.27 305.76 L 623.52 303.99 L 622.87 302.67 L 622.35 300.92 L 622.12 298.36 L 623.09 296.81 L 623.47 295.04 L 624.85 294.94 L 626.40 294.37 L 627.43 293.87 L 628.65 293.84 L 630.23 292.25 L 632.52 290.54 L 633.35 289.14 L 632.97 287.95 L 634.15 288.29 L 635.68 286.36 L 635.74 284.69 L 636.66 283.45 L 637.62 284.64 Z\",\n \"M 598.33 162.53 L 597.02 162.91 L 597.14 162.17 L 597.85 161.79 L 597.16 161.48 L 597.74 159.63 L 598.74 160.02 L 598.74 161.72 L 598.33 162.53 Z\",\n \"M 453.57 212.24 L 456.59 212.16 L 457.22 211.50 L 458.10 211.46 L 459.20 212.14 L 460.06 212.15 L 460.98 211.69 L 461.54 212.48 L 460.34 213.11 L 459.13 213.06 L 457.94 212.48 L 456.91 213.11 L 456.41 213.14 L 455.74 213.53 L 453.21 213.47 L 453.57 212.24 Z\",\n \"M 526.34 165.81 L 525.16 160.82 L 523.45 159.71 L 523.42 159.03 L 521.15 157.38 L 520.91 155.29 L 522.62 153.73 L 523.27 151.44 L 522.83 148.80 L 523.40 147.37 L 526.42 146.25 L 528.37 146.58 L 528.28 147.99 L 530.64 146.97 L 530.84 147.50 L 529.45 148.86 L 529.43 150.15 L 530.39 150.84 L 530.03 153.24 L 528.20 154.64 L 528.73 156.15 L 530.16 156.20 L 530.86 157.52 L 531.92 157.95 L 531.76 160.09 L 530.41 160.89 L 529.55 161.77 L 527.64 162.85 L 527.94 163.99 L 527.70 165.17 L 526.34 165.81 Z\",\n \"M 475.87 173.90 L 475.93 173.36 L 475.92 173.18 L 475.90 169.88 L 480.39 167.83 L 483.16 167.41 L 485.43 166.66 L 486.50 165.28 L 489.74 164.18 L 489.86 162.12 L 491.47 161.88 L 492.73 160.85 L 496.36 160.38 L 496.87 159.30 L 496.14 158.71 L 495.18 155.78 L 495.01 154.09 L 493.97 152.31 L 496.64 150.79 L 499.64 150.31 L 501.40 149.16 L 504.08 148.32 L 508.79 147.82 L 513.38 147.60 L 514.78 148.01 L 517.40 146.92 L 520.37 146.89 L 521.50 147.54 L 523.40 147.37 L 522.83 148.80 L 523.27 151.44 L 522.62 153.73 L 520.91 155.29 L 521.15 157.38 L 523.42 159.03 L 523.45 159.71 L 525.16 160.82 L 526.34 165.81 L 527.24 168.27 L 527.39 169.55 L 526.90 171.82 L 527.11 173.09 L 526.75 174.61 L 526.99 176.35 L 525.89 177.51 L 527.53 179.54 L 527.64 180.73 L 528.63 182.28 L 529.93 181.77 L 532.12 183.06 L 533.34 184.80 L 523.82 190.10 L 515.78 195.55 L 511.86 196.79 L 508.78 197.06 L 508.75 195.30 L 507.46 194.84 L 505.73 194.05 L 505.07 192.75 L 495.69 186.69 L 486.32 180.63 L 475.87 173.90 Z\",\n \"M 598.74 160.02 L 599.23 159.14 L 602.32 160.24 L 607.76 157.28 L 608.88 160.66 L 608.35 161.08 L 602.79 162.47 L 605.56 165.25 L 604.64 165.73 L 604.18 166.65 L 602.06 167.04 L 601.40 168.04 L 600.20 168.90 L 597.10 168.45 L 597.01 168.05 L 598.40 163.61 L 598.33 162.53 L 598.74 161.72 L 598.74 160.02 Z\",\n \"M 599.23 159.14 L 599.17 159.12 L 599.55 158.70 L 599.51 157.56 L 600.19 156.04 L 601.70 154.99 L 601.25 153.91 L 600.00 153.76 L 599.74 151.64 L 600.42 150.49 L 601.16 149.89 L 601.91 149.28 L 602.06 147.73 L 602.97 148.27 L 606.03 147.50 L 607.50 148.02 L 609.79 148.01 L 612.99 146.97 L 614.48 147.02 L 617.64 146.58 L 616.22 148.32 L 614.70 149.00 L 614.96 151.03 L 613.91 154.39 L 607.76 157.28 L 602.32 160.24 L 599.23 159.14 Z\",\n \"M 573.03 151.94 L 572.68 152.77 L 568.68 153.00 L 568.71 152.54 L 565.32 152.00 L 565.84 150.82 L 567.36 151.75 L 569.52 151.59 L 571.59 151.79 L 571.52 152.28 L 573.03 151.94 Z\",\n \"M 563.76 135.17 L 565.82 135.25 L 568.04 134.49 L 570.00 135.46 L 572.52 135.20 L 572.55 133.81 L 573.90 134.55 L 573.04 136.29 L 572.38 136.60 L 570.69 136.52 L 569.24 136.26 L 565.88 136.98 L 567.80 138.54 L 566.39 138.99 L 564.85 139.00 L 563.38 137.57 L 562.86 138.18 L 563.48 139.84 L 564.87 141.14 L 563.82 141.75 L 565.37 143.03 L 566.74 143.83 L 566.78 145.40 L 564.21 144.66 L 565.03 146.08 L 563.27 146.38 L 564.32 148.83 L 562.48 148.86 L 560.20 147.66 L 559.16 145.43 L 558.67 143.58 L 557.59 142.30 L 556.16 140.72 L 555.98 139.93 L 557.27 138.58 L 557.43 137.68 L 558.34 137.28 L 558.39 136.55 L 560.21 136.30 L 561.27 135.69 L 562.77 135.75 L 563.23 135.27 L 563.76 135.17 Z\",\n \"M 601.20 209.94 L 600.90 208.83 L 602.10 204.75 L 602.37 202.90 L 603.25 202.05 L 605.29 201.59 L 606.70 200.01 L 608.31 203.22 L 609.08 205.77 L 610.60 207.12 L 614.39 209.75 L 615.93 211.33 L 617.44 212.93 L 618.31 213.89 L 619.67 214.72 L 618.84 215.40 L 617.65 215.16 L 616.70 214.26 L 615.56 212.64 L 614.32 211.74 L 613.61 210.78 L 611.19 209.67 L 609.28 209.64 L 608.61 209.05 L 606.98 209.71 L 605.30 208.45 L 604.43 210.52 L 601.20 209.94 Z\",\n \"M 590.93 152.39 L 591.12 152.38 L 591.52 151.70 L 593.52 151.74 L 596.05 150.91 L 594.17 152.09 L 594.38 152.62 L 594.08 152.52 L 593.55 152.73 L 593.13 152.67 L 592.99 152.78 L 592.94 152.50 L 592.74 152.32 L 592.20 152.30 L 591.45 152.54 L 590.93 152.39 Z\",\n \"M 590.93 152.39 L 591.45 152.54 L 592.20 152.30 L 592.74 152.32 L 592.94 152.50 L 592.99 152.78 L 593.13 152.67 L 593.55 152.73 L 594.08 152.52 L 594.38 152.62 L 594.46 152.84 L 591.61 153.97 L 590.25 153.61 L 589.61 152.49 L 590.93 152.39 Z\",\n \"M 493.97 152.31 L 495.01 154.09 L 495.18 155.78 L 496.14 158.71 L 496.87 159.30 L 496.36 160.38 L 492.73 160.85 L 491.47 161.88 L 489.86 162.12 L 489.74 164.18 L 486.50 165.28 L 485.43 166.66 L 483.16 167.41 L 480.39 167.83 L 475.90 169.88 L 475.92 173.18 L 475.50 173.18 L 475.57 174.67 L 473.85 174.75 L 472.95 175.38 L 471.69 175.38 L 470.69 175.03 L 468.35 175.32 L 467.44 177.49 L 466.58 177.69 L 465.27 181.20 L 461.41 184.19 L 460.49 188.03 L 459.35 189.27 L 459.02 190.27 L 452.77 190.50 L 452.72 190.50 L 452.85 189.21 L 453.91 188.45 L 454.82 187.00 L 454.64 186.06 L 455.60 184.10 L 457.15 182.33 L 458.08 181.89 L 458.82 180.27 L 458.88 178.79 L 459.88 177.07 L 461.73 176.06 L 463.50 173.22 L 463.55 173.18 L 464.94 172.12 L 467.53 171.81 L 469.71 169.91 L 471.11 169.17 L 473.43 166.85 L 472.73 163.40 L 473.79 161.01 L 474.16 159.54 L 475.95 157.66 L 478.73 156.40 L 480.79 155.25 L 482.65 152.37 L 483.52 150.67 L 485.57 150.68 L 487.24 151.86 L 489.88 151.67 L 492.76 152.28 L 493.97 152.31 Z\",\n \"M 602.41 188.89 L 591.39 188.89 L 580.62 188.89 L 569.45 188.89 L 569.45 178.66 L 569.45 168.78 L 568.62 166.55 L 569.33 164.83 L 568.90 163.64 L 569.91 162.31 L 573.60 162.26 L 576.28 163.00 L 579.03 163.82 L 580.32 164.25 L 582.46 163.37 L 583.60 162.57 L 586.05 162.34 L 588.03 162.70 L 588.78 164.07 L 589.43 163.17 L 591.65 163.82 L 593.82 163.98 L 595.19 163.28 L 596.74 167.33 L 597.01 168.05 L 596.23 169.17 L 595.63 171.27 L 594.88 172.71 L 594.23 173.20 L 593.30 172.30 L 592.05 171.06 L 590.07 167.08 L 589.78 167.33 L 590.93 170.26 L 592.64 173.06 L 594.74 177.38 L 595.76 178.89 L 596.66 180.46 L 599.15 183.54 L 598.60 184.02 L 598.69 185.83 L 601.92 188.32 L 602.41 188.89 Z\",\n \"M 569.45 188.89 L 569.45 194.44 L 566.25 194.44 L 566.22 195.61 L 555.14 190.29 L 544.06 184.97 L 541.26 186.49 L 539.29 187.52 L 537.73 186.00 L 533.34 184.80 L 532.12 183.06 L 529.93 181.77 L 528.63 182.28 L 527.64 180.73 L 527.53 179.54 L 525.89 177.51 L 526.99 176.35 L 526.75 174.61 L 527.11 173.09 L 526.90 171.82 L 527.39 169.55 L 527.24 168.27 L 526.34 165.81 L 527.70 165.17 L 527.94 163.99 L 527.64 162.85 L 529.55 161.77 L 530.41 160.89 L 531.76 160.09 L 531.92 157.95 L 535.18 158.91 L 536.35 158.67 L 538.67 159.13 L 542.35 160.37 L 543.65 162.85 L 546.15 163.38 L 550.06 164.55 L 553.02 165.93 L 554.38 165.21 L 555.71 163.93 L 555.06 161.80 L 555.93 160.45 L 557.93 159.15 L 559.85 158.77 L 563.60 159.34 L 564.55 160.58 L 565.59 160.59 L 566.47 161.06 L 569.23 161.39 L 569.91 162.31 L 568.90 163.64 L 569.33 164.83 L 568.62 166.55 L 569.45 168.78 L 569.45 178.66 L 569.45 188.89 Z\",\n \"M 632.75 227.77 L 624.90 236.11 L 621.28 236.23 L 618.81 238.19 L 617.03 238.24 L 616.27 239.11 L 614.37 239.11 L 613.25 238.17 L 610.71 239.34 L 609.89 240.50 L 608.04 240.28 L 607.42 239.96 L 606.77 240.03 L 605.90 240.00 L 602.38 237.64 L 600.45 237.64 L 599.50 236.73 L 599.50 235.17 L 598.05 234.70 L 596.41 231.68 L 595.14 231.04 L 594.66 229.93 L 593.25 228.57 L 591.54 228.38 L 592.49 226.79 L 593.96 226.73 L 594.38 225.87 L 594.34 223.38 L 595.16 220.47 L 596.48 219.69 L 596.76 218.56 L 597.95 216.44 L 599.63 215.06 L 600.75 212.32 L 601.20 209.94 L 604.43 210.52 L 605.30 208.45 L 606.98 209.71 L 608.61 209.05 L 609.28 209.64 L 611.19 209.67 L 613.61 210.78 L 614.32 211.74 L 615.56 212.64 L 616.70 214.26 L 617.65 215.16 L 616.67 216.39 L 615.73 217.69 L 615.95 218.46 L 615.99 219.30 L 617.54 219.35 L 618.21 219.15 L 618.83 219.65 L 618.22 220.63 L 619.25 222.16 L 620.27 223.50 L 621.33 224.49 L 630.42 227.79 L 632.75 227.77 Z\",\n \"M 594.18 252.64 L 588.52 252.85 L 585.48 252.82 L 584.50 253.15 L 582.84 254.01 L 582.17 253.73 L 582.19 251.63 L 582.84 250.57 L 582.99 248.34 L 583.58 247.05 L 584.64 245.60 L 585.71 244.86 L 586.60 243.88 L 585.49 243.50 L 585.65 240.25 L 586.80 239.50 L 588.56 240.12 L 590.80 239.47 L 592.75 239.47 L 594.46 238.19 L 595.78 240.13 L 596.10 241.52 L 597.33 244.70 L 596.32 246.73 L 594.95 248.57 L 594.15 249.69 L 594.18 252.64 Z\",\n \"M 584.50 253.15 L 585.60 254.72 L 585.44 256.35 L 584.64 256.70 L 583.17 256.52 L 582.32 258.10 L 580.63 257.89 L 580.89 256.37 L 581.27 256.15 L 581.37 254.50 L 582.17 253.73 L 582.84 254.01 L 584.50 253.15 Z\",\n \"M 585.65 240.25 L 583.21 238.40 L 582.55 237.22 L 581.00 237.81 L 579.72 237.62 L 578.97 238.09 L 577.73 237.76 L 576.04 235.46 L 575.60 234.58 L 573.52 233.48 L 572.82 231.81 L 571.66 230.61 L 569.79 229.17 L 569.77 228.26 L 568.25 227.14 L 566.36 226.06 L 567.21 225.75 L 568.16 225.23 L 568.88 222.75 L 569.64 221.46 L 571.64 221.08 L 572.12 221.85 L 573.55 223.46 L 574.32 223.70 L 575.32 223.23 L 577.32 223.32 L 577.70 223.90 L 580.47 223.90 L 580.56 223.32 L 581.99 222.80 L 582.28 221.99 L 583.33 221.41 L 585.66 223.04 L 587.10 222.75 L 588.48 220.75 L 590.00 219.22 L 589.77 217.55 L 589.10 216.74 L 590.77 216.60 L 590.96 215.98 L 592.25 216.17 L 591.91 218.22 L 592.25 220.22 L 593.68 221.32 L 594.01 222.27 L 593.96 223.66 L 594.35 223.71 L 594.38 225.87 L 593.96 226.73 L 592.49 226.79 L 591.54 228.38 L 593.25 228.57 L 594.66 229.93 L 595.14 231.04 L 596.41 231.68 L 598.05 234.70 L 596.17 236.54 L 594.46 238.19 L 592.75 239.47 L 590.80 239.47 L 588.56 240.12 L 586.80 239.50 L 585.65 240.25 Z\"\n ]\n },\n {\n \"id\": \"asia\",\n \"label\": \"Asia\",\n \"paths\": [\n \"M 742.67 113.29 L 740.55 115.14 L 738.25 115.40 L 738.12 118.19 L 736.57 119.44 L 731.06 118.53 L 729.06 123.50 L 727.63 124.12 L 722.13 125.23 L 724.63 130.05 L 722.73 130.78 L 722.95 132.36 L 721.24 131.95 L 719.84 130.96 L 715.72 130.66 L 711.11 130.59 L 710.11 130.89 L 706.15 129.73 L 704.57 130.30 L 704.14 131.94 L 699.57 130.98 L 697.74 131.38 L 697.12 132.60 L 695.53 133.11 L 691.86 135.05 L 690.65 137.03 L 689.61 137.05 L 688.85 135.73 L 685.32 135.64 L 684.75 133.37 L 683.40 133.35 L 683.61 130.56 L 680.28 128.53 L 675.52 128.75 L 672.26 129.15 L 669.61 126.65 L 667.34 125.60 L 663.03 123.61 L 662.51 123.37 L 655.36 125.01 L 655.47 135.25 L 654.05 135.39 L 652.10 133.21 L 650.22 132.43 L 647.07 133.01 L 645.84 133.94 L 645.69 133.26 L 646.37 132.10 L 645.84 131.13 L 642.62 130.18 L 641.37 127.69 L 639.83 126.99 L 639.74 126.08 L 642.44 126.35 L 642.55 124.32 L 644.91 123.87 L 647.34 124.28 L 647.84 121.57 L 647.34 119.85 L 644.56 119.99 L 642.20 119.31 L 638.99 120.53 L 636.40 121.11 L 634.98 120.66 L 635.27 119.23 L 633.50 117.38 L 631.43 117.46 L 629.08 115.57 L 630.68 113.47 L 629.87 112.90 L 632.09 109.85 L 634.94 111.46 L 635.29 109.43 L 641.02 106.41 L 645.36 106.34 L 651.48 108.26 L 654.77 109.38 L 657.72 108.21 L 662.12 108.16 L 665.68 109.60 L 666.48 108.77 L 670.39 108.89 L 671.08 107.57 L 666.58 105.67 L 669.25 104.31 L 668.73 103.55 L 671.39 102.84 L 669.39 100.93 L 670.66 99.98 L 681.05 99.02 L 682.41 98.33 L 689.36 97.31 L 691.86 96.15 L 696.85 96.75 L 697.73 99.63 L 700.63 98.95 L 704.19 99.90 L 703.96 101.42 L 706.63 101.26 L 713.59 98.64 L 712.57 99.51 L 716.12 101.66 L 722.32 108.71 L 723.80 107.25 L 727.63 108.85 L 731.62 108.14 L 733.16 108.64 L 734.49 110.24 L 736.43 110.79 L 737.62 111.97 L 741.20 111.59 L 742.67 113.29 Z\",\n \"M 655.47 135.25 L 655.36 125.01 L 662.51 123.37 L 663.03 123.61 L 667.34 125.60 L 669.61 126.65 L 672.26 129.15 L 675.52 128.75 L 680.28 128.53 L 683.61 130.56 L 683.40 133.35 L 684.75 133.37 L 685.32 135.64 L 688.85 135.73 L 689.61 137.05 L 690.65 137.03 L 691.86 135.05 L 695.53 133.11 L 697.12 132.60 L 697.95 132.87 L 695.61 134.66 L 697.66 135.71 L 699.64 135.02 L 702.93 136.48 L 699.38 138.48 L 697.26 138.21 L 696.12 138.28 L 695.72 137.51 L 696.30 136.22 L 692.59 136.86 L 691.70 138.65 L 690.38 140.18 L 688.06 140.05 L 687.34 141.28 L 689.38 141.94 L 689.98 144.01 L 688.42 146.82 L 686.32 146.24 L 684.78 146.22 L 684.85 144.51 L 681.16 143.32 L 678.25 141.97 L 676.44 140.66 L 673.27 138.74 L 671.90 135.88 L 670.97 135.37 L 667.96 135.50 L 666.90 134.93 L 666.60 132.71 L 662.86 131.25 L 660.52 132.86 L 658.15 133.82 L 658.60 135.21 L 655.47 135.25 Z\",\n \"M 615.52 254.68 L 613.87 252.38 L 613.84 242.26 L 616.27 239.11 L 617.03 238.24 L 618.81 238.19 L 621.28 236.23 L 624.90 236.11 L 632.75 227.77 L 634.69 225.45 L 635.94 223.74 L 635.94 222.30 L 635.94 219.49 L 635.95 218.35 L 635.97 218.31 L 636.86 218.25 L 638.14 217.84 L 639.61 217.56 L 640.93 216.61 L 641.98 216.60 L 642.04 217.36 L 641.79 218.98 L 641.80 220.44 L 641.21 221.45 L 640.43 224.45 L 639.09 227.55 L 637.37 231.10 L 634.99 235.17 L 632.62 238.28 L 629.35 242.07 L 626.57 244.32 L 622.42 247.07 L 619.83 249.19 L 616.79 252.55 L 616.15 254.02 L 615.52 254.68 Z\",\n \"M 760.50 24.93 L 766.50 24.31 L 771.90 25.70 L 778.30 28.39 L 777.61 30.89 L 771.55 31.23 L 763.82 30.43 L 759.20 29.37 L 757.07 27.38 L 753.28 26.83 L 760.50 24.93 Z\",\n \"M 785.66 29.77 L 792.70 31.35 L 791.88 32.48 L 776.22 33.55 L 781.29 29.90 L 783.58 29.59 L 785.66 29.77 Z\",\n \"M 885.64 38.51 L 892.98 38.63 L 903.02 40.10 L 900.83 42.17 L 890.60 42.09 L 885.99 42.74 L 880.49 40.94 L 881.98 39.03 L 885.64 38.51 Z\",\n \"M 911.73 40.70 L 918.70 41.43 L 915.49 42.53 L 911.05 42.28 L 905.89 41.19 L 906.55 40.29 L 911.73 40.70 Z\",\n \"M 888.51 46.20 L 891.14 45.10 L 894.62 44.84 L 898.56 45.90 L 898.90 46.63 L 894.69 46.65 L 889.00 46.34 L 888.51 46.20 Z\",\n \"M 624.58 26.14 L 630.00 25.64 L 634.22 25.60 L 634.79 26.35 L 636.38 25.68 L 639.00 25.23 L 643.12 25.83 L 642.05 26.26 L 638.32 26.62 L 635.82 26.83 L 635.43 27.29 L 632.19 27.75 L 629.18 27.09 L 630.76 26.22 L 624.58 26.14 Z\",\n \"M 563.15 99.09 L 558.04 99.13 L 554.62 98.82 L 555.25 97.59 L 559.08 96.69 L 561.99 97.18 L 563.22 97.62 L 562.92 98.38 L 563.15 99.09 Z\",\n \"M 648.64 45.14 L 655.29 42.70 L 654.54 41.44 L 660.75 39.98 L 669.92 38.19 L 679.17 37.67 L 683.92 36.64 L 689.33 36.28 L 691.26 37.38 L 689.39 38.24 L 679.55 39.62 L 671.07 40.94 L 662.44 43.59 L 658.30 46.30 L 653.95 48.97 L 654.51 51.28 L 659.82 53.55 L 658.18 53.80 L 649.11 53.44 L 648.37 52.20 L 643.34 51.46 L 642.94 49.96 L 645.78 49.36 L 645.68 47.85 L 651.19 45.48 L 648.64 45.14 Z\",\n \"M 896.99 100.82 L 897.95 103.50 L 897.88 106.23 L 899.02 109.04 L 901.82 113.95 L 897.71 113.04 L 896.00 117.05 L 898.71 119.90 L 898.63 121.84 L 896.52 120.17 L 894.70 122.31 L 894.19 119.98 L 894.50 117.28 L 894.18 114.28 L 894.82 112.18 L 894.95 108.47 L 893.32 105.74 L 893.56 101.94 L 896.13 100.66 L 895.03 99.37 L 896.26 98.98 L 896.99 100.82 Z\",\n \"M 863.28 132.72 L 862.89 132.23 L 862.87 130.82 L 864.29 130.75 L 864.69 127.47 L 863.96 125.09 L 866.34 124.11 L 869.72 124.60 L 871.58 121.90 L 872.54 118.85 L 873.61 117.84 L 875.07 115.34 L 870.48 116.16 L 868.08 117.25 L 863.85 117.25 L 862.73 114.64 L 859.44 112.67 L 854.61 111.78 L 853.58 109.06 L 852.61 107.35 L 851.57 106.15 L 849.85 103.35 L 847.41 102.33 L 843.26 101.50 L 839.57 101.58 L 836.12 102.08 L 833.83 103.46 L 835.35 104.12 L 835.39 105.66 L 833.84 106.54 L 831.33 109.49 L 831.36 110.71 L 827.44 112.47 L 824.11 111.42 L 820.80 111.65 L 819.34 110.72 L 817.68 110.42 L 813.61 112.38 L 809.95 112.84 L 807.40 113.53 L 803.90 113.08 L 801.32 113.10 L 799.64 111.68 L 796.92 110.35 L 794.13 109.98 L 790.62 110.35 L 787.99 110.86 L 784.05 109.69 L 783.52 107.61 L 780.25 106.90 L 777.73 106.57 L 774.62 105.43 L 771.74 108.30 L 772.87 109.94 L 770.17 111.87 L 766.15 111.18 L 763.38 111.07 L 761.52 109.77 L 758.63 109.74 L 756.21 108.88 L 751.98 110.19 L 746.68 112.58 L 743.76 113.06 L 742.67 113.29 L 741.20 111.59 L 737.62 111.97 L 736.43 110.79 L 734.49 110.24 L 733.16 108.64 L 731.62 108.14 L 727.63 108.85 L 723.80 107.25 L 722.32 108.71 L 716.12 101.66 L 712.57 99.51 L 713.59 98.64 L 706.63 101.26 L 703.96 101.42 L 704.19 99.90 L 700.63 98.95 L 697.73 99.63 L 696.85 96.75 L 691.86 96.15 L 689.36 97.31 L 682.41 98.33 L 681.05 99.02 L 670.66 99.98 L 669.39 100.93 L 671.39 102.84 L 668.73 103.55 L 669.25 104.31 L 666.58 105.67 L 671.08 107.57 L 670.39 108.89 L 666.48 108.77 L 665.68 109.60 L 662.12 108.16 L 657.72 108.21 L 654.77 109.38 L 651.48 108.26 L 645.36 106.34 L 641.02 106.41 L 635.29 109.43 L 634.94 111.46 L 632.09 109.85 L 629.87 112.90 L 630.68 113.47 L 629.08 115.57 L 631.43 117.46 L 633.50 117.38 L 635.27 119.23 L 634.98 120.66 L 636.40 121.11 L 635.13 122.76 L 632.44 123.22 L 629.68 126.08 L 632.20 128.72 L 631.93 130.59 L 634.96 133.87 L 633.30 134.98 L 632.82 135.69 L 631.60 135.50 L 629.69 133.81 L 628.91 133.72 L 627.16 133.08 L 626.31 131.94 L 623.72 131.35 L 622.03 131.79 L 621.55 131.27 L 617.77 129.94 L 613.68 129.49 L 611.33 129.02 L 610.99 129.35 L 607.45 127.00 L 604.28 125.95 L 601.88 124.32 L 603.90 123.87 L 606.21 121.55 L 604.65 120.45 L 608.75 119.32 L 608.67 118.71 L 606.18 119.16 L 606.27 117.93 L 607.70 117.15 L 610.39 116.95 L 610.83 116.02 L 610.21 114.49 L 611.34 113.03 L 611.31 112.22 L 607.21 111.32 L 605.59 111.34 L 603.87 110.04 L 601.74 110.48 L 598.22 109.51 L 598.28 108.96 L 597.29 107.76 L 595.07 107.62 L 594.84 106.76 L 595.54 106.20 L 593.76 104.63 L 590.88 104.89 L 590.04 104.75 L 589.34 105.38 L 588.30 105.28 L 587.62 103.49 L 586.96 102.57 L 587.50 102.31 L 589.74 102.41 L 590.82 101.80 L 590.02 101.06 L 588.15 100.57 L 588.31 100.07 L 587.18 99.56 L 585.44 97.74 L 586.04 97.00 L 585.77 95.69 L 583.05 95.03 L 581.59 95.36 L 581.20 94.67 L 578.27 93.97 L 577.38 92.34 L 577.14 90.99 L 575.80 90.35 L 577.00 89.47 L 576.17 86.88 L 578.15 85.27 L 577.73 84.79 L 580.89 83.25 L 577.98 81.94 L 583.92 78.39 L 586.50 76.78 L 587.55 75.37 L 583.44 73.46 L 584.57 71.65 L 582.07 69.59 L 583.94 67.21 L 580.71 64.04 L 583.27 61.95 L 579.02 60.10 L 579.43 58.15 L 581.67 57.90 L 586.40 56.78 L 589.26 55.81 L 593.82 57.50 L 601.43 58.16 L 611.93 61.30 L 614.06 62.62 L 614.24 64.47 L 611.16 65.93 L 606.62 66.67 L 594.22 64.56 L 592.18 64.91 L 596.71 66.94 L 596.89 68.23 L 597.07 71.07 L 600.65 71.92 L 602.82 72.64 L 603.18 71.29 L 601.50 70.10 L 603.27 69.05 L 609.99 70.78 L 612.32 70.10 L 610.46 68.06 L 616.93 65.34 L 619.49 65.50 L 622.09 66.47 L 623.70 64.56 L 621.39 62.91 L 622.75 61.25 L 620.71 59.52 L 628.48 60.42 L 630.06 61.97 L 626.55 62.32 L 626.56 63.86 L 628.75 64.81 L 633.04 64.21 L 633.72 62.44 L 639.52 61.11 L 649.22 58.73 L 651.31 58.87 L 648.58 60.55 L 652.02 60.84 L 654.01 59.89 L 659.22 59.82 L 663.34 58.66 L 666.51 60.34 L 669.66 58.50 L 666.75 56.89 L 668.20 55.97 L 676.40 56.81 L 680.25 57.68 L 690.31 60.85 L 692.17 59.40 L 689.35 57.93 L 689.27 57.34 L 685.92 57.07 L 686.84 55.75 L 685.35 53.59 L 685.27 52.70 L 690.39 50.18 L 692.22 47.66 L 694.28 47.11 L 701.64 47.85 L 702.21 49.39 L 699.58 51.64 L 701.31 52.53 L 702.20 54.47 L 701.57 58.27 L 704.64 59.98 L 703.44 61.83 L 698.00 65.78 L 701.18 66.19 L 702.28 65.19 L 705.34 64.48 L 706.08 63.10 L 708.48 61.78 L 706.86 60.20 L 708.16 58.36 L 705.12 58.13 L 704.45 56.59 L 706.67 53.80 L 703.06 51.54 L 708.03 49.67 L 707.39 47.69 L 708.78 47.62 L 710.23 49.17 L 709.14 51.85 L 712.11 52.35 L 710.84 50.35 L 715.49 49.26 L 721.26 49.11 L 726.39 50.69 L 723.92 48.38 L 723.64 45.42 L 728.47 44.86 L 735.16 44.98 L 741.18 44.62 L 738.92 43.17 L 742.13 41.34 L 745.32 41.27 L 750.72 39.89 L 758.06 39.52 L 758.99 38.76 L 766.28 38.50 L 768.55 39.12 L 774.79 37.65 L 779.89 37.70 L 780.66 36.50 L 783.31 35.31 L 789.87 34.17 L 794.63 35.07 L 790.85 35.76 L 797.14 36.18 L 797.89 37.55 L 800.43 36.88 L 808.55 36.91 L 814.81 38.27 L 817.04 39.31 L 816.35 40.76 L 813.28 41.58 L 805.98 43.12 L 803.89 43.94 L 807.34 44.33 L 811.44 45.03 L 813.95 44.51 L 815.36 46.29 L 816.58 45.57 L 821.02 45.13 L 829.94 45.59 L 830.61 46.89 L 842.23 47.30 L 842.38 45.18 L 848.28 45.67 L 852.71 45.65 L 857.20 47.12 L 858.48 48.89 L 856.83 50.06 L 860.32 52.24 L 864.69 53.37 L 867.37 50.46 L 871.83 51.71 L 876.56 50.96 L 881.94 51.81 L 883.98 51.03 L 888.53 51.42 L 886.52 48.84 L 890.19 47.64 L 915.28 49.44 L 917.64 51.09 L 924.91 53.21 L 936.13 52.69 L 941.66 53.15 L 943.97 54.30 L 943.64 56.33 L 947.06 57.12 L 950.78 56.55 L 955.70 56.48 L 960.95 57.02 L 966.21 56.71 L 971.05 59.19 L 974.49 58.30 L 972.25 56.52 L 973.48 55.29 L 982.34 56.06 L 988.12 55.89 L 996.11 57.22 L 0.00 58.43 L 6.81 60.55 L 14.09 63.32 L 13.85 65.04 L 15.72 65.74 L 15.08 63.72 L 22.62 64.13 L 28.06 66.73 L 25.30 67.94 L 20.75 68.23 L 20.68 70.94 L 19.57 71.52 L 16.97 71.44 L 14.85 70.47 L 11.16 69.66 L 10.54 68.45 L 7.71 68.00 L 4.56 68.36 L 3.05 67.39 L 3.65 66.36 L 0.32 67.01 L 1.58 68.32 L 0.00 69.50 L 999.98 69.52 L 996.41 70.74 L 992.81 70.53 L 995.31 72.01 L 996.97 74.30 L 998.25 75.05 L 998.57 76.20 L 997.86 76.93 L 992.68 76.33 L 984.91 78.42 L 982.44 78.74 L 978.19 80.70 L 974.16 82.40 L 973.14 83.66 L 969.17 81.74 L 961.93 83.92 L 960.67 82.89 L 957.99 84.08 L 954.28 83.70 L 953.38 85.52 L 950.05 88.21 L 950.15 89.34 L 953.31 89.96 L 952.94 94.00 L 950.36 94.10 L 949.17 96.43 L 950.33 97.63 L 945.47 99.05 L 944.51 102.21 L 940.36 102.89 L 939.53 105.71 L 935.53 108.30 L 934.50 106.39 L 933.31 102.34 L 931.76 96.16 L 933.10 92.31 L 935.44 90.65 L 935.58 89.36 L 939.90 88.74 L 944.86 85.24 L 949.65 82.38 L 954.64 80.16 L 956.87 76.25 L 953.50 76.48 L 951.83 78.77 L 944.78 81.82 L 942.51 78.41 L 935.34 79.35 L 928.38 84.01 L 930.68 85.71 L 924.48 86.43 L 920.18 86.72 L 920.38 84.71 L 916.07 84.29 L 912.63 85.66 L 904.13 85.18 L 894.99 86.00 L 886.00 91.42 L 875.35 97.97 L 879.73 98.32 L 881.09 100.06 L 883.79 100.68 L 885.57 99.29 L 888.62 99.47 L 892.63 102.53 L 892.72 104.89 L 890.55 107.67 L 890.32 110.98 L 889.06 115.43 L 884.88 119.45 L 883.94 121.37 L 880.17 124.60 L 876.43 127.81 L 874.64 129.45 L 870.94 131.08 L 869.19 131.11 L 867.44 129.77 L 863.71 131.80 L 863.28 132.72 Z\",\n \"M 0.00 51.34 L 0.36 51.23 L 2.71 51.24 L 6.73 52.03 L 6.49 52.41 L 3.63 53.07 L 0.00 53.24 L 996.95 53.38 L 996.46 52.51 L 0.00 51.34 Z\",\n \"M 592.88 122.30 L 593.61 121.61 L 595.59 122.21 L 596.48 122.32 L 596.84 122.87 L 597.26 122.95 L 597.28 123.19 L 598.64 123.86 L 601.48 123.70 L 600.93 124.68 L 597.89 125.17 L 594.12 126.78 L 592.58 126.21 L 593.19 124.90 L 590.15 124.09 L 590.65 123.56 L 593.30 122.63 L 592.88 122.30 Z\",\n \"M 643.28 182.65 L 643.77 182.52 L 643.88 183.28 L 646.05 182.84 L 648.35 182.91 L 650.03 183.00 L 651.93 181.12 L 654.00 179.33 L 655.76 177.62 L 656.28 178.57 L 656.66 180.76 L 655.24 180.78 L 655.01 182.58 L 655.51 182.97 L 654.25 183.52 L 654.24 184.65 L 653.43 185.80 L 653.36 186.92 L 652.80 187.51 L 644.45 186.11 L 643.39 183.29 L 643.28 182.65 Z\",\n \"M 641.14 181.24 L 640.96 179.22 L 641.71 177.76 L 642.47 177.46 L 643.31 178.33 L 643.36 179.95 L 642.75 181.59 L 641.98 181.79 L 641.14 181.24 Z\",\n \"M 633.27 166.73 L 633.85 167.96 L 633.60 168.60 L 634.49 170.69 L 632.53 170.76 L 631.84 169.44 L 629.36 169.17 L 631.40 166.50 L 633.27 166.73 Z\",\n \"M 608.88 160.66 L 607.76 157.28 L 613.91 154.39 L 614.96 151.03 L 614.70 149.00 L 616.22 148.32 L 617.64 146.58 L 618.83 146.15 L 622.07 146.51 L 623.04 147.22 L 624.37 146.75 L 626.17 150.06 L 627.99 150.89 L 628.20 152.52 L 626.81 153.48 L 626.16 155.64 L 628.09 158.29 L 631.49 159.81 L 632.92 161.92 L 632.46 163.93 L 633.35 163.93 L 633.38 165.41 L 634.91 166.87 L 633.27 166.73 L 631.40 166.50 L 629.36 169.17 L 624.20 168.95 L 616.36 163.36 L 612.23 161.42 L 608.88 160.66 Z\",\n \"M 653.36 186.92 L 653.43 185.80 L 654.24 184.65 L 654.25 183.52 L 655.51 182.97 L 655.01 182.58 L 655.24 180.78 L 656.66 180.76 L 657.91 182.66 L 659.46 183.67 L 661.49 184.04 L 663.14 184.54 L 664.39 186.13 L 665.14 187.05 L 666.14 187.41 L 666.13 188.03 L 665.12 189.68 L 664.68 190.46 L 663.51 191.35 L 662.47 193.25 L 661.21 193.10 L 660.63 193.77 L 660.19 195.18 L 660.53 197.04 L 660.27 197.37 L 658.99 197.36 L 657.25 198.40 L 656.98 199.76 L 656.35 200.35 L 654.62 200.32 L 653.53 201.02 L 653.54 202.14 L 652.20 202.92 L 650.67 202.65 L 648.81 203.59 L 647.53 203.75 L 646.62 201.81 L 644.45 197.22 L 652.78 194.44 L 654.63 188.89 L 653.36 186.92 Z\",\n \"M 656.28 178.57 L 655.76 177.62 L 656.56 176.68 L 656.91 176.92 L 656.65 178.06 L 656.28 178.57 Z\",\n \"M 784.96 216.15 L 784.30 212.80 L 786.08 210.48 L 789.67 209.96 L 792.28 210.35 L 794.57 211.44 L 795.83 209.53 L 798.29 210.55 L 798.93 212.40 L 798.59 215.73 L 793.92 217.87 L 795.14 219.55 L 792.22 219.75 L 789.82 220.87 L 787.49 220.46 L 786.37 219.02 L 784.96 216.15 Z\",\n \"M 792.28 210.35 L 789.67 209.96 L 786.08 210.48 L 784.30 212.80 L 784.96 216.15 L 782.47 214.87 L 780.09 214.92 L 780.50 212.74 L 778.05 212.76 L 777.83 215.81 L 776.33 219.87 L 775.43 222.33 L 775.62 224.34 L 777.43 224.42 L 778.56 226.96 L 779.06 229.36 L 780.61 230.95 L 782.29 231.28 L 783.73 232.72 L 782.82 233.86 L 780.99 234.19 L 780.77 232.76 L 778.50 231.55 L 778.02 232.04 L 776.92 230.98 L 776.45 229.60 L 774.97 228.03 L 773.62 226.72 L 773.17 228.35 L 772.64 226.81 L 772.94 225.07 L 773.76 222.41 L 775.11 219.56 L 776.63 216.97 L 775.55 214.43 L 775.59 213.14 L 775.27 211.59 L 773.42 209.38 L 772.76 207.99 L 773.72 207.48 L 774.73 205.06 L 773.60 203.23 L 771.83 201.20 L 770.49 198.76 L 771.66 198.26 L 772.93 195.25 L 774.89 195.13 L 776.51 193.93 L 778.10 193.28 L 779.30 194.14 L 779.46 195.81 L 781.34 195.94 L 780.66 198.86 L 780.72 201.36 L 783.65 199.70 L 784.48 200.19 L 786.11 200.11 L 786.67 199.14 L 788.77 199.33 L 790.88 201.59 L 791.06 204.33 L 793.30 206.75 L 793.18 209.10 L 792.28 210.35 Z\",\n \"M 798.29 210.55 L 795.83 209.53 L 794.57 211.44 L 792.28 210.35 L 793.18 209.10 L 793.30 206.75 L 791.06 204.33 L 790.88 201.59 L 788.77 199.33 L 786.67 199.14 L 786.11 200.11 L 784.48 200.19 L 783.65 199.70 L 780.72 201.36 L 780.66 198.86 L 781.34 195.94 L 779.46 195.81 L 779.30 194.14 L 778.10 193.28 L 778.69 192.26 L 781.06 190.45 L 781.31 191.11 L 782.79 191.18 L 782.37 188.00 L 783.81 187.60 L 785.43 189.79 L 786.68 192.32 L 790.10 192.34 L 791.18 194.76 L 789.40 195.49 L 788.60 196.49 L 791.93 198.14 L 794.24 201.43 L 795.99 203.88 L 798.09 205.81 L 798.79 207.77 L 798.29 210.55 Z\",\n \"M 778.10 193.28 L 776.51 193.93 L 774.89 195.13 L 772.93 195.25 L 771.66 198.26 L 770.49 198.76 L 771.83 201.20 L 773.60 203.23 L 774.73 205.06 L 773.72 207.48 L 772.76 207.99 L 773.42 209.38 L 775.27 211.59 L 775.59 213.14 L 775.55 214.43 L 776.63 216.97 L 775.11 219.56 L 773.76 222.41 L 773.49 220.35 L 774.35 218.22 L 773.41 216.58 L 773.64 213.55 L 772.51 212.11 L 771.61 208.78 L 771.11 205.28 L 769.90 202.97 L 768.07 204.37 L 764.92 206.35 L 763.36 206.10 L 761.64 205.45 L 762.60 202.01 L 762.02 199.41 L 759.84 196.20 L 760.18 195.20 L 758.55 194.84 L 756.58 192.58 L 756.40 190.35 L 757.37 190.77 L 757.43 188.77 L 758.80 188.12 L 758.50 186.94 L 759.13 185.99 L 759.24 183.11 L 761.41 183.75 L 762.65 181.46 L 762.79 180.11 L 764.32 177.77 L 764.24 176.18 L 767.83 174.27 L 769.82 174.77 L 769.59 173.06 L 770.56 172.55 L 770.36 171.50 L 771.98 171.29 L 772.91 172.93 L 774.12 173.59 L 774.20 175.71 L 774.09 178.00 L 771.46 180.32 L 771.13 183.62 L 774.06 183.16 L 774.72 185.71 L 776.48 186.25 L 775.67 188.56 L 777.73 189.60 L 778.94 190.11 L 780.97 189.31 L 781.06 190.45 L 778.69 192.26 L 778.10 193.28 Z\",\n \"M 789.82 220.87 L 792.22 219.75 L 795.14 219.55 L 793.92 217.87 L 798.59 215.73 L 798.93 212.40 L 798.29 210.55 L 798.79 207.77 L 798.09 205.81 L 795.99 203.88 L 794.24 201.43 L 791.93 198.14 L 788.60 196.49 L 789.40 195.49 L 791.18 194.76 L 790.10 192.34 L 786.68 192.32 L 785.43 189.79 L 783.81 187.60 L 785.30 186.92 L 787.51 186.93 L 790.22 186.61 L 792.58 185.13 L 793.92 186.17 L 796.46 186.68 L 796.02 188.28 L 797.34 189.41 L 800.14 190.13 L 796.43 192.51 L 794.12 195.13 L 793.51 197.06 L 795.63 199.99 L 798.23 203.62 L 800.75 205.33 L 802.44 207.57 L 803.71 212.71 L 803.34 217.59 L 801.02 219.42 L 797.84 221.21 L 795.57 223.52 L 792.11 226.11 L 791.10 224.33 L 791.88 222.45 L 789.82 220.87 Z\",\n \"M 863.28 132.72 L 863.28 132.72 L 863.28 132.72 L 863.28 132.72 Z\",\n \"M 862.89 132.23 L 863.28 132.72 L 862.22 132.55 L 861.02 133.49 L 860.19 134.44 L 860.29 136.44 L 858.86 137.05 L 858.36 137.54 L 857.32 138.36 L 855.47 138.82 L 854.26 139.56 L 854.17 140.77 L 853.85 141.07 L 854.96 141.52 L 856.53 142.74 L 856.13 143.41 L 854.95 143.60 L 852.98 143.73 L 851.90 144.98 L 850.66 144.89 L 850.49 145.14 L 849.14 144.61 L 848.80 145.13 L 847.99 145.37 L 847.89 144.84 L 847.17 144.58 L 846.42 144.14 L 847.18 142.92 L 847.84 142.60 L 847.59 142.09 L 848.30 140.59 L 848.12 140.14 L 846.49 139.83 L 845.18 139.09 L 847.45 137.31 L 850.51 135.81 L 852.42 133.84 L 853.73 134.71 L 856.14 134.82 L 855.70 133.35 L 859.99 132.15 L 861.10 130.60 L 862.89 132.23 Z\",\n \"M 850.49 145.14 L 850.66 144.89 L 851.90 144.98 L 852.98 143.73 L 854.95 143.60 L 856.13 143.41 L 856.53 142.74 L 858.93 146.02 L 859.61 147.82 L 859.64 151.02 L 858.59 152.55 L 856.07 153.08 L 853.85 154.23 L 851.35 154.47 L 851.04 152.96 L 851.55 150.88 L 850.33 147.98 L 852.39 147.52 L 850.49 145.14 Z\",\n \"M 743.76 113.06 L 746.68 112.58 L 751.98 110.19 L 756.21 108.88 L 758.63 109.74 L 761.52 109.77 L 763.38 111.07 L 766.15 111.18 L 770.17 111.87 L 772.87 109.94 L 771.74 108.30 L 774.62 105.43 L 777.73 106.57 L 780.25 106.90 L 783.52 107.61 L 784.05 109.69 L 787.99 110.86 L 790.62 110.35 L 794.13 109.98 L 796.92 110.35 L 799.64 111.68 L 801.32 113.10 L 803.90 113.08 L 807.40 113.53 L 809.95 112.84 L 813.61 112.38 L 817.68 110.42 L 819.34 110.72 L 820.80 111.65 L 824.11 111.42 L 822.76 113.52 L 820.79 116.29 L 821.51 117.42 L 823.08 117.08 L 825.82 117.51 L 827.96 116.48 L 830.19 117.37 L 832.70 119.31 L 832.40 120.30 L 830.21 119.99 L 826.17 120.35 L 824.22 121.14 L 822.18 122.98 L 817.95 124.06 L 815.18 125.53 L 812.32 124.97 L 810.76 124.72 L 809.30 126.51 L 810.19 127.57 L 810.64 128.49 L 808.70 129.43 L 806.70 130.91 L 803.46 131.89 L 799.29 131.99 L 794.81 132.96 L 791.57 134.45 L 790.34 133.59 L 786.98 133.59 L 782.87 131.90 L 780.13 131.49 L 776.44 131.88 L 770.70 131.25 L 767.64 131.32 L 766.01 129.67 L 764.74 127.11 L 763.03 126.80 L 759.67 125.07 L 755.93 124.68 L 752.63 124.20 L 751.63 123.00 L 752.70 119.76 L 750.78 117.52 L 746.82 116.47 L 744.49 115.00 L 743.76 113.06 Z\",\n \"M 770.36 171.50 L 770.56 172.55 L 769.59 173.06 L 769.82 174.77 L 767.83 174.27 L 764.24 176.18 L 764.32 177.77 L 762.79 180.11 L 762.65 181.46 L 761.41 183.75 L 759.24 183.11 L 759.13 185.99 L 758.50 186.94 L 758.80 188.12 L 757.43 188.77 L 755.96 184.37 L 755.20 184.38 L 754.74 186.15 L 753.22 184.71 L 754.08 183.13 L 755.32 182.97 L 756.60 180.62 L 755.00 180.15 L 752.43 180.19 L 749.78 179.80 L 749.54 177.88 L 748.21 177.74 L 746.01 176.54 L 745.03 178.42 L 747.03 179.89 L 745.30 180.93 L 744.68 181.94 L 746.39 182.69 L 745.92 184.36 L 746.88 186.45 L 747.31 188.73 L 746.92 189.75 L 745.03 189.72 L 741.60 190.29 L 741.76 192.38 L 740.28 194.02 L 736.28 195.89 L 733.17 199.16 L 731.08 200.91 L 728.32 202.73 L 728.31 204.01 L 726.93 204.69 L 724.42 205.69 L 723.13 205.84 L 722.29 207.95 L 722.87 211.57 L 723.02 213.87 L 721.84 216.51 L 721.83 221.23 L 720.39 221.37 L 719.13 223.48 L 719.97 224.40 L 717.44 225.19 L 716.51 227.07 L 715.39 227.87 L 712.76 225.28 L 711.48 221.39 L 710.41 218.59 L 709.44 217.28 L 707.96 214.61 L 707.27 211.13 L 706.79 209.40 L 704.26 205.58 L 703.11 200.20 L 702.28 196.65 L 702.29 193.28 L 701.75 190.68 L 697.71 192.34 L 695.75 192.01 L 692.13 188.64 L 693.46 187.64 L 692.64 186.55 L 689.38 184.19 L 691.23 182.33 L 697.35 182.34 L 696.79 179.96 L 695.23 178.55 L 694.92 176.41 L 693.10 175.16 L 696.16 172.25 L 699.39 172.47 L 702.29 169.55 L 704.03 166.73 L 706.73 163.95 L 706.69 161.97 L 709.05 160.36 L 706.81 158.99 L 705.85 157.11 L 704.86 154.67 L 706.23 153.48 L 710.44 154.15 L 713.54 153.74 L 716.22 151.41 L 719.20 154.66 L 718.92 156.93 L 720.03 158.35 L 719.94 159.77 L 717.94 159.39 L 718.72 162.46 L 721.45 164.21 L 725.31 166.16 L 723.55 167.42 L 722.47 170.02 L 725.16 171.07 L 727.78 172.43 L 731.40 173.99 L 735.21 174.35 L 736.81 175.76 L 738.96 176.02 L 742.30 176.67 L 744.61 176.63 L 744.93 175.53 L 744.57 173.76 L 744.78 172.56 L 746.48 171.98 L 746.71 174.17 L 746.77 174.73 L 749.29 175.78 L 751.04 175.35 L 753.38 175.53 L 755.65 175.45 L 755.85 173.74 L 754.72 172.86 L 756.96 172.51 L 759.48 170.44 L 762.69 168.68 L 765.02 169.36 L 767.00 168.19 L 768.30 169.91 L 767.36 171.08 L 770.36 171.50 Z\",\n \"M 757.43 188.77 L 757.37 190.77 L 756.40 190.35 L 756.58 192.58 L 755.79 191.13 L 755.63 189.72 L 755.10 188.38 L 753.94 186.76 L 751.38 186.65 L 751.63 187.80 L 750.76 189.34 L 749.58 188.78 L 749.17 189.29 L 748.39 188.98 L 747.31 188.73 L 746.88 186.45 L 745.92 184.36 L 746.39 182.69 L 744.68 181.94 L 745.30 180.93 L 747.03 179.89 L 745.03 178.42 L 746.01 176.54 L 748.21 177.74 L 749.54 177.88 L 749.78 179.80 L 752.43 180.19 L 755.00 180.15 L 756.60 180.62 L 755.32 182.97 L 754.08 183.13 L 753.22 184.71 L 754.74 186.15 L 755.20 184.38 L 755.96 184.37 L 757.43 188.77 Z\",\n \"M 754.72 172.86 L 755.85 173.74 L 755.65 175.45 L 753.38 175.53 L 751.04 175.35 L 749.29 175.78 L 746.77 174.73 L 746.71 174.17 L 748.55 172.10 L 750.05 171.40 L 752.03 172.04 L 753.50 172.11 L 754.72 172.86 Z\",\n \"M 744.78 172.56 L 744.57 173.76 L 744.93 175.53 L 744.61 176.63 L 742.30 176.67 L 738.96 176.02 L 736.81 175.76 L 735.21 174.35 L 731.40 173.99 L 727.78 172.43 L 725.16 171.07 L 722.47 170.02 L 723.55 167.42 L 725.31 166.16 L 726.46 165.49 L 728.69 166.35 L 731.49 168.16 L 733.06 168.55 L 733.99 169.89 L 736.15 170.44 L 738.40 171.66 L 741.54 172.30 L 744.78 172.56 Z\",\n \"M 716.22 151.41 L 713.54 153.74 L 710.44 154.15 L 706.23 153.48 L 704.86 154.67 L 705.85 157.11 L 706.81 158.99 L 709.05 160.36 L 706.69 161.97 L 706.73 163.95 L 704.03 166.73 L 702.29 169.55 L 699.39 172.47 L 696.16 172.25 L 693.10 175.16 L 694.92 176.41 L 695.23 178.55 L 696.79 179.96 L 697.35 182.34 L 691.23 182.33 L 689.38 184.19 L 687.35 183.49 L 686.52 181.49 L 684.37 179.38 L 679.25 179.90 L 674.74 179.95 L 670.83 180.34 L 671.88 177.11 L 675.88 175.68 L 675.65 174.40 L 674.32 173.95 L 674.25 171.50 L 671.59 170.28 L 670.47 168.60 L 669.10 167.14 L 673.75 168.56 L 676.53 168.14 L 678.19 168.50 L 678.75 167.89 L 680.69 168.13 L 684.30 166.98 L 684.40 164.61 L 685.94 163.04 L 688.01 163.05 L 688.32 162.27 L 690.44 161.91 L 691.47 162.16 L 692.55 161.38 L 692.40 159.71 L 693.58 158.04 L 695.35 157.34 L 694.25 155.50 L 696.90 155.59 L 697.66 154.59 L 697.54 153.52 L 698.93 152.35 L 698.61 150.97 L 697.95 149.79 L 699.58 148.58 L 702.56 148.00 L 705.75 147.68 L 707.16 147.17 L 708.78 146.85 L 710.83 148.15 L 711.65 150.28 L 716.22 151.41 Z\",\n \"M 684.78 146.22 L 686.32 146.24 L 688.42 146.82 L 689.27 147.16 L 691.28 146.27 L 692.21 146.80 L 693.11 145.53 L 694.77 145.59 L 695.20 145.18 L 695.49 144.06 L 696.69 143.09 L 698.19 143.72 L 697.89 144.58 L 698.73 144.71 L 698.47 147.04 L 699.57 147.95 L 700.54 147.36 L 701.77 147.09 L 703.50 145.84 L 705.42 146.05 L 708.28 146.06 L 708.78 146.85 L 707.16 147.17 L 705.75 147.68 L 702.56 148.00 L 699.58 148.58 L 697.95 149.79 L 698.61 150.97 L 698.93 152.35 L 697.54 153.52 L 697.66 154.59 L 696.90 155.59 L 694.25 155.50 L 695.35 157.34 L 693.58 158.04 L 692.40 159.71 L 692.55 161.38 L 691.47 162.16 L 690.44 161.91 L 688.32 162.27 L 688.01 163.05 L 685.94 163.04 L 684.40 164.61 L 684.30 166.98 L 680.69 168.13 L 678.75 167.89 L 678.19 168.50 L 676.53 168.14 L 673.75 168.56 L 669.10 167.14 L 671.62 164.62 L 671.39 162.84 L 669.29 162.37 L 669.07 160.60 L 668.16 158.38 L 669.35 156.87 L 668.14 156.46 L 668.90 154.43 L 670.03 150.97 L 672.87 152.03 L 674.96 151.66 L 675.54 150.40 L 677.73 149.98 L 679.30 149.13 L 679.85 146.91 L 682.19 146.38 L 682.63 145.38 L 683.94 146.13 L 684.78 146.22 Z\",\n \"M 688.42 146.82 L 689.98 144.01 L 689.38 141.94 L 687.34 141.28 L 688.06 140.05 L 690.38 140.18 L 691.70 138.65 L 692.59 136.86 L 696.30 136.22 L 695.72 137.51 L 696.12 138.28 L 697.26 138.21 L 696.25 139.07 L 693.22 138.60 L 692.96 140.20 L 695.97 139.99 L 699.40 140.89 L 704.66 140.47 L 705.36 143.04 L 706.27 142.76 L 707.96 143.39 L 707.86 144.47 L 708.28 146.06 L 705.42 146.05 L 703.50 145.84 L 701.77 147.09 L 700.54 147.36 L 699.57 147.95 L 698.47 147.04 L 698.73 144.71 L 697.89 144.58 L 698.19 143.72 L 696.69 143.09 L 695.49 144.06 L 695.20 145.18 L 694.77 145.59 L 693.11 145.53 L 692.21 146.80 L 691.28 146.27 L 689.27 147.16 L 688.42 146.82 Z\",\n \"M 697.12 132.60 L 697.74 131.38 L 699.57 130.98 L 704.14 131.94 L 704.57 130.30 L 706.15 129.73 L 710.11 130.89 L 711.11 130.59 L 715.72 130.66 L 719.84 130.96 L 721.24 131.95 L 722.95 132.36 L 722.56 132.99 L 718.18 134.50 L 717.19 135.60 L 713.63 135.92 L 712.58 137.70 L 709.64 137.33 L 707.72 137.87 L 705.06 139.18 L 705.45 139.83 L 704.66 140.47 L 699.40 140.89 L 695.97 139.99 L 692.96 140.20 L 693.22 138.60 L 696.25 139.07 L 697.26 138.21 L 699.38 138.48 L 702.93 136.48 L 699.64 135.02 L 697.66 135.71 L 695.61 134.66 L 697.95 132.87 L 697.12 132.60 Z\",\n \"M 645.84 133.94 L 647.07 133.01 L 650.22 132.43 L 652.10 133.21 L 654.05 135.39 L 655.47 135.25 L 658.60 135.21 L 658.15 133.82 L 660.52 132.86 L 662.86 131.25 L 666.60 132.71 L 666.90 134.93 L 667.96 135.50 L 670.97 135.37 L 671.90 135.88 L 673.27 138.74 L 676.44 140.66 L 678.25 141.97 L 681.16 143.32 L 684.85 144.51 L 684.78 146.22 L 683.94 146.13 L 682.63 145.38 L 682.19 146.38 L 679.85 146.91 L 679.30 149.13 L 677.73 149.98 L 675.54 150.40 L 674.96 151.66 L 672.87 152.03 L 670.03 150.97 L 669.79 148.63 L 667.72 148.53 L 664.54 146.08 L 662.33 145.77 L 659.25 144.36 L 657.28 144.11 L 656.06 144.62 L 654.20 144.54 L 652.23 146.13 L 649.79 146.67 L 649.27 144.71 L 649.67 141.80 L 647.51 140.86 L 648.22 138.96 L 646.38 138.80 L 646.99 136.46 L 649.61 137.14 L 652.05 136.25 L 650.03 134.58 L 649.23 132.99 L 646.99 133.70 L 646.71 135.74 L 645.84 133.94 Z\",\n \"M 634.91 166.87 L 633.38 165.41 L 633.35 163.93 L 632.46 163.93 L 632.92 161.92 L 631.49 159.81 L 628.09 158.29 L 626.16 155.64 L 626.81 153.48 L 628.20 152.52 L 627.99 150.89 L 626.17 150.06 L 624.37 146.75 L 622.85 144.52 L 623.40 143.66 L 622.53 140.48 L 624.43 139.69 L 624.87 140.73 L 626.28 142.02 L 628.18 142.38 L 629.19 142.30 L 632.46 140.25 L 633.50 140.05 L 634.32 140.87 L 633.37 142.24 L 635.10 143.69 L 635.79 143.56 L 636.67 145.61 L 639.30 146.18 L 641.23 147.58 L 645.18 148.05 L 649.52 147.32 L 649.79 146.67 L 652.23 146.13 L 654.20 144.54 L 656.06 144.62 L 657.28 144.11 L 659.25 144.36 L 662.33 145.77 L 664.54 146.08 L 667.72 148.53 L 669.79 148.63 L 670.03 150.97 L 668.90 154.43 L 668.14 156.46 L 669.35 156.87 L 668.16 158.38 L 669.07 160.60 L 669.29 162.37 L 671.39 162.84 L 671.62 164.62 L 669.10 167.14 L 670.47 168.60 L 671.59 170.28 L 674.25 171.50 L 674.32 173.95 L 675.65 174.40 L 675.88 175.68 L 671.88 177.11 L 670.83 180.34 L 665.60 179.50 L 662.57 178.86 L 659.44 178.50 L 658.26 175.09 L 656.93 174.60 L 654.79 175.10 L 651.99 176.44 L 648.60 175.52 L 645.79 173.39 L 643.12 172.60 L 641.26 169.96 L 639.21 166.25 L 637.72 166.71 L 635.95 165.78 L 634.91 166.87 Z\",\n \"M 629.19 142.30 L 628.18 142.38 L 627.05 140.78 L 627.06 140.35 L 625.83 140.36 L 625.01 139.61 L 624.43 139.69 L 623.34 138.88 L 621.27 138.19 L 621.54 136.83 L 621.07 135.85 L 624.93 135.42 L 625.50 136.15 L 626.56 136.63 L 626.00 137.33 L 627.48 138.28 L 626.70 139.17 L 627.88 139.92 L 629.12 140.38 L 629.19 142.30 Z\",\n \"M 727.19 229.10 L 726.77 232.00 L 725.61 232.79 L 723.19 233.42 L 721.87 231.21 L 721.38 227.22 L 722.64 222.71 L 724.56 224.25 L 725.85 226.21 L 727.19 229.10 Z\",\n \"M 804.10 199.45 L 801.82 198.59 L 801.74 196.20 L 803.11 194.94 L 806.15 194.16 L 807.74 194.23 L 808.36 195.29 L 807.14 196.51 L 806.50 198.12 L 804.10 199.45 Z\",\n \"M 722.95 132.36 L 722.73 130.78 L 724.63 130.05 L 722.13 125.23 L 727.63 124.12 L 729.06 123.50 L 731.06 118.53 L 736.57 119.44 L 738.12 118.19 L 738.25 115.40 L 740.55 115.14 L 742.67 113.29 L 743.76 113.06 L 744.49 115.00 L 746.82 116.47 L 750.78 117.52 L 752.70 119.76 L 751.63 123.00 L 752.63 124.20 L 755.93 124.68 L 759.67 125.07 L 763.03 126.80 L 764.74 127.11 L 766.01 129.67 L 767.64 131.32 L 770.70 131.25 L 776.44 131.88 L 780.13 131.49 L 782.87 131.90 L 786.98 133.59 L 790.34 133.59 L 791.57 134.45 L 794.81 132.96 L 799.29 131.99 L 803.46 131.89 L 806.70 130.91 L 808.70 129.43 L 810.64 128.49 L 810.19 127.57 L 809.30 126.51 L 810.76 124.72 L 812.32 124.97 L 815.18 125.53 L 817.95 124.06 L 822.18 122.98 L 824.22 121.14 L 826.17 120.35 L 830.21 119.99 L 832.40 120.30 L 832.70 119.31 L 830.19 117.37 L 827.96 116.48 L 825.82 117.51 L 823.08 117.08 L 821.51 117.42 L 820.79 116.29 L 822.76 113.52 L 824.11 111.42 L 827.44 112.47 L 831.36 110.71 L 831.33 109.49 L 833.84 106.54 L 835.39 105.66 L 835.35 104.12 L 833.83 103.46 L 836.12 102.08 L 839.57 101.58 L 843.26 101.50 L 847.41 102.33 L 849.85 103.35 L 851.57 106.15 L 852.61 107.35 L 853.58 109.06 L 854.61 111.78 L 859.44 112.67 L 862.73 114.64 L 863.85 117.25 L 868.08 117.25 L 870.48 116.16 L 875.07 115.34 L 873.61 117.84 L 872.54 118.85 L 871.58 121.90 L 869.72 124.60 L 866.34 124.11 L 863.96 125.09 L 864.69 127.47 L 864.29 130.75 L 862.87 130.82 L 862.89 132.23 L 861.10 130.60 L 859.99 132.15 L 855.70 133.35 L 856.14 134.82 L 853.73 134.71 L 852.42 133.84 L 850.51 135.81 L 847.45 137.31 L 845.18 139.09 L 841.30 139.89 L 839.26 141.20 L 836.26 141.95 L 837.74 140.66 L 837.16 139.58 L 839.36 137.72 L 837.89 136.26 L 835.47 137.24 L 832.33 139.17 L 830.62 140.96 L 827.90 141.10 L 826.48 142.39 L 827.95 144.27 L 830.22 144.73 L 830.31 145.98 L 832.51 146.79 L 835.62 144.81 L 838.09 145.89 L 839.88 145.96 L 840.33 147.42 L 836.40 148.19 L 835.10 149.69 L 832.40 151.08 L 830.98 153.03 L 833.97 154.56 L 835.06 157.29 L 836.75 159.83 L 838.64 161.97 L 838.59 164.03 L 836.85 164.79 L 837.51 166.27 L 839.15 167.13 L 838.72 169.39 L 838.01 171.60 L 836.46 171.84 L 834.43 174.85 L 832.18 178.50 L 829.60 181.81 L 825.78 184.37 L 821.92 186.72 L 818.79 187.04 L 817.09 188.27 L 816.13 187.36 L 814.56 188.75 L 810.68 190.14 L 807.74 190.56 L 806.79 193.50 L 805.25 193.66 L 804.52 191.64 L 805.18 190.57 L 801.45 189.68 L 800.14 190.13 L 797.34 189.41 L 796.02 188.28 L 796.46 186.68 L 793.92 186.17 L 792.58 185.13 L 790.22 186.61 L 787.51 186.93 L 785.30 186.92 L 783.81 187.60 L 782.37 188.00 L 782.79 191.18 L 781.31 191.11 L 781.06 190.45 L 780.97 189.31 L 778.94 190.11 L 777.73 189.60 L 775.67 188.56 L 776.48 186.25 L 774.72 185.71 L 774.06 183.16 L 771.13 183.62 L 771.46 180.32 L 774.09 178.00 L 774.20 175.71 L 774.12 173.59 L 772.91 172.93 L 771.98 171.29 L 770.36 171.50 L 767.36 171.08 L 768.30 169.91 L 767.00 168.19 L 765.02 169.36 L 762.69 168.68 L 759.48 170.44 L 756.96 172.51 L 754.72 172.86 L 753.50 172.11 L 752.03 172.04 L 750.05 171.40 L 748.55 172.10 L 746.71 174.17 L 746.48 171.98 L 744.78 172.56 L 741.54 172.30 L 738.40 171.66 L 736.15 170.44 L 733.99 169.89 L 733.06 168.55 L 731.49 168.16 L 728.69 166.35 L 726.46 165.49 L 725.31 166.16 L 721.45 164.21 L 718.72 162.46 L 717.94 159.39 L 719.94 159.77 L 720.03 158.35 L 718.92 156.93 L 719.20 154.66 L 716.22 151.41 L 711.65 150.28 L 710.83 148.15 L 708.78 146.85 L 708.28 146.06 L 707.86 144.47 L 707.96 143.39 L 706.27 142.76 L 705.36 143.04 L 704.66 140.47 L 705.45 139.83 L 705.06 139.18 L 707.72 137.87 L 709.64 137.33 L 712.58 137.70 L 713.63 135.92 L 717.19 135.60 L 718.18 134.50 L 722.56 132.99 L 722.95 132.36 Z\",\n \"M 628.91 133.72 L 629.69 133.81 L 631.60 135.50 L 632.82 135.69 L 633.30 134.98 L 634.96 133.87 L 636.42 135.33 L 637.83 137.30 L 639.13 137.43 L 639.98 138.18 L 637.70 138.40 L 637.21 140.56 L 636.73 141.53 L 635.72 142.18 L 635.79 143.56 L 635.10 143.69 L 633.37 142.24 L 634.32 140.87 L 633.50 140.05 L 632.46 140.25 L 629.19 142.30 L 629.12 140.38 L 627.88 139.92 L 626.70 139.17 L 627.48 138.28 L 626.00 137.33 L 626.56 136.63 L 625.50 136.15 L 624.93 135.42 L 625.61 134.97 L 627.68 135.76 L 629.17 135.93 L 629.55 135.60 L 628.19 134.11 L 628.91 133.72 Z\",\n \"M 628.18 142.38 L 626.28 142.02 L 624.87 140.73 L 624.43 139.69 L 625.01 139.61 L 625.83 140.36 L 627.06 140.35 L 627.05 140.78 L 628.18 142.38 Z\",\n \"M 610.99 129.35 L 611.33 129.02 L 613.68 129.49 L 617.77 129.94 L 621.55 131.27 L 622.03 131.79 L 623.72 131.35 L 626.31 131.94 L 627.16 133.08 L 628.91 133.72 L 628.19 134.11 L 629.55 135.60 L 629.17 135.93 L 627.68 135.76 L 625.61 134.97 L 624.93 135.42 L 621.07 135.85 L 618.39 134.49 L 615.43 134.62 L 615.85 133.44 L 615.15 131.54 L 613.55 130.52 L 612.01 130.20 L 610.99 129.35 Z\",\n \"M 894.12 141.16 L 891.56 143.96 L 891.60 146.83 L 890.56 149.05 L 891.04 150.44 L 889.59 152.39 L 886.04 153.70 L 881.16 153.87 L 877.20 157.04 L 875.34 155.98 L 875.22 153.90 L 870.39 154.51 L 867.10 155.82 L 863.85 155.87 L 866.67 157.92 L 864.81 162.64 L 863.02 163.80 L 861.67 162.73 L 862.36 160.22 L 860.60 159.41 L 859.47 157.51 L 862.10 156.65 L 863.55 154.91 L 866.35 153.47 L 868.38 151.58 L 873.91 150.74 L 876.88 151.31 L 879.79 146.38 L 881.64 147.70 L 885.72 144.92 L 887.30 143.85 L 889.04 140.45 L 888.57 137.33 L 889.74 135.57 L 892.69 135.06 L 894.21 138.91 L 894.12 141.16 Z\",\n \"M 901.70 127.88 L 903.67 126.71 L 904.29 129.83 L 900.17 130.59 L 897.73 133.35 L 893.37 131.45 L 891.85 134.49 L 888.77 134.53 L 888.38 131.77 L 889.76 129.63 L 892.72 129.47 L 893.53 125.63 L 894.36 123.47 L 897.62 126.36 L 899.75 127.29 L 901.70 127.88 Z\",\n \"M 867.70 157.04 L 869.24 155.39 L 870.82 155.71 L 871.96 154.54 L 874.00 155.14 L 874.35 156.09 L 872.79 157.77 L 871.65 156.88 L 870.22 157.53 L 869.49 159.16 L 867.68 158.37 L 867.70 157.04 Z\",\n \"M 644.45 197.22 L 646.62 201.81 L 647.53 203.75 L 645.52 204.49 L 644.98 205.73 L 644.92 206.67 L 642.15 207.84 L 637.71 209.14 L 635.22 211.10 L 634.00 211.26 L 633.17 211.09 L 631.54 212.24 L 629.77 212.78 L 627.44 212.92 L 626.74 213.08 L 626.13 213.82 L 625.40 214.02 L 624.97 214.72 L 623.60 214.66 L 622.71 215.04 L 620.79 214.90 L 620.07 213.27 L 620.15 211.76 L 619.69 210.94 L 619.15 208.88 L 618.35 207.74 L 618.91 207.60 L 618.62 206.34 L 618.96 205.80 L 618.84 204.59 L 620.05 203.70 L 619.77 202.53 L 620.51 201.17 L 621.65 201.89 L 622.40 201.64 L 625.61 201.57 L 626.11 201.85 L 628.80 202.13 L 629.86 201.99 L 630.56 202.92 L 631.86 202.45 L 633.85 199.54 L 636.44 198.29 L 644.45 197.22 Z\",\n \"M 597.10 168.45 L 600.20 168.90 L 601.40 168.04 L 602.06 167.04 L 604.18 166.65 L 604.64 165.73 L 605.56 165.25 L 602.79 162.47 L 608.35 161.08 L 608.88 160.66 L 612.23 161.42 L 616.36 163.36 L 624.20 168.95 L 629.36 169.17 L 631.84 169.44 L 632.53 170.76 L 634.49 170.69 L 635.58 173.09 L 636.95 173.72 L 637.42 174.69 L 639.32 175.86 L 639.48 177.01 L 639.21 177.93 L 639.56 178.87 L 640.36 179.64 L 640.73 180.56 L 641.14 181.24 L 641.98 181.79 L 642.75 181.59 L 643.28 182.65 L 643.39 183.29 L 644.45 186.11 L 652.80 187.51 L 653.36 186.92 L 654.63 188.89 L 652.78 194.44 L 644.45 197.22 L 636.44 198.29 L 633.85 199.54 L 631.86 202.45 L 630.56 202.92 L 629.86 201.99 L 628.80 202.13 L 626.11 201.85 L 625.61 201.57 L 622.40 201.64 L 621.65 201.89 L 620.51 201.17 L 619.77 202.53 L 620.05 203.70 L 618.84 204.59 L 618.47 203.41 L 617.64 202.57 L 617.42 201.46 L 615.99 200.46 L 614.51 198.14 L 613.72 195.87 L 611.80 193.96 L 610.56 193.50 L 608.72 190.86 L 608.40 188.93 L 608.52 187.28 L 606.93 184.20 L 605.63 183.11 L 604.13 182.54 L 603.21 180.95 L 603.36 180.32 L 602.59 178.88 L 601.78 178.26 L 600.70 176.19 L 599.00 173.96 L 597.59 172.05 L 596.20 172.06 L 596.64 170.53 L 596.76 169.56 L 597.10 168.45 Z\",\n \"M 617.65 215.16 L 618.84 215.40 L 619.67 214.72 L 620.33 215.58 L 620.24 216.73 L 618.66 217.40 L 619.85 218.16 L 618.83 219.65 L 618.21 219.15 L 617.54 219.35 L 615.99 219.30 L 615.95 218.46 L 615.73 217.69 L 616.67 216.39 L 617.65 215.16 Z\",\n \"M 635.97 218.31 L 635.95 218.35 L 635.94 219.49 L 635.94 222.30 L 635.94 223.74 L 634.69 225.45 L 632.75 227.77 L 630.42 227.79 L 621.33 224.49 L 620.27 223.50 L 619.25 222.16 L 618.22 220.63 L 618.83 219.65 L 619.85 218.16 L 620.76 218.67 L 621.30 219.82 L 622.55 220.99 L 623.93 220.99 L 626.55 220.28 L 629.57 219.96 L 632.02 219.09 L 633.40 218.91 L 634.39 218.40 L 635.97 218.31 Z\"\n ]\n },\n {\n \"id\": \"oceania\",\n \"label\": \"Oceania\",\n \"paths\": [\n \"M 994.79 298.63 L 995.48 298.17 L 996.44 298.97 L 995.98 300.42 L 994.26 300.80 L 992.73 300.46 L 992.46 299.23 L 993.53 298.28 L 994.79 298.63 Z\",\n \"M 0.00 294.63 L 0.57 294.50 L 0.23 295.84 L 0.00 295.99 L 998.23 296.67 L 996.46 297.25 L 996.10 296.22 L 997.49 295.65 L 998.37 295.50 L 1000.00 294.63 L 0.00 294.63 Z\",\n \"M 891.67 257.22 L 896.49 259.14 L 901.62 260.73 L 903.54 262.15 L 905.08 263.54 L 905.51 265.18 L 910.13 266.90 L 910.81 268.37 L 908.25 268.67 L 908.87 270.52 L 911.35 272.34 L 913.15 275.29 L 914.74 275.20 L 914.63 276.43 L 916.78 276.90 L 915.94 277.42 L 918.89 278.59 L 918.59 279.40 L 916.75 279.59 L 916.06 278.87 L 913.68 278.56 L 910.87 278.14 L 908.71 276.37 L 907.13 274.84 L 905.69 272.41 L 902.07 271.19 L 899.72 271.99 L 898.02 272.90 L 898.37 274.95 L 896.19 275.91 L 894.64 275.44 L 891.76 275.33 L 891.72 266.28 L 891.67 257.22 Z\",\n \"M 924.00 260.17 L 925.06 261.06 L 925.39 262.50 L 924.52 263.24 L 924.00 261.60 L 923.35 260.53 L 922.09 259.62 L 920.51 258.43 L 918.51 257.61 L 919.28 256.94 L 920.78 257.72 L 921.72 258.33 L 922.89 259.00 L 924.00 260.17 Z\",\n \"M 920.28 266.22 L 918.76 266.90 L 917.34 267.55 L 915.86 267.54 L 913.58 266.74 L 912.00 265.96 L 912.23 265.10 L 914.72 265.51 L 916.24 265.29 L 916.66 263.96 L 917.06 263.89 L 917.33 265.37 L 918.91 265.16 L 919.69 264.21 L 921.24 263.21 L 920.94 261.58 L 922.60 261.53 L 923.16 261.98 L 923.11 263.52 L 922.18 265.22 L 920.72 265.44 L 920.28 266.22 Z\",\n \"M 929.89 264.83 L 930.73 265.46 L 932.08 267.22 L 933.39 268.17 L 933.00 268.95 L 932.22 269.22 L 931.02 268.16 L 929.80 266.39 L 929.21 264.28 L 929.59 264.01 L 929.89 264.83 Z\",\n \"M 891.67 257.22 L 891.72 266.28 L 891.76 275.33 L 889.29 273.05 L 886.47 272.49 L 885.78 273.28 L 882.26 273.37 L 883.44 271.10 L 885.19 270.33 L 884.47 267.31 L 883.13 264.98 L 877.75 262.63 L 875.46 262.40 L 871.29 259.83 L 870.47 261.18 L 869.40 261.42 L 868.77 260.41 L 868.76 259.20 L 866.64 257.84 L 869.63 256.83 L 871.61 256.89 L 871.38 256.15 L 867.31 256.15 L 866.21 254.49 L 863.73 253.98 L 862.56 252.60 L 866.30 251.93 L 867.72 251.03 L 872.18 252.17 L 872.62 253.20 L 873.40 257.69 L 876.27 259.35 L 878.59 256.41 L 881.78 254.73 L 884.25 254.73 L 886.63 255.70 L 888.69 256.69 L 891.67 257.22 Z\",\n \"M 847.14 274.70 L 847.42 275.25 L 847.47 276.09 L 845.66 278.17 L 843.28 278.78 L 842.95 278.44 L 843.20 277.50 L 844.39 275.81 L 847.14 274.70 Z\",\n \"M 872.81 269.15 L 872.54 267.06 L 873.03 266.06 L 873.61 265.12 L 874.24 265.94 L 874.24 267.26 L 872.81 269.15 Z\",\n \"M 827.45 238.51 L 825.87 241.01 L 827.91 243.65 L 827.43 244.93 L 830.55 247.49 L 827.26 247.82 L 826.33 249.72 L 826.45 252.23 L 823.78 254.13 L 823.71 256.90 L 822.64 261.15 L 822.23 260.16 L 819.07 261.41 L 817.97 259.71 L 815.99 259.55 L 814.60 258.66 L 811.30 259.66 L 810.29 258.32 L 808.47 258.47 L 806.18 258.15 L 805.75 254.42 L 804.37 253.65 L 803.03 251.28 L 802.65 248.85 L 802.97 246.27 L 804.62 244.43 L 805.09 246.28 L 806.99 247.85 L 808.78 247.29 L 810.55 247.49 L 812.17 246.08 L 813.50 245.84 L 816.13 246.62 L 818.39 246.03 L 819.82 242.16 L 820.89 241.20 L 821.85 238.04 L 825.04 238.04 L 827.45 238.51 Z\",\n \"M 859.37 257.78 L 862.42 258.59 L 863.43 260.72 L 861.09 259.57 L 858.77 259.34 L 857.20 259.52 L 855.28 259.43 L 855.93 257.90 L 859.37 257.78 Z\",\n \"M 852.43 260.53 L 850.51 260.02 L 849.97 258.83 L 852.78 258.69 L 853.47 259.61 L 852.43 260.53 Z\",\n \"M 855.37 243.96 L 855.57 245.48 L 857.21 245.72 L 857.47 246.85 L 857.32 249.28 L 855.89 249.01 L 855.47 250.70 L 856.61 252.17 L 855.83 252.50 L 854.71 250.74 L 853.89 247.19 L 854.45 244.97 L 855.37 243.96 Z\",\n \"M 841.47 247.57 L 844.66 247.45 L 847.41 245.43 L 847.89 246.05 L 845.66 248.81 L 843.57 249.34 L 840.90 248.80 L 836.27 248.94 L 833.84 249.34 L 833.45 251.44 L 835.93 253.91 L 837.43 252.65 L 842.61 251.71 L 842.39 252.99 L 841.18 252.58 L 839.97 254.22 L 837.52 255.29 L 840.15 258.85 L 839.65 259.81 L 842.14 263.01 L 842.12 264.84 L 840.64 265.65 L 839.55 264.68 L 840.89 262.40 L 838.16 263.48 L 837.47 262.71 L 837.83 261.63 L 835.83 260.01 L 836.04 257.30 L 834.18 258.14 L 834.42 261.38 L 834.53 265.36 L 832.77 265.76 L 831.58 264.94 L 832.37 262.39 L 831.94 259.71 L 830.77 259.69 L 829.91 257.78 L 831.06 255.96 L 831.46 253.76 L 832.85 249.57 L 833.43 248.43 L 835.80 246.36 L 837.97 247.18 L 841.47 247.57 Z\",\n \"M 834.15 278.49 L 830.47 276.55 L 833.06 276.00 L 834.52 276.85 L 835.49 277.70 L 835.32 278.44 L 834.15 278.49 Z\",\n \"M 837.06 273.71 L 838.91 273.50 L 841.40 272.49 L 840.99 274.03 L 836.82 274.82 L 833.12 274.47 L 833.12 273.46 L 835.32 272.88 L 837.06 273.71 Z\",\n \"M 828.50 273.23 L 830.22 273.00 L 830.91 274.18 L 827.70 274.74 L 825.77 275.11 L 824.28 275.09 L 825.23 273.49 L 826.76 273.47 L 827.50 272.49 L 828.50 273.23 Z\",\n \"M 801.35 267.84 L 801.73 268.83 L 807.06 269.11 L 807.67 267.96 L 812.82 269.29 L 813.83 271.09 L 818.00 271.60 L 821.41 273.25 L 818.24 274.31 L 815.18 273.19 L 812.67 273.27 L 809.79 273.06 L 807.19 272.56 L 803.97 271.50 L 801.93 271.23 L 800.77 271.57 L 795.71 270.43 L 795.23 269.24 L 792.68 269.03 L 794.59 266.38 L 797.96 266.54 L 800.20 267.63 L 801.35 267.84 Z\",\n \"M 789.92 253.01 L 790.39 254.95 L 791.36 256.50 L 793.40 256.75 L 794.75 258.50 L 794.05 261.96 L 793.94 266.26 L 790.86 266.31 L 788.52 263.99 L 784.96 261.72 L 783.77 260.04 L 781.67 257.78 L 780.29 255.70 L 778.17 251.81 L 775.73 249.49 L 774.92 247.10 L 773.89 244.93 L 771.39 243.19 L 769.94 240.81 L 767.85 239.26 L 764.95 236.19 L 764.71 234.78 L 766.49 234.89 L 770.79 235.43 L 773.25 238.14 L 775.40 240.03 L 776.93 241.18 L 779.56 244.17 L 782.39 244.21 L 784.72 246.11 L 786.33 248.44 L 788.44 249.71 L 787.33 251.98 L 788.92 252.94 L 789.92 253.01 Z\",\n \"M 847.14 274.70 L 847.46 274.05 L 849.85 273.42 L 851.79 273.33 L 852.66 272.98 L 853.71 273.33 L 852.69 274.08 L 849.80 275.29 L 847.47 276.09 L 847.42 275.25 L 847.14 274.70 Z\",\n \"M 964.49 294.15 L 966.24 295.74 L 965.32 296.11 L 964.39 294.89 L 964.49 294.15 Z\",\n \"M 963.31 293.53 L 962.92 292.76 L 962.86 290.63 L 964.19 291.48 L 964.64 293.72 L 963.89 293.37 L 963.31 293.53 Z\",\n \"M 960.50 308.56 L 962.78 310.28 L 964.22 311.56 L 963.17 312.22 L 961.64 311.47 L 959.65 310.22 L 957.86 308.75 L 956.02 306.79 L 955.64 305.85 L 956.83 305.89 L 958.39 306.84 L 959.61 307.78 L 960.50 308.56 Z\",\n \"M 950.33 279.12 L 951.11 280.07 L 949.17 280.06 L 948.11 278.35 L 949.77 279.02 L 950.33 279.12 Z\",\n \"M 949.11 276.67 L 948.69 277.18 L 946.63 274.77 L 946.06 273.11 L 947.00 273.11 L 948.00 275.34 L 949.11 276.67 Z\",\n \"M 946.81 277.42 L 945.73 277.49 L 944.03 277.21 L 943.45 276.78 L 943.62 275.67 L 945.45 276.11 L 946.36 276.69 L 946.81 277.42 Z\",\n \"M 943.45 272.28 L 944.10 273.16 L 944.22 273.72 L 942.04 272.54 L 940.52 271.54 L 939.48 270.61 L 939.89 270.33 L 941.17 271.00 L 943.45 272.28 Z\",\n \"M 936.50 269.51 L 937.61 270.41 L 937.05 270.57 L 935.84 269.94 L 934.70 268.80 L 934.84 268.33 L 936.50 269.51 Z\",\n \"M 991.35 361.29 L 990.30 362.79 L 988.92 364.69 L 986.78 365.80 L 986.30 365.07 L 985.14 364.67 L 986.74 362.39 L 985.83 360.86 L 982.84 359.75 L 982.92 358.74 L 984.93 357.77 L 985.40 355.63 L 985.27 353.84 L 984.14 351.98 L 984.22 351.49 L 982.89 350.34 L 980.71 347.88 L 979.54 345.91 L 980.58 345.70 L 982.09 347.24 L 984.25 347.96 L 985.03 350.43 L 987.05 353.36 L 987.10 351.46 L 988.36 352.22 L 988.77 354.32 L 991.01 355.22 L 992.89 355.45 L 994.47 354.39 L 995.88 354.71 L 995.21 357.17 L 994.36 358.80 L 992.24 358.74 L 991.50 359.58 L 991.76 360.78 L 991.35 361.29 Z\",\n \"M 971.30 370.99 L 973.68 369.53 L 975.35 368.09 L 976.58 366.02 L 977.64 365.32 L 978.05 363.77 L 980.00 362.48 L 980.61 363.66 L 981.24 364.81 L 983.22 363.69 L 984.02 364.86 L 984.02 366.03 L 982.99 367.32 L 981.17 369.36 L 979.75 370.48 L 980.78 371.82 L 978.64 371.85 L 976.26 372.90 L 975.51 374.72 L 973.94 377.52 L 971.75 378.76 L 970.37 379.56 L 967.81 379.50 L 966.01 378.59 L 962.99 378.39 L 962.53 377.37 L 964.02 375.31 L 967.51 372.57 L 969.30 372.05 L 971.30 370.99 Z\",\n \"M 910.25 363.36 L 911.91 363.54 L 912.11 366.84 L 911.16 367.80 L 910.87 370.03 L 909.90 369.27 L 907.97 371.21 L 907.40 371.06 L 905.69 370.97 L 903.98 368.60 L 903.60 366.76 L 902.00 364.34 L 902.07 363.07 L 903.88 363.31 L 906.57 364.27 L 908.08 363.89 L 910.25 363.36 Z\",\n \"M 850.41 339.49 L 847.47 340.91 L 845.06 341.56 L 844.53 343.01 L 843.50 344.14 L 841.14 344.21 L 839.40 344.45 L 836.94 343.95 L 834.95 344.25 L 833.04 344.38 L 831.39 345.86 L 830.58 345.74 L 829.18 346.52 L 827.85 347.40 L 825.82 347.29 L 823.96 347.29 L 821.01 345.52 L 819.52 344.99 L 819.58 343.40 L 820.96 343.02 L 821.43 342.39 L 821.33 341.39 L 821.67 339.46 L 821.36 337.81 L 819.89 335.00 L 819.44 333.42 L 819.56 331.84 L 818.45 330.03 L 818.38 329.21 L 817.15 328.11 L 816.80 325.93 L 815.22 323.73 L 814.83 322.55 L 816.05 323.75 L 815.12 321.17 L 816.49 321.97 L 817.32 323.05 L 817.27 321.63 L 815.89 319.44 L 815.63 318.57 L 814.98 317.73 L 815.29 316.13 L 815.85 315.44 L 816.23 314.06 L 815.94 312.43 L 817.08 310.43 L 817.29 312.55 L 818.47 310.64 L 820.72 309.71 L 822.08 308.52 L 824.20 307.50 L 825.46 307.29 L 826.23 307.63 L 828.42 306.60 L 830.10 306.29 L 830.52 305.68 L 831.26 305.42 L 832.79 305.49 L 835.71 304.68 L 837.22 303.45 L 837.93 301.96 L 839.56 300.55 L 839.69 299.44 L 839.76 297.93 L 841.70 295.57 L 842.87 297.97 L 844.06 297.41 L 843.07 296.10 L 843.94 294.75 L 845.16 295.35 L 845.50 293.24 L 847.02 291.88 L 847.69 290.78 L 849.09 290.30 L 849.13 289.53 L 850.35 289.85 L 850.40 289.16 L 851.62 288.76 L 852.96 288.38 L 855.01 289.66 L 856.56 291.30 L 858.29 291.32 L 860.06 291.58 L 859.47 290.06 L 860.80 287.83 L 862.06 287.10 L 861.62 286.41 L 862.83 284.82 L 864.51 283.84 L 865.93 284.17 L 868.27 283.65 L 868.22 282.23 L 866.18 281.32 L 867.66 280.91 L 869.50 281.60 L 870.98 282.74 L 873.32 283.45 L 874.11 283.17 L 875.83 284.02 L 877.45 283.23 L 878.50 283.47 L 879.15 282.94 L 880.42 284.31 L 879.68 285.80 L 878.63 286.92 L 877.67 287.01 L 877.99 288.12 L 877.18 289.51 L 876.19 290.88 L 876.39 291.66 L 878.60 293.20 L 880.74 294.08 L 882.17 295.04 L 884.18 296.69 L 884.96 296.68 L 886.41 297.39 L 886.84 298.26 L 889.49 299.20 L 891.32 298.25 L 891.87 296.76 L 892.43 295.52 L 892.77 294.00 L 893.62 291.79 L 893.23 290.45 L 893.43 289.64 L 893.11 288.05 L 893.48 285.96 L 894.01 285.39 L 893.58 284.47 L 894.25 282.99 L 894.77 281.47 L 894.84 280.68 L 895.88 279.63 L 896.66 280.99 L 896.85 282.74 L 897.55 283.07 L 897.66 284.24 L 898.67 285.65 L 898.88 287.23 L 898.78 288.23 L 899.78 290.41 L 901.57 289.36 L 902.49 290.54 L 903.82 291.63 L 903.53 292.86 L 904.13 295.24 L 904.55 296.62 L 905.25 296.96 L 906.00 299.34 L 905.73 300.78 L 906.63 302.66 L 909.64 304.11 L 911.61 305.43 L 913.47 306.64 L 913.10 307.32 L 914.69 309.06 L 915.77 312.06 L 916.88 311.45 L 918.01 312.66 L 918.69 312.23 L 919.17 315.17 L 921.14 316.88 L 922.43 317.94 L 924.60 320.19 L 925.38 322.42 L 925.45 324.01 L 925.26 325.72 L 926.58 328.08 L 926.42 330.54 L 925.94 331.83 L 925.19 334.31 L 925.25 335.90 L 924.70 337.89 L 923.47 340.42 L 921.42 341.78 L 920.40 343.94 L 919.47 345.31 L 918.65 347.71 L 917.58 349.09 L 916.88 351.17 L 916.52 353.08 L 916.66 353.96 L 915.07 354.92 L 911.96 355.03 L 909.39 356.16 L 908.12 357.24 L 906.44 358.43 L 904.14 357.20 L 902.44 356.71 L 902.87 355.27 L 901.35 355.79 L 898.92 357.80 L 896.52 357.05 L 894.94 356.61 L 893.35 356.41 L 890.66 355.61 L 888.87 353.90 L 888.35 351.79 L 887.71 350.39 L 886.34 349.26 L 883.67 348.92 L 884.58 347.57 L 883.91 345.52 L 882.55 347.43 L 880.08 347.95 L 881.54 346.41 L 881.96 344.81 L 883.03 343.45 L 882.81 341.39 L 880.55 343.76 L 878.81 344.71 L 877.75 346.92 L 875.58 345.77 L 875.67 344.30 L 873.93 342.29 L 872.46 341.25 L 872.98 340.60 L 869.42 338.92 L 867.47 338.84 L 864.80 337.49 L 859.82 337.75 L 856.23 338.74 L 853.06 339.67 L 850.41 339.49 Z\",\n \"M 838.27 182.24 L 836.60 186.69 L 835.41 188.97 L 833.95 186.63 L 833.63 184.57 L 835.26 181.84 L 837.49 179.73 L 838.76 180.56 L 838.27 182.24 Z\",\n \"M 835.65 214.71 L 834.23 212.59 L 836.61 212.70 L 837.58 213.70 L 836.84 216.10 L 835.65 214.71 Z\",\n \"M 840.52 222.27 L 841.22 221.50 L 841.52 219.77 L 843.05 219.61 L 842.61 221.48 L 844.66 218.80 L 844.40 221.45 L 843.40 222.36 L 842.53 224.12 L 841.66 224.94 L 839.95 223.02 L 840.52 222.27 Z\",\n \"M 851.05 226.63 L 851.33 228.47 L 851.49 230.03 L 850.55 232.57 L 849.53 229.74 L 848.23 231.15 L 849.12 233.20 L 848.33 234.50 L 845.06 232.88 L 844.28 230.87 L 845.12 229.56 L 843.36 228.24 L 842.49 229.39 L 841.18 229.28 L 839.13 230.83 L 838.67 230.02 L 839.76 227.68 L 841.51 226.90 L 843.02 225.85 L 844.00 227.11 L 846.12 226.35 L 846.57 225.11 L 848.53 225.04 L 848.37 222.89 L 850.62 224.21 L 850.85 225.60 L 851.05 226.63 Z\",\n \"M 829.18 224.12 L 825.49 226.76 L 826.85 224.81 L 828.85 223.10 L 830.52 221.18 L 831.98 218.42 L 832.47 220.68 L 830.64 222.21 L 829.18 224.12 Z\",\n \"M 839.83 199.38 L 839.37 200.53 L 840.32 202.52 L 839.59 204.83 L 837.95 205.75 L 837.52 207.99 L 838.14 210.20 L 839.61 210.51 L 840.84 210.18 L 844.31 211.72 L 844.04 213.23 L 844.95 213.90 L 844.66 215.17 L 842.50 213.81 L 841.47 212.35 L 840.76 213.37 L 838.99 211.71 L 836.46 212.12 L 835.08 211.51 L 835.22 210.36 L 836.09 209.65 L 835.26 209.01 L 834.90 210.01 L 833.53 208.41 L 833.12 207.20 L 833.01 204.54 L 834.13 205.46 L 834.42 201.11 L 835.32 198.60 L 837.01 198.60 L 838.72 199.39 L 839.57 198.67 L 839.83 199.38 Z\",\n \"M 839.00 218.29 L 838.57 216.97 L 840.23 217.83 L 842.00 217.82 L 841.95 218.98 L 840.66 220.16 L 838.90 221.00 L 838.80 219.71 L 839.00 218.29 Z\",\n \"M 848.62 216.21 L 849.40 219.32 L 847.26 218.58 L 847.31 219.51 L 847.99 221.22 L 846.67 221.85 L 846.56 219.89 L 845.72 219.75 L 845.29 218.07 L 846.92 218.29 L 846.88 217.24 L 845.19 215.12 L 847.85 215.18 L 848.62 216.21 Z\",\n \"M 778.02 232.04 L 778.50 231.55 L 780.77 232.76 L 780.99 234.19 L 782.82 233.86 L 783.73 232.72 L 784.37 232.98 L 786.01 234.65 L 787.17 236.51 L 787.33 238.39 L 787.04 239.65 L 787.31 240.60 L 787.51 242.25 L 788.49 243.01 L 789.58 245.47 L 789.53 246.41 L 787.56 246.59 L 784.93 244.54 L 781.64 242.33 L 781.32 240.92 L 779.71 239.06 L 779.33 236.76 L 778.33 235.24 L 778.63 233.22 L 778.02 232.04 Z\",\n \"M 827.45 238.51 L 825.04 238.04 L 821.85 238.04 L 820.89 241.20 L 819.82 242.16 L 818.39 246.03 L 816.13 246.62 L 813.50 245.84 L 812.17 246.08 L 810.55 247.49 L 808.78 247.29 L 806.99 247.85 L 805.09 246.28 L 804.62 244.43 L 806.66 245.38 L 808.80 244.86 L 809.36 242.51 L 810.55 241.98 L 813.88 241.38 L 815.87 239.18 L 817.24 237.43 L 818.50 238.87 L 819.08 237.92 L 820.41 238.01 L 820.57 236.24 L 820.70 234.87 L 822.84 232.94 L 824.24 230.76 L 825.36 230.75 L 826.79 232.16 L 826.92 233.37 L 828.75 234.14 L 831.06 234.98 L 830.86 236.07 L 829.00 236.20 L 829.50 237.56 L 827.45 238.51 Z\",\n \"M 820.70 234.87 L 820.57 236.24 L 820.41 238.01 L 819.08 237.92 L 818.50 238.87 L 817.24 237.43 L 818.34 236.39 L 820.70 234.87 Z\"\n ]\n }\n];\n\nexport const worldMapCentroids: Record<string, { x: number; y: number }> = {\n \"oceania\": {\n \"x\": 897.8945843253199,\n \"y\": 275.68912292127783\n },\n \"africa\": {\n \"x\": 547.3861238126617,\n \"y\": 227.3221931898561\n },\n \"north-america\": {\n \"x\": 280.3530589233407,\n \"y\": 187.74786867629768\n },\n \"asia\": {\n \"x\": 709.2243956868612,\n \"y\": 168.69762432871576\n },\n \"south-america\": {\n \"x\": 323.6507802985508,\n \"y\": 300.2759506803825\n },\n \"europe\": {\n \"x\": 541.8621784469623,\n \"y\": 111.155089433256\n }\n};\n\nexport const worldMapRegionIds = worldMapRegions.map((region) => region.id);\n\nexport function projectLatLng(lng: number, lat: number) {\n return {\n x: ((lng + 180) / 360) * worldMapViewBox.width,\n y: ((90 - lat) / 180) * worldMapViewBox.height,\n };\n}\n\nexport function normalizeRegionId(label: string) {\n return label.trim().toLowerCase().replace(/\\s+/g, \"-\");\n}\n\nexport function fitWorldMapToPlot(plot: {\n bottom: number;\n gridLeft: number;\n gridRight: number;\n top: number;\n}) {\n const pad = 2;\n const availW = plot.gridRight - plot.gridLeft - pad * 2;\n const availH = plot.bottom - plot.top - pad * 2;\n const scale = Math.min(availW / worldMapViewBox.width, availH / worldMapViewBox.height);\n const x = plot.gridLeft + pad + (availW - worldMapViewBox.width * scale) / 2;\n const y = plot.top + pad + (availH - worldMapViewBox.height * scale) / 2;\n return { scale, x, y };\n}\n\nexport function getRegionCentroid(regionId: string) {\n const key = normalizeRegionId(regionId);\n return worldMapCentroids[key] ?? null;\n}\n\nexport function getRegionById(regionId: string) {\n const key = normalizeRegionId(regionId);\n return worldMapRegions.find((region) => region.id === key || normalizeRegionId(region.label) === key);\n}\n\nexport function resolveRegionId(item: { label: string; region?: string }) {\n return item.region ?? normalizeRegionId(item.label);\n}\n","export type CirclePackItem = {\n index: number;\n label: string;\n parent?: string;\n value: number;\n};\n\nexport type CirclePackNode = CirclePackItem & {\n colorIndex: number;\n depth: number;\n isParent: boolean;\n r: number;\n x: number;\n y: number;\n};\n\ntype InternalNode = {\n children: InternalNode[];\n index: number;\n label: string;\n leafValue: number;\n parent?: string;\n value: number;\n};\n\ntype LocalPack = {\n circles: CirclePackNode[];\n r: number;\n};\n\nfunction placeTangent(\n a: { r: number; x: number; y: number },\n b: { r: number; x: number; y: number },\n radius: number,\n padding: number,\n): Array<{ x: number; y: number }> {\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const distance = Math.hypot(dx, dy);\n\n if (distance < 1e-6) {\n return [];\n }\n\n const aRadius = a.r + radius + padding;\n const bRadius = b.r + radius + padding;\n\n if (distance > aRadius + bRadius) {\n return [];\n }\n\n const a2 = aRadius * aRadius;\n const b2 = bRadius * bRadius;\n const d2 = distance * distance;\n const x = (a2 - b2 + d2) / (2 * distance);\n const y = Math.sqrt(Math.max(0, a2 - x * x));\n const mx = a.x + (dx * x) / distance;\n const my = a.y + (dy * x) / distance;\n const nx = (-dy * y) / distance;\n const ny = (dx * y) / distance;\n\n return [\n { x: mx + nx, y: my + ny },\n { x: mx - nx, y: my - ny },\n ];\n}\n\nfunction hasCollision(\n candidate: { x: number; y: number },\n radius: number,\n placed: Array<{ r: number; x: number; y: number }>,\n padding: number,\n) {\n for (const circle of placed) {\n const minDistance = radius + circle.r + padding;\n const dx = candidate.x - circle.x;\n const dy = candidate.y - circle.y;\n if (minDistance * minDistance > dx * dx + dy * dy - 1e-4) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction enclosingRadius(circles: Array<{ r: number; x: number; y: number }>) {\n let radius = 0;\n for (const circle of circles) {\n radius = Math.max(radius, Math.hypot(circle.x, circle.y) + circle.r);\n }\n return radius;\n}\n\nfunction fitPackedCircles(circles: CirclePackNode[], width: number, height: number, padding: number) {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const circle of circles) {\n minX = Math.min(minX, circle.x - circle.r);\n minY = Math.min(minY, circle.y - circle.r);\n maxX = Math.max(maxX, circle.x + circle.r);\n maxY = Math.max(maxY, circle.y + circle.r);\n }\n\n const boundsWidth = maxX - minX + padding * 2;\n const boundsHeight = maxY - minY + padding * 2;\n const scale = Math.min(width / boundsWidth, height / boundsHeight);\n const offsetX = (width - boundsWidth * scale) / 2 - (minX - padding) * scale;\n const offsetY = (height - boundsHeight * scale) / 2 - (minY - padding) * scale;\n\n return circles.map((circle) => ({\n ...circle,\n x: circle.x * scale + offsetX,\n y: circle.y * scale + offsetY,\n r: circle.r * scale,\n }));\n}\n\nfunction packFlatCircles(\n items: CirclePackItem[],\n width: number,\n height: number,\n padding: number,\n): CirclePackNode[] {\n if (!items.length || width <= 0 || height <= 0) {\n return [];\n }\n\n const maxValue = Math.max(1, ...items.map((item) => item.value));\n const fit = Math.min(width, height);\n\n const circles = items\n .map((item) => ({\n ...item,\n colorIndex: item.index,\n depth: 0,\n isParent: false,\n r: Math.max(12, Math.sqrt(item.value / maxValue) * fit * 0.24),\n x: 0,\n y: 0,\n }))\n .sort((a, b) => b.r - a.r);\n\n if (circles.length === 1) {\n return fitPackedCircles([{ ...circles[0], x: 0, y: 0 }], width, height, padding);\n }\n\n circles[0].x = 0;\n circles[0].y = 0;\n circles[1].x = circles[0].r + circles[1].r + padding;\n circles[1].y = 0;\n\n for (let index = 2; index < circles.length; index++) {\n const circle = circles[index];\n const placed = circles.slice(0, index);\n let best: { dist: number; x: number; y: number } | null = null;\n\n for (let left = 0; left < index; left++) {\n for (let right = left + 1; right < index; right++) {\n for (const position of placeTangent(placed[left], placed[right], circle.r, padding)) {\n if (!hasCollision(position, circle.r, placed, padding)) {\n const dist = Math.hypot(position.x, position.y);\n if (!best || dist < best.dist) {\n best = { ...position, dist };\n }\n }\n }\n }\n }\n\n if (!best) {\n for (const anchor of placed) {\n const orbit = anchor.r + circle.r + padding;\n for (let step = 0; step < 16; step++) {\n const angle = (step / 16) * Math.PI * 2;\n const position = {\n x: anchor.x + Math.cos(angle) * orbit,\n y: anchor.y + Math.sin(angle) * orbit,\n };\n if (!hasCollision(position, circle.r, placed, padding)) {\n const dist = Math.hypot(position.x, position.y);\n if (!best || dist < best.dist) {\n best = { ...position, dist };\n }\n }\n }\n }\n }\n\n circle.x = best?.x ?? placed[index - 1].x + placed[index - 1].r + circle.r + padding;\n circle.y = best?.y ?? 0;\n }\n\n return fitPackedCircles(circles, width, height, padding);\n}\n\nfunction buildForest(items: CirclePackItem[]): InternalNode[] {\n const nodes = new Map<string, InternalNode>();\n\n for (const item of items) {\n nodes.set(item.label, {\n children: [],\n index: item.index,\n label: item.label,\n leafValue: Math.max(0, item.value),\n parent: item.parent,\n value: Math.max(0, item.value),\n });\n }\n\n const roots: InternalNode[] = [];\n for (const node of nodes.values()) {\n if (node.parent && nodes.has(node.parent)) {\n nodes.get(node.parent)!.children.push(node);\n } else {\n roots.push(node);\n }\n }\n\n function assignTotals(node: InternalNode): number {\n if (!node.children.length) {\n node.value = Math.max(1, node.leafValue);\n return node.value;\n }\n\n const total = node.children.reduce((sum, child) => sum + assignTotals(child), 0);\n node.value = Math.max(1, total);\n return node.value;\n }\n\n roots.forEach(assignTotals);\n return roots;\n}\n\nfunction transformCircles(circles: CirclePackNode[], offsetX: number, offsetY: number, scale: number) {\n return circles.map((circle) => ({\n ...circle,\n r: circle.r * scale,\n x: offsetX + circle.x * scale,\n y: offsetY + circle.y * scale,\n }));\n}\n\nfunction packNode(node: InternalNode, depth: number, padding: number, colorIndex = node.index): LocalPack {\n if (!node.children.length) {\n const r = Math.max(10, Math.sqrt(node.value) * 2.4);\n return {\n r,\n circles: [\n {\n colorIndex,\n depth,\n index: node.index,\n isParent: false,\n label: node.label,\n parent: node.parent,\n r,\n value: node.value,\n x: 0,\n y: 0,\n },\n ],\n };\n }\n\n const childPacks = node.children.map((child) => packNode(child, depth + 1, padding, colorIndex));\n const maxChildRadius = Math.max(...childPacks.map((pack) => pack.r), 1);\n const canvas = maxChildRadius * 2.8;\n const positioned = packFlatCircles(\n childPacks.map((pack, index) => ({\n index: node.children[index].index,\n label: node.children[index].label,\n parent: node.children[index].parent,\n value: pack.r * pack.r,\n })),\n canvas,\n canvas,\n padding,\n );\n\n const merged: CirclePackNode[] = [];\n for (let index = 0; index < positioned.length; index++) {\n const scale = positioned[index].r / childPacks[index].r;\n merged.push(\n ...transformCircles(childPacks[index].circles, positioned[index].x, positioned[index].y, scale),\n );\n }\n\n const enclosing = enclosingRadius(merged) + padding;\n merged.unshift({\n colorIndex,\n depth,\n index: node.index,\n isParent: true,\n label: node.label,\n parent: node.parent,\n r: enclosing,\n value: node.value,\n x: 0,\n y: 0,\n });\n\n return {\n circles: merged,\n r: enclosing,\n };\n}\n\nfunction packHierarchy(roots: InternalNode[], width: number, height: number, padding: number): CirclePackNode[] {\n if (!roots.length) {\n return [];\n }\n\n if (roots.length === 1 && roots[0].children.length) {\n const packed = packNode(roots[0], 0, padding);\n return fitPackedCircles(packed.circles, width, height, padding);\n }\n\n const rootPacks = roots.map((root) => packNode(root, 0, padding));\n const positioned = packFlatCircles(\n rootPacks.map((pack, index) => ({\n index: roots[index].index,\n label: roots[index].label,\n parent: roots[index].parent,\n value: pack.r * pack.r,\n })),\n width,\n height,\n padding,\n );\n\n const merged: CirclePackNode[] = [];\n for (let index = 0; index < positioned.length; index++) {\n const scale = positioned[index].r / rootPacks[index].r;\n merged.push(\n ...transformCircles(rootPacks[index].circles, positioned[index].x, positioned[index].y, scale),\n );\n }\n\n return merged;\n}\n\nexport function layoutCirclePack(\n items: CirclePackItem[],\n width: number,\n height: number,\n padding = 3,\n): CirclePackNode[] {\n if (!items.length || width <= 0 || height <= 0) {\n return [];\n }\n\n const hasHierarchy = items.some((item) => item.parent);\n if (!hasHierarchy) {\n return packFlatCircles(items, width, height, padding);\n }\n\n const roots = buildForest(items);\n return packHierarchy(roots, width, height, padding);\n}\n","import type { ChartDatum } from \"@/components/Chart\";\n\nexport type NetworkLayoutNode = {\n id: string;\n label: string;\n value: number;\n x: number;\n y: number;\n radius: number;\n depth: number;\n groupIndex: number;\n showRing: boolean;\n showLabel: boolean;\n};\n\nexport type NetworkLayoutEdge = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n groupIndex?: number;\n};\n\ntype LayoutItem = Pick<ChartDatum, \"label\" | \"value\" | \"parent\" | \"group\">;\n\nfunction nodeRadius(depth: number, labeled: boolean) {\n if (depth === 0) {\n return labeled ? 22 : 16;\n }\n\n if (depth === 1) {\n return labeled ? 15 : 11;\n }\n\n if (depth === 2) {\n return labeled ? 10 : 7;\n }\n\n return labeled ? 7 : 4.5;\n}\n\nfunction scaleToPlot(\n nodes: Array<Omit<NetworkLayoutNode, \"groupIndex\" | \"showRing\" | \"showLabel\"> & { group?: string }>,\n width: number,\n height: number,\n pad: number,\n labeled: boolean,\n) {\n const groupIds = [...new Set(nodes.map((node) => node.group ?? node.id))];\n\n return nodes.map((node) => {\n const depth = node.depth;\n const radius = nodeRadius(depth, labeled);\n\n return {\n ...node,\n x: pad + node.x * (width - pad * 2),\n y: pad + node.y * (height - pad * 2),\n radius,\n groupIndex: groupIds.indexOf(node.group ?? node.id),\n showRing: labeled && depth <= 1,\n showLabel: labeled && radius >= 8,\n };\n });\n}\n\nfunction polarOffset(x: number, y: number, distance: number, angle: number) {\n return {\n x: x + Math.cos(angle) * distance,\n y: y + Math.sin(angle) * distance,\n };\n}\n\nfunction placeFan(\n nodes: Array<{ id: string; label: string; value: number; depth: number; group?: string; x: number; y: number }>,\n parentId: string,\n parentX: number,\n parentY: number,\n baseAngle: number,\n distance: number,\n spread: number,\n labels: string[],\n depth: number,\n group?: string,\n) {\n const count = labels.length;\n const start = baseAngle - ((count - 1) * spread) / 2;\n\n labels.forEach((label, index) => {\n const angle = count === 1 ? baseAngle : start + index * spread;\n const point = polarOffset(parentX, parentY, distance, angle);\n nodes.push({\n id: label,\n label,\n value: 6,\n depth,\n group: group ?? parentId,\n x: point.x,\n y: point.y,\n });\n });\n}\n\nexport function layoutForceDirectedGraph(items: LayoutItem[], width: number, height: number): {\n nodes: NetworkLayoutNode[];\n edges: NetworkLayoutEdge[];\n} {\n const nodes: Array<{\n id: string;\n label: string;\n value: number;\n depth: number;\n group?: string;\n x: number;\n y: number;\n }> = [];\n\n const spine = [\n { id: \"3\", x: 0.24, y: 0.5, value: 28, group: \"0\" },\n { id: \"2\", x: 0.5, y: 0.5, value: 18, group: \"1\" },\n { id: \"1\", x: 0.76, y: 0.5, value: 28, group: \"2\" },\n ];\n\n spine.forEach((node) => {\n nodes.push({ ...node, label: node.id, depth: 0 });\n });\n\n const hub3Children = [\n { id: \"F\", angle: -Math.PI / 2, value: 14 },\n { id: \"G\", angle: Math.PI, value: 14 },\n { id: \"H\", angle: Math.PI / 2, value: 14 },\n ];\n hub3Children.forEach((child) => {\n const point = polarOffset(0.24, 0.5, 0.14, child.angle);\n nodes.push({\n id: child.id,\n label: child.id,\n value: child.value,\n depth: 1,\n group: \"0\",\n x: point.x,\n y: point.y,\n });\n placeFan(\n nodes,\n child.id,\n point.x,\n point.y,\n child.angle,\n 0.1,\n Math.PI / 10,\n Array.from({ length: 5 }, (_, index) => `${child.id}${index + 1}`),\n 2,\n child.id,\n );\n });\n\n const hub1Children = [\n { id: \"A\", angle: -Math.PI / 3, value: 14 },\n { id: \"B\", angle: 0, value: 14 },\n { id: \"C\", angle: Math.PI / 3, value: 14 },\n ];\n hub1Children.forEach((child) => {\n const point = polarOffset(0.76, 0.5, 0.14, child.angle);\n nodes.push({\n id: child.id,\n label: child.id,\n value: child.value,\n depth: 1,\n group: \"2\",\n x: point.x,\n y: point.y,\n });\n placeFan(\n nodes,\n child.id,\n point.x,\n point.y,\n child.angle,\n 0.1,\n Math.PI / 10,\n Array.from({ length: 5 }, (_, index) => `${child.id}${index + 1}`),\n 2,\n child.id,\n );\n });\n\n nodes.push(\n { id: \"D\", label: \"D\", value: 10, depth: 1, group: \"1\", x: 0.5, y: 0.34 },\n { id: \"E\", label: \"E\", value: 10, depth: 1, group: \"1\", x: 0.5, y: 0.66 },\n );\n\n const itemMap = new Map(items.map((item) => [item.label, item]));\n const placed = scaleToPlot(\n nodes.map((node) => ({\n ...node,\n value: itemMap.get(node.id)?.value ?? node.value,\n group: itemMap.get(node.id)?.group ?? node.group,\n })),\n width,\n height,\n 18,\n true,\n );\n\n const byId = new Map(placed.map((node) => [node.id, node]));\n const edges: NetworkLayoutEdge[] = [\n { x1: byId.get(\"3\")!.x, y1: byId.get(\"3\")!.y, x2: byId.get(\"2\")!.x, y2: byId.get(\"2\")!.y, groupIndex: byId.get(\"3\")!.groupIndex },\n { x1: byId.get(\"2\")!.x, y1: byId.get(\"2\")!.y, x2: byId.get(\"1\")!.x, y2: byId.get(\"1\")!.y, groupIndex: byId.get(\"2\")!.groupIndex },\n ];\n\n const childLinks: Array<[string, string]> = [\n [\"3\", \"F\"],\n [\"3\", \"G\"],\n [\"3\", \"H\"],\n [\"1\", \"A\"],\n [\"1\", \"B\"],\n [\"1\", \"C\"],\n [\"2\", \"D\"],\n [\"2\", \"E\"],\n ...hub3Children.flatMap((child) => Array.from({ length: 5 }, (_, index) => [child.id, `${child.id}${index + 1}`] as [string, string])),\n ...hub1Children.flatMap((child) => Array.from({ length: 5 }, (_, index) => [child.id, `${child.id}${index + 1}`] as [string, string])),\n ];\n\n childLinks.forEach(([from, to]) => {\n const source = byId.get(from);\n const target = byId.get(to);\n if (source && target) {\n edges.push({\n x1: source.x,\n y1: source.y,\n x2: target.x,\n y2: target.y,\n groupIndex: source.groupIndex,\n });\n }\n });\n\n return { nodes: placed, edges };\n}\n\nexport function layoutRadialNetworkGraph(items: LayoutItem[], width: number, height: number): {\n nodes: NetworkLayoutNode[];\n edges: NetworkLayoutEdge[];\n} {\n const nodes: Array<{\n id: string;\n label: string;\n value: number;\n depth: number;\n group?: string;\n x: number;\n y: number;\n }> = [\n { id: \"Core\", label: \"Core\", value: 32, depth: 0, group: \"core\", x: 0.5, y: 0.5 },\n ];\n\n const branches = [\n { id: \"B1\", angle: -Math.PI / 2, leaves: 2 },\n { id: \"B2\", angle: -Math.PI / 6, leaves: 2 },\n { id: \"B3\", angle: Math.PI / 6, leaves: 3 },\n { id: \"B4\", angle: Math.PI / 2, leaves: 2 },\n { id: \"B5\", angle: (5 * Math.PI) / 6, leaves: 2 },\n { id: \"B6\", angle: (-5 * Math.PI) / 6, leaves: 2 },\n { id: \"B7\", angle: Math.PI, leaves: 2 },\n ];\n\n branches.forEach((branch, branchIndex) => {\n const primary = polarOffset(0.5, 0.5, 0.18, branch.angle);\n nodes.push({\n id: branch.id,\n label: branch.id,\n value: 16,\n depth: 1,\n group: `branch-${branchIndex}`,\n x: primary.x,\n y: primary.y,\n });\n\n const secondaryAngles =\n branch.leaves === 3\n ? [branch.angle - 0.18, branch.angle, branch.angle + 0.18]\n : [branch.angle - 0.12, branch.angle + 0.12];\n\n secondaryAngles.forEach((angle, secondaryIndex) => {\n const secondaryId = `${branch.id}.${secondaryIndex + 1}`;\n const secondary = polarOffset(primary.x, primary.y, 0.12, angle);\n nodes.push({\n id: secondaryId,\n label: secondaryId,\n value: 10,\n depth: 2,\n group: `branch-${branchIndex}`,\n x: secondary.x,\n y: secondary.y,\n });\n\n const leafCount = branch.leaves === 3 && secondaryIndex === 1 ? 2 : 1;\n const leafSpread = leafCount === 2 ? 0.22 : 0;\n const leafStart = angle - ((leafCount - 1) * leafSpread) / 2;\n Array.from({ length: leafCount }, (_, leafIndex) => {\n const leafAngle = leafCount === 1 ? angle : leafStart + leafIndex * leafSpread;\n const leaf = polarOffset(secondary.x, secondary.y, 0.09, leafAngle);\n nodes.push({\n id: `${secondaryId}.${leafIndex + 1}`,\n label: `${secondaryId}.${leafIndex + 1}`,\n value: 6,\n depth: 3,\n group: `branch-${branchIndex}`,\n x: leaf.x,\n y: leaf.y,\n });\n });\n });\n });\n\n const itemMap = new Map(items.map((item) => [item.label, item]));\n const placed = scaleToPlot(\n nodes.map((node) => ({\n ...node,\n value: itemMap.get(node.id)?.value ?? node.value,\n group: itemMap.get(node.id)?.group ?? node.group,\n })),\n width,\n height,\n 14,\n false,\n );\n\n const byId = new Map(placed.map((node) => [node.id, node]));\n const edges: NetworkLayoutEdge[] = [];\n\n branches.forEach((branch) => {\n const core = byId.get(\"Core\")!;\n const primary = byId.get(branch.id)!;\n edges.push({ x1: core.x, y1: core.y, x2: primary.x, y2: primary.y });\n\n const secondaryAngles =\n branch.leaves === 3\n ? [branch.angle - 0.18, branch.angle, branch.angle + 0.18]\n : [branch.angle - 0.12, branch.angle + 0.12];\n\n secondaryAngles.forEach((_, secondaryIndex) => {\n const secondaryId = `${branch.id}.${secondaryIndex + 1}`;\n const secondary = byId.get(secondaryId);\n if (!secondary) {\n return;\n }\n\n edges.push({ x1: primary.x, y1: primary.y, x2: secondary.x, y2: secondary.y });\n\n const leafCount = branch.leaves === 3 && secondaryIndex === 1 ? 2 : 1;\n Array.from({ length: leafCount }, (_, leafIndex) => {\n const leaf = byId.get(`${secondaryId}.${leafIndex + 1}`);\n if (leaf) {\n edges.push({ x1: secondary.x, y1: secondary.y, x2: leaf.x, y2: leaf.y });\n }\n });\n });\n });\n\n return { nodes: placed, edges };\n}\n","export type TreemapItem = {\n index: number;\n label: string;\n value: number;\n};\n\nexport type TreemapRect = TreemapItem & {\n group?: string;\n groupIndex?: number;\n height: number;\n width: number;\n x: number;\n y: number;\n};\n\nexport type TreemapGroupLayout = {\n group: string;\n groupIndex: number;\n height: number;\n width: number;\n x: number;\n y: number;\n};\n\nexport type GroupedTreemapLayout = {\n groups: TreemapGroupLayout[];\n rects: TreemapRect[];\n};\n\nfunction worst(row: TreemapItem[], length: number) {\n if (!row.length) {\n return Infinity;\n }\n\n const sum = row.reduce((total, item) => total + item.value, 0);\n const max = Math.max(...row.map((item) => item.value));\n const min = Math.min(...row.map((item) => item.value));\n const sumSq = sum * sum;\n const lenSq = length * length;\n return Math.max((lenSq * max) / sumSq, sumSq / (lenSq * min));\n}\n\nexport function layoutSquarifiedTreemap(\n items: TreemapItem[],\n x: number,\n y: number,\n width: number,\n height: number,\n): TreemapRect[] {\n if (!items.length || width <= 0 || height <= 0) {\n return [];\n }\n\n if (items.length === 1) {\n return [{ ...items[0], x, y, width, height }];\n }\n\n const total = items.reduce((sum, item) => sum + item.value, 0);\n const vertical = width < height;\n const length = vertical ? height : width;\n const row: TreemapItem[] = [];\n const rest = [...items];\n const result: TreemapRect[] = [];\n\n while (rest.length) {\n const candidate = rest[0];\n const trial = [...row, candidate];\n if (row.length && worst(trial, length) > worst(row, length)) {\n break;\n }\n row.push(candidate);\n rest.shift();\n }\n\n const rowSum = row.reduce((sum, item) => sum + item.value, 0);\n const strip = (rowSum / total) * (vertical ? width : height);\n\n let offset = vertical ? y : x;\n for (const item of row) {\n const share = item.value / rowSum;\n if (vertical) {\n const rectHeight = share * length;\n result.push({ ...item, x, y: offset, width: strip, height: rectHeight });\n offset += rectHeight;\n } else {\n const rectWidth = share * length;\n result.push({ ...item, x: offset, y, width: rectWidth, height: strip });\n offset += rectWidth;\n }\n }\n\n if (vertical) {\n result.push(...layoutSquarifiedTreemap(rest, x + strip, y, width - strip, height));\n } else {\n result.push(...layoutSquarifiedTreemap(rest, x, y + strip, width, height - strip));\n }\n\n return result;\n}\n\nexport function layoutGroupedTreemap(\n items: Array<TreemapItem & { group?: string }>,\n x: number,\n y: number,\n width: number,\n height: number,\n): GroupedTreemapLayout {\n const grouped = new Map<string, TreemapItem[]>();\n for (const item of items) {\n const key = item.group?.trim() || \"\";\n const bucket = grouped.get(key) ?? [];\n bucket.push(item);\n grouped.set(key, bucket);\n }\n\n const groups = [...grouped.entries()]\n .filter(([key]) => key.length > 0)\n .map(([group, groupItems], groupIndex) => ({\n group,\n groupIndex,\n items: [...groupItems].sort((a, b) => b.value - a.value),\n total: groupItems.reduce((sum, item) => sum + item.value, 0),\n }))\n .sort((a, b) => b.total - a.total);\n\n if (!groups.length) {\n return {\n groups: [],\n rects: layoutSquarifiedTreemap(items, x, y, width, height),\n };\n }\n\n const grandTotal = groups.reduce((sum, group) => sum + group.total, 0) || 1;\n const rects: TreemapRect[] = [];\n const layouts: TreemapGroupLayout[] = [];\n let offsetX = x;\n\n for (const group of groups) {\n const columnWidth = (group.total / grandTotal) * width;\n layouts.push({\n group: group.group,\n groupIndex: group.groupIndex,\n x: offsetX,\n y,\n width: columnWidth,\n height,\n });\n rects.push(\n ...layoutSquarifiedTreemap(group.items, offsetX, y, columnWidth, height).map((rect) => ({\n ...rect,\n group: group.group,\n groupIndex: group.groupIndex,\n })),\n );\n offsetX += columnWidth;\n }\n\n return { groups: layouts, rects };\n}\n","import type { ChartDatum, ChartSeries } from \"@/components/Chart\";\nimport type { ChartVariant } from \"@/components/fields\";\nimport {\n fitWorldMapToPlot,\n getRegionCentroid,\n projectLatLng,\n resolveRegionId,\n worldLandPaths,\n worldMapRegions,\n} from \"@/components/Chart/worldMapRegions\";\nimport { layoutCirclePack } from \"@/components/Chart/circlePackLayout\";\nimport { layoutForceDirectedGraph, layoutRadialNetworkGraph } from \"@/components/Chart/networkGraphLayout\";\nimport {\n demoSankeyLinks,\n demoSankeyNodes,\n formatSankeyValue,\n layoutSankey,\n type SankeyNodeKind,\n} from \"@/components/Chart/sankeyLayout\";\nimport { layoutGroupedTreemap } from \"@/components/Chart/treemapLayout\";\n\nexport const specializedChartVariants = new Set<ChartVariant>([\n \"heatmap\",\n \"treemap\",\n \"sunburst\",\n \"sankey\",\n \"waterfall\",\n \"candlestick\",\n \"box-plot\",\n \"histogram\",\n \"violin\",\n \"hexbin\",\n \"density\",\n \"chord\",\n \"network\",\n \"force-directed\",\n \"circle-packing\",\n \"stream\",\n \"ridgeline\",\n \"calendar-heatmap\",\n \"geo-map\",\n \"bubble-map\",\n \"choropleth\",\n \"timeline\",\n \"gantt\",\n \"milestone-timeline\",\n]);\n\nexport function isSpecializedChartVariant(variant: ChartVariant) {\n return specializedChartVariants.has(variant);\n}\n\nexport const cartesianSpecializedVariants: ChartVariant[] = [\n \"histogram\",\n \"waterfall\",\n \"candlestick\",\n \"box-plot\",\n \"violin\",\n \"hexbin\",\n \"density\",\n \"stream\",\n \"ridgeline\",\n \"timeline\",\n \"gantt\",\n \"milestone-timeline\",\n];\n\nexport function specializedVariantHasYNumericAxis(variant: ChartVariant) {\n return ![\"timeline\", \"milestone-timeline\", \"gantt\", \"heatmap\", \"calendar-heatmap\", \"ridgeline\", \"hexbin\"].includes(\n variant,\n );\n}\n\nexport function specializedVariantHasXCategoryLabels(variant: ChartVariant) {\n return [\n \"histogram\",\n \"waterfall\",\n \"candlestick\",\n \"box-plot\",\n \"violin\",\n \"stream\",\n \"ridgeline\",\n \"density\",\n \"timeline\",\n \"milestone-timeline\",\n ].includes(variant);\n}\n\nexport function specializedVariantUsesSlotLabels(variant: ChartVariant) {\n return [\"waterfall\"].includes(variant);\n}\n\nexport const chartSeriesAxisInset = 0;\n\nexport function getSeriesPlotBounds(plot: {\n gridLeft: number;\n gridRight: number;\n}) {\n return {\n left: plot.gridLeft,\n right: plot.gridRight,\n };\n}\n\nexport function xForSeriesCategoryIndex(\n plot: { gridLeft: number; gridRight: number },\n index: number,\n count: number,\n) {\n const { left, right } = getSeriesPlotBounds(plot);\n if (count <= 1) {\n return (left + right) / 2;\n }\n\n const slotWidth = (right - left) / count;\n return left + slotWidth * index + slotWidth / 2;\n}\n\ntype PlotArea = {\n bottom: number;\n gridLeft: number;\n gridRight: number;\n horizontalLabelX: number;\n left: number;\n right: number;\n top: number;\n};\n\ntype SpecializedChartProps = {\n data: ChartDatum[];\n plot: PlotArea;\n series: ChartSeries[];\n showValues?: boolean;\n styles: Record<string, string>;\n variant: ChartVariant;\n yMax: number;\n yMin: number;\n};\n\nconst paletteClasses = [\"seriesA\", \"seriesB\", \"seriesC\", \"seriesD\", \"seriesE\", \"seriesF\"] as const;\n\nfunction chartClass(styles: Record<string, string>, index: number) {\n return styles[paletteClasses[index % paletteClasses.length]];\n}\n\nfunction plotSpan(plot: PlotArea) {\n return plot.bottom - plot.top;\n}\n\nfunction plotInnerWidth(plot: PlotArea) {\n return plot.gridRight - plot.gridLeft;\n}\n\nfunction plotDataLeft(plot: PlotArea) {\n return plot.gridLeft;\n}\n\nfunction plotDataRight(plot: PlotArea) {\n return plot.gridRight;\n}\n\nexport const timelineEndpointInset = 12;\n\nexport function timelineTrackBounds(plot: PlotArea) {\n return {\n left: plotDataLeft(plot) + timelineEndpointInset,\n right: plotDataRight(plot) - timelineEndpointInset,\n };\n}\n\nexport function xForTimelineIndex(plot: PlotArea, index: number, count: number) {\n const { left, right } = timelineTrackBounds(plot);\n if (count <= 1) {\n return (left + right) / 2;\n }\n\n return left + index * ((right - left) / (count - 1));\n}\n\nfunction candlestickBodyWidth(plot: PlotArea, count: number) {\n const span = plotInnerWidth(plot);\n const step = count > 1 ? span / (count - 1) : span;\n return Math.min(16, Math.max(4, (count > 1 ? step : span) * 0.45));\n}\n\nexport function getCandlestickBarHalfWidth(plot: PlotArea, count: number) {\n return candlestickBodyWidth(plot, count) / 2;\n}\n\nfunction categoryBarWidth(plot: PlotArea, count: number, ratio: number, maxWidth = 28) {\n const span = plotInnerWidth(plot);\n const step = count > 1 ? span / (count - 1) : span;\n return Math.min(maxWidth, Math.max(4, (count > 1 ? step : span) * ratio));\n}\n\nexport function getHistogramBarHalfWidth(plot: PlotArea, count: number) {\n return categoryBarWidth(plot, count, 0.55) / 2;\n}\n\nexport function getBoxPlotBarHalfWidth(plot: PlotArea, count: number) {\n return categoryBarWidth(plot, count, 0.45, 34) / 2;\n}\n\nexport function getViolinBarHalfWidth(plot: PlotArea, count: number) {\n const span = plotInnerWidth(plot);\n const step = count > 1 ? span / (count - 1) : span;\n return Math.max(4, (count > 1 ? step : span) * 0.22);\n}\n\nexport function xForEdgeBarIndex(plot: PlotArea, index: number, count: number, barHalfWidth: number) {\n const left = plotDataLeft(plot) + barHalfWidth;\n const right = plotDataRight(plot) - barHalfWidth;\n if (count <= 1) {\n return (left + right) / 2;\n }\n\n return left + index * ((right - left) / (count - 1));\n}\n\nfunction xForCategoryIndex(plot: PlotArea, index: number, count: number) {\n const left = plotDataLeft(plot);\n const right = plotDataRight(plot);\n if (count <= 1) {\n return (left + right) / 2;\n }\n\n return left + index * ((right - left) / (count - 1));\n}\n\nfunction xForSeriesIndex(plot: PlotArea, index: number, count: number) {\n const { left, right } = getSeriesPlotBounds(plot);\n if (count <= 1) {\n return (left + right) / 2;\n }\n\n return left + index * ((right - left) / (count - 1));\n}\n\nfunction yForDomain(value: number, yMin: number, yMax: number, plot: PlotArea) {\n const span = Math.max(1, yMax - yMin);\n return plot.bottom - ((value - yMin) / span) * plotSpan(plot);\n}\n\nfunction formatValue(value: number) {\n return Number.isInteger(value) ? String(value) : value.toFixed(1);\n}\n\nfunction ChartValueLabel({\n anchor = \"middle\",\n children,\n show,\n styles,\n x,\n y,\n}: {\n anchor?: \"middle\" | \"start\" | \"end\";\n children: string | number;\n show?: boolean;\n styles: Record<string, string>;\n x: number;\n y: number;\n}) {\n if (!show) {\n return null;\n }\n\n return (\n <text className={styles.valueLabel} textAnchor={anchor} x={x} y={y}>\n {children}\n </text>\n );\n}\n\nfunction Histogram({ data, plot, showValues, styles, yMax, yMin }: SpecializedChartProps) {\n const barHalfWidth = getHistogramBarHalfWidth(plot, data.length);\n const width = barHalfWidth * 2;\n\n return (\n <g>\n {data.map((item, index) => {\n const height = ((item.value - yMin) / Math.max(1, yMax - yMin)) * plotSpan(plot);\n const xCenter = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);\n const x = xCenter - barHalfWidth;\n const y = plot.bottom - height;\n return (\n <g key={item.label}>\n <rect\n className={`${styles.bar} ${chartClass(styles, index % paletteClasses.length)}`}\n height={height}\n rx=\"2\"\n width={width}\n x={x}\n y={y}\n />\n {showValues ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={x + width / 2} y={y - 6}>\n {formatValue(item.value)}\n </text>\n ) : null}\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction heatmapLayout(plot: PlotArea) {\n const rows = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\"];\n const cols = [\"AM\", \"PM\", \"Eve\"];\n const gap = 4;\n const cellW = (plotInnerWidth(plot) - gap * (cols.length - 1)) / cols.length;\n const cellH = (plotSpan(plot) - gap * (rows.length - 1)) / rows.length;\n const startX = plotDataLeft(plot);\n const startY = plot.top;\n\n return { rows, cols, gap, cellW, cellH, startX, startY };\n}\n\nexport function HeatmapAxisLabels({ plot, styles }: Pick<SpecializedChartProps, \"plot\" | \"styles\">) {\n const { rows, cols, gap, cellW, cellH, startX, startY } = heatmapLayout(plot);\n\n return (\n <g>\n {cols.map((col, colIndex) => (\n <text\n className={styles.axisLabels}\n key={col}\n textAnchor=\"middle\"\n x={startX + colIndex * (cellW + gap) + cellW / 2}\n y={startY - 6}\n >\n {col}\n </text>\n ))}\n {rows.map((row, rowIndex) => (\n <text\n className={styles.axisLabels}\n key={row}\n textAnchor=\"end\"\n x={plot.gridLeft - 6}\n y={startY + rowIndex * (cellH + gap) + cellH / 2 + 3}\n >\n {row}\n </text>\n ))}\n </g>\n );\n}\n\nfunction Heatmap({ data, plot, showValues, styles }: SpecializedChartProps) {\n const { rows, cols, gap, cellW, cellH, startX, startY } = heatmapLayout(plot);\n const max = Math.max(1, ...data.map((item) => item.value));\n\n return (\n <g>\n {rows.map((row, rowIndex) => (\n <g key={row}>\n {cols.map((col, colIndex) => {\n const item = data[(rowIndex * cols.length + colIndex) % data.length];\n const x = startX + colIndex * (cellW + gap);\n const y = startY + rowIndex * (cellH + gap);\n const ratio = item.value / max;\n return (\n <g key={`${row}-${col}`}>\n <rect\n className={`${styles.bar} ${chartClass(styles, 0)}`}\n height={cellH}\n opacity={0.22 + ratio * 0.78}\n rx=\"4\"\n width={cellW}\n x={x}\n y={y}\n />\n <ChartValueLabel show={showValues} styles={styles} x={x + cellW / 2} y={y + cellH / 2 + 3}>\n {formatValue(item.value)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n ))}\n </g>\n );\n}\n\nfunction Waterfall({ data, plot, showValues, styles, yMax, yMin }: SpecializedChartProps) {\n let running = 0;\n const slotWidth = plotInnerWidth(plot) / Math.max(data.length, 1);\n const barWidth = Math.min(28, Math.max(4, slotWidth * 0.55));\n\n return (\n <g>\n {data.map((item, index) => {\n const start = running;\n running += item.value;\n const top = Math.max(start, running);\n const bottom = Math.min(start, running);\n const x = xForSeriesCategoryIndex(plot, index, data.length) - barWidth / 2;\n const y = yForDomain(top, yMin, yMax, plot);\n const height = yForDomain(bottom, yMin, yMax, plot) - y;\n const positive = item.value >= 0;\n return (\n <g key={item.label}>\n <rect\n className={`${styles.bar} ${chartClass(styles, positive ? 0 : 3)}`}\n height={Math.max(4, height)}\n rx=\"2\"\n width={barWidth}\n x={x}\n y={y}\n />\n {showValues ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={x + barWidth / 2} y={y - 6}>\n {formatValue(item.value)}\n </text>\n ) : null}\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction Candlestick({ data, plot, showValues, styles, yMax, yMin }: SpecializedChartProps) {\n const bodyWidth = candlestickBodyWidth(plot, data.length);\n const barHalfWidth = bodyWidth / 2;\n const closePoints = data\n .map((item, index) => {\n const close = item.close ?? item.value;\n const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);\n const y = yForDomain(close, yMin, yMax, plot);\n return `${x},${y}`;\n })\n .join(\" \");\n\n return (\n <g>\n <polyline className={`${styles.line} ${chartClass(styles, 0)}`} fill=\"none\" points={closePoints} />\n {data.map((item, index) => {\n const open = item.open ?? item.value * 0.9;\n const close = item.close ?? item.value;\n const high = item.high ?? item.value * 1.08;\n const low = item.low ?? item.value * 0.82;\n const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);\n const bullish = close >= open;\n const bodyTop = yForDomain(Math.max(open, close), yMin, yMax, plot);\n const bodyBottom = yForDomain(Math.min(open, close), yMin, yMax, plot);\n return (\n <g key={item.label}>\n <line\n className={`${styles.wick} ${chartClass(styles, bullish ? 1 : 3)}`}\n x1={x}\n x2={x}\n y1={yForDomain(high, yMin, yMax, plot)}\n y2={yForDomain(low, yMin, yMax, plot)}\n />\n <rect\n className={`${styles.bar} ${chartClass(styles, bullish ? 1 : 3)}`}\n height={Math.max(3, bodyBottom - bodyTop)}\n width={bodyWidth}\n x={x - bodyWidth / 2}\n y={bodyTop}\n />\n {showValues ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={x} y={bodyTop - 6}>\n {formatValue(close)}\n </text>\n ) : null}\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction BoxPlot({ data, plot, showValues, styles, yMax, yMin }: SpecializedChartProps) {\n const barHalfWidth = getBoxPlotBarHalfWidth(plot, data.length);\n const boxWidth = barHalfWidth * 2;\n\n return (\n <g>\n {data.map((item, index) => {\n const min = item.min ?? item.value * 0.6;\n const q1 = item.q1 ?? item.value * 0.78;\n const median = item.median ?? item.value;\n const q3 = item.q3 ?? item.value * 1.18;\n const maxV = item.max ?? item.value * 1.35;\n const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);\n const seriesClass = chartClass(styles, index % paletteClasses.length);\n return (\n <g key={item.label}>\n <line className={`${styles.wick} ${seriesClass}`} x1={x} x2={x} y1={yForDomain(min, yMin, yMax, plot)} y2={yForDomain(maxV, yMin, yMax, plot)} />\n <line className={`${styles.wick} ${seriesClass}`} x1={x - boxWidth / 2} x2={x + boxWidth / 2} y1={yForDomain(min, yMin, yMax, plot)} y2={yForDomain(min, yMin, yMax, plot)} />\n <line className={`${styles.wick} ${seriesClass}`} x1={x - boxWidth / 2} x2={x + boxWidth / 2} y1={yForDomain(maxV, yMin, yMax, plot)} y2={yForDomain(maxV, yMin, yMax, plot)} />\n <rect\n className={`${styles.area} ${seriesClass}`}\n height={yForDomain(q1, yMin, yMax, plot) - yForDomain(q3, yMin, yMax, plot)}\n width={boxWidth}\n x={x - boxWidth / 2}\n y={yForDomain(q3, yMin, yMax, plot)}\n />\n <line className={`${styles.wick} ${seriesClass}`} strokeWidth=\"2\" x1={x - boxWidth / 2} x2={x + boxWidth / 2} y1={yForDomain(median, yMin, yMax, plot)} y2={yForDomain(median, yMin, yMax, plot)} />\n {showValues ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={x} y={yForDomain(maxV, yMin, yMax, plot) - 6}>\n {formatValue(median)}\n </text>\n ) : null}\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction truncateLabel(label: string, maxChars: number) {\n if (maxChars < 4) {\n return \"\";\n }\n\n if (label.length <= maxChars) {\n return label;\n }\n\n return `${label.slice(0, maxChars - 1)}…`;\n}\n\nfunction Treemap({ data, plot, showValues, styles }: SpecializedChartProps) {\n const gap = 2;\n const labelHeight = 18;\n const items = data.map((item, index) => ({\n group: item.group,\n index,\n label: item.label,\n value: Math.max(0, item.value),\n }));\n const layout = layoutGroupedTreemap(\n items,\n plot.gridLeft,\n plot.top + labelHeight,\n plot.gridRight - plot.gridLeft,\n plotSpan(plot) - labelHeight,\n );\n\n return (\n <g>\n {layout.groups.map((group) => (\n <text\n className={`${styles.treemapGroupLabel} ${chartClass(styles, group.groupIndex % paletteClasses.length)}`}\n key={group.group}\n textAnchor=\"middle\"\n x={group.x + group.width / 2}\n y={plot.top + 12}\n >\n {group.group}\n </text>\n ))}\n {layout.rects.map((rect) => {\n const width = Math.max(0, rect.width - gap);\n const height = Math.max(0, rect.height - gap);\n const x = rect.x + gap / 2;\n const y = rect.y + gap / 2;\n const colorIndex = rect.groupIndex ?? rect.index;\n const showLabel = width >= 28 && height >= 16;\n const showValue = showValues && width >= 22 && height >= 22;\n\n return (\n <g key={`${rect.group ?? \"flat\"}-${rect.label}`}>\n <rect\n className={`${styles.bar} ${chartClass(styles, colorIndex % paletteClasses.length)}`}\n height={height}\n width={width}\n x={x}\n y={y}\n />\n {showLabel ? (\n <text className={styles.treemapLabel} textAnchor=\"middle\" x={x + width / 2} y={y + height / 2 + (showValue ? -2 : 3)}>\n {rect.label}\n </text>\n ) : null}\n <ChartValueLabel show={showValue} styles={styles} x={x + width / 2} y={y + height / 2 + 12}>\n {formatValue(rect.value)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction Sunburst({ data, plot, showValues, styles }: SpecializedChartProps) {\n const cx = (plot.gridLeft + plot.gridRight) / 2;\n const cy = (plot.top + plot.bottom) / 2;\n const total = data.reduce((sum, item) => sum + item.value, 0) || 1;\n let angle = -Math.PI / 2;\n\n return (\n <g>\n {data.map((item, index) => {\n const slice = (item.value / total) * Math.PI * 2;\n const inner = 26 + (index % 2) * 18;\n const outer = inner + 28;\n const start = angle;\n const end = angle + slice;\n angle = end;\n const largeArc = slice > Math.PI ? 1 : 0;\n const startOuter = {\n x: cx + outer * Math.cos(start),\n y: cy + outer * Math.sin(start),\n };\n const endOuter = {\n x: cx + outer * Math.cos(end),\n y: cy + outer * Math.sin(end),\n };\n const startInner = {\n x: cx + inner * Math.cos(end),\n y: cy + inner * Math.sin(end),\n };\n const endInner = {\n x: cx + inner * Math.cos(start),\n y: cy + inner * Math.sin(start),\n };\n const path = [\n `M ${startOuter.x} ${startOuter.y}`,\n `A ${outer} ${outer} 0 ${largeArc} 1 ${endOuter.x} ${endOuter.y}`,\n `L ${startInner.x} ${startInner.y}`,\n `A ${inner} ${inner} 0 ${largeArc} 0 ${endInner.x} ${endInner.y}`,\n \"Z\",\n ].join(\" \");\n const midAngle = (start + end) / 2;\n const labelR = (inner + outer) / 2;\n const lx = cx + labelR * Math.cos(midAngle);\n const ly = cy + labelR * Math.sin(midAngle);\n return (\n <g key={item.label}>\n <path className={`${styles.slice} ${chartClass(styles, index)}`} d={path} opacity={0.9} />\n <ChartValueLabel show={showValues} styles={styles} x={lx} y={ly + 3}>\n {formatValue(item.value)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction sankeySeriesClass(styles: Record<string, string>, kind: SankeyNodeKind) {\n if (kind === \"profit\") {\n return chartClass(styles, 1);\n }\n\n if (kind === \"cost\") {\n return chartClass(styles, 3);\n }\n\n return chartClass(styles, 0);\n}\n\nfunction Sankey({ plot, styles }: Pick<SpecializedChartProps, \"plot\" | \"styles\">) {\n const width = plot.gridRight - plot.gridLeft;\n const height = plot.bottom - plot.top;\n const { nodes, layoutLinks } = layoutSankey(demoSankeyNodes, demoSankeyLinks, width, height, {\n nodeWidth: 5,\n nodePadding: 10,\n padX: 46,\n padY: 12,\n });\n\n return (\n <g transform={`translate(${plot.gridLeft}, ${plot.top})`}>\n {layoutLinks.map((link, index) => (\n <path\n className={`${styles.sankeyLink} ${sankeySeriesClass(styles, link.targetKind)}`}\n d={link.path}\n key={`link-${index}`}\n />\n ))}\n {nodes.map((node) => {\n const seriesClass = sankeySeriesClass(styles, node.kind);\n const valueLabel = formatSankeyValue(node.value);\n\n return (\n <g key={node.id}>\n <rect className={`${styles.sankeyNode} ${seriesClass}`} height={node.height} width={node.width} x={node.x} y={node.y} />\n {node.labelPosition === \"center\" ? (\n <g>\n <rect\n className={styles.sankeyLabelBox}\n height={24}\n rx=\"3\"\n width={Math.max(58, node.label.length * 5.8 + 12)}\n x={node.x - Math.max(58, node.label.length * 5.8 + 12) / 2 + node.width / 2}\n y={node.y + node.height / 2 - 12}\n />\n <text\n className={styles.sankeyCenterLabel}\n textAnchor=\"middle\"\n x={node.x + node.width / 2}\n y={node.y + node.height / 2 + 1}\n >\n {node.label}\n </text>\n </g>\n ) : (\n <text\n className={styles.sankeySideLabel}\n textAnchor={node.labelPosition === \"left\" ? \"end\" : \"start\"}\n x={node.labelPosition === \"left\" ? node.x - 6 : node.x + node.width + 6}\n y={node.y + node.height / 2 - 2}\n >\n <tspan className={styles.sankeySideName} x={node.labelPosition === \"left\" ? node.x - 6 : node.x + node.width + 6}>\n {node.label}\n </tspan>\n <tspan className={styles.sankeySideValue} dy=\"11\" x={node.labelPosition === \"left\" ? node.x - 6 : node.x + node.width + 6}>\n {valueLabel}\n </tspan>\n </text>\n )}\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction StreamGraph({ plot, series, showValues, styles, yMax, yMin }: SpecializedChartProps) {\n const labels = series[0]?.values.length ?? 0;\n const totals = Array.from({ length: labels }, (_, index) =>\n series.reduce((sum, item) => sum + item.values[index], 0),\n );\n const max = Math.max(1, ...totals);\n\n return (\n <g>\n {series.map((item, seriesIndex) => {\n let offset = 0;\n const topPoints = item.values.map((value, index) => {\n const top = offset + value;\n offset = top;\n return {\n x: xForSeriesIndex(plot, index, labels),\n y: yForDomain(top, yMin, max, plot),\n };\n });\n offset -= item.values.reduce((sum, value) => sum + value, 0);\n const basePoints = [...item.values].reverse().map((value, reverseIndex) => {\n const index = item.values.length - 1 - reverseIndex;\n offset += value;\n return {\n x: xForSeriesIndex(plot, index, labels),\n y: yForDomain(offset, yMin, max, plot),\n };\n });\n const path = [\n `M ${topPoints[0].x} ${topPoints[0].y}`,\n ...topPoints.slice(1).map((point) => `L ${point.x} ${point.y}`),\n ...basePoints.map((point) => `L ${point.x} ${point.y}`),\n \"Z\",\n ].join(\" \");\n const lastTop = topPoints[topPoints.length - 1];\n const lastBase = basePoints[0];\n return (\n <g key={item.id}>\n <path className={`${styles.area} ${chartClass(styles, seriesIndex)}`} d={path} />\n <ChartValueLabel\n show={showValues}\n styles={styles}\n x={lastTop.x + 6}\n y={(lastTop.y + lastBase.y) / 2 + 3}\n >\n {formatValue(item.values[item.values.length - 1] ?? 0)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction Ridgeline({ plot, series, showValues, styles }: SpecializedChartProps) {\n return (\n <g>\n {series.map((item, seriesIndex) => {\n const max = Math.max(1, ...item.values);\n const offset = seriesIndex * 28;\n const peakIndex = item.values.indexOf(max);\n const points = item.values\n .map((value, index) => {\n const x = xForSeriesIndex(plot, index, item.values.length);\n const y = plot.top + offset + (1 - value / max) * 18;\n return `${x},${y}`;\n })\n .join(\" \");\n const seriesClass = chartClass(styles, seriesIndex);\n return (\n <g key={item.id}>\n <polyline className={`${styles.line} ${seriesClass}`} fill=\"none\" points={points} />\n <path\n className={`${styles.area} ${seriesClass}`}\n d={`M ${xForSeriesIndex(plot, 0, item.values.length)} ${plot.top + offset + 18} L ${item.values\n .map((value, index) => {\n const x = xForSeriesIndex(plot, index, item.values.length);\n const y = plot.top + offset + (1 - value / max) * 18;\n return `${x} ${y}`;\n })\n .join(\" L \")} L ${xForSeriesIndex(plot, item.values.length - 1, item.values.length)} ${plot.top + offset + 18} Z`}\n />\n <ChartValueLabel\n show={showValues}\n styles={styles}\n x={xForSeriesIndex(plot, peakIndex, item.values.length)}\n y={plot.top + offset + (1 - max / max) * 18 - 6}\n >\n {formatValue(max)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction DensityPlot({ plot, series, showValues, styles, yMax, yMin }: SpecializedChartProps) {\n return (\n <g>\n {series.slice(0, 3).map((item, seriesIndex) => {\n const max = Math.max(1, ...item.values);\n const peakIndex = item.values.indexOf(max);\n const baseY = plot.bottom;\n const path = item.values\n .map((value, index) => {\n const x = xForSeriesIndex(plot, index, item.values.length);\n const y = yForDomain(value, yMin, yMax, plot);\n return index === 0 ? `M ${x} ${baseY} L ${x} ${y}` : `L ${x} ${y}`;\n })\n .join(\" \");\n const peakX = xForSeriesIndex(plot, peakIndex, item.values.length);\n const peakY = yForDomain(max, yMin, yMax, plot);\n return (\n <g key={item.id}>\n <path\n className={`${styles.area} ${chartClass(styles, seriesIndex)}`}\n d={`${path} L ${xForSeriesIndex(plot, item.values.length - 1, item.values.length)} ${baseY} Z`}\n />\n <ChartValueLabel show={showValues} styles={styles} x={peakX} y={peakY - 6}>\n {formatValue(max)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction ViolinPlot({ data, plot, showValues, styles, yMax, yMin }: SpecializedChartProps) {\n const barHalfWidth = getViolinBarHalfWidth(plot, data.length);\n\n return (\n <g>\n {data.map((item, index) => {\n const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);\n const height = ((item.value - yMin) / Math.max(1, yMax - yMin)) * plotSpan(plot);\n const y = plot.bottom - height;\n return (\n <g key={item.label}>\n <ellipse\n className={`${styles.violin} ${chartClass(styles, index % paletteClasses.length)}`}\n cx={x}\n cy={y + height / 2}\n rx={barHalfWidth}\n ry={height / 2}\n strokeWidth=\"1.5\"\n />\n {showValues ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={x} y={y - 6}>\n {formatValue(item.value)}\n </text>\n ) : null}\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction HexbinPlot({ data, plot, showValues, styles }: SpecializedChartProps) {\n const cols = 6;\n const rows = Math.max(1, Math.ceil(data.length / cols));\n const gap = 3;\n const size = Math.min(\n (plot.gridRight - plot.gridLeft - gap * (cols - 1)) / cols,\n (plotSpan(plot) - gap * (rows - 1)) / rows,\n ) * 0.42;\n\n return (\n <g>\n {data.map((item, index) => {\n const x = plot.gridLeft + (index % cols) * (size * 2 + gap) + size;\n const y = plot.top + Math.floor(index / cols) * (size * 1.7 + gap) + size;\n const opacity = 0.25 + (item.value / 100) * 0.75;\n return (\n <g key={item.label}>\n <polygon\n className={`${styles.bar} ${chartClass(styles, 1)}`}\n opacity={opacity}\n points={`${x},${y - size} ${x + size},${y - size / 2} ${x + size},${y + size / 2} ${x},${y + size} ${x - size},${y + size / 2} ${x - size},${y - size / 2}`}\n />\n <ChartValueLabel show={showValues} styles={styles} x={x} y={y + 3}>\n {formatValue(item.value)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction ChordDiagram({ data, plot, showValues, styles }: SpecializedChartProps) {\n const cx = (plot.gridLeft + plot.gridRight) / 2;\n const cy = (plot.top + plot.bottom) / 2;\n const radius = Math.min(plot.gridRight - plot.gridLeft, plotSpan(plot)) * 0.34;\n const total = data.reduce((sum, item) => sum + item.value, 0) || 1;\n let angle = -Math.PI / 2;\n\n return (\n <g>\n <circle className={styles.axisGuide} cx={cx} cy={cy} fill=\"none\" r={radius} />\n {data.map((item, index) => {\n const slice = (item.value / total) * Math.PI * 2;\n const start = angle;\n const end = angle + slice;\n angle = end;\n const sx = cx + radius * Math.cos((start + end) / 2);\n const sy = cy + radius * Math.sin((start + end) / 2);\n const tx = cx + radius * Math.cos(end + 0.4);\n const ty = cy + radius * Math.sin(end + 0.4);\n const midAngle = (start + end) / 2;\n const lx = cx + (radius + 14) * Math.cos(midAngle);\n const ly = cy + (radius + 14) * Math.sin(midAngle);\n return (\n <g key={item.label}>\n <path\n className={`${styles.line} ${chartClass(styles, index)}`}\n d={`M ${sx} ${sy} Q ${cx} ${cy} ${tx} ${ty}`}\n fill=\"none\"\n strokeWidth={2 + (item.value / total) * 8}\n />\n <ChartValueLabel show={showValues} styles={styles} x={lx} y={ly + 3}>\n {formatValue(item.value)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction NetworkGraph({ data, plot, showValues, styles }: SpecializedChartProps) {\n const width = plot.gridRight - plot.gridLeft;\n const height = plot.bottom - plot.top;\n const { nodes, edges } = layoutRadialNetworkGraph(data, width, height);\n\n return (\n <g transform={`translate(${plot.gridLeft}, ${plot.top})`}>\n {edges.map((edge, index) => (\n <line className={styles.graphLink} key={`edge-${index}`} x1={edge.x1} x2={edge.x2} y1={edge.y1} y2={edge.y2} />\n ))}\n {nodes.map((node) => (\n <g key={node.id}>\n <circle\n className={`${styles.graphNode} ${chartClass(styles, node.groupIndex % paletteClasses.length)}`}\n cx={node.x}\n cy={node.y}\n r={node.radius}\n />\n <ChartValueLabel show={showValues} styles={styles} x={node.x} y={node.y + 3}>\n {formatValue(node.value)}\n </ChartValueLabel>\n </g>\n ))}\n </g>\n );\n}\n\nfunction ForceDirectedGraph({ data, plot, showValues, styles }: SpecializedChartProps) {\n const width = plot.gridRight - plot.gridLeft;\n const height = plot.bottom - plot.top;\n const { nodes, edges } = layoutForceDirectedGraph(data, width, height);\n\n return (\n <g transform={`translate(${plot.gridLeft}, ${plot.top})`}>\n {edges.map((edge, index) => {\n const seriesClass = chartClass(styles, (edge.groupIndex ?? 0) % paletteClasses.length);\n return (\n <line\n className={`${styles.graphLink} ${styles.graphLinkColored} ${seriesClass}`}\n key={`edge-${index}`}\n x1={edge.x1}\n x2={edge.x2}\n y1={edge.y1}\n y2={edge.y2}\n />\n );\n })}\n {nodes.map((node) => {\n const seriesClass = chartClass(styles, node.groupIndex % paletteClasses.length);\n return (\n <g key={node.id}>\n {node.showRing ? (\n <circle className={`${styles.graphNodeRing} ${seriesClass}`} cx={node.x} cy={node.y} r={node.radius + 4} />\n ) : null}\n <circle className={`${styles.graphNode} ${seriesClass}`} cx={node.x} cy={node.y} r={node.radius} />\n {node.showLabel ? (\n <text className={styles.graphLabel} textAnchor=\"middle\" x={node.x} y={node.y + 4}>\n {node.label}\n </text>\n ) : null}\n <ChartValueLabel show={showValues} styles={styles} x={node.x} y={node.y + node.radius + 12}>\n {formatValue(node.value)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction CirclePacking({ data, plot, showValues, styles }: SpecializedChartProps) {\n const items = data.map((item, index) => ({\n index,\n label: item.label,\n parent: item.parent,\n value: Math.max(0, item.value),\n }));\n\n const circles = layoutCirclePack(items, plot.gridRight - plot.gridLeft, plotSpan(plot)).sort((a, b) => {\n if (a.depth !== b.depth) {\n return a.depth - b.depth;\n }\n\n return b.r - a.r;\n });\n\n return (\n <g>\n {circles.map((circle) => {\n const x = plot.gridLeft + circle.x;\n const y = plot.top + circle.y;\n const maxChars = Math.max(0, Math.floor((circle.r * 2) / 6.5));\n const label = truncateLabel(circle.label, maxChars);\n const showLabel = Boolean(label) && circle.r >= 12;\n const showValue = showValues && !circle.isParent && circle.r >= 16;\n\n return (\n <g key={`${circle.label}-${circle.depth}-${circle.isParent ? \"p\" : \"l\"}`}>\n <circle\n className={`${circle.isParent ? styles.packParent : styles.point} ${chartClass(styles, circle.colorIndex % paletteClasses.length)}`}\n cx={x}\n cy={y}\n r={circle.r}\n />\n {showLabel ? (\n <text className={styles.packLabel} textAnchor=\"middle\" x={x} y={y + (showValue ? -4 : 3)}>\n {label}\n </text>\n ) : null}\n <ChartValueLabel show={showValue} styles={styles} x={x} y={y + 10}>\n {formatValue(circle.value)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction calendarHeatmapLayout(plot: PlotArea) {\n const cols = 12;\n const rows = 7;\n const gap = 3;\n const monthLabels = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n const dayLabels = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n const availW = plotInnerWidth(plot);\n const availH = plotSpan(plot);\n const cellW = (availW - gap * (cols - 1)) / cols;\n const cellH = (availH - gap * (rows - 1)) / rows;\n const startX = plotDataLeft(plot);\n const startY = plot.top;\n\n return { cols, rows, gap, monthLabels, dayLabels, cellW, cellH, startX, startY };\n}\n\nexport function CalendarHeatmapAxisLabels({ plot, styles }: Pick<SpecializedChartProps, \"plot\" | \"styles\">) {\n const { gap, monthLabels, dayLabels, cellW, cellH, startX, startY } = calendarHeatmapLayout(plot);\n\n return (\n <g>\n {monthLabels.map((label, colIndex) => (\n <text\n className={styles.axisLabels}\n key={label}\n textAnchor=\"middle\"\n x={startX + colIndex * (cellW + gap) + cellW / 2}\n y={startY - 8}\n >\n {label}\n </text>\n ))}\n {dayLabels.map((label, rowIndex) => (\n <text\n className={styles.axisLabels}\n key={label}\n textAnchor=\"end\"\n x={plot.gridLeft - 6}\n y={startY + rowIndex * (cellH + gap) + cellH / 2 + 3}\n >\n {label}\n </text>\n ))}\n </g>\n );\n}\n\nfunction CalendarHeatmap({ data, plot, showValues, styles }: SpecializedChartProps) {\n const { cols, rows, gap, cellW, cellH, startX, startY } = calendarHeatmapLayout(plot);\n const max = Math.max(1, ...data.map((item) => item.value));\n\n return (\n <g>\n {Array.from({ length: rows * cols }, (_, index) => {\n const item = data[index % data.length];\n const col = index % cols;\n const row = Math.floor(index / cols);\n const x = startX + col * (cellW + gap);\n const y = startY + row * (cellH + gap);\n const ratio = item.value / max;\n return (\n <g key={index}>\n <rect\n className={`${styles.bar} ${chartClass(styles, 0)}`}\n height={cellH}\n opacity={0.22 + ratio * 0.78}\n rx=\"3\"\n width={cellW}\n x={x}\n y={y}\n />\n <ChartValueLabel show={showValues && cellW >= 14 && cellH >= 12} styles={styles} x={x + cellW / 2} y={y + cellH / 2 + 3}>\n {formatValue(item.value)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction Timeline({ data, plot, showValues, styles }: SpecializedChartProps) {\n const track = timelineTrackBounds(plot);\n const y = (plot.top + plot.bottom) / 2;\n return (\n <g>\n <line className={styles.axisGuide} x1={track.left} x2={track.right} y1={y} y2={y} />\n {data.map((item, index) => {\n const x = xForTimelineIndex(plot, index, data.length);\n return (\n <g key={item.label}>\n <circle className={`${styles.point} ${chartClass(styles, index % paletteClasses.length)}`} cx={x} cy={y} r=\"6\" />\n <text className={styles.axisLabels} textAnchor=\"middle\" x={x} y={y - 14}>\n {item.label}\n </text>\n <ChartValueLabel show={showValues} styles={styles} x={x} y={y + 18}>\n {formatValue(item.value)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction ganttRowMetrics(plot: PlotArea, rowCount: number) {\n const rowHeight = plotSpan(plot) / Math.max(rowCount, 1);\n const barHeight = Math.max(12, Math.min(22, rowHeight * 0.55));\n const rowY = (index: number) => plot.top + index * rowHeight + (rowHeight - barHeight) / 2;\n\n return {\n barHeight,\n rowHeight,\n rowY,\n rowCenterY: (index: number) => rowY(index) + barHeight / 2 + 4,\n };\n}\n\nexport function GanttRowLabels({\n data,\n plot,\n styles,\n}: Pick<SpecializedChartProps, \"data\" | \"plot\" | \"styles\">) {\n const { rowCenterY } = ganttRowMetrics(plot, data.length);\n\n return (\n <g>\n {data.map((item, index) => (\n <text\n className={styles.axisLabels}\n key={item.label}\n textAnchor=\"end\"\n x={plot.gridLeft - 8}\n y={rowCenterY(index)}\n >\n {item.label}\n </text>\n ))}\n </g>\n );\n}\n\nfunction GanttChart({ data, plot, showValues, styles }: SpecializedChartProps) {\n const { barHeight, rowY } = ganttRowMetrics(plot, data.length);\n const trackWidth = plot.gridRight - plot.gridLeft;\n\n return (\n <g>\n {data.map((item, index) => {\n const start = item.start ?? index * 12;\n const end = item.end ?? start + item.value;\n const max = 100;\n const y = rowY(index);\n const x = plot.gridLeft + (start / max) * trackWidth;\n const width = ((end - start) / max) * trackWidth;\n const barWidth = Math.max(12, width);\n return (\n <g key={item.label}>\n <rect\n className={`${styles.bar} ${chartClass(styles, index % paletteClasses.length)}`}\n height={barHeight}\n rx=\"4\"\n width={barWidth}\n x={x}\n y={y}\n />\n <ChartValueLabel show={showValues} styles={styles} x={x + barWidth / 2} y={y + barHeight / 2 + 3}>\n {formatValue(end - start)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction MilestoneTimeline({ data, plot, showValues, styles }: SpecializedChartProps) {\n const track = timelineTrackBounds(plot);\n const y = plot.top + plotSpan(plot) * 0.58;\n return (\n <g>\n <line className={`${styles.line} ${chartClass(styles, 0)}`} x1={track.left} x2={track.right} y1={y} y2={y} />\n {data.map((item, index) => {\n const x = xForTimelineIndex(plot, index, data.length);\n const done = index < data.length - 1;\n return (\n <g key={item.label}>\n <circle className={`${styles.point} ${chartClass(styles, done ? 1 : 2)}`} cx={x} cy={y} r=\"7\" />\n <text className={styles.axisLabels} textAnchor=\"middle\" x={x} y={y - 16}>\n {item.label}\n </text>\n <ChartValueLabel show={showValues} styles={styles} x={x} y={y + 18}>\n {formatValue(item.value)}\n </ChartValueLabel>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction MapBase({ data, plot, showValues, styles, variant }: SpecializedChartProps) {\n const fit = fitWorldMapToPlot(plot);\n const maxValue = Math.max(1, ...data.map((item) => item.value));\n const isChoropleth = variant === \"choropleth\";\n const mapTransform = `translate(${fit.x},${fit.y}) scale(${fit.scale})`;\n\n const projectToPlot = (x: number, y: number) => ({\n x: fit.x + x * fit.scale,\n y: fit.y + y * fit.scale,\n });\n\n return (\n <g>\n <g transform={mapTransform}>\n {worldLandPaths.map((path, index) => (\n <path className={styles.mapLand} d={path} key={`land-${index}`} />\n ))}\n </g>\n\n {isChoropleth ? (\n <g transform={mapTransform}>\n {data.map((item, index) => {\n const regionId = resolveRegionId(item);\n const region = worldMapRegions.find((entry) => entry.id === regionId);\n if (!region) {\n return null;\n }\n\n const ratio = item.value / maxValue;\n return region.paths.map((path, pathIndex) => (\n <path\n className={`${styles.mapRegion} ${chartClass(styles, index % paletteClasses.length)}`}\n d={path}\n key={`${regionId}-${pathIndex}`}\n opacity={0.38 + ratio * 0.62}\n />\n ));\n })}\n </g>\n ) : null}\n\n {isChoropleth\n ? data.map((item) => {\n const regionId = resolveRegionId(item);\n const centroid = getRegionCentroid(regionId);\n if (!centroid) {\n return null;\n }\n\n const point = projectToPlot(centroid.x, centroid.y);\n return (\n <g key={item.label}>\n <text className={styles.mapLabel} textAnchor=\"middle\" x={point.x} y={point.y - 8}>\n {item.label}\n </text>\n {showValues ? (\n <text className={styles.mapValue} textAnchor=\"middle\" x={point.x} y={point.y + 8}>\n {formatValue(item.value)}\n </text>\n ) : null}\n </g>\n );\n })\n : data.map((item, index) => {\n if (item.lat == null || item.lng == null) {\n return null;\n }\n\n const mapPoint = projectLatLng(item.lng, item.lat);\n const point = projectToPlot(mapPoint.x, mapPoint.y);\n const radius = variant === \"bubble-map\" ? 10 + (item.value / maxValue) * 26 : 8;\n\n return (\n <g key={item.label}>\n <circle\n className={`${styles.point} ${chartClass(styles, index % paletteClasses.length)}`}\n cx={point.x}\n cy={point.y}\n opacity={variant === \"bubble-map\" ? 0.7 : 1}\n r={radius}\n />\n {variant === \"geo-map\" ? (\n <text className={styles.mapLabel} textAnchor=\"middle\" x={point.x} y={point.y - radius - 8}>\n {item.label}\n </text>\n ) : null}\n {showValues ? (\n <text\n className={styles.mapValue}\n textAnchor=\"middle\"\n x={point.x}\n y={point.y + (variant === \"bubble-map\" ? radius + 14 : 4)}\n >\n {formatValue(item.value)}\n </text>\n ) : null}\n </g>\n );\n })}\n </g>\n );\n}\n\nexport function SpecializedChart(props: SpecializedChartProps) {\n switch (props.variant) {\n case \"histogram\":\n return <Histogram {...props} />;\n case \"heatmap\":\n return <Heatmap {...props} />;\n case \"waterfall\":\n return <Waterfall {...props} />;\n case \"candlestick\":\n return <Candlestick {...props} />;\n case \"box-plot\":\n return <BoxPlot {...props} />;\n case \"treemap\":\n return <Treemap {...props} />;\n case \"sunburst\":\n return <Sunburst {...props} />;\n case \"sankey\":\n return <Sankey {...props} />;\n case \"stream\":\n return <StreamGraph {...props} />;\n case \"ridgeline\":\n return <Ridgeline {...props} />;\n case \"density\":\n return <DensityPlot {...props} />;\n case \"violin\":\n return <ViolinPlot {...props} />;\n case \"hexbin\":\n return <HexbinPlot {...props} />;\n case \"chord\":\n return <ChordDiagram {...props} />;\n case \"network\":\n return <NetworkGraph {...props} />;\n case \"force-directed\":\n return <ForceDirectedGraph {...props} />;\n case \"circle-packing\":\n return <CirclePacking {...props} />;\n case \"calendar-heatmap\":\n return <CalendarHeatmap {...props} />;\n case \"timeline\":\n return <Timeline {...props} />;\n case \"gantt\":\n return <GanttChart {...props} />;\n case \"milestone-timeline\":\n return <MilestoneTimeline {...props} />;\n case \"geo-map\":\n case \"bubble-map\":\n case \"choropleth\":\n return <MapBase {...props} />;\n default:\n return null;\n }\n}\n",".chart {\n --chart-series-a: var(--opus-accent);\n --chart-series-b: #22c55e;\n --chart-series-c: #f59e0b;\n --chart-series-d: #ef4444;\n --chart-series-e: #06b6d4;\n --chart-series-f: #a855f7;\n display: grid;\n gap: 12px;\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n margin: 0;\n overflow: hidden;\n padding: 14px;\n border: 1px solid var(--opus-border);\n border-radius: var(--opus-input-radius-large);\n background:\n radial-gradient(circle at 12% 10%, color-mix(in srgb, var(--opus-accent) 12%, transparent), transparent 34%),\n color-mix(in srgb, var(--opus-panel) 94%, transparent);\n box-shadow: var(--opus-shadow);\n}\n\n.chart[data-show-axis=\"true\"] {\n gap: 6px;\n}\n\n.chart[data-show-axis=\"true\"] .svg {\n margin-top: -4px;\n}\n\n.chart[data-maximise=\"true\"][data-maximise-plot=\"true\"] {\n overflow-x: auto;\n}\n\n.chart[data-maximise=\"true\"][data-maximise-plot=\"true\"] .svg {\n min-width: 100%;\n}\n\n.chart[data-palette=\"cool\"] {\n --chart-series-a: #2563eb;\n --chart-series-b: #0891b2;\n --chart-series-c: #14b8a6;\n --chart-series-d: #84cc16;\n --chart-series-e: #8b5cf6;\n --chart-series-f: #06b6d4;\n}\n\n.chart[data-palette=\"warm\"] {\n --chart-series-a: #f97316;\n --chart-series-b: #ef4444;\n --chart-series-c: #f59e0b;\n --chart-series-d: #eab308;\n --chart-series-e: #fb7185;\n --chart-series-f: #a855f7;\n}\n\n.chart[data-palette=\"mono\"] {\n --chart-series-a: color-mix(in srgb, var(--opus-accent) 92%, white);\n --chart-series-b: color-mix(in srgb, var(--opus-accent) 72%, white);\n --chart-series-c: color-mix(in srgb, var(--opus-accent) 52%, white);\n --chart-series-d: color-mix(in srgb, var(--opus-accent) 36%, white);\n --chart-series-e: color-mix(in srgb, var(--opus-accent) 24%, white);\n --chart-series-f: color-mix(in srgb, var(--opus-accent) 14%, white);\n}\n\n.header {\n display: flex;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n min-width: 0;\n}\n\n.title,\n.meta {\n margin: 0;\n}\n\n.title {\n color: var(--opus-text);\n font-size: 0.92rem;\n font-weight: 900;\n letter-spacing: 0.02em;\n}\n\n.meta {\n color: var(--opus-muted);\n font-size: 0.68rem;\n font-weight: 900;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n\n.svg {\n display: block;\n width: 100%;\n height: var(--chart-height);\n min-height: 220px;\n overflow: hidden;\n}\n\n.grid line,\n.grid circle,\n.funnelGuide,\n.radarGrid {\n fill: none;\n stroke: color-mix(in srgb, var(--opus-border) 70%, transparent);\n stroke-width: 1;\n}\n\n.funnelGuide {\n stroke-dasharray: 4 5;\n}\n\n.axisLabels,\n.valueLabel,\n.funnelText {\n fill: var(--opus-muted);\n font-size: 10px;\n font-weight: 800;\n}\n\n.valueLabel {\n fill: var(--opus-text);\n}\n\n.bar[data-highlighted=\"true\"] {\n fill: var(--opus-accent);\n}\n\n.axes {\n pointer-events: none;\n}\n\n.axisLine {\n stroke: color-mix(in srgb, var(--opus-border-strong) 72%, transparent);\n stroke-width: 1.5;\n}\n\n.axisTick,\n.axisTitle {\n fill: var(--opus-muted);\n font-size: 9px;\n font-weight: 700;\n}\n\n.axisTitle {\n font-size: 10px;\n font-weight: 800;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.ridge {\n fill: color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 18%, transparent);\n stroke: var(--chart-current, var(--chart-series-a));\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 1.5;\n}\n\n.link {\n fill: none;\n stroke: color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 32%, transparent);\n stroke-width: 1.5;\n}\n\n.wick {\n fill: none;\n stroke: var(--chart-current, var(--chart-series-a));\n stroke-width: 1.5;\n}\n\n.ring {\n fill: color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 14%, transparent);\n stroke: var(--chart-current, var(--chart-series-a));\n stroke-width: 1.5;\n}\n\n.axisGuide {\n fill: none;\n stroke: color-mix(in srgb, var(--opus-border-strong) 70%, transparent);\n stroke-width: 1.5;\n}\n\n.land {\n fill: color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 12%, transparent);\n stroke: color-mix(in srgb, var(--opus-border) 80%, transparent);\n stroke-width: 1.5;\n}\n\n.mapLand {\n fill: color-mix(in srgb, var(--opus-muted) 18%, var(--opus-panel));\n stroke: color-mix(in srgb, var(--opus-border) 65%, transparent);\n stroke-width: 0.75;\n}\n\n.mapRegion {\n fill: var(--chart-current, var(--chart-series-a));\n stroke: color-mix(in srgb, var(--opus-border) 55%, transparent);\n stroke-width: 0.5;\n color: var(--chart-current);\n}\n\n.mapLabel {\n fill: var(--opus-text);\n font-size: 11px;\n font-weight: 800;\n pointer-events: none;\n}\n\n.mapValue {\n fill: var(--opus-text);\n font-size: 12px;\n font-weight: 900;\n pointer-events: none;\n}\n\n.wick,\n.ring,\n.land,\n.link {\n color: var(--chart-current);\n}\n\n.bar,\n.slice,\n.funnel,\n.area,\n.point,\n.line,\n.sankeyNode,\n.sankeyLink,\n.violin,\n.legendSwatch {\n color: var(--chart-current);\n}\n\n.seriesA {\n --chart-current: var(--chart-series-a);\n}\n\n.seriesB {\n --chart-current: var(--chart-series-b);\n}\n\n.seriesC {\n --chart-current: var(--chart-series-c);\n}\n\n.seriesD {\n --chart-current: var(--chart-series-d);\n}\n\n.seriesE {\n --chart-current: var(--chart-series-e);\n}\n\n.seriesF {\n --chart-current: var(--chart-series-f);\n}\n\n.violin {\n fill: color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 24%, transparent);\n stroke: var(--chart-current, var(--chart-series-a));\n stroke-width: 1.5;\n}\n\n.bar,\n.slice,\n.funnel {\n fill: var(--chart-current, var(--chart-series-a));\n filter: drop-shadow(0 10px 18px color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 22%, transparent));\n}\n\n.area,\n.radarArea {\n fill: color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 22%, transparent);\n}\n\n.line {\n fill: none;\n stroke: var(--chart-current, var(--chart-series-a));\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 2;\n filter: drop-shadow(0 6px 12px color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 20%, transparent));\n}\n\n.packParent {\n fill: color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 20%, transparent);\n stroke: color-mix(in srgb, var(--opus-panel) 88%, white);\n stroke-width: 3;\n color: var(--chart-current);\n}\n\n.packLabel,\n.treemapLabel {\n fill: #ffffff;\n font-size: 11px;\n pointer-events: none;\n}\n\n.treemapGroupLabel {\n fill: var(--chart-current, var(--chart-series-a));\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.point {\n fill: var(--chart-current, var(--chart-series-a));\n stroke: color-mix(in srgb, var(--opus-panel) 90%, transparent);\n stroke-width: 2;\n}\n\n.graphLink {\n stroke: color-mix(in srgb, var(--opus-border) 72%, transparent);\n stroke-linecap: round;\n stroke-width: 1.25;\n}\n\n.graphLinkColored {\n stroke: color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 72%, transparent);\n}\n\n.graphNode {\n fill: var(--chart-current, var(--chart-series-a));\n filter: drop-shadow(0 4px 8px color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 24%, transparent));\n stroke: color-mix(in srgb, var(--opus-panel) 88%, white);\n stroke-width: 1.5;\n}\n\n.graphNodeRing {\n fill: none;\n stroke: var(--chart-current, var(--chart-series-a));\n stroke-width: 2.5;\n}\n\n.graphLabel {\n fill: #ffffff;\n font-size: 10px;\n font-weight: 600;\n pointer-events: none;\n}\n\n.sankeyLink {\n stroke: none;\n fill: color-mix(in srgb, var(--chart-current, var(--chart-series-a)) 40%, transparent);\n}\n\n.sankeyNode {\n rx: 1;\n fill: var(--chart-current, var(--chart-series-a));\n}\n\n.sankeyLabelBox {\n fill: color-mix(in srgb, var(--opus-panel) 92%, white);\n stroke: color-mix(in srgb, var(--opus-border) 55%, transparent);\n stroke-width: 1;\n}\n\n.sankeyCenterLabel,\n.sankeySideLabel {\n fill: var(--opus-text, #e2e8f0);\n font-size: 9px;\n font-weight: 600;\n}\n\n.sankeySideValue {\n fill: color-mix(in srgb, var(--opus-text, #e2e8f0) 68%, transparent);\n font-size: 8px;\n font-weight: 500;\n}\n\n.sankeySideName {\n font-size: 9px;\n font-weight: 600;\n}\n\n.radarArea {\n --chart-current: var(--chart-series-a);\n stroke: var(--chart-series-a);\n stroke-width: 3;\n}\n\n.funnelText {\n fill: #ffffff;\n font-size: 11px;\n text-shadow: 0 1px 5px rgb(0 0 0 / 40%);\n}\n\n.legend {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 14px;\n align-items: center;\n}\n\n.legendItem {\n display: inline-flex;\n gap: 6px;\n align-items: center;\n color: var(--opus-muted);\n font-size: 0.75rem;\n font-weight: 800;\n}\n\n.legendSwatch {\n width: 10px;\n height: 10px;\n border-radius: 999px;\n background: var(--chart-current);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--chart-current) 18%, transparent);\n}\n\n@media (max-width: 640px) {\n .chart {\n padding: 12px;\n }\n\n .svg {\n min-height: 190px;\n }\n\n .header {\n align-items: flex-start;\n flex-direction: column;\n }\n}\n","\"use client\";\n\nimport { useEffect, useId, useRef, useState, type CSSProperties } from \"react\";\nimport type { ChartPalette, ChartVariant } from \"@/components/fields/types\";\nimport { chartDemoData, chartDemoSeries } from \"@/lib/controls/chartDemoData\";\nimport {\n CalendarHeatmapAxisLabels,\n GanttRowLabels,\n HeatmapAxisLabels,\n isSpecializedChartVariant,\n SpecializedChart,\n cartesianSpecializedVariants,\n specializedVariantHasXCategoryLabels,\n specializedVariantHasYNumericAxis,\n specializedVariantUsesSlotLabels,\n xForTimelineIndex,\n timelineEndpointInset,\n getCandlestickBarHalfWidth,\n getHistogramBarHalfWidth,\n getBoxPlotBarHalfWidth,\n getViolinBarHalfWidth,\n xForEdgeBarIndex,\n} from \"@/components/Chart/SpecializedCharts\";\nimport styles from \"./Chart.module.css\";\n\nexport type ChartDatum = {\n region?: string;\n lat?: number;\n lng?: number;\n close?: number;\n end?: number;\n group?: string;\n high?: number;\n label: string;\n low?: number;\n max?: number;\n median?: number;\n min?: number;\n open?: number;\n parent?: string;\n q1?: number;\n q3?: number;\n start?: number;\n value: number;\n values?: number[];\n x?: number;\n y?: number;\n};\n\nexport type ChartSeries = {\n id: string;\n label: string;\n values: number[];\n};\n\ntype ChartProps = {\n data?: ChartDatum[];\n height?: number;\n highlightLabel?: string;\n maximise?: boolean;\n palette?: ChartPalette;\n series?: ChartSeries[];\n showAxis?: boolean;\n showGrid?: boolean;\n showLegend?: boolean;\n showValues?: boolean;\n title?: string;\n variant: ChartVariant;\n xAxisLabel?: string;\n yAxisLabel?: string;\n};\n\nconst cartesianVariants: ChartVariant[] = [\n \"bar-vertical\",\n \"bar-horizontal\",\n \"grouped-bar\",\n \"stacked-bar\",\n \"stacked-bar-100\",\n \"line\",\n \"multi-line\",\n \"area\",\n \"stacked-area\",\n \"spline\",\n \"scatter\",\n \"bubble\",\n];\n\nfunction computeYTicks(max: number, steps = 5) {\n const safeMax = Math.max(1, max);\n return Array.from({ length: steps }, (_, index) =>\n Math.round((safeMax * index) / (steps - 1)),\n );\n}\n\nfunction yForValue(value: number, max: number, plot: PlotArea) {\n return plot.bottom - (value / Math.max(1, max)) * (plot.bottom - plot.top);\n}\n\nfunction plotSpan(plot: PlotArea) {\n return plot.bottom - plot.top;\n}\n\nfunction resolvePlot(\n basePlot: PlotArea,\n { denseXLabels, showAxis, variant }: { denseXLabels: boolean; showAxis: boolean; variant?: ChartVariant },\n): PlotArea {\n if (variant === \"choropleth\" || variant === \"geo-map\" || variant === \"bubble-map\") {\n const gridLeft = 8;\n const gridRight = Math.max(basePlot.gridRight, basePlot.right) - 4;\n return {\n ...basePlot,\n bottom: 246,\n gridLeft,\n gridRight,\n left: gridLeft,\n right: gridRight,\n top: 14,\n };\n }\n\n if ((variant === \"heatmap\" || variant === \"calendar-heatmap\") && showAxis) {\n const rowLabelGutter = 32;\n const colLabelGutter = 12;\n\n return {\n ...basePlot,\n gridLeft: basePlot.gridLeft + rowLabelGutter,\n left: basePlot.gridLeft + rowLabelGutter,\n top: basePlot.top + colLabelGutter,\n };\n }\n\n if (variant === \"gantt\") {\n const rowLabelGutter = 72;\n const trackLeft = basePlot.gridLeft + rowLabelGutter;\n\n if (!showAxis) {\n return {\n ...basePlot,\n gridLeft: trackLeft,\n left: trackLeft,\n };\n }\n\n return {\n ...basePlot,\n barStart: basePlot.barStart + rowLabelGutter,\n bottom: denseXLabels ? 178 : 190,\n gridLeft: trackLeft,\n left: trackLeft,\n top: 20,\n };\n }\n\n if (!showAxis) {\n return basePlot;\n }\n\n const pad = 30;\n\n return {\n ...basePlot,\n barStart: basePlot.barStart + pad,\n bottom: denseXLabels ? 178 : 190,\n gridLeft: basePlot.gridLeft + pad,\n horizontalLabelX: basePlot.horizontalLabelX + pad,\n left: basePlot.left + pad,\n top: 20,\n };\n}\n\nfunction categoryLabelY(plotBottom: number, rotate: boolean, showAxis: boolean) {\n if (!showAxis) {\n return rotate ? 228 : 236;\n }\n\n return plotBottom + (rotate ? 12 : 20);\n}\n\nfunction xAxisTitleY(plotBottom: number, showAxis: boolean, dense: boolean) {\n if (!showAxis) {\n return 248;\n }\n\n return plotBottom + (dense ? 52 : 46);\n}\n\nfunction getDenseChartMinWidth(variant: ChartVariant, count: number) {\n const slotVariants = [\n \"bar-vertical\",\n \"grouped-bar\",\n \"stacked-bar\",\n \"stacked-bar-100\",\n \"histogram\",\n \"candlestick\",\n \"box-plot\",\n \"violin\",\n \"waterfall\",\n ];\n\n if (!slotVariants.includes(variant)) {\n return 376;\n }\n\n const slot = variant === \"bar-vertical\" ? 12 : 18;\n return Math.max(376, 92 + count * slot);\n}\n\nfunction shouldShowCategoryLabel(index: number, count: number) {\n if (count <= 12) {\n return true;\n }\n\n const step = Math.max(1, Math.ceil(count / 12));\n return index % step === 0 || index === count - 1;\n}\n\nfunction verticalBarMetrics(\n plot: PlotArea,\n count: number,\n bounds?: { left: number; right: number },\n) {\n const left = bounds?.left ?? plot.gridLeft;\n const right = bounds?.right ?? plot.gridRight;\n const slotWidth = count > 0 ? (right - left) / count : right - left;\n const barWidth = Math.min(28, Math.max(4, slotWidth * 0.72));\n\n return {\n barWidth,\n xCenter: (index: number) => left + slotWidth * index + slotWidth / 2,\n };\n}\n\nfunction horizontalBarMetrics(plot: PlotArea, count: number) {\n const slotHeight = plotSpan(plot) / Math.max(count, 1);\n const barHeight = Math.min(22, Math.max(10, slotHeight * 0.62));\n const trackWidth = plot.gridRight - plot.gridLeft;\n\n return {\n barHeight,\n barY: (index: number) => plot.top + index * slotHeight + (slotHeight - barHeight) / 2,\n labelY: (index: number) => plot.top + index * slotHeight + slotHeight / 2 + 4,\n trackWidth,\n };\n}\n\nconst paletteClasses = [\"seriesA\", \"seriesB\", \"seriesC\", \"seriesD\", \"seriesE\", \"seriesF\"] as const;\nconst maximisePlotVariants: ChartVariant[] = [\n \"bar-vertical\",\n \"bar-horizontal\",\n \"grouped-bar\",\n \"stacked-bar\",\n \"stacked-bar-100\",\n \"line\",\n \"multi-line\",\n \"area\",\n \"stacked-area\",\n \"spline\",\n \"scatter\",\n \"bubble\",\n ...cartesianSpecializedVariants,\n];\n\nfunction isCartesianVariant(variant: ChartVariant) {\n return cartesianVariants.includes(variant) || cartesianSpecializedVariants.includes(variant);\n}\ntype PlotArea = {\n barStart: number;\n bottom: number;\n gridLeft: number;\n gridRight: number;\n horizontalLabelX: number;\n horizontalMaxWidth: number;\n left: number;\n right: number;\n scatterLeft: number;\n scatterWidth: number;\n top: number;\n};\n\nconst defaultPlot: PlotArea = {\n barStart: 84,\n bottom: 204,\n gridLeft: 46,\n gridRight: 330,\n horizontalLabelX: 70,\n horizontalMaxWidth: 258,\n left: 46,\n right: 330,\n scatterLeft: 46,\n scatterWidth: 284,\n top: 54,\n};\n\nconst widePlot: PlotArea = {\n ...defaultPlot,\n barStart: 84,\n gridLeft: 46,\n gridRight: 330,\n horizontalLabelX: 70,\n horizontalMaxWidth: 258,\n left: 46,\n right: 330,\n scatterLeft: 46,\n scatterWidth: 284,\n};\n\nfunction getWidePlot(viewBoxWidth: number): PlotArea {\n const rightPad = 46;\n const horizontalLabelX = 70;\n const barStart = 84;\n const gridLeft = defaultPlot.gridLeft;\n const gridRight = Math.max(defaultPlot.gridRight, viewBoxWidth - rightPad);\n\n return {\n ...widePlot,\n barStart,\n gridLeft,\n gridRight,\n horizontalLabelX,\n horizontalMaxWidth: Math.max(defaultPlot.horizontalMaxWidth, viewBoxWidth - barStart - rightPad - 18),\n left: gridLeft,\n right: gridRight,\n scatterLeft: gridLeft,\n scatterWidth: gridRight - gridLeft,\n };\n}\n\nfunction yForDomain(value: number, min: number, max: number, plot: PlotArea) {\n const span = Math.max(1, max - min);\n return plot.bottom - ((value - min) / span) * plotSpan(plot);\n}\n\nfunction computeDomainTicks(min: number, max: number, steps = 5) {\n const span = Math.max(1, max - min);\n return Array.from({ length: steps }, (_, index) => Math.round(min + (span * index) / (steps - 1)));\n}\n\nfunction getWaterfallDomain(data: ChartDatum[]) {\n let running = 0;\n let min = 0;\n let max = 0;\n\n for (const item of data) {\n const start = running;\n running += item.value;\n min = Math.min(min, start, running);\n max = Math.max(max, start, running);\n }\n\n const pad = Math.max(0, (max - min) * 0.02);\n return { min: min - pad, max: max + pad };\n}\n\nfunction getChartYDomain(variant: ChartVariant, data: ChartDatum[], series: ChartSeries[], fallbackMax: number) {\n if (variant === \"candlestick\") {\n const lows = data.map((item) => item.low ?? item.value * 0.82);\n const highs = data.map((item) => item.high ?? item.value * 1.08);\n const min = Math.min(...lows);\n const max = Math.max(...highs);\n const pad = Math.max(0, (max - min) * 0.04);\n return { min: min - pad, max: max + pad };\n }\n\n if (variant === \"box-plot\") {\n const lows = data.map((item) => item.min ?? item.value * 0.6);\n const highs = data.map((item) => item.max ?? item.value * 1.35);\n return { min: Math.min(...lows), max: Math.max(...highs) };\n }\n\n if (variant === \"histogram\" || variant === \"violin\") {\n return { min: 0, max: Math.max(1, ...data.map((item) => item.value)) };\n }\n\n if (variant === \"density\") {\n return { min: 0, max: Math.max(1, ...series.flatMap((item) => item.values)) };\n }\n\n if (variant === \"waterfall\") {\n return getWaterfallDomain(data);\n }\n\n if (variant === \"stream\") {\n return { min: 0, max: stackedSeriesMax(series) };\n }\n\n if (variant === \"gantt\") {\n return { min: 0, max: 100 };\n }\n\n return { min: 0, max: fallbackMax };\n}\n\nfunction maxValue(data: ChartDatum[], series: ChartSeries[]) {\n return Math.max(\n 1,\n ...data.map((item) => item.value),\n ...data.flatMap((item) => item.values ?? []),\n ...series.flatMap((item) => item.values),\n );\n}\n\nfunction polarPoint(cx: number, cy: number, radius: number, angle: number) {\n return {\n x: cx + radius * Math.cos(angle),\n y: cy + radius * Math.sin(angle),\n };\n}\n\nfunction arcPath(cx: number, cy: number, radius: number, startAngle: number, endAngle: number) {\n const start = polarPoint(cx, cy, radius, startAngle);\n const end = polarPoint(cx, cy, radius, endAngle);\n const largeArc = endAngle - startAngle > Math.PI ? 1 : 0;\n\n return `M ${cx} ${cy} L ${start.x} ${start.y} A ${radius} ${radius} 0 ${largeArc} 1 ${end.x} ${end.y} Z`;\n}\n\nfunction ringPath(cx: number, cy: number, outerRadius: number, innerRadius: number, startAngle: number, endAngle: number) {\n const outerStart = polarPoint(cx, cy, outerRadius, startAngle);\n const outerEnd = polarPoint(cx, cy, outerRadius, endAngle);\n const innerStart = polarPoint(cx, cy, innerRadius, endAngle);\n const innerEnd = polarPoint(cx, cy, innerRadius, startAngle);\n const largeArc = endAngle - startAngle > Math.PI ? 1 : 0;\n\n return [\n `M ${outerStart.x} ${outerStart.y}`,\n `A ${outerRadius} ${outerRadius} 0 ${largeArc} 1 ${outerEnd.x} ${outerEnd.y}`,\n `L ${innerStart.x} ${innerStart.y}`,\n `A ${innerRadius} ${innerRadius} 0 ${largeArc} 0 ${innerEnd.x} ${innerEnd.y}`,\n \"Z\",\n ].join(\" \");\n}\n\nfunction smoothPath(points: { x: number; y: number }[]) {\n if (points.length < 2) {\n return \"\";\n }\n\n return points.reduce((path, point, index) => {\n if (index === 0) {\n return `M ${point.x} ${point.y}`;\n }\n\n const previous = points[index - 1];\n const controlOffset = (point.x - previous.x) / 2;\n return `${path} C ${previous.x + controlOffset} ${previous.y}, ${point.x - controlOffset} ${point.y}, ${point.x} ${point.y}`;\n }, \"\");\n}\n\nfunction chartClass(index: number) {\n return styles[paletteClasses[index % paletteClasses.length]];\n}\n\nfunction xForIndex(plot: PlotArea, index: number, count: number) {\n if (count <= 1) {\n return (plot.gridLeft + plot.gridRight) / 2;\n }\n\n const slotWidth = (plot.gridRight - plot.gridLeft) / count;\n return plot.gridLeft + slotWidth * index + slotWidth / 2;\n}\n\nfunction xForLineIndex(plot: PlotArea, index: number, count: number) {\n if (count <= 1) {\n return (plot.gridLeft + plot.gridRight) / 2;\n }\n\n return plot.gridLeft + index * ((plot.gridRight - plot.gridLeft) / (count - 1));\n}\n\nfunction Grid({ max, min = 0, plot, show, useDomain = false }: { max?: number; min?: number; plot: PlotArea; show: boolean; useDomain?: boolean }) {\n if (!show) {\n return null;\n }\n\n const yPositions = max\n ? (useDomain ? computeDomainTicks(min, max) : computeYTicks(max)).map((tick) =>\n useDomain ? yForDomain(tick, min, max, plot) : yForValue(tick, max, plot),\n )\n : [0, 1, 2, 3].map((item) => plot.top + item * 44);\n\n return (\n <g className={styles.grid}>\n {yPositions.map((y, index) => (\n <line key={index} x1={plot.gridLeft} x2={plot.gridRight} y1={y} y2={y} />\n ))}\n </g>\n );\n}\n\nfunction RadialGrid({ show }: { show: boolean }) {\n if (!show) {\n return null;\n }\n\n return (\n <g className={styles.grid}>\n {[34, 58, 82].map((radius) => (\n <circle cx=\"188\" cy=\"126\" fill=\"none\" key={radius} r={radius} />\n ))}\n {[0, 1, 2, 3].map((item) => {\n const point = polarPoint(188, 126, 88, -Math.PI / 2 + item * (Math.PI / 2));\n return <line key={item} x1=\"188\" x2={point.x} y1=\"126\" y2={point.y} />;\n })}\n </g>\n );\n}\n\nfunction AxisLabels({\n dense,\n edgeAligned = false,\n labels,\n plot,\n showAxis,\n slotBounds,\n slotCentered = false,\n timeline = false,\n edgeBarHalfWidth,\n}: {\n dense?: boolean;\n edgeAligned?: boolean;\n labels: string[];\n plot: PlotArea;\n showAxis?: boolean;\n slotBounds?: { left: number; right: number };\n slotCentered?: boolean;\n timeline?: boolean;\n edgeBarHalfWidth?: number;\n}) {\n const rotate = labels.length > 18;\n const slotMetrics = slotCentered ? verticalBarMetrics(plot, labels.length, slotBounds) : null;\n\n return (\n <g className={styles.axisLabels}>\n {labels.map((label, index) => {\n if (dense && !shouldShowCategoryLabel(index, labels.length)) {\n return null;\n }\n\n const x = edgeBarHalfWidth !== undefined\n ? xForEdgeBarIndex(plot, index, labels.length, edgeBarHalfWidth)\n : timeline\n ? xForTimelineIndex(plot, index, labels.length)\n : slotMetrics\n ? slotMetrics.xCenter(index)\n : edgeAligned\n ? xForLineIndex(plot, index, labels.length)\n : xForIndex(plot, index, labels.length);\n const y = categoryLabelY(plot.bottom, rotate, Boolean(showAxis));\n\n return (\n <text\n key={`${label}-${index}`}\n textAnchor={rotate ? \"end\" : \"middle\"}\n transform={rotate ? `rotate(-40 ${x} ${y})` : undefined}\n x={x}\n y={y}\n >\n {label}\n </text>\n );\n })}\n </g>\n );\n}\n\nfunction CartesianAxes({\n denseXLabels,\n horizontal,\n max,\n min = 0,\n plot,\n show,\n useDomain = false,\n variant,\n xAxisLabel,\n yAxisLabel,\n}: {\n denseXLabels?: boolean;\n horizontal?: boolean;\n max: number;\n min?: number;\n plot: PlotArea;\n show: boolean;\n useDomain?: boolean;\n variant: ChartVariant;\n xAxisLabel?: string;\n yAxisLabel?: string;\n}) {\n if (!show || !isCartesianVariant(variant)) {\n return null;\n }\n\n const ticks = useDomain ? computeDomainTicks(min, max) : computeYTicks(max);\n const xCenter = (plot.gridLeft + plot.gridRight) / 2;\n const plotWidth = plot.gridRight - plot.gridLeft;\n\n if (variant === \"gantt\") {\n return (\n <g className={styles.axes}>\n <line className={styles.axisLine} x1={plot.gridLeft} x2={plot.gridRight} y1={plot.bottom} y2={plot.bottom} />\n <line className={styles.axisLine} x1={plot.gridLeft} x2={plot.gridLeft} y1={plot.top} y2={plot.bottom} />\n {ticks.map((tick) => {\n const x = plot.gridLeft + (tick / Math.max(1, max)) * plotWidth;\n return (\n <text className={styles.axisTick} key={tick} textAnchor=\"middle\" x={x} y={plot.bottom + 14}>\n {tick}\n </text>\n );\n })}\n {xAxisLabel ? (\n <text className={styles.axisTitle} textAnchor=\"middle\" x={xCenter} y={xAxisTitleY(plot.bottom, true, Boolean(denseXLabels))}>\n {xAxisLabel}\n </text>\n ) : null}\n </g>\n );\n }\n\n const showYNumericAxis = ![\"timeline\", \"milestone-timeline\"].includes(variant) && specializedVariantHasYNumericAxis(variant);\n\n if (horizontal) {\n const plotWidth = plot.gridRight - plot.gridLeft;\n return (\n <g className={styles.axes}>\n <line className={styles.axisLine} x1={plot.gridLeft} x2={plot.gridRight} y1={plot.bottom} y2={plot.bottom} />\n <line className={styles.axisLine} x1={plot.gridLeft} x2={plot.gridLeft} y1={plot.top} y2={plot.bottom} />\n {ticks.map((tick) => {\n const x = plot.gridLeft + (tick / Math.max(1, max)) * plotWidth;\n return (\n <text className={styles.axisTick} key={tick} textAnchor=\"middle\" x={x} y={plot.bottom + 14}>\n {tick}\n </text>\n );\n })}\n {xAxisLabel ? (\n <text className={styles.axisTitle} textAnchor=\"middle\" x={xCenter} y={plot.bottom + 28}>\n {xAxisLabel}\n </text>\n ) : null}\n {yAxisLabel ? (\n <text\n className={styles.axisTitle}\n textAnchor=\"middle\"\n transform={`rotate(-90 16 ${(plot.top + plot.bottom) / 2})`}\n x={16}\n y={(plot.top + plot.bottom) / 2}\n >\n {yAxisLabel}\n </text>\n ) : null}\n </g>\n );\n }\n\n return (\n <g className={styles.axes}>\n <line className={styles.axisLine} x1={plot.gridLeft} x2={plot.gridRight} y1={plot.bottom} y2={plot.bottom} />\n <line className={styles.axisLine} x1={plot.gridLeft} x2={plot.gridLeft} y1={plot.top} y2={plot.bottom} />\n {showYNumericAxis\n ? ticks.map((tick) => {\n const y = useDomain ? yForDomain(tick, min, max, plot) : yForValue(tick, max, plot);\n return (\n <text className={styles.axisTick} key={tick} textAnchor=\"end\" x={plot.gridLeft - 6} y={y + 3}>\n {tick}\n </text>\n );\n })\n : null}\n {xAxisLabel ? (\n <text className={styles.axisTitle} textAnchor=\"middle\" x={xCenter} y={xAxisTitleY(plot.bottom, true, Boolean(denseXLabels))}>\n {xAxisLabel}\n </text>\n ) : null}\n {yAxisLabel ? (\n <text\n className={styles.axisTitle}\n textAnchor=\"middle\"\n transform={`rotate(-90 12 ${(plot.top + plot.bottom) / 2})`}\n x={12}\n y={(plot.top + plot.bottom) / 2}\n >\n {yAxisLabel}\n </text>\n ) : null}\n </g>\n );\n}\n\nfunction Bars({\n data,\n highlightLabel,\n horizontal,\n max,\n plot,\n showAxis = false,\n showValues,\n}: {\n data: ChartDatum[];\n highlightLabel?: string;\n horizontal?: boolean;\n max: number;\n plot: PlotArea;\n showAxis?: boolean;\n showValues: boolean;\n}) {\n if (horizontal) {\n const { barHeight, barY, labelY, trackWidth } = horizontalBarMetrics(plot, data.length);\n\n return (\n <g>\n {data.map((item, index) => {\n const width = (item.value / max) * trackWidth;\n const y = barY(index);\n return (\n <g key={item.label}>\n <text className={styles.axisLabels} textAnchor=\"end\" x={plot.gridLeft - 8} y={labelY(index)}>\n {item.label}\n </text>\n <rect className={`${styles.bar} ${chartClass(index)}`} height={barHeight} rx=\"4\" width={width} x={plot.gridLeft} y={y} />\n {showValues ? (\n <text className={styles.valueLabel} x={plot.gridLeft + width + 6} y={labelY(index)}>\n {item.value}\n </text>\n ) : null}\n </g>\n );\n })}\n </g>\n );\n }\n\n return (\n <g>\n {data.map((item, index) => {\n const height = (item.value / max) * plotSpan(plot);\n const { barWidth, xCenter } = verticalBarMetrics(plot, data.length);\n const x = xCenter(index) - barWidth / 2;\n const y = plot.bottom - height;\n const highlighted = highlightLabel ? item.label === highlightLabel : false;\n\n return (\n <g key={`${item.label}-${index}`}>\n <rect\n className={`${styles.bar} ${chartClass(index)}`}\n data-highlighted={highlighted ? \"true\" : \"false\"}\n height={height}\n rx=\"2\"\n ry=\"2\"\n width={barWidth}\n x={x}\n y={y}\n />\n {showValues ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={xCenter(index)} y={y - 8}>\n {item.value}\n </text>\n ) : null}\n </g>\n );\n })}\n <AxisLabels\n dense={data.length > 18}\n labels={data.map((item) => item.label)}\n plot={plot}\n showAxis={showAxis}\n slotCentered\n />\n </g>\n );\n}\n\nfunction GroupedBars({\n data,\n max,\n plot,\n showAxis = false,\n showValues,\n}: {\n data: ChartDatum[];\n max: number;\n plot: PlotArea;\n showAxis?: boolean;\n showValues: boolean;\n}) {\n const { xCenter } = verticalBarMetrics(plot, data.length);\n\n return (\n <g>\n {data.map((item, index) => {\n const values = item.values ?? [];\n const groupWidth = values.length * 8 + Math.max(values.length - 1, 0) * 3;\n const groupStart = xCenter(index) - groupWidth / 2;\n return values.map((value, valueIndex) => {\n const height = (value / max) * plotSpan(plot);\n const x = groupStart + valueIndex * 11;\n const y = plot.bottom - height;\n return (\n <g key={`${item.label}-${valueIndex}`}>\n <rect className={`${styles.bar} ${chartClass(valueIndex)}`} height={height} rx=\"3\" width=\"8\" x={x} y={y} />\n {showValues && valueIndex === 0 ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={x + 4} y={y - 8}>\n {value}\n </text>\n ) : null}\n </g>\n );\n });\n })}\n <AxisLabels\n dense={data.length > 18}\n labels={data.map((item) => item.label)}\n plot={plot}\n showAxis={showAxis}\n slotCentered\n />\n </g>\n );\n}\n\nfunction stackedBarShape(\n x: number,\n y: number,\n width: number,\n height: number,\n topRadius: number,\n bottomRadius: number,\n) {\n if (topRadius === 0 && bottomRadius === 0) {\n return null;\n }\n\n const rt = Math.min(topRadius, width / 2, height / 2);\n const rb = Math.min(bottomRadius, width / 2, height / 2);\n const x2 = x + width;\n const y2 = y + height;\n\n if (rt > 0 && rb === 0) {\n return `M ${x + rt},${y} H ${x2 - rt} A ${rt},${rt} 0 0 1 ${x2},${y + rt} V ${y2} H ${x} V ${y + rt} A ${rt},${rt} 0 0 1 ${x + rt},${y} Z`;\n }\n\n if (rb > 0 && rt === 0) {\n return `M ${x},${y} H ${x2} V ${y2 - rb} A ${rb},${rb} 0 0 1 ${x2 - rb},${y2} H ${x + rb} A ${rb},${rb} 0 0 1 ${x},${y2 - rb} V ${y} Z`;\n }\n\n const radius = Math.min(rt, rb);\n return `M ${x + radius},${y} H ${x2 - radius} A ${radius},${radius} 0 0 1 ${x2},${y + radius} V ${y2 - radius} A ${radius},${radius} 0 0 1 ${x2 - radius},${y2} H ${x + radius} A ${radius},${radius} 0 0 1 ${x},${y2 - radius} V ${y + radius} A ${radius},${radius} 0 0 1 ${x + radius},${y} Z`;\n}\n\nfunction StackedBars({\n data,\n percent,\n plot,\n showAxis = false,\n showValues,\n}: {\n data: ChartDatum[];\n percent?: boolean;\n plot: PlotArea;\n showAxis?: boolean;\n showValues: boolean;\n}) {\n const max = percent ? 100 : Math.max(1, ...data.map((item) => (item.values ?? []).reduce((total, value) => total + value, 0)));\n\n return (\n <g>\n {data.map((item, index) => {\n const values = item.values ?? [];\n let offset = 0;\n const total = values.reduce((sum, value) => sum + value, 0) || 1;\n return values.map((rawValue, valueIndex) => {\n const value = percent ? (rawValue / total) * 100 : rawValue;\n const height = (value / max) * plotSpan(plot);\n const y = plot.bottom - offset - height;\n const { barWidth, xCenter } = verticalBarMetrics(plot, data.length);\n const x = xCenter(index) - barWidth / 2;\n const width = barWidth;\n offset += height;\n const isTop = valueIndex === values.length - 1;\n const shape = stackedBarShape(x, y, width, height, isTop ? 4 : 0, 0);\n\n return shape ? (\n <path\n className={`${styles.bar} ${chartClass(valueIndex)}`}\n d={shape}\n key={`${item.label}-${valueIndex}`}\n />\n ) : (\n <rect\n className={`${styles.bar} ${chartClass(valueIndex)}`}\n height={height}\n key={`${item.label}-${valueIndex}`}\n width={width}\n x={x}\n y={y}\n />\n );\n }).concat(showValues ? [\n <text className={styles.valueLabel} key={`${item.label}-value`} textAnchor=\"middle\" x={xForIndex(plot, index, data.length)} y=\"42\">\n {percent ? \"100%\" : total}\n </text>,\n ] : []);\n })}\n <AxisLabels\n dense={data.length > 18}\n labels={data.map((item) => item.label)}\n plot={plot}\n showAxis={showAxis}\n />\n </g>\n );\n}\n\nfunction stackedSeriesMax(series: ChartSeries[]) {\n if (!series.length) {\n return 1;\n }\n\n return Math.max(\n 1,\n ...series[0].values.map((_, index) =>\n series.reduce((sum, item) => sum + (item.values[index] ?? 0), 0),\n ),\n );\n}\n\nfunction stackedAreaBandPath(points: { x: number; yBaseline: number; yTop: number }[]) {\n if (!points.length) {\n return \"\";\n }\n\n const topEdge = points.map((point) => `L ${point.x} ${point.yTop}`).join(\" \");\n const baselineEdge = [...points].reverse().map((point) => `L ${point.x} ${point.yBaseline}`).join(\" \");\n\n return `M ${points[0].x} ${points[0].yBaseline} ${topEdge} ${baselineEdge} Z`;\n}\n\nfunction LineChart({\n area,\n labels,\n max,\n multi,\n plot,\n series,\n showAxis = false,\n showValues,\n smooth,\n stacked,\n}: {\n area?: boolean;\n labels: string[];\n max: number;\n multi?: boolean;\n plot: PlotArea;\n series: ChartSeries[];\n showAxis?: boolean;\n showValues: boolean;\n smooth?: boolean;\n stacked?: boolean;\n}) {\n const visibleSeries = multi || stacked ? series : [series[0]];\n const totals = labels.map((_, index) =>\n visibleSeries.reduce((sum, item) => sum + item.values[index], 0),\n );\n const stackedMax = stacked ? Math.max(1, ...totals) : max;\n const valueY = (value: number) => plot.bottom - (value / stackedMax) * plotSpan(plot);\n\n if (stacked && area) {\n return (\n <g>\n {visibleSeries.map((item, seriesIndex) => {\n const points = labels.map((_, index) => {\n const baseline = visibleSeries\n .slice(0, seriesIndex)\n .reduce((sum, seriesItem) => sum + seriesItem.values[index], 0);\n const top = baseline + item.values[index];\n\n return {\n x: xForLineIndex(plot, index, labels.length),\n yBaseline: valueY(baseline),\n yTop: valueY(top),\n };\n });\n\n return (\n <g key={item.id}>\n <path className={`${styles.area} ${chartClass(seriesIndex)}`} d={stackedAreaBandPath(points)} />\n <polyline\n className={`${styles.line} ${chartClass(seriesIndex)}`}\n fill=\"none\"\n points={points.map((point) => `${point.x},${point.yTop}`).join(\" \")}\n />\n </g>\n );\n })}\n <AxisLabels dense={labels.length > 18} edgeAligned labels={labels} plot={plot} showAxis={showAxis} />\n </g>\n );\n }\n\n return (\n <g>\n {visibleSeries.map((item, seriesIndex) => {\n let stackedOffset = 0;\n const points = item.values.map((value, index) => {\n const nextValue = stacked ? value + stackedOffset : value;\n if (stacked) {\n stackedOffset += value;\n }\n return {\n x: xForLineIndex(plot, index, labels.length),\n y: plot.bottom - (nextValue / stackedMax) * plotSpan(plot),\n };\n });\n const path = smooth ? smoothPath(points) : points.map((point) => `${point.x},${point.y}`).join(\" \");\n const areaPath = `M ${points[0].x} ${plot.bottom} L ${points.map((point) => `${point.x} ${point.y}`).join(\" L \")} L ${points[points.length - 1].x} ${plot.bottom} Z`;\n\n return (\n <g key={item.id}>\n {area ? <path className={`${styles.area} ${chartClass(seriesIndex)}`} d={areaPath} /> : null}\n {smooth ? (\n <path className={`${styles.line} ${chartClass(seriesIndex)}`} d={path} />\n ) : (\n <polyline className={`${styles.line} ${chartClass(seriesIndex)}`} points={path} />\n )}\n {points.map((point, pointIndex) => (\n <g key={`${item.id}-${point.x}`}>\n <circle className={`${styles.point} ${chartClass(seriesIndex)}`} cx={point.x} cy={point.y} r=\"4\" />\n {showValues && (!multi || seriesIndex === 0) ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={point.x} y={point.y - 10}>\n {item.values[pointIndex]}\n </text>\n ) : null}\n </g>\n ))}\n </g>\n );\n })}\n <AxisLabels dense={labels.length > 18} edgeAligned labels={labels} plot={plot} showAxis={showAxis} />\n </g>\n );\n}\n\nfunction PieLike({\n data,\n donut,\n polar,\n showGrid,\n showValues,\n}: {\n data: ChartDatum[];\n donut?: boolean;\n polar?: boolean;\n showGrid: boolean;\n showValues: boolean;\n}) {\n const total = data.reduce((sum, item) => sum + item.value, 0) || 1;\n const slices = data.map((item, index) => {\n const previousTotal = data.slice(0, index).reduce((sum, previous) => sum + previous.value, 0);\n const startAngle = -Math.PI / 2 + (previousTotal / total) * Math.PI * 2;\n const endAngle = startAngle + (item.value / total) * Math.PI * 2;\n return { endAngle, item, startAngle };\n });\n\n return (\n <g>\n <RadialGrid show={showGrid} />\n {slices.map(({ endAngle, item, startAngle }, index) => {\n const portion = item.value / total;\n const radius = polar ? 42 + portion * 84 : 76;\n const path = donut\n ? ringPath(188, 126, radius, 38, startAngle, endAngle)\n : arcPath(188, 126, radius, startAngle, endAngle);\n const labelPoint = polarPoint(188, 126, donut ? 56 : radius * 0.66, startAngle + (endAngle - startAngle) / 2);\n return (\n <g key={item.label}>\n <path className={`${styles.slice} ${chartClass(index)}`} d={path} />\n {showValues ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={labelPoint.x} y={labelPoint.y + 3}>\n {Math.round(portion * 100)}%\n </text>\n ) : null}\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction Scatter({ bubble, data, plot, showValues }: { bubble?: boolean; data: ChartDatum[]; plot: PlotArea; showValues: boolean }) {\n const plotWidth = plot.gridRight - plot.gridLeft;\n\n return (\n <g>\n {data.map((item, index) => {\n const x = plot.gridLeft + ((item.x ?? item.value) / 100) * plotWidth;\n const y = plot.bottom - ((item.y ?? item.value) / 100) * plotSpan(plot);\n return (\n <g key={item.label}>\n <circle\n className={`${styles.point} ${chartClass(index)}`}\n cx={x}\n cy={y}\n r={bubble ? 7 + item.value / 12 : 5}\n />\n {showValues ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={x} y={y - (bubble ? 16 : 10)}>\n {item.value}\n </text>\n ) : null}\n </g>\n );\n })}\n <AxisLabels labels={[\"0\", \"20\", \"40\", \"60\", \"80\", \"100\"]} plot={plot} />\n </g>\n );\n}\n\nfunction Radar({ data, showGrid, showValues }: { data: ChartDatum[]; showGrid: boolean; showValues: boolean }) {\n const cx = 188;\n const cy = 128;\n const max = maxValue(data, []);\n const points = data.map((item, index) => {\n const angle = -Math.PI / 2 + (index / data.length) * Math.PI * 2;\n return polarPoint(cx, cy, (item.value / max) * 82, angle);\n });\n const rings = [0.33, 0.66, 1];\n\n return (\n <g>\n {showGrid ? (\n rings.map((ring) => (\n <polygon\n className={styles.radarGrid}\n key={ring}\n points={data.map((_, index) => {\n const angle = -Math.PI / 2 + (index / data.length) * Math.PI * 2;\n const point = polarPoint(cx, cy, ring * 82, angle);\n return `${point.x},${point.y}`;\n }).join(\" \")}\n />\n ))\n ) : null}\n <polygon className={styles.radarArea} points={points.map((point) => `${point.x},${point.y}`).join(\" \")} />\n {points.map((point, index) => (\n <g key={data[index].label}>\n <circle className={`${styles.point} ${chartClass(index)}`} cx={point.x} cy={point.y} r=\"4\" />\n {showValues ? (\n <text className={styles.valueLabel} textAnchor=\"middle\" x={point.x} y={point.y - 10}>\n {data[index].value}\n </text>\n ) : null}\n </g>\n ))}\n </g>\n );\n}\n\nfunction FunnelLike({\n data,\n pyramid,\n showGrid,\n showValues,\n}: {\n data: ChartDatum[];\n pyramid?: boolean;\n showGrid: boolean;\n showValues: boolean;\n}) {\n const sorted = pyramid ? [...data].sort((a, b) => a.value - b.value) : data;\n const max = maxValue(sorted, []);\n\n return (\n <g>\n {sorted.slice(0, 5).map((item, index) => {\n const width = 250 * (item.value / max);\n const next = sorted[index + 1];\n const nextWidth = next ? 250 * (next.value / max) : width * 0.68;\n const y = 46 + index * 34;\n const x1 = 188 - width / 2;\n const x2 = 188 + width / 2;\n const x3 = 188 + nextWidth / 2;\n const x4 = 188 - nextWidth / 2;\n return (\n <g key={item.label}>\n {showGrid ? <line className={styles.funnelGuide} x1=\"54\" x2=\"322\" y1={y} y2={y} /> : null}\n <polygon className={`${styles.funnel} ${chartClass(index)}`} points={`${x1},${y} ${x2},${y} ${x3},${y + 30} ${x4},${y + 30}`} />\n <text className={styles.funnelText} textAnchor=\"middle\" x=\"188\" y={y + 20}>\n {showValues ? `${item.label} ${item.value}` : item.label}\n </text>\n </g>\n );\n })}\n </g>\n );\n}\n\nfunction getLegendItems({\n data,\n series,\n variant,\n}: {\n data: ChartDatum[];\n series: ChartSeries[];\n variant: ChartVariant;\n}) {\n if (variant === \"grouped-bar\" || variant === \"stacked-bar\" || variant === \"stacked-bar-100\" || variant === \"multi-line\" || variant === \"stacked-area\") {\n return series.map((item) => ({ id: item.id, label: item.label }));\n }\n\n if (variant === \"line\" || variant === \"area\" || variant === \"spline\") {\n return series.slice(0, 1).map((item) => ({ id: item.id, label: item.label }));\n }\n\n if (variant === \"funnel\" || variant === \"pyramid\") {\n return data.slice(0, 5).map((item) => ({ id: item.label, label: item.label }));\n }\n\n if (variant === \"candlestick\") {\n return [\n { id: \"close\", label: \"Close\" },\n { id: \"bullish\", label: \"Up\" },\n { id: \"bearish\", label: \"Down\" },\n ];\n }\n\n if (variant === \"waterfall\") {\n return [\n { id: \"positive\", label: \"Increase\" },\n { id: \"negative\", label: \"Decrease\" },\n ];\n }\n\n if (variant === \"stream\" || variant === \"ridgeline\" || variant === \"density\") {\n return series.map((item) => ({ id: item.id, label: item.label }));\n }\n\n if (variant === \"heatmap\" || variant === \"calendar-heatmap\") {\n return [{ id: \"activity\", label: \"Activity\" }];\n }\n\n if (variant === \"choropleth\" || variant === \"geo-map\" || variant === \"bubble-map\") {\n return data.map((item) => ({ id: item.label, label: item.label }));\n }\n\n return data.map((item) => ({ id: item.label, label: item.label }));\n}\n\nexport function Chart({\n data = chartDemoData,\n height = 280,\n highlightLabel,\n maximise = false,\n palette = \"opus\",\n series = chartDemoSeries,\n showAxis = false,\n showGrid = false,\n showLegend = true,\n showValues = false,\n title,\n variant,\n xAxisLabel,\n yAxisLabel,\n}: ChartProps) {\n const svgRef = useRef<SVGSVGElement>(null);\n const plotClipId = useId();\n const [svgWidth, setSvgWidth] = useState(0);\n const max = maxValue(data, series);\n const canMaximisePlot = maximisePlotVariants.includes(variant);\n const viewBoxHeight = 252;\n const effectiveHeight = Math.max(height, 220);\n const heightScale = effectiveHeight / viewBoxHeight;\n const minViewBoxWidth = getDenseChartMinWidth(variant, data.length);\n const wideViewBoxWidth =\n maximise && canMaximisePlot\n ? Math.max(minViewBoxWidth, svgWidth > 0 ? svgWidth / heightScale : minViewBoxWidth)\n : 376;\n const basePlot = maximise && canMaximisePlot ? getWidePlot(wideViewBoxWidth) : defaultPlot;\n const denseXLabels = data.length > 18;\n const activePlot = resolvePlot(basePlot, { denseXLabels, showAxis, variant });\n const viewBox = `0 0 ${wideViewBoxWidth} ${viewBoxHeight}`;\n const isTimelineVariant = variant === \"timeline\" || variant === \"milestone-timeline\";\n const timelineClipPad = {\n top: 18,\n left: timelineEndpointInset,\n right: timelineEndpointInset,\n };\n const style = { \"--chart-height\": `${height}px` } as CSSProperties;\n const legendItems = getLegendItems({ data, series, variant });\n const isCartesian = isCartesianVariant(variant);\n const yDomain = isSpecializedChartVariant(variant)\n ? getChartYDomain(variant, data, series, max)\n : { min: 0, max };\n const useDomainAxis = isSpecializedChartVariant(variant) && specializedVariantHasYNumericAxis(variant);\n const axisMax =\n variant === \"stacked-bar\" || variant === \"stacked-bar-100\"\n ? Math.max(\n 1,\n ...(variant === \"stacked-bar-100\"\n ? [100]\n : data.map((item) => (item.values ?? []).reduce((total, value) => total + value, 0))),\n )\n : variant === \"stacked-area\"\n ? stackedSeriesMax(series)\n : useDomainAxis\n ? yDomain.max\n : max;\n const axisMin = useDomainAxis ? yDomain.min : 0;\n\n useEffect(() => {\n const svg = svgRef.current;\n\n if (!svg) {\n return;\n }\n\n const updateWidth = () => {\n setSvgWidth(svg.getBoundingClientRect().width);\n };\n\n updateWidth();\n\n const resizeObserver = new ResizeObserver(updateWidth);\n resizeObserver.observe(svg);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <figure\n className={styles.chart}\n data-maximise={maximise}\n data-maximise-plot={canMaximisePlot}\n data-palette={palette}\n data-show-axis={showAxis}\n data-variant={variant}\n style={style}\n >\n {title ? (\n <figcaption className={styles.header}>\n <span className={styles.title}>{title}</span>\n </figcaption>\n ) : null}\n <svg ref={svgRef} aria-label={title ?? `${variant} chart`} className={styles.svg} role=\"img\" viewBox={viewBox}>\n {isCartesian ? <Grid max={axisMax} min={axisMin} plot={activePlot} show={showGrid} useDomain={useDomainAxis} /> : null}\n {isCartesian ? (\n <CartesianAxes\n denseXLabels={denseXLabels}\n horizontal={variant === \"bar-horizontal\"}\n max={axisMax}\n min={axisMin}\n plot={activePlot}\n show={showAxis}\n useDomain={useDomainAxis}\n variant={variant}\n xAxisLabel={xAxisLabel}\n yAxisLabel={yAxisLabel}\n />\n ) : null}\n {variant === \"bar-vertical\" ? (\n <Bars\n data={data}\n highlightLabel={highlightLabel}\n max={max}\n plot={activePlot}\n showAxis={showAxis}\n showValues={showValues}\n />\n ) : null}\n {variant === \"bar-horizontal\" ? (\n <Bars data={data} horizontal max={max} plot={activePlot} showAxis={showAxis} showValues={showValues} />\n ) : null}\n {variant === \"grouped-bar\" ? (\n <GroupedBars data={data} max={max} plot={activePlot} showAxis={showAxis} showValues={showValues} />\n ) : null}\n {variant === \"stacked-bar\" ? (\n <StackedBars data={data} plot={activePlot} showAxis={showAxis} showValues={showValues} />\n ) : null}\n {variant === \"stacked-bar-100\" ? (\n <StackedBars data={data} percent plot={activePlot} showAxis={showAxis} showValues={showValues} />\n ) : null}\n {variant === \"line\" ? (\n <LineChart\n labels={data.map((item) => item.label)}\n max={max}\n plot={activePlot}\n series={series}\n showAxis={showAxis}\n showValues={showValues}\n />\n ) : null}\n {variant === \"multi-line\" ? (\n <LineChart\n labels={data.map((item) => item.label)}\n max={max}\n multi\n plot={activePlot}\n series={series}\n showAxis={showAxis}\n showValues={showValues}\n />\n ) : null}\n {variant === \"area\" ? (\n <LineChart\n area\n labels={data.map((item) => item.label)}\n max={max}\n plot={activePlot}\n series={series}\n showAxis={showAxis}\n showValues={showValues}\n />\n ) : null}\n {variant === \"stacked-area\" ? (\n <LineChart\n area\n labels={data.map((item) => item.label)}\n max={stackedSeriesMax(series)}\n plot={activePlot}\n series={series}\n showAxis={showAxis}\n showValues={showValues}\n stacked\n />\n ) : null}\n {variant === \"spline\" ? (\n <LineChart\n labels={data.map((item) => item.label)}\n max={max}\n plot={activePlot}\n series={series}\n showAxis={showAxis}\n showValues={showValues}\n smooth\n />\n ) : null}\n {variant === \"pie\" ? <PieLike data={data} showGrid={showGrid} showValues={showValues} /> : null}\n {variant === \"donut\" ? <PieLike data={data} donut showGrid={showGrid} showValues={showValues} /> : null}\n {variant === \"polar-area\" ? <PieLike data={data} polar showGrid={showGrid} showValues={showValues} /> : null}\n {variant === \"scatter\" ? <Scatter data={data} plot={activePlot} showValues={showValues} /> : null}\n {variant === \"bubble\" ? <Scatter bubble data={data} plot={activePlot} showValues={showValues} /> : null}\n {variant === \"radar\" ? <Radar data={data} showGrid={showGrid} showValues={showValues} /> : null}\n {variant === \"funnel\" ? <FunnelLike data={data} showGrid={showGrid} showValues={showValues} /> : null}\n {variant === \"pyramid\" ? <FunnelLike data={data} pyramid showGrid={showGrid} showValues={showValues} /> : null}\n {variant === \"gantt\" ? (\n <GanttRowLabels data={data} plot={activePlot} styles={styles} />\n ) : null}\n {variant === \"heatmap\" && showAxis ? <HeatmapAxisLabels plot={activePlot} styles={styles} /> : null}\n {variant === \"calendar-heatmap\" && showAxis ? (\n <CalendarHeatmapAxisLabels plot={activePlot} styles={styles} />\n ) : null}\n {isSpecializedChartVariant(variant) ? (\n <>\n <defs>\n <clipPath id={plotClipId}>\n <rect\n height={\n activePlot.bottom -\n activePlot.top +\n (isTimelineVariant ? timelineClipPad.top : 0)\n }\n width={\n activePlot.gridRight -\n activePlot.gridLeft +\n (isTimelineVariant ? timelineClipPad.left + timelineClipPad.right : 0)\n }\n x={activePlot.gridLeft - (isTimelineVariant ? timelineClipPad.left : 0)}\n y={activePlot.top - (isTimelineVariant ? timelineClipPad.top : 0)}\n />\n </clipPath>\n </defs>\n <g clipPath={`url(#${plotClipId})`}>\n <SpecializedChart\n data={data}\n plot={activePlot}\n series={series}\n showValues={showValues}\n styles={styles}\n variant={variant}\n yMax={yDomain.max}\n yMin={yDomain.min}\n />\n </g>\n </>\n ) : null}\n {isSpecializedChartVariant(variant) && showAxis && specializedVariantHasXCategoryLabels(variant) ? (\n <AxisLabels\n dense={data.length > 18}\n edgeAligned={!specializedVariantUsesSlotLabels(variant)}\n labels={data.map((item) => item.label)}\n plot={activePlot}\n showAxis={showAxis}\n slotBounds={specializedVariantUsesSlotLabels(variant) ? { left: activePlot.gridLeft, right: activePlot.gridRight } : undefined}\n slotCentered={specializedVariantUsesSlotLabels(variant)}\n timeline={variant === \"timeline\" || variant === \"milestone-timeline\"}\n edgeBarHalfWidth={\n variant === \"candlestick\"\n ? getCandlestickBarHalfWidth(activePlot, data.length)\n : variant === \"histogram\"\n ? getHistogramBarHalfWidth(activePlot, data.length)\n : variant === \"box-plot\"\n ? getBoxPlotBarHalfWidth(activePlot, data.length)\n : variant === \"violin\"\n ? getViolinBarHalfWidth(activePlot, data.length)\n : undefined\n }\n />\n ) : null}\n </svg>\n {showLegend ? (\n <div className={styles.legend} aria-label=\"Chart legend\">\n {legendItems.map((item, index) => {\n const swatchIndex =\n variant === \"candlestick\"\n ? index === 0\n ? 0\n : index === 1\n ? 1\n : 3\n : variant === \"waterfall\"\n ? index === 0\n ? 0\n : 3\n : index;\n return (\n <span className={styles.legendItem} key={item.id}>\n <span className={`${styles.legendSwatch} ${chartClass(swatchIndex)}`} />\n {item.label}\n </span>\n );\n })}\n </div>\n ) : null}\n </figure>\n );\n}\n",".skeleton {\n --skeleton-base: color-mix(in srgb, var(--opus-input-bg) 78%, var(--opus-accent) 22%);\n --skeleton-highlight: color-mix(in srgb, var(--opus-text) 12%, var(--opus-input-bg) 88%);\n --skeleton-sheen: linear-gradient(\n 90deg,\n transparent 0%,\n color-mix(in srgb, var(--skeleton-highlight) 74%, transparent) 48%,\n transparent 100%\n );\n\n display: flex;\n width: 100%;\n color: transparent;\n}\n\n.skeleton[data-variant=\"text\"] {\n flex-direction: column;\n gap: 10px;\n}\n\n.skeleton[data-variant=\"card\"] {\n flex-direction: column;\n gap: 14px;\n padding: 16px;\n border: 1px solid color-mix(in srgb, var(--opus-border) 76%, transparent);\n background: color-mix(in srgb, var(--opus-panel) 92%, transparent);\n}\n\n.skeleton[data-variant=\"avatar\"] {\n align-items: center;\n gap: 14px;\n}\n\n.skeleton[data-variant=\"table\"] {\n flex-direction: column;\n gap: 1px;\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--opus-border) 76%, transparent);\n background: color-mix(in srgb, var(--opus-border) 42%, transparent);\n}\n\n.line,\n.avatar,\n.media,\n.tableCell {\n position: relative;\n overflow: hidden;\n background: var(--skeleton-base);\n}\n\n.line::after,\n.avatar::after,\n.media::after,\n.tableCell::after {\n position: absolute;\n inset: 0;\n background: var(--skeleton-sheen);\n content: \"\";\n transform: translateX(-120%);\n}\n\n.skeleton[data-animation=\"shimmer\"] .line::after,\n.skeleton[data-animation=\"shimmer\"] .avatar::after,\n.skeleton[data-animation=\"shimmer\"] .media::after,\n.skeleton[data-animation=\"shimmer\"] .tableCell::after {\n animation: skeletonShimmer 1.35s ease-in-out infinite;\n}\n\n.skeleton[data-animation=\"pulse\"] .line,\n.skeleton[data-animation=\"pulse\"] .avatar,\n.skeleton[data-animation=\"pulse\"] .media,\n.skeleton[data-animation=\"pulse\"] .tableCell {\n animation: skeletonPulse 1.2s ease-in-out infinite;\n}\n\n.skeleton[data-animation=\"none\"] .line::after,\n.skeleton[data-animation=\"none\"] .avatar::after,\n.skeleton[data-animation=\"none\"] .media::after,\n.skeleton[data-animation=\"none\"] .tableCell::after,\n.skeleton[data-animation=\"pulse\"] .line::after,\n.skeleton[data-animation=\"pulse\"] .avatar::after,\n.skeleton[data-animation=\"pulse\"] .media::after,\n.skeleton[data-animation=\"pulse\"] .tableCell::after {\n display: none;\n}\n\n.line {\n display: block;\n width: 100%;\n height: 14px;\n}\n\n.line[data-line=\"1\"] {\n width: 86%;\n}\n\n.line[data-line=\"2\"] {\n width: 72%;\n}\n\n.line[data-line=\"3\"] {\n width: 92%;\n}\n\n.line[data-line=\"4\"] {\n width: 64%;\n}\n\n.line[data-line=\"5\"] {\n width: 78%;\n}\n\n.line[data-line=\"6\"] {\n width: 54%;\n}\n\n.line[data-line=\"7\"] {\n width: 68%;\n}\n\n.avatar {\n width: 52px;\n height: 52px;\n flex: 0 0 auto;\n border-radius: 999px;\n}\n\n.avatarContent,\n.stack {\n display: flex;\n min-width: 0;\n flex: 1;\n flex-direction: column;\n gap: 10px;\n}\n\n.media {\n display: block;\n width: 100%;\n height: 120px;\n}\n\n.tableRow {\n display: grid;\n min-height: 40px;\n grid-template-columns: 1.2fr repeat(3, 1fr);\n gap: 1px;\n}\n\n.tableCell {\n display: block;\n min-width: 0;\n}\n\n@keyframes skeletonShimmer {\n to {\n transform: translateX(120%);\n }\n}\n\n@keyframes skeletonPulse {\n 50% {\n opacity: 0.52;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .skeleton[data-animation=\"shimmer\"] .line::after,\n .skeleton[data-animation=\"shimmer\"] .avatar::after,\n .skeleton[data-animation=\"shimmer\"] .media::after,\n .skeleton[data-animation=\"shimmer\"] .tableCell::after,\n .skeleton[data-animation=\"pulse\"] .line,\n .skeleton[data-animation=\"pulse\"] .avatar,\n .skeleton[data-animation=\"pulse\"] .media,\n .skeleton[data-animation=\"pulse\"] .tableCell {\n animation: none;\n }\n}\n","import type { SkeletonAnimation, SkeletonVariant } from \"@/components/fields/types\";\nimport styles from \"./Skeleton.module.css\";\n\ntype SkeletonProps = {\n animation?: SkeletonAnimation;\n lines?: number;\n variant?: SkeletonVariant;\n};\n\nconst clampLines = (lines: number) => Math.min(Math.max(Math.round(lines), 1), 8);\n\nfunction SkeletonLine({ index }: { index: number }) {\n return (\n <span\n aria-hidden=\"true\"\n className={styles.line}\n data-line={index}\n />\n );\n}\n\nexport function Skeleton({\n animation = \"shimmer\",\n lines = 3,\n variant = \"text\",\n}: SkeletonProps) {\n const safeLines = clampLines(lines);\n const lineItems = Array.from({ length: safeLines }, (_, index) => index);\n\n if (variant === \"avatar\") {\n return (\n <div aria-busy=\"true\" aria-label=\"Loading content\" className={styles.skeleton} data-animation={animation} data-variant={variant} role=\"status\">\n <span aria-hidden=\"true\" className={styles.avatar} />\n <span className={styles.avatarContent}>\n {lineItems.map((index) => (\n <SkeletonLine index={index} key={index} />\n ))}\n </span>\n </div>\n );\n }\n\n if (variant === \"card\") {\n return (\n <div aria-busy=\"true\" aria-label=\"Loading content\" className={styles.skeleton} data-animation={animation} data-variant={variant} role=\"status\">\n <span aria-hidden=\"true\" className={styles.media} />\n <span className={styles.stack}>\n {lineItems.map((index) => (\n <SkeletonLine index={index} key={index} />\n ))}\n </span>\n </div>\n );\n }\n\n if (variant === \"table\") {\n return (\n <div aria-busy=\"true\" aria-label=\"Loading table\" className={styles.skeleton} data-animation={animation} data-variant={variant} role=\"status\">\n {Array.from({ length: 4 }, (_, rowIndex) => (\n <span className={styles.tableRow} key={rowIndex}>\n {Array.from({ length: 4 }, (_, cellIndex) => (\n <span aria-hidden=\"true\" className={styles.tableCell} key={cellIndex} />\n ))}\n </span>\n ))}\n </div>\n );\n }\n\n return (\n <div aria-busy=\"true\" aria-label=\"Loading content\" className={styles.skeleton} data-animation={animation} data-variant={variant} role=\"status\">\n {lineItems.map((index) => (\n <SkeletonLine index={index} key={index} />\n ))}\n </div>\n );\n}\n",".lightbox {\n display: inline-grid;\n gap: 12px;\n}\n\n.lightbox[data-trigger-variant=\"image\"] {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.trigger {\n justify-self: start;\n min-height: var(--opus-input-height);\n border: 1px solid color-mix(in srgb, var(--opus-accent) 64%, white 18%);\n background: linear-gradient(135deg, var(--opus-accent), color-mix(in srgb, var(--opus-accent) 68%, #39a3ff 32%));\n color: white;\n cursor: pointer;\n font: inherit;\n font-size: var(--opus-control-font-size);\n font-weight: 900;\n padding: 0 18px;\n box-shadow: var(--opus-shadow);\n}\n\n.trigger[data-variant=\"image\"] {\n display: block;\n width: 100%;\n height: 100%;\n min-height: 0;\n border: 0;\n background: transparent;\n padding: 0;\n box-shadow: none;\n}\n\n.overlay {\n position: fixed;\n z-index: 90;\n inset: 0;\n display: grid;\n place-items: center;\n padding: 0;\n background:\n radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--opus-accent) 24%, transparent), transparent 42%),\n color-mix(in srgb, #021231 78%, transparent);\n backdrop-filter: blur(3px);\n animation: lightboxFadeIn 160ms ease both;\n}\n\n.overlay[data-state=\"closing\"] {\n animation: lightboxFadeOut 180ms ease both;\n}\n\n.frame {\n position: relative;\n display: grid;\n width: min(90vw, 100%);\n height: min(90vh, 100%);\n max-width: min(90vw, 100%);\n max-height: min(90vh, 100%);\n animation: lightboxPanelIn 180ms ease both;\n}\n\n.overlay[data-state=\"closing\"] .frame {\n animation: lightboxPanelOut 180ms ease both;\n}\n\n.panel {\n display: grid;\n height: min(90vh, 100%);\n max-height: min(90vh, 100%);\n margin: 0;\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--opus-border) 82%, transparent);\n background: color-mix(in srgb, var(--opus-page-bg) 90%, black 10%);\n box-shadow: 0 28px 90px color-mix(in srgb, black 54%, transparent);\n}\n\n.image {\n display: block;\n width: 100%;\n height: min(calc(90vh - 48px), calc(100% - 48px));\n object-fit: contain;\n background: black;\n}\n\n.close {\n position: absolute;\n z-index: 3;\n top: 12px;\n right: 12px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n padding: 0;\n border: 1px solid var(--opus-border-strong);\n border-radius: 999px;\n background: var(--opus-panel);\n color: var(--opus-text);\n cursor: pointer;\n line-height: 0;\n transition:\n background 160ms ease,\n border-color 160ms ease,\n transform 160ms ease;\n}\n\n.closeIcon {\n width: 16px;\n height: 16px;\n}\n\n.close:hover {\n border-color: var(--opus-accent);\n background: var(--opus-accent);\n color: #fff;\n transform: scale(1.04);\n}\n\n.caption {\n margin: 0;\n padding: 12px 14px;\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n font-weight: 900;\n text-align: center;\n}\n\n@keyframes lightboxFadeIn {\n from {\n opacity: 0;\n }\n}\n\n@keyframes lightboxFadeOut {\n to {\n opacity: 0;\n }\n}\n\n@keyframes lightboxPanelIn {\n from {\n opacity: 0;\n transform: translateY(12px) scale(0.98);\n }\n}\n\n@keyframes lightboxPanelOut {\n to {\n opacity: 0;\n transform: translateY(10px) scale(0.98);\n }\n}\n\n@media (max-width: 720px) {\n .overlay {\n padding: 0;\n }\n}\n","\"use client\";\n\n/* eslint-disable @next/next/no-img-element */\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { faXmark } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport type { GalleryImage } from \"@/components/fields/types\";\nimport \"@/lib/fontawesome\";\nimport { useOverlayAccessibility } from \"@/lib/a11y/useOverlayAccessibility\";\nimport styles from \"./Lightbox.module.css\";\n\ntype LightboxProps = {\n dismissOnBackdrop?: boolean;\n dismissOnEscape?: boolean;\n image: GalleryImage;\n open?: boolean;\n showCaption?: boolean;\n trigger?: ReactNode;\n triggerLabel?: string;\n triggerVariant?: \"button\" | \"image\";\n onOpenChange?: (open: boolean) => void;\n};\n\nexport function Lightbox({\n dismissOnBackdrop = true,\n dismissOnEscape = true,\n image,\n open,\n showCaption = true,\n trigger,\n triggerLabel = \"Open lightbox\",\n triggerVariant = \"button\",\n onOpenChange,\n}: LightboxProps) {\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = open !== undefined;\n const isOpen = isControlled ? open : internalOpen;\n const [isRendered, setIsRendered] = useState(isOpen);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const closeRef = useRef<HTMLButtonElement>(null);\n\n const setOpen = useCallback((nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n\n onOpenChange?.(nextOpen);\n }, [isControlled, onOpenChange]);\n\n useOverlayAccessibility(isOpen && isRendered, panelRef, {\n initialFocusRef: closeRef,\n restoreFocus: true,\n });\n\n useEffect(() => {\n if (!isOpen || !dismissOnEscape) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [dismissOnEscape, isOpen, setOpen]);\n\n useEffect(() => {\n if (isOpen) {\n const timeout = window.setTimeout(() => setIsRendered(true), 0);\n\n return () => window.clearTimeout(timeout);\n }\n\n if (!isRendered) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n setIsRendered(false);\n }, 180);\n\n return () => window.clearTimeout(timeout);\n }, [isOpen, isRendered]);\n\n const dialogLabel = image.caption ?? image.alt ?? triggerLabel;\n\n return (\n <div className={styles.lightbox} data-trigger-variant={triggerVariant}>\n <button\n ref={triggerRef}\n aria-label={trigger ? triggerLabel : undefined}\n className={styles.trigger}\n data-variant={triggerVariant}\n type=\"button\"\n onClick={() => setOpen(true)}\n >\n {trigger ?? <span>{triggerLabel}</span>}\n </button>\n\n {isOpen || isRendered ? (\n <div\n className={styles.overlay}\n data-state={isOpen ? \"open\" : \"closing\"}\n onMouseDown={(event) => {\n if (dismissOnBackdrop && event.target === event.currentTarget) {\n setOpen(false);\n }\n }}\n >\n <div\n ref={panelRef}\n aria-label={dialogLabel}\n aria-modal=\"true\"\n className={styles.frame}\n role=\"dialog\"\n >\n <button\n ref={closeRef}\n aria-label=\"Close lightbox\"\n className={styles.close}\n type=\"button\"\n onClick={() => setOpen(false)}\n >\n <FontAwesomeIcon aria-hidden=\"true\" className={styles.closeIcon} icon={faXmark} />\n </button>\n <figure className={styles.panel}>\n <img alt={image.alt} className={styles.image} src={image.src} />\n {showCaption && image.caption ? (\n <figcaption className={styles.caption}>{image.caption}</figcaption>\n ) : null}\n </figure>\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n",".carousel {\n width: 100%;\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--opus-border) 76%, transparent);\n background:\n linear-gradient(135deg, color-mix(in srgb, var(--opus-accent) 14%, transparent), transparent 42%),\n color-mix(in srgb, var(--opus-panel) 94%, transparent);\n box-shadow: var(--opus-shadow);\n}\n\n.stage {\n position: relative;\n overflow: hidden;\n aspect-ratio: 16 / 9;\n background: color-mix(in srgb, var(--opus-input-bg) 84%, black 16%);\n}\n\n.track {\n display: flex;\n width: 100%;\n height: 100%;\n}\n\n.track[data-transition=\"true\"] {\n transition: transform 320ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.slide {\n position: relative;\n flex: 0 0 100%;\n width: 100%;\n min-width: 100%;\n height: 100%;\n}\n\n.image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: transform 180ms ease;\n}\n\n.stage:hover .slide:hover .image {\n transform: scale(1.015);\n}\n\n.nav {\n position: absolute;\n z-index: 2;\n top: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 42px;\n height: 42px;\n padding: 0;\n border: 1px solid var(--opus-border-strong);\n border-radius: 999px;\n background: var(--opus-panel);\n color: var(--opus-text);\n cursor: pointer;\n line-height: 0;\n transform: translateY(-50%);\n transition:\n background 160ms ease,\n border-color 160ms ease,\n opacity 160ms ease,\n transform 160ms ease;\n}\n\n.navIcon {\n width: 16px;\n height: 16px;\n}\n\n.nav:hover:not(:disabled) {\n border-color: var(--opus-accent);\n background: var(--opus-accent);\n color: #fff;\n transform: translateY(-50%) scale(1.04);\n}\n\n.nav:disabled {\n cursor: not-allowed;\n opacity: 0.34;\n}\n\n.nav[data-direction=\"previous\"] {\n left: 14px;\n}\n\n.nav[data-direction=\"next\"] {\n right: 14px;\n}\n\n.footer {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 14px;\n}\n\n.caption {\n margin: 0;\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n font-weight: 800;\n}\n\n.pips {\n position: absolute;\n z-index: 2;\n right: 50%;\n bottom: 16px;\n display: flex;\n gap: 10px;\n transform: translateX(50%);\n}\n\n.pip {\n width: 12px;\n height: 12px;\n border: 2px solid color-mix(in srgb, white 72%, transparent);\n border-radius: 999px;\n background: color-mix(in srgb, var(--opus-page-bg) 54%, transparent);\n cursor: pointer;\n transition:\n background 160ms ease,\n border-color 160ms ease,\n transform 160ms ease,\n box-shadow 160ms ease;\n}\n\n.pip[data-active=\"true\"] {\n border-color: color-mix(in srgb, var(--opus-accent) 72%, white 28%);\n background: var(--opus-accent);\n box-shadow: 0 0 0 5px color-mix(in srgb, var(--opus-accent) 26%, transparent);\n}\n\n.pip:hover {\n transform: translateY(-1px);\n}\n\n.empty {\n width: 100%;\n padding: 24px;\n border: 1px solid color-mix(in srgb, var(--opus-border) 76%, transparent);\n background: color-mix(in srgb, var(--opus-panel) 94%, transparent);\n color: var(--opus-muted);\n font-weight: 800;\n}\n\n@media (max-width: 720px) {\n .footer {\n align-items: flex-start;\n flex-direction: column;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .track[data-transition=\"true\"] {\n transition: none;\n }\n\n .image {\n transition: none;\n }\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n}\n","\"use client\";\n\n/* eslint-disable @next/next/no-img-element */\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { faChevronLeft, faChevronRight } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport type { GalleryImage } from \"@/components/fields/types\";\nimport \"@/lib/fontawesome\";\nimport { Lightbox } from \"@/components/Lightbox\";\nimport styles from \"./Carousel.module.css\";\n\ntype CarouselProps = {\n ariaLabel?: string;\n images: GalleryImage[];\n initialIndex?: number;\n loop?: boolean;\n showCaptions?: boolean;\n showPips?: boolean;\n};\n\nfunction safeIndex(index: number, total: number) {\n if (total <= 0) {\n return 0;\n }\n\n return Math.min(Math.max(index, 0), total - 1);\n}\n\nfunction buildTrackImages(images: GalleryImage[], loopEnabled: boolean) {\n if (!loopEnabled) {\n return images;\n }\n\n const last = images[images.length - 1]!;\n const first = images[0]!;\n\n return [last, ...images, first];\n}\n\nfunction getRealIndex(trackIndex: number, imagesLength: number, loopEnabled: boolean) {\n if (imagesLength === 0) {\n return 0;\n }\n\n if (!loopEnabled) {\n return safeIndex(trackIndex, imagesLength);\n }\n\n if (trackIndex === 0) {\n return imagesLength - 1;\n }\n\n if (trackIndex === imagesLength + 1) {\n return 0;\n }\n\n return safeIndex(trackIndex - 1, imagesLength);\n}\n\nfunction getTrackIndexForRealIndex(realIndex: number, loopEnabled: boolean) {\n return loopEnabled ? realIndex + 1 : realIndex;\n}\n\nexport function Carousel({\n ariaLabel = \"Image carousel\",\n images,\n initialIndex = 0,\n loop = true,\n showCaptions = true,\n showPips = true,\n}: CarouselProps) {\n const hasMultiple = images.length > 1;\n const loopEnabled = loop && hasMultiple;\n const trackImages = useMemo(\n () => buildTrackImages(images, loopEnabled),\n [images, loopEnabled],\n );\n\n const [trackIndex, setTrackIndex] = useState(() => {\n const base = safeIndex(initialIndex, images.length);\n return getTrackIndexForRealIndex(base, loopEnabled);\n });\n const [transitionEnabled, setTransitionEnabled] = useState(true);\n const [isAnimating, setIsAnimating] = useState(false);\n const isJumpingRef = useRef(false);\n\n useEffect(() => {\n if (images.length === 0) {\n return;\n }\n\n const base = safeIndex(initialIndex, images.length);\n setTransitionEnabled(false);\n setIsAnimating(false);\n setTrackIndex(getTrackIndexForRealIndex(base, loopEnabled));\n\n const frame = requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setTransitionEnabled(true);\n });\n });\n\n return () => cancelAnimationFrame(frame);\n }, [images.length, initialIndex, loopEnabled]);\n\n const activeIndex = getRealIndex(trackIndex, images.length, loopEnabled);\n const activeImage = images[activeIndex];\n\n const goToTrackIndex = useCallback((nextTrackIndex: number, animate = true) => {\n if (trackImages.length === 0) {\n return;\n }\n\n const maxIndex = trackImages.length - 1;\n const clamped = Math.min(Math.max(nextTrackIndex, 0), maxIndex);\n\n if (animate && isAnimating) {\n return;\n }\n\n setTransitionEnabled(animate);\n if (animate) {\n setIsAnimating(true);\n }\n\n setTrackIndex(clamped);\n }, [isAnimating, trackImages.length]);\n\n const goTo = useCallback((targetIndex: number) => {\n if (images.length === 0) {\n return;\n }\n\n const normalized = loopEnabled\n ? ((targetIndex % images.length) + images.length) % images.length\n : safeIndex(targetIndex, images.length);\n\n if (normalized === activeIndex) {\n return;\n }\n\n goToTrackIndex(getTrackIndexForRealIndex(normalized, loopEnabled), true);\n }, [activeIndex, goToTrackIndex, images.length, loopEnabled]);\n\n const finishJump = useCallback((nextTrackIndex: number) => {\n isJumpingRef.current = true;\n setTransitionEnabled(false);\n setTrackIndex(nextTrackIndex);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isJumpingRef.current = false;\n setTransitionEnabled(true);\n setIsAnimating(false);\n });\n });\n }, []);\n\n const handlePrevious = () => {\n if (isAnimating) {\n return;\n }\n\n if (!loopEnabled && trackIndex === 0) {\n return;\n }\n\n goToTrackIndex(trackIndex - 1, true);\n };\n\n const handleNext = () => {\n if (isAnimating) {\n return;\n }\n\n if (!loopEnabled && trackIndex === trackImages.length - 1) {\n return;\n }\n\n goToTrackIndex(trackIndex + 1, true);\n };\n\n const handleTransitionEnd = (event: React.TransitionEvent<HTMLDivElement>) => {\n if (\n event.target !== event.currentTarget\n || event.propertyName !== \"transform\"\n || isJumpingRef.current\n ) {\n return;\n }\n\n if (!loopEnabled) {\n setIsAnimating(false);\n return;\n }\n\n if (trackIndex === trackImages.length - 1) {\n finishJump(1);\n return;\n }\n\n if (trackIndex === 0) {\n finishJump(trackImages.length - 2);\n return;\n }\n\n setIsAnimating(false);\n };\n\n if (images.length === 0) {\n return (\n <div className={styles.empty} role=\"status\">\n No carousel images available.\n </div>\n );\n }\n\n return (\n <section\n aria-label={ariaLabel}\n className={styles.carousel}\n tabIndex={hasMultiple ? 0 : undefined}\n onKeyDown={(event) => {\n if (!hasMultiple || isAnimating) {\n return;\n }\n\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n handlePrevious();\n return;\n }\n\n if (event.key === \"ArrowRight\") {\n event.preventDefault();\n handleNext();\n }\n }}\n >\n <span aria-atomic=\"true\" aria-live=\"polite\" className={styles.visuallyHidden}>\n {`Slide ${activeIndex + 1} of ${images.length}${activeImage?.caption ? `: ${activeImage.caption}` : \"\"}`}\n </span>\n <div className={styles.stage}>\n <div\n className={styles.track}\n data-transition={transitionEnabled ? \"true\" : \"false\"}\n style={{ transform: `translateX(-${trackIndex * 100}%)` }}\n onTransitionEnd={handleTransitionEnd}\n >\n {trackImages.map((image, index) => (\n <div className={styles.slide} key={`${image.id ?? image.src}-${index}`}>\n <Lightbox\n image={image}\n showCaption={showCaptions}\n trigger={(\n <img\n alt=\"\"\n className={styles.image}\n src={image.src}\n />\n )}\n triggerLabel={`Open ${image.caption ?? image.alt}`}\n triggerVariant=\"image\"\n />\n </div>\n ))}\n </div>\n {hasMultiple ? (\n <>\n <button\n aria-label=\"Previous slide\"\n className={styles.nav}\n data-direction=\"previous\"\n disabled={isAnimating || (!loopEnabled && trackIndex === 0)}\n type=\"button\"\n onClick={handlePrevious}\n >\n <FontAwesomeIcon aria-hidden=\"true\" className={styles.navIcon} icon={faChevronLeft} />\n </button>\n <button\n aria-label=\"Next slide\"\n className={styles.nav}\n data-direction=\"next\"\n disabled={isAnimating || (!loopEnabled && trackIndex === trackImages.length - 1)}\n type=\"button\"\n onClick={handleNext}\n >\n <FontAwesomeIcon aria-hidden=\"true\" className={styles.navIcon} icon={faChevronRight} />\n </button>\n {showPips ? (\n <div aria-label=\"Choose slide\" className={styles.pips}>\n {images.map((image, index) => (\n <button\n aria-current={index === activeIndex ? \"true\" : undefined}\n aria-label={`Show ${image.caption ?? image.alt}`}\n className={styles.pip}\n data-active={index === activeIndex}\n disabled={isAnimating}\n key={image.id ?? image.src}\n type=\"button\"\n onClick={() => goTo(index)}\n />\n ))}\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n\n {showCaptions && activeImage?.caption ? (\n <div className={styles.footer}>\n <p className={styles.caption}>{activeImage.caption}</p>\n </div>\n ) : null}\n </section>\n );\n}\n",".thumbnail {\n display: grid;\n width: 100%;\n min-width: 0;\n max-width: var(--thumbnail-max-width);\n gap: 10px;\n}\n\n.thumbnail[data-size=\"small\"] {\n --thumbnail-max-width: 220px;\n --thumbnail-height: 124px;\n}\n\n.thumbnail[data-size=\"medium\"] {\n --thumbnail-max-width: 360px;\n --thumbnail-height: 202px;\n}\n\n.thumbnail[data-size=\"large\"] {\n --thumbnail-max-width: 520px;\n --thumbnail-height: 292px;\n}\n\n.figure {\n display: block;\n width: 100%;\n height: var(--thumbnail-height);\n margin: 0;\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--opus-border) 78%, transparent);\n background: color-mix(in srgb, var(--opus-input-bg) 84%, black 16%);\n box-shadow: var(--opus-shadow);\n}\n\n.image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition:\n filter 180ms ease,\n transform 180ms ease;\n}\n\n.thumbnail[data-clickable=\"true\"] .figure {\n cursor: zoom-in;\n}\n\n.thumbnail[data-clickable=\"true\"]:hover .image {\n filter: saturate(1.12) contrast(1.04);\n transform: scale(1.045);\n}\n\n.caption {\n margin: 0;\n color: var(--opus-muted);\n font-size: var(--opus-control-font-size);\n font-weight: 800;\n text-align: center;\n}\n\n.caption[data-ellipsis=\"true\"] {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","\"use client\";\n\n/* eslint-disable @next/next/no-img-element */\n\nimport type { GalleryImage } from \"@/components/fields/types\";\nimport { Lightbox } from \"@/components/Lightbox\";\nimport styles from \"./ImageThumbnail.module.css\";\n\ntype ImageThumbnailProps = {\n ellipsisCaption?: boolean;\n image: GalleryImage;\n openInLightbox?: boolean;\n showCaption?: boolean;\n size?: \"small\" | \"medium\" | \"large\";\n};\n\nfunction ThumbnailImage({ decorative, image }: { decorative?: boolean; image: GalleryImage }) {\n return (\n <figure className={styles.figure}>\n <img alt={decorative ? \"\" : image.alt} className={styles.image} src={image.src} />\n </figure>\n );\n}\n\nexport function ImageThumbnail({\n ellipsisCaption = false,\n image,\n openInLightbox = true,\n showCaption = true,\n size = \"medium\",\n}: ImageThumbnailProps) {\n return (\n <div className={styles.thumbnail} data-clickable={openInLightbox} data-size={size}>\n {openInLightbox ? (\n <Lightbox\n image={image}\n showCaption={showCaption}\n trigger={<ThumbnailImage decorative image={image} />}\n triggerLabel={`Open ${image.caption ?? image.alt}`}\n triggerVariant=\"image\"\n />\n ) : (\n <ThumbnailImage image={image} />\n )}\n {showCaption && image.caption ? (\n <p\n className={styles.caption}\n data-ellipsis={ellipsisCaption ? \"true\" : undefined}\n title={ellipsisCaption ? image.caption : undefined}\n >\n {image.caption}\n </p>\n ) : null}\n </div>\n );\n}\n",".gallery {\n display: grid;\n width: 100%;\n grid-template-columns: repeat(var(--gallery-columns), minmax(0, 1fr));\n gap: 14px;\n}\n\n.gallery[data-columns=\"2\"] {\n --gallery-columns: 2;\n}\n\n.gallery[data-columns=\"3\"] {\n --gallery-columns: 3;\n}\n\n.gallery[data-columns=\"4\"] {\n --gallery-columns: 4;\n}\n\n.empty {\n width: 100%;\n padding: 24px;\n border: 1px solid color-mix(in srgb, var(--opus-border) 76%, transparent);\n background: color-mix(in srgb, var(--opus-panel) 94%, transparent);\n color: var(--opus-muted);\n font-weight: 800;\n}\n\n@media (max-width: 920px) {\n .gallery {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n@media (max-width: 560px) {\n .gallery {\n grid-template-columns: 1fr;\n }\n}\n","\"use client\";\n\nimport type { GalleryImage, ImageThumbnailSize } from \"@/components/fields/types\";\nimport { ImageThumbnail } from \"@/components/ImageThumbnail\";\nimport styles from \"./ImageGallery.module.css\";\n\ntype ImageGalleryProps = {\n columns?: 2 | 3 | 4;\n images: GalleryImage[];\n showCaptions?: boolean;\n thumbnailSize?: ImageThumbnailSize;\n};\n\nexport function ImageGallery({\n columns = 4,\n images,\n showCaptions = true,\n thumbnailSize = \"small\",\n}: ImageGalleryProps) {\n if (!images.length) {\n return (\n <div className={styles.empty} role=\"status\">\n No gallery images available.\n </div>\n );\n }\n\n return (\n <div aria-label=\"Image gallery\" className={styles.gallery} data-columns={columns}>\n {images.map((image) => (\n <ImageThumbnail\n ellipsisCaption\n image={image}\n key={image.id ?? image.src}\n openInLightbox\n showCaption={showCaptions}\n size={thumbnailSize}\n />\n ))}\n </div>\n );\n}\n",".viewer {\n display: grid;\n gap: 10px;\n width: 100%;\n margin: 0;\n}\n\n.viewer[data-height=\"lightbox\"] {\n height: 100%;\n grid-template-rows: minmax(0, 1fr) auto;\n}\n\n.stage {\n position: relative;\n min-height: 260px;\n overflow: hidden;\n border: 1px solid color-mix(in srgb, var(--opus-border) 78%, transparent);\n border-radius: var(--opus-input-radius-large);\n background:\n radial-gradient(circle at 28% 18%, color-mix(in srgb, var(--opus-accent) 22%, transparent), transparent 34%),\n linear-gradient(135deg, color-mix(in srgb, #2563eb 18%, transparent), transparent 52%),\n color-mix(in srgb, var(--opus-input-bg) 86%, var(--opus-panel));\n box-shadow: var(--opus-shadow);\n}\n\n.stage canvas {\n display: block;\n width: 100%;\n height: 100%;\n min-height: inherit;\n}\n\n.canvasHost {\n position: absolute;\n inset: 0;\n}\n\n.stage .loading {\n position: absolute;\n inset: 0;\n z-index: 1;\n}\n\n.viewer[data-height=\"compact\"] .stage {\n min-height: 180px;\n}\n\n.viewer[data-height=\"large\"] .stage {\n min-height: min(68vh, 560px);\n}\n\n.viewer[data-height=\"lightbox\"] .stage {\n height: 100%;\n min-height: 0;\n}\n\n.model {\n width: 100%;\n height: 100%;\n min-height: inherit;\n --poster-color: transparent;\n}\n\n.viewer[data-height=\"lightbox\"] .model {\n min-height: 0;\n}\n\n.loading {\n display: grid;\n min-height: inherit;\n place-items: center;\n color: var(--opus-muted);\n font-size: var(--opus-control-font-size);\n font-weight: 850;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.viewer[data-height=\"lightbox\"] .loading {\n min-height: 100%;\n}\n\n.caption {\n display: grid;\n gap: 4px;\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n font-weight: 900;\n}\n\n.caption small {\n color: var(--opus-muted);\n font-size: 0.78rem;\n font-weight: 750;\n line-height: 1.45;\n}\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport type { ModelAsset } from \"@/components/fields/types\";\nimport styles from \"./ModelViewer.module.css\";\n\ntype FireBarrelModelViewerProps = {\n asset: ModelAsset;\n autoRotate?: boolean;\n cameraControls?: boolean;\n height?: \"compact\" | \"default\" | \"large\" | \"lightbox\";\n showCaption?: boolean;\n};\n\nexport function FireBarrelModelViewer({\n asset,\n autoRotate = true,\n cameraControls = true,\n height = \"default\",\n showCaption = true,\n}: FireBarrelModelViewerProps) {\n const canvasHostRef = useRef<HTMLDivElement>(null);\n const [failed, setFailed] = useState(false);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n const canvasHost = canvasHostRef.current;\n if (!canvasHost) {\n return;\n }\n\n let disposed = false;\n let teardown = () => {};\n\n void (async () => {\n const { setupFireBarrelScene } = await import(\"@/lib/oil-barrel/setupFireBarrelScene\");\n const dispose = await setupFireBarrelScene({\n autoRotate,\n cameraControls,\n host: canvasHost,\n modelSrc: asset.src,\n });\n\n if (disposed) {\n dispose();\n return;\n }\n\n teardown = dispose;\n setLoading(false);\n })().catch(() => {\n if (!disposed) {\n setFailed(true);\n setLoading(false);\n }\n });\n\n return () => {\n disposed = true;\n teardown();\n };\n }, [asset.src, autoRotate, cameraControls]);\n\n return (\n <figure\n className={styles.viewer}\n data-caption={showCaption ? \"true\" : \"false\"}\n data-fire-overlay=\"true\"\n data-height={height}\n >\n <div className={styles.stage}>\n <div ref={canvasHostRef} className={styles.canvasHost} />\n {loading && !failed ? (\n <div className={styles.loading} role=\"status\">\n Loading 3D asset...\n </div>\n ) : null}\n {failed ? (\n <div className={styles.loading} role=\"alert\">\n Model preview unavailable.\n </div>\n ) : null}\n </div>\n {showCaption ? (\n <figcaption className={styles.caption}>\n <span>{asset.name}</span>\n {asset.description ? <small>{asset.description}</small> : null}\n </figcaption>\n ) : null}\n </figure>\n );\n}\n","\"use client\";\n\nimport { createElement, useCallback, useEffect, useRef, useState } from \"react\";\nimport type { ModelAsset } from \"@/components/fields/types\";\nimport { FireBarrelModelViewer } from \"./FireBarrelModelViewer\";\nimport styles from \"./ModelViewer.module.css\";\n\nconst MODEL_VIEWER_SRC = \"https://ajax.googleapis.com/ajax/libs/model-viewer/4.0.0/model-viewer.min.js\";\n\ntype ModelViewerElement = HTMLElement & {\n animationName?: string;\n availableAnimations?: string[];\n loaded?: boolean;\n play?: (options?: { repetitions?: number }) => void;\n};\n\ntype ModelViewerProps = {\n asset: ModelAsset;\n autoRotate?: boolean;\n cameraControls?: boolean;\n height?: \"compact\" | \"default\" | \"large\" | \"lightbox\";\n showCaption?: boolean;\n};\n\nlet modelViewerScriptLoading: Promise<void> | null = null;\n\nfunction loadModelViewer() {\n if (typeof window === \"undefined\") {\n return Promise.resolve();\n }\n\n if (customElements.get(\"model-viewer\")) {\n return Promise.resolve();\n }\n\n if (!modelViewerScriptLoading) {\n modelViewerScriptLoading = new Promise((resolve, reject) => {\n const existing = document.querySelector<HTMLScriptElement>(\n `script[src=\"${MODEL_VIEWER_SRC}\"]`,\n );\n\n if (existing) {\n existing.addEventListener(\"load\", () => resolve(), { once: true });\n existing.addEventListener(\"error\", () => reject(new Error(\"Could not load model-viewer.\")), {\n once: true,\n });\n return;\n }\n\n const script = document.createElement(\"script\");\n script.type = \"module\";\n script.src = MODEL_VIEWER_SRC;\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"Could not load model-viewer.\"));\n document.head.appendChild(script);\n });\n }\n\n return modelViewerScriptLoading;\n}\n\nfunction startModelAnimation(viewer: ModelViewerElement, asset: ModelAsset) {\n if (!asset.autoplay) {\n return;\n }\n\n const available = viewer.availableAnimations ?? [];\n const animationName = asset.animationName && available.includes(asset.animationName)\n ? asset.animationName\n : available[0];\n\n if (animationName) {\n viewer.animationName = animationName;\n }\n\n viewer.play?.();\n}\n\nexport function ModelViewer({\n asset,\n autoRotate = true,\n cameraControls = true,\n height = \"default\",\n showCaption = true,\n}: ModelViewerProps) {\n if (asset.fireOverlay) {\n return (\n <FireBarrelModelViewer\n asset={asset}\n autoRotate={autoRotate}\n cameraControls={cameraControls}\n height={height}\n showCaption={showCaption}\n />\n );\n }\n\n return (\n <StandardModelViewer\n asset={asset}\n autoRotate={autoRotate}\n cameraControls={cameraControls}\n height={height}\n showCaption={showCaption}\n />\n );\n}\n\nfunction StandardModelViewer({\n asset,\n autoRotate = true,\n cameraControls = true,\n height = \"default\",\n showCaption = true,\n}: ModelViewerProps) {\n const viewerRef = useRef<ModelViewerElement | null>(null);\n const [ready, setReady] = useState(false);\n const [failed, setFailed] = useState(false);\n const shouldAutoRotate = autoRotate && !asset.autoplay;\n\n const setViewerRef = useCallback((node: ModelViewerElement | null) => {\n viewerRef.current = node;\n }, []);\n\n useEffect(() => {\n let mounted = true;\n\n loadModelViewer()\n .then(() => {\n if (mounted) {\n setReady(true);\n }\n })\n .catch(() => {\n if (mounted) {\n setFailed(true);\n }\n });\n\n return () => {\n mounted = false;\n };\n }, []);\n\n useEffect(() => {\n if (!ready || failed || !asset.autoplay) {\n return;\n }\n\n const viewer = viewerRef.current;\n if (!viewer) {\n return;\n }\n\n const onLoad = () => startModelAnimation(viewer, asset);\n\n viewer.addEventListener(\"load\", onLoad);\n\n if (viewer.loaded) {\n onLoad();\n }\n\n return () => viewer.removeEventListener(\"load\", onLoad);\n }, [ready, failed, asset]);\n\n return (\n <figure className={styles.viewer} data-caption={showCaption ? \"true\" : \"false\"} data-height={height}>\n <div className={styles.stage}>\n {ready && !failed\n ? createElement(\"model-viewer\", {\n key: asset.src,\n ref: setViewerRef,\n alt: asset.alt,\n autoplay: asset.autoplay ? \"\" : undefined,\n \"animation-name\": asset.animationName,\n \"auto-rotate\": shouldAutoRotate ? \"\" : undefined,\n \"camera-controls\": cameraControls ? \"\" : undefined,\n \"camera-orbit\": asset.cameraOrbit,\n \"environment-image\": \"neutral\",\n exposure: \"0.95\",\n \"interaction-prompt\": \"auto\",\n \"shadow-intensity\": \"0.72\",\n src: asset.src,\n className: styles.model,\n })\n : (\n <div className={styles.loading} role={failed ? \"alert\" : \"status\"}>\n {failed ? \"Model preview unavailable.\" : \"Loading 3D asset...\"}\n </div>\n )}\n </div>\n {showCaption ? (\n <figcaption className={styles.caption}>\n <span>{asset.name}</span>\n {asset.description ? <small>{asset.description}</small> : null}\n </figcaption>\n ) : null}\n </figure>\n );\n}\n",".lightbox {\n display: block;\n width: 100%;\n}\n\n.trigger {\n display: inline-flex;\n min-height: var(--opus-control-height);\n align-items: center;\n justify-content: center;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 58%, transparent);\n border-radius: var(--opus-input-radius);\n background: var(--opus-accent);\n color: var(--opus-accent-contrast);\n cursor: pointer;\n font: inherit;\n font-size: var(--opus-control-font-size);\n font-weight: 900;\n padding: 0 16px;\n}\n\n.trigger[data-custom=\"true\"] {\n display: block;\n width: 100%;\n min-height: 0;\n justify-content: stretch;\n border: 0;\n background: transparent;\n color: inherit;\n padding: 0;\n text-align: left;\n}\n\n.overlay {\n position: fixed;\n z-index: 90;\n inset: 0;\n display: grid;\n place-items: center;\n padding: 0;\n background:\n radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--opus-accent) 24%, transparent), transparent 42%),\n color-mix(in srgb, #021231 78%, transparent);\n backdrop-filter: blur(3px);\n animation: modelLightboxFadeIn 160ms ease both;\n}\n\n.overlay[data-state=\"closing\"] {\n animation: modelLightboxFadeOut 180ms ease both;\n}\n\n.frame {\n position: relative;\n display: grid;\n width: 90vw;\n height: 90vh;\n max-width: 90vw;\n max-height: 90vh;\n animation: modelLightboxPanelIn 180ms ease both;\n}\n\n.overlay[data-state=\"closing\"] .frame {\n animation: modelLightboxPanelOut 180ms ease both;\n}\n\n.close {\n position: fixed;\n z-index: 3;\n top: 18px;\n right: 18px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n padding: 0;\n border: 1px solid var(--opus-border-strong);\n border-radius: 999px;\n background: var(--opus-panel);\n color: var(--opus-text);\n cursor: pointer;\n line-height: 0;\n transition:\n background 160ms ease,\n border-color 160ms ease,\n transform 160ms ease;\n}\n\n.closeIcon {\n width: 16px;\n height: 16px;\n}\n\n.close:hover {\n border-color: var(--opus-accent);\n background: var(--opus-accent);\n color: #fff;\n transform: scale(1.04);\n}\n\n@keyframes modelLightboxFadeIn {\n from {\n opacity: 0;\n }\n}\n\n@keyframes modelLightboxFadeOut {\n to {\n opacity: 0;\n }\n}\n\n@keyframes modelLightboxPanelIn {\n from {\n opacity: 0;\n transform: translateY(12px) scale(0.98);\n }\n}\n\n@keyframes modelLightboxPanelOut {\n to {\n opacity: 0;\n transform: translateY(10px) scale(0.98);\n }\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { faXmark } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport type { ModelAsset } from \"@/components/fields/types\";\nimport { ModelViewer } from \"@/components/ModelViewer\";\nimport \"@/lib/fontawesome\";\nimport { useOverlayAccessibility } from \"@/lib/a11y/useOverlayAccessibility\";\nimport styles from \"./ModelLightbox.module.css\";\n\ntype ModelLightboxProps = {\n asset: ModelAsset;\n dismissOnBackdrop?: boolean;\n dismissOnEscape?: boolean;\n open?: boolean;\n showCaption?: boolean;\n trigger?: ReactNode;\n triggerLabel?: string;\n onOpenChange?: (open: boolean) => void;\n};\n\nexport function ModelLightbox({\n asset,\n dismissOnBackdrop = true,\n dismissOnEscape = true,\n open,\n showCaption = true,\n trigger,\n triggerLabel = \"Open 3D asset\",\n onOpenChange,\n}: ModelLightboxProps) {\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = open !== undefined;\n const isOpen = isControlled ? open : internalOpen;\n const [isRendered, setIsRendered] = useState(isOpen);\n const panelRef = useRef<HTMLDivElement>(null);\n const closeRef = useRef<HTMLButtonElement>(null);\n\n const setOpen = useCallback((nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n\n onOpenChange?.(nextOpen);\n }, [isControlled, onOpenChange]);\n\n useOverlayAccessibility(isOpen && isRendered, panelRef, {\n initialFocusRef: closeRef,\n restoreFocus: true,\n });\n\n useEffect(() => {\n if (!isOpen || !dismissOnEscape) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [dismissOnEscape, isOpen, setOpen]);\n\n useEffect(() => {\n if (isOpen) {\n const timeout = window.setTimeout(() => setIsRendered(true), 0);\n\n return () => window.clearTimeout(timeout);\n }\n\n if (!isRendered) {\n return;\n }\n\n const timeout = window.setTimeout(() => setIsRendered(false), 180);\n\n return () => window.clearTimeout(timeout);\n }, [isOpen, isRendered]);\n\n return (\n <div className={styles.lightbox}>\n <button\n aria-label={trigger ? triggerLabel : undefined}\n className={styles.trigger}\n data-custom={trigger ? \"true\" : \"false\"}\n type=\"button\"\n onClick={() => setOpen(true)}\n >\n {trigger ?? <span>{triggerLabel}</span>}\n </button>\n\n {isOpen || isRendered ? (\n <div\n className={styles.overlay}\n data-state={isOpen ? \"open\" : \"closing\"}\n onMouseDown={(event) => {\n if (dismissOnBackdrop && event.target === event.currentTarget) {\n setOpen(false);\n }\n }}\n >\n <div\n ref={panelRef}\n aria-label={asset.name}\n aria-modal=\"true\"\n className={styles.frame}\n role=\"dialog\"\n >\n <button\n ref={closeRef}\n aria-label=\"Close 3D asset preview\"\n className={styles.close}\n type=\"button\"\n onClick={() => setOpen(false)}\n >\n <FontAwesomeIcon aria-hidden=\"true\" className={styles.closeIcon} icon={faXmark} />\n </button>\n <ModelViewer asset={asset} height=\"lightbox\" showCaption={showCaption} />\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n",".content {\n display: grid;\n gap: 8px;\n width: 100%;\n min-width: 0;\n}\n\n.content[data-size=\"small\"] {\n width: 180px;\n}\n\n.content[data-size=\"medium\"] {\n width: 240px;\n}\n\n.content[data-size=\"large\"] {\n width: min(100%, 340px);\n}\n\n.caption {\n overflow: hidden;\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n font-weight: 900;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.staticThumbnail {\n display: inline-block;\n}\n\n.content :global(figure) {\n pointer-events: none;\n}\n\n.staticThumbnail .content :global(figure) {\n pointer-events: auto;\n}\n","\"use client\";\n\nimport type { ModelAsset, ModelThumbnailSize } from \"@/components/fields/types\";\nimport { ModelLightbox } from \"@/components/ModelLightbox\";\nimport { ModelViewer } from \"@/components/ModelViewer\";\nimport styles from \"./ModelThumbnail.module.css\";\n\ntype ModelThumbnailProps = {\n asset: ModelAsset;\n openInLightbox?: boolean;\n showCaption?: boolean;\n size?: ModelThumbnailSize;\n};\n\nfunction ThumbnailContent({\n asset,\n showCaption,\n size,\n}: {\n asset: ModelAsset;\n showCaption: boolean;\n size: ModelThumbnailSize;\n}) {\n return (\n <span className={styles.content} data-size={size}>\n <ModelViewer asset={asset} cameraControls={false} height=\"compact\" showCaption={false} />\n {showCaption ? <span className={styles.caption}>{asset.name}</span> : null}\n </span>\n );\n}\n\nexport function ModelThumbnail({\n asset,\n openInLightbox = true,\n showCaption = true,\n size = \"medium\",\n}: ModelThumbnailProps) {\n const content = <ThumbnailContent asset={asset} showCaption={showCaption} size={size} />;\n\n if (openInLightbox) {\n return (\n <ModelLightbox\n asset={asset}\n trigger={content}\n triggerLabel={`Open ${asset.name}`}\n />\n );\n }\n\n return <div className={styles.staticThumbnail}>{content}</div>;\n}\n",".gallery {\n display: grid;\n gap: 14px;\n grid-template-columns: repeat(var(--model-gallery-columns), minmax(0, 1fr));\n}\n\n.gallery[data-columns=\"2\"] {\n --model-gallery-columns: 2;\n}\n\n.gallery[data-columns=\"3\"] {\n --model-gallery-columns: 3;\n}\n\n.gallery[data-columns=\"4\"] {\n --model-gallery-columns: 4;\n}\n\n.gallery > * {\n width: 100%;\n}\n\n.empty {\n display: grid;\n min-height: 160px;\n place-items: center;\n border: 1px dashed var(--opus-border);\n border-radius: var(--opus-input-radius-large);\n color: var(--opus-muted);\n font-size: var(--opus-control-font-size);\n font-weight: 850;\n}\n\n@media (max-width: 920px) {\n .gallery {\n --model-gallery-columns: 2;\n }\n}\n\n@media (max-width: 620px) {\n .gallery {\n --model-gallery-columns: 1;\n }\n}\n","\"use client\";\n\nimport type { ModelAsset, ModelThumbnailSize } from \"@/components/fields/types\";\nimport { ModelThumbnail } from \"@/components/ModelThumbnail\";\nimport styles from \"./ModelGallery.module.css\";\n\ntype ModelGalleryProps = {\n assets: ModelAsset[];\n columns?: 2 | 3 | 4;\n showCaptions?: boolean;\n thumbnailSize?: ModelThumbnailSize;\n};\n\nexport function ModelGallery({\n assets,\n columns = 4,\n showCaptions = true,\n thumbnailSize = \"small\",\n}: ModelGalleryProps) {\n if (!assets.length) {\n return (\n <div className={styles.empty} role=\"status\">\n No 3D assets available.\n </div>\n );\n }\n\n return (\n <div aria-label=\"3D asset gallery\" className={styles.gallery} data-columns={columns}>\n {assets.map((asset) => (\n <ModelThumbnail\n asset={asset}\n key={asset.id ?? asset.src}\n openInLightbox\n showCaption={showCaptions}\n size={thumbnailSize}\n />\n ))}\n </div>\n );\n}\n","import type { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { fas } from \"@fortawesome/free-solid-svg-icons\";\n\nexport type FontAwesomeIconCatalogEntry = {\n icon: IconDefinition;\n iconName: string;\n importName: string;\n label: string;\n};\n\nfunction formatIconLabel(iconName: string) {\n return iconName\n .split(\"-\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction buildFontAwesomeIconCatalog() {\n const seen = new Set<string>();\n const catalog: FontAwesomeIconCatalogEntry[] = [];\n\n for (const [importName, icon] of Object.entries(fas)) {\n if (!importName.startsWith(\"fa\") || typeof icon !== \"object\" || icon === null || !(\"iconName\" in icon)) {\n continue;\n }\n\n const definition = icon as IconDefinition;\n if (seen.has(definition.iconName)) {\n continue;\n }\n\n seen.add(definition.iconName);\n catalog.push({\n iconName: definition.iconName,\n importName,\n label: formatIconLabel(definition.iconName),\n icon: definition,\n });\n }\n\n return catalog.sort((left, right) => left.label.localeCompare(right.label));\n}\n\nexport const fontAwesomeIconCatalog = buildFontAwesomeIconCatalog();\n\nconst iconByName = new Map(fontAwesomeIconCatalog.map((entry) => [entry.iconName, entry]));\n\nexport function getFontAwesomeIconOption(iconName: string) {\n return iconByName.get(iconName) ?? fontAwesomeIconCatalog[0];\n}\n\nexport function filterFontAwesomeIcons(query: string) {\n const normalized = query.trim().toLowerCase();\n if (!normalized) {\n return fontAwesomeIconCatalog;\n }\n\n return fontAwesomeIconCatalog.filter((entry) => {\n return (\n entry.label.toLowerCase().includes(normalized) ||\n entry.iconName.includes(normalized) ||\n entry.importName.toLowerCase().includes(normalized)\n );\n });\n}\n","\"use client\";\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport \"@/lib/fontawesome\";\nimport { getFontAwesomeIconOption } from \"@/lib/fontAwesomeIconCatalog\";\n\ntype CatalogIconProps = {\n iconName: string;\n};\n\nexport function CatalogIcon({ iconName }: CatalogIconProps) {\n return <FontAwesomeIcon aria-hidden=\"true\" icon={getFontAwesomeIconOption(iconName).icon} />;\n}\n",".root {\n display: grid;\n justify-items: center;\n gap: 14px;\n width: 100%;\n max-width: 420px;\n margin-inline: auto;\n padding: 24px 20px;\n text-align: center;\n}\n\n.root[data-density=\"compact\"] {\n gap: 10px;\n padding: 16px 14px;\n}\n\n.iconWrap {\n display: grid;\n place-items: center;\n width: 56px;\n height: 56px;\n border-radius: 999px;\n border: 1px solid color-mix(in srgb, var(--opus-accent) 24%, var(--opus-border));\n background:\n radial-gradient(circle at 30% 30%, color-mix(in srgb, var(--opus-accent) 18%, transparent), transparent 55%),\n color-mix(in srgb, var(--opus-panel) 72%, transparent);\n backdrop-filter: blur(10px);\n -webkit-backdrop-filter: blur(10px);\n color: var(--opus-accent);\n font-size: 1.35rem;\n line-height: 1;\n}\n\n.iconWrap svg {\n display: block;\n width: 1em;\n height: 1em;\n fill: currentColor;\n opacity: 0.92;\n}\n\n.copy {\n display: grid;\n gap: 6px;\n}\n\n.title,\n.description {\n margin: 0;\n}\n\n.title {\n color: var(--opus-text);\n font-size: 1rem;\n font-weight: 800;\n line-height: 1.3;\n}\n\n.root[data-density=\"compact\"] .iconWrap {\n width: 48px;\n height: 48px;\n font-size: 1.15rem;\n}\n\n.root[data-density=\"compact\"] .title {\n font-size: 0.94rem;\n}\n\n.description {\n color: var(--opus-muted);\n font-size: 0.88rem;\n line-height: 1.5;\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 8px;\n}\n","\"use client\";\n\nimport { useId, type ReactNode } from \"react\";\nimport type { SurfaceDensity } from \"@/components/fields/types\";\nimport { CatalogIcon } from \"@/components/CatalogIcon\";\nimport styles from \"./EmptyState.module.css\";\n\ntype EmptyStateProps = {\n actions?: ReactNode;\n description?: string;\n density?: SurfaceDensity;\n icon?: string | false;\n title: string;\n};\n\nexport function EmptyState({\n actions,\n description,\n density = \"comfortable\",\n icon = \"inbox\",\n title,\n}: EmptyStateProps) {\n const baseId = useId();\n const titleId = `${baseId}-title`;\n const descriptionId = description ? `${baseId}-description` : undefined;\n\n return (\n <section\n aria-describedby={descriptionId}\n aria-labelledby={titleId}\n className={styles.root}\n data-density={density}\n >\n {icon ? (\n <div aria-hidden=\"true\" className={styles.iconWrap}>\n <CatalogIcon iconName={icon} />\n </div>\n ) : null}\n <div className={styles.copy}>\n <h2 className={styles.title} id={titleId}>\n {title}\n </h2>\n {description ? (\n <p className={styles.description} id={descriptionId}>\n {description}\n </p>\n ) : null}\n </div>\n {actions ? <div className={styles.actions}>{actions}</div> : null}\n </section>\n );\n}\n",".layout {\n display: grid;\n width: 100%;\n min-height: 280px;\n overflow: hidden;\n border: 1px solid var(--opus-border);\n border-radius: var(--opus-input-radius-large);\n background: color-mix(in srgb, var(--opus-panel) 88%, transparent);\n}\n\n.layout[data-side=\"left\"] {\n grid-template-columns: minmax(0, 220px) minmax(0, 1fr);\n}\n\n.layout[data-side=\"right\"] {\n grid-template-columns: minmax(0, 1fr) minmax(0, 220px);\n}\n\n.layout[data-collapsed=\"true\"][data-side=\"left\"] {\n grid-template-columns: 56px minmax(0, 1fr);\n}\n\n.layout[data-collapsed=\"true\"][data-side=\"right\"] {\n grid-template-columns: minmax(0, 1fr) 56px;\n}\n\n.sidebar {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr) auto;\n min-height: 0;\n border-inline-end: 1px solid var(--opus-border);\n background: color-mix(in srgb, var(--opus-panel) 94%, transparent);\n}\n\n.layout[data-side=\"right\"] .sidebar {\n border-inline-end: 0;\n border-inline-start: 1px solid var(--opus-border);\n}\n\n.sidebar[data-collapsed=\"true\"] {\n width: 56px;\n}\n\n.sidebar[data-density=\"compact\"] {\n --sidebar-pad: 10px;\n --sidebar-gap: 2px;\n --sidebar-row-pad-block: 6px;\n --sidebar-row-pad-inline: 8px;\n}\n\n.sidebar[data-density=\"comfortable\"] {\n --sidebar-pad: 14px;\n --sidebar-gap: 4px;\n --sidebar-row-pad-block: 8px;\n --sidebar-row-pad-inline: 10px;\n}\n\n.header,\n.footer,\n.body {\n min-width: 0;\n}\n\n.header,\n.footer {\n padding: var(--sidebar-pad);\n}\n\n.header {\n border-bottom: 1px solid var(--opus-border);\n}\n\n.footer {\n border-top: 1px solid var(--opus-border);\n padding:\n var(--sidebar-pad)\n var(--sidebar-pad)\n var(--sidebar-pad)\n calc(var(--sidebar-pad) + var(--sidebar-row-pad-inline));\n color: var(--opus-muted);\n font-size: 0.78rem;\n line-height: 1.4;\n}\n\n.headerInner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.headerTitle {\n margin: 0;\n padding-inline: var(--sidebar-row-pad-inline);\n color: var(--opus-text);\n font-size: 0.82rem;\n font-weight: 800;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.body {\n overflow: auto;\n padding: var(--sidebar-pad);\n}\n\n.main {\n display: grid;\n place-items: center;\n min-width: 0;\n padding: 24px;\n color: var(--opus-muted);\n font-size: 0.88rem;\n background:\n radial-gradient(circle at 20% 20%, color-mix(in srgb, var(--opus-accent) 10%, transparent), transparent 40%),\n color-mix(in srgb, var(--opus-panel) 82%, transparent);\n}\n\n.nav {\n display: grid;\n gap: var(--sidebar-gap);\n}\n\n.link {\n display: block;\n width: 100%;\n padding: var(--sidebar-row-pad-block) var(--sidebar-row-pad-inline);\n border: 0;\n border-radius: var(--opus-input-radius);\n background: transparent;\n color: var(--opus-muted);\n font-size: 0.86rem;\n font-weight: 600;\n line-height: 1.3;\n text-align: left;\n text-decoration: none;\n cursor: pointer;\n transition:\n background 160ms ease,\n color 160ms ease;\n}\n\n.sidebar[data-collapsed=\"true\"] .link {\n padding-inline: 8px;\n text-align: center;\n}\n\n.link:hover {\n background: color-mix(in srgb, var(--opus-accent) 10%, transparent);\n color: var(--opus-text);\n}\n\n.linkActive {\n background: color-mix(in srgb, var(--opus-accent) 16%, transparent);\n color: var(--opus-text);\n}\n\n.group {\n display: grid;\n gap: var(--sidebar-gap);\n}\n\n.groupHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: var(--sidebar-row-pad-block) var(--sidebar-row-pad-inline);\n}\n\n.groupLabel {\n color: var(--opus-text);\n font-size: 0.82rem;\n font-weight: 750;\n}\n\n.groupToggle {\n display: grid;\n place-items: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0;\n border-radius: var(--opus-input-radius-small);\n background: transparent;\n cursor: pointer;\n}\n\n.groupChevron,\n.groupChevronOpen {\n width: 7px;\n height: 7px;\n border-right: 1.5px solid var(--opus-muted);\n border-bottom: 1.5px solid var(--opus-muted);\n transform: rotate(-45deg);\n transition: transform 160ms ease;\n}\n\n.groupChevronOpen {\n transform: rotate(45deg);\n}\n\n.groupItemsWrap {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 200ms ease;\n}\n\n.groupItemsWrap[data-open=\"true\"] {\n grid-template-rows: 1fr;\n}\n\n.groupItems {\n display: grid;\n gap: var(--sidebar-gap);\n min-height: 0;\n overflow: hidden;\n margin-left: var(--sidebar-row-pad-inline);\n padding-left: calc(var(--sidebar-row-pad-inline) + 6px);\n border-left: 1px solid transparent;\n opacity: 0;\n transition:\n opacity 180ms ease,\n border-color 200ms ease;\n}\n\n.groupItemsWrap[data-open=\"true\"] .groupItems {\n border-left-color: var(--opus-border);\n opacity: 1;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .groupItemsWrap,\n .groupItems,\n .groupChevron,\n .groupChevronOpen,\n .link {\n transition: none;\n }\n}\n\n@media (max-width: 640px) {\n .layout {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .sidebar {\n border-inline: 0;\n border-bottom: 1px solid var(--opus-border);\n }\n}\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n type ReactNode,\n} from \"react\";\nimport type { SidebarSide, SurfaceDensity } from \"@/components/fields/types\";\nimport styles from \"./Sidebar.module.css\";\n\ntype SidebarContextValue = {\n collapsed: boolean;\n density: SurfaceDensity;\n};\n\nconst SidebarContext = createContext<SidebarContextValue>({\n collapsed: false,\n density: \"comfortable\",\n});\n\ntype SidebarProps = {\n children: ReactNode;\n collapsed?: boolean;\n density?: SurfaceDensity;\n footer?: ReactNode;\n header?: ReactNode;\n side?: SidebarSide;\n};\n\nexport function Sidebar({\n children,\n collapsed = false,\n density = \"comfortable\",\n footer,\n header,\n side = \"left\",\n}: SidebarProps) {\n return (\n <SidebarContext.Provider value={{ collapsed, density }}>\n <aside\n aria-label=\"Sidebar\"\n className={styles.sidebar}\n data-collapsed={collapsed ? \"true\" : \"false\"}\n data-density={density}\n data-side={side}\n >\n {header ? <div className={styles.header}>{header}</div> : null}\n <div className={styles.body}>{children}</div>\n {footer ? <div className={styles.footer}>{footer}</div> : null}\n </aside>\n </SidebarContext.Provider>\n );\n}\n\ntype SidebarHeaderProps = {\n children?: ReactNode;\n title: string;\n};\n\nexport function SidebarHeader({ children, title }: SidebarHeaderProps) {\n const { collapsed } = useContext(SidebarContext);\n\n return (\n <div className={styles.headerInner}>\n <h2 className={collapsed ? styles.visuallyHidden : styles.headerTitle}>{title}</h2>\n {children}\n </div>\n );\n}\n\ntype SidebarNavProps = {\n \"aria-label\": string;\n children: ReactNode;\n};\n\nexport function SidebarNav({ \"aria-label\": ariaLabel, children }: SidebarNavProps) {\n return (\n <nav aria-label={ariaLabel} className={styles.nav}>\n {children}\n </nav>\n );\n}\n\ntype SidebarLinkProps = {\n active?: boolean;\n children: ReactNode;\n href?: string;\n onClick?: () => void;\n};\n\nexport function SidebarLink({ active = false, children, href, onClick }: SidebarLinkProps) {\n const { collapsed } = useContext(SidebarContext);\n const className = [styles.link, active ? styles.linkActive : \"\"].filter(Boolean).join(\" \");\n const label = typeof children === \"string\" ? children : null;\n const content = (\n <>\n {collapsed && label ? <span aria-hidden=\"true\">{label.charAt(0)}</span> : null}\n <span className={collapsed ? styles.visuallyHidden : undefined}>{children}</span>\n </>\n );\n\n if (href) {\n return (\n <a aria-current={active ? \"page\" : undefined} className={className} href={href}>\n {content}\n </a>\n );\n }\n\n return (\n <button\n aria-current={active ? \"page\" : undefined}\n className={className}\n onClick={onClick}\n type=\"button\"\n >\n {content}\n </button>\n );\n}\n\nfunction createGroupListId(label: string, id?: string) {\n if (id) {\n return id;\n }\n\n const slug = label\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n return slug ? `sidebar-group-${slug}` : \"sidebar-group\";\n}\n\ntype SidebarGroupProps = {\n children: ReactNode;\n defaultOpen?: boolean;\n id?: string;\n label: string;\n};\n\nexport function SidebarGroup({ children, defaultOpen = true, id, label }: SidebarGroupProps) {\n const { collapsed } = useContext(SidebarContext);\n const listId = createGroupListId(label, id);\n const [open, setOpen] = useState(defaultOpen);\n\n if (collapsed) {\n return (\n <div aria-label={label} className={styles.group} role=\"group\">\n {children}\n </div>\n );\n }\n\n return (\n <div aria-label={label} className={styles.group} role=\"group\">\n <div className={styles.groupHeader}>\n <span className={styles.groupLabel}>{label}</span>\n <button\n aria-controls={listId}\n aria-expanded={open}\n aria-label={`${open ? \"Collapse\" : \"Expand\"} ${label}`}\n className={styles.groupToggle}\n onClick={() => setOpen((current) => !current)}\n type=\"button\"\n >\n <span aria-hidden=\"true\" className={open ? styles.groupChevronOpen : styles.groupChevron} />\n </button>\n </div>\n <div className={styles.groupItemsWrap} data-open={open ? \"true\" : \"false\"}>\n <div className={styles.groupItems} id={listId} inert={!open || undefined}>\n {children}\n </div>\n </div>\n </div>\n );\n}\n\ntype SidebarLayoutProps = {\n children: ReactNode;\n collapsed?: boolean;\n main: ReactNode;\n side?: SidebarSide;\n};\n\nexport function SidebarLayout({ children, collapsed = false, main, side = \"left\" }: SidebarLayoutProps) {\n return (\n <div className={styles.layout} data-collapsed={collapsed ? \"true\" : \"false\"} data-side={side}>\n {side === \"left\" ? children : null}\n <div className={styles.main}>{main}</div>\n {side === \"right\" ? children : null}\n </div>\n );\n}\n",".swatches {\n --accent-swatch-size: 18px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n min-height: var(--opus-control-height);\n padding: 8px 8px;\n border: 1px solid var(--opus-border-strong);\n border-radius: 999px;\n background: color-mix(in srgb, var(--opus-input-bg) 88%, transparent);\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 8px 20px rgba(0, 0, 0, 0.06);\n}\n\n.swatch {\n width: var(--accent-swatch-size);\n height: var(--accent-swatch-size);\n border: 1px solid color-mix(in srgb, var(--accent-option) 62%, white 18%);\n border-radius: 50%;\n background:\n radial-gradient(circle at 35% 28%, rgba(255, 255, 255, 0.62), transparent 28%),\n var(--accent-option);\n box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent-option) 0%, transparent);\n cursor: pointer;\n transition: box-shadow 160ms ease;\n}\n\n.swatch:hover,\n.swatch:focus-visible {\n box-shadow:\n 0 0 0 2px color-mix(in srgb, var(--opus-input-bg) 72%, transparent),\n 0 0 0 4px color-mix(in srgb, var(--accent-option) 72%, transparent);\n outline: 0;\n}\n\n.swatch[data-selected=\"true\"] {\n box-shadow:\n 0 0 0 2px color-mix(in srgb, var(--opus-input-bg) 72%, transparent),\n 0 0 0 4px color-mix(in srgb, var(--accent-option) 72%, transparent);\n outline: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .swatch {\n transition: none;\n }\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useMemo, useState, type CSSProperties } from \"react\";\nimport { FieldShell } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\nimport styles from \"./AccentColorPicker.module.css\";\n\nexport const ACCENT_STORAGE_KEY = \"opus-components-accent\";\nexport const DEFAULT_ACCENT_COLOR = \"#8f6cff\";\n\nexport type AccentColor = {\n label: string;\n value: string;\n};\n\nexport const accentColors: AccentColor[] = [\n { label: \"Purple\", value: \"#8f6cff\" },\n { label: \"Blue\", value: \"#3b82f6\" },\n { label: \"Cyan\", value: \"#06b6d4\" },\n { label: \"Green\", value: \"#22c55e\" },\n { label: \"Amber\", value: \"#f59e0b\" },\n { label: \"Rose\", value: \"#f43f5e\" },\n];\n\nfunction isAccentColor(value: string | null): value is string {\n return Boolean(value && accentColors.some((option) => option.value === value));\n}\n\nexport function createAccentStyle(accent: string): CSSProperties {\n return {\n \"--opus-user-accent\": accent,\n \"--opus-user-accent-soft\": `color-mix(in srgb, ${accent} 16%, transparent)`,\n \"--opus-accent\": accent,\n \"--opus-accent-soft\": `color-mix(in srgb, ${accent} 16%, transparent)`,\n \"--opus-accent-contrast\": \"#ffffff\",\n } as CSSProperties;\n}\n\nfunction applyDocumentAccent(accent: string) {\n if (typeof document === \"undefined\") {\n return;\n }\n\n document.documentElement.style.setProperty(\"--opus-user-accent\", accent);\n document.documentElement.style.setProperty(\n \"--opus-user-accent-soft\",\n `color-mix(in srgb, ${accent} 16%, transparent)`,\n );\n}\n\nexport function useAccentPreference() {\n const [accent, setAccentState] = useState(DEFAULT_ACCENT_COLOR);\n\n useEffect(() => {\n const timeout = window.setTimeout(() => {\n const stored = window.localStorage.getItem(ACCENT_STORAGE_KEY);\n if (isAccentColor(stored)) {\n applyDocumentAccent(stored);\n setAccentState(stored);\n return;\n }\n\n applyDocumentAccent(DEFAULT_ACCENT_COLOR);\n }, 0);\n\n return () => window.clearTimeout(timeout);\n }, []);\n\n const setAccent = useCallback((next: string) => {\n if (!isAccentColor(next)) {\n return;\n }\n\n setAccentState(next);\n applyDocumentAccent(next);\n window.localStorage.setItem(ACCENT_STORAGE_KEY, next);\n }, []);\n\n const accentStyle = useMemo(() => createAccentStyle(accent), [accent]);\n\n return { accent, accentStyle, setAccent };\n}\n\ntype AccentColorPickerProps = {\n id: string;\n label?: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n value: string;\n onChange: (value: string) => void;\n};\n\nexport function AccentColorPicker({\n id,\n label = \"Accent\",\n labelPosition = \"left\",\n mode = \"flagged\",\n onChange,\n value,\n}: AccentColorPickerProps) {\n return (\n <FieldShell\n fitContent\n flaggedAlign=\"center\"\n id={id}\n label={label}\n labelPosition={labelPosition}\n labelTag=\"div\"\n mode={mode}\n >\n <div aria-labelledby={`${id}-label`} className={styles.swatches} role=\"radiogroup\">\n {accentColors.map((option) => {\n const selected = value === option.value;\n\n return (\n <button\n aria-checked={selected}\n aria-label={option.label}\n className={styles.swatch}\n data-selected={selected ? \"true\" : undefined}\n key={option.value}\n role=\"radio\"\n style={{ \"--accent-option\": option.value } as CSSProperties}\n title={option.label}\n type=\"button\"\n onClick={() => onChange(option.value)}\n />\n );\n })}\n </div>\n </FieldShell>\n );\n}\n",".root {\n position: relative;\n width: 100%;\n min-width: 0;\n}\n\n.trigger {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n min-height: var(--opus-control-height);\n padding: 0 32px 0 10px;\n border: 1px solid var(--opus-border-strong);\n border-radius: var(--opus-input-radius);\n background: var(--opus-input-bg);\n color: var(--opus-text);\n font-size: var(--opus-control-font-size);\n box-shadow:\n 0 1px 0 rgba(255, 255, 255, 0.05) inset,\n 0 14px 30px rgba(0, 0, 0, 0.06);\n cursor: pointer;\n text-align: left;\n}\n\n.triggerLabel {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.trigger:focus-visible {\n outline: none;\n border-color: var(--opus-accent);\n box-shadow:\n 0 0 0 4px color-mix(in srgb, var(--opus-accent) 22%, transparent),\n 0 14px 30px rgba(0, 0, 0, 0.06);\n}\n\n.triggerIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--opus-muted);\n font-size: 0.95rem;\n line-height: 1;\n}\n\n.chevron {\n position: absolute;\n top: 50%;\n right: 12px;\n width: 8px;\n height: 8px;\n border-right: 2px solid var(--opus-muted);\n border-bottom: 2px solid var(--opus-muted);\n transform: translateY(-60%) rotate(45deg);\n pointer-events: none;\n}\n\n.menu {\n position: absolute;\n z-index: 20;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n display: grid;\n gap: 6px;\n overflow: hidden;\n padding: 6px;\n border: 1px solid var(--opus-menu-glass-border);\n border-radius: var(--opus-input-radius-large);\n background:\n radial-gradient(circle at 10% 0%, color-mix(in srgb, var(--opus-accent) 14%, transparent), transparent 34%),\n color-mix(in srgb, var(--opus-menu-glass-surface) 72%, transparent);\n box-shadow:\n 0 28px 80px color-mix(in srgb, #020617 34%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--opus-accent) 10%, transparent);\n -webkit-backdrop-filter: blur(20px) saturate(1.35);\n backdrop-filter: blur(20px) saturate(1.35);\n}\n\n.menu > * {\n position: relative;\n z-index: 1;\n}\n\n.search {\n width: 100%;\n min-height: var(--opus-control-height);\n padding: 0 10px;\n border: 1px solid color-mix(in srgb, var(--opus-menu-glass-border) 88%, transparent);\n border-radius: var(--opus-input-radius);\n background: color-mix(in srgb, var(--opus-input-bg) 55%, transparent);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n color: var(--opus-text);\n font: inherit;\n font-size: var(--opus-control-font-size);\n}\n\n.search:focus {\n outline: none;\n border-color: var(--opus-accent);\n box-shadow: 0 0 0 4px color-mix(in srgb, var(--opus-accent) 18%, transparent);\n}\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(2rem, 1fr));\n gap: 2px;\n max-height: 360px;\n overflow-y: auto;\n}\n\n.option {\n display: grid;\n place-items: center;\n min-width: 0;\n min-height: 2rem;\n padding: 4px;\n border: 0;\n border-radius: calc(var(--opus-input-radius) - 1px);\n background: transparent;\n color: var(--opus-muted);\n cursor: pointer;\n}\n\n.option:hover,\n.option[data-selected=\"true\"] {\n background: color-mix(in srgb, var(--opus-accent) 12%, transparent);\n color: var(--opus-text);\n}\n\n.optionIcon,\n.triggerIcon svg,\n.optionIcon svg {\n display: block;\n width: 1em;\n height: 1em;\n fill: currentColor;\n}\n\n.optionIcon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 0.95rem;\n line-height: 1;\n}\n\n.empty {\n grid-column: 1 / -1;\n margin: 0;\n padding: 12px 8px;\n color: var(--opus-muted);\n font-size: 0.78rem;\n text-align: center;\n}\n","\"use client\";\n\nimport { useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport \"@/lib/fontawesome\";\nimport { FieldShell } from \"@/components/fields/FieldShell\";\nimport type { FieldMode, LabelPosition } from \"@/components/fields/types\";\nimport {\n filterFontAwesomeIcons,\n getFontAwesomeIconOption,\n} from \"@/lib/fontAwesomeIconCatalog\";\nimport styles from \"./IconPicker.module.css\";\n\ntype IconPickerProps = {\n id: string;\n label?: string;\n labelPosition?: LabelPosition;\n mode?: FieldMode;\n searchPlaceholder?: string;\n value: string;\n onChange: (value: string) => void;\n};\n\nexport function IconPicker({\n id,\n label = \"Icon\",\n labelPosition = \"left\",\n mode = \"stacked\",\n onChange,\n searchPlaceholder = \"Search icons\",\n value,\n}: IconPickerProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const rootRef = useRef<HTMLDivElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const listboxId = useId();\n const selected = getFontAwesomeIconOption(value);\n const filteredIcons = useMemo(() => filterFontAwesomeIcons(query), [query]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n\n const timeout = window.setTimeout(() => searchRef.current?.focus(), 0);\n\n function handlePointerDown(event: MouseEvent) {\n if (!rootRef.current?.contains(event.target as Node)) {\n setOpen(false);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n }\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n window.clearTimeout(timeout);\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [open]);\n\n return (\n <FieldShell id={id} label={label} labelPosition={labelPosition} mode={mode}>\n <div className={styles.root} ref={rootRef}>\n <button\n aria-controls={open ? listboxId : undefined}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n className={styles.trigger}\n id={id}\n type=\"button\"\n onClick={() => setOpen((current) => !current)}\n >\n <span aria-hidden=\"true\" className={styles.triggerIcon}>\n <FontAwesomeIcon icon={selected.icon} />\n </span>\n <span className={styles.triggerLabel}>{selected.label}</span>\n </button>\n <span aria-hidden=\"true\" className={styles.chevron} />\n {open ? (\n <div className={styles.menu}>\n <input\n aria-label={searchPlaceholder}\n className={styles.search}\n placeholder={searchPlaceholder}\n ref={searchRef}\n type=\"search\"\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n <div className={styles.grid} id={listboxId} role=\"listbox\">\n {filteredIcons.length ? (\n filteredIcons.map((entry) => (\n <button\n aria-label={entry.label}\n aria-selected={entry.iconName === value}\n className={styles.option}\n data-selected={entry.iconName === value ? \"true\" : undefined}\n key={entry.iconName}\n role=\"option\"\n title={entry.label}\n type=\"button\"\n onClick={() => {\n onChange(entry.iconName);\n setOpen(false);\n setQuery(\"\");\n }}\n >\n <span aria-hidden=\"true\" className={styles.optionIcon}>\n <FontAwesomeIcon icon={entry.icon} />\n </span>\n </button>\n ))\n ) : (\n <p className={styles.empty}>No icons match your search.</p>\n )}\n </div>\n </div>\n ) : null}\n </div>\n </FieldShell>\n );\n}\n"]}