snice 4.34.2 → 4.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/react/SniceProvider.js +1 -1
- package/adapters/react/SniceRouter.js +1 -1
- package/adapters/react/accordion.d.ts +2 -0
- package/adapters/react/accordion.d.ts.map +1 -1
- package/adapters/react/accordion.js +1 -1
- package/adapters/react/accordion.js.map +1 -1
- package/adapters/react/accordion.tsx +3 -2
- package/adapters/react/action-bar.d.ts +2 -0
- package/adapters/react/action-bar.d.ts.map +1 -1
- package/adapters/react/action-bar.js +1 -1
- package/adapters/react/action-bar.js.map +1 -1
- package/adapters/react/action-bar.tsx +3 -2
- package/adapters/react/activity-feed.d.ts +2 -0
- package/adapters/react/activity-feed.d.ts.map +1 -1
- package/adapters/react/activity-feed.js +1 -1
- package/adapters/react/activity-feed.js.map +1 -1
- package/adapters/react/activity-feed.tsx +3 -2
- package/adapters/react/app-tiles.d.ts +1 -0
- package/adapters/react/app-tiles.d.ts.map +1 -1
- package/adapters/react/app-tiles.js +1 -1
- package/adapters/react/app-tiles.js.map +1 -1
- package/adapters/react/app-tiles.tsx +2 -2
- package/adapters/react/approval-flow.d.ts +3 -0
- package/adapters/react/approval-flow.d.ts.map +1 -1
- package/adapters/react/approval-flow.js +1 -1
- package/adapters/react/approval-flow.js.map +1 -1
- package/adapters/react/approval-flow.tsx +4 -2
- package/adapters/react/audio-recorder.d.ts +6 -0
- package/adapters/react/audio-recorder.d.ts.map +1 -1
- package/adapters/react/audio-recorder.js +1 -1
- package/adapters/react/audio-recorder.js.map +1 -1
- package/adapters/react/audio-recorder.tsx +7 -2
- package/adapters/react/availability.d.ts +1 -0
- package/adapters/react/availability.d.ts.map +1 -1
- package/adapters/react/availability.js +1 -1
- package/adapters/react/availability.js.map +1 -1
- package/adapters/react/availability.tsx +2 -2
- package/adapters/react/avatar-group.d.ts +2 -0
- package/adapters/react/avatar-group.d.ts.map +1 -1
- package/adapters/react/avatar-group.js +1 -1
- package/adapters/react/avatar-group.js.map +1 -1
- package/adapters/react/avatar-group.tsx +3 -2
- package/adapters/react/banner.d.ts +3 -0
- package/adapters/react/banner.d.ts.map +1 -1
- package/adapters/react/banner.js +1 -1
- package/adapters/react/banner.js.map +1 -1
- package/adapters/react/banner.tsx +4 -2
- package/adapters/react/binpack.d.ts +3 -0
- package/adapters/react/binpack.d.ts.map +1 -1
- package/adapters/react/binpack.js +1 -1
- package/adapters/react/binpack.js.map +1 -1
- package/adapters/react/binpack.tsx +4 -2
- package/adapters/react/book.d.ts +3 -0
- package/adapters/react/book.d.ts.map +1 -1
- package/adapters/react/book.js +1 -1
- package/adapters/react/book.js.map +1 -1
- package/adapters/react/book.tsx +4 -2
- package/adapters/react/booking.d.ts +4 -0
- package/adapters/react/booking.d.ts.map +1 -1
- package/adapters/react/booking.js +1 -1
- package/adapters/react/booking.js.map +1 -1
- package/adapters/react/booking.tsx +5 -2
- package/adapters/react/breadcrumbs.d.ts +1 -0
- package/adapters/react/breadcrumbs.d.ts.map +1 -1
- package/adapters/react/breadcrumbs.js +1 -1
- package/adapters/react/breadcrumbs.js.map +1 -1
- package/adapters/react/breadcrumbs.tsx +2 -2
- package/adapters/react/button.d.ts +1 -0
- package/adapters/react/button.d.ts.map +1 -1
- package/adapters/react/button.js +1 -1
- package/adapters/react/button.js.map +1 -1
- package/adapters/react/button.tsx +2 -2
- package/adapters/react/calendar.d.ts +2 -0
- package/adapters/react/calendar.d.ts.map +1 -1
- package/adapters/react/calendar.js +1 -1
- package/adapters/react/calendar.js.map +1 -1
- package/adapters/react/calendar.tsx +3 -2
- package/adapters/react/camera-annotate.d.ts +3 -0
- package/adapters/react/camera-annotate.d.ts.map +1 -1
- package/adapters/react/camera-annotate.js +1 -1
- package/adapters/react/camera-annotate.js.map +1 -1
- package/adapters/react/camera-annotate.tsx +4 -2
- package/adapters/react/camera.d.ts +4 -0
- package/adapters/react/camera.d.ts.map +1 -1
- package/adapters/react/camera.js +1 -1
- package/adapters/react/camera.js.map +1 -1
- package/adapters/react/camera.tsx +5 -2
- package/adapters/react/candlestick.d.ts +3 -0
- package/adapters/react/candlestick.d.ts.map +1 -1
- package/adapters/react/candlestick.js +1 -1
- package/adapters/react/candlestick.js.map +1 -1
- package/adapters/react/candlestick.tsx +4 -2
- package/adapters/react/card.d.ts +1 -0
- package/adapters/react/card.d.ts.map +1 -1
- package/adapters/react/card.js +1 -1
- package/adapters/react/card.js.map +1 -1
- package/adapters/react/card.tsx +2 -2
- package/adapters/react/carousel.d.ts +1 -0
- package/adapters/react/carousel.d.ts.map +1 -1
- package/adapters/react/carousel.js +1 -1
- package/adapters/react/carousel.js.map +1 -1
- package/adapters/react/carousel.tsx +2 -2
- package/adapters/react/cart.d.ts +5 -0
- package/adapters/react/cart.d.ts.map +1 -1
- package/adapters/react/cart.js +1 -1
- package/adapters/react/cart.js.map +1 -1
- package/adapters/react/cart.tsx +6 -2
- package/adapters/react/checkbox.d.ts +1 -0
- package/adapters/react/checkbox.d.ts.map +1 -1
- package/adapters/react/checkbox.js +1 -1
- package/adapters/react/checkbox.js.map +1 -1
- package/adapters/react/checkbox.tsx +2 -2
- package/adapters/react/code-block.d.ts +7 -0
- package/adapters/react/code-block.d.ts.map +1 -1
- package/adapters/react/code-block.js +1 -1
- package/adapters/react/code-block.js.map +1 -1
- package/adapters/react/code-block.tsx +8 -2
- package/adapters/react/color-picker.d.ts +4 -0
- package/adapters/react/color-picker.d.ts.map +1 -1
- package/adapters/react/color-picker.js +1 -1
- package/adapters/react/color-picker.js.map +1 -1
- package/adapters/react/color-picker.tsx +5 -2
- package/adapters/react/command-palette.d.ts +5 -0
- package/adapters/react/command-palette.d.ts.map +1 -1
- package/adapters/react/command-palette.js +1 -1
- package/adapters/react/command-palette.js.map +1 -1
- package/adapters/react/command-palette.tsx +6 -2
- package/adapters/react/comments.d.ts +4 -0
- package/adapters/react/comments.d.ts.map +1 -1
- package/adapters/react/comments.js +1 -1
- package/adapters/react/comments.js.map +1 -1
- package/adapters/react/comments.tsx +5 -2
- package/adapters/react/countdown.d.ts +2 -0
- package/adapters/react/countdown.d.ts.map +1 -1
- package/adapters/react/countdown.js +1 -1
- package/adapters/react/countdown.js.map +1 -1
- package/adapters/react/countdown.tsx +3 -2
- package/adapters/react/cropper.d.ts +2 -0
- package/adapters/react/cropper.d.ts.map +1 -1
- package/adapters/react/cropper.js +1 -1
- package/adapters/react/cropper.js.map +1 -1
- package/adapters/react/cropper.tsx +3 -2
- package/adapters/react/data-card.d.ts +2 -0
- package/adapters/react/data-card.d.ts.map +1 -1
- package/adapters/react/data-card.js +1 -1
- package/adapters/react/data-card.js.map +1 -1
- package/adapters/react/data-card.tsx +3 -2
- package/adapters/react/date-picker.d.ts +8 -0
- package/adapters/react/date-picker.d.ts.map +1 -1
- package/adapters/react/date-picker.js +1 -1
- package/adapters/react/date-picker.js.map +1 -1
- package/adapters/react/date-picker.tsx +9 -2
- package/adapters/react/date-range-picker.d.ts +7 -0
- package/adapters/react/date-range-picker.d.ts.map +1 -1
- package/adapters/react/date-range-picker.js +1 -1
- package/adapters/react/date-range-picker.js.map +1 -1
- package/adapters/react/date-range-picker.tsx +8 -2
- package/adapters/react/date-time-picker.d.ts +6 -0
- package/adapters/react/date-time-picker.d.ts.map +1 -1
- package/adapters/react/date-time-picker.js +1 -1
- package/adapters/react/date-time-picker.js.map +1 -1
- package/adapters/react/date-time-picker.tsx +7 -2
- package/adapters/react/diff.d.ts +1 -0
- package/adapters/react/diff.d.ts.map +1 -1
- package/adapters/react/diff.js +1 -1
- package/adapters/react/diff.js.map +1 -1
- package/adapters/react/diff.tsx +2 -2
- package/adapters/react/draw.d.ts +5 -0
- package/adapters/react/draw.d.ts.map +1 -1
- package/adapters/react/draw.js +1 -1
- package/adapters/react/draw.js.map +1 -1
- package/adapters/react/draw.tsx +6 -2
- package/adapters/react/drawer.d.ts +2 -0
- package/adapters/react/drawer.d.ts.map +1 -1
- package/adapters/react/drawer.js +1 -1
- package/adapters/react/drawer.js.map +1 -1
- package/adapters/react/drawer.tsx +3 -2
- package/adapters/react/empty-state.d.ts +1 -0
- package/adapters/react/empty-state.d.ts.map +1 -1
- package/adapters/react/empty-state.js +1 -1
- package/adapters/react/empty-state.js.map +1 -1
- package/adapters/react/empty-state.tsx +2 -2
- package/adapters/react/estimate.d.ts +3 -0
- package/adapters/react/estimate.d.ts.map +1 -1
- package/adapters/react/estimate.js +1 -1
- package/adapters/react/estimate.js.map +1 -1
- package/adapters/react/estimate.tsx +4 -2
- package/adapters/react/file-gallery.d.ts +1 -0
- package/adapters/react/file-gallery.d.ts.map +1 -1
- package/adapters/react/file-gallery.js +1 -1
- package/adapters/react/file-gallery.js.map +1 -1
- package/adapters/react/file-gallery.tsx +2 -1
- package/adapters/react/file-upload.d.ts +2 -0
- package/adapters/react/file-upload.d.ts.map +1 -1
- package/adapters/react/file-upload.js +1 -1
- package/adapters/react/file-upload.js.map +1 -1
- package/adapters/react/file-upload.tsx +3 -2
- package/adapters/react/flip-card.d.ts +1 -0
- package/adapters/react/flip-card.d.ts.map +1 -1
- package/adapters/react/flip-card.js +1 -1
- package/adapters/react/flip-card.js.map +1 -1
- package/adapters/react/flip-card.tsx +2 -2
- package/adapters/react/flow.d.ts +5 -0
- package/adapters/react/flow.d.ts.map +1 -1
- package/adapters/react/flow.js +1 -1
- package/adapters/react/flow.js.map +1 -1
- package/adapters/react/flow.tsx +6 -2
- package/adapters/react/funnel.d.ts +2 -0
- package/adapters/react/funnel.d.ts.map +1 -1
- package/adapters/react/funnel.js +1 -1
- package/adapters/react/funnel.js.map +1 -1
- package/adapters/react/funnel.tsx +3 -2
- package/adapters/react/gantt.d.ts +4 -0
- package/adapters/react/gantt.d.ts.map +1 -1
- package/adapters/react/gantt.js +1 -1
- package/adapters/react/gantt.js.map +1 -1
- package/adapters/react/gantt.tsx +5 -2
- package/adapters/react/grid.d.ts +2 -0
- package/adapters/react/grid.d.ts.map +1 -1
- package/adapters/react/grid.js +1 -1
- package/adapters/react/grid.js.map +1 -1
- package/adapters/react/grid.tsx +3 -2
- package/adapters/react/heatmap.d.ts +1 -0
- package/adapters/react/heatmap.d.ts.map +1 -1
- package/adapters/react/heatmap.js +1 -1
- package/adapters/react/heatmap.js.map +1 -1
- package/adapters/react/heatmap.tsx +2 -2
- package/adapters/react/input.d.ts +5 -0
- package/adapters/react/input.d.ts.map +1 -1
- package/adapters/react/input.js +1 -1
- package/adapters/react/input.js.map +1 -1
- package/adapters/react/input.tsx +6 -2
- package/adapters/react/invoice.d.ts +2 -0
- package/adapters/react/invoice.d.ts.map +1 -1
- package/adapters/react/invoice.js +1 -1
- package/adapters/react/invoice.js.map +1 -1
- package/adapters/react/invoice.tsx +3 -2
- package/adapters/react/kanban.d.ts +2 -0
- package/adapters/react/kanban.d.ts.map +1 -1
- package/adapters/react/kanban.js +1 -1
- package/adapters/react/kanban.js.map +1 -1
- package/adapters/react/kanban.tsx +3 -2
- package/adapters/react/key-value.d.ts +4 -0
- package/adapters/react/key-value.d.ts.map +1 -1
- package/adapters/react/key-value.js +1 -1
- package/adapters/react/key-value.js.map +1 -1
- package/adapters/react/key-value.tsx +5 -2
- package/adapters/react/leaderboard.d.ts +1 -0
- package/adapters/react/leaderboard.d.ts.map +1 -1
- package/adapters/react/leaderboard.js +1 -1
- package/adapters/react/leaderboard.js.map +1 -1
- package/adapters/react/leaderboard.tsx +2 -2
- package/adapters/react/link-preview.d.ts +1 -0
- package/adapters/react/link-preview.d.ts.map +1 -1
- package/adapters/react/link-preview.js +1 -1
- package/adapters/react/link-preview.js.map +1 -1
- package/adapters/react/link-preview.tsx +2 -2
- package/adapters/react/location.d.ts +1 -0
- package/adapters/react/location.d.ts.map +1 -1
- package/adapters/react/location.js +1 -1
- package/adapters/react/location.js.map +1 -1
- package/adapters/react/location.tsx +2 -2
- package/adapters/react/login.d.ts +4 -0
- package/adapters/react/login.d.ts.map +1 -1
- package/adapters/react/login.js +1 -1
- package/adapters/react/login.js.map +1 -1
- package/adapters/react/login.tsx +5 -2
- package/adapters/react/map.d.ts +4 -0
- package/adapters/react/map.d.ts.map +1 -1
- package/adapters/react/map.js +1 -1
- package/adapters/react/map.js.map +1 -1
- package/adapters/react/map.tsx +5 -2
- package/adapters/react/markdown.d.ts +2 -0
- package/adapters/react/markdown.d.ts.map +1 -1
- package/adapters/react/markdown.js +1 -1
- package/adapters/react/markdown.js.map +1 -1
- package/adapters/react/markdown.tsx +3 -2
- package/adapters/react/matchRoute.js +1 -1
- package/adapters/react/menu.d.ts +2 -0
- package/adapters/react/menu.d.ts.map +1 -1
- package/adapters/react/menu.js +1 -1
- package/adapters/react/menu.js.map +1 -1
- package/adapters/react/menu.tsx +3 -2
- package/adapters/react/message-strip.d.ts +1 -0
- package/adapters/react/message-strip.d.ts.map +1 -1
- package/adapters/react/message-strip.js +1 -1
- package/adapters/react/message-strip.js.map +1 -1
- package/adapters/react/message-strip.tsx +2 -2
- package/adapters/react/metric-table.d.ts +2 -0
- package/adapters/react/metric-table.d.ts.map +1 -1
- package/adapters/react/metric-table.js +1 -1
- package/adapters/react/metric-table.js.map +1 -1
- package/adapters/react/metric-table.tsx +3 -2
- package/adapters/react/modal.d.ts +2 -0
- package/adapters/react/modal.d.ts.map +1 -1
- package/adapters/react/modal.js +1 -1
- package/adapters/react/modal.js.map +1 -1
- package/adapters/react/modal.tsx +3 -2
- package/adapters/react/music-player.d.ts +11 -0
- package/adapters/react/music-player.d.ts.map +1 -1
- package/adapters/react/music-player.js +1 -1
- package/adapters/react/music-player.js.map +1 -1
- package/adapters/react/music-player.tsx +12 -2
- package/adapters/react/network-graph.d.ts +4 -0
- package/adapters/react/network-graph.d.ts.map +1 -1
- package/adapters/react/network-graph.js +1 -1
- package/adapters/react/network-graph.js.map +1 -1
- package/adapters/react/network-graph.tsx +5 -2
- package/adapters/react/notification-center.d.ts +4 -0
- package/adapters/react/notification-center.d.ts.map +1 -1
- package/adapters/react/notification-center.js +2 -2
- package/adapters/react/notification-center.js.map +1 -1
- package/adapters/react/notification-center.tsx +6 -3
- package/adapters/react/order-tracker.d.ts +1 -0
- package/adapters/react/order-tracker.d.ts.map +1 -1
- package/adapters/react/order-tracker.js +1 -1
- package/adapters/react/order-tracker.js.map +1 -1
- package/adapters/react/order-tracker.tsx +2 -2
- package/adapters/react/org-chart.d.ts +3 -0
- package/adapters/react/org-chart.d.ts.map +1 -1
- package/adapters/react/org-chart.js +1 -1
- package/adapters/react/org-chart.js.map +1 -1
- package/adapters/react/org-chart.tsx +4 -2
- package/adapters/react/pagination.d.ts +1 -0
- package/adapters/react/pagination.d.ts.map +1 -1
- package/adapters/react/pagination.js +1 -1
- package/adapters/react/pagination.js.map +1 -1
- package/adapters/react/pagination.tsx +2 -2
- package/adapters/react/paint.d.ts +6 -0
- package/adapters/react/paint.d.ts.map +1 -1
- package/adapters/react/paint.js +1 -1
- package/adapters/react/paint.js.map +1 -1
- package/adapters/react/paint.tsx +7 -2
- package/adapters/react/pdf-viewer.d.ts +3 -0
- package/adapters/react/pdf-viewer.d.ts.map +1 -1
- package/adapters/react/pdf-viewer.js +1 -1
- package/adapters/react/pdf-viewer.js.map +1 -1
- package/adapters/react/pdf-viewer.tsx +4 -2
- package/adapters/react/permission-matrix.d.ts +2 -0
- package/adapters/react/permission-matrix.d.ts.map +1 -1
- package/adapters/react/permission-matrix.js +1 -1
- package/adapters/react/permission-matrix.js.map +1 -1
- package/adapters/react/permission-matrix.tsx +3 -2
- package/adapters/react/podcast-player.d.ts +7 -0
- package/adapters/react/podcast-player.d.ts.map +1 -1
- package/adapters/react/podcast-player.js +1 -1
- package/adapters/react/podcast-player.js.map +1 -1
- package/adapters/react/podcast-player.tsx +8 -2
- package/adapters/react/pricing-table.d.ts +1 -0
- package/adapters/react/pricing-table.d.ts.map +1 -1
- package/adapters/react/pricing-table.js +1 -1
- package/adapters/react/pricing-table.js.map +1 -1
- package/adapters/react/pricing-table.tsx +2 -2
- package/adapters/react/product-card.d.ts +5 -0
- package/adapters/react/product-card.d.ts.map +1 -1
- package/adapters/react/product-card.js +1 -1
- package/adapters/react/product-card.js.map +1 -1
- package/adapters/react/product-card.tsx +6 -2
- package/adapters/react/progress-ring.d.ts +1 -0
- package/adapters/react/progress-ring.d.ts.map +1 -1
- package/adapters/react/progress-ring.js +1 -1
- package/adapters/react/progress-ring.js.map +1 -1
- package/adapters/react/progress-ring.tsx +2 -2
- package/adapters/react/progress.d.ts +1 -0
- package/adapters/react/progress.d.ts.map +1 -1
- package/adapters/react/progress.js +1 -1
- package/adapters/react/progress.js.map +1 -1
- package/adapters/react/progress.tsx +2 -2
- package/adapters/react/qr-reader.d.ts +4 -0
- package/adapters/react/qr-reader.d.ts.map +1 -1
- package/adapters/react/qr-reader.js +1 -1
- package/adapters/react/qr-reader.js.map +1 -1
- package/adapters/react/qr-reader.tsx +5 -2
- package/adapters/react/radio.d.ts +1 -0
- package/adapters/react/radio.d.ts.map +1 -1
- package/adapters/react/radio.js +1 -1
- package/adapters/react/radio.js.map +1 -1
- package/adapters/react/radio.tsx +2 -2
- package/adapters/react/range-slider.d.ts +1 -0
- package/adapters/react/range-slider.d.ts.map +1 -1
- package/adapters/react/range-slider.js +1 -1
- package/adapters/react/range-slider.js.map +1 -1
- package/adapters/react/range-slider.tsx +2 -2
- package/adapters/react/rating.d.ts +1 -0
- package/adapters/react/rating.d.ts.map +1 -1
- package/adapters/react/rating.js +1 -1
- package/adapters/react/rating.js.map +1 -1
- package/adapters/react/rating.tsx +2 -2
- package/adapters/react/recipe.d.ts +3 -0
- package/adapters/react/recipe.d.ts.map +1 -1
- package/adapters/react/recipe.js +1 -1
- package/adapters/react/recipe.js.map +1 -1
- package/adapters/react/recipe.tsx +4 -2
- package/adapters/react/sankey.d.ts +3 -0
- package/adapters/react/sankey.d.ts.map +1 -1
- package/adapters/react/sankey.js +1 -1
- package/adapters/react/sankey.js.map +1 -1
- package/adapters/react/sankey.tsx +4 -2
- package/adapters/react/segmented-control.d.ts +1 -0
- package/adapters/react/segmented-control.d.ts.map +1 -1
- package/adapters/react/segmented-control.js +1 -1
- package/adapters/react/segmented-control.js.map +1 -1
- package/adapters/react/segmented-control.tsx +2 -2
- package/adapters/react/select.d.ts +3 -0
- package/adapters/react/select.d.ts.map +1 -1
- package/adapters/react/select.js +1 -1
- package/adapters/react/select.js.map +1 -1
- package/adapters/react/select.tsx +4 -2
- package/adapters/react/slider.d.ts +2 -0
- package/adapters/react/slider.d.ts.map +1 -1
- package/adapters/react/slider.js +1 -1
- package/adapters/react/slider.js.map +1 -1
- package/adapters/react/slider.tsx +3 -2
- package/adapters/react/sortable.d.ts +3 -0
- package/adapters/react/sortable.d.ts.map +1 -1
- package/adapters/react/sortable.js +1 -1
- package/adapters/react/sortable.js.map +1 -1
- package/adapters/react/sortable.tsx +4 -2
- package/adapters/react/split-button.d.ts +2 -0
- package/adapters/react/split-button.d.ts.map +1 -1
- package/adapters/react/split-button.js +1 -1
- package/adapters/react/split-button.js.map +1 -1
- package/adapters/react/split-button.tsx +3 -2
- package/adapters/react/split-pane.d.ts +1 -0
- package/adapters/react/split-pane.d.ts.map +1 -1
- package/adapters/react/split-pane.js +1 -1
- package/adapters/react/split-pane.js.map +1 -1
- package/adapters/react/split-pane.tsx +2 -2
- package/adapters/react/spotlight.d.ts +4 -0
- package/adapters/react/spotlight.d.ts.map +1 -1
- package/adapters/react/spotlight.js +1 -1
- package/adapters/react/spotlight.js.map +1 -1
- package/adapters/react/spotlight.tsx +5 -2
- package/adapters/react/spreadsheet.d.ts +4 -0
- package/adapters/react/spreadsheet.d.ts.map +1 -1
- package/adapters/react/spreadsheet.js +1 -1
- package/adapters/react/spreadsheet.js.map +1 -1
- package/adapters/react/spreadsheet.tsx +5 -2
- package/adapters/react/stat-group.d.ts +1 -0
- package/adapters/react/stat-group.d.ts.map +1 -1
- package/adapters/react/stat-group.js +1 -1
- package/adapters/react/stat-group.js.map +1 -1
- package/adapters/react/stat-group.tsx +2 -2
- package/adapters/react/step-input.d.ts +1 -0
- package/adapters/react/step-input.d.ts.map +1 -1
- package/adapters/react/step-input.js +1 -1
- package/adapters/react/step-input.js.map +1 -1
- package/adapters/react/step-input.tsx +2 -2
- package/adapters/react/switch.d.ts +1 -0
- package/adapters/react/switch.d.ts.map +1 -1
- package/adapters/react/switch.js +1 -1
- package/adapters/react/switch.js.map +1 -1
- package/adapters/react/switch.tsx +2 -2
- package/adapters/react/table.d.ts +11 -0
- package/adapters/react/table.d.ts.map +1 -1
- package/adapters/react/table.js +1 -1
- package/adapters/react/table.js.map +1 -1
- package/adapters/react/table.tsx +12 -2
- package/adapters/react/tabs.d.ts +1 -0
- package/adapters/react/tabs.d.ts.map +1 -1
- package/adapters/react/tabs.js +1 -1
- package/adapters/react/tabs.js.map +1 -1
- package/adapters/react/tabs.tsx +2 -2
- package/adapters/react/tag-input.d.ts +3 -0
- package/adapters/react/tag-input.d.ts.map +1 -1
- package/adapters/react/tag-input.js +1 -1
- package/adapters/react/tag-input.js.map +1 -1
- package/adapters/react/tag-input.tsx +4 -2
- package/adapters/react/tag.d.ts +1 -0
- package/adapters/react/tag.d.ts.map +1 -1
- package/adapters/react/tag.js +1 -1
- package/adapters/react/tag.js.map +1 -1
- package/adapters/react/tag.tsx +2 -2
- package/adapters/react/terminal.d.ts +3 -0
- package/adapters/react/terminal.d.ts.map +1 -1
- package/adapters/react/terminal.js +1 -1
- package/adapters/react/terminal.js.map +1 -1
- package/adapters/react/terminal.tsx +4 -2
- package/adapters/react/textarea.d.ts +4 -0
- package/adapters/react/textarea.d.ts.map +1 -1
- package/adapters/react/textarea.js +1 -1
- package/adapters/react/textarea.js.map +1 -1
- package/adapters/react/textarea.tsx +5 -2
- package/adapters/react/time-picker.d.ts +6 -0
- package/adapters/react/time-picker.d.ts.map +1 -1
- package/adapters/react/time-picker.js +1 -1
- package/adapters/react/time-picker.js.map +1 -1
- package/adapters/react/time-picker.tsx +7 -2
- package/adapters/react/time-range-picker.d.ts +3 -0
- package/adapters/react/time-range-picker.d.ts.map +1 -1
- package/adapters/react/time-range-picker.js +1 -1
- package/adapters/react/time-range-picker.js.map +1 -1
- package/adapters/react/time-range-picker.tsx +4 -2
- package/adapters/react/timer.d.ts +4 -0
- package/adapters/react/timer.d.ts.map +1 -1
- package/adapters/react/timer.js +1 -1
- package/adapters/react/timer.js.map +1 -1
- package/adapters/react/timer.tsx +5 -2
- package/adapters/react/tree.d.ts +5 -0
- package/adapters/react/tree.d.ts.map +1 -1
- package/adapters/react/tree.js +1 -1
- package/adapters/react/tree.js.map +1 -1
- package/adapters/react/tree.tsx +6 -2
- package/adapters/react/treemap.d.ts +3 -0
- package/adapters/react/treemap.d.ts.map +1 -1
- package/adapters/react/treemap.js +1 -1
- package/adapters/react/treemap.js.map +1 -1
- package/adapters/react/treemap.tsx +4 -2
- package/adapters/react/useRequestHandler.js +1 -1
- package/adapters/react/user-card.d.ts +2 -0
- package/adapters/react/user-card.d.ts.map +1 -1
- package/adapters/react/user-card.js +1 -1
- package/adapters/react/user-card.js.map +1 -1
- package/adapters/react/user-card.tsx +3 -2
- package/adapters/react/video-player.d.ts +6 -0
- package/adapters/react/video-player.d.ts.map +1 -1
- package/adapters/react/video-player.js +1 -1
- package/adapters/react/video-player.js.map +1 -1
- package/adapters/react/video-player.tsx +7 -2
- package/adapters/react/waterfall.d.ts +2 -0
- package/adapters/react/waterfall.d.ts.map +1 -1
- package/adapters/react/waterfall.js +1 -1
- package/adapters/react/waterfall.js.map +1 -1
- package/adapters/react/waterfall.tsx +3 -2
- package/adapters/react/work-order.d.ts +3 -0
- package/adapters/react/work-order.d.ts.map +1 -1
- package/adapters/react/work-order.js +1 -1
- package/adapters/react/work-order.js.map +1 -1
- package/adapters/react/work-order.tsx +4 -2
- package/dist/cdn/accordion/snice-accordion.js +1 -1
- package/dist/cdn/accordion/snice-accordion.min.js +1 -1
- package/dist/cdn/action-bar/snice-action-bar.js +1 -1
- package/dist/cdn/action-bar/snice-action-bar.min.js +1 -1
- package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
- package/dist/cdn/activity-feed/snice-activity-feed.min.js +1 -1
- package/dist/cdn/alert/README.md +2 -2
- package/dist/cdn/alert/snice-alert.js +7 -2
- package/dist/cdn/alert/snice-alert.js.map +1 -1
- package/dist/cdn/alert/snice-alert.min.js +4 -4
- package/dist/cdn/alert/snice-alert.min.js.map +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.js +2 -2
- package/dist/cdn/app-tiles/snice-app-tiles.js.map +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.min.js +2 -2
- package/dist/cdn/app-tiles/snice-app-tiles.min.js.map +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.min.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
- package/dist/cdn/availability/snice-availability.js +1 -1
- package/dist/cdn/availability/snice-availability.min.js +1 -1
- package/dist/cdn/avatar/snice-avatar.js +1 -1
- package/dist/cdn/avatar/snice-avatar.min.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.min.js +1 -1
- package/dist/cdn/badge/snice-badge.js +1 -1
- package/dist/cdn/badge/snice-badge.min.js +1 -1
- package/dist/cdn/banner/README.md +2 -2
- package/dist/cdn/banner/snice-banner.js +6 -1
- package/dist/cdn/banner/snice-banner.js.map +1 -1
- package/dist/cdn/banner/snice-banner.min.js +4 -4
- package/dist/cdn/banner/snice-banner.min.js.map +1 -1
- package/dist/cdn/binpack/snice-binpack.js +1 -1
- package/dist/cdn/binpack/snice-binpack.min.js +1 -1
- package/dist/cdn/book/snice-book.js +1 -1
- package/dist/cdn/book/snice-book.min.js +1 -1
- package/dist/cdn/booking/snice-booking.js +1 -1
- package/dist/cdn/booking/snice-booking.min.js +1 -1
- package/dist/cdn/breadcrumbs/README.md +2 -2
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +6 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.js.map +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +3 -3
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js.map +1 -1
- package/dist/cdn/button/README.md +1 -1
- package/dist/cdn/button/snice-button.js +6 -1
- package/dist/cdn/button/snice-button.js.map +1 -1
- package/dist/cdn/button/snice-button.min.js +6 -6
- package/dist/cdn/button/snice-button.min.js.map +1 -1
- package/dist/cdn/calendar/snice-calendar.js +1 -1
- package/dist/cdn/calendar/snice-calendar.min.js +1 -1
- package/dist/cdn/camera/snice-camera.js +1 -1
- package/dist/cdn/camera/snice-camera.min.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
- package/dist/cdn/card/snice-card.js +1 -1
- package/dist/cdn/card/snice-card.min.js +1 -1
- package/dist/cdn/carousel/snice-carousel.js +1 -1
- package/dist/cdn/carousel/snice-carousel.min.js +1 -1
- package/dist/cdn/cart/snice-cart.js +1 -1
- package/dist/cdn/cart/snice-cart.min.js +1 -1
- package/dist/cdn/chart/snice-chart.js +1 -1
- package/dist/cdn/chart/snice-chart.min.js +1 -1
- package/dist/cdn/chat/README.md +1 -1
- package/dist/cdn/chat/snice-chat.js +6 -1
- package/dist/cdn/chat/snice-chat.js.map +1 -1
- package/dist/cdn/chat/snice-chat.min.js +4 -4
- package/dist/cdn/chat/snice-chat.min.js.map +1 -1
- package/dist/cdn/checkbox/snice-checkbox.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
- package/dist/cdn/chip/README.md +2 -2
- package/dist/cdn/chip/snice-chip.js +7 -1
- package/dist/cdn/chip/snice-chip.js.map +1 -1
- package/dist/cdn/chip/snice-chip.min.js +4 -3
- package/dist/cdn/chip/snice-chip.min.js.map +1 -1
- package/dist/cdn/code-block/snice-code-block.js +1 -1
- package/dist/cdn/code-block/snice-code-block.min.js +1 -1
- package/dist/cdn/color-display/snice-color-display.js +1 -1
- package/dist/cdn/color-display/snice-color-display.min.js +1 -1
- package/dist/cdn/color-picker/README.md +1 -1
- package/dist/cdn/color-picker/snice-color-picker.js +2 -2
- package/dist/cdn/color-picker/snice-color-picker.js.map +1 -1
- package/dist/cdn/color-picker/snice-color-picker.min.js +2 -2
- package/dist/cdn/color-picker/snice-color-picker.min.js.map +1 -1
- package/dist/cdn/command-palette/snice-command-palette.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
- package/dist/cdn/comments/snice-comments.js +1 -1
- package/dist/cdn/comments/snice-comments.min.js +1 -1
- package/dist/cdn/countdown/snice-countdown.js +1 -1
- package/dist/cdn/countdown/snice-countdown.min.js +1 -1
- package/dist/cdn/cropper/snice-cropper.js +1 -1
- package/dist/cdn/cropper/snice-cropper.min.js +1 -1
- package/dist/cdn/data-card/snice-data-card.js +1 -1
- package/dist/cdn/data-card/snice-data-card.min.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +1 -1
- package/dist/cdn/diff/snice-diff.js +1 -1
- package/dist/cdn/diff/snice-diff.min.js +1 -1
- package/dist/cdn/divider/snice-divider.js +1 -1
- package/dist/cdn/divider/snice-divider.min.js +1 -1
- package/dist/cdn/doc/snice-doc.js +1 -1
- package/dist/cdn/doc/snice-doc.min.js +1 -1
- package/dist/cdn/draw/snice-draw.js +1 -1
- package/dist/cdn/draw/snice-draw.min.js +1 -1
- package/dist/cdn/drawer/snice-drawer.js +1 -1
- package/dist/cdn/drawer/snice-drawer.min.js +1 -1
- package/dist/cdn/empty-state/README.md +1 -1
- package/dist/cdn/empty-state/snice-empty-state.js +6 -1
- package/dist/cdn/empty-state/snice-empty-state.js.map +1 -1
- package/dist/cdn/empty-state/snice-empty-state.min.js +4 -4
- package/dist/cdn/empty-state/snice-empty-state.min.js.map +1 -1
- package/dist/cdn/estimate/snice-estimate.js +1 -1
- package/dist/cdn/estimate/snice-estimate.min.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
- package/dist/cdn/flow/snice-flow.js +1 -1
- package/dist/cdn/flow/snice-flow.min.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.min.js +1 -1
- package/dist/cdn/funnel/snice-funnel.js +1 -1
- package/dist/cdn/funnel/snice-funnel.min.js +1 -1
- package/dist/cdn/gantt/snice-gantt.js +1 -1
- package/dist/cdn/gantt/snice-gantt.min.js +1 -1
- package/dist/cdn/gauge/snice-gauge.js +1 -1
- package/dist/cdn/gauge/snice-gauge.min.js +1 -1
- package/dist/cdn/grid/snice-grid.js +1 -1
- package/dist/cdn/grid/snice-grid.min.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
- package/dist/cdn/image/snice-image.js +1 -1
- package/dist/cdn/image/snice-image.min.js +1 -1
- package/dist/cdn/input/README.md +2 -2
- package/dist/cdn/input/snice-input.js +6 -1
- package/dist/cdn/input/snice-input.js.map +1 -1
- package/dist/cdn/input/snice-input.min.js +2 -2
- package/dist/cdn/input/snice-input.min.js.map +1 -1
- package/dist/cdn/invoice/snice-invoice.js +1 -1
- package/dist/cdn/invoice/snice-invoice.min.js +1 -1
- package/dist/cdn/kanban/snice-kanban.js +1 -1
- package/dist/cdn/kanban/snice-kanban.min.js +1 -1
- package/dist/cdn/key-value/snice-key-value.js +1 -1
- package/dist/cdn/key-value/snice-key-value.min.js +1 -1
- package/dist/cdn/kpi/snice-kpi.js +1 -1
- package/dist/cdn/kpi/snice-kpi.min.js +1 -1
- package/dist/cdn/layout/snice-layout.js +1 -1
- package/dist/cdn/layout/snice-layout.min.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.min.js +1 -1
- package/dist/cdn/link/snice-link.js +1 -1
- package/dist/cdn/link/snice-link.min.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
- package/dist/cdn/list/README.md +1 -1
- package/dist/cdn/list/snice-list.js +6 -1
- package/dist/cdn/list/snice-list.js.map +1 -1
- package/dist/cdn/list/snice-list.min.js +5 -5
- package/dist/cdn/list/snice-list.min.js.map +1 -1
- package/dist/cdn/location/README.md +2 -2
- package/dist/cdn/location/snice-location.js +6 -1
- package/dist/cdn/location/snice-location.js.map +1 -1
- package/dist/cdn/location/snice-location.min.js +4 -4
- package/dist/cdn/location/snice-location.min.js.map +1 -1
- package/dist/cdn/login/README.md +1 -1
- package/dist/cdn/login/snice-login.js +7 -2
- package/dist/cdn/login/snice-login.js.map +1 -1
- package/dist/cdn/login/snice-login.min.js +6 -6
- package/dist/cdn/login/snice-login.min.js.map +1 -1
- package/dist/cdn/map/snice-map.js +1 -1
- package/dist/cdn/map/snice-map.min.js +1 -1
- package/dist/cdn/markdown/snice-markdown.js +1 -1
- package/dist/cdn/markdown/snice-markdown.min.js +1 -1
- package/dist/cdn/masonry/snice-masonry.js +1 -1
- package/dist/cdn/masonry/snice-masonry.min.js +1 -1
- package/dist/cdn/menu/snice-menu.js +1 -1
- package/dist/cdn/menu/snice-menu.min.js +1 -1
- package/dist/cdn/message-strip/README.md +2 -2
- package/dist/cdn/message-strip/snice-message-strip.js +6 -1
- package/dist/cdn/message-strip/snice-message-strip.js.map +1 -1
- package/dist/cdn/message-strip/snice-message-strip.min.js +3 -3
- package/dist/cdn/message-strip/snice-message-strip.min.js.map +1 -1
- package/dist/cdn/metric-table/snice-metric-table.js +1 -1
- package/dist/cdn/metric-table/snice-metric-table.min.js +1 -1
- package/dist/cdn/modal/snice-modal.js +1 -1
- package/dist/cdn/modal/snice-modal.min.js +1 -1
- package/dist/cdn/music-player/snice-music-player.js +1 -1
- package/dist/cdn/music-player/snice-music-player.min.js +1 -1
- package/dist/cdn/nav/snice-nav.js +1 -1
- package/dist/cdn/nav/snice-nav.min.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
- package/dist/cdn/notification-center/README.md +2 -2
- package/dist/cdn/notification-center/snice-notification-center.js +15 -4
- package/dist/cdn/notification-center/snice-notification-center.js.map +1 -1
- package/dist/cdn/notification-center/snice-notification-center.min.js +5 -5
- package/dist/cdn/notification-center/snice-notification-center.min.js.map +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.min.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
- package/dist/cdn/pagination/snice-pagination.js +1 -1
- package/dist/cdn/pagination/snice-pagination.min.js +1 -1
- package/dist/cdn/paint/snice-paint.js +1 -1
- package/dist/cdn/paint/snice-paint.min.js +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
- package/dist/cdn/product-card/snice-product-card.js +1 -1
- package/dist/cdn/product-card/snice-product-card.min.js +1 -1
- package/dist/cdn/progress/snice-progress.js +1 -1
- package/dist/cdn/progress/snice-progress.min.js +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.min.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
- package/dist/cdn/qr-reader/README.md +2 -2
- package/dist/cdn/qr-reader/snice-qr-reader.js +12 -12
- package/dist/cdn/qr-reader/snice-qr-reader.js.map +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.min.js +12 -12
- package/dist/cdn/qr-reader/snice-qr-reader.min.js.map +1 -1
- package/dist/cdn/radio/snice-radio.js +1 -1
- package/dist/cdn/radio/snice-radio.min.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.min.js +1 -1
- package/dist/cdn/rating/snice-rating.js +1 -1
- package/dist/cdn/rating/snice-rating.min.js +1 -1
- package/dist/cdn/receipt/snice-receipt.js +1 -1
- package/dist/cdn/receipt/snice-receipt.min.js +1 -1
- package/dist/cdn/recipe/snice-recipe.js +1 -1
- package/dist/cdn/recipe/snice-recipe.min.js +1 -1
- package/dist/cdn/runtime/README.md +2 -2
- package/dist/cdn/runtime/snice-runtime.esm.js +100 -31
- package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.min.js +8 -8
- package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.js +100 -31
- package/dist/cdn/runtime/snice-runtime.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js +8 -8
- package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
- package/dist/cdn/sankey/snice-sankey.js +1 -1
- package/dist/cdn/sankey/snice-sankey.min.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.min.js +1 -1
- package/dist/cdn/select/snice-select.js +1 -1
- package/dist/cdn/select/snice-select.min.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
- package/dist/cdn/slider/snice-slider.js +1 -1
- package/dist/cdn/slider/snice-slider.min.js +1 -1
- package/dist/cdn/sortable/snice-sortable.js +1 -1
- package/dist/cdn/sortable/snice-sortable.min.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
- package/dist/cdn/spinner/snice-spinner.js +1 -1
- package/dist/cdn/spinner/snice-spinner.min.js +1 -1
- package/dist/cdn/split-button/README.md +2 -2
- package/dist/cdn/split-button/snice-split-button.js +6 -1
- package/dist/cdn/split-button/snice-split-button.js.map +1 -1
- package/dist/cdn/split-button/snice-split-button.min.js +2 -2
- package/dist/cdn/split-button/snice-split-button.min.js.map +1 -1
- package/dist/cdn/split-pane/snice-split-pane.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
- package/dist/cdn/spotlight/README.md +2 -2
- package/dist/cdn/spotlight/snice-spotlight.js +12 -9
- package/dist/cdn/spotlight/snice-spotlight.js.map +1 -1
- package/dist/cdn/spotlight/snice-spotlight.min.js +2 -2
- package/dist/cdn/spotlight/snice-spotlight.min.js.map +1 -1
- package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
- package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.min.js +1 -1
- package/dist/cdn/step-input/snice-step-input.js +1 -1
- package/dist/cdn/step-input/snice-step-input.min.js +1 -1
- package/dist/cdn/stepper/snice-stepper.js +1 -1
- package/dist/cdn/stepper/snice-stepper.min.js +1 -1
- package/dist/cdn/switch/snice-switch.js +1 -1
- package/dist/cdn/switch/snice-switch.min.js +1 -1
- package/dist/cdn/table/README.md +2 -2
- package/dist/cdn/table/snice-table.js +6 -1
- package/dist/cdn/table/snice-table.js.map +1 -1
- package/dist/cdn/table/snice-table.min.js +2 -2
- package/dist/cdn/table/snice-table.min.js.map +1 -1
- package/dist/cdn/tabs/snice-tabs.js +1 -1
- package/dist/cdn/tabs/snice-tabs.min.js +1 -1
- package/dist/cdn/tag/snice-tag.js +1 -1
- package/dist/cdn/tag/snice-tag.min.js +1 -1
- package/dist/cdn/tag-input/snice-tag-input.js +1 -1
- package/dist/cdn/tag-input/snice-tag-input.min.js +1 -1
- package/dist/cdn/terminal/snice-terminal.js +1 -1
- package/dist/cdn/terminal/snice-terminal.min.js +1 -1
- package/dist/cdn/testimonial/snice-testimonial.js +1 -1
- package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
- package/dist/cdn/textarea/snice-textarea.js +1 -1
- package/dist/cdn/textarea/snice-textarea.min.js +1 -1
- package/dist/cdn/time-picker/snice-time-picker.js +1 -1
- package/dist/cdn/time-picker/snice-time-picker.min.js +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
- package/dist/cdn/timeline/snice-timeline.js +1 -1
- package/dist/cdn/timeline/snice-timeline.min.js +1 -1
- package/dist/cdn/timer/snice-timer.js +1 -1
- package/dist/cdn/timer/snice-timer.min.js +1 -1
- package/dist/cdn/toast/snice-toast.js +1 -1
- package/dist/cdn/toast/snice-toast.min.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
- package/dist/cdn/tree/snice-tree.js +1 -1
- package/dist/cdn/tree/snice-tree.min.js +1 -1
- package/dist/cdn/treemap/snice-treemap.js +1 -1
- package/dist/cdn/treemap/snice-treemap.min.js +1 -1
- package/dist/cdn/user-card/snice-user-card.js +1 -1
- package/dist/cdn/user-card/snice-user-card.min.js +1 -1
- package/dist/cdn/video-player/snice-video-player.js +1 -1
- package/dist/cdn/video-player/snice-video-player.min.js +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
- package/dist/cdn/waterfall/snice-waterfall.js +1 -1
- package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
- package/dist/cdn/weather/snice-weather.js +1 -1
- package/dist/cdn/weather/snice-weather.min.js +1 -1
- package/dist/cdn/work-order/snice-work-order.js +1 -1
- package/dist/cdn/work-order/snice-work-order.min.js +1 -1
- package/dist/components/alert/snice-alert.js +1 -1
- package/dist/components/alert/snice-alert.js.map +1 -1
- package/dist/components/app-tiles/snice-app-tiles.js +1 -1
- package/dist/components/chip/snice-chip.js +1 -0
- package/dist/components/chip/snice-chip.js.map +1 -1
- package/dist/components/color-picker/snice-color-picker.js +1 -1
- package/dist/components/notification-center/snice-notification-center.d.ts +1 -0
- package/dist/components/notification-center/snice-notification-center.js +9 -3
- package/dist/components/notification-center/snice-notification-center.js.map +1 -1
- package/dist/components/notification-center/snice-notification-center.types.d.ts +2 -0
- package/dist/components/qr-reader/snice-qr-reader.js +11 -11
- package/dist/components/qr-reader/snice-qr-reader.js.map +1 -1
- package/dist/components/spotlight/snice-spotlight.js +11 -8
- package/dist/components/spotlight/snice-spotlight.js.map +1 -1
- package/dist/components/utils.js +5 -0
- package/dist/components/utils.js.map +1 -1
- package/dist/index.cjs +97 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +97 -28
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +97 -28
- package/dist/index.iife.js.map +1 -1
- package/dist/react/SniceProvider.js +1 -1
- package/dist/react/SniceRouter.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/matchRoute.js +1 -1
- package/dist/react/useRequestHandler.js +1 -1
- package/dist/symbols.cjs +3 -1
- package/dist/symbols.cjs.map +1 -1
- package/dist/symbols.d.ts +1 -0
- package/dist/symbols.esm.js +3 -2
- package/dist/symbols.esm.js.map +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/STORYBOOK.md +178 -0
- package/docs/ai/DEVELOPMENT.md +1 -0
- package/docs/ai/STORYBOOK.md +66 -0
- package/docs/ai/patterns.md +46 -0
- package/docs/elements.md +127 -0
- package/package.json +9 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snice-runtime.js","sources":["../../index.esm.js","../../symbols.esm.js","../../transitions.esm.js"],"sourcesContent":["/*!\n * snice v4.34.1\n * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.\n * (c) 2024\n * Released under the MIT License.\n */\n// Global namespace for Snice framework\n// Ensures all registries and symbols are shared across different JS files/modules\n// Initialize the global Snice namespace on globalThis\n// This ensures all module instances share the same registry\nif (!globalThis.snice) {\n globalThis.snice = {\n controllerRegistry: new Map(),\n controllerIdCounter: 0\n };\n}\n// Export direct reference to globalThis.snice\nconst snice = globalThis.snice;\n// Helper function to get or create a global symbol\n// Symbol.for() already guarantees global uniqueness, no need for a Map cache\nfunction getSymbol(name) {\n return Symbol.for(`snice:${name}`);\n}\n\n// Central file for all symbols used in the framework\n// All symbols are stored globally to ensure consistency across modules\nconst IS_CONTROLLER_CLASS = getSymbol('is-controller-class');\nconst IS_CONTROLLER_INSTANCE = getSymbol('is-controller-instance');\nconst IS_ELEMENT_CLASS = getSymbol('is-element-class');\nconst CHANNEL_HANDLERS = getSymbol('channel-handlers');\n// Internal element state symbols\nconst READY_PROMISE = getSymbol('ready-promise');\nconst READY_RESOLVE = getSymbol('ready-resolve');\nconst CONTROLLER = getSymbol('controller');\nconst INITIALIZED = getSymbol('initialized');\n// Controller symbols\nconst CONTROLLER_KEY = getSymbol('controller-key');\nconst CONTROLLER_NAME_KEY = getSymbol('controller-name');\nconst CONTROLLER_ID = getSymbol('controller-id');\nconst CONTROLLER_OPERATIONS = getSymbol('controller-operations');\nconst NATIVE_CONTROLLER = getSymbol('native-controller');\n// Cleanup symbol - holds an object with all cleanup arrays\nconst CLEANUP = getSymbol('cleanup');\n// Property symbols\nconst PROPERTIES = getSymbol('properties');\nconst PROPERTY_VALUES = getSymbol('property-values');\nconst PRE_INIT_PROPERTY_VALUES = getSymbol('pre-init-property-values');\nconst PROPERTIES_INITIALIZED = getSymbol('properties-initialized');\nconst PROPERTY_WATCHERS = getSymbol('property-watchers');\nconst EXPLICITLY_SET_PROPERTIES = getSymbol('explicitly-set-properties');\n// Router context symbol\nconst ROUTER_CONTEXT = getSymbol('router-context');\nconst PAGE_TRANSITION = getSymbol('page-transition');\nconst CREATED_AT = getSymbol('created-at');\n// Lifecycle symbols\nconst READY_HANDLERS = getSymbol('ready-handlers');\nconst DISPOSE_HANDLERS = getSymbol('dispose-handlers');\nconst MOVED_HANDLERS = getSymbol('moved-handlers');\nconst ADOPTED_HANDLERS = getSymbol('adopted-handlers');\n// Observer symbols\nconst OBSERVERS = getSymbol('observers');\n// Property setter flag (prevents attributeChangedCallback re-triggering watchers)\nconst SETTING_FROM_PROPERTY = getSymbol('setting-from-property');\n// Lifecycle callback timers\nconst MOVED_TIMERS = getSymbol('moved-timers');\nconst ADOPTED_TIMERS = getSymbol('adopted-timers');\n// Dispatch timing symbols\nconst DISPATCH_TIMERS = getSymbol('dispatch-timers');\n// Render symbols (v3.0.0)\nconst RENDER_METHOD = getSymbol('render-method');\nconst RENDER_OPTIONS = getSymbol('render-options');\nconst RENDER_INSTANCE = getSymbol('render-instance');\nconst RENDER_TIMERS = getSymbol('render-timers');\nconst RENDER_CALLBACKS = getSymbol('render-callbacks');\nconst STYLES_METHOD = getSymbol('styles-method');\nconst STYLES_APPLIED = getSymbol('styles-applied');\n// Navigation context symbols\nconst CONTEXT_HANDLER = getSymbol('context-handler');\nconst NAVIGATION_CONTEXT_INSTANCE = getSymbol('navigation-context-instance');\nconst REGISTERED_ELEMENTS = getSymbol('registered-elements');\nconst IS_UPDATING = getSymbol('is-updating');\nconst CONTEXT_REGISTER = getSymbol('context-register');\nconst CONTEXT_UNREGISTER = getSymbol('context-unregister');\nconst CONTEXT_NOTIFY_ELEMENT = getSymbol('context-notify-element');\nconst CONTEXT_TIMER = getSymbol('context-timer');\nconst CONTEXT_CALLED = getSymbol('context-called');\nconst CONTEXT_UPDATE = getSymbol('context-update');\n\n/**\n * SimpleArray type for arrays that can be safely reflected to attributes\n * Supports arrays of: string, number, boolean\n * Uses full-width comma (,) as separator to avoid conflicts\n * Strings cannot contain the full-width comma character\n */\nclass SimpleArray {\n static { this.SEPARATOR = ','; } // U+FF0C Full-width comma\n /**\n * Serialize array to string for attribute storage\n */\n static serialize(arr) {\n if (!Array.isArray(arr))\n return '';\n return arr.map(item => {\n if (typeof item === 'string') {\n // Validate string doesn't contain our separator\n if (item.includes(SimpleArray.SEPARATOR)) {\n throw new Error(`SimpleArray strings cannot contain the character \"${SimpleArray.SEPARATOR}\" (U+FF0C)`);\n }\n return item;\n }\n else if (typeof item === 'number' || typeof item === 'boolean') {\n return String(item);\n }\n else {\n throw new Error(`SimpleArray only supports string, number, and boolean types. Got: ${typeof item}`);\n }\n }).join(SimpleArray.SEPARATOR);\n }\n /**\n * Parse string from attribute back to array\n */\n static parse(str) {\n if (str === null || str === undefined)\n return [];\n // Empty string should not be parsed as containing an empty string\n // since empty arrays don't get reflected (handled by the reflection logic)\n if (str === '')\n return [];\n return str.split(SimpleArray.SEPARATOR).map(item => {\n // Try to parse as number\n if (/^-?\\d+\\.?\\d*$/.test(item)) {\n const num = Number(item);\n if (!isNaN(num))\n return num;\n }\n // Parse as boolean\n if (item === 'true')\n return true;\n if (item === 'false')\n return false;\n // Default to string\n return item;\n });\n }\n}\n\nvar _a, _b, _c;\n// Symbol for storing the Set of elements\n// Use Symbol.for() to ensure symbols are shared across multiple Snice instances\nconst REGISTERED_ELEMENTS_SET = Symbol.for('snice:registered-elements-set');\n// Counter for generating unique context IDs\nlet contextIdCounter = 0;\n/**\n * Represents the bundled router state that can notify registered elements of changes\n */\nclass Context {\n constructor(context = {}, placards = [], currentRoute = '', routeParams = {}, fetcher) {\n this[_a] = new WeakMap();\n this[_b] = new Set();\n this[_c] = false;\n this.id = contextIdCounter++;\n this.application = context;\n this.navigation = {\n placards,\n route: currentRoute,\n params: routeParams\n };\n // Initialize fetch with middleware support or fallback to native fetch\n if (fetcher && typeof fetcher.create === 'function') {\n this.fetch = fetcher.create(this);\n }\n else if (typeof fetch === 'function') {\n this.fetch = fetch.bind(this);\n }\n else {\n throw new Error('No fetch implementation available');\n }\n }\n /**\n * Register an element to receive context updates\n * @internal Used by @context decorator\n */\n [(_a = REGISTERED_ELEMENTS, _b = REGISTERED_ELEMENTS_SET, _c = IS_UPDATING, CONTEXT_REGISTER)](element, methodName) {\n this[REGISTERED_ELEMENTS].set(element, methodName);\n this[REGISTERED_ELEMENTS_SET].add(element);\n }\n /**\n * Unregister an element from receiving context updates\n * @internal Used by @context decorator cleanup\n */\n [CONTEXT_UNREGISTER](element) {\n this[REGISTERED_ELEMENTS].delete(element);\n this[REGISTERED_ELEMENTS_SET].delete(element);\n }\n /**\n * Update the context and notify all registered elements\n * Prevents infinite loops by tracking update state\n * @internal Used by Router during navigation\n */\n [CONTEXT_UPDATE](context, placards, currentRoute, routeParams) {\n this.application = context;\n this.navigation.placards = placards;\n this.navigation.route = currentRoute;\n this.navigation.params = routeParams;\n this.notify();\n }\n /**\n * Signal all @context() subscribers to re-read context\n * Does not modify any state — just notifies listeners with current values\n */\n update() {\n this.notify();\n }\n notify() {\n // Prevent infinite loops\n if (this[IS_UPDATING]) {\n return;\n }\n this[IS_UPDATING] = true;\n // Notify all registered elements by calling their methods directly\n const elementsSet = this[REGISTERED_ELEMENTS_SET];\n const elementsMap = this[REGISTERED_ELEMENTS];\n for (const element of elementsSet) {\n const methodName = elementsMap.get(element);\n if (methodName && typeof element[methodName] === 'function') {\n try {\n element[methodName](this);\n }\n catch (error) {\n // Log error but continue notifying other elements\n console.error(`Error calling @context method ${methodName}:`, error);\n }\n }\n }\n this[IS_UPDATING] = false;\n }\n /**\n * Notify a specific element of the current context state\n * @internal Used by @context decorator\n */\n [CONTEXT_NOTIFY_ELEMENT](element) {\n const methodName = this[REGISTERED_ELEMENTS].get(element);\n if (methodName && typeof element[methodName] === 'function') {\n element[methodName](this);\n }\n }\n}\n\n/**\n * Detects the type constructor from an initial value\n * @param initialValue - The default value assigned to a property field (e.g., `name = \"default\"` -> \"default\")\n * @returns The constructor function (String, Number, Boolean, etc.) or undefined if type can't be determined\n */\nfunction detectType(initialValue) {\n if (initialValue === null || initialValue === undefined) {\n return undefined;\n }\n if (typeof initialValue === 'string') {\n return String;\n }\n if (typeof initialValue === 'number') {\n return Number;\n }\n if (typeof initialValue === 'boolean') {\n return Boolean;\n }\n if (initialValue instanceof Date) {\n return Date;\n }\n if (typeof initialValue === 'bigint') {\n return BigInt;\n }\n if (Array.isArray(initialValue)) {\n return Array;\n }\n return undefined;\n}\n/**\n * Parses an attribute value based on the property type\n * @param attributeValue - The raw string value from the HTML attribute (e.g., \"123\", \"true\", \"hello\")\n * @param propertyOptions - The options from @property decorator (contains explicit type, attribute name, etc.)\n * @param currentValue - The current stored value of the property (used for type inference when no explicit type)\n * @param initialValue - The default value assigned to the property field (used for type detection as fallback)\n * @returns The parsed value in the correct JavaScript type\n */\nfunction parseAttributeValue(attributeValue, propertyOptions, currentValue, initialValue) {\n // Use explicit type or detect from initial value\n const typeToUse = propertyOptions.type || detectType(initialValue);\n switch (typeToUse) {\n case Boolean:\n // Boolean semantics per user specification:\n // - No attribute = false\n // - String \"false\" = false\n // - String \"true\" = true\n // - Empty string = true (attribute exists like <element bool-attr>)\n // - Any other value = true\n if (attributeValue === null)\n return false; // No attribute\n if (attributeValue === 'false')\n return false; // String \"false\"\n // All other cases (including empty string) = true (attribute exists)\n return true;\n case Number:\n return attributeValue !== null ? Number(attributeValue) : null;\n case String:\n return attributeValue;\n case Date:\n return attributeValue ? new Date(attributeValue) : null;\n case BigInt:\n if (attributeValue && attributeValue.endsWith('n')) {\n return BigInt(attributeValue.slice(0, -1));\n }\n else {\n return attributeValue ? BigInt(attributeValue) : null;\n }\n case SimpleArray:\n return SimpleArray.parse(attributeValue);\n case Array:\n try {\n return attributeValue ? JSON.parse(attributeValue) : [];\n }\n catch {\n return [];\n }\n case Object:\n try {\n return attributeValue ? JSON.parse(attributeValue) : {};\n }\n catch {\n return {};\n }\n default:\n // If no type specified and can't detect, try to infer from current value type\n if (typeof currentValue === 'number' && attributeValue !== null) {\n return Number(attributeValue);\n }\n else {\n return attributeValue;\n }\n }\n}\n/**\n * Converts a property value to its attribute string representation\n * @param value - The property value to convert\n * @param propertyOptions - The options from @property decorator\n * @param initialValue - The default value assigned to the property field (used for type detection)\n * @returns The string representation for the HTML attribute, or null if value should remove attribute\n */\n/**\n * Extract attribute name from property options\n */\nfunction getAttrName(opts, propName) {\n return typeof opts.attribute === 'string' ? opts.attribute : propName.toLowerCase();\n}\n/**\n * Lazy-init a Set on a symbol key\n */\nfunction ensureSet(obj, sym) {\n if (!obj[sym])\n obj[sym] = new Set();\n return obj[sym];\n}\n/**\n * Lazy-init an object on a symbol key\n */\nfunction ensureObj(obj, sym) {\n if (!obj[sym])\n obj[sym] = {};\n return obj[sym];\n}\n/**\n * Invoke property watchers for a given property change\n */\nfunction invokeWatchers(instance, constructor, propName, oldValue, newValue) {\n const watchers = constructor[PROPERTY_WATCHERS];\n if (!watchers)\n return;\n if (watchers.has(propName)) {\n for (const w of watchers.get(propName)) {\n try {\n w.method.call(instance, oldValue, newValue, propName);\n }\n catch (e) {\n console.error(`Error in @watch('${propName}') method ${w.methodName}:`, e);\n }\n }\n }\n if (watchers.has('*')) {\n for (const w of watchers.get('*')) {\n try {\n w.method.call(instance, oldValue, newValue, propName);\n }\n catch (e) {\n console.error(`Error in @watch('*') method ${w.methodName}:`, e);\n }\n }\n }\n}\n/**\n * Create a debounced version of a function\n */\nfunction createDebounced(fn, delay) {\n let timer = null;\n return function (...args) {\n if (timer !== null)\n clearTimeout(timer);\n timer = setTimeout(() => { fn.apply(this, args); timer = null; }, delay);\n };\n}\n/**\n * Create a throttled version of a function (leading + trailing edge)\n */\nfunction createThrottled(fn, delay) {\n let lastCall = 0;\n let timer = null;\n return function (...args) {\n const now = Date.now();\n const remaining = delay - (now - lastCall);\n if (remaining <= 0) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n lastCall = now;\n return fn.apply(this, args);\n }\n if (!timer) {\n timer = setTimeout(() => { lastCall = Date.now(); timer = null; fn.apply(this, args); }, remaining);\n }\n };\n}\nfunction valueToAttribute(value, propertyOptions, initialValue) {\n // Handle null/undefined/false values and empty arrays\n if (value === null || value === undefined || value === false ||\n (propertyOptions?.type === SimpleArray && Array.isArray(value) && value.length === 0)) {\n return null;\n }\n // Use custom converter if provided\n if (propertyOptions.converter?.toAttribute) {\n return propertyOptions.converter.toAttribute(value, propertyOptions.type);\n }\n // Use explicit type or detect from initial value\n const typeToUse = propertyOptions.type || detectType(initialValue);\n switch (typeToUse) {\n case Boolean:\n // For boolean attributes, return \"true\" when true\n // (false is already handled above - returns null to remove attribute)\n return 'true';\n case Date:\n return value instanceof Date ? value.toISOString() : String(value);\n case BigInt:\n return typeof value === 'bigint' ? value.toString() + 'n' : String(value);\n case SimpleArray:\n return Array.isArray(value) ? SimpleArray.serialize(value) : String(value);\n case Array:\n return Array.isArray(value) ? JSON.stringify(value) : String(value);\n case Object:\n return typeof value === 'object' && value !== null ? JSON.stringify(value) : String(value);\n default:\n return String(value);\n }\n}\n\n// Global cache for MediaQueryList objects\nconst mediaQueryCache = new Map();\n/**\n * Decorator for observing external changes like viewport intersection, resize, media queries, and DOM mutations\n *\n * @param target - The observation target (e.g., 'intersection', 'resize', 'media:(min-width: 768px)', 'mutation:childList') or array of targets\n * @param selectorOrOptions - CSS selector for element to observe OR options object\n * @param options - Options object (when second parameter is a selector)\n */\nfunction observe(observeTarget, selectorOrOptions, options) {\n // Handle overloaded parameters\n let selector;\n let opts;\n if (typeof selectorOrOptions === 'string') {\n selector = selectorOrOptions;\n opts = options;\n }\n else {\n selector = undefined;\n opts = selectorOrOptions;\n }\n return function (target, context) {\n const propertyKey = context.name;\n const initKey = `__observe_init_${propertyKey}`;\n context.addInitializer(function () {\n const constructor = this.constructor;\n if (constructor[initKey])\n return;\n constructor[initKey] = true;\n if (!constructor[OBSERVERS]) {\n constructor[OBSERVERS] = [];\n }\n const observeTargets = Array.isArray(observeTarget) ? observeTarget : [observeTarget];\n for (const targetString of observeTargets) {\n const [type, ...modifiers] = targetString.split(':');\n const targetStr = modifiers.join(':');\n constructor[OBSERVERS].push({\n type,\n target: targetStr,\n selector,\n methodName: propertyKey,\n method: target,\n options: opts\n });\n }\n });\n };\n}\n// Helper to setup observers for elements\nfunction setupObservers(instance, element) {\n const observers = instance.constructor[OBSERVERS];\n if (!observers || !Array.isArray(observers) || observers.length === 0) {\n return;\n }\n // Initialize cleanup object if needed\n if (!instance[CLEANUP]) {\n instance[CLEANUP] = { events: [], channels: [], observers: [] };\n }\n else if (!instance[CLEANUP].observers) {\n instance[CLEANUP].observers = [];\n }\n for (const observer of observers) {\n const method = observer.method.bind(instance);\n // Apply throttling if specified\n const callback = observer.options?.throttle\n ? createThrottled(method, observer.options.throttle)\n : method;\n switch (observer.type) {\n case 'intersection':\n setupIntersectionObserver(instance, element, observer, callback);\n break;\n case 'resize':\n setupResizeObserver(instance, element, observer, callback);\n break;\n case 'media':\n setupMediaQueryObserver(instance, element, observer, callback);\n break;\n case 'mutation':\n setupMutationObserver(instance, element, observer, callback);\n break;\n default:\n console.warn(`Unknown observer type: ${observer.type}`);\n }\n }\n}\nfunction setupIntersectionObserver(instance, element, observer, callback) {\n const options = {\n threshold: observer.options?.threshold ?? 0,\n rootMargin: observer.options?.rootMargin ?? '0px',\n root: observer.options?.root ?? null\n };\n // Wrap callback to handle return value\n const wrappedCallback = (entries) => {\n for (const entry of entries) {\n try {\n const result = callback(entry);\n if (result === false && io) {\n io.unobserve(entry.target);\n }\n }\n catch (error) {\n console.error(`Error in intersection observer ${observer.methodName}:`, error);\n }\n }\n };\n if (typeof IntersectionObserver === 'undefined') {\n console.warn('IntersectionObserver is not available in this environment');\n return;\n }\n const io = new IntersectionObserver(wrappedCallback, options);\n // Find target elements\n const targets = observer.selector\n ? Array.from(element.shadowRoot?.querySelectorAll(observer.selector) || [])\n : [element];\n // Start observing\n targets.forEach(target => io.observe(target));\n // Store cleanup\n instance[CLEANUP].observers.push(() => {\n targets.forEach(target => io.unobserve(target));\n // Only disconnect if no more targets\n if (io.takeRecords().length === 0) {\n io.disconnect();\n }\n });\n}\nfunction setupResizeObserver(instance, element, observer, callback) {\n const box = observer.options?.box || 'content-box';\n // Wrap callback with error handling\n const wrappedCallback = (entries) => {\n for (const entry of entries) {\n try {\n callback(entry);\n }\n catch (error) {\n console.error(`Error in resize observer ${observer.methodName}:`, error);\n }\n }\n };\n // Check if ResizeObserver is available\n if (typeof ResizeObserver === 'undefined') {\n console.warn('ResizeObserver is not available in this environment');\n return;\n }\n // Create ResizeObserver\n const ro = new ResizeObserver(wrappedCallback);\n // Find target elements\n const targets = observer.selector\n ? Array.from(element.shadowRoot?.querySelectorAll(observer.selector) || [])\n : [element];\n // Start observing with options\n targets.forEach(target => {\n ro.observe(target, { box });\n });\n // Store cleanup\n instance[CLEANUP].observers.push(() => {\n ro.disconnect();\n });\n}\nfunction setupMediaQueryObserver(instance, _element, observer, callback) {\n // Extract media query from target (e.g., \"media:(min-width: 768px)\" -> \"(min-width: 768px)\")\n const mediaQuery = observer.target;\n if (!mediaQuery) {\n console.warn('Media query observer requires a query string');\n return;\n }\n // Get or create MediaQueryList (cached globally)\n let mql = mediaQueryCache.get(mediaQuery);\n if (!mql) {\n try {\n mql = window.matchMedia(mediaQuery);\n mediaQueryCache.set(mediaQuery, mql);\n }\n catch (error) {\n console.error(`Invalid media query: ${mediaQuery}`, error);\n return;\n }\n }\n // Wrap callback with error handling\n const wrappedCallback = (event) => {\n try {\n callback('matches' in event ? event.matches : event.matches);\n }\n catch (error) {\n console.error(`Error in media query observer ${observer.methodName}:`, error);\n }\n };\n // Call immediately with current state\n wrappedCallback(mql);\n // Listen for changes\n const changeHandler = (e) => wrappedCallback(e);\n // Modern browsers use addEventListener\n if (mql.addEventListener) {\n mql.addEventListener('change', changeHandler);\n instance[CLEANUP].observers.push(() => {\n mql.removeEventListener('change', changeHandler);\n });\n }\n else {\n // Fallback for older browsers\n mql.addListener(changeHandler);\n instance[CLEANUP].observers.push(() => {\n mql.removeListener(changeHandler);\n });\n }\n}\nfunction setupMutationObserver(instance, element, observer, callback) {\n // Parse mutation type and attribute from target\n // e.g., \"childList\", \"attributes:class\", \"attributes:data-state\"\n const parts = observer.target.split(':');\n const mutationType = parts[0] || 'childList';\n const attributeName = parts[1];\n // Build MutationObserver options\n const options = {};\n switch (mutationType) {\n case 'childList':\n options.childList = true;\n break;\n case 'attributes':\n options.attributes = true;\n if (attributeName) {\n options.attributeFilter = [attributeName];\n }\n break;\n default:\n console.warn(`Unknown mutation type: ${mutationType}`);\n return;\n }\n // Apply subtree with safety limits\n if (observer.options?.subtree) {\n options.subtree = true;\n // Could implement maxDepth checking in the callback\n if (observer.options.maxDepth) {\n console.warn('maxDepth is set but requires custom implementation');\n }\n }\n // Wrap callback with error handling and optional depth filtering\n const needsDepthFilter = !!(observer.options?.maxDepth && observer.options.subtree);\n const wrappedCallback = (mutations) => {\n try {\n if (!needsDepthFilter) {\n callback(mutations);\n return;\n }\n const maxDepth = observer.options.maxDepth;\n const root = element.shadowRoot || element;\n const filtered = mutations.filter(mutation => {\n let depth = 0;\n let current = mutation.target;\n while (current && current !== root && depth < maxDepth) {\n current = current.parentNode;\n depth++;\n }\n return depth < maxDepth;\n });\n if (filtered.length > 0)\n callback(filtered);\n }\n catch (error) {\n console.error(`Error in mutation observer ${observer.methodName}:`, error);\n }\n };\n // Create MutationObserver\n const mo = new MutationObserver(wrappedCallback);\n // Find target elements\n const isController = instance[IS_CONTROLLER_INSTANCE] === true;\n // For mutation observers without selector:\n // - Controllers: observe the shadow DOM of the element they're attached to (if it exists)\n // - Elements: observe the element itself (light DOM) to avoid infinite loops\n const targets = observer.selector\n ? Array.from(element.shadowRoot?.querySelectorAll(observer.selector) || [])\n : isController && element.shadowRoot\n ? [element.shadowRoot]\n : [element];\n // Start observing\n targets.forEach(target => {\n mo.observe(target, options);\n });\n // Store cleanup\n instance[CLEANUP].observers.push(() => {\n mo.disconnect();\n });\n}\n// Helper to cleanup observers\nfunction cleanupObservers(instance) {\n if (instance[CLEANUP]?.observers) {\n for (const cleanup of instance[CLEANUP].observers) {\n cleanup();\n }\n instance[CLEANUP].observers = [];\n }\n}\n\n// @request decorator transforms methods to return Promise<T>\n/**\n * Decorator for making requests from elements or controllers.\n * Uses async generator pattern for bidirectional communication.\n *\n * @param requestName The name of the request\n * @param options Optional configuration\n */\nfunction request(requestName, options) {\n return function (originalMethod, _context) {\n // Create timing variables for debounce/throttle\n let debounceTimeout;\n let throttleLastCall = 0;\n let throttleTimeout;\n return async function (...args) {\n const actualRequest = async () => {\n // @request always acts as requester (client side)\n const responseTimeout = options?.timeout ?? 120000; // Default 2 minute timeout\n const discoveryTimeout = options?.discoveryTimeout ?? 50; // Default 50ms discovery timeout\n // Create the generator\n const generator = originalMethod.apply(this, args);\n // Get the first yield (the request payload)\n const { value: payload, done } = await generator.next();\n if (done) {\n // Generator returned without yielding\n return payload;\n }\n // Create data promise and expose resolve/reject\n let dataResolve;\n let dataReject;\n const dataPromise = new Promise((resolve, reject) => {\n dataResolve = resolve;\n dataReject = reject;\n });\n // Create discovery timeout promise and expose resolve/reject\n let discoveryResolve;\n let discoveryReject;\n let discoveryTimeoutId;\n const discoveryPromise = new Promise((resolve, reject) => {\n discoveryResolve = resolve;\n discoveryReject = reject;\n discoveryTimeoutId = setTimeout(() => {\n reject(new Error(`Request \"${requestName}\" timed out after ${discoveryTimeout}ms - no handler found`));\n }, discoveryTimeout);\n });\n // Dispatch event with promises\n const eventName = `@request/${requestName}`;\n const event = new CustomEvent(eventName, {\n bubbles: options?.bubbles !== undefined ? options.bubbles : true,\n cancelable: options?.cancelable || false,\n composed: true, // Allow crossing shadow DOM boundaries\n detail: {\n payload,\n discovery: {\n resolve: () => {\n clearTimeout(discoveryTimeoutId);\n discoveryResolve();\n },\n reject: discoveryReject\n },\n data: {\n resolve: dataResolve,\n reject: dataReject\n }\n }\n });\n // Check if this is a controller instance using the symbol\n const isController = this[IS_CONTROLLER_INSTANCE] === true;\n const dispatcher = isController && this.element ? this.element : this;\n dispatcher.dispatchEvent(event);\n try {\n // Wait for discovery timeout to be cleared (handler found) or discovery timeout to reject (no handler)\n await discoveryPromise;\n // If we get here, a handler was found and discovery timeout was cleared\n // Now wait for the actual data response with the full response timeout\n const responseTimeoutId = setTimeout(() => {\n dataReject(new Error(`Request \"${requestName}\" timed out after ${responseTimeout}ms`));\n }, responseTimeout);\n const response = await dataPromise;\n clearTimeout(responseTimeoutId);\n // Send response back to generator and get final return value\n const { value: finalValue } = await generator.next(response);\n return finalValue;\n }\n catch (error) {\n // Send error to generator\n try {\n await generator.throw(error);\n }\n catch (generatorError) {\n throw generatorError;\n }\n }\n }; // Close actualRequest function\n // Debounce\n if (options?.debounce) {\n return new Promise((resolve, reject) => {\n clearTimeout(debounceTimeout);\n debounceTimeout = setTimeout(async () => {\n try {\n resolve(await actualRequest());\n }\n catch (error) {\n reject(error);\n }\n }, options.debounce);\n });\n }\n // No throttle — execute immediately\n if (!options?.throttle)\n return actualRequest();\n // Throttle: time elapsed — invoke now\n const now = Date.now();\n const remaining = options.throttle - (now - throttleLastCall);\n if (remaining <= 0) {\n clearTimeout(throttleTimeout);\n throttleLastCall = now;\n return actualRequest();\n }\n // Throttle: already has pending timeout\n if (throttleTimeout)\n return Promise.resolve();\n // Throttle: schedule trailing call\n return new Promise((resolve, reject) => {\n throttleTimeout = setTimeout(async () => {\n throttleLastCall = Date.now();\n throttleTimeout = null;\n try {\n resolve(await actualRequest());\n }\n catch (error) {\n reject(error);\n }\n }, remaining);\n });\n };\n };\n}\n/**\n * Decorator for responding to requests in elements or controllers.\n *\n * @param requestName The name of the request to respond to\n * @param options Optional configuration\n */\nfunction respond(requestName, options) {\n return function (target, context) {\n const propertyKey = context.name;\n const initKey = `__respond_init_${requestName}_${propertyKey}`;\n context.addInitializer(function () {\n const constructor = this.constructor;\n if (constructor[initKey])\n return;\n constructor[initKey] = true;\n if (!constructor[CHANNEL_HANDLERS]) {\n constructor[CHANNEL_HANDLERS] = [];\n }\n constructor[CHANNEL_HANDLERS].push({\n channelName: requestName,\n methodName: propertyKey,\n method: target,\n options: options\n });\n });\n };\n}\n// Helper to setup response handlers for elements and controllers\nfunction setupResponseHandlers(instance, element) {\n const handlers = instance.constructor[CHANNEL_HANDLERS];\n if (!handlers)\n return;\n // Store cleanup functions\n // Initialize cleanup object if needed\n if (!instance[CLEANUP]) {\n instance[CLEANUP] = { events: [], channels: [] };\n }\n for (const handler of handlers) {\n const boundMethod = handler.method.bind(instance);\n const eventName = `@request/${handler.channelName}`;\n // Create timing variables for debounce/throttle per handler\n let debounceTimeout;\n let throttleLastCall = 0;\n let throttleTimeout;\n // Create wrapped method with timing if needed\n const createTimedMethod = (originalMethod) => {\n if (handler.options?.debounce) {\n return (...args) => new Promise((resolve, reject) => {\n clearTimeout(debounceTimeout);\n debounceTimeout = setTimeout(async () => {\n try {\n resolve(await originalMethod(...args));\n }\n catch (error) {\n reject(error);\n }\n }, handler.options.debounce);\n });\n }\n if (!handler.options?.throttle)\n return originalMethod;\n return (...args) => {\n const now = Date.now();\n const remaining = handler.options.throttle - (now - throttleLastCall);\n if (remaining <= 0) {\n clearTimeout(throttleTimeout);\n throttleLastCall = now;\n return originalMethod(...args);\n }\n if (throttleTimeout)\n return Promise.resolve(undefined);\n return new Promise((resolve, reject) => {\n throttleTimeout = setTimeout(async () => {\n throttleLastCall = Date.now();\n throttleTimeout = null;\n try {\n resolve(await originalMethod(...args));\n }\n catch (error) {\n reject(error);\n }\n }, remaining);\n });\n };\n };\n const timedMethod = createTimedMethod(boundMethod);\n // Setup response handler\n const responseHandler = (event) => {\n // Extract promises and payload\n const { data, discovery, payload } = event.detail;\n // Prevent other responders from responding\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n // Clear the discovery timeout immediately - we found a handler\n discovery.resolve();\n // Call the timed responder method and handle the result\n Promise.resolve(timedMethod(payload))\n .then(result => {\n data.resolve(result);\n })\n .catch(error => {\n data.reject(error);\n console.error(`Error in response handler ${handler.methodName}:`, error);\n });\n };\n element.addEventListener(eventName, responseHandler);\n instance[CLEANUP].channels.push(() => {\n element.removeEventListener(eventName, responseHandler);\n });\n }\n}\n// Helper to cleanup response handlers\nfunction cleanupResponseHandlers(instance) {\n if (instance[CLEANUP]?.channels) {\n for (const cleanup of instance[CLEANUP].channels) {\n cleanup();\n }\n instance[CLEANUP].channels = [];\n }\n}\n\n/**\n * Template system for Snice v3.0.0\n * Provides html`` and css`` tagged template processors with differential rendering\n */\n// Unique symbols for type checking\n// Use Symbol.for() to ensure symbols are shared across multiple Snice instances\nconst HTML_RESULT = Symbol.for('snice:html-result');\nconst CSS_RESULT = Symbol.for('snice:css-result');\n/**\n * Tagged template function for creating HTML templates\n *\n * @example\n * ```typescript\n * html`<div class=\"card\">\n * <h1>${this.title}</h1>\n * <button @click=${this.handleClick}>Click me</button>\n * </div>`\n * ```\n */\nfunction html(strings, ...values) {\n return {\n _$litType$: HTML_RESULT,\n strings,\n values\n };\n}\n/**\n * Tagged template function for creating CSS\n *\n * @example\n * ```typescript\n * css`:host {\n * display: block;\n * padding: 1rem;\n * }`\n * ```\n */\nfunction css(strings, ...values) {\n // Combine strings and values into final CSS text\n let cssText = strings[0];\n for (let i = 0; i < values.length; i++) {\n cssText += String(values[i]) + strings[i + 1];\n }\n const result = {\n _$litType$: CSS_RESULT,\n cssText\n };\n // Try to create constructable stylesheet for better performance\n // This will be cached and reused across instances\n if (typeof CSSStyleSheet !== 'undefined' && 'adoptedStyleSheets' in Document.prototype) {\n try {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssText);\n result.styleSheet = sheet;\n }\n catch (e) {\n // Fall back to regular <style> tag if constructable stylesheets fail\n }\n }\n return result;\n}\n/**\n * Check if a value is a TemplateResult\n */\nfunction isTemplateResult(value) {\n return value && value._$litType$ === HTML_RESULT;\n}\n/**\n * Check if a value is a CSSResult\n */\nfunction isCSSResult(value) {\n return value && value._$litType$ === CSS_RESULT;\n}\n/**\n * Nothing - represents no value (different from null/undefined)\n * Used to remove content from templates\n * Use Symbol.for() to ensure symbols are shared across multiple Snice instances\n */\nconst nothing = Symbol.for('snice:nothing');\n// Unique symbol for unsafe HTML\n// Use Symbol.for() to ensure symbols are shared across multiple Snice instances\nconst UNSAFE_HTML = Symbol.for('snice:unsafe-html');\n/**\n * Mark a string as raw HTML that should not be escaped\n * WARNING: Only use with sanitized content - using user input can lead to XSS!\n *\n * @example\n * ```typescript\n * const htmlString = '<span class=\"bold\">Hello</span>';\n * html`<div>${unsafeHTML(htmlString)}</div>`\n * ```\n */\nfunction unsafeHTML(html) {\n return {\n _$litType$: UNSAFE_HTML,\n html\n };\n}\n/**\n * Check if a value is an UnsafeHTML wrapper\n */\nfunction isUnsafeHTML(value) {\n return value && value._$litType$ === UNSAFE_HTML;\n}\n\n// Unique marker for dynamic parts\n// This parses as a comment node but doesn't get escaped in attributes\nconst marker = `snice$${Math.random().toFixed(9).slice(2)}$`;\nconst markerMatch = '?' + marker;\nconst nodeMarker = `<${markerMatch}>`;\nconst markerRegex = new RegExp(marker, 'g');\n// Template cache - templates with same string array can be reused\nconst templateCache = new WeakMap();\n// Sentinel for \"not yet set\" - distinct from undefined/null\nconst NOT_COMMITTED = Symbol('not-committed');\n// noChange sentinel - signals a directive handled the value\nconst noChange = Symbol.for('snice:no-change');\n/**\n * Check if value is a primitive (can be compared with ===)\n */\nconst isPrimitive = (value) => value === null || (typeof value !== 'object' && typeof value !== 'function');\n/**\n * Check if value is iterable (array or has Symbol.iterator)\n */\nconst isIterable = (value) => Array.isArray(value) || typeof value?.[Symbol.iterator] === 'function';\n/**\n * A prepared template ready for rendering\n */\nclass Template {\n constructor(result, element, attrNamesForParts) {\n this.parts = [];\n this.element = element;\n const walker = document.createTreeWalker(element.content, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT);\n let partIndex = 0;\n const nodesToRemove = [];\n let node;\n while ((node = walker.nextNode()) !== null) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node;\n const tagName = element.tagName.toLowerCase();\n // Handle virtual elements: <if>, <case>\n // Keep them in the DOM with display:contents for now\n // Will optimize later with proper template extraction\n if (tagName === 'if') {\n // <if value=\"${condition}\">children</if>\n const valueAttr = element.getAttribute('value');\n if (valueAttr && valueAttr.includes(marker)) {\n // Remove the value attribute\n element.removeAttribute('value');\n this.parts.push({\n type: 'conditional-if',\n index: partIndex++,\n element // Keep the <if> element\n });\n // Continue processing children normally\n }\n continue;\n }\n // Handle <case> element\n if (tagName === 'case') {\n // <case value=\"${value}\">children</case>\n const valueAttr = element.getAttribute('value');\n if (valueAttr && valueAttr.includes(marker)) {\n // Remove the value attribute\n element.removeAttribute('value');\n this.parts.push({\n type: 'conditional-case',\n index: partIndex++,\n element // Keep the <case> element\n });\n // Continue processing children normally\n }\n continue;\n }\n if (element.hasAttributes()) {\n const attributes = element.attributes;\n const attrsToRemove = [];\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes[i];\n const value = attr.value;\n // Check for attribute bindings\n if (value.includes(marker)) {\n attrsToRemove.push(attr);\n // Get original attribute name with preserved case\n const originalName = attrNamesForParts[partIndex] || attr.name;\n // Extract static string segments by splitting on marker\n const attrStrings = value.split(marker);\n // Number of expressions = number of markers = attrStrings.length - 1\n const expressionCount = attrStrings.length - 1;\n if (originalName.startsWith('@@')) {\n // Escaped event binding for events with @ in the name (e.g., @@snice/event -> @snice/event)\n this.parts.push({\n type: 'event',\n index: partIndex,\n name: originalName.slice(1), // Keep the @ in the event name\n element\n });\n partIndex += 1;\n }\n else if (originalName.startsWith('@')) {\n // Event binding (single value only)\n this.parts.push({\n type: 'event',\n index: partIndex,\n name: originalName.slice(1),\n element\n });\n partIndex += 1;\n }\n else if (originalName.startsWith('.')) {\n // Property binding (single value only)\n this.parts.push({\n type: 'property',\n index: partIndex,\n name: originalName.slice(1),\n element\n });\n partIndex += 1;\n }\n else if (originalName.startsWith('?')) {\n // Boolean attribute (single value only)\n this.parts.push({\n type: 'boolean-attribute',\n index: partIndex,\n name: originalName.slice(1),\n element\n });\n partIndex += 1;\n }\n else {\n // Regular attribute - supports multiple interpolations\n // Store static string segments for interpolation\n this.parts.push({\n type: 'attribute',\n index: partIndex,\n name: attr.name,\n element,\n attrStrings\n });\n // Increment by number of expressions consumed\n partIndex += expressionCount;\n }\n }\n }\n // Remove marker attributes\n for (const attr of attrsToRemove) {\n element.removeAttribute(attr.name);\n }\n }\n }\n else if (node.nodeType === Node.COMMENT_NODE) {\n const comment = node;\n // Check for marker match (processing instruction becomes comment)\n if (comment.data === markerMatch) {\n // Node part\n const parent = comment.parentNode;\n const endNode = document.createComment('');\n parent.insertBefore(endNode, comment.nextSibling);\n this.parts.push({\n type: 'node',\n index: partIndex++,\n startNode: comment,\n endNode\n });\n }\n }\n else if (node.nodeType === Node.TEXT_NODE) {\n const text = node;\n const data = text.data;\n if (data.includes(marker)) {\n // Split text node at markers\n const parent = text.parentNode;\n const parts = data.split(markerRegex);\n const lastIndex = parts.length - 1;\n for (let i = 0; i < lastIndex; i++) {\n parent.insertBefore(document.createTextNode(parts[i]), text);\n const comment = document.createComment('');\n const endNode = document.createComment('');\n parent.insertBefore(comment, text);\n parent.insertBefore(endNode, text);\n this.parts.push({\n type: 'node',\n index: partIndex++,\n startNode: comment,\n endNode\n });\n }\n // Last part\n if (parts[lastIndex] !== '') {\n text.data = parts[lastIndex];\n }\n else {\n nodesToRemove.push(text);\n }\n }\n }\n }\n // Remove marker nodes\n for (const node of nodesToRemove) {\n node.parentNode?.removeChild(node);\n }\n }\n}\n/**\n * Prepare a template for rendering\n *\n * Uses state tracking to correctly handle multi-interpolation in attributes.\n * Tracks whether we're inside a tag and inside a quoted attribute value.\n */\nfunction prepareTemplate(result) {\n // Check cache first\n const { strings } = result;\n const cached = templateCache.get(strings);\n if (cached) {\n return cached;\n }\n // Build HTML with markers and extract original attribute names\n const htmlParts = [];\n const attrNamesForParts = [];\n // State tracking for multi-interpolation support\n let inTag = false; // Inside a tag (between < and >)\n let inAttrValue = false; // Inside a quoted attribute value\n let attrQuoteChar = ''; // The quote character (' or \")\n let currentAttrName = ''; // The current attribute name\n for (let i = 0; i < strings.length; i++) {\n const str = strings[i];\n htmlParts.push(str);\n if (i < strings.length - 1) {\n // Update state by scanning the string\n for (let j = 0; j < str.length; j++) {\n const char = str[j];\n if (!inTag) {\n // Looking for tag start\n if (char === '<') {\n inTag = true;\n }\n }\n else if (!inAttrValue) {\n // Inside tag, but not in attribute value\n if (char === '>') {\n inTag = false;\n }\n else if (char === '\"' || char === \"'\") {\n inAttrValue = true;\n attrQuoteChar = char;\n }\n else if (char === '=') {\n // Extract attribute name (look backwards for it)\n let attrStart = j - 1;\n while (attrStart >= 0 && /[\\w\\-\\.@\\?]/.test(str[attrStart])) {\n attrStart--;\n }\n currentAttrName = str.substring(attrStart + 1, j).trim();\n }\n }\n else {\n // Inside quoted attribute value\n if (char === attrQuoteChar) {\n inAttrValue = false;\n attrQuoteChar = '';\n }\n }\n }\n // Now determine what kind of marker to insert based on current state\n if (inAttrValue) {\n // We're inside a quoted attribute value - this is an attribute binding\n // For subsequent interpolations in same attribute, keep using same attr name\n attrNamesForParts.push(currentAttrName);\n htmlParts.push(marker);\n }\n else if (inTag) {\n // Inside tag but not in attr value - check for special cases\n // Check if this is start of attribute value (= at end of string)\n const trimmed = str.trimEnd();\n if (trimmed.endsWith('=')) {\n // Extract attribute name\n let attrStart = trimmed.length - 2;\n while (attrStart >= 0 && /[\\w\\-\\.@\\?\\/]/.test(trimmed[attrStart])) {\n attrStart--;\n }\n currentAttrName = trimmed.substring(attrStart + 1, trimmed.length - 1).trim();\n attrNamesForParts.push(currentAttrName);\n htmlParts.push(marker);\n }\n else {\n // Check if this is a meta element (<if> or <case>)\n const metaElementMatch = str.match(/<(if|case)\\s*$/);\n if (metaElementMatch) {\n currentAttrName = 'value';\n attrNamesForParts.push('value');\n htmlParts.push(`value=\"${marker}\"`);\n }\n else {\n // Element binding or error\n attrNamesForParts.push('');\n htmlParts.push(marker);\n }\n }\n }\n else {\n // Outside any tag - this is node content\n attrNamesForParts.push('');\n htmlParts.push(nodeMarker);\n }\n }\n }\n const html = htmlParts.join('');\n const template = document.createElement('template');\n template.innerHTML = html;\n const tmpl = new Template(result, template, attrNamesForParts);\n // Cache the template for reuse\n templateCache.set(strings, tmpl);\n return tmpl;\n}\n/**\n * Instance of a rendered template\n */\nclass TemplateInstance {\n constructor(result) {\n this.parts = [];\n this.fragment = null;\n this.conditionalParts = []; // if/case parts with their indices\n this.regularParts = []; // all other parts with their indices\n this.template = prepareTemplate(result);\n this.strings = result.strings;\n }\n /**\n * Check if this instance uses the same template strings\n * (template identity is based on the strings array reference)\n */\n isSameTemplate(strings) {\n return this.strings === strings;\n }\n renderFragment() {\n if (!this.fragment) {\n // First render - clone template and create parts\n this.fragment = this.template.element.content.cloneNode(true);\n // Build a map of nodes from template to cloned fragment\n const walker = document.createTreeWalker(this.template.element.content, NodeFilter.SHOW_ALL);\n const clonedWalker = document.createTreeWalker(this.fragment, NodeFilter.SHOW_ALL);\n const nodeMap = new Map();\n let templateNode = walker.currentNode;\n let clonedNode = clonedWalker.currentNode;\n while (templateNode && clonedNode) {\n nodeMap.set(templateNode, clonedNode);\n templateNode = walker.nextNode();\n clonedNode = clonedWalker.nextNode();\n }\n for (let i = 0; i < this.template.parts.length; i++) {\n const partDef = this.template.parts[i];\n let part;\n switch (partDef.type) {\n case 'node':\n const startNode = nodeMap.get(partDef.startNode);\n const endNode = nodeMap.get(partDef.endNode);\n part = new NodePart(startNode, endNode);\n break;\n case 'attribute':\n const attrElement = nodeMap.get(partDef.element);\n part = new AttributePart(attrElement, partDef.name, partDef.attrStrings);\n break;\n case 'property':\n const propElement = nodeMap.get(partDef.element);\n part = new PropertyPart(propElement, partDef.name);\n break;\n case 'boolean-attribute':\n const boolElement = nodeMap.get(partDef.element);\n part = new BooleanAttributePart(boolElement, partDef.name);\n break;\n case 'event':\n const eventElement = nodeMap.get(partDef.element);\n part = new EventPart(eventElement, partDef.name);\n break;\n case 'conditional-if':\n const conditionalIfElement = nodeMap.get(partDef.element);\n part = new ConditionalIfPart(conditionalIfElement);\n break;\n case 'conditional-case':\n const conditionalCaseElement = nodeMap.get(partDef.element);\n part = new ConditionalCasePart(conditionalCaseElement);\n break;\n default:\n throw new Error(`Unknown part type: ${partDef.type}`);\n }\n this.parts.push(part);\n // Separate conditional parts from regular parts for optimized update\n // Use partDef.index (the VALUE index) not i (the part array index)\n if (part instanceof ConditionalIfPart || part instanceof ConditionalCasePart) {\n this.conditionalParts.push({ part, index: partDef.index });\n }\n else {\n this.regularParts.push({ part, index: partDef.index });\n }\n }\n }\n return this.fragment;\n }\n render(values) {\n const fragment = this.renderFragment();\n // Commit values to parts\n this.update(values);\n return fragment;\n }\n update(values) {\n // Optimized: Process conditional parts first (if any), then regular parts\n // Using pre-separated arrays with cached indices avoids instanceof and indexOf calls\n // Process conditional parts first (they control visibility)\n for (const { part, index } of this.conditionalParts) {\n part.commit(values[index]);\n }\n for (const { part, index } of this.regularParts) {\n // AttributeParts with interpolation consume multiple values\n if (part instanceof AttributePart && part.strings !== undefined) {\n // Pass full values array and starting index for interpolation\n part.commit(values, index);\n // The part consumes (strings.length - 1) values\n // But since we're iterating by template part index, this is handled by the Template\n }\n else {\n part.commit(values[index]);\n }\n }\n }\n clear() {\n for (const part of this.parts) {\n part.clear();\n }\n }\n}\n/**\n * Base class for all parts\n */\nclass Part {\n}\n/**\n * NodePart handles text content and nested templates\n *\n * Lit-HTML style optimizations:\n * - Reuses TemplateInstance when same template strings are rendered\n * - Reuses text nodes when updating primitive → primitive\n * - Reuses child NodeParts when rendering arrays\n */\nclass NodePart extends Part {\n constructor(startNode, endNode) {\n super();\n this._committedValue = NOT_COMMITTED;\n this.startNode = startNode;\n this.endNode = endNode;\n }\n commit(value) {\n // Handle noChange sentinel\n if (value === noChange) {\n return;\n }\n // Handle nothing/null/undefined/empty - clear content\n if (value === nothing || value == null || value === '') {\n if (this._committedValue !== nothing) {\n this._clear();\n }\n this._committedValue = nothing;\n return;\n }\n // Handle primitives (string, number, boolean, bigint, symbol)\n if (isPrimitive(value)) {\n if (value !== this._committedValue) {\n this._commitText(value);\n }\n return;\n }\n // Handle nested templates\n if (isTemplateResult(value)) {\n this._commitTemplateResult(value);\n return;\n }\n // Handle unsafe HTML\n if (isUnsafeHTML(value)) {\n this._commitUnsafeHTML(value);\n return;\n }\n // Handle DOM nodes\n if (value.nodeType !== undefined) {\n this._commitNode(value);\n return;\n }\n // Handle iterables (arrays, etc.)\n if (isIterable(value)) {\n this._commitIterable(value);\n return;\n }\n // Fallback: convert to string\n this._commitText(value);\n }\n /**\n * Commit a primitive value as text\n * OPTIMIZATION: Reuses existing text node if previous value was also primitive\n */\n _commitText(value) {\n // Try to reuse existing text node\n const canReuse = this._committedValue !== NOT_COMMITTED &&\n this._committedValue !== nothing &&\n isPrimitive(this._committedValue) &&\n !Array.isArray(this._committedValue);\n if (canReuse) {\n const textNode = this.startNode.nextSibling;\n if (textNode && textNode.nodeType === Node.TEXT_NODE) {\n textNode.data = String(value);\n this._committedValue = value;\n return;\n }\n }\n this._clear();\n this._insertBefore(document.createTextNode(String(value)));\n this._committedValue = value;\n }\n /**\n * Commit a TemplateResult\n * OPTIMIZATION: Reuses TemplateInstance if same template strings\n */\n _commitTemplateResult(result) {\n // Check if we can reuse the existing TemplateInstance\n const committedInstance = this._committedValue;\n if (committedInstance instanceof TemplateInstance) {\n // Check if same template by comparing strings reference\n const cachedTemplate = templateCache.get(result.strings);\n if (cachedTemplate && committedInstance.template === cachedTemplate) {\n // SAME TEMPLATE - just update values (efficient path!)\n committedInstance.update(result.values);\n return;\n }\n }\n // Different template or first render - create new instance\n this._clear();\n const instance = new TemplateInstance(result);\n const fragment = instance.renderFragment();\n this._insertBefore(fragment);\n instance.update(result.values);\n this._committedValue = instance;\n }\n /**\n * Commit an iterable (array, Set, etc.)\n * OPTIMIZATION: Reuses existing NodeParts for items\n */\n _commitIterable(value) {\n // If previous value wasn't an array of parts, start fresh\n if (!Array.isArray(this._committedValue) ||\n !(this._committedValue[0] instanceof NodePart)) {\n this._clear();\n this._committedValue = [];\n }\n const itemParts = this._committedValue;\n let partIndex = 0;\n for (const item of value) {\n let itemPart;\n if (partIndex >= itemParts.length) {\n // Need new NodePart - create with markers\n const startMarker = document.createComment('');\n const endMarker = document.createComment('');\n this._insertBefore(startMarker);\n this._insertBefore(endMarker);\n itemPart = new NodePart(startMarker, endMarker);\n itemParts.push(itemPart);\n }\n else {\n // Reuse existing NodePart\n itemPart = itemParts[partIndex];\n }\n // Set value on this part (recursively handles templates, text, etc.)\n itemPart.commit(item);\n partIndex++;\n }\n // Cleanup excess parts from previous render\n if (partIndex < itemParts.length) {\n // Clear DOM for removed items\n for (let i = partIndex; i < itemParts.length; i++) {\n const part = itemParts[i];\n // Remove the part's content and markers\n part._clear();\n // Remove the markers themselves\n part.startNode.remove();\n part.endNode.remove();\n }\n // Truncate array\n itemParts.length = partIndex;\n }\n }\n /**\n * Commit a DOM node directly\n */\n _commitNode(node) {\n if (this._committedValue !== node) {\n this._clear();\n this._insertBefore(node);\n this._committedValue = node;\n }\n }\n /**\n * Commit unsafe HTML string\n */\n _commitUnsafeHTML(value) {\n // Always recreate for unsafe HTML (can't diff arbitrary HTML)\n this._clear();\n const temp = document.createElement('template');\n temp.innerHTML = value.html;\n this._insertBefore(temp.content);\n this._committedValue = value;\n }\n _insertBefore(node) {\n this.endNode.parentNode?.insertBefore(node, this.endNode);\n }\n _clear() {\n const parent = this.startNode.parentNode;\n if (!parent)\n return;\n let node = this.startNode.nextSibling;\n while (node && node !== this.endNode) {\n const next = node.nextSibling;\n parent.removeChild(node);\n node = next;\n }\n this._committedValue = nothing;\n }\n clear() {\n this._clear();\n }\n}\n/**\n * AttributePart handles regular attribute updates\n *\n * Supports multiple interpolations: class=\"a ${b} c ${d} e\"\n * Lit-HTML style: tracks each value separately for dirty checking\n */\nclass AttributePart extends Part {\n constructor(element, name, strings) {\n super();\n this._committedValue = NOT_COMMITTED;\n this.element = element;\n this.name = name;\n // Determine if this is interpolation or single-value binding\n if (strings && (strings.length > 2 || strings[0] !== '' || strings[1] !== '')) {\n // Interpolation case: class=\"foo ${x} bar ${y}\"\n // strings = [\"foo \", \" bar \", \"\"]\n this._committedValue = new Array(strings.length - 1).fill(NOT_COMMITTED);\n this.strings = strings;\n }\n else {\n // Single-value case: class=\"${x}\"\n this._committedValue = NOT_COMMITTED;\n }\n }\n /**\n * Commit value(s) to the attribute\n *\n * For single-value binding: commit(value)\n * For interpolation: commit(values, startIndex) where values is full template values array\n */\n commit(value, valueIndex = 0) {\n let change = false;\n let finalValue;\n // === SINGLE-VALUE BINDING ===\n if (this.strings === undefined) {\n if (value === noChange)\n return;\n change = !isPrimitive(value) ||\n (value !== this._committedValue && value !== noChange);\n if (change) {\n this._committedValue = value;\n finalValue = value;\n }\n else {\n return; // No change, skip DOM update\n }\n }\n // === INTERPOLATION BINDING ===\n else {\n const values = value;\n const committedValues = this._committedValue;\n finalValue = this.strings[0];\n for (let i = 0; i < this.strings.length - 1; i++) {\n let v = values[valueIndex + i];\n // Handle noChange sentinel\n if (v === noChange) {\n v = committedValues[i];\n }\n // Track if any value changed\n change = change || !isPrimitive(v) || v !== committedValues[i];\n // Handle nothing sentinel - removes entire attribute\n if (v === nothing) {\n finalValue = nothing;\n }\n else if (finalValue !== nothing) {\n finalValue = finalValue + (v ?? '') + this.strings[i + 1];\n }\n // Always record each value for future comparison\n committedValues[i] = v;\n }\n if (!change) {\n return; // No change, skip DOM update\n }\n }\n // Commit to DOM\n this._commitValue(finalValue);\n }\n _commitValue(value) {\n if (value === nothing || value === null || value === undefined) {\n this.element.removeAttribute(this.name);\n }\n else {\n this.element.setAttribute(this.name, String(value));\n }\n }\n clear() {\n this.element.removeAttribute(this.name);\n }\n}\n/**\n * PropertyPart handles property bindings (.property=${value})\n */\nclass PropertyPart extends Part {\n constructor(element, name) {\n super();\n this._committedValue = NOT_COMMITTED;\n this.element = element;\n this.name = name;\n }\n commit(value) {\n if (value === noChange)\n return;\n // Dirty check - skip if same value\n if (value === this._committedValue)\n return;\n this._committedValue = value;\n this.element[this.name] = value === nothing ? undefined : value;\n }\n clear() {\n this.element[this.name] = undefined;\n this._committedValue = NOT_COMMITTED;\n }\n}\n/**\n * BooleanAttributePart handles boolean attributes (?attribute=${value})\n */\nclass BooleanAttributePart extends Part {\n constructor(element, name) {\n super();\n this._committedValue = NOT_COMMITTED;\n this.element = element;\n this.name = name;\n }\n commit(value) {\n if (value === noChange)\n return;\n // Coerce to boolean\n const boolValue = !!value && value !== nothing;\n // Dirty check - skip if same boolean value\n if (boolValue === this._committedValue)\n return;\n this._committedValue = boolValue;\n if (boolValue) {\n this.element.setAttribute(this.name, '');\n }\n else {\n this.element.removeAttribute(this.name);\n }\n }\n clear() {\n this.element.removeAttribute(this.name);\n this._committedValue = NOT_COMMITTED;\n }\n}\n/**\n * EventPart handles event listener bindings with keyboard shortcut support\n */\nclass EventPart extends Part {\n constructor(element, eventName) {\n super();\n this.listener = null;\n this.value = undefined;\n this.keyFilter = null;\n this.host = null; // Cache host element\n this.element = element;\n // Parse keyboard shortcuts:\n // Supports both dot notation (@keydown.enter) and colon notation (@keydown:Enter) to match @on decorator\n // Only parse colons for keyboard events, not custom events\n const isKeyboardEvent = ['keydown', 'keyup', 'keypress'].includes(eventName.split('.')[0].split(':')[0]);\n const dotIndex = eventName.indexOf('.');\n const colonIndex = isKeyboardEvent ? eventName.indexOf(':') : -1;\n // Use whichever delimiter comes first (dot or colon)\n const delimiterIndex = dotIndex > 0 && colonIndex > 0\n ? Math.min(dotIndex, colonIndex)\n : Math.max(dotIndex, colonIndex);\n if (delimiterIndex > 0) {\n const baseEvent = eventName.substring(0, delimiterIndex);\n const keySpec = eventName.substring(delimiterIndex + 1);\n this.eventName = baseEvent;\n this.keyFilter = parseKeyboardFilter(keySpec);\n }\n else {\n this.eventName = eventName;\n }\n }\n commit(value) {\n // Handle noChange sentinel\n if (value === noChange)\n return;\n // Handle nothing sentinel - remove listener\n if (value === nothing) {\n value = null;\n }\n // Skip if same value (but null/undefined always triggers update for cleanup)\n if (value === this.value && value !== null && value !== undefined)\n return;\n // Remove old listener\n if (this.listener) {\n this.element.removeEventListener(this.eventName, this.listener);\n this.listener = null;\n }\n this.value = value;\n // Add new listener\n if (value === null || value === undefined) {\n return;\n }\n if (typeof value !== 'function')\n return;\n // Auto-bind to host element (the custom element with shadow root)\n if (!this.host) {\n const rootNode = this.element.getRootNode();\n this.host = rootNode.host || null;\n }\n const context = this.host || null;\n const keyFilter = this.keyFilter;\n this.listener = ((event) => {\n if (keyFilter && !matchesKeyboardFilter(event, keyFilter))\n return;\n value.call(context, event);\n });\n this.element.addEventListener(this.eventName, this.listener);\n }\n clear() {\n if (this.listener) {\n this.element.removeEventListener(this.eventName, this.listener);\n this.listener = null;\n }\n }\n}\n/**\n * Parse keyboard shortcut specification\n * Examples:\n * \"enter\" -> { key: \"Enter\" }\n * \"ctrl+s\" -> { key: \"s\", ctrl: true }\n * \"ctrl+shift+s\" -> { key: \"s\", ctrl: true, shift: true }\n * \"~enter\" -> { key: \"Enter\", anyModifiers: true }\n */\nfunction parseKeyboardFilter(spec) {\n // Handle ~ prefix for matching regardless of modifiers\n const anyModifiers = spec.startsWith('~');\n if (anyModifiers) {\n spec = spec.substring(1);\n }\n const parts = spec.split('+');\n const filter = {\n key: '',\n anyModifiers\n };\n for (const part of parts) {\n const lower = part.toLowerCase();\n if (lower === 'ctrl' || lower === 'control') {\n filter.ctrl = true;\n }\n else if (lower === 'alt') {\n filter.alt = true;\n }\n else if (lower === 'shift') {\n filter.shift = true;\n }\n else if (lower === 'meta' || lower === 'cmd' || lower === 'command') {\n filter.meta = true;\n }\n else {\n // This is the key itself - normalize common keys\n filter.key = normalizeKey(part);\n }\n }\n return filter;\n}\n/**\n * Normalize key names to match KeyboardEvent.key\n */\nfunction normalizeKey(key) {\n const keyMap = {\n 'esc': 'Escape',\n 'escape': 'Escape',\n 'enter': 'Enter',\n 'return': 'Enter',\n 'space': ' ',\n 'spacebar': ' ',\n 'up': 'ArrowUp',\n 'down': 'ArrowDown',\n 'left': 'ArrowLeft',\n 'right': 'ArrowRight',\n 'arrowup': 'ArrowUp',\n 'arrowdown': 'ArrowDown',\n 'arrowleft': 'ArrowLeft',\n 'arrowright': 'ArrowRight',\n 'delete': 'Delete',\n 'del': 'Delete',\n 'backspace': 'Backspace',\n 'tab': 'Tab',\n 'home': 'Home',\n 'end': 'End',\n 'pageup': 'PageUp',\n 'pagedown': 'PageDown'\n };\n const lower = key.toLowerCase();\n return keyMap[lower] || key;\n}\n/**\n * Check if keyboard event matches the filter\n */\nfunction matchesKeyboardFilter(event, filter) {\n // Check key match\n if (event.key !== filter.key) {\n return false;\n }\n // If anyModifiers is true, we don't care about modifiers\n if (filter.anyModifiers) {\n return true;\n }\n // Check modifiers - by default, exact match\n // If filter specifies ctrl: true, event must have ctrlKey\n // If filter doesn't specify ctrl, event must NOT have ctrlKey\n const ctrlMatch = filter.ctrl ? event.ctrlKey : !event.ctrlKey;\n const altMatch = filter.alt ? event.altKey : !event.altKey;\n const shiftMatch = filter.shift ? event.shiftKey : !event.shiftKey;\n const metaMatch = filter.meta ? event.metaKey : !event.metaKey;\n return ctrlMatch && altMatch && shiftMatch && metaMatch;\n}\n/**\n * ConditionalIfPart handles <if> conditional rendering\n * Removes/inserts DOM nodes based on condition\n */\n// Sentinel value to distinguish \"not yet set\" from undefined\nconst NOT_SET = Symbol('not-set');\nclass ConditionalIfPart extends Part {\n constructor(ifElement) {\n super();\n this.value = NOT_SET;\n this.childFragment = null;\n const parent = ifElement.parentNode;\n // Create comment boundary markers\n this.startNode = document.createComment('if');\n this.endNode = document.createComment('/if');\n // Insert markers where <if> is\n parent.insertBefore(this.startNode, ifElement);\n parent.insertBefore(this.endNode, ifElement.nextSibling);\n // Move <if>'s children between the markers\n while (ifElement.firstChild) {\n parent.insertBefore(ifElement.firstChild, this.endNode);\n }\n // Remove the <if> element from DOM\n parent.removeChild(ifElement);\n }\n commit(value) {\n const condition = Boolean(value);\n if (this.value === value)\n return;\n this.value = value;\n if (condition) {\n // Show: restore children from fragment\n if (this.childFragment && this.childFragment.hasChildNodes()) {\n this.startNode.parentNode.insertBefore(this.childFragment, this.endNode);\n }\n }\n else {\n // Hide: move children to fragment\n if (!this.childFragment) {\n this.childFragment = document.createDocumentFragment();\n }\n let node = this.startNode.nextSibling;\n while (node && node !== this.endNode) {\n const next = node.nextSibling;\n this.childFragment.appendChild(node);\n node = next;\n }\n }\n }\n clear() {\n if (!this.childFragment) {\n this.childFragment = document.createDocumentFragment();\n }\n let node = this.startNode.nextSibling;\n while (node && node !== this.endNode) {\n const next = node.nextSibling;\n this.childFragment.appendChild(node);\n node = next;\n }\n }\n}\n/**\n * ConditionalCasePart handles <case>/<when>/<default> conditional rendering\n * Removes/inserts matching branch based on value\n */\nclass ConditionalCasePart extends Part {\n constructor(caseElement) {\n super();\n this.value = NOT_SET;\n this.branches = new Map();\n this.defaultBranch = null;\n this.currentKey = null;\n const parent = caseElement.parentNode;\n // Create comment boundary markers\n this.startNode = document.createComment('case');\n this.endNode = document.createComment('/case');\n // Insert markers where <case> is\n parent.insertBefore(this.startNode, caseElement);\n parent.insertBefore(this.endNode, caseElement.nextSibling);\n // Extract branches from <when> and <default> children\n for (const child of Array.from(caseElement.children)) {\n const childTag = child.tagName.toLowerCase();\n if (childTag === 'when') {\n const whenValue = child.getAttribute('value') || '';\n const fragment = document.createDocumentFragment();\n while (child.firstChild) {\n fragment.appendChild(child.firstChild);\n }\n this.branches.set(whenValue, fragment);\n }\n else if (childTag === 'default') {\n this.defaultBranch = document.createDocumentFragment();\n while (child.firstChild) {\n this.defaultBranch.appendChild(child.firstChild);\n }\n }\n }\n // Remove the <case> element from DOM\n parent.removeChild(caseElement);\n }\n commit(value) {\n if (this.value === value)\n return;\n this.value = value;\n const valueStr = String(value);\n // Move current content back to its fragment\n this._collectCurrent();\n // Insert matching branch\n const hasBranch = this.branches.has(valueStr);\n const matchingFragment = hasBranch ? this.branches.get(valueStr) : this.defaultBranch;\n this.currentKey = hasBranch ? valueStr : (this.defaultBranch ? '__default__' : null);\n if (matchingFragment && matchingFragment.hasChildNodes()) {\n this.startNode.parentNode.insertBefore(matchingFragment, this.endNode);\n }\n }\n _collectCurrent() {\n if (this.currentKey === null)\n return;\n const fragment = this.currentKey === '__default__'\n ? this.defaultBranch\n : this.branches.get(this.currentKey);\n if (!fragment)\n return;\n let node = this.startNode.nextSibling;\n while (node && node !== this.endNode) {\n const next = node.nextSibling;\n fragment.appendChild(node);\n node = next;\n }\n }\n clear() {\n this._collectCurrent();\n this.currentKey = null;\n }\n}\n\n/**\n * @on decorator for listening to events\n * Use in elements or controllers to listen to DOM events or custom events\n */\nconst ON_HANDLERS = getSymbol('on-handlers');\n/**\n * @on decorator for listening to events\n *\n * Works in both elements and controllers with full event delegation support.\n *\n * @param eventName - Event name(s) to listen for\n * @param selector - Optional CSS selector for event delegation\n * @param options - Event listener options including debounce/throttle\n *\n * @example\n * ```typescript\n * // In elements\n * @element('my-button')\n * class MyButton extends HTMLElement {\n * @on('click', 'button')\n * handleClick(e: MouseEvent) {\n * console.log('Button clicked!', e);\n * }\n *\n * @on('input', 'input', { debounce: 300 })\n * handleInput(e: Event) {\n * console.log('Input changed:', (e.target as HTMLInputElement).value);\n * }\n * }\n *\n * // In controllers\n * @controller('my-controller')\n * class MyController {\n * element!: HTMLElement;\n *\n * @on('count-changed')\n * handleCountChanged(e: CustomEvent) {\n * console.log('Count changed to:', e.detail.count);\n * }\n *\n * @on('click', '.item', { throttle: 100 })\n * handleItemClick(e: MouseEvent) {\n * console.log('Item clicked');\n * }\n * }\n * ```\n */\nfunction on(eventName, selectorOrOptions, options) {\n // Parse arguments to support multiple call signatures\n let selector = null;\n let opts = {};\n if (typeof selectorOrOptions === 'string') {\n selector = selectorOrOptions;\n opts = options || {};\n }\n else if (selectorOrOptions && typeof selectorOrOptions === 'object') {\n opts = selectorOrOptions;\n }\n else if (selectorOrOptions === null && options) {\n opts = options;\n }\n return function (originalMethod, context) {\n const methodName = context.name;\n const initKey = `__on_init_${methodName}_${selector || ''}_${JSON.stringify(eventName)}`;\n context.addInitializer(function () {\n const constructor = this.constructor;\n // Only initialize once per class, not per instance\n if (constructor[initKey]) {\n return;\n }\n constructor[initKey] = true;\n if (!constructor[ON_HANDLERS]) {\n constructor[ON_HANDLERS] = [];\n }\n const eventNames = Array.isArray(eventName) ? eventName : [eventName];\n for (const event of eventNames) {\n constructor[ON_HANDLERS].push({\n eventName: event,\n selector,\n methodName,\n method: originalMethod,\n options: opts\n });\n }\n });\n return originalMethod;\n };\n}\n// Note: on.ts uses leading-edge-only throttle (no trailing call).\n// createThrottled from utils has leading+trailing, so we keep a local leading-only variant.\nfunction throttle$1(fn, delay) {\n let lastCall = 0;\n return function (...args) {\n const now = Date.now();\n if (now - lastCall >= delay) {\n lastCall = now;\n fn.apply(this, args);\n }\n };\n}\n/**\n * Events that don't bubble - these require capture phase for delegation\n */\nconst NON_BUBBLING_EVENTS = new Set([\n 'scroll',\n 'focus',\n 'blur',\n 'load',\n 'unload',\n 'error',\n 'resize',\n 'abort',\n 'mouseenter',\n 'mouseleave',\n 'pointerenter',\n 'pointerleave',\n]);\n/**\n * Setup event listeners for an element or controller instance\n * Called automatically during element connection or controller attachment\n */\nfunction setupEventHandlers(instance, targetElement) {\n const handlers = instance.constructor[ON_HANDLERS];\n if (!handlers || !Array.isArray(handlers) || handlers.length === 0) {\n return;\n }\n // Initialize cleanup object if needed\n if (!instance[CLEANUP]) {\n instance[CLEANUP] = { events: [], channels: [], observers: [] };\n }\n else if (!instance[CLEANUP].events) {\n instance[CLEANUP].events = [];\n }\n else if (instance[CLEANUP].events.length > 0) {\n // Events already set up - clean them up first to avoid duplicates\n cleanupEventHandlers(instance);\n }\n for (const handler of handlers) {\n // Get current method from instance (preserves decorator stacking)\n const currentMethod = instance[handler.methodName];\n let boundMethod = currentMethod ? currentMethod.bind(instance) : handler.method.bind(instance);\n const handlerOptions = handler.options || {};\n // Parse event name for key modifiers\n // Supports both dot notation (@keydown.enter) and colon notation (@keydown:Enter)\n // Only parse colons for keyboard events, not custom events\n const isKeyboardEvent = ['keydown', 'keyup', 'keypress'].includes(handler.eventName.split('.')[0].split(':')[0]);\n const dotIndex = handler.eventName.indexOf('.');\n const colonIndex = isKeyboardEvent ? handler.eventName.indexOf(':') : -1;\n const delimiterIndex = dotIndex > 0 && colonIndex > 0\n ? Math.min(dotIndex, colonIndex)\n : Math.max(dotIndex, colonIndex);\n const baseEventName = delimiterIndex > 0\n ? handler.eventName.substring(0, delimiterIndex)\n : handler.eventName;\n const keyModifier = delimiterIndex > 0\n ? handler.eventName.substring(delimiterIndex + 1)\n : null;\n // Apply debounce (takes precedence over throttle)\n if (handlerOptions.debounce && handlerOptions.debounce > 0) {\n boundMethod = createDebounced(boundMethod, handlerOptions.debounce);\n }\n else if (handlerOptions.throttle && handlerOptions.throttle > 0) {\n boundMethod = throttle$1(boundMethod, handlerOptions.throttle);\n }\n // Create event handler with key modifier support\n // Uses shared keyboard filter implementation from parts.ts\n let keyFilter = null;\n if (keyModifier && ['keydown', 'keyup', 'keypress'].includes(baseEventName)) {\n keyFilter = parseKeyboardFilter(keyModifier);\n }\n const createKeyModifierHandler = (method) => {\n if (!keyFilter) {\n return method;\n }\n return (event) => {\n const keyEvent = event;\n if (matchesKeyboardFilter(keyEvent, keyFilter)) {\n method(event);\n }\n };\n };\n // Apply key modifier wrapper\n const keyModifierMethod = createKeyModifierHandler(boundMethod);\n // Main event handler with error handling and event delegation\n if (handler.selector) {\n // Delegated event handling - use shadow root if available\n const eventRoot = targetElement.shadowRoot || targetElement;\n const delegatedHandler = (event) => {\n const target = event.target;\n const matchingElement = (target.matches && target.matches(handler.selector) && target) ||\n (target.closest && target.closest(handler.selector)) ||\n null;\n if (!matchingElement)\n return;\n if (handlerOptions.preventDefault)\n event.preventDefault();\n if (handlerOptions.stopPropagation) {\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n try {\n keyModifierMethod(event);\n }\n catch (error) {\n console.error(`Error in event handler ${handler.methodName}:`, error);\n }\n };\n // Auto-enable capture for non-bubbling events when using delegation\n const needsCapture = NON_BUBBLING_EVENTS.has(baseEventName);\n const useCapture = handlerOptions.capture !== undefined\n ? handlerOptions.capture\n : needsCapture;\n const listenerOptions = {\n capture: useCapture,\n once: handlerOptions.once || false,\n passive: handlerOptions.passive || false,\n };\n eventRoot.addEventListener(baseEventName, delegatedHandler, listenerOptions);\n instance[CLEANUP].events.push({\n target: eventRoot,\n eventName: baseEventName,\n handler: delegatedHandler,\n options: listenerOptions,\n });\n }\n else {\n // Direct event handling - on the element itself\n // If element has shadow root, listen on both shadow root AND host element\n // to catch events from inside shadow DOM (with correct target) and on host itself\n const shadowRoot = targetElement.shadowRoot;\n // Use Symbol.for() with method name to ensure symbols are shared across Snice instances\n // Method names are unique within a class, so this prevents double-firing of the same handler\n // while allowing multiple different handlers on the same event\n const handledSymbol = Symbol.for(`snice:event-handled:${handler.methodName}`);\n const wrappedMethod = (event) => {\n if (event[handledSymbol])\n return;\n event[handledSymbol] = true;\n if (handlerOptions.preventDefault)\n event.preventDefault();\n if (handlerOptions.stopPropagation)\n event.stopPropagation();\n try {\n keyModifierMethod(event);\n }\n catch (error) {\n console.error(`Error in event handler ${handler.methodName}:`, error);\n }\n };\n const listenerOptions = {\n capture: handlerOptions.capture || false,\n once: handlerOptions.once || false,\n passive: handlerOptions.passive || false,\n };\n if (shadowRoot) {\n // Listen on shadow root for events inside shadow DOM\n shadowRoot.addEventListener(baseEventName, wrappedMethod, listenerOptions);\n instance[CLEANUP].events.push({\n target: shadowRoot,\n eventName: baseEventName,\n handler: wrappedMethod,\n options: listenerOptions,\n });\n }\n // Also listen on host element (for clicks on host itself or when no shadow root)\n targetElement.addEventListener(baseEventName, wrappedMethod, listenerOptions);\n instance[CLEANUP].events.push({\n target: targetElement,\n eventName: baseEventName,\n handler: wrappedMethod,\n options: listenerOptions,\n });\n }\n }\n}\n/**\n * Cleanup event listeners for a controller instance\n * Called automatically by the controller system during detach\n */\nfunction cleanupEventHandlers(instance) {\n if (!instance[CLEANUP]?.events)\n return;\n for (const { target, eventName, handler, options } of instance[CLEANUP].events) {\n target.removeEventListener(eventName, handler, options);\n }\n instance[CLEANUP].events = [];\n}\n\n// Controller-scoped cleanup registry\nclass ControllerScope {\n constructor() {\n this.cleanupFns = new Map();\n this.pendingOperations = new Set();\n }\n register(key, cleanup) {\n this.cleanupFns.set(key, cleanup);\n }\n unregister(key) {\n this.cleanupFns.delete(key);\n }\n async cleanup() {\n // Wait for all pending operations\n await Promise.all(this.pendingOperations);\n // Run all cleanup functions\n for (const cleanup of this.cleanupFns.values()) {\n try {\n await cleanup();\n }\n catch (error) {\n console.error('Error during cleanup:', error);\n }\n }\n this.cleanupFns.clear();\n }\n async runOperation(operation) {\n const promise = operation();\n const voidPromise = promise.then(() => { }, () => { });\n this.pendingOperations.add(voidPromise);\n try {\n const result = await promise;\n this.pendingOperations.delete(voidPromise);\n return result;\n }\n catch (error) {\n this.pendingOperations.delete(voidPromise);\n throw error;\n }\n }\n}\n/**\n * Decorator to register a controller class with a name\n * @param name The name to register the controller under\n */\nfunction controller(name) {\n return function (constructor, _context) {\n // Access globalThis.snice directly to ensure consistency\n const registry = globalThis.snice?.controllerRegistry;\n if (!registry) {\n throw new Error('Snice global registry not initialized');\n }\n registry.set(name, constructor);\n // Mark as controller class for channel decorator detection\n constructor.prototype[IS_CONTROLLER_CLASS] = true;\n return constructor;\n };\n}\n/**\n * Attaches a controller to an element\n * @param element The element to attach the controller to\n * @param controllerName The name of the controller to attach\n */\nasync function attachController(element, controllerName) {\n const existingController = element[CONTROLLER_KEY];\n const existingName = element[CONTROLLER_NAME_KEY];\n // For native elements, check if this is actually the desired controller\n const nativeController = element[NATIVE_CONTROLLER];\n if (nativeController !== undefined && nativeController !== controllerName) {\n // This attachment is outdated, skip it\n return;\n }\n if (existingName === controllerName && existingController) {\n // Already attached and controller exists\n return;\n }\n // If there's an existing controller, detach it first\n if (existingController) {\n await detachController(element);\n }\n // Access globalThis.snice directly to ensure consistency\n const registry = globalThis.snice?.controllerRegistry;\n if (!registry) {\n throw new Error('Snice global registry not initialized');\n }\n const ControllerClass = registry.get(controllerName);\n if (!ControllerClass) {\n // Debug: log what's actually in the registry\n console.error(`Controller \"${controllerName}\" not found. Available:`, Array.from(registry.keys()));\n throw new Error(`Controller \"${controllerName}\" not found in registry`);\n }\n // Create controller instance with unique ID and scope\n const controllerInstance = new ControllerClass();\n snice.controllerIdCounter += 1;\n const controllerId = snice.controllerIdCounter;\n const scope = new ControllerScope();\n // Mark this as a controller instance\n controllerInstance[IS_CONTROLLER_INSTANCE] = true;\n controllerInstance[CONTROLLER_ID] = controllerId;\n controllerInstance.element = element;\n // Pass router context from element to controller if it exists\n const routerContext = element[ROUTER_CONTEXT];\n if (routerContext !== undefined) {\n controllerInstance[ROUTER_CONTEXT] = routerContext;\n }\n // Store references\n element[CONTROLLER_KEY] = controllerInstance;\n element[CONTROLLER_NAME_KEY] = controllerName;\n element[CONTROLLER_OPERATIONS] = scope;\n // Wait for element to be ready (required)\n await element.ready;\n // Run attach in the controller's scope\n await scope.runOperation(async () => {\n await controllerInstance.attach(element);\n });\n // Setup @observe observers for controller\n setupObservers(controllerInstance, element);\n // Setup @channel handlers for controller\n setupResponseHandlers(controllerInstance, element);\n // Setup @on event handlers for controller\n setupEventHandlers(controllerInstance, element);\n element.dispatchEvent(new CustomEvent('controller-attached', {\n detail: { name: controllerName, controller: controllerInstance }\n }));\n}\n/**\n * Detaches a controller from an element\n * @param element The element to detach the controller from\n */\nasync function detachController(element) {\n const controllerInstance = element[CONTROLLER_KEY];\n const controllerName = element[CONTROLLER_NAME_KEY];\n const scope = element[CONTROLLER_OPERATIONS];\n if (!controllerInstance) {\n return;\n }\n // Run detach in the controller's scope\n if (scope) {\n await scope.runOperation(async () => {\n await controllerInstance.detach(element);\n });\n }\n else {\n await controllerInstance.detach(element);\n }\n controllerInstance.element = null;\n // Cleanup @observe observers for controller\n cleanupObservers(controllerInstance);\n // Cleanup @channel handlers for controller\n cleanupResponseHandlers(controllerInstance);\n // Cleanup @on event handlers for controller\n cleanupEventHandlers(controllerInstance);\n // Cleanup the controller scope\n if (scope) {\n await scope.cleanup();\n }\n // Clean up router context reference\n delete controllerInstance[ROUTER_CONTEXT];\n delete element[CONTROLLER_KEY];\n delete element[CONTROLLER_NAME_KEY];\n delete element[CONTROLLER_OPERATIONS];\n element.dispatchEvent(new CustomEvent('controller-detached', {\n detail: { name: controllerName, controller: controllerInstance }\n }));\n}\n/**\n * Enable controller support for native HTML elements\n * This sets up a MutationObserver to watch for controller attributes\n * on non-custom elements (elements without hyphens in their tag names)\n */\nfunction useNativeElementControllers() {\n // Return if already initialized\n if (globalThis.sniceNativeControllersInitialized) {\n return;\n }\n globalThis.sniceNativeControllersInitialized = true;\n // Process elements that already have controller attribute\n function processElement(element) {\n if (!(element instanceof HTMLElement))\n return;\n if (element.tagName.includes('-'))\n return;\n if (element[IS_ELEMENT_CLASS])\n return;\n const controllerName = element.getAttribute('controller');\n const currentControllerName = element[NATIVE_CONTROLLER];\n // No change\n if (controllerName === currentControllerName)\n return;\n // Controller removed\n if (!controllerName) {\n delete element[NATIVE_CONTROLLER];\n delete element[CONTROLLER_NAME_KEY];\n detachController(element).catch(error => {\n console.error(`Failed to detach controller from native element:`, error);\n });\n return;\n }\n // Controller added or changed\n element[NATIVE_CONTROLLER] = controllerName;\n if (!element.ready) {\n element.ready = Promise.resolve();\n }\n if (currentControllerName) {\n detachController(element).catch(error => {\n console.error(`Failed to detach old controller from native element:`, error);\n });\n }\n attachController(element, controllerName).catch(error => {\n console.error(`Failed to attach controller \"${controllerName}\" to native element:`, error);\n });\n }\n // Set up MutationObserver to watch for controller attributes\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'controller') {\n processElement(mutation.target);\n }\n else if (mutation.type === 'childList') {\n // Process added nodes\n mutation.addedNodes.forEach(node => {\n if (node instanceof HTMLElement) {\n // Process the node itself\n processElement(node);\n // Process all descendants with controller attribute\n node.querySelectorAll('[controller]:not([class*=\"-\"])').forEach(processElement);\n }\n });\n }\n }\n });\n function startObserving() {\n document.querySelectorAll('[controller]:not([class*=\"-\"])').forEach(processElement);\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: ['controller'],\n childList: true,\n subtree: true\n });\n }\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', startObserving);\n }\n else {\n startObserving();\n }\n // Store observer reference for cleanup if needed\n globalThis.sniceNativeControllerObserver = observer;\n}\n\n/**\n * @context decorator for receiving router context updates\n */\nconst CONTEXT_HANDLERS = getSymbol('context-handlers');\n/**\n * @context decorator for receiving router context updates\n *\n * @example\n * ```typescript\n * @element('my-layout')\n * class MyLayout extends HTMLElement {\n * @context\n * handleContext(ctx: Context) {\n * this.renderNav(ctx.placards, ctx.currentRoute);\n * }\n *\n * @context({ debounce: 300 })\n * handleContextDebounced(ctx: Context) {\n * // Called after 300ms of no updates\n * }\n * }\n * ```\n */\nfunction context$1(options = {}) {\n return function (originalMethod, context) {\n const methodName = context.name;\n const initKey = `__context_init_${methodName}`;\n context.addInitializer(function () {\n const constructor = this.constructor;\n if (constructor[initKey])\n return;\n constructor[initKey] = true;\n if (!constructor[CONTEXT_HANDLERS]) {\n constructor[CONTEXT_HANDLERS] = [];\n }\n constructor[CONTEXT_HANDLERS].push({\n methodName,\n method: originalMethod,\n options,\n });\n });\n return originalMethod;\n };\n}\n/**\n * Setup context handler for an element instance\n * Called automatically during element connection\n */\nfunction setupContextHandler(element) {\n const handlers = element.constructor[CONTEXT_HANDLERS];\n if (!handlers || !Array.isArray(handlers) || handlers.length === 0) {\n return;\n }\n // Get the Context instance from the router\n const ctx = element[CONTEXT_HANDLER];\n if (!ctx) {\n return;\n }\n // Store the Context instance for cleanup\n element[NAVIGATION_CONTEXT_INSTANCE] = ctx;\n // Register each handler with the Context\n for (const handler of handlers) {\n const { methodName, method, options } = handler;\n const wrappedMethodName = `__wrapped_${methodName}`;\n // Create wrapped method with timing controls\n element[wrappedMethodName] = function (context) {\n // Skip if already called once\n if (options.once && element[CONTEXT_CALLED]) {\n return;\n }\n const callMethod = () => {\n method.call(element, context);\n // Handle once option\n if (options.once) {\n element[CONTEXT_CALLED] = true;\n // Unregister after first call\n const ctx = element[NAVIGATION_CONTEXT_INSTANCE];\n if (ctx && typeof ctx[CONTEXT_UNREGISTER] === 'function') {\n ctx[CONTEXT_UNREGISTER](element);\n }\n }\n };\n if (options.debounce) {\n clearTimeout(element[CONTEXT_TIMER]);\n element[CONTEXT_TIMER] = setTimeout(callMethod, options.debounce);\n return;\n }\n if (options.throttle) {\n const now = Date.now();\n const lastCall = element[CONTEXT_TIMER] || 0;\n if (now - lastCall >= options.throttle) {\n element[CONTEXT_TIMER] = now;\n callMethod();\n }\n return;\n }\n callMethod();\n };\n // Register with the Context using the wrapped method name\n if (typeof ctx[CONTEXT_REGISTER] === 'function') {\n ctx[CONTEXT_REGISTER](element, wrappedMethodName);\n }\n }\n}\n/**\n * Cleanup context handler for an element instance\n * Called automatically during element disconnection\n */\nfunction cleanupContextHandler(element) {\n const handlers = element.constructor[CONTEXT_HANDLERS];\n if (!handlers || !Array.isArray(handlers) || handlers.length === 0) {\n return;\n }\n // Clear any pending debounce timer\n for (const handler of handlers) {\n if (handler.options.debounce && element[CONTEXT_TIMER]) {\n clearTimeout(element[CONTEXT_TIMER]);\n delete element[CONTEXT_TIMER];\n }\n // Clean up wrapped method\n const wrappedMethodName = `__wrapped_${handler.methodName}`;\n delete element[wrappedMethodName];\n }\n // Unregister from Context if available\n const ctx = element[NAVIGATION_CONTEXT_INSTANCE];\n if (ctx && typeof ctx[CONTEXT_UNREGISTER] === 'function') {\n ctx[CONTEXT_UNREGISTER](element);\n }\n delete element[NAVIGATION_CONTEXT_INSTANCE];\n delete element[CONTEXT_CALLED];\n}\n\n/**\n * @render and @styles decorators for Snice v3.0.0\n * Provides automatic differential rendering on property changes\n */\n/**\n * Global render scheduler for microtask batching\n * Batches multiple property changes into a single render\n */\nclass RenderScheduler {\n constructor() {\n this.pending = new Set();\n this.scheduled = false;\n }\n /**\n * Schedule an element for rendering\n * Batches renders in a microtask unless sync option is enabled\n */\n schedule(element, options) {\n // Sync rendering - execute immediately\n if (options.sync) {\n performRender(element, options);\n return;\n }\n // Async rendering - batch in microtask\n this.pending.add(element);\n if (!this.scheduled) {\n this.scheduled = true;\n queueMicrotask(() => this.flush());\n }\n }\n /**\n * Flush all pending renders\n */\n flush() {\n const elements = Array.from(this.pending);\n this.pending.clear();\n this.scheduled = false;\n for (const element of elements) {\n const options = element[RENDER_OPTIONS] || {};\n performRender(element, options);\n }\n }\n}\nconst renderScheduler = new RenderScheduler();\nfunction flushRenderCallbacks(element) {\n const callbacks = element[RENDER_CALLBACKS];\n if (!callbacks || callbacks.length === 0)\n return;\n const cbs = [...callbacks];\n element[RENDER_CALLBACKS] = [];\n cbs.forEach(cb => cb());\n}\n/**\n * Perform the actual render of an element\n */\nfunction performRender(element, options, precomputedResult) {\n const renderMethod = element[RENDER_METHOD];\n if (!renderMethod)\n return;\n // If once is true and we've already rendered, skip\n if (options.once && element[RENDER_INSTANCE]) {\n return;\n }\n try {\n const result = precomputedResult !== undefined ? precomputedResult : renderMethod.call(element);\n if (!element.shadowRoot)\n element.attachShadow({ mode: 'open' });\n // Non-differential rendering (string)\n if (options.differential === false) {\n if (typeof result !== 'string') {\n console.warn('Render method with differential: false must return a string');\n return;\n }\n element.shadowRoot.innerHTML = result;\n flushRenderCallbacks(element);\n return;\n }\n // Differential rendering (template)\n if (!isTemplateResult(result)) {\n console.warn('Render method must return html`` template result');\n return;\n }\n let instance = element[RENDER_INSTANCE];\n if (instance && instance.isSameTemplate(result.strings)) {\n instance.update(result.values);\n flushRenderCallbacks(element);\n return;\n }\n // Different template or first render\n if (instance)\n element.shadowRoot.innerHTML = '';\n instance = new TemplateInstance(result);\n element[RENDER_INSTANCE] = instance;\n element.shadowRoot.appendChild(instance.renderFragment());\n instance.update(result.values);\n flushRenderCallbacks(element);\n }\n catch (error) {\n console.error('Error rendering element:', error);\n }\n}\n/**\n * Request a render for an element\n * Respects debounce/throttle/once/sync options\n * @param immediate - Force immediate render (used for initial render)\n */\nfunction requestRender(element, immediate = false) {\n const options = element[RENDER_OPTIONS] || {};\n // Handle once option\n if (options.once && element[RENDER_INSTANCE]) {\n return;\n }\n // Force immediate render (for initial render)\n if (immediate) {\n performRender(element, options);\n return;\n }\n // Handle debounce\n if (options.debounce !== undefined && options.debounce > 0) {\n if (!element[RENDER_TIMERS]) {\n element[RENDER_TIMERS] = {};\n }\n clearTimeout(element[RENDER_TIMERS].debounce);\n element[RENDER_TIMERS].debounce = setTimeout(() => {\n renderScheduler.schedule(element, options);\n }, options.debounce);\n return;\n }\n // Handle throttle\n if (options.throttle !== undefined && options.throttle > 0) {\n if (!element[RENDER_TIMERS]) {\n element[RENDER_TIMERS] = { lastThrottle: 0 };\n }\n const timers = element[RENDER_TIMERS];\n const now = Date.now();\n if (timers.lastThrottle === 0 || now - timers.lastThrottle >= options.throttle) {\n timers.lastThrottle = now;\n renderScheduler.schedule(element, options);\n return;\n }\n if (!timers.throttleTimer) {\n const remaining = options.throttle - (now - timers.lastThrottle);\n timers.throttleTimer = setTimeout(() => {\n timers.throttleTimer = null;\n timers.lastThrottle = Date.now();\n renderScheduler.schedule(element, options);\n }, remaining);\n }\n return;\n }\n // Normal rendering (with microtask batching unless sync)\n renderScheduler.schedule(element, options);\n}\n/**\n * @render decorator for component rendering\n *\n * Marks a method as the render method for the component.\n * The method should return html`...` template.\n * Automatically re-renders when properties change (unless once: true).\n *\n * @example\n * ```typescript\n * @render()\n * renderContent() {\n * return html`<div>${this.count}</div>`;\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Debounced rendering\n * @render({ debounce: 100 })\n * renderContent() {\n * return html`<div>${this.searchTerm}</div>`;\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Render only once (manual re-renders only)\n * @render({ once: true })\n * renderContent() {\n * return html`<div>Static content</div>`;\n * }\n * ```\n */\nfunction render(options = {}) {\n return function (originalMethod, context) {\n context.name;\n context.addInitializer(function () {\n // Store the render method and options\n this[RENDER_METHOD] = originalMethod;\n this[RENDER_OPTIONS] = options;\n });\n // Return wrapped method that triggers re-render when called manually\n return function (...args) {\n // Call original method to get the template\n const result = originalMethod.apply(this, args);\n // Always render when method is called manually (even if once: true)\n // Force immediate render to bypass all options, pass precomputed result to avoid calling method twice\n performRender(this, {}, result);\n return result;\n };\n };\n}\n/**\n * @styles decorator for component styles\n *\n * Marks a method as the styles method for the component.\n * The method should return css`...` template.\n * Styles are applied once when the component is connected.\n *\n * @example\n * ```typescript\n * @styles()\n * styles() {\n * return css`:host { display: block; }`;\n * }\n * ```\n */\nfunction styles() {\n return function (originalMethod, context) {\n context.addInitializer(function () {\n // Store the styles method\n this[STYLES_METHOD] = originalMethod;\n });\n return originalMethod;\n };\n}\n/**\n * Apply styles to an element\n * Called during element initialization\n */\nfunction applyStyles(element) {\n const stylesMethod = element[STYLES_METHOD];\n if (!stylesMethod)\n return;\n // Only apply once\n if (element[STYLES_APPLIED])\n return;\n element[STYLES_APPLIED] = true;\n try {\n const result = stylesMethod.call(element);\n if (!isCSSResult(result)) {\n console.warn('Styles method must return css`` template result');\n return;\n }\n // Ensure shadow root exists\n if (!element.shadowRoot) {\n element.attachShadow({ mode: 'open' });\n }\n if (!element.shadowRoot)\n return;\n // Prefer constructable stylesheets\n if (result.styleSheet && 'adoptedStyleSheets' in element.shadowRoot) {\n element.shadowRoot.adoptedStyleSheets = [result.styleSheet];\n return;\n }\n // Fallback to <style> tag\n const style = document.createElement('style');\n style.textContent = result.cssText;\n element.shadowRoot.appendChild(style);\n }\n catch (error) {\n console.error('Error applying styles:', error);\n }\n}\n\n/**\n * Applies core element functionality to a constructor\n * This is shared between @element and @page decorators\n */\nfunction applyElementFunctionality(constructor) {\n // Mark as element class for channel decorator detection\n constructor.prototype[IS_ELEMENT_CLASS] = true;\n // Add controller property to all elements\n const originalConnectedCallback = constructor.prototype.connectedCallback;\n const originalDisconnectedCallback = constructor.prototype.disconnectedCallback;\n const originalAttributeChangedCallback = constructor.prototype.attributeChangedCallback;\n // Add 'controller' and all reflected properties to observed attributes\n const observedAttributes = constructor.observedAttributes || [];\n if (!observedAttributes.includes('controller')) {\n observedAttributes.push('controller');\n }\n // Add all properties to observed attributes (skip attribute: false)\n const properties = constructor[PROPERTIES];\n if (properties) {\n for (const [propName, propOptions] of properties) {\n if (propOptions.attribute === false)\n continue;\n const attributeName = getAttrName(propOptions, propName);\n if (!observedAttributes.includes(attributeName)) {\n observedAttributes.push(attributeName);\n }\n }\n }\n Object.defineProperty(constructor, 'observedAttributes', {\n get() { return observedAttributes; },\n configurable: true\n });\n // Add ready property - always returns a promise\n Object.defineProperty(constructor.prototype, 'ready', {\n get() {\n if (!this[READY_PROMISE]) {\n // Create a pending promise if not yet initialized\n this[READY_PROMISE] = new Promise((resolve) => {\n this[READY_RESOLVE] = resolve;\n });\n }\n return this[READY_PROMISE];\n },\n enumerable: true,\n configurable: true\n });\n // Note: rendered promise is stored via symbols RENDERED_PROMISE and RENDERED_RESOLVE\n // It's not exposed as a public property - only accessible via test utilities\n // This prevents accidental misuse in production code\n // Add controller property\n Object.defineProperty(constructor.prototype, 'controller', {\n get() {\n return this[CONTROLLER];\n },\n set(value) {\n const oldValue = this[CONTROLLER];\n this[CONTROLLER] = value;\n if (value === oldValue)\n return;\n if (value) {\n attachController(this, value).catch(error => {\n console.error(`Failed to attach controller \"${value}\":`, error);\n });\n return;\n }\n if (oldValue) {\n detachController(this).catch(error => {\n console.error(`Failed to detach controller:`, error);\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n constructor.prototype.connectedCallback = async function () {\n // If ready promise was already created (controller attached before connected), use existing resolve\n // Otherwise create the ready promise now\n if (!this[READY_PROMISE]) {\n this[READY_PROMISE] = new Promise((resolve) => {\n this[READY_RESOLVE] = resolve;\n });\n }\n // Only run initialization logic once, but re-establish handlers on reconnection\n if (this[INITIALIZED]) {\n // Re-establish handlers that get cleaned up on disconnect\n setupEventHandlers(this, this);\n setupResponseHandlers(this, this);\n setupContextHandler(this);\n // Re-establish observers that get cleaned up on disconnect\n try {\n setupObservers(this, this);\n }\n catch (error) {\n console.error(`Error setting up observers for ${this.tagName} on reconnection:`, error);\n }\n // Call user's connectedCallback\n if (originalConnectedCallback) {\n originalConnectedCallback.call(this);\n }\n return;\n }\n // Mark that properties are being initialized from attributes\n // This allows property setters to work during initialization\n this[PROPERTIES_INITIALIZED] = true;\n // Initialize properties from attributes before rendering\n const properties = constructor[PROPERTIES];\n if (properties) {\n for (const [propName, propOptions] of properties) {\n if (propOptions.attribute === false)\n continue;\n const attributeName = getAttrName(propOptions, propName);\n if (!this.hasAttribute(attributeName))\n continue;\n const attrValue = this.getAttribute(attributeName);\n ensureSet(this, EXPLICITLY_SET_PROPERTIES).add(propName);\n if (propOptions.type === Boolean && attrValue === '') {\n this.setAttribute(attributeName, 'true');\n }\n this[propName] = parseAttributeValue(attrValue, propOptions);\n }\n }\n // Clear pre-init values for properties that have HTML attributes\n if (this[PRE_INIT_PROPERTY_VALUES]) {\n for (const [propName, propValue] of Array.from(this[PRE_INIT_PROPERTY_VALUES].entries())) {\n const propOptions = properties?.get(propName);\n const attributeName = getAttrName(propOptions || {}, propName);\n this[PRE_INIT_PROPERTY_VALUES].delete(propName);\n if (!this.hasAttribute(attributeName)) {\n this[propName] = propValue;\n }\n }\n delete this[PRE_INIT_PROPERTY_VALUES];\n }\n applyStyles(this);\n setupEventHandlers(this, this);\n setupResponseHandlers(this, this);\n setupContextHandler(this);\n this[INITIALIZED] = true;\n if (originalConnectedCallback) {\n originalConnectedCallback.call(this);\n }\n // v4.16.1: Render, run @ready handlers, THEN resolve .ready promise\n // This ensures `await el.ready` waits for both initial render AND all async @ready() methods\n //\n // We await a microtask boundary (to defer render for parent property bindings),\n // then run render + @ready handlers sequentially, then resolve .ready.\n const readyHandlers = constructor[READY_HANDLERS];\n // Await one microtask to defer initial render (allows parent property bindings)\n await new Promise(r => queueMicrotask(r));\n if (this[RENDER_METHOD]) {\n requestRender(this, true);\n }\n // Setup observers after render so shadow DOM content exists\n try {\n setupObservers(this, this);\n }\n catch (error) {\n console.error(`Error setting up observers for ${this.tagName}:`, error);\n }\n // Run @ready handlers serially, awaiting each\n if (readyHandlers) {\n for (const handler of readyHandlers) {\n try {\n await handler.method.call(this);\n }\n catch (error) {\n console.error(`Error in @ready handler ${handler.methodName}:`, error);\n }\n }\n }\n // NOW resolve — render done AND all @ready handlers complete\n if (this[READY_RESOLVE]) {\n this[READY_RESOLVE]();\n this[READY_RESOLVE] = null;\n }\n };\n constructor.prototype.disconnectedCallback = async function () {\n // Call @dispose handlers\n const disposeHandlers = constructor[DISPOSE_HANDLERS];\n if (disposeHandlers) {\n for (const handler of disposeHandlers) {\n try {\n await handler.method.call(this);\n }\n catch (error) {\n console.error(`Error in @dispose handler ${handler.methodName}:`, error);\n }\n }\n }\n // Call original user-defined disconnectedCallback\n if (originalDisconnectedCallback) {\n originalDisconnectedCallback.call(this);\n }\n if (this[CONTROLLER]) {\n detachController(this).catch(error => {\n console.error(`Failed to detach controller:`, error);\n });\n }\n // Cleanup @on event handlers (v2.5.4 compatibility restored!)\n cleanupEventHandlers(this);\n // Cleanup @respond handlers\n cleanupResponseHandlers(this);\n // Cleanup @context handler\n cleanupContextHandler(this);\n // Cleanup @observe observers\n cleanupObservers(this);\n };\n constructor.prototype.attributeChangedCallback = function (name, oldValue, newValue) {\n originalAttributeChangedCallback?.call(this, name, oldValue, newValue);\n if (name === 'controller') {\n this.controller = newValue;\n return;\n }\n const properties = constructor[PROPERTIES];\n if (!properties)\n return;\n for (const [propName, propOptions] of properties) {\n const attributeName = getAttrName(propOptions, propName);\n if (attributeName.toLowerCase() !== name.toLowerCase())\n continue;\n const currentValue = this[PROPERTY_VALUES]?.[propName];\n const parsedValue = parseAttributeValue(newValue, propOptions, currentValue, undefined);\n if (currentValue === parsedValue)\n break;\n ensureSet(this, EXPLICITLY_SET_PROPERTIES).add(propName);\n ensureObj(this, PROPERTY_VALUES)[propName] = parsedValue;\n if (!this[SETTING_FROM_PROPERTY]?.has(name.toLowerCase())) {\n invokeWatchers(this, constructor, propName, currentValue, parsedValue);\n if (this[RENDER_METHOD] && this[INITIALIZED]) {\n requestRender(this);\n }\n }\n break;\n }\n };\n // Add connectedMoveCallback for handling DOM moves\n constructor.prototype.connectedMoveCallback = async function () {\n // Call @moved handlers\n const movedHandlers = constructor[MOVED_HANDLERS];\n if (movedHandlers) {\n for (const handler of movedHandlers) {\n try {\n await handler.method.call(this);\n }\n catch (error) {\n console.error(`Error in @moved handler ${handler.methodName}:`, error);\n }\n }\n }\n };\n // Add adoptedCallback for handling document adoption\n constructor.prototype.adoptedCallback = async function () {\n // Call @adopted handlers\n const adoptedHandlers = constructor[ADOPTED_HANDLERS];\n if (adoptedHandlers) {\n for (const handler of adoptedHandlers) {\n try {\n await handler.method.call(this);\n }\n catch (error) {\n console.error(`Error in @adopted handler ${handler.methodName}:`, error);\n }\n }\n }\n };\n}\nfunction defineElement(tagName, constructor, context, options) {\n if (context.metadata && context.metadata[PROPERTIES]) {\n if (!constructor[PROPERTIES])\n constructor[PROPERTIES] = new Map();\n for (const [key, value] of context.metadata[PROPERTIES]) {\n constructor[PROPERTIES].set(key, value);\n }\n }\n if (options?.formAssociated)\n constructor.formAssociated = true;\n applyElementFunctionality(constructor);\n if (customElements.get(tagName)) {\n if (globalThis.SNICE_DEBUG)\n console.warn(`[snice] \"${tagName}\" is already registered. Skipping.`);\n return constructor;\n }\n customElements.define(tagName, constructor);\n return constructor;\n}\nfunction element(tagName, options) {\n return function (constructor, context) {\n return defineElement(tagName, constructor, context, options);\n };\n}\nfunction layout(tagName) {\n return function (constructor, context) {\n return defineElement(tagName, constructor, context);\n };\n}\nfunction property(options) {\n return function (_value, context) {\n const propertyKey = context.name;\n // Use metadata to store property information at decoration time\n if (!context.metadata) {\n context.metadata = {};\n }\n if (!context.metadata[PROPERTIES]) {\n context.metadata[PROPERTIES] = new Map();\n }\n context.metadata[PROPERTIES].set(propertyKey, options || {});\n // Return a field initializer function for new decorators\n return function (initialValue) {\n // Ensure constructor[PROPERTIES] exists\n const constructor = this.constructor;\n if (!constructor[PROPERTIES]) {\n constructor[PROPERTIES] = new Map();\n }\n // Detect type from initial value if not explicitly provided\n const finalOptions = { ...options };\n if (!finalOptions.type && initialValue !== undefined) {\n finalOptions.type = detectType(initialValue);\n }\n // Always store property options on constructor for runtime access\n constructor[PROPERTIES].set(propertyKey, finalOptions);\n // Set up the property descriptor on first access\n if (!Object.hasOwn(this.constructor.prototype, propertyKey)) {\n const descriptor = {\n get() {\n // attribute: false — use internal storage only, no DOM sync\n if (finalOptions?.attribute === false) {\n if (this[PROPERTY_VALUES] && propertyKey in this[PROPERTY_VALUES]) {\n return this[PROPERTY_VALUES][propertyKey];\n }\n if (this[PRE_INIT_PROPERTY_VALUES]?.has(propertyKey)) {\n return this[PRE_INIT_PROPERTY_VALUES].get(propertyKey);\n }\n return initialValue;\n }\n // Always read from DOM attribute - no internal state\n const attributeName = getAttrName(finalOptions || {}, propertyKey);\n const attrValue = this.getAttribute?.(attributeName);\n // If attribute exists, parse it\n if (attrValue !== null) {\n return parseAttributeValue(attrValue, finalOptions || {}, undefined, initialValue);\n }\n // For Boolean properties that have been explicitly set via attribute (and then removed),\n // follow HTML boolean attribute semantics (absence = false)\n const inferredType = finalOptions?.type || detectType(initialValue);\n if (inferredType === Boolean && this[EXPLICITLY_SET_PROPERTIES]?.has(propertyKey)) {\n return false;\n }\n // Check for pre-init property values (set before element was connected)\n if (this[PRE_INIT_PROPERTY_VALUES]?.has(propertyKey)) {\n return this[PRE_INIT_PROPERTY_VALUES].get(propertyKey);\n }\n // Otherwise return initial value (respects default values like showRememberMe = true)\n return initialValue;\n },\n set(newValue) {\n const oldValue = this[propertyKey];\n if (oldValue === newValue)\n return;\n // Pre-init: store for later, don't reflect to DOM yet\n if (!this[PROPERTIES_INITIALIZED]) {\n if (!this[PRE_INIT_PROPERTY_VALUES])\n this[PRE_INIT_PROPERTY_VALUES] = new Map();\n this[PRE_INIT_PROPERTY_VALUES].set(propertyKey, newValue);\n return;\n }\n // attribute: false — store internally, skip DOM reflection\n if (finalOptions?.attribute === false) {\n ensureObj(this, PROPERTY_VALUES)[propertyKey] = newValue;\n }\n else {\n const attributeName = getAttrName(finalOptions, propertyKey);\n const attributeValue = valueToAttribute(newValue, finalOptions, initialValue);\n ensureSet(this, EXPLICITLY_SET_PROPERTIES).add(propertyKey);\n ensureSet(this, SETTING_FROM_PROPERTY).add(attributeName.toLowerCase());\n if (attributeValue === null) {\n this.removeAttribute?.(attributeName);\n }\n else {\n this.setAttribute?.(attributeName, attributeValue);\n }\n setTimeout(() => {\n this[SETTING_FROM_PROPERTY]?.delete(attributeName.toLowerCase());\n }, 0);\n }\n invokeWatchers(this, this.constructor, propertyKey, oldValue, newValue);\n if (this[RENDER_METHOD] && this[INITIALIZED]) {\n requestRender(this);\n }\n },\n configurable: true,\n enumerable: true\n };\n Object.defineProperty(this.constructor.prototype, propertyKey, descriptor);\n }\n // Initialize the property value\n ensureObj(this, PROPERTY_VALUES)[propertyKey] = initialValue;\n return initialValue;\n };\n };\n}\nfunction getQueryRoot(instance) {\n const isController = instance[IS_CONTROLLER_INSTANCE] === true;\n return isController && instance.element ? instance.element : instance;\n}\nfunction query(selector, options = {}) {\n return function (_value, context) {\n const { light = false, shadow = true } = options;\n const propertyKey = context.name;\n return function (initialValue) {\n if (!Object.hasOwn(this.constructor.prototype, propertyKey)) {\n Object.defineProperty(this.constructor.prototype, propertyKey, {\n get() {\n const root = getQueryRoot(this);\n let result = null;\n if (shadow && root.shadowRoot)\n result = root.shadowRoot.querySelector(selector);\n if (!result && light)\n result = root.querySelector(selector);\n return result || null;\n },\n set() { },\n configurable: true,\n enumerable: true\n });\n }\n return initialValue;\n };\n };\n}\nfunction queryAll(selector, options = {}) {\n return function (_value, context) {\n const { light = false, shadow = true } = options;\n const propertyKey = context.name;\n return function (initialValue) {\n if (!Object.hasOwn(this.constructor.prototype, propertyKey)) {\n Object.defineProperty(this.constructor.prototype, propertyKey, {\n get() {\n const root = getQueryRoot(this);\n const results = [];\n if (shadow && root.shadowRoot)\n results.push(...root.shadowRoot.querySelectorAll(selector));\n if (light)\n results.push(...root.querySelectorAll(selector));\n return results;\n },\n set() { },\n configurable: true,\n enumerable: true\n });\n }\n return initialValue;\n };\n };\n}\nfunction watch(...propertyNames) {\n return function (target, context) {\n const methodName = context.name;\n const initKey = `__watch_init_${methodName}`;\n context.addInitializer(function () {\n const constructor = this.constructor;\n if (constructor[initKey])\n return;\n constructor[initKey] = true;\n if (!constructor[PROPERTY_WATCHERS]) {\n constructor[PROPERTY_WATCHERS] = new Map();\n }\n for (const propertyName of propertyNames) {\n if (!constructor[PROPERTY_WATCHERS].has(propertyName)) {\n constructor[PROPERTY_WATCHERS].set(propertyName, []);\n }\n constructor[PROPERTY_WATCHERS].get(propertyName).push({\n methodName,\n method: target\n });\n }\n });\n };\n}\n/**\n * Decorator that injects router context into a property\n * The context is automatically provided to page components by the router\n */\nfunction context() {\n return function (_value, context) {\n const propertyKey = context.name;\n // Return a field initializer function for new decorators\n return function (initialValue) {\n // Set up the property descriptor on first access\n if (!Object.hasOwn(this.constructor.prototype, propertyKey)) {\n const descriptor = {\n get() {\n // Cached context\n if (this[ROUTER_CONTEXT] !== undefined) {\n return this[ROUTER_CONTEXT];\n }\n // Resolve dispatch target\n const isController = this[IS_CONTROLLER_INSTANCE] === true;\n let targetElement = isController && this.element ? this.element : this;\n // Controller was detached\n if (!targetElement || !targetElement.dispatchEvent)\n return undefined;\n // Shadow DOM: dispatch on host for proper bubbling\n if (targetElement.getRootNode && targetElement.getRootNode() instanceof ShadowRoot) {\n targetElement = targetElement.getRootNode().host;\n }\n // Request context from parent page\n const detail = { target: this };\n targetElement.dispatchEvent(new CustomEvent('@context/request', {\n bubbles: true,\n cancelable: true,\n detail\n }));\n // No context provided\n if (detail.context === undefined)\n return undefined;\n // Cache and return\n this[ROUTER_CONTEXT] = detail.context;\n return detail.context;\n },\n set() {\n // Context is read-only\n },\n configurable: true,\n enumerable: true\n };\n Object.defineProperty(this.constructor.prototype, propertyKey, descriptor);\n }\n return initialValue;\n };\n };\n}\nfunction registerHandler(symbol, prefix, target, context, extra) {\n const methodName = context.name;\n const initKey = `__${prefix}_init_${methodName}`;\n context.addInitializer(function () {\n const constructor = this.constructor;\n if (constructor[initKey])\n return;\n constructor[initKey] = true;\n if (!constructor[symbol])\n constructor[symbol] = [];\n constructor[symbol].push({ methodName, method: target, ...extra });\n });\n}\nfunction ready() {\n return function (target, context) {\n registerHandler(READY_HANDLERS, 'ready', target, context);\n };\n}\nfunction dispose() {\n return function (target, context) {\n registerHandler(DISPOSE_HANDLERS, 'dispose', target, context);\n };\n}\nfunction createLifecycleDecorator(handlersSymbol, timersSymbol, prefix) {\n return function (options = {}) {\n return function (originalMethod, context) {\n registerHandler(handlersSymbol, prefix, originalMethod, context, { options });\n const methodName = context.name;\n return function (...args) {\n if (!this[timersSymbol])\n this[timersSymbol] = new Map();\n if (!this[timersSymbol].has(methodName)) {\n this[timersSymbol].set(methodName, { throttleTimer: null, debounceTimer: null, lastThrottleCall: 0 });\n }\n const timers = this[timersSymbol].get(methodName);\n const exec = (...a) => originalMethod.apply(this, a);\n if (options.debounce > 0) {\n clearTimeout(timers.debounceTimer);\n timers.debounceTimer = setTimeout(() => exec(...args), options.debounce);\n return undefined;\n }\n if (options.throttle > 0) {\n const now = Date.now();\n if (timers.lastThrottleCall === 0 || now - timers.lastThrottleCall >= options.throttle) {\n timers.lastThrottleCall = now;\n return exec(...args);\n }\n if (!timers.throttleTimer) {\n const remaining = options.throttle - (now - timers.lastThrottleCall);\n timers.throttleTimer = setTimeout(() => {\n timers.throttleTimer = null;\n timers.lastThrottleCall = Date.now();\n exec(...args);\n }, remaining);\n }\n return undefined;\n }\n return exec(...args);\n };\n };\n };\n}\nconst moved = createLifecycleDecorator(MOVED_HANDLERS, MOVED_TIMERS, 'moved');\nconst adopted = createLifecycleDecorator(ADOPTED_HANDLERS, ADOPTED_TIMERS, 'adopted');\n\n/*!\n * pica-route v1.1.2\n * A pure URL pattern matching library compatible with route-parser API\n * (c) 2024\n * Released under the MIT License.\n */\nclass Route {\n constructor(pattern) {\n this.parsed = this.parsePattern(pattern);\n }\n get spec() {\n return this.parsed.template;\n }\n parsePattern(pattern) {\n // Handle optional query syntax (?query=:param)\n let pathPattern = pattern;\n let queryPattern = '';\n let queryOptional = false;\n const queryIndex = pattern.indexOf('?');\n if (queryIndex !== -1) {\n pathPattern = pattern.slice(0, queryIndex);\n queryPattern = pattern.slice(queryIndex + 1);\n // Check if query is wrapped in optional syntax (?...)\n if (pathPattern.endsWith('(') && queryPattern.endsWith(')')) {\n queryOptional = true;\n pathPattern = pathPattern.slice(0, -1);\n queryPattern = queryPattern.slice(0, -1);\n }\n }\n return {\n pathSegments: this.parseSegments(pathPattern),\n querySegments: queryPattern ? this.parseQuerySegments(queryPattern) : [],\n queryOptional,\n template: pattern\n };\n }\n parseSegments(pattern) {\n const segments = [];\n let i = 0;\n while (i < pattern.length) {\n const char = pattern[i];\n switch (char) {\n case '(':\n // Parse optional group\n const { segments: optionalSegments, endIndex } = this.parseOptionalGroup(pattern, i);\n segments.push({ type: 'optional', segments: optionalSegments });\n i = endIndex + 1;\n break;\n case ':':\n // Parse parameter\n const { name, endIndex: paramEndIndex } = this.parseIdentifier(pattern, i + 1);\n segments.push({ type: 'param', name });\n i = paramEndIndex;\n break;\n case '*':\n // Parse splat\n const { name: splatName, endIndex: splatEndIndex } = this.parseIdentifier(pattern, i + 1);\n segments.push({ type: 'splat', name: splatName });\n i = splatEndIndex;\n break;\n default:\n // Parse literal text\n const { value, endIndex: literalEndIndex } = this.parseLiteral(pattern, i);\n if (value) {\n segments.push({ type: 'literal', value });\n }\n i = literalEndIndex;\n break;\n }\n }\n return segments;\n }\n parseOptionalGroup(pattern, startIndex) {\n let depth = 1;\n let i = startIndex + 1;\n while (i < pattern.length && depth > 0) {\n if (pattern[i] === '(')\n depth++;\n if (pattern[i] === ')')\n depth--;\n i++;\n }\n const content = pattern.slice(startIndex + 1, i - 1);\n return {\n segments: this.parseSegments(content),\n endIndex: i - 1\n };\n }\n parseIdentifier(pattern, startIndex) {\n let i = startIndex;\n while (i < pattern.length && /[\\w-]/.test(pattern[i])) {\n i++;\n }\n return {\n name: pattern.slice(startIndex, i),\n endIndex: i\n };\n }\n parseLiteral(pattern, startIndex) {\n let i = startIndex;\n while (i < pattern.length && !'(:*('.includes(pattern[i])) {\n i++;\n }\n return {\n value: pattern.slice(startIndex, i),\n endIndex: i\n };\n }\n parseQuerySegments(queryPattern) {\n // Remove optional group syntax wrapping the query\n let cleanPattern = queryPattern;\n if (cleanPattern.startsWith('(') && cleanPattern.endsWith(')')) {\n cleanPattern = cleanPattern.slice(1, -1);\n }\n const segments = [];\n let i = 0;\n while (i < cleanPattern.length) {\n switch (cleanPattern[i]) {\n case ':':\n const { name, endIndex } = this.parseIdentifier(cleanPattern, i + 1);\n segments.push({ type: 'param', name });\n i = endIndex;\n break;\n default:\n const { value, endIndex: literalEndIndex } = this.parseQueryLiteral(cleanPattern, i);\n if (value) {\n segments.push({ type: 'literal', value });\n }\n i = literalEndIndex;\n break;\n }\n }\n return segments;\n }\n parseQueryLiteral(pattern, startIndex) {\n let i = startIndex;\n while (i < pattern.length && pattern[i] !== ':') {\n i++;\n }\n return {\n value: pattern.slice(startIndex, i),\n endIndex: i\n };\n }\n getAllParamNames() {\n const paramNames = new Set();\n const collectParams = (segments) => {\n for (const segment of segments) {\n switch (segment.type) {\n case 'param':\n case 'splat':\n paramNames.add(segment.name);\n break;\n case 'optional':\n collectParams(segment.segments);\n break;\n }\n }\n };\n collectParams(this.parsed.pathSegments);\n collectParams(this.parsed.querySegments);\n return Array.from(paramNames);\n }\n canMatchRemainingSegments(path, startIndex, segments) {\n // Quick check: try to match the remaining segments\n // This is a simplified check - we just look for literal segments that must exist\n let pathIndex = startIndex;\n for (const segment of segments) {\n if (segment.type === 'literal') {\n const literalIndex = path.indexOf(segment.value, pathIndex);\n if (literalIndex === -1) {\n return false; // Required literal not found\n }\n pathIndex = literalIndex + segment.value.length;\n }\n // For optional, param, and splat segments, we're more permissive in this quick check\n }\n return true;\n }\n match(url) {\n const [pathPart, queryPart] = url.split('?');\n const pathParams = this.matchPath(pathPart, this.parsed.pathSegments);\n if (pathParams === false) {\n return false;\n }\n const queryParams = this.matchQuery(queryPart || '', this.parsed.querySegments);\n if (queryParams === false) {\n return false;\n }\n // Initialize result with all optional parameters set to undefined\n const allParams = this.getAllParamNames();\n const result = {};\n // Set all parameters to undefined initially\n for (const paramName of allParams) {\n result[paramName] = undefined;\n }\n // Override with actual matched values\n Object.assign(result, pathParams, queryParams);\n return result;\n }\n matchPath(path, segments) {\n const result = {};\n let pathIndex = 0;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const remainingSegments = segments.slice(i + 1);\n const matchResult = this.matchSegment(path, pathIndex, segment, remainingSegments);\n if (matchResult === false) {\n return false;\n }\n Object.assign(result, matchResult.params);\n pathIndex = matchResult.nextIndex;\n }\n // Check if we've consumed the entire path\n if (pathIndex < path.length) {\n return false;\n }\n return result;\n }\n matchSegment(path, startIndex, segment, remainingSegments = []) {\n switch (segment.type) {\n case 'literal':\n if (path.slice(startIndex, startIndex + segment.value.length) === segment.value) {\n return { params: {}, nextIndex: startIndex + segment.value.length };\n }\n return false;\n case 'param': {\n let endIndex = startIndex;\n // Check if the next segment is a literal and find where it starts\n const nextSegment = remainingSegments[0];\n let stopChars = ['/', '?'];\n if (nextSegment && nextSegment.type === 'literal') {\n // For parameters followed by literals, we need to find where the literal starts\n const literalValue = nextSegment.value;\n const literalStart = path.indexOf(literalValue, startIndex);\n if (literalStart !== -1) {\n endIndex = literalStart;\n }\n else {\n // Literal not found, this parameter can't match\n return false;\n }\n }\n else {\n // Default behavior - stop at / or ?\n while (endIndex < path.length && !stopChars.includes(path[endIndex])) {\n endIndex++;\n }\n }\n if (endIndex === startIndex)\n return false;\n let value;\n try {\n value = decodeURIComponent(path.slice(startIndex, endIndex));\n }\n catch (e) {\n // If decoding fails, use the original value\n value = path.slice(startIndex, endIndex);\n }\n // If we hit a query string, we should reject this match for path parameters\n if (endIndex < path.length && path[endIndex] === '?' && remainingSegments.length > 0) {\n return false;\n }\n // Keep values as strings to match route-parser behavior\n return {\n params: { [segment.name]: value },\n nextIndex: endIndex\n };\n }\n case 'splat': {\n // For splats, we need to find the optimal stopping point by looking ahead\n let endIndex = path.length;\n const nextSegment = remainingSegments[0];\n if (nextSegment) {\n switch (nextSegment.type) {\n case 'literal':\n // For literal dots after splats, use first occurrence (for file extensions)\n // For other literals, use last occurrence\n if (nextSegment.value === '.') {\n const firstDotIndex = path.indexOf('.', startIndex);\n if (firstDotIndex !== -1) {\n endIndex = firstDotIndex;\n }\n }\n else {\n // Find the last occurrence of the next literal\n const literalIndex = path.lastIndexOf(nextSegment.value);\n if (literalIndex !== -1 && literalIndex >= startIndex) {\n endIndex = literalIndex;\n }\n }\n break;\n case 'param':\n // For parameter after splat, find the last slash\n let lastSlashIndex = -1;\n for (let i = path.length - 1; i >= startIndex; i--) {\n if (path[i] === '/') {\n lastSlashIndex = i;\n break;\n }\n }\n if (lastSlashIndex !== -1) {\n endIndex = lastSlashIndex;\n }\n break;\n case 'splat':\n // For consecutive splats, give this splat everything up to the last slash\n // The next splat gets the last component\n let lastSlash = -1;\n for (let i = path.length - 1; i > startIndex; i--) {\n if (path[i] === '/') {\n lastSlash = i + 1; // Include the slash\n break;\n }\n }\n if (lastSlash !== -1) {\n endIndex = lastSlash;\n }\n else {\n // No slash found, this splat gets everything except the last component\n const pathSegments = path.slice(startIndex).split('/').filter(s => s);\n if (pathSegments.length > 1) {\n endIndex = startIndex + pathSegments.slice(0, -1).join('/').length + 1;\n }\n else {\n endIndex = startIndex; // Give nothing to this splat\n }\n }\n break;\n case 'optional':\n // Look for literals inside optional groups\n const findFirstLiteral = (segs) => {\n for (const seg of segs) {\n if (seg.type === 'literal')\n return seg.value;\n if (seg.type === 'optional') {\n const nested = findFirstLiteral(seg.segments);\n if (nested)\n return nested;\n }\n }\n return null;\n };\n const firstLiteral = findFirstLiteral(nextSegment.segments);\n if (firstLiteral) {\n const literalIndex = path.lastIndexOf(firstLiteral);\n if (literalIndex !== -1 && literalIndex >= startIndex) {\n endIndex = literalIndex;\n }\n }\n break;\n }\n }\n // Don't go past query parameters\n const queryIndex = path.indexOf('?', startIndex);\n if (queryIndex !== -1 && queryIndex < endIndex) {\n endIndex = queryIndex;\n }\n let value;\n try {\n value = decodeURIComponent(path.slice(startIndex, endIndex));\n }\n catch (e) {\n // If decoding fails, use the original value\n value = path.slice(startIndex, endIndex);\n }\n return {\n params: { [segment.name]: value },\n nextIndex: endIndex\n };\n }\n case 'optional': {\n // Try to match the optional segment first, with backtracking if needed\n let tempIndex = startIndex;\n let params = {};\n let allMatched = true;\n for (let i = 0; i < segment.segments.length; i++) {\n const innerSegment = segment.segments[i];\n const remainingInner = segment.segments.slice(i + 1);\n const innerResult = this.matchSegment(path, tempIndex, innerSegment, remainingInner);\n if (innerResult === false) {\n allMatched = false;\n break;\n }\n Object.assign(params, innerResult.params);\n tempIndex = innerResult.nextIndex;\n }\n if (allMatched) {\n // Check if the rest of the segments can still be matched\n const canMatchRemaining = this.canMatchRemainingSegments(path, tempIndex, remainingSegments);\n if (canMatchRemaining) {\n return {\n params,\n nextIndex: tempIndex\n };\n }\n }\n // Optional segment either didn't match or would prevent remaining segments from matching\n // So skip it and return to original position\n return { params: {}, nextIndex: startIndex };\n }\n default:\n return false;\n }\n }\n findNextLiteral(segments) {\n for (const segment of segments) {\n if (segment.type === 'literal') {\n return segment;\n }\n else if (segment.type === 'optional') {\n const nested = this.findNextLiteral(segment.segments);\n if (nested)\n return nested;\n }\n }\n return null;\n }\n matchQuery(query, segments) {\n if (segments.length === 0) {\n return {};\n }\n const result = {};\n let queryIndex = 0;\n for (const segment of segments) {\n switch (segment.type) {\n case 'literal':\n if (query.slice(queryIndex, queryIndex + segment.value.length) === segment.value) {\n queryIndex += segment.value.length;\n }\n else {\n return false;\n }\n break;\n case 'param': {\n let endIndex = queryIndex;\n while (endIndex < query.length && query[endIndex] !== '&') {\n endIndex++;\n }\n if (endIndex === queryIndex)\n return false;\n let value;\n try {\n value = decodeURIComponent(query.slice(queryIndex, endIndex));\n }\n catch (e) {\n // If decoding fails, use the original value\n value = query.slice(queryIndex, endIndex);\n }\n result[segment.name] = value;\n queryIndex = endIndex;\n break;\n }\n }\n }\n return result;\n }\n reverse(params = {}) {\n const pathResult = this.reverseSegments(this.parsed.pathSegments, params);\n if (pathResult === false) {\n return false;\n }\n let result = pathResult;\n if (this.parsed.querySegments.length > 0) {\n const queryResult = this.reverseSegments(this.parsed.querySegments, params);\n if (!this.parsed.queryOptional) {\n // Query is required - if it fails, the whole reverse fails\n if (queryResult === false) {\n return false;\n }\n }\n // Add query string if we have a result\n if (queryResult && queryResult !== '') {\n result += '?' + queryResult;\n }\n }\n return result;\n }\n reverseSegments(segments, params, inActivatedStructure = false) {\n let result = '';\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const remainingSegments = segments.slice(i + 1);\n switch (segment.type) {\n case 'literal':\n result += segment.value;\n break;\n case 'param':\n case 'splat':\n if (segment.name in params) {\n result += String(params[segment.name]);\n }\n else {\n // Missing required parameter - but for query segments, this might be optional\n return false;\n }\n break;\n case 'optional':\n // Check if this optional group should be included\n // considering dependencies from later optional groups\n const shouldInclude = this.hasAllParams(segment.segments, params, inActivatedStructure) ||\n this.hasLaterOptionalGroupNeedingParams(remainingSegments, params, segment.segments);\n if (shouldInclude) {\n const optionalResult = this.reverseSegments(segment.segments, params, true);\n if (optionalResult === false) {\n return false;\n }\n result += optionalResult;\n }\n break;\n }\n }\n return result;\n }\n // Check if any later optional groups need parameters and would require this group to be included\n hasLaterOptionalGroupNeedingParams(laterSegments, params, currentOptionalSegments) {\n // Check if any later optional group has parameters that are provided\n for (const segment of laterSegments) {\n if (segment.type === 'optional') {\n if (this.hasAnyParamInSegments(segment.segments, params)) {\n // Check if the current optional group only has literals/no required params\n // If so, it should be included as a bridge to the later group\n return this.hasOnlyLiteralsAndOptionals(currentOptionalSegments);\n }\n }\n }\n return false;\n }\n hasOnlyLiteralsAndOptionals(segments) {\n for (const segment of segments) {\n if (segment.type === 'param' || segment.type === 'splat') {\n return false;\n }\n }\n return true;\n }\n hasAllParams(segments, params, inActivatedStructure = false) {\n // Check if we can include this optional group\n let hasDirectParams = false;\n let hasNestedParams = false;\n let missingDirectParam = false;\n let hasOnlyLiteralsAndOptionals = true;\n // First pass: check direct params and literals\n for (const segment of segments) {\n switch (segment.type) {\n case 'param':\n case 'splat':\n hasOnlyLiteralsAndOptionals = false;\n if (segment.name in params && params[segment.name] !== undefined) {\n hasDirectParams = true;\n }\n else {\n missingDirectParam = true;\n }\n break;\n }\n }\n // Determine if this level will be activated and propagate to nested\n const willBeActivated = (hasDirectParams && !missingDirectParam);\n const passToNested = inActivatedStructure || willBeActivated;\n // Second pass: check nested optional groups with correct context\n for (const segment of segments) {\n if (segment.type === 'optional') {\n const shouldIncludeNested = this.hasAllParams(segment.segments, params, passToNested);\n if (shouldIncludeNested) {\n hasNestedParams = true;\n }\n }\n }\n // Include this optional group if:\n // 1. We have all direct parameters needed, OR\n // 2. We have nested parameters and no missing direct parameters, OR\n // 3. We have only literals/optionals and parent was activated\n if (hasDirectParams && !missingDirectParam) {\n return true; // We have all required params for this level\n }\n if (hasNestedParams && !missingDirectParam) {\n return true; // We need this group to reach nested parameters\n }\n // Include literal-only groups in nested structures\n if (hasOnlyLiteralsAndOptionals && inActivatedStructure) {\n return true; // Include literal paths in activated structures\n }\n return false;\n }\n hasOnlyOptionalMissingParams(segments, params) {\n // Check if all missing parameters are in nested optional groups\n for (const segment of segments) {\n switch (segment.type) {\n case 'param':\n case 'splat':\n if (!(segment.name in params)) {\n return false; // Has required missing param\n }\n break;\n }\n }\n return true;\n }\n hasAnyParamInSegments(segments, params) {\n for (const segment of segments) {\n switch (segment.type) {\n case 'param':\n case 'splat':\n if (segment.name in params) {\n return true;\n }\n break;\n case 'optional':\n if (this.hasAnyParamInSegments(segment.segments, params)) {\n return true;\n }\n break;\n }\n }\n return false;\n }\n}\n\n/**\n * Generic transition system for animating between elements\n */\n/**\n * Parse CSS property string into an object\n */\nfunction parseStyles(styleString) {\n const styles = {};\n styleString.split(';').forEach(rule => {\n const [prop, value] = rule.split(':').map(s => s.trim());\n if (prop && value) {\n styles[prop] = value;\n }\n });\n return styles;\n}\n/**\n * Perform a transition between two elements\n */\nvar TransitionMode;\n(function (TransitionMode) {\n TransitionMode[\"SEQUENTIAL\"] = \"sequential\";\n TransitionMode[\"SIMULTANEOUS\"] = \"simultaneous\";\n})(TransitionMode || (TransitionMode = {}));\nfunction applyBaseTransitionStyles(el, isSlotted, duration, prop) {\n el.style.position = 'absolute';\n el.style.width = '100%';\n if (isSlotted) {\n el.style.height = '100%';\n el.style.transition = `opacity ${duration}ms ease-in-out`;\n return;\n }\n el.style.top = '0';\n el.style.left = '0';\n el.style.transition = `${prop} ${duration}ms ease-in-out`;\n}\nfunction resetTransitionStyles(el, isSlotted) {\n el.style.position = '';\n el.style.width = '';\n el.style.transition = '';\n if (isSlotted) {\n el.style.height = '';\n return;\n }\n el.style.top = '';\n el.style.left = '';\n}\nasync function performTransition(container, oldElement, newElement, transition = {}) {\n const outDuration = transition.outDuration || 300;\n const inDuration = transition.inDuration || 300;\n const mode = (transition.mode || 'sequential');\n const outStyles = transition.out ? parseStyles(transition.out) : { opacity: '0' };\n const inStartStyles = { opacity: '0' };\n const inEndStyles = transition.in ? parseStyles(transition.in) : { opacity: '1' };\n const containerStyle = container.style;\n const originalPosition = containerStyle.position;\n const isLayoutElement = container.tagName.includes('-') && container.shadowRoot;\n if (!isLayoutElement)\n containerStyle.position = 'relative';\n const isSlotted = oldElement.hasAttribute('slot') || newElement.hasAttribute('slot');\n applyBaseTransitionStyles(oldElement, isSlotted, outDuration, 'all');\n applyBaseTransitionStyles(newElement, isSlotted, inDuration, 'all');\n Object.assign(newElement.style, inStartStyles);\n container.appendChild(newElement);\n void newElement.offsetHeight;\n // Animate\n switch (mode) {\n case TransitionMode.SIMULTANEOUS:\n Object.assign(oldElement.style, outStyles);\n Object.assign(newElement.style, inEndStyles);\n await new Promise(resolve => setTimeout(resolve, Math.max(outDuration, inDuration)));\n break;\n case TransitionMode.SEQUENTIAL:\n Object.assign(oldElement.style, outStyles);\n await new Promise(resolve => setTimeout(resolve, outDuration));\n Object.assign(newElement.style, inEndStyles);\n await new Promise(resolve => setTimeout(resolve, inDuration));\n break;\n }\n // Cleanup\n oldElement.remove();\n resetTransitionStyles(newElement, isSlotted);\n Object.keys({ ...inStartStyles, ...inEndStyles }).forEach(prop => {\n newElement.style[prop] = '';\n });\n if (!isLayoutElement)\n containerStyle.position = originalPosition;\n}\n\n/**\n * Possible outcomes from route resolution\n */\nvar RouteResult;\n(function (RouteResult) {\n RouteResult[\"SUCCESS\"] = \"success\";\n RouteResult[\"GUARDS_FAILED\"] = \"guards-failed\";\n RouteResult[\"NOT_FOUND\"] = \"not-found\";\n})(RouteResult || (RouteResult = {}));\n/**\n * Creates a new router instance.\n * @param {RouterOptions} options - The router configuration options.\n * @returns An object containing the router's API methods.\n */\nfunction Router(options) {\n const win = options.window ?? window;\n const doc = options.document ?? document;\n const routes = [];\n let is_sorted = false;\n let placards = []; // Store collected placards\n let _404; // the 404 page\n let _403; // the 403 forbidden page\n let home; // the home page\n let currentLayoutName = null; // Track current layout name\n let currentLayoutTimestamp = null; // Track current layout timestamp\n const context = options.context || {}; // Store context for guards\n // Create Context instance for managing router state\n const navigationContext = new Context(context, [], '', {}, options.fetcher);\n function getCurrentLayoutElement(target) {\n const noCurrentLayout = !currentLayoutName || !currentLayoutTimestamp;\n if (noCurrentLayout) {\n return null;\n }\n const layoutElements = target.querySelectorAll(currentLayoutName);\n for (const element of layoutElements) {\n const hasTimestamp = element[CREATED_AT] === currentLayoutTimestamp;\n if (hasTimestamp) {\n return element;\n }\n }\n return null;\n }\n /**\n * Decorator function for defining a page with associated routes.\n * @param {PageOptions} pageOptions - The page configuration options.\n * @returns A decorator function to apply to a custom element class.\n */\n function page(pageOptions) {\n return function (constructor, context) {\n // Transfer metadata from context to constructor (for new decorators)\n if (context?.metadata && context.metadata[PROPERTIES]) {\n if (!constructor[PROPERTIES]) {\n constructor[PROPERTIES] = new Map();\n }\n for (const [key, value] of context.metadata[PROPERTIES]) {\n constructor[PROPERTIES].set(key, value);\n }\n }\n // Apply all element functionality (properties, queries, watchers, controllers, etc.)\n applyElementFunctionality(constructor);\n // Store transition config on constructor for later use\n constructor[PAGE_TRANSITION] = pageOptions.transition;\n // Extend the connectedCallback to add router-specific functionality\n const elementConnectedCallback = constructor.prototype.connectedCallback;\n constructor.prototype.connectedCallback = function () {\n // Store the Context instance for @context decorated methods to access\n this[CONTEXT_HANDLER] = navigationContext;\n // Call the element's connectedCallback first\n elementConnectedCallback?.call(this);\n };\n // Extend the disconnectedCallback to clean up router-specific stuff\n const elementDisconnectedCallback = constructor.prototype.disconnectedCallback;\n constructor.prototype.disconnectedCallback = function () {\n // Call element's disconnectedCallback first\n elementDisconnectedCallback?.call(this);\n // Clean up context references\n delete this[ROUTER_CONTEXT];\n delete this[CONTEXT_HANDLER];\n };\n // Define the custom element (skip if already registered)\n if (!win.customElements.get(pageOptions.tag)) {\n win.customElements.define(pageOptions.tag, constructor);\n }\n // Register the routes with guards, layout, and placard\n pageOptions.routes.forEach(route => register(route, pageOptions.tag, pageOptions.transition, pageOptions.guards, pageOptions.layout, pageOptions.placard));\n return constructor;\n };\n }\n /**\n * Registers a new route with the router.\n * @param {string} route - The route path.\n * @param {string} tag - The custom element tag associated with the route.\n * @example\n * register('/custom-route', 'custom-element');\n */\n function register(route, tag, transition, guards, layout, placard) {\n routes.push({ route: new Route(route), tag, transition, guards, layout, placard });\n is_sorted = false;\n switch (route) {\n case '/404':\n _404 = tag;\n break;\n case '/403':\n _403 = tag;\n break;\n case '/':\n home = tag;\n break;\n }\n }\n function setupEventListeners() {\n const handler = () => {\n if (!doc.querySelector(options.target))\n return;\n navigate(getPath());\n };\n switch (options.type) {\n case 'hash':\n win.addEventListener('hashchange', handler);\n break;\n case 'pushstate':\n win.addEventListener('popstate', handler);\n break;\n }\n }\n /**\n * Initializes the router and sets up navigation event listeners.\n * @example\n * initialize();\n */\n function initialize() {\n const target = doc.querySelector(options.target);\n if (!target) {\n throw new Error(`Target element not found: ${options.target}`);\n }\n const needsSorting = !is_sorted;\n if (needsSorting) {\n routes.sort((a, b) => b.route.spec.length - a.route.spec.length);\n is_sorted = true;\n }\n // Collect placards from registered routes\n collectPlacards();\n setupEventListeners();\n const path = getPath();\n navigate(path);\n }\n function collectPlacards() {\n const seen = new Set();\n placards = routes\n .filter(route => route.placard)\n .map(route => {\n const placard = route.placard;\n return typeof placard === 'function'\n ? placard(context)\n : placard;\n })\n .filter(p => {\n if (seen.has(p.name))\n return false;\n seen.add(p.name);\n return true;\n });\n }\n function emitContextUpdate(target, currentPath, routeParams) {\n // Update the navigation context and notify all registered elements\n navigationContext[CONTEXT_UPDATE](context, placards, currentPath, routeParams);\n }\n function updateLayout(layoutElement, currentPath, routeParams) {\n // Check if layout implements the update method\n if (typeof layoutElement.update === 'function') {\n layoutElement.update(context, placards, currentPath, routeParams);\n }\n }\n function getPath() {\n switch (options.type) {\n case 'hash':\n return win.location.hash.slice(1);\n case 'pushstate':\n return win.location.pathname;\n }\n }\n function renderForbiddenPage(target) {\n let newPageElement;\n if (_403) {\n newPageElement = doc.createElement(_403);\n newPageElement[ROUTER_CONTEXT] = context;\n }\n else {\n const div = doc.createElement('div');\n div.className = 'default-403';\n div.innerHTML = /*html*/ `<h1>403</h1><p>Unauthorized</p>`;\n newPageElement = div;\n }\n target.innerHTML = '';\n target.appendChild(newPageElement);\n currentLayoutName = null;\n currentLayoutTimestamp = null;\n }\n function createLoadingSpinner() {\n const container = doc.createElement('div');\n container.setAttribute('data-snice-loading', '');\n container.innerHTML = /*html*/ `\n <style>@keyframes snice-spin{to{transform:rotate(360deg)}}</style>\n <div style=\"display:flex;align-items:center;justify-content:center;height:100%;min-height:200px\">\n <div style=\"width:32px;height:32px;border:3px solid rgba(128,128,128,0.3);border-top-color:rgba(128,128,128,0.8);border-radius:50%;animation:snice-spin 0.6s linear infinite\"></div>\n </div>`;\n return container;\n }\n async function checkGuards(guards, params, target) {\n const hasGuards = !!guards;\n if (!hasGuards) {\n return true;\n }\n const guardsArray = Array.isArray(guards) ? guards : [guards];\n let spinner = null;\n let spinnerTimer = null;\n // Show spinner after a short delay (avoids flash for fast sync guards)\n spinnerTimer = setTimeout(() => {\n spinner = createLoadingSpinner();\n target.appendChild(spinner);\n }, 50);\n try {\n for (const guard of guardsArray) {\n const allowed = await guard(context, params);\n if (!allowed) {\n renderForbiddenPage(target);\n return false;\n }\n }\n return true;\n }\n finally {\n if (spinnerTimer)\n clearTimeout(spinnerTimer);\n if (spinner)\n spinner.remove();\n }\n }\n function createHomeElement() {\n const newPageElement = doc.createElement(home);\n newPageElement[ROUTER_CONTEXT] = context;\n const constructor = win.customElements.get(home);\n const transition = constructor?.[PAGE_TRANSITION];\n const homeRoute = routes.find(r => r.route.match('/'));\n return { element: newPageElement, transition, layout: homeRoute?.layout };\n }\n function create404Element() {\n const has404Page = !!_404;\n if (has404Page) {\n const newPageElement = doc.createElement(_404);\n newPageElement[ROUTER_CONTEXT] = context;\n const constructor = win.customElements.get(_404);\n const transition = constructor?.[PAGE_TRANSITION];\n return { element: newPageElement, transition, layout: undefined };\n }\n const div = doc.createElement('div');\n div.className = 'default-404';\n div.innerHTML = /*html*/ `<h1>404</h1><p>Page not found</p>`;\n return { element: div, transition: undefined, layout: undefined };\n }\n async function resolveRoute(path, target) {\n for (const route of routes) {\n const params = route.route.match(path);\n const isMatch = params !== false;\n if (!isMatch) {\n continue;\n }\n const guardsAllowed = await checkGuards(route.guards, params, target);\n if (!guardsAllowed) {\n return { result: RouteResult.GUARDS_FAILED };\n }\n const newPageElement = doc.createElement(route.tag);\n newPageElement[ROUTER_CONTEXT] = context;\n newPageElement[CONTEXT_HANDLER] = navigationContext;\n const routeParams = params;\n Object.keys(routeParams).forEach(key => newPageElement.setAttribute(key, routeParams[key]));\n return { result: RouteResult.SUCCESS, element: newPageElement, transition: route.transition, layout: route.layout, routeParams };\n }\n return { result: RouteResult.NOT_FOUND };\n }\n function determineLayout(pageLayout) {\n const isExplicitlyNoLayout = pageLayout === false;\n if (isExplicitlyNoLayout) {\n return null;\n }\n const hasPageLayout = !!pageLayout;\n if (hasPageLayout) {\n return pageLayout;\n }\n const hasRouterLayout = !!options.layout;\n if (hasRouterLayout) {\n return options.layout;\n }\n return null;\n }\n function setupLayout(layoutToUse) {\n const needsNewLayout = layoutToUse !== currentLayoutName;\n if (!needsNewLayout) {\n return { element: null, needsNewLayout: false };\n }\n currentLayoutName = layoutToUse;\n const shouldCreateLayout = !!layoutToUse;\n if (shouldCreateLayout) {\n const timestamp = Date.now();\n currentLayoutTimestamp = timestamp;\n const layoutElement = doc.createElement(layoutToUse);\n layoutElement[ROUTER_CONTEXT] = context;\n layoutElement[CREATED_AT] = timestamp;\n return { element: layoutElement, needsNewLayout: true };\n }\n currentLayoutTimestamp = null;\n return { element: null, needsNewLayout: true };\n }\n async function renderWithLayout(target, pageElement, transition, layoutElement, needsNewLayout, currentPath, routeParams) {\n const currentLayout = layoutElement || getCurrentLayoutElement(target);\n if (!currentLayout) {\n return;\n }\n // Update layout with current context and placards\n updateLayout(currentLayout, currentPath, routeParams);\n const oldPageInLayout = currentLayout.querySelector('[slot=\"page\"]');\n const shouldTransition = !!(transition && oldPageInLayout);\n if (shouldTransition) {\n pageElement.setAttribute('slot', 'page');\n await performTransition$1(currentLayout, oldPageInLayout, pageElement, transition);\n if (needsNewLayout) {\n target.innerHTML = '';\n target.appendChild(currentLayout);\n }\n return;\n }\n const existingPages = currentLayout.querySelectorAll('[slot=\"page\"]');\n existingPages.forEach(page => page.remove());\n pageElement.setAttribute('slot', 'page');\n currentLayout.appendChild(pageElement);\n if (needsNewLayout) {\n target.innerHTML = '';\n target.appendChild(currentLayout);\n }\n }\n async function renderDirect(target, pageElement, transition) {\n const currentElementInTarget = target.children[0];\n const shouldTransition = !!(transition && currentElementInTarget);\n if (shouldTransition) {\n await performTransition$1(target, currentElementInTarget, pageElement, transition);\n return;\n }\n target.innerHTML = '';\n target.appendChild(pageElement);\n }\n async function renderPage(target, pageElement, transition, layout, path, routeParams) {\n const layoutToUse = determineLayout(layout);\n const { element: layoutElement, needsNewLayout } = setupLayout(layoutToUse);\n const finalTransition = transition || options.transition;\n const hasLayout = layoutElement !== null || getCurrentLayoutElement(target) !== null;\n if (hasLayout) {\n await renderWithLayout(target, pageElement, finalTransition, layoutElement, needsNewLayout, path, routeParams);\n emitContextUpdate(target, path, routeParams);\n return;\n }\n await renderDirect(target, pageElement, finalTransition);\n emitContextUpdate(target, path, routeParams);\n }\n /**\n * Navigates to the specified path.\n * @param {string} path - The path to navigate to.\n * @example\n * navigate('/login');\n */\n async function navigate(path) {\n const target = doc.querySelector(options.target);\n if (!target) {\n throw new Error(`Target element not found: ${options.target}`);\n }\n collectPlacards();\n win.scrollTo(0, 0);\n // Home path\n const isHomePath = (path?.trim() === '' || path === '/') && !!home;\n if (isHomePath) {\n const homeRoute = routes.find(r => r.route.match('/'));\n if (!(await checkGuards(homeRoute?.guards, {}, target)))\n return;\n const { element, transition, layout } = createHomeElement();\n await renderPage(target, element, transition, layout, path, {});\n return;\n }\n // No path\n if (!path)\n return;\n // Resolve route\n const routeResult = await resolveRoute(path, target);\n // Guards failed (403 already rendered by checkGuards)\n if (routeResult.result === RouteResult.GUARDS_FAILED)\n return;\n // Route matched\n if (routeResult.result === RouteResult.SUCCESS) {\n const { element, transition, layout, routeParams = {} } = routeResult;\n await renderPage(target, element, transition, layout, path, routeParams);\n return;\n }\n // 404 fallthrough\n const { element, transition, layout } = create404Element();\n await renderPage(target, element, transition, layout, path, {});\n }\n async function performTransition$1(container, oldElement, newElement, transition) {\n return performTransition(container, oldElement, newElement, transition);\n }\n return {\n page,\n initialize,\n navigate,\n register\n };\n}\n\n// @dispatch decorator - auto-dispatches custom events from method return values\n/**\n * Decorator that automatically dispatches a custom event after a method is called.\n * The return value of the method becomes the event detail.\n *\n * @param eventName The name of the event to dispatch\n * @param options Optional configuration extending EventInit\n */\nfunction dispatch(eventName, options) {\n return function (originalMethod, _context) {\n return function (...args) {\n // Create timing wrappers for dispatch (per-instance)\n if (!this[DISPATCH_TIMERS]) {\n this[DISPATCH_TIMERS] = new Map();\n }\n const timerKey = `${eventName}_${_context.name}`;\n if (!this[DISPATCH_TIMERS].has(timerKey)) {\n this[DISPATCH_TIMERS].set(timerKey, {\n debounceTimeout: null,\n throttleLastCall: 0,\n throttleTimeout: null\n });\n }\n const timers = this[DISPATCH_TIMERS].get(timerKey);\n // Call the original method with preserved this context\n const result = originalMethod.apply(this, args);\n // Helper to dispatch the event\n const doDispatch = (detail) => {\n // Skip dispatch if result is undefined and dispatchOnUndefined is false\n if (detail === undefined && options?.dispatchOnUndefined === false) {\n return;\n }\n // Create event with spread operator for options\n const event = new CustomEvent(eventName, {\n bubbles: true, // Default to true for component events\n composed: true, // Allow crossing shadow DOM boundaries\n ...options, // Spread all EventInit options\n detail\n });\n this.dispatchEvent(event);\n };\n // Helper to handle timed dispatch\n const timedDispatch = (detail) => {\n if (options?.debounce) {\n clearTimeout(timers.debounceTimeout);\n timers.debounceTimeout = setTimeout(() => doDispatch(detail), options.debounce);\n return;\n }\n if (!options?.throttle) {\n doDispatch(detail);\n return;\n }\n const now = Date.now();\n const remaining = options.throttle - (now - timers.throttleLastCall);\n if (remaining <= 0) {\n clearTimeout(timers.throttleTimeout);\n timers.throttleLastCall = now;\n doDispatch(detail);\n return;\n }\n if (!timers.throttleTimeout) {\n timers.throttleTimeout = setTimeout(() => {\n timers.throttleLastCall = Date.now();\n timers.throttleTimeout = null;\n doDispatch(detail);\n }, remaining);\n }\n };\n // Handle async methods\n if (result instanceof Promise) {\n return result.then((resolvedResult) => {\n timedDispatch(resolvedResult);\n return resolvedResult;\n });\n }\n // Sync method\n timedDispatch(result);\n return result;\n };\n };\n}\n\n/**\n * createRequestHandler — vanilla JS utility for handling @request channels\n * outside of the Snice element/controller decorator system.\n *\n * Listens for @request CustomEvents on a target element (or document),\n * performs the discovery/data handshake, and dispatches to your route map.\n *\n * @example\n * ```js\n * import { createRequestHandler } from 'snice';\n *\n * const cleanup = createRequestHandler(document, {\n * 'fetch-user': async (payload) => {\n * const res = await fetch(`/api/users/${payload.id}`);\n * return res.json();\n * },\n * 'save-settings': async (payload) => {\n * await fetch('/api/settings', { method: 'POST', body: JSON.stringify(payload) });\n * return { ok: true };\n * }\n * });\n *\n * // Later, to remove all listeners:\n * cleanup();\n * ```\n */\n/**\n * Attach request handlers to a DOM target.\n *\n * @param target The element or document to listen on. Events bubble, so an\n * ancestor element catches requests from any descendant.\n * @param routes Map of channel names to handler functions.\n * @param options Optional configuration.\n * @returns A cleanup function that removes all listeners.\n */\nfunction createRequestHandler(target, routes, options) {\n const cleanups = [];\n for (const [channelName, handler] of Object.entries(routes)) {\n const eventName = `@request/${channelName}`;\n const listener = (event) => {\n const ce = event;\n const { discovery, data, payload } = ce.detail;\n if (!options?.passive) {\n ce.preventDefault();\n ce.stopImmediatePropagation();\n ce.stopPropagation();\n }\n // Signal that we found the handler — clears discovery timeout\n discovery.resolve();\n // Execute the handler and wire up the data promise\n Promise.resolve()\n .then(() => handler(payload))\n .then((result) => data.resolve(result))\n .catch((error) => {\n data.reject(error);\n console.error(`createRequestHandler: error in \"${channelName}\" handler:`, error);\n });\n };\n target.addEventListener(eventName, listener);\n cleanups.push(() => target.removeEventListener(eventName, listener));\n }\n return () => {\n for (const fn of cleanups)\n fn();\n cleanups.length = 0;\n };\n}\n\n/**\n * Custom element readiness utilities\n * Handles waiting for custom elements to be defined with timeout warnings\n */\n/**\n * Global flag to disable custom element readiness timeout warnings\n * Set this to true in environments where slow element registration is expected\n */\nlet DISABLE_ELEMENT_READY_WARNINGS = false;\n/**\n * Set whether to disable custom element readiness timeout warnings\n */\nfunction setDisableElementReadyWarnings(value) {\n DISABLE_ELEMENT_READY_WARNINGS = value;\n}\n/**\n * Default timeout for custom element registration warning (500ms)\n */\nconst DEFAULT_WARNING_TIMEOUT = 500;\n/**\n * Wait for a custom element to be defined\n * Logs a warning if it takes longer than the warning timeout\n *\n * @param tagName - The custom element tag name\n * @param warningTimeout - Time in ms before warning (default 500ms)\n * @returns Promise that resolves when element is defined\n */\nasync function waitForElementDefined(tagName, warningTimeout = DEFAULT_WARNING_TIMEOUT) {\n // If already defined, return immediately\n if (customElements.get(tagName)) {\n return;\n }\n // Set up warning timer if not disabled\n let warningTimer = null;\n if (!DISABLE_ELEMENT_READY_WARNINGS) {\n warningTimer = setTimeout(() => {\n console.warn(`Custom element <${tagName}> is taking longer than ${warningTimeout}ms to register. ` +\n `This may indicate a missing import or circular dependency. ` +\n `Set DISABLE_ELEMENT_READY_WARNINGS=true to disable this warning.`);\n }, warningTimeout);\n }\n try {\n // Wait for element to be defined\n await customElements.whenDefined(tagName);\n }\n finally {\n // Clear warning timer\n if (warningTimer) {\n clearTimeout(warningTimer);\n }\n }\n}\n/**\n * Wait for a custom element to be defined and ready\n * First waits for the element to be registered, then waits for its ready promise\n *\n * @param element - The custom element instance\n * @param warningTimeout - Time in ms before warning about registration (default 500ms)\n * @returns Promise that resolves when element is defined and ready\n */\nasync function waitForElementReady(element, warningTimeout = DEFAULT_WARNING_TIMEOUT) {\n const tagName = element.tagName.toLowerCase();\n // Wait for element to be defined\n await waitForElementDefined(tagName, warningTimeout);\n // Wait for element's ready promise if it exists\n if ('ready' in element && typeof element.ready?.then === 'function') {\n await element.ready;\n }\n}\n/**\n * Process all custom elements in a node tree and wait for them to be ready\n * This is useful after inserting a template with custom elements\n *\n * @param node - The root node to scan for custom elements\n * @param warningTimeout - Time in ms before warning about registration (default 500ms)\n * @returns Promise that resolves when all custom elements are ready\n */\nasync function waitForAllCustomElements(node, warningTimeout = DEFAULT_WARNING_TIMEOUT) {\n const customElements = [];\n // Find all custom elements (tag names with hyphens)\n if (node instanceof Element) {\n if (node.tagName.includes('-')) {\n customElements.push(node);\n }\n // Also check in shadow DOM\n if (node.shadowRoot) {\n const shadowCustomElements = node.shadowRoot.querySelectorAll('*');\n shadowCustomElements.forEach(el => {\n if (el.tagName.includes('-')) {\n customElements.push(el);\n }\n });\n }\n }\n // If it's a DocumentFragment, check all children\n if (node instanceof DocumentFragment) {\n const elements = node.querySelectorAll('*');\n elements.forEach(el => {\n if (el.tagName.includes('-')) {\n customElements.push(el);\n }\n });\n }\n // Wait for all custom elements to be ready\n await Promise.all(customElements.map(el => waitForElementReady(el, warningTimeout)));\n}\n\n/**\n * Render debugging utilities for Snice v3.0.0\n * For testing and debugging only - not recommended for production use\n */\n/**\n * Track renders of an element using an async generator\n * Each call to tracker.next() waits for the next render to complete\n *\n * @example\n * ```typescript\n * const tracker = trackRenders(element);\n *\n * element.someProp = 'new value';\n * await tracker.next(); // Waits for render\n * // DOM is now updated\n *\n * element.someProp = 'another value';\n * await tracker.next(); // Waits for next render\n * // DOM is updated again\n * ```\n *\n * WARNING: For testing/debugging only!\n * - Do not use in production code\n * - The generator yields indefinitely - use it only in controlled test environments\n * - Each yield waits for the next render event\n */\nasync function* trackRenders(element) {\n while (true) {\n await new Promise(resolve => {\n if (!element[RENDER_CALLBACKS]) {\n element[RENDER_CALLBACKS] = [];\n }\n element[RENDER_CALLBACKS].push(resolve);\n });\n yield;\n }\n}\n\n/**\n * Method decorators for common patterns\n * @debounce, @throttle, @once, @memoize\n */\nconst DEBOUNCE_TIMERS = getSymbol('debounce-timers');\nconst THROTTLE_TIMERS = getSymbol('throttle-timers');\nconst ONCE_CALLED = getSymbol('once-called');\nconst MEMOIZE_CACHE = getSymbol('memoize-cache');\n/**\n * @debounce decorator - delays function execution until after wait time has elapsed\n * since the last invocation\n *\n * @param wait - Time to wait in milliseconds (default: 300)\n * @param options - Debounce options\n * @param options.leading - Invoke on the leading edge (default: false)\n * @param options.trailing - Invoke on the trailing edge (default: true)\n * @param options.maxWait - Maximum time to wait before invoking (default: undefined)\n *\n * @example\n * ```typescript\n * @element('search-input')\n * class SearchInput extends HTMLElement {\n * @debounce(500)\n * handleSearch(query: string) {\n * // Only called 500ms after last keystroke\n * fetch(`/api/search?q=${query}`);\n * }\n * }\n * ```\n */\nfunction debounce(wait = 300, options = {}) {\n const { leading = false, trailing = true, maxWait } = options;\n return function (originalMethod, context) {\n const methodName = context.name;\n return function (...args) {\n if (!this[DEBOUNCE_TIMERS]) {\n this[DEBOUNCE_TIMERS] = {};\n }\n const timers = this[DEBOUNCE_TIMERS];\n const timerKey = methodName;\n // Clear existing timer\n if (timers[timerKey]) {\n clearTimeout(timers[timerKey].timeout);\n }\n // Track when debounce started for maxWait\n const now = Date.now();\n const isFirstCall = !timers[timerKey];\n const startTime = isFirstCall ? now : timers[timerKey].startTime;\n // Check if maxWait exceeded\n const shouldInvokeFromMaxWait = maxWait !== undefined && now - startTime >= maxWait;\n // Leading edge invocation\n if (leading && isFirstCall) {\n const result = originalMethod.apply(this, args);\n timers[timerKey] = {\n timeout: null,\n startTime,\n lastArgs: args,\n };\n return result;\n }\n // Set new timer for trailing edge\n const timeout = setTimeout(() => {\n if (trailing || shouldInvokeFromMaxWait) {\n originalMethod.apply(this, timers[timerKey].lastArgs);\n }\n delete timers[timerKey];\n }, shouldInvokeFromMaxWait ? 0 : wait);\n timers[timerKey] = {\n timeout,\n startTime,\n lastArgs: args,\n };\n };\n };\n}\n/**\n * @throttle decorator - ensures function is called at most once per specified time period\n *\n * @param wait - Time to wait in milliseconds (default: 300)\n * @param options - Throttle options\n * @param options.leading - Invoke on the leading edge (default: true)\n * @param options.trailing - Invoke on the trailing edge (default: true)\n *\n * @example\n * ```typescript\n * @element('scroll-tracker')\n * class ScrollTracker extends HTMLElement {\n * @throttle(100)\n * handleScroll(e: Event) {\n * // Called at most once every 100ms\n * this.updateScrollPosition();\n * }\n * }\n * ```\n */\nfunction throttle(wait = 300, options = {}) {\n const { leading = true, trailing = true } = options;\n return function (originalMethod, context) {\n const methodName = context.name;\n return function (...args) {\n if (!this[THROTTLE_TIMERS]) {\n this[THROTTLE_TIMERS] = {};\n }\n const timers = this[THROTTLE_TIMERS];\n const timerKey = methodName;\n const now = Date.now();\n // First call\n if (!timers[timerKey]) {\n if (leading)\n originalMethod.apply(this, args);\n timers[timerKey] = { lastInvoke: now, timeout: null, lastArgs: args };\n if (trailing && !leading) {\n timers[timerKey].timeout = setTimeout(() => {\n originalMethod.apply(this, timers[timerKey].lastArgs);\n delete timers[timerKey];\n }, wait);\n }\n return;\n }\n // Subsequent calls\n const timeSinceLastInvoke = now - timers[timerKey].lastInvoke;\n timers[timerKey].lastArgs = args;\n if (timers[timerKey].timeout) {\n clearTimeout(timers[timerKey].timeout);\n }\n // Enough time passed — invoke immediately\n if (timeSinceLastInvoke >= wait) {\n originalMethod.apply(this, args);\n timers[timerKey].lastInvoke = now;\n return;\n }\n // Set up trailing call\n if (trailing) {\n const remaining = wait - timeSinceLastInvoke;\n timers[timerKey].timeout = setTimeout(() => {\n originalMethod.apply(this, timers[timerKey].lastArgs);\n timers[timerKey].lastInvoke = Date.now();\n timers[timerKey].timeout = null;\n }, remaining);\n }\n };\n };\n}\n/**\n * @once decorator - ensures function is only called once\n * Subsequent calls return the result of the first call\n *\n * @param perInstance - If true, function can be called once per instance (default: true)\n * If false, function can only be called once globally across all instances\n *\n * @example\n * ```typescript\n * @element('data-loader')\n * class DataLoader extends HTMLElement {\n * @once()\n * async loadData() {\n * // Only loads data once, even if called multiple times\n * const data = await fetch('/api/data');\n * return data.json();\n * }\n * }\n * ```\n */\nfunction once(perInstance = true) {\n let globalCalled = false;\n let globalResult;\n return function (originalMethod, context) {\n const methodName = context.name;\n return function (...args) {\n // Per-instance tracking\n if (perInstance) {\n if (!this[ONCE_CALLED])\n this[ONCE_CALLED] = {};\n if (!this[ONCE_CALLED][methodName]) {\n this[ONCE_CALLED][methodName] = {\n called: true,\n result: originalMethod.apply(this, args),\n };\n }\n return this[ONCE_CALLED][methodName].result;\n }\n // Global tracking\n if (!globalCalled) {\n globalCalled = true;\n globalResult = originalMethod.apply(this, args);\n }\n return globalResult;\n };\n };\n}\n/**\n * @memoize decorator - caches function results based on arguments\n * Uses JSON.stringify for argument comparison by default\n *\n * @param options - Memoization options\n * @param options.keyGenerator - Custom function to generate cache key from arguments\n * @param options.maxSize - Maximum cache size (default: 100)\n * @param options.ttl - Time to live in milliseconds (default: undefined - no expiration)\n *\n * @example\n * ```typescript\n * @element('calculator')\n * class Calculator extends HTMLElement {\n * @memoize({ maxSize: 50 })\n * fibonacci(n: number): number {\n * // Results are cached, subsequent calls with same n are instant\n * if (n <= 1) return n;\n * return this.fibonacci(n - 1) + this.fibonacci(n - 2);\n * }\n * }\n * ```\n */\nfunction memoize(options = {}) {\n const { keyGenerator = (...args) => JSON.stringify(args), maxSize = 100, ttl } = options;\n return function (originalMethod, context) {\n const methodName = context.name;\n return function (...args) {\n if (!this[MEMOIZE_CACHE]) {\n this[MEMOIZE_CACHE] = {};\n }\n if (!this[MEMOIZE_CACHE][methodName]) {\n this[MEMOIZE_CACHE][methodName] = new Map();\n }\n const cache = this[MEMOIZE_CACHE][methodName];\n const key = keyGenerator(...args);\n // Check if cached\n if (cache.has(key)) {\n const cached = cache.get(key);\n const expired = ttl !== undefined && (Date.now() - cached.timestamp) > ttl;\n if (expired) {\n cache.delete(key);\n }\n else {\n return cached.value;\n }\n }\n // Compute result\n const result = originalMethod.apply(this, args);\n // Store in cache\n cache.set(key, {\n value: result,\n timestamp: Date.now(),\n });\n // Enforce max size (LRU - delete oldest)\n if (cache.size > maxSize) {\n const firstKey = cache.keys().next().value;\n cache.delete(firstKey);\n }\n return result;\n };\n };\n}\n/**\n * Clear all debounce timers for an instance\n * Useful in cleanup/disconnectedCallback\n */\nfunction clearDebounceTimers(instance) {\n if (instance[DEBOUNCE_TIMERS]) {\n for (const timerKey in instance[DEBOUNCE_TIMERS]) {\n if (instance[DEBOUNCE_TIMERS][timerKey]?.timeout) {\n clearTimeout(instance[DEBOUNCE_TIMERS][timerKey].timeout);\n }\n }\n instance[DEBOUNCE_TIMERS] = {};\n }\n}\n/**\n * Clear all throttle timers for an instance\n * Useful in cleanup/disconnectedCallback\n */\nfunction clearThrottleTimers(instance) {\n if (instance[THROTTLE_TIMERS]) {\n for (const timerKey in instance[THROTTLE_TIMERS]) {\n if (instance[THROTTLE_TIMERS][timerKey]?.timeout) {\n clearTimeout(instance[THROTTLE_TIMERS][timerKey].timeout);\n }\n }\n instance[THROTTLE_TIMERS] = {};\n }\n}\n/**\n * Clear memoize cache for an instance\n */\nfunction clearMemoizeCache(instance, methodName) {\n if (instance[MEMOIZE_CACHE]) {\n if (methodName) {\n delete instance[MEMOIZE_CACHE][methodName];\n }\n else {\n instance[MEMOIZE_CACHE] = {};\n }\n }\n}\n/**\n * Reset once-called state for an instance\n */\nfunction resetOnce(instance, methodName) {\n if (instance[ONCE_CALLED]) {\n if (methodName) {\n delete instance[ONCE_CALLED][methodName];\n }\n else {\n instance[ONCE_CALLED] = {};\n }\n }\n}\n\n/**\n * Context-aware fetch implementation with middleware support\n *\n * @example\n * ```typescript\n * const fetcher = new ContextAwareFetcher();\n *\n * fetcher.use('request', function(request, next) {\n * const token = this.application.user?.token;\n * if (token) {\n * request.headers.set('Authorization', `Bearer ${token}`);\n * }\n * return next();\n * });\n *\n * fetcher.use('response', async function(response, next) {\n * if (!response.ok) {\n * throw new Error(`HTTP ${response.status}`);\n * }\n * return next();\n * });\n *\n * const router = Router({\n * target: '#app',\n * context: { user: null },\n * fetcher\n * });\n * ```\n */\nclass ContextAwareFetcher {\n constructor() {\n this.requestMiddlewares = [];\n this.responseMiddlewares = [];\n }\n use(type, middleware) {\n if (type === 'request') {\n this.requestMiddlewares.push(middleware);\n return;\n }\n this.responseMiddlewares.push(middleware);\n }\n /**\n * Create a fetch function bound to the given Context instance\n * @param ctx - The Context instance to bind to\n * @returns A fetch function with middleware applied\n */\n create(ctx) {\n const requestMiddlewares = this.requestMiddlewares;\n const responseMiddlewares = this.responseMiddlewares;\n const fetchFn = async function (input, init) {\n const request = new Request(input, init);\n // Request middleware chain\n let reqIndex = 0;\n const nextRequest = async () => {\n if (reqIndex < requestMiddlewares.length) {\n const middleware = requestMiddlewares[reqIndex++];\n return middleware.call(this, request, nextRequest);\n }\n // Execute actual fetch\n const response = await fetch(request);\n // Response middleware chain\n let resIndex = 0;\n const nextResponse = async () => {\n if (resIndex < responseMiddlewares.length) {\n const middleware = responseMiddlewares[resIndex++];\n return middleware.call(this, response, nextResponse);\n }\n return response;\n };\n return nextResponse();\n };\n return nextRequest();\n };\n return fetchFn.bind(ctx);\n }\n}\n\n// v3.0.0 exports\n// Auto-enable native element controllers in browser environments\nif (typeof document !== 'undefined') {\n useNativeElementControllers();\n}\n// NOTE: @on decorator works in both elements AND controllers.\n// Supports event delegation, keyboard modifiers, debounce/throttle - see docs/events.md\n// Template event syntax (@click=${handler}) is also available as an alternative.\n\nexport { Context, ContextAwareFetcher, IS_CONTROLLER_INSTANCE, Router, SimpleArray, adopted, applyElementFunctionality, clearDebounceTimers, clearMemoizeCache, clearThrottleTimers, context$1 as context, context as contextProperty, controller, createRequestHandler, css, debounce, dispatch, dispose, element, getSymbol, html, layout, memoize, moved, noChange, nothing, observe, on, once, property, query, queryAll, ready, render, request, resetOnce, respond, setDisableElementReadyWarnings, styles, throttle, trackRenders, unsafeHTML, useNativeElementControllers, waitForAllCustomElements, waitForElementDefined, waitForElementReady, watch };\n//# sourceMappingURL=index.esm.js.map\n","/*!\n * snice v4.34.1\n * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.\n * (c) 2024\n * Released under the MIT License.\n */\n// Global namespace for Snice framework\n// Ensures all registries and symbols are shared across different JS files/modules\n// Initialize the global Snice namespace on globalThis\n// This ensures all module instances share the same registry\nif (!globalThis.snice) {\n globalThis.snice = {\n controllerRegistry: new Map(),\n controllerIdCounter: 0\n };\n}\n// Helper function to get or create a global symbol\n// Symbol.for() already guarantees global uniqueness, no need for a Map cache\nfunction getSymbol(name) {\n return Symbol.for(`snice:${name}`);\n}\n\n// Central file for all symbols used in the framework\n// All symbols are stored globally to ensure consistency across modules\nconst IS_CONTROLLER_CLASS = getSymbol('is-controller-class');\nconst IS_CONTROLLER_INSTANCE = getSymbol('is-controller-instance');\nconst IS_ELEMENT_CLASS = getSymbol('is-element-class');\nconst CHANNEL_HANDLERS = getSymbol('channel-handlers');\n// Internal element state symbols\nconst READY_PROMISE = getSymbol('ready-promise');\nconst READY_RESOLVE = getSymbol('ready-resolve');\nconst RENDERED_PROMISE = getSymbol('rendered-promise');\nconst RENDERED_RESOLVE = getSymbol('rendered-resolve');\nconst CONTROLLER = getSymbol('controller');\nconst INITIALIZED = getSymbol('initialized');\n// Event handler symbols\nconst ON_HANDLERS = getSymbol('on-handlers');\n// Controller symbols\nconst CONTROLLER_KEY = getSymbol('controller-key');\nconst CONTROLLER_NAME_KEY = getSymbol('controller-name');\nconst CONTROLLER_ID = getSymbol('controller-id');\nconst CONTROLLER_OPERATIONS = getSymbol('controller-operations');\nconst NATIVE_CONTROLLER = getSymbol('native-controller');\n// Cleanup symbol - holds an object with all cleanup arrays\nconst CLEANUP = getSymbol('cleanup');\n// Property symbols\nconst PROPERTIES = getSymbol('properties');\nconst PROPERTY_VALUES = getSymbol('property-values');\nconst PRE_INIT_PROPERTY_VALUES = getSymbol('pre-init-property-values');\nconst PROPERTIES_INITIALIZED = getSymbol('properties-initialized');\nconst PROPERTY_WATCHERS = getSymbol('property-watchers');\nconst EXPLICITLY_SET_PROPERTIES = getSymbol('explicitly-set-properties');\n// Router context symbol\nconst ROUTER_CONTEXT = getSymbol('router-context');\nconst CURRENT_PAGE_MARKER = getSymbol('current-page-marker');\nconst CONTEXT_REQUEST_HANDLER = getSymbol('context-request-handler');\nconst PAGE_TRANSITION = getSymbol('page-transition');\nconst CREATED_AT = getSymbol('created-at');\n// Lifecycle symbols\nconst READY_HANDLERS = getSymbol('ready-handlers');\nconst DISPOSE_HANDLERS = getSymbol('dispose-handlers');\nconst MOVED_HANDLERS = getSymbol('moved-handlers');\nconst ADOPTED_HANDLERS = getSymbol('adopted-handlers');\n// Observer symbols\nconst OBSERVERS = getSymbol('observers');\n// Part symbols\nconst PARTS = getSymbol('parts');\nconst PART_TIMERS = getSymbol('part-timers');\n// Property setter flag (prevents attributeChangedCallback re-triggering watchers)\nconst SETTING_FROM_PROPERTY = getSymbol('setting-from-property');\n// Lifecycle callback timers\nconst MOVED_TIMERS = getSymbol('moved-timers');\nconst ADOPTED_TIMERS = getSymbol('adopted-timers');\n// Dispatch timing symbols\nconst DISPATCH_TIMERS = getSymbol('dispatch-timers');\n// Render symbols (v3.0.0)\nconst RENDER_METHOD = getSymbol('render-method');\nconst RENDER_OPTIONS = getSymbol('render-options');\nconst RENDER_INSTANCE = getSymbol('render-instance');\nconst RENDER_TIMERS = getSymbol('render-timers');\nconst RENDER_CALLBACKS = getSymbol('render-callbacks');\nconst STYLES_METHOD = getSymbol('styles-method');\nconst STYLES_APPLIED = getSymbol('styles-applied');\n// Navigation context symbols\nconst CONTEXT_HANDLER = getSymbol('context-handler');\nconst CONTEXT_METHOD_NAME = getSymbol('context-method-name');\nconst NAVIGATION_CONTEXT_INSTANCE = getSymbol('navigation-context-instance');\nconst REGISTERED_ELEMENTS = getSymbol('registered-elements');\nconst IS_UPDATING = getSymbol('is-updating');\nconst CONTEXT_REGISTER = getSymbol('context-register');\nconst CONTEXT_UNREGISTER = getSymbol('context-unregister');\nconst CONTEXT_NOTIFY_ELEMENT = getSymbol('context-notify-element');\nconst CONTEXT_OPTIONS = getSymbol('context-options');\nconst CONTEXT_TIMER = getSymbol('context-timer');\nconst CONTEXT_CALLED = getSymbol('context-called');\nconst CONTEXT_UPDATE = getSymbol('context-update');\n\nexport { ADOPTED_HANDLERS, ADOPTED_TIMERS, CHANNEL_HANDLERS, CLEANUP, CONTEXT_CALLED, CONTEXT_HANDLER, CONTEXT_METHOD_NAME, CONTEXT_NOTIFY_ELEMENT, CONTEXT_OPTIONS, CONTEXT_REGISTER, CONTEXT_REQUEST_HANDLER, CONTEXT_TIMER, CONTEXT_UNREGISTER, CONTEXT_UPDATE, CONTROLLER, CONTROLLER_ID, CONTROLLER_KEY, CONTROLLER_NAME_KEY, CONTROLLER_OPERATIONS, CREATED_AT, CURRENT_PAGE_MARKER, DISPATCH_TIMERS, DISPOSE_HANDLERS, EXPLICITLY_SET_PROPERTIES, INITIALIZED, IS_CONTROLLER_CLASS, IS_CONTROLLER_INSTANCE, IS_ELEMENT_CLASS, IS_UPDATING, MOVED_HANDLERS, MOVED_TIMERS, NATIVE_CONTROLLER, NAVIGATION_CONTEXT_INSTANCE, OBSERVERS, ON_HANDLERS, PAGE_TRANSITION, PARTS, PART_TIMERS, PRE_INIT_PROPERTY_VALUES, PROPERTIES, PROPERTIES_INITIALIZED, PROPERTY_VALUES, PROPERTY_WATCHERS, READY_HANDLERS, READY_PROMISE, READY_RESOLVE, REGISTERED_ELEMENTS, RENDERED_PROMISE, RENDERED_RESOLVE, RENDER_CALLBACKS, RENDER_INSTANCE, RENDER_METHOD, RENDER_OPTIONS, RENDER_TIMERS, ROUTER_CONTEXT, SETTING_FROM_PROPERTY, STYLES_APPLIED, STYLES_METHOD, getSymbol };\n//# sourceMappingURL=symbols.esm.js.map\n","/*!\n * snice v4.34.1\n * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.\n * (c) 2024\n * Released under the MIT License.\n */\n/**\n * Generic transition system for animating between elements\n */\n/**\n * Parse CSS property string into an object\n */\nfunction parseStyles(styleString) {\n const styles = {};\n styleString.split(';').forEach(rule => {\n const [prop, value] = rule.split(':').map(s => s.trim());\n if (prop && value) {\n styles[prop] = value;\n }\n });\n return styles;\n}\n/**\n * Perform a transition between two elements\n */\nvar TransitionMode;\n(function (TransitionMode) {\n TransitionMode[\"SEQUENTIAL\"] = \"sequential\";\n TransitionMode[\"SIMULTANEOUS\"] = \"simultaneous\";\n})(TransitionMode || (TransitionMode = {}));\nfunction applyBaseTransitionStyles(el, isSlotted, duration, prop) {\n el.style.position = 'absolute';\n el.style.width = '100%';\n if (isSlotted) {\n el.style.height = '100%';\n el.style.transition = `opacity ${duration}ms ease-in-out`;\n return;\n }\n el.style.top = '0';\n el.style.left = '0';\n el.style.transition = `${prop} ${duration}ms ease-in-out`;\n}\nfunction resetTransitionStyles(el, isSlotted) {\n el.style.position = '';\n el.style.width = '';\n el.style.transition = '';\n if (isSlotted) {\n el.style.height = '';\n return;\n }\n el.style.top = '';\n el.style.left = '';\n}\nasync function performTransition(container, oldElement, newElement, transition = {}) {\n const outDuration = transition.outDuration || 300;\n const inDuration = transition.inDuration || 300;\n const mode = (transition.mode || 'sequential');\n const outStyles = transition.out ? parseStyles(transition.out) : { opacity: '0' };\n const inStartStyles = { opacity: '0' };\n const inEndStyles = transition.in ? parseStyles(transition.in) : { opacity: '1' };\n const containerStyle = container.style;\n const originalPosition = containerStyle.position;\n const isLayoutElement = container.tagName.includes('-') && container.shadowRoot;\n if (!isLayoutElement)\n containerStyle.position = 'relative';\n const isSlotted = oldElement.hasAttribute('slot') || newElement.hasAttribute('slot');\n applyBaseTransitionStyles(oldElement, isSlotted, outDuration, 'all');\n applyBaseTransitionStyles(newElement, isSlotted, inDuration, 'all');\n Object.assign(newElement.style, inStartStyles);\n container.appendChild(newElement);\n void newElement.offsetHeight;\n // Animate\n switch (mode) {\n case TransitionMode.SIMULTANEOUS:\n Object.assign(oldElement.style, outStyles);\n Object.assign(newElement.style, inEndStyles);\n await new Promise(resolve => setTimeout(resolve, Math.max(outDuration, inDuration)));\n break;\n case TransitionMode.SEQUENTIAL:\n Object.assign(oldElement.style, outStyles);\n await new Promise(resolve => setTimeout(resolve, outDuration));\n Object.assign(newElement.style, inEndStyles);\n await new Promise(resolve => setTimeout(resolve, inDuration));\n break;\n }\n // Cleanup\n oldElement.remove();\n resetTransitionStyles(newElement, isSlotted);\n Object.keys({ ...inStartStyles, ...inEndStyles }).forEach(prop => {\n newElement.style[prop] = '';\n });\n if (!isLayoutElement)\n containerStyle.position = originalPosition;\n}\n/**\n * Predefined transitions\n */\n// Fade transition\nconst fadeTransition = {\n name: 'fade',\n outDuration: 200,\n inDuration: 200,\n out: 'opacity: 0',\n in: 'opacity: 1',\n mode: 'simultaneous'\n};\n// Slide transition (from left)\nconst slideTransition = {\n name: 'slide',\n outDuration: 300,\n inDuration: 300,\n out: 'transform: translateX(-100%)',\n in: 'transform: translateX(0)',\n mode: 'sequential'\n};\n// Slide from right\nconst slideRightTransition = {\n name: 'slide-right',\n outDuration: 300,\n inDuration: 300,\n out: 'transform: translateX(100%)',\n in: 'transform: translateX(0)',\n mode: 'sequential'\n};\n// Slide from top\nconst slideUpTransition = {\n name: 'slide-up',\n outDuration: 300,\n inDuration: 300,\n out: 'transform: translateY(-100%)',\n in: 'transform: translateY(0)',\n mode: 'sequential'\n};\n// Slide from bottom\nconst slideDownTransition = {\n name: 'slide-down',\n outDuration: 300,\n inDuration: 300,\n out: 'transform: translateY(100%)',\n in: 'transform: translateY(0)',\n mode: 'sequential'\n};\n// Scale transition\nconst scaleTransition = {\n name: 'scale',\n outDuration: 250,\n inDuration: 250,\n out: 'transform: scale(0.9); opacity: 0',\n in: 'transform: scale(1); opacity: 1',\n mode: 'simultaneous'\n};\n// Rotate transition\nconst rotateTransition = {\n name: 'rotate',\n outDuration: 400,\n inDuration: 400,\n out: 'transform: rotate(180deg) scale(0.5); opacity: 0',\n in: 'transform: rotate(0) scale(1); opacity: 1',\n mode: 'simultaneous'\n};\n// Flip transition\nconst flipTransition = {\n name: 'flip',\n outDuration: 400,\n inDuration: 400,\n out: 'transform: rotateY(180deg); opacity: 0',\n in: 'transform: rotateY(0); opacity: 1',\n mode: 'sequential'\n};\n// Zoom transition\nconst zoomTransition = {\n name: 'zoom',\n outDuration: 300,\n inDuration: 300,\n out: 'transform: scale(2); opacity: 0',\n in: 'transform: scale(1); opacity: 1',\n mode: 'simultaneous'\n};\n// None transition (instant swap)\nconst noneTransition = {\n name: 'none',\n outDuration: 0,\n inDuration: 0,\n out: '',\n in: '',\n mode: 'simultaneous'\n};\n\nexport { fadeTransition, flipTransition, noneTransition, performTransition, rotateTransition, scaleTransition, slideDownTransition, slideRightTransition, slideTransition, slideUpTransition, zoomTransition };\n//# sourceMappingURL=transitions.esm.js.map\n"],"names":["TransitionMode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snice-runtime.js","sources":["../../index.esm.js","../../symbols.esm.js","../../transitions.esm.js"],"sourcesContent":["/*!\n * snice v4.35.1\n * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.\n * (c) 2024\n * Released under the MIT License.\n */\n// Global namespace for Snice framework\n// Ensures all registries and symbols are shared across different JS files/modules\n// Initialize the global Snice namespace on globalThis\n// This ensures all module instances share the same registry\nif (!globalThis.snice) {\n globalThis.snice = {\n controllerRegistry: new Map(),\n controllerIdCounter: 0\n };\n}\n// Export direct reference to globalThis.snice\nconst snice = globalThis.snice;\n// Helper function to get or create a global symbol\n// Symbol.for() already guarantees global uniqueness, no need for a Map cache\nfunction getSymbol(name) {\n return Symbol.for(`snice:${name}`);\n}\n\n// Central file for all symbols used in the framework\n// All symbols are stored globally to ensure consistency across modules\nconst IS_CONTROLLER_CLASS = getSymbol('is-controller-class');\nconst IS_CONTROLLER_INSTANCE = getSymbol('is-controller-instance');\nconst IS_ELEMENT_CLASS = getSymbol('is-element-class');\nconst CHANNEL_HANDLERS = getSymbol('channel-handlers');\n// Internal element state symbols\nconst READY_PROMISE = getSymbol('ready-promise');\nconst READY_RESOLVE = getSymbol('ready-resolve');\nconst CONTROLLER = getSymbol('controller');\nconst INITIALIZED = getSymbol('initialized');\n// Controller symbols\nconst CONTROLLER_KEY = getSymbol('controller-key');\nconst CONTROLLER_NAME_KEY = getSymbol('controller-name');\nconst CONTROLLER_ID = getSymbol('controller-id');\nconst CONTROLLER_OPERATIONS = getSymbol('controller-operations');\nconst NATIVE_CONTROLLER = getSymbol('native-controller');\n// Cleanup symbol - holds an object with all cleanup arrays\nconst CLEANUP = getSymbol('cleanup');\n// Property symbols\nconst PROPERTIES = getSymbol('properties');\nconst PROPERTY_VALUES = getSymbol('property-values');\nconst PRE_INIT_PROPERTY_VALUES = getSymbol('pre-init-property-values');\nconst PROPERTIES_INITIALIZED = getSymbol('properties-initialized');\nconst PROPERTY_WATCHERS = getSymbol('property-watchers');\nconst EXPLICITLY_SET_PROPERTIES = getSymbol('explicitly-set-properties');\n// Router context symbol\nconst ROUTER_CONTEXT = getSymbol('router-context');\nconst PAGE_TRANSITION = getSymbol('page-transition');\nconst CREATED_AT = getSymbol('created-at');\n// Lifecycle symbols\nconst READY_HANDLERS = getSymbol('ready-handlers');\nconst DISPOSE_HANDLERS = getSymbol('dispose-handlers');\nconst MOVED_HANDLERS = getSymbol('moved-handlers');\nconst ADOPTED_HANDLERS = getSymbol('adopted-handlers');\n// Observer symbols\nconst OBSERVERS = getSymbol('observers');\n// Property setter flag (prevents attributeChangedCallback re-triggering watchers)\nconst SETTING_FROM_PROPERTY = getSymbol('setting-from-property');\n// Lifecycle callback timers\nconst MOVED_TIMERS = getSymbol('moved-timers');\nconst ADOPTED_TIMERS = getSymbol('adopted-timers');\n// Dispatch timing symbols\nconst DISPATCH_TIMERS = getSymbol('dispatch-timers');\n// Render symbols (v3.0.0)\nconst RENDER_METHOD = getSymbol('render-method');\nconst RENDER_OPTIONS = getSymbol('render-options');\nconst RENDER_INSTANCE = getSymbol('render-instance');\nconst RENDER_TIMERS = getSymbol('render-timers');\nconst RENDER_CALLBACKS = getSymbol('render-callbacks');\nconst STYLES_METHOD = getSymbol('styles-method');\nconst STYLES_APPLIED = getSymbol('styles-applied');\nconst PARENT_STYLES_METHODS = getSymbol('parent-styles-methods');\n// Navigation context symbols\nconst CONTEXT_HANDLER = getSymbol('context-handler');\nconst NAVIGATION_CONTEXT_INSTANCE = getSymbol('navigation-context-instance');\nconst REGISTERED_ELEMENTS = getSymbol('registered-elements');\nconst IS_UPDATING = getSymbol('is-updating');\nconst CONTEXT_REGISTER = getSymbol('context-register');\nconst CONTEXT_UNREGISTER = getSymbol('context-unregister');\nconst CONTEXT_NOTIFY_ELEMENT = getSymbol('context-notify-element');\nconst CONTEXT_TIMER = getSymbol('context-timer');\nconst CONTEXT_CALLED = getSymbol('context-called');\nconst CONTEXT_UPDATE = getSymbol('context-update');\n\n/**\n * SimpleArray type for arrays that can be safely reflected to attributes\n * Supports arrays of: string, number, boolean\n * Uses full-width comma (,) as separator to avoid conflicts\n * Strings cannot contain the full-width comma character\n */\nclass SimpleArray {\n static { this.SEPARATOR = ','; } // U+FF0C Full-width comma\n /**\n * Serialize array to string for attribute storage\n */\n static serialize(arr) {\n if (!Array.isArray(arr))\n return '';\n return arr.map(item => {\n if (typeof item === 'string') {\n // Validate string doesn't contain our separator\n if (item.includes(SimpleArray.SEPARATOR)) {\n throw new Error(`SimpleArray strings cannot contain the character \"${SimpleArray.SEPARATOR}\" (U+FF0C)`);\n }\n return item;\n }\n else if (typeof item === 'number' || typeof item === 'boolean') {\n return String(item);\n }\n else {\n throw new Error(`SimpleArray only supports string, number, and boolean types. Got: ${typeof item}`);\n }\n }).join(SimpleArray.SEPARATOR);\n }\n /**\n * Parse string from attribute back to array\n */\n static parse(str) {\n if (str === null || str === undefined)\n return [];\n // Empty string should not be parsed as containing an empty string\n // since empty arrays don't get reflected (handled by the reflection logic)\n if (str === '')\n return [];\n return str.split(SimpleArray.SEPARATOR).map(item => {\n // Try to parse as number\n if (/^-?\\d+\\.?\\d*$/.test(item)) {\n const num = Number(item);\n if (!isNaN(num))\n return num;\n }\n // Parse as boolean\n if (item === 'true')\n return true;\n if (item === 'false')\n return false;\n // Default to string\n return item;\n });\n }\n}\n\nvar _a, _b, _c;\n// Symbol for storing the Set of elements\n// Use Symbol.for() to ensure symbols are shared across multiple Snice instances\nconst REGISTERED_ELEMENTS_SET = Symbol.for('snice:registered-elements-set');\n// Counter for generating unique context IDs\nlet contextIdCounter = 0;\n/**\n * Represents the bundled router state that can notify registered elements of changes\n */\nclass Context {\n constructor(context = {}, placards = [], currentRoute = '', routeParams = {}, fetcher) {\n this[_a] = new WeakMap();\n this[_b] = new Set();\n this[_c] = false;\n this.id = contextIdCounter++;\n this.application = context;\n this.navigation = {\n placards,\n route: currentRoute,\n params: routeParams\n };\n // Initialize fetch with middleware support or fallback to native fetch\n if (fetcher && typeof fetcher.create === 'function') {\n this.fetch = fetcher.create(this);\n }\n else if (typeof fetch === 'function') {\n this.fetch = fetch.bind(this);\n }\n else {\n throw new Error('No fetch implementation available');\n }\n }\n /**\n * Register an element to receive context updates\n * @internal Used by @context decorator\n */\n [(_a = REGISTERED_ELEMENTS, _b = REGISTERED_ELEMENTS_SET, _c = IS_UPDATING, CONTEXT_REGISTER)](element, methodName) {\n this[REGISTERED_ELEMENTS].set(element, methodName);\n this[REGISTERED_ELEMENTS_SET].add(element);\n }\n /**\n * Unregister an element from receiving context updates\n * @internal Used by @context decorator cleanup\n */\n [CONTEXT_UNREGISTER](element) {\n this[REGISTERED_ELEMENTS].delete(element);\n this[REGISTERED_ELEMENTS_SET].delete(element);\n }\n /**\n * Update the context and notify all registered elements\n * Prevents infinite loops by tracking update state\n * @internal Used by Router during navigation\n */\n [CONTEXT_UPDATE](context, placards, currentRoute, routeParams) {\n this.application = context;\n this.navigation.placards = placards;\n this.navigation.route = currentRoute;\n this.navigation.params = routeParams;\n this.notify();\n }\n /**\n * Signal all @context() subscribers to re-read context\n * Does not modify any state — just notifies listeners with current values\n */\n update() {\n this.notify();\n }\n notify() {\n // Prevent infinite loops\n if (this[IS_UPDATING]) {\n return;\n }\n this[IS_UPDATING] = true;\n // Notify all registered elements by calling their methods directly\n const elementsSet = this[REGISTERED_ELEMENTS_SET];\n const elementsMap = this[REGISTERED_ELEMENTS];\n for (const element of elementsSet) {\n const methodName = elementsMap.get(element);\n if (methodName && typeof element[methodName] === 'function') {\n try {\n element[methodName](this);\n }\n catch (error) {\n // Log error but continue notifying other elements\n console.error(`Error calling @context method ${methodName}:`, error);\n }\n }\n }\n this[IS_UPDATING] = false;\n }\n /**\n * Notify a specific element of the current context state\n * @internal Used by @context decorator\n */\n [CONTEXT_NOTIFY_ELEMENT](element) {\n const methodName = this[REGISTERED_ELEMENTS].get(element);\n if (methodName && typeof element[methodName] === 'function') {\n element[methodName](this);\n }\n }\n}\n\n/**\n * Detects the type constructor from an initial value\n * @param initialValue - The default value assigned to a property field (e.g., `name = \"default\"` -> \"default\")\n * @returns The constructor function (String, Number, Boolean, etc.) or undefined if type can't be determined\n */\nfunction detectType(initialValue) {\n if (initialValue === null || initialValue === undefined) {\n return undefined;\n }\n if (typeof initialValue === 'string') {\n return String;\n }\n if (typeof initialValue === 'number') {\n return Number;\n }\n if (typeof initialValue === 'boolean') {\n return Boolean;\n }\n if (initialValue instanceof Date) {\n return Date;\n }\n if (typeof initialValue === 'bigint') {\n return BigInt;\n }\n if (Array.isArray(initialValue)) {\n return Array;\n }\n return undefined;\n}\n/**\n * Parses an attribute value based on the property type\n * @param attributeValue - The raw string value from the HTML attribute (e.g., \"123\", \"true\", \"hello\")\n * @param propertyOptions - The options from @property decorator (contains explicit type, attribute name, etc.)\n * @param currentValue - The current stored value of the property (used for type inference when no explicit type)\n * @param initialValue - The default value assigned to the property field (used for type detection as fallback)\n * @returns The parsed value in the correct JavaScript type\n */\nfunction parseAttributeValue(attributeValue, propertyOptions, currentValue, initialValue) {\n // Use explicit type or detect from initial value\n const typeToUse = propertyOptions.type || detectType(initialValue);\n switch (typeToUse) {\n case Boolean:\n // Boolean semantics per user specification:\n // - No attribute = false\n // - String \"false\" = false\n // - String \"true\" = true\n // - Empty string = true (attribute exists like <element bool-attr>)\n // - Any other value = true\n if (attributeValue === null)\n return false; // No attribute\n if (attributeValue === 'false')\n return false; // String \"false\"\n // All other cases (including empty string) = true (attribute exists)\n return true;\n case Number:\n return attributeValue !== null ? Number(attributeValue) : null;\n case String:\n return attributeValue;\n case Date:\n return attributeValue ? new Date(attributeValue) : null;\n case BigInt:\n if (attributeValue && attributeValue.endsWith('n')) {\n return BigInt(attributeValue.slice(0, -1));\n }\n else {\n return attributeValue ? BigInt(attributeValue) : null;\n }\n case SimpleArray:\n return SimpleArray.parse(attributeValue);\n case Array:\n try {\n return attributeValue ? JSON.parse(attributeValue) : [];\n }\n catch {\n return [];\n }\n case Object:\n try {\n return attributeValue ? JSON.parse(attributeValue) : {};\n }\n catch {\n return {};\n }\n default:\n // If no type specified and can't detect, try to infer from current value type\n if (typeof currentValue === 'number' && attributeValue !== null) {\n return Number(attributeValue);\n }\n else {\n return attributeValue;\n }\n }\n}\n/**\n * Converts a property value to its attribute string representation\n * @param value - The property value to convert\n * @param propertyOptions - The options from @property decorator\n * @param initialValue - The default value assigned to the property field (used for type detection)\n * @returns The string representation for the HTML attribute, or null if value should remove attribute\n */\n/**\n * Extract attribute name from property options\n */\nfunction getAttrName(opts, propName) {\n return typeof opts.attribute === 'string' ? opts.attribute : propName.toLowerCase();\n}\n/**\n * Lazy-init a Set on a symbol key\n */\nfunction ensureSet(obj, sym) {\n if (!obj[sym])\n obj[sym] = new Set();\n return obj[sym];\n}\n/**\n * Lazy-init an object on a symbol key\n */\nfunction ensureObj(obj, sym) {\n if (!obj[sym])\n obj[sym] = {};\n return obj[sym];\n}\n/**\n * Invoke property watchers for a given property change\n */\nfunction invokeWatchers(instance, constructor, propName, oldValue, newValue) {\n const watchers = constructor[PROPERTY_WATCHERS];\n if (!watchers)\n return;\n if (watchers.has(propName)) {\n for (const w of watchers.get(propName)) {\n try {\n w.method.call(instance, oldValue, newValue, propName);\n }\n catch (e) {\n console.error(`Error in @watch('${propName}') method ${w.methodName}:`, e);\n }\n }\n }\n if (watchers.has('*')) {\n for (const w of watchers.get('*')) {\n try {\n w.method.call(instance, oldValue, newValue, propName);\n }\n catch (e) {\n console.error(`Error in @watch('*') method ${w.methodName}:`, e);\n }\n }\n }\n}\n/**\n * Create a debounced version of a function\n */\nfunction createDebounced(fn, delay) {\n let timer = null;\n return function (...args) {\n if (timer !== null)\n clearTimeout(timer);\n timer = setTimeout(() => { fn.apply(this, args); timer = null; }, delay);\n };\n}\n/**\n * Create a throttled version of a function (leading + trailing edge)\n */\nfunction createThrottled(fn, delay) {\n let lastCall = 0;\n let timer = null;\n return function (...args) {\n const now = Date.now();\n const remaining = delay - (now - lastCall);\n if (remaining <= 0) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n lastCall = now;\n return fn.apply(this, args);\n }\n if (!timer) {\n timer = setTimeout(() => { lastCall = Date.now(); timer = null; fn.apply(this, args); }, remaining);\n }\n };\n}\nfunction valueToAttribute(value, propertyOptions, initialValue) {\n // Handle null/undefined/false values and empty arrays\n if (value === null || value === undefined || value === false ||\n (propertyOptions?.type === SimpleArray && Array.isArray(value) && value.length === 0)) {\n return null;\n }\n // Use custom converter if provided\n if (propertyOptions.converter?.toAttribute) {\n return propertyOptions.converter.toAttribute(value, propertyOptions.type);\n }\n // Use explicit type or detect from initial value\n const typeToUse = propertyOptions.type || detectType(initialValue);\n switch (typeToUse) {\n case Boolean:\n // For boolean attributes, return \"true\" when true\n // (false is already handled above - returns null to remove attribute)\n return 'true';\n case Date:\n return value instanceof Date ? value.toISOString() : String(value);\n case BigInt:\n return typeof value === 'bigint' ? value.toString() + 'n' : String(value);\n case SimpleArray:\n return Array.isArray(value) ? SimpleArray.serialize(value) : String(value);\n case Array:\n return Array.isArray(value) ? JSON.stringify(value) : String(value);\n case Object:\n return typeof value === 'object' && value !== null ? JSON.stringify(value) : String(value);\n default:\n return String(value);\n }\n}\n\n// Global cache for MediaQueryList objects\nconst mediaQueryCache = new Map();\n/**\n * Decorator for observing external changes like viewport intersection, resize, media queries, and DOM mutations\n *\n * @param target - The observation target (e.g., 'intersection', 'resize', 'media:(min-width: 768px)', 'mutation:childList') or array of targets\n * @param selectorOrOptions - CSS selector for element to observe OR options object\n * @param options - Options object (when second parameter is a selector)\n */\nfunction observe(observeTarget, selectorOrOptions, options) {\n // Handle overloaded parameters\n let selector;\n let opts;\n if (typeof selectorOrOptions === 'string') {\n selector = selectorOrOptions;\n opts = options;\n }\n else {\n selector = undefined;\n opts = selectorOrOptions;\n }\n return function (target, context) {\n const propertyKey = context.name;\n context.addInitializer(function () {\n const constructor = this.constructor;\n if (!constructor.__observeMethods)\n constructor.__observeMethods = new Set();\n if (constructor.__observeMethods.has(target))\n return;\n constructor.__observeMethods.add(target);\n if (!constructor[OBSERVERS]) {\n constructor[OBSERVERS] = [];\n }\n const observeTargets = Array.isArray(observeTarget) ? observeTarget : [observeTarget];\n for (const targetString of observeTargets) {\n const [type, ...modifiers] = targetString.split(':');\n const targetStr = modifiers.join(':');\n constructor[OBSERVERS].push({\n type,\n target: targetStr,\n selector,\n methodName: propertyKey,\n method: target,\n options: opts\n });\n }\n });\n };\n}\n// Helper to setup observers for elements\nfunction setupObservers(instance, element) {\n const observers = instance.constructor[OBSERVERS];\n if (!observers || !Array.isArray(observers) || observers.length === 0) {\n return;\n }\n // Initialize cleanup object if needed\n if (!instance[CLEANUP]) {\n instance[CLEANUP] = { events: [], channels: [], observers: [] };\n }\n else if (!instance[CLEANUP].observers) {\n instance[CLEANUP].observers = [];\n }\n for (const observer of observers) {\n const method = observer.method.bind(instance);\n // Apply throttling if specified\n const callback = observer.options?.throttle\n ? createThrottled(method, observer.options.throttle)\n : method;\n switch (observer.type) {\n case 'intersection':\n setupIntersectionObserver(instance, element, observer, callback);\n break;\n case 'resize':\n setupResizeObserver(instance, element, observer, callback);\n break;\n case 'media':\n setupMediaQueryObserver(instance, element, observer, callback);\n break;\n case 'mutation':\n setupMutationObserver(instance, element, observer, callback);\n break;\n default:\n console.warn(`Unknown observer type: ${observer.type}`);\n }\n }\n}\nfunction setupIntersectionObserver(instance, element, observer, callback) {\n const options = {\n threshold: observer.options?.threshold ?? 0,\n rootMargin: observer.options?.rootMargin ?? '0px',\n root: observer.options?.root ?? null\n };\n // Wrap callback to handle return value\n const wrappedCallback = (entries) => {\n for (const entry of entries) {\n try {\n const result = callback(entry);\n if (result === false && io) {\n io.unobserve(entry.target);\n }\n }\n catch (error) {\n console.error(`Error in intersection observer ${observer.methodName}:`, error);\n }\n }\n };\n if (typeof IntersectionObserver === 'undefined') {\n console.warn('IntersectionObserver is not available in this environment');\n return;\n }\n const io = new IntersectionObserver(wrappedCallback, options);\n // Find target elements\n const targets = observer.selector\n ? Array.from(element.shadowRoot?.querySelectorAll(observer.selector) || [])\n : [element];\n // Start observing\n targets.forEach(target => io.observe(target));\n // Store cleanup\n instance[CLEANUP].observers.push(() => {\n targets.forEach(target => io.unobserve(target));\n // Only disconnect if no more targets\n if (io.takeRecords().length === 0) {\n io.disconnect();\n }\n });\n}\nfunction setupResizeObserver(instance, element, observer, callback) {\n const box = observer.options?.box || 'content-box';\n // Wrap callback with error handling\n const wrappedCallback = (entries) => {\n for (const entry of entries) {\n try {\n callback(entry);\n }\n catch (error) {\n console.error(`Error in resize observer ${observer.methodName}:`, error);\n }\n }\n };\n // Check if ResizeObserver is available\n if (typeof ResizeObserver === 'undefined') {\n console.warn('ResizeObserver is not available in this environment');\n return;\n }\n // Create ResizeObserver\n const ro = new ResizeObserver(wrappedCallback);\n // Find target elements\n const targets = observer.selector\n ? Array.from(element.shadowRoot?.querySelectorAll(observer.selector) || [])\n : [element];\n // Start observing with options\n targets.forEach(target => {\n ro.observe(target, { box });\n });\n // Store cleanup\n instance[CLEANUP].observers.push(() => {\n ro.disconnect();\n });\n}\nfunction setupMediaQueryObserver(instance, _element, observer, callback) {\n // Extract media query from target (e.g., \"media:(min-width: 768px)\" -> \"(min-width: 768px)\")\n const mediaQuery = observer.target;\n if (!mediaQuery) {\n console.warn('Media query observer requires a query string');\n return;\n }\n // Get or create MediaQueryList (cached globally)\n let mql = mediaQueryCache.get(mediaQuery);\n if (!mql) {\n try {\n mql = window.matchMedia(mediaQuery);\n mediaQueryCache.set(mediaQuery, mql);\n }\n catch (error) {\n console.error(`Invalid media query: ${mediaQuery}`, error);\n return;\n }\n }\n // Wrap callback with error handling\n const wrappedCallback = (event) => {\n try {\n callback('matches' in event ? event.matches : event.matches);\n }\n catch (error) {\n console.error(`Error in media query observer ${observer.methodName}:`, error);\n }\n };\n // Call immediately with current state\n wrappedCallback(mql);\n // Listen for changes\n const changeHandler = (e) => wrappedCallback(e);\n // Modern browsers use addEventListener\n if (mql.addEventListener) {\n mql.addEventListener('change', changeHandler);\n instance[CLEANUP].observers.push(() => {\n mql.removeEventListener('change', changeHandler);\n });\n }\n else {\n // Fallback for older browsers\n mql.addListener(changeHandler);\n instance[CLEANUP].observers.push(() => {\n mql.removeListener(changeHandler);\n });\n }\n}\nfunction setupMutationObserver(instance, element, observer, callback) {\n // Parse mutation type and attribute from target\n // e.g., \"childList\", \"attributes:class\", \"attributes:data-state\"\n const parts = observer.target.split(':');\n const mutationType = parts[0] || 'childList';\n const attributeName = parts[1];\n // Build MutationObserver options\n const options = {};\n switch (mutationType) {\n case 'childList':\n options.childList = true;\n break;\n case 'attributes':\n options.attributes = true;\n if (attributeName) {\n options.attributeFilter = [attributeName];\n }\n break;\n default:\n console.warn(`Unknown mutation type: ${mutationType}`);\n return;\n }\n // Apply subtree with safety limits\n if (observer.options?.subtree) {\n options.subtree = true;\n // Could implement maxDepth checking in the callback\n if (observer.options.maxDepth) {\n console.warn('maxDepth is set but requires custom implementation');\n }\n }\n // Wrap callback with error handling and optional depth filtering\n const needsDepthFilter = !!(observer.options?.maxDepth && observer.options.subtree);\n const wrappedCallback = (mutations) => {\n try {\n if (!needsDepthFilter) {\n callback(mutations);\n return;\n }\n const maxDepth = observer.options.maxDepth;\n const root = element.shadowRoot || element;\n const filtered = mutations.filter(mutation => {\n let depth = 0;\n let current = mutation.target;\n while (current && current !== root && depth < maxDepth) {\n current = current.parentNode;\n depth++;\n }\n return depth < maxDepth;\n });\n if (filtered.length > 0)\n callback(filtered);\n }\n catch (error) {\n console.error(`Error in mutation observer ${observer.methodName}:`, error);\n }\n };\n // Create MutationObserver\n const mo = new MutationObserver(wrappedCallback);\n // Find target elements\n const isController = instance[IS_CONTROLLER_INSTANCE] === true;\n // For mutation observers without selector:\n // - Controllers: observe the shadow DOM of the element they're attached to (if it exists)\n // - Elements: observe the element itself (light DOM) to avoid infinite loops\n const targets = observer.selector\n ? Array.from(element.shadowRoot?.querySelectorAll(observer.selector) || [])\n : isController && element.shadowRoot\n ? [element.shadowRoot]\n : [element];\n // Start observing\n targets.forEach(target => {\n mo.observe(target, options);\n });\n // Store cleanup\n instance[CLEANUP].observers.push(() => {\n mo.disconnect();\n });\n}\n// Helper to cleanup observers\nfunction cleanupObservers(instance) {\n if (instance[CLEANUP]?.observers) {\n for (const cleanup of instance[CLEANUP].observers) {\n cleanup();\n }\n instance[CLEANUP].observers = [];\n }\n}\n\n// @request decorator transforms methods to return Promise<T>\n/**\n * Decorator for making requests from elements or controllers.\n * Uses async generator pattern for bidirectional communication.\n *\n * @param requestName The name of the request\n * @param options Optional configuration\n */\nfunction request(requestName, options) {\n return function (originalMethod, _context) {\n // Create timing variables for debounce/throttle\n let debounceTimeout;\n let throttleLastCall = 0;\n let throttleTimeout;\n return async function (...args) {\n const actualRequest = async () => {\n // @request always acts as requester (client side)\n const responseTimeout = options?.timeout ?? 120000; // Default 2 minute timeout\n const discoveryTimeout = options?.discoveryTimeout ?? 50; // Default 50ms discovery timeout\n // Create the generator\n const generator = originalMethod.apply(this, args);\n // Get the first yield (the request payload)\n const { value: payload, done } = await generator.next();\n if (done) {\n // Generator returned without yielding\n return payload;\n }\n // Create data promise and expose resolve/reject\n let dataResolve;\n let dataReject;\n const dataPromise = new Promise((resolve, reject) => {\n dataResolve = resolve;\n dataReject = reject;\n });\n // Create discovery timeout promise and expose resolve/reject\n let discoveryResolve;\n let discoveryReject;\n let discoveryTimeoutId;\n const discoveryPromise = new Promise((resolve, reject) => {\n discoveryResolve = resolve;\n discoveryReject = reject;\n discoveryTimeoutId = setTimeout(() => {\n reject(new Error(`Request \"${requestName}\" timed out after ${discoveryTimeout}ms - no handler found`));\n }, discoveryTimeout);\n });\n // Dispatch event with promises\n const eventName = `@request/${requestName}`;\n const event = new CustomEvent(eventName, {\n bubbles: options?.bubbles !== undefined ? options.bubbles : true,\n cancelable: options?.cancelable || false,\n composed: true, // Allow crossing shadow DOM boundaries\n detail: {\n payload,\n discovery: {\n resolve: () => {\n clearTimeout(discoveryTimeoutId);\n discoveryResolve();\n },\n reject: discoveryReject\n },\n data: {\n resolve: dataResolve,\n reject: dataReject\n }\n }\n });\n // Check if this is a controller instance using the symbol\n const isController = this[IS_CONTROLLER_INSTANCE] === true;\n const dispatcher = isController && this.element ? this.element : this;\n dispatcher.dispatchEvent(event);\n try {\n // Wait for discovery timeout to be cleared (handler found) or discovery timeout to reject (no handler)\n await discoveryPromise;\n // If we get here, a handler was found and discovery timeout was cleared\n // Now wait for the actual data response with the full response timeout\n const responseTimeoutId = setTimeout(() => {\n dataReject(new Error(`Request \"${requestName}\" timed out after ${responseTimeout}ms`));\n }, responseTimeout);\n const response = await dataPromise;\n clearTimeout(responseTimeoutId);\n // Send response back to generator and get final return value\n const { value: finalValue } = await generator.next(response);\n return finalValue;\n }\n catch (error) {\n // Send error to generator\n try {\n await generator.throw(error);\n }\n catch (generatorError) {\n throw generatorError;\n }\n }\n }; // Close actualRequest function\n // Debounce\n if (options?.debounce) {\n return new Promise((resolve, reject) => {\n clearTimeout(debounceTimeout);\n debounceTimeout = setTimeout(async () => {\n try {\n resolve(await actualRequest());\n }\n catch (error) {\n reject(error);\n }\n }, options.debounce);\n });\n }\n // No throttle — execute immediately\n if (!options?.throttle)\n return actualRequest();\n // Throttle: time elapsed — invoke now\n const now = Date.now();\n const remaining = options.throttle - (now - throttleLastCall);\n if (remaining <= 0) {\n clearTimeout(throttleTimeout);\n throttleLastCall = now;\n return actualRequest();\n }\n // Throttle: already has pending timeout\n if (throttleTimeout)\n return Promise.resolve();\n // Throttle: schedule trailing call\n return new Promise((resolve, reject) => {\n throttleTimeout = setTimeout(async () => {\n throttleLastCall = Date.now();\n throttleTimeout = null;\n try {\n resolve(await actualRequest());\n }\n catch (error) {\n reject(error);\n }\n }, remaining);\n });\n };\n };\n}\n/**\n * Decorator for responding to requests in elements or controllers.\n *\n * @param requestName The name of the request to respond to\n * @param options Optional configuration\n */\nfunction respond(requestName, options) {\n return function (target, context) {\n const propertyKey = context.name;\n context.addInitializer(function () {\n const constructor = this.constructor;\n if (!constructor.__respondMethods)\n constructor.__respondMethods = new Set();\n if (constructor.__respondMethods.has(target))\n return;\n constructor.__respondMethods.add(target);\n if (!constructor[CHANNEL_HANDLERS]) {\n constructor[CHANNEL_HANDLERS] = [];\n }\n constructor[CHANNEL_HANDLERS].push({\n channelName: requestName,\n methodName: propertyKey,\n method: target,\n options: options\n });\n });\n };\n}\n// Helper to setup response handlers for elements and controllers\nfunction setupResponseHandlers(instance, element) {\n const handlers = instance.constructor[CHANNEL_HANDLERS];\n if (!handlers)\n return;\n // Store cleanup functions\n // Initialize cleanup object if needed\n if (!instance[CLEANUP]) {\n instance[CLEANUP] = { events: [], channels: [] };\n }\n for (const handler of handlers) {\n const boundMethod = handler.method.bind(instance);\n const eventName = `@request/${handler.channelName}`;\n // Create timing variables for debounce/throttle per handler\n let debounceTimeout;\n let throttleLastCall = 0;\n let throttleTimeout;\n // Create wrapped method with timing if needed\n const createTimedMethod = (originalMethod) => {\n if (handler.options?.debounce) {\n return (...args) => new Promise((resolve, reject) => {\n clearTimeout(debounceTimeout);\n debounceTimeout = setTimeout(async () => {\n try {\n resolve(await originalMethod(...args));\n }\n catch (error) {\n reject(error);\n }\n }, handler.options.debounce);\n });\n }\n if (!handler.options?.throttle)\n return originalMethod;\n return (...args) => {\n const now = Date.now();\n const remaining = handler.options.throttle - (now - throttleLastCall);\n if (remaining <= 0) {\n clearTimeout(throttleTimeout);\n throttleLastCall = now;\n return originalMethod(...args);\n }\n if (throttleTimeout)\n return Promise.resolve(undefined);\n return new Promise((resolve, reject) => {\n throttleTimeout = setTimeout(async () => {\n throttleLastCall = Date.now();\n throttleTimeout = null;\n try {\n resolve(await originalMethod(...args));\n }\n catch (error) {\n reject(error);\n }\n }, remaining);\n });\n };\n };\n const timedMethod = createTimedMethod(boundMethod);\n // Setup response handler\n const responseHandler = (event) => {\n // Extract promises and payload\n const { data, discovery, payload } = event.detail;\n // Prevent other responders from responding\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n // Clear the discovery timeout immediately - we found a handler\n discovery.resolve();\n // Call the timed responder method and handle the result\n Promise.resolve(timedMethod(payload))\n .then(result => {\n data.resolve(result);\n })\n .catch(error => {\n data.reject(error);\n console.error(`Error in response handler ${handler.methodName}:`, error);\n });\n };\n element.addEventListener(eventName, responseHandler);\n instance[CLEANUP].channels.push(() => {\n element.removeEventListener(eventName, responseHandler);\n });\n }\n}\n// Helper to cleanup response handlers\nfunction cleanupResponseHandlers(instance) {\n if (instance[CLEANUP]?.channels) {\n for (const cleanup of instance[CLEANUP].channels) {\n cleanup();\n }\n instance[CLEANUP].channels = [];\n }\n}\n\n/**\n * Template system for Snice v3.0.0\n * Provides html`` and css`` tagged template processors with differential rendering\n */\n// Unique symbols for type checking\n// Use Symbol.for() to ensure symbols are shared across multiple Snice instances\nconst HTML_RESULT = Symbol.for('snice:html-result');\nconst CSS_RESULT = Symbol.for('snice:css-result');\n/**\n * Tagged template function for creating HTML templates\n *\n * @example\n * ```typescript\n * html`<div class=\"card\">\n * <h1>${this.title}</h1>\n * <button @click=${this.handleClick}>Click me</button>\n * </div>`\n * ```\n */\nfunction html(strings, ...values) {\n return {\n _$litType$: HTML_RESULT,\n strings,\n values\n };\n}\n/**\n * Tagged template function for creating CSS\n *\n * @example\n * ```typescript\n * css`:host {\n * display: block;\n * padding: 1rem;\n * }`\n * ```\n */\nfunction css(strings, ...values) {\n // Combine strings and values into final CSS text\n let cssText = strings[0];\n for (let i = 0; i < values.length; i++) {\n cssText += String(values[i]) + strings[i + 1];\n }\n const result = {\n _$litType$: CSS_RESULT,\n cssText\n };\n // Try to create constructable stylesheet for better performance\n // This will be cached and reused across instances\n if (typeof CSSStyleSheet !== 'undefined' && 'adoptedStyleSheets' in Document.prototype) {\n try {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssText);\n result.styleSheet = sheet;\n }\n catch (e) {\n // Fall back to regular <style> tag if constructable stylesheets fail\n }\n }\n return result;\n}\n/**\n * Check if a value is a TemplateResult\n */\nfunction isTemplateResult(value) {\n return value && value._$litType$ === HTML_RESULT;\n}\n/**\n * Check if a value is a CSSResult\n */\nfunction isCSSResult(value) {\n return value && value._$litType$ === CSS_RESULT;\n}\n/**\n * Nothing - represents no value (different from null/undefined)\n * Used to remove content from templates\n * Use Symbol.for() to ensure symbols are shared across multiple Snice instances\n */\nconst nothing = Symbol.for('snice:nothing');\n// Unique symbol for unsafe HTML\n// Use Symbol.for() to ensure symbols are shared across multiple Snice instances\nconst UNSAFE_HTML = Symbol.for('snice:unsafe-html');\n/**\n * Mark a string as raw HTML that should not be escaped\n * WARNING: Only use with sanitized content - using user input can lead to XSS!\n *\n * @example\n * ```typescript\n * const htmlString = '<span class=\"bold\">Hello</span>';\n * html`<div>${unsafeHTML(htmlString)}</div>`\n * ```\n */\nfunction unsafeHTML(html) {\n return {\n _$litType$: UNSAFE_HTML,\n html\n };\n}\n/**\n * Check if a value is an UnsafeHTML wrapper\n */\nfunction isUnsafeHTML(value) {\n return value && value._$litType$ === UNSAFE_HTML;\n}\n\n// Unique marker for dynamic parts\n// This parses as a comment node but doesn't get escaped in attributes\nconst marker = `snice$${Math.random().toFixed(9).slice(2)}$`;\nconst markerMatch = '?' + marker;\nconst nodeMarker = `<${markerMatch}>`;\nconst markerRegex = new RegExp(marker, 'g');\n// Template cache - templates with same string array can be reused\nconst templateCache = new WeakMap();\n// Sentinel for \"not yet set\" - distinct from undefined/null\nconst NOT_COMMITTED = Symbol('not-committed');\n// noChange sentinel - signals a directive handled the value\nconst noChange = Symbol.for('snice:no-change');\n/**\n * Check if value is a primitive (can be compared with ===)\n */\nconst isPrimitive = (value) => value === null || (typeof value !== 'object' && typeof value !== 'function');\n/**\n * Check if value is iterable (array or has Symbol.iterator)\n */\nconst isIterable = (value) => Array.isArray(value) || typeof value?.[Symbol.iterator] === 'function';\n/**\n * A prepared template ready for rendering\n */\nclass Template {\n constructor(result, element, attrNamesForParts) {\n this.parts = [];\n this.element = element;\n const walker = document.createTreeWalker(element.content, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT);\n let partIndex = 0;\n const nodesToRemove = [];\n let node;\n while ((node = walker.nextNode()) !== null) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node;\n const tagName = element.tagName.toLowerCase();\n // Handle virtual elements: <if>, <case>\n // Keep them in the DOM with display:contents for now\n // Will optimize later with proper template extraction\n if (tagName === 'if') {\n // <if value=\"${condition}\">children</if>\n const valueAttr = element.getAttribute('value');\n if (valueAttr && valueAttr.includes(marker)) {\n // Remove the value attribute\n element.removeAttribute('value');\n this.parts.push({\n type: 'conditional-if',\n index: partIndex++,\n element // Keep the <if> element\n });\n // Continue processing children normally\n }\n continue;\n }\n // Handle <case> element\n if (tagName === 'case') {\n // <case value=\"${value}\">children</case>\n const valueAttr = element.getAttribute('value');\n if (valueAttr && valueAttr.includes(marker)) {\n // Remove the value attribute\n element.removeAttribute('value');\n this.parts.push({\n type: 'conditional-case',\n index: partIndex++,\n element // Keep the <case> element\n });\n // Continue processing children normally\n }\n continue;\n }\n if (element.hasAttributes()) {\n const attributes = element.attributes;\n const attrsToRemove = [];\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes[i];\n const value = attr.value;\n // Check for attribute bindings\n if (value.includes(marker)) {\n attrsToRemove.push(attr);\n // Get original attribute name with preserved case\n const originalName = attrNamesForParts[partIndex] || attr.name;\n // Extract static string segments by splitting on marker\n const attrStrings = value.split(marker);\n // Number of expressions = number of markers = attrStrings.length - 1\n const expressionCount = attrStrings.length - 1;\n if (originalName.startsWith('@@')) {\n // Escaped event binding for events with @ in the name (e.g., @@snice/event -> @snice/event)\n this.parts.push({\n type: 'event',\n index: partIndex,\n name: originalName.slice(1), // Keep the @ in the event name\n element\n });\n partIndex += 1;\n }\n else if (originalName.startsWith('@')) {\n // Event binding (single value only)\n this.parts.push({\n type: 'event',\n index: partIndex,\n name: originalName.slice(1),\n element\n });\n partIndex += 1;\n }\n else if (originalName.startsWith('.')) {\n // Property binding (single value only)\n this.parts.push({\n type: 'property',\n index: partIndex,\n name: originalName.slice(1),\n element\n });\n partIndex += 1;\n }\n else if (originalName.startsWith('?')) {\n // Boolean attribute (single value only)\n this.parts.push({\n type: 'boolean-attribute',\n index: partIndex,\n name: originalName.slice(1),\n element\n });\n partIndex += 1;\n }\n else {\n // Regular attribute - supports multiple interpolations\n // Store static string segments for interpolation\n this.parts.push({\n type: 'attribute',\n index: partIndex,\n name: attr.name,\n element,\n attrStrings\n });\n // Increment by number of expressions consumed\n partIndex += expressionCount;\n }\n }\n }\n // Remove marker attributes\n for (const attr of attrsToRemove) {\n element.removeAttribute(attr.name);\n }\n }\n }\n else if (node.nodeType === Node.COMMENT_NODE) {\n const comment = node;\n // Check for marker match (processing instruction becomes comment)\n if (comment.data === markerMatch) {\n // Node part\n const parent = comment.parentNode;\n const endNode = document.createComment('');\n parent.insertBefore(endNode, comment.nextSibling);\n this.parts.push({\n type: 'node',\n index: partIndex++,\n startNode: comment,\n endNode\n });\n }\n }\n else if (node.nodeType === Node.TEXT_NODE) {\n const text = node;\n const data = text.data;\n if (data.includes(marker)) {\n // Split text node at markers\n const parent = text.parentNode;\n const parts = data.split(markerRegex);\n const lastIndex = parts.length - 1;\n for (let i = 0; i < lastIndex; i++) {\n parent.insertBefore(document.createTextNode(parts[i]), text);\n const comment = document.createComment('');\n const endNode = document.createComment('');\n parent.insertBefore(comment, text);\n parent.insertBefore(endNode, text);\n this.parts.push({\n type: 'node',\n index: partIndex++,\n startNode: comment,\n endNode\n });\n }\n // Last part\n if (parts[lastIndex] !== '') {\n text.data = parts[lastIndex];\n }\n else {\n nodesToRemove.push(text);\n }\n }\n }\n }\n // Remove marker nodes\n for (const node of nodesToRemove) {\n node.parentNode?.removeChild(node);\n }\n }\n}\n/**\n * Prepare a template for rendering\n *\n * Uses state tracking to correctly handle multi-interpolation in attributes.\n * Tracks whether we're inside a tag and inside a quoted attribute value.\n */\nfunction prepareTemplate(result) {\n // Check cache first\n const { strings } = result;\n const cached = templateCache.get(strings);\n if (cached) {\n return cached;\n }\n // Build HTML with markers and extract original attribute names\n const htmlParts = [];\n const attrNamesForParts = [];\n // State tracking for multi-interpolation support\n let inTag = false; // Inside a tag (between < and >)\n let inAttrValue = false; // Inside a quoted attribute value\n let attrQuoteChar = ''; // The quote character (' or \")\n let currentAttrName = ''; // The current attribute name\n for (let i = 0; i < strings.length; i++) {\n const str = strings[i];\n htmlParts.push(str);\n if (i < strings.length - 1) {\n // Update state by scanning the string\n for (let j = 0; j < str.length; j++) {\n const char = str[j];\n if (!inTag) {\n // Looking for tag start\n if (char === '<') {\n inTag = true;\n }\n }\n else if (!inAttrValue) {\n // Inside tag, but not in attribute value\n if (char === '>') {\n inTag = false;\n }\n else if (char === '\"' || char === \"'\") {\n inAttrValue = true;\n attrQuoteChar = char;\n }\n else if (char === '=') {\n // Extract attribute name (look backwards for it)\n let attrStart = j - 1;\n while (attrStart >= 0 && /[\\w\\-\\.@\\?]/.test(str[attrStart])) {\n attrStart--;\n }\n currentAttrName = str.substring(attrStart + 1, j).trim();\n }\n }\n else {\n // Inside quoted attribute value\n if (char === attrQuoteChar) {\n inAttrValue = false;\n attrQuoteChar = '';\n }\n }\n }\n // Now determine what kind of marker to insert based on current state\n if (inAttrValue) {\n // We're inside a quoted attribute value - this is an attribute binding\n // For subsequent interpolations in same attribute, keep using same attr name\n attrNamesForParts.push(currentAttrName);\n htmlParts.push(marker);\n }\n else if (inTag) {\n // Inside tag but not in attr value - check for special cases\n // Check if this is start of attribute value (= at end of string)\n const trimmed = str.trimEnd();\n if (trimmed.endsWith('=')) {\n // Extract attribute name\n let attrStart = trimmed.length - 2;\n while (attrStart >= 0 && /[\\w\\-\\.@\\?\\/]/.test(trimmed[attrStart])) {\n attrStart--;\n }\n currentAttrName = trimmed.substring(attrStart + 1, trimmed.length - 1).trim();\n attrNamesForParts.push(currentAttrName);\n htmlParts.push(marker);\n }\n else {\n // Check if this is a meta element (<if> or <case>)\n const metaElementMatch = str.match(/<(if|case)\\s*$/);\n if (metaElementMatch) {\n currentAttrName = 'value';\n attrNamesForParts.push('value');\n htmlParts.push(`value=\"${marker}\"`);\n }\n else {\n // Element binding or error\n attrNamesForParts.push('');\n htmlParts.push(marker);\n }\n }\n }\n else {\n // Outside any tag - this is node content\n attrNamesForParts.push('');\n htmlParts.push(nodeMarker);\n }\n }\n }\n const html = htmlParts.join('');\n const template = document.createElement('template');\n template.innerHTML = html;\n const tmpl = new Template(result, template, attrNamesForParts);\n // Cache the template for reuse\n templateCache.set(strings, tmpl);\n return tmpl;\n}\n/**\n * Instance of a rendered template\n */\nclass TemplateInstance {\n constructor(result) {\n this.parts = [];\n this.fragment = null;\n this.conditionalParts = []; // if/case parts with their indices\n this.regularParts = []; // all other parts with their indices\n this.template = prepareTemplate(result);\n this.strings = result.strings;\n }\n /**\n * Check if this instance uses the same template strings\n * (template identity is based on the strings array reference)\n */\n isSameTemplate(strings) {\n return this.strings === strings;\n }\n renderFragment() {\n if (!this.fragment) {\n // First render - clone template and create parts\n this.fragment = this.template.element.content.cloneNode(true);\n // Build a map of nodes from template to cloned fragment\n const walker = document.createTreeWalker(this.template.element.content, NodeFilter.SHOW_ALL);\n const clonedWalker = document.createTreeWalker(this.fragment, NodeFilter.SHOW_ALL);\n const nodeMap = new Map();\n let templateNode = walker.currentNode;\n let clonedNode = clonedWalker.currentNode;\n while (templateNode && clonedNode) {\n nodeMap.set(templateNode, clonedNode);\n templateNode = walker.nextNode();\n clonedNode = clonedWalker.nextNode();\n }\n for (let i = 0; i < this.template.parts.length; i++) {\n const partDef = this.template.parts[i];\n let part;\n switch (partDef.type) {\n case 'node':\n const startNode = nodeMap.get(partDef.startNode);\n const endNode = nodeMap.get(partDef.endNode);\n part = new NodePart(startNode, endNode);\n break;\n case 'attribute':\n const attrElement = nodeMap.get(partDef.element);\n part = new AttributePart(attrElement, partDef.name, partDef.attrStrings);\n break;\n case 'property':\n const propElement = nodeMap.get(partDef.element);\n part = new PropertyPart(propElement, partDef.name);\n break;\n case 'boolean-attribute':\n const boolElement = nodeMap.get(partDef.element);\n part = new BooleanAttributePart(boolElement, partDef.name);\n break;\n case 'event':\n const eventElement = nodeMap.get(partDef.element);\n part = new EventPart(eventElement, partDef.name);\n break;\n case 'conditional-if':\n const conditionalIfElement = nodeMap.get(partDef.element);\n part = new ConditionalIfPart(conditionalIfElement);\n break;\n case 'conditional-case':\n const conditionalCaseElement = nodeMap.get(partDef.element);\n part = new ConditionalCasePart(conditionalCaseElement);\n break;\n default:\n throw new Error(`Unknown part type: ${partDef.type}`);\n }\n this.parts.push(part);\n // Separate conditional parts from regular parts for optimized update\n // Use partDef.index (the VALUE index) not i (the part array index)\n if (part instanceof ConditionalIfPart || part instanceof ConditionalCasePart) {\n this.conditionalParts.push({ part, index: partDef.index });\n }\n else {\n this.regularParts.push({ part, index: partDef.index });\n }\n }\n }\n return this.fragment;\n }\n render(values) {\n const fragment = this.renderFragment();\n // Commit values to parts\n this.update(values);\n return fragment;\n }\n update(values) {\n // Optimized: Process conditional parts first (if any), then regular parts\n // Using pre-separated arrays with cached indices avoids instanceof and indexOf calls\n // Process conditional parts first (they control visibility)\n for (const { part, index } of this.conditionalParts) {\n part.commit(values[index]);\n }\n for (const { part, index } of this.regularParts) {\n // AttributeParts with interpolation consume multiple values\n if (part instanceof AttributePart && part.strings !== undefined) {\n // Pass full values array and starting index for interpolation\n part.commit(values, index);\n // The part consumes (strings.length - 1) values\n // But since we're iterating by template part index, this is handled by the Template\n }\n else {\n part.commit(values[index]);\n }\n }\n }\n clear() {\n for (const part of this.parts) {\n part.clear();\n }\n }\n}\n/**\n * Base class for all parts\n */\nclass Part {\n}\n/**\n * NodePart handles text content and nested templates\n *\n * Lit-HTML style optimizations:\n * - Reuses TemplateInstance when same template strings are rendered\n * - Reuses text nodes when updating primitive → primitive\n * - Reuses child NodeParts when rendering arrays\n */\nclass NodePart extends Part {\n constructor(startNode, endNode) {\n super();\n this._committedValue = NOT_COMMITTED;\n this.startNode = startNode;\n this.endNode = endNode;\n }\n commit(value) {\n // Handle noChange sentinel\n if (value === noChange) {\n return;\n }\n // Handle nothing/null/undefined/empty - clear content\n if (value === nothing || value == null || value === '') {\n if (this._committedValue !== nothing) {\n this._clear();\n }\n this._committedValue = nothing;\n return;\n }\n // Handle primitives (string, number, boolean, bigint, symbol)\n if (isPrimitive(value)) {\n if (value !== this._committedValue) {\n this._commitText(value);\n }\n return;\n }\n // Handle nested templates\n if (isTemplateResult(value)) {\n this._commitTemplateResult(value);\n return;\n }\n // Handle unsafe HTML\n if (isUnsafeHTML(value)) {\n this._commitUnsafeHTML(value);\n return;\n }\n // Handle DOM nodes\n if (value.nodeType !== undefined) {\n this._commitNode(value);\n return;\n }\n // Handle iterables (arrays, etc.)\n if (isIterable(value)) {\n this._commitIterable(value);\n return;\n }\n // Fallback: convert to string\n this._commitText(value);\n }\n /**\n * Commit a primitive value as text\n * OPTIMIZATION: Reuses existing text node if previous value was also primitive\n */\n _commitText(value) {\n // Try to reuse existing text node\n const canReuse = this._committedValue !== NOT_COMMITTED &&\n this._committedValue !== nothing &&\n isPrimitive(this._committedValue) &&\n !Array.isArray(this._committedValue);\n if (canReuse) {\n const textNode = this.startNode.nextSibling;\n if (textNode && textNode.nodeType === Node.TEXT_NODE) {\n textNode.data = String(value);\n this._committedValue = value;\n return;\n }\n }\n this._clear();\n this._insertBefore(document.createTextNode(String(value)));\n this._committedValue = value;\n }\n /**\n * Commit a TemplateResult\n * OPTIMIZATION: Reuses TemplateInstance if same template strings\n */\n _commitTemplateResult(result) {\n // Check if we can reuse the existing TemplateInstance\n const committedInstance = this._committedValue;\n if (committedInstance instanceof TemplateInstance) {\n // Check if same template by comparing strings reference\n const cachedTemplate = templateCache.get(result.strings);\n if (cachedTemplate && committedInstance.template === cachedTemplate) {\n // SAME TEMPLATE - just update values (efficient path!)\n committedInstance.update(result.values);\n return;\n }\n }\n // Different template or first render - create new instance\n this._clear();\n const instance = new TemplateInstance(result);\n const fragment = instance.renderFragment();\n this._insertBefore(fragment);\n instance.update(result.values);\n this._committedValue = instance;\n }\n /**\n * Commit an iterable (array, Set, etc.)\n * OPTIMIZATION: Reuses existing NodeParts for items\n */\n _commitIterable(value) {\n // If previous value wasn't an array of parts, start fresh\n if (!Array.isArray(this._committedValue) ||\n !(this._committedValue[0] instanceof NodePart)) {\n this._clear();\n this._committedValue = [];\n }\n const itemParts = this._committedValue;\n let partIndex = 0;\n for (const item of value) {\n let itemPart;\n if (partIndex >= itemParts.length) {\n // Need new NodePart - create with markers\n const startMarker = document.createComment('');\n const endMarker = document.createComment('');\n this._insertBefore(startMarker);\n this._insertBefore(endMarker);\n itemPart = new NodePart(startMarker, endMarker);\n itemParts.push(itemPart);\n }\n else {\n // Reuse existing NodePart\n itemPart = itemParts[partIndex];\n }\n // Set value on this part (recursively handles templates, text, etc.)\n itemPart.commit(item);\n partIndex++;\n }\n // Cleanup excess parts from previous render\n if (partIndex < itemParts.length) {\n // Clear DOM for removed items\n for (let i = partIndex; i < itemParts.length; i++) {\n const part = itemParts[i];\n // Remove the part's content and markers\n part._clear();\n // Remove the markers themselves\n part.startNode.remove();\n part.endNode.remove();\n }\n // Truncate array\n itemParts.length = partIndex;\n }\n }\n /**\n * Commit a DOM node directly\n */\n _commitNode(node) {\n if (this._committedValue !== node) {\n this._clear();\n this._insertBefore(node);\n this._committedValue = node;\n }\n }\n /**\n * Commit unsafe HTML string\n */\n _commitUnsafeHTML(value) {\n // Always recreate for unsafe HTML (can't diff arbitrary HTML)\n this._clear();\n const temp = document.createElement('template');\n temp.innerHTML = value.html;\n this._insertBefore(temp.content);\n this._committedValue = value;\n }\n _insertBefore(node) {\n this.endNode.parentNode?.insertBefore(node, this.endNode);\n }\n _clear() {\n const parent = this.startNode.parentNode;\n if (!parent)\n return;\n let node = this.startNode.nextSibling;\n while (node && node !== this.endNode) {\n const next = node.nextSibling;\n parent.removeChild(node);\n node = next;\n }\n this._committedValue = nothing;\n }\n clear() {\n this._clear();\n }\n}\n/**\n * AttributePart handles regular attribute updates\n *\n * Supports multiple interpolations: class=\"a ${b} c ${d} e\"\n * Lit-HTML style: tracks each value separately for dirty checking\n */\nclass AttributePart extends Part {\n constructor(element, name, strings) {\n super();\n this._committedValue = NOT_COMMITTED;\n this.element = element;\n this.name = name;\n // Determine if this is interpolation or single-value binding\n if (strings && (strings.length > 2 || strings[0] !== '' || strings[1] !== '')) {\n // Interpolation case: class=\"foo ${x} bar ${y}\"\n // strings = [\"foo \", \" bar \", \"\"]\n this._committedValue = new Array(strings.length - 1).fill(NOT_COMMITTED);\n this.strings = strings;\n }\n else {\n // Single-value case: class=\"${x}\"\n this._committedValue = NOT_COMMITTED;\n }\n }\n /**\n * Commit value(s) to the attribute\n *\n * For single-value binding: commit(value)\n * For interpolation: commit(values, startIndex) where values is full template values array\n */\n commit(value, valueIndex = 0) {\n let change = false;\n let finalValue;\n // === SINGLE-VALUE BINDING ===\n if (this.strings === undefined) {\n if (value === noChange)\n return;\n change = !isPrimitive(value) ||\n (value !== this._committedValue && value !== noChange);\n if (change) {\n this._committedValue = value;\n finalValue = value;\n }\n else {\n return; // No change, skip DOM update\n }\n }\n // === INTERPOLATION BINDING ===\n else {\n const values = value;\n const committedValues = this._committedValue;\n finalValue = this.strings[0];\n for (let i = 0; i < this.strings.length - 1; i++) {\n let v = values[valueIndex + i];\n // Handle noChange sentinel\n if (v === noChange) {\n v = committedValues[i];\n }\n // Track if any value changed\n change = change || !isPrimitive(v) || v !== committedValues[i];\n // Handle nothing sentinel - removes entire attribute\n if (v === nothing) {\n finalValue = nothing;\n }\n else if (finalValue !== nothing) {\n finalValue = finalValue + (v ?? '') + this.strings[i + 1];\n }\n // Always record each value for future comparison\n committedValues[i] = v;\n }\n if (!change) {\n return; // No change, skip DOM update\n }\n }\n // Commit to DOM\n this._commitValue(finalValue);\n }\n _commitValue(value) {\n if (value === nothing || value === null || value === undefined) {\n this.element.removeAttribute(this.name);\n }\n else {\n this.element.setAttribute(this.name, String(value));\n }\n }\n clear() {\n this.element.removeAttribute(this.name);\n }\n}\n/**\n * PropertyPart handles property bindings (.property=${value})\n */\nclass PropertyPart extends Part {\n constructor(element, name) {\n super();\n this._committedValue = NOT_COMMITTED;\n this.element = element;\n this.name = name;\n }\n commit(value) {\n if (value === noChange)\n return;\n // Dirty check - skip if same value\n if (value === this._committedValue)\n return;\n this._committedValue = value;\n this.element[this.name] = value === nothing ? undefined : value;\n }\n clear() {\n this.element[this.name] = undefined;\n this._committedValue = NOT_COMMITTED;\n }\n}\n/**\n * BooleanAttributePart handles boolean attributes (?attribute=${value})\n */\nclass BooleanAttributePart extends Part {\n constructor(element, name) {\n super();\n this._committedValue = NOT_COMMITTED;\n this.element = element;\n this.name = name;\n }\n commit(value) {\n if (value === noChange)\n return;\n // Coerce to boolean\n const boolValue = !!value && value !== nothing;\n // Dirty check - skip if same boolean value\n if (boolValue === this._committedValue)\n return;\n this._committedValue = boolValue;\n if (boolValue) {\n this.element.setAttribute(this.name, '');\n }\n else {\n this.element.removeAttribute(this.name);\n }\n }\n clear() {\n this.element.removeAttribute(this.name);\n this._committedValue = NOT_COMMITTED;\n }\n}\n/**\n * EventPart handles event listener bindings with keyboard shortcut support\n */\nclass EventPart extends Part {\n constructor(element, eventName) {\n super();\n this.listener = null;\n this.value = undefined;\n this.keyFilter = null;\n this.host = null; // Cache host element\n this.element = element;\n // Parse keyboard shortcuts:\n // Supports both dot notation (@keydown.enter) and colon notation (@keydown:Enter) to match @on decorator\n // Only parse colons for keyboard events, not custom events\n const isKeyboardEvent = ['keydown', 'keyup', 'keypress'].includes(eventName.split('.')[0].split(':')[0]);\n const dotIndex = eventName.indexOf('.');\n const colonIndex = isKeyboardEvent ? eventName.indexOf(':') : -1;\n // Use whichever delimiter comes first (dot or colon)\n const delimiterIndex = dotIndex > 0 && colonIndex > 0\n ? Math.min(dotIndex, colonIndex)\n : Math.max(dotIndex, colonIndex);\n if (delimiterIndex > 0) {\n const baseEvent = eventName.substring(0, delimiterIndex);\n const keySpec = eventName.substring(delimiterIndex + 1);\n this.eventName = baseEvent;\n this.keyFilter = parseKeyboardFilter(keySpec);\n }\n else {\n this.eventName = eventName;\n }\n }\n commit(value) {\n // Handle noChange sentinel\n if (value === noChange)\n return;\n // Handle nothing sentinel - remove listener\n if (value === nothing) {\n value = null;\n }\n // Skip if same value (but null/undefined always triggers update for cleanup)\n if (value === this.value && value !== null && value !== undefined)\n return;\n // Remove old listener\n if (this.listener) {\n this.element.removeEventListener(this.eventName, this.listener);\n this.listener = null;\n }\n this.value = value;\n // Add new listener\n if (value === null || value === undefined) {\n return;\n }\n if (typeof value !== 'function')\n return;\n // Auto-bind to host element (the custom element with shadow root)\n if (!this.host) {\n const rootNode = this.element.getRootNode();\n this.host = rootNode.host || null;\n }\n const context = this.host || null;\n const keyFilter = this.keyFilter;\n this.listener = ((event) => {\n if (keyFilter && !matchesKeyboardFilter(event, keyFilter))\n return;\n value.call(context, event);\n });\n this.element.addEventListener(this.eventName, this.listener);\n }\n clear() {\n if (this.listener) {\n this.element.removeEventListener(this.eventName, this.listener);\n this.listener = null;\n }\n }\n}\n/**\n * Parse keyboard shortcut specification\n * Examples:\n * \"enter\" -> { key: \"Enter\" }\n * \"ctrl+s\" -> { key: \"s\", ctrl: true }\n * \"ctrl+shift+s\" -> { key: \"s\", ctrl: true, shift: true }\n * \"~enter\" -> { key: \"Enter\", anyModifiers: true }\n */\nfunction parseKeyboardFilter(spec) {\n // Handle ~ prefix for matching regardless of modifiers\n const anyModifiers = spec.startsWith('~');\n if (anyModifiers) {\n spec = spec.substring(1);\n }\n const parts = spec.split('+');\n const filter = {\n key: '',\n anyModifiers\n };\n for (const part of parts) {\n const lower = part.toLowerCase();\n if (lower === 'ctrl' || lower === 'control') {\n filter.ctrl = true;\n }\n else if (lower === 'alt') {\n filter.alt = true;\n }\n else if (lower === 'shift') {\n filter.shift = true;\n }\n else if (lower === 'meta' || lower === 'cmd' || lower === 'command') {\n filter.meta = true;\n }\n else {\n // This is the key itself - normalize common keys\n filter.key = normalizeKey(part);\n }\n }\n return filter;\n}\n/**\n * Normalize key names to match KeyboardEvent.key\n */\nfunction normalizeKey(key) {\n const keyMap = {\n 'esc': 'Escape',\n 'escape': 'Escape',\n 'enter': 'Enter',\n 'return': 'Enter',\n 'space': ' ',\n 'spacebar': ' ',\n 'up': 'ArrowUp',\n 'down': 'ArrowDown',\n 'left': 'ArrowLeft',\n 'right': 'ArrowRight',\n 'arrowup': 'ArrowUp',\n 'arrowdown': 'ArrowDown',\n 'arrowleft': 'ArrowLeft',\n 'arrowright': 'ArrowRight',\n 'delete': 'Delete',\n 'del': 'Delete',\n 'backspace': 'Backspace',\n 'tab': 'Tab',\n 'home': 'Home',\n 'end': 'End',\n 'pageup': 'PageUp',\n 'pagedown': 'PageDown'\n };\n const lower = key.toLowerCase();\n return keyMap[lower] || key;\n}\n/**\n * Check if keyboard event matches the filter\n */\nfunction matchesKeyboardFilter(event, filter) {\n // Check key match\n if (event.key !== filter.key) {\n return false;\n }\n // If anyModifiers is true, we don't care about modifiers\n if (filter.anyModifiers) {\n return true;\n }\n // Check modifiers - by default, exact match\n // If filter specifies ctrl: true, event must have ctrlKey\n // If filter doesn't specify ctrl, event must NOT have ctrlKey\n const ctrlMatch = filter.ctrl ? event.ctrlKey : !event.ctrlKey;\n const altMatch = filter.alt ? event.altKey : !event.altKey;\n const shiftMatch = filter.shift ? event.shiftKey : !event.shiftKey;\n const metaMatch = filter.meta ? event.metaKey : !event.metaKey;\n return ctrlMatch && altMatch && shiftMatch && metaMatch;\n}\n/**\n * ConditionalIfPart handles <if> conditional rendering\n * Removes/inserts DOM nodes based on condition\n */\n// Sentinel value to distinguish \"not yet set\" from undefined\nconst NOT_SET = Symbol('not-set');\nclass ConditionalIfPart extends Part {\n constructor(ifElement) {\n super();\n this.value = NOT_SET;\n this.childFragment = null;\n const parent = ifElement.parentNode;\n // Create comment boundary markers\n this.startNode = document.createComment('if');\n this.endNode = document.createComment('/if');\n // Insert markers where <if> is\n parent.insertBefore(this.startNode, ifElement);\n parent.insertBefore(this.endNode, ifElement.nextSibling);\n // Move <if>'s children between the markers\n while (ifElement.firstChild) {\n parent.insertBefore(ifElement.firstChild, this.endNode);\n }\n // Remove the <if> element from DOM\n parent.removeChild(ifElement);\n }\n commit(value) {\n const condition = Boolean(value);\n if (this.value === value)\n return;\n this.value = value;\n if (condition) {\n // Show: restore children from fragment\n if (this.childFragment && this.childFragment.hasChildNodes()) {\n this.startNode.parentNode.insertBefore(this.childFragment, this.endNode);\n }\n }\n else {\n // Hide: move children to fragment\n if (!this.childFragment) {\n this.childFragment = document.createDocumentFragment();\n }\n let node = this.startNode.nextSibling;\n while (node && node !== this.endNode) {\n const next = node.nextSibling;\n this.childFragment.appendChild(node);\n node = next;\n }\n }\n }\n clear() {\n if (!this.childFragment) {\n this.childFragment = document.createDocumentFragment();\n }\n let node = this.startNode.nextSibling;\n while (node && node !== this.endNode) {\n const next = node.nextSibling;\n this.childFragment.appendChild(node);\n node = next;\n }\n }\n}\n/**\n * ConditionalCasePart handles <case>/<when>/<default> conditional rendering\n * Removes/inserts matching branch based on value\n */\nclass ConditionalCasePart extends Part {\n constructor(caseElement) {\n super();\n this.value = NOT_SET;\n this.branches = new Map();\n this.defaultBranch = null;\n this.currentKey = null;\n const parent = caseElement.parentNode;\n // Create comment boundary markers\n this.startNode = document.createComment('case');\n this.endNode = document.createComment('/case');\n // Insert markers where <case> is\n parent.insertBefore(this.startNode, caseElement);\n parent.insertBefore(this.endNode, caseElement.nextSibling);\n // Extract branches from <when> and <default> children\n for (const child of Array.from(caseElement.children)) {\n const childTag = child.tagName.toLowerCase();\n if (childTag === 'when') {\n const whenValue = child.getAttribute('value') || '';\n const fragment = document.createDocumentFragment();\n while (child.firstChild) {\n fragment.appendChild(child.firstChild);\n }\n this.branches.set(whenValue, fragment);\n }\n else if (childTag === 'default') {\n this.defaultBranch = document.createDocumentFragment();\n while (child.firstChild) {\n this.defaultBranch.appendChild(child.firstChild);\n }\n }\n }\n // Remove the <case> element from DOM\n parent.removeChild(caseElement);\n }\n commit(value) {\n if (this.value === value)\n return;\n this.value = value;\n const valueStr = String(value);\n // Move current content back to its fragment\n this._collectCurrent();\n // Insert matching branch\n const hasBranch = this.branches.has(valueStr);\n const matchingFragment = hasBranch ? this.branches.get(valueStr) : this.defaultBranch;\n this.currentKey = hasBranch ? valueStr : (this.defaultBranch ? '__default__' : null);\n if (matchingFragment && matchingFragment.hasChildNodes()) {\n this.startNode.parentNode.insertBefore(matchingFragment, this.endNode);\n }\n }\n _collectCurrent() {\n if (this.currentKey === null)\n return;\n const fragment = this.currentKey === '__default__'\n ? this.defaultBranch\n : this.branches.get(this.currentKey);\n if (!fragment)\n return;\n let node = this.startNode.nextSibling;\n while (node && node !== this.endNode) {\n const next = node.nextSibling;\n fragment.appendChild(node);\n node = next;\n }\n }\n clear() {\n this._collectCurrent();\n this.currentKey = null;\n }\n}\n\n/**\n * @on decorator for listening to events\n * Use in elements or controllers to listen to DOM events or custom events\n */\nconst ON_HANDLERS = getSymbol('on-handlers');\n/**\n * @on decorator for listening to events\n *\n * Works in both elements and controllers with full event delegation support.\n *\n * @param eventName - Event name(s) to listen for\n * @param selector - Optional CSS selector for event delegation\n * @param options - Event listener options including debounce/throttle\n *\n * @example\n * ```typescript\n * // In elements\n * @element('my-button')\n * class MyButton extends HTMLElement {\n * @on('click', 'button')\n * handleClick(e: MouseEvent) {\n * console.log('Button clicked!', e);\n * }\n *\n * @on('input', 'input', { debounce: 300 })\n * handleInput(e: Event) {\n * console.log('Input changed:', (e.target as HTMLInputElement).value);\n * }\n * }\n *\n * // In controllers\n * @controller('my-controller')\n * class MyController {\n * element!: HTMLElement;\n *\n * @on('count-changed')\n * handleCountChanged(e: CustomEvent) {\n * console.log('Count changed to:', e.detail.count);\n * }\n *\n * @on('click', '.item', { throttle: 100 })\n * handleItemClick(e: MouseEvent) {\n * console.log('Item clicked');\n * }\n * }\n * ```\n */\nfunction on(eventName, selectorOrOptions, options) {\n // Parse arguments to support multiple call signatures\n let selector = null;\n let opts = {};\n if (typeof selectorOrOptions === 'string') {\n selector = selectorOrOptions;\n opts = options || {};\n }\n else if (selectorOrOptions && typeof selectorOrOptions === 'object') {\n opts = selectorOrOptions;\n }\n else if (selectorOrOptions === null && options) {\n opts = options;\n }\n return function (originalMethod, context) {\n const methodName = context.name;\n context.addInitializer(function () {\n const constructor = this.constructor;\n // Dedup by method reference — allows child to register same-named methods\n if (!constructor.__onMethods)\n constructor.__onMethods = new Set();\n if (constructor.__onMethods.has(originalMethod))\n return;\n constructor.__onMethods.add(originalMethod);\n if (!constructor[ON_HANDLERS]) {\n constructor[ON_HANDLERS] = [];\n }\n const eventNames = Array.isArray(eventName) ? eventName : [eventName];\n for (const event of eventNames) {\n constructor[ON_HANDLERS].push({\n eventName: event,\n selector,\n methodName,\n method: originalMethod,\n options: opts\n });\n }\n });\n return originalMethod;\n };\n}\n// Note: on.ts uses leading-edge-only throttle (no trailing call).\n// createThrottled from utils has leading+trailing, so we keep a local leading-only variant.\nfunction throttle$1(fn, delay) {\n let lastCall = 0;\n return function (...args) {\n const now = Date.now();\n if (now - lastCall >= delay) {\n lastCall = now;\n fn.apply(this, args);\n }\n };\n}\n/**\n * Events that don't bubble - these require capture phase for delegation\n */\nconst NON_BUBBLING_EVENTS = new Set([\n 'scroll',\n 'focus',\n 'blur',\n 'load',\n 'unload',\n 'error',\n 'resize',\n 'abort',\n 'mouseenter',\n 'mouseleave',\n 'pointerenter',\n 'pointerleave',\n]);\n/**\n * Setup event listeners for an element or controller instance\n * Called automatically during element connection or controller attachment\n */\nfunction setupEventHandlers(instance, targetElement) {\n const handlers = instance.constructor[ON_HANDLERS];\n if (!handlers || !Array.isArray(handlers) || handlers.length === 0) {\n return;\n }\n // Initialize cleanup object if needed\n if (!instance[CLEANUP]) {\n instance[CLEANUP] = { events: [], channels: [], observers: [] };\n }\n else if (!instance[CLEANUP].events) {\n instance[CLEANUP].events = [];\n }\n else if (instance[CLEANUP].events.length > 0) {\n // Events already set up - clean them up first to avoid duplicates\n cleanupEventHandlers(instance);\n }\n for (const handler of handlers) {\n // Get current method from instance (preserves decorator stacking)\n const currentMethod = instance[handler.methodName];\n let boundMethod = currentMethod ? currentMethod.bind(instance) : handler.method.bind(instance);\n const handlerOptions = handler.options || {};\n // Parse event name for key modifiers\n // Supports both dot notation (@keydown.enter) and colon notation (@keydown:Enter)\n // Only parse colons for keyboard events, not custom events\n const isKeyboardEvent = ['keydown', 'keyup', 'keypress'].includes(handler.eventName.split('.')[0].split(':')[0]);\n const dotIndex = handler.eventName.indexOf('.');\n const colonIndex = isKeyboardEvent ? handler.eventName.indexOf(':') : -1;\n const delimiterIndex = dotIndex > 0 && colonIndex > 0\n ? Math.min(dotIndex, colonIndex)\n : Math.max(dotIndex, colonIndex);\n const baseEventName = delimiterIndex > 0\n ? handler.eventName.substring(0, delimiterIndex)\n : handler.eventName;\n const keyModifier = delimiterIndex > 0\n ? handler.eventName.substring(delimiterIndex + 1)\n : null;\n // Apply debounce (takes precedence over throttle)\n if (handlerOptions.debounce && handlerOptions.debounce > 0) {\n boundMethod = createDebounced(boundMethod, handlerOptions.debounce);\n }\n else if (handlerOptions.throttle && handlerOptions.throttle > 0) {\n boundMethod = throttle$1(boundMethod, handlerOptions.throttle);\n }\n // Create event handler with key modifier support\n // Uses shared keyboard filter implementation from parts.ts\n let keyFilter = null;\n if (keyModifier && ['keydown', 'keyup', 'keypress'].includes(baseEventName)) {\n keyFilter = parseKeyboardFilter(keyModifier);\n }\n const createKeyModifierHandler = (method) => {\n if (!keyFilter) {\n return method;\n }\n return (event) => {\n const keyEvent = event;\n if (matchesKeyboardFilter(keyEvent, keyFilter)) {\n method(event);\n }\n };\n };\n // Apply key modifier wrapper\n const keyModifierMethod = createKeyModifierHandler(boundMethod);\n // Main event handler with error handling and event delegation\n if (handler.selector) {\n // Delegated event handling - use shadow root if available\n const eventRoot = targetElement.shadowRoot || targetElement;\n const delegatedHandler = (event) => {\n const target = event.target;\n const matchingElement = (target.matches && target.matches(handler.selector) && target) ||\n (target.closest && target.closest(handler.selector)) ||\n null;\n if (!matchingElement)\n return;\n if (handlerOptions.preventDefault)\n event.preventDefault();\n if (handlerOptions.stopPropagation) {\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n try {\n keyModifierMethod(event);\n }\n catch (error) {\n console.error(`Error in event handler ${handler.methodName}:`, error);\n }\n };\n // Auto-enable capture for non-bubbling events when using delegation\n const needsCapture = NON_BUBBLING_EVENTS.has(baseEventName);\n const useCapture = handlerOptions.capture !== undefined\n ? handlerOptions.capture\n : needsCapture;\n const listenerOptions = {\n capture: useCapture,\n once: handlerOptions.once || false,\n passive: handlerOptions.passive || false,\n };\n eventRoot.addEventListener(baseEventName, delegatedHandler, listenerOptions);\n instance[CLEANUP].events.push({\n target: eventRoot,\n eventName: baseEventName,\n handler: delegatedHandler,\n options: listenerOptions,\n });\n }\n else {\n // Direct event handling - on the element itself\n // If element has shadow root, listen on both shadow root AND host element\n // to catch events from inside shadow DOM (with correct target) and on host itself\n const shadowRoot = targetElement.shadowRoot;\n // Use Symbol.for() with method name to ensure symbols are shared across Snice instances\n // Method names are unique within a class, so this prevents double-firing of the same handler\n // while allowing multiple different handlers on the same event\n const handledSymbol = Symbol.for(`snice:event-handled:${handler.methodName}`);\n const wrappedMethod = (event) => {\n if (event[handledSymbol])\n return;\n event[handledSymbol] = true;\n if (handlerOptions.preventDefault)\n event.preventDefault();\n if (handlerOptions.stopPropagation)\n event.stopPropagation();\n try {\n keyModifierMethod(event);\n }\n catch (error) {\n console.error(`Error in event handler ${handler.methodName}:`, error);\n }\n };\n const listenerOptions = {\n capture: handlerOptions.capture || false,\n once: handlerOptions.once || false,\n passive: handlerOptions.passive || false,\n };\n if (shadowRoot) {\n // Listen on shadow root for events inside shadow DOM\n shadowRoot.addEventListener(baseEventName, wrappedMethod, listenerOptions);\n instance[CLEANUP].events.push({\n target: shadowRoot,\n eventName: baseEventName,\n handler: wrappedMethod,\n options: listenerOptions,\n });\n }\n // Also listen on host element (for clicks on host itself or when no shadow root)\n targetElement.addEventListener(baseEventName, wrappedMethod, listenerOptions);\n instance[CLEANUP].events.push({\n target: targetElement,\n eventName: baseEventName,\n handler: wrappedMethod,\n options: listenerOptions,\n });\n }\n }\n}\n/**\n * Cleanup event listeners for a controller instance\n * Called automatically by the controller system during detach\n */\nfunction cleanupEventHandlers(instance) {\n if (!instance[CLEANUP]?.events)\n return;\n for (const { target, eventName, handler, options } of instance[CLEANUP].events) {\n target.removeEventListener(eventName, handler, options);\n }\n instance[CLEANUP].events = [];\n}\n\n// Controller-scoped cleanup registry\nclass ControllerScope {\n constructor() {\n this.cleanupFns = new Map();\n this.pendingOperations = new Set();\n }\n register(key, cleanup) {\n this.cleanupFns.set(key, cleanup);\n }\n unregister(key) {\n this.cleanupFns.delete(key);\n }\n async cleanup() {\n // Wait for all pending operations\n await Promise.all(this.pendingOperations);\n // Run all cleanup functions\n for (const cleanup of this.cleanupFns.values()) {\n try {\n await cleanup();\n }\n catch (error) {\n console.error('Error during cleanup:', error);\n }\n }\n this.cleanupFns.clear();\n }\n async runOperation(operation) {\n const promise = operation();\n const voidPromise = promise.then(() => { }, () => { });\n this.pendingOperations.add(voidPromise);\n try {\n const result = await promise;\n this.pendingOperations.delete(voidPromise);\n return result;\n }\n catch (error) {\n this.pendingOperations.delete(voidPromise);\n throw error;\n }\n }\n}\n/**\n * Decorator to register a controller class with a name\n * @param name The name to register the controller under\n */\nfunction controller(name) {\n return function (constructor, _context) {\n // Access globalThis.snice directly to ensure consistency\n const registry = globalThis.snice?.controllerRegistry;\n if (!registry) {\n throw new Error('Snice global registry not initialized');\n }\n registry.set(name, constructor);\n // Mark as controller class for channel decorator detection\n constructor.prototype[IS_CONTROLLER_CLASS] = true;\n return constructor;\n };\n}\n/**\n * Attaches a controller to an element\n * @param element The element to attach the controller to\n * @param controllerName The name of the controller to attach\n */\nasync function attachController(element, controllerName) {\n const existingController = element[CONTROLLER_KEY];\n const existingName = element[CONTROLLER_NAME_KEY];\n // For native elements, check if this is actually the desired controller\n const nativeController = element[NATIVE_CONTROLLER];\n if (nativeController !== undefined && nativeController !== controllerName) {\n // This attachment is outdated, skip it\n return;\n }\n if (existingName === controllerName && existingController) {\n // Already attached and controller exists\n return;\n }\n // If there's an existing controller, detach it first\n if (existingController) {\n await detachController(element);\n }\n // Access globalThis.snice directly to ensure consistency\n const registry = globalThis.snice?.controllerRegistry;\n if (!registry) {\n throw new Error('Snice global registry not initialized');\n }\n const ControllerClass = registry.get(controllerName);\n if (!ControllerClass) {\n // Debug: log what's actually in the registry\n console.error(`Controller \"${controllerName}\" not found. Available:`, Array.from(registry.keys()));\n throw new Error(`Controller \"${controllerName}\" not found in registry`);\n }\n // Create controller instance with unique ID and scope\n const controllerInstance = new ControllerClass();\n snice.controllerIdCounter += 1;\n const controllerId = snice.controllerIdCounter;\n const scope = new ControllerScope();\n // Mark this as a controller instance\n controllerInstance[IS_CONTROLLER_INSTANCE] = true;\n controllerInstance[CONTROLLER_ID] = controllerId;\n controllerInstance.element = element;\n // Pass router context from element to controller if it exists\n const routerContext = element[ROUTER_CONTEXT];\n if (routerContext !== undefined) {\n controllerInstance[ROUTER_CONTEXT] = routerContext;\n }\n // Store references\n element[CONTROLLER_KEY] = controllerInstance;\n element[CONTROLLER_NAME_KEY] = controllerName;\n element[CONTROLLER_OPERATIONS] = scope;\n // Wait for element to be ready (required)\n await element.ready;\n // Run attach in the controller's scope\n await scope.runOperation(async () => {\n await controllerInstance.attach(element);\n });\n // Setup @observe observers for controller\n setupObservers(controllerInstance, element);\n // Setup @channel handlers for controller\n setupResponseHandlers(controllerInstance, element);\n // Setup @on event handlers for controller\n setupEventHandlers(controllerInstance, element);\n element.dispatchEvent(new CustomEvent('controller-attached', {\n detail: { name: controllerName, controller: controllerInstance }\n }));\n}\n/**\n * Detaches a controller from an element\n * @param element The element to detach the controller from\n */\nasync function detachController(element) {\n const controllerInstance = element[CONTROLLER_KEY];\n const controllerName = element[CONTROLLER_NAME_KEY];\n const scope = element[CONTROLLER_OPERATIONS];\n if (!controllerInstance) {\n return;\n }\n // Run detach in the controller's scope\n if (scope) {\n await scope.runOperation(async () => {\n await controllerInstance.detach(element);\n });\n }\n else {\n await controllerInstance.detach(element);\n }\n controllerInstance.element = null;\n // Cleanup @observe observers for controller\n cleanupObservers(controllerInstance);\n // Cleanup @channel handlers for controller\n cleanupResponseHandlers(controllerInstance);\n // Cleanup @on event handlers for controller\n cleanupEventHandlers(controllerInstance);\n // Cleanup the controller scope\n if (scope) {\n await scope.cleanup();\n }\n // Clean up router context reference\n delete controllerInstance[ROUTER_CONTEXT];\n delete element[CONTROLLER_KEY];\n delete element[CONTROLLER_NAME_KEY];\n delete element[CONTROLLER_OPERATIONS];\n element.dispatchEvent(new CustomEvent('controller-detached', {\n detail: { name: controllerName, controller: controllerInstance }\n }));\n}\n/**\n * Enable controller support for native HTML elements\n * This sets up a MutationObserver to watch for controller attributes\n * on non-custom elements (elements without hyphens in their tag names)\n */\nfunction useNativeElementControllers() {\n // Return if already initialized\n if (globalThis.sniceNativeControllersInitialized) {\n return;\n }\n globalThis.sniceNativeControllersInitialized = true;\n // Process elements that already have controller attribute\n function processElement(element) {\n if (!(element instanceof HTMLElement))\n return;\n if (element.tagName.includes('-'))\n return;\n if (element[IS_ELEMENT_CLASS])\n return;\n const controllerName = element.getAttribute('controller');\n const currentControllerName = element[NATIVE_CONTROLLER];\n // No change\n if (controllerName === currentControllerName)\n return;\n // Controller removed\n if (!controllerName) {\n delete element[NATIVE_CONTROLLER];\n delete element[CONTROLLER_NAME_KEY];\n detachController(element).catch(error => {\n console.error(`Failed to detach controller from native element:`, error);\n });\n return;\n }\n // Controller added or changed\n element[NATIVE_CONTROLLER] = controllerName;\n if (!element.ready) {\n element.ready = Promise.resolve();\n }\n if (currentControllerName) {\n detachController(element).catch(error => {\n console.error(`Failed to detach old controller from native element:`, error);\n });\n }\n attachController(element, controllerName).catch(error => {\n console.error(`Failed to attach controller \"${controllerName}\" to native element:`, error);\n });\n }\n // Set up MutationObserver to watch for controller attributes\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'controller') {\n processElement(mutation.target);\n }\n else if (mutation.type === 'childList') {\n // Process added nodes\n mutation.addedNodes.forEach(node => {\n if (node instanceof HTMLElement) {\n // Process the node itself\n processElement(node);\n // Process all descendants with controller attribute\n node.querySelectorAll('[controller]:not([class*=\"-\"])').forEach(processElement);\n }\n });\n }\n }\n });\n function startObserving() {\n document.querySelectorAll('[controller]:not([class*=\"-\"])').forEach(processElement);\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: ['controller'],\n childList: true,\n subtree: true\n });\n }\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', startObserving);\n }\n else {\n startObserving();\n }\n // Store observer reference for cleanup if needed\n globalThis.sniceNativeControllerObserver = observer;\n}\n\n/**\n * @context decorator for receiving router context updates\n */\nconst CONTEXT_HANDLERS = getSymbol('context-handlers');\n/**\n * @context decorator for receiving router context updates\n *\n * @example\n * ```typescript\n * @element('my-layout')\n * class MyLayout extends HTMLElement {\n * @context\n * handleContext(ctx: Context) {\n * this.renderNav(ctx.placards, ctx.currentRoute);\n * }\n *\n * @context({ debounce: 300 })\n * handleContextDebounced(ctx: Context) {\n * // Called after 300ms of no updates\n * }\n * }\n * ```\n */\nfunction context$1(options = {}) {\n return function (originalMethod, context) {\n const methodName = context.name;\n context.addInitializer(function () {\n const constructor = this.constructor;\n if (!constructor.__contextMethods)\n constructor.__contextMethods = new Set();\n if (constructor.__contextMethods.has(originalMethod))\n return;\n constructor.__contextMethods.add(originalMethod);\n if (!constructor[CONTEXT_HANDLERS]) {\n constructor[CONTEXT_HANDLERS] = [];\n }\n constructor[CONTEXT_HANDLERS].push({\n methodName,\n method: originalMethod,\n options,\n });\n });\n return originalMethod;\n };\n}\n/**\n * Setup context handler for an element instance\n * Called automatically during element connection\n */\nfunction setupContextHandler(element) {\n const handlers = element.constructor[CONTEXT_HANDLERS];\n if (!handlers || !Array.isArray(handlers) || handlers.length === 0) {\n return;\n }\n // Get the Context instance from the router\n const ctx = element[CONTEXT_HANDLER];\n if (!ctx) {\n return;\n }\n // Store the Context instance for cleanup\n element[NAVIGATION_CONTEXT_INSTANCE] = ctx;\n // Register each handler with the Context\n for (const handler of handlers) {\n const { methodName, method, options } = handler;\n const wrappedMethodName = `__wrapped_${methodName}`;\n // Create wrapped method with timing controls\n element[wrappedMethodName] = function (context) {\n // Skip if already called once\n if (options.once && element[CONTEXT_CALLED]) {\n return;\n }\n const callMethod = () => {\n method.call(element, context);\n // Handle once option\n if (options.once) {\n element[CONTEXT_CALLED] = true;\n // Unregister after first call\n const ctx = element[NAVIGATION_CONTEXT_INSTANCE];\n if (ctx && typeof ctx[CONTEXT_UNREGISTER] === 'function') {\n ctx[CONTEXT_UNREGISTER](element);\n }\n }\n };\n if (options.debounce) {\n clearTimeout(element[CONTEXT_TIMER]);\n element[CONTEXT_TIMER] = setTimeout(callMethod, options.debounce);\n return;\n }\n if (options.throttle) {\n const now = Date.now();\n const lastCall = element[CONTEXT_TIMER] || 0;\n if (now - lastCall >= options.throttle) {\n element[CONTEXT_TIMER] = now;\n callMethod();\n }\n return;\n }\n callMethod();\n };\n // Register with the Context using the wrapped method name\n if (typeof ctx[CONTEXT_REGISTER] === 'function') {\n ctx[CONTEXT_REGISTER](element, wrappedMethodName);\n }\n }\n}\n/**\n * Cleanup context handler for an element instance\n * Called automatically during element disconnection\n */\nfunction cleanupContextHandler(element) {\n const handlers = element.constructor[CONTEXT_HANDLERS];\n if (!handlers || !Array.isArray(handlers) || handlers.length === 0) {\n return;\n }\n // Clear any pending debounce timer\n for (const handler of handlers) {\n if (handler.options.debounce && element[CONTEXT_TIMER]) {\n clearTimeout(element[CONTEXT_TIMER]);\n delete element[CONTEXT_TIMER];\n }\n // Clean up wrapped method\n const wrappedMethodName = `__wrapped_${handler.methodName}`;\n delete element[wrappedMethodName];\n }\n // Unregister from Context if available\n const ctx = element[NAVIGATION_CONTEXT_INSTANCE];\n if (ctx && typeof ctx[CONTEXT_UNREGISTER] === 'function') {\n ctx[CONTEXT_UNREGISTER](element);\n }\n delete element[NAVIGATION_CONTEXT_INSTANCE];\n delete element[CONTEXT_CALLED];\n}\n\n/**\n * @render and @styles decorators for Snice v3.0.0\n * Provides automatic differential rendering on property changes\n */\n/**\n * Global render scheduler for microtask batching\n * Batches multiple property changes into a single render\n */\nclass RenderScheduler {\n constructor() {\n this.pending = new Set();\n this.scheduled = false;\n }\n /**\n * Schedule an element for rendering\n * Batches renders in a microtask unless sync option is enabled\n */\n schedule(element, options) {\n // Sync rendering - execute immediately\n if (options.sync) {\n performRender(element, options);\n return;\n }\n // Async rendering - batch in microtask\n this.pending.add(element);\n if (!this.scheduled) {\n this.scheduled = true;\n queueMicrotask(() => this.flush());\n }\n }\n /**\n * Flush all pending renders\n */\n flush() {\n const elements = Array.from(this.pending);\n this.pending.clear();\n this.scheduled = false;\n for (const element of elements) {\n const options = element[RENDER_OPTIONS] || {};\n performRender(element, options);\n }\n }\n}\nconst renderScheduler = new RenderScheduler();\nfunction flushRenderCallbacks(element) {\n const callbacks = element[RENDER_CALLBACKS];\n if (!callbacks || callbacks.length === 0)\n return;\n const cbs = [...callbacks];\n element[RENDER_CALLBACKS] = [];\n cbs.forEach(cb => cb());\n}\n/**\n * Perform the actual render of an element\n */\nfunction performRender(element, options, precomputedResult) {\n const renderMethod = element[RENDER_METHOD];\n if (!renderMethod)\n return;\n // If once is true and we've already rendered, skip\n if (options.once && element[RENDER_INSTANCE]) {\n return;\n }\n try {\n const result = precomputedResult !== undefined ? precomputedResult : renderMethod.call(element);\n if (!element.shadowRoot)\n element.attachShadow({ mode: 'open' });\n // Non-differential rendering (string)\n if (options.differential === false) {\n if (typeof result !== 'string') {\n console.warn('Render method with differential: false must return a string');\n return;\n }\n element.shadowRoot.innerHTML = result;\n flushRenderCallbacks(element);\n return;\n }\n // Differential rendering (template)\n if (!isTemplateResult(result)) {\n console.warn('Render method must return html`` template result');\n return;\n }\n let instance = element[RENDER_INSTANCE];\n if (instance && instance.isSameTemplate(result.strings)) {\n instance.update(result.values);\n flushRenderCallbacks(element);\n return;\n }\n // Different template or first render\n if (instance)\n element.shadowRoot.innerHTML = '';\n instance = new TemplateInstance(result);\n element[RENDER_INSTANCE] = instance;\n element.shadowRoot.appendChild(instance.renderFragment());\n instance.update(result.values);\n flushRenderCallbacks(element);\n }\n catch (error) {\n console.error('Error rendering element:', error);\n }\n}\n/**\n * Request a render for an element\n * Respects debounce/throttle/once/sync options\n * @param immediate - Force immediate render (used for initial render)\n */\nfunction requestRender(element, immediate = false) {\n const options = element[RENDER_OPTIONS] || {};\n // Handle once option\n if (options.once && element[RENDER_INSTANCE]) {\n return;\n }\n // Force immediate render (for initial render)\n if (immediate) {\n performRender(element, options);\n return;\n }\n // Handle debounce\n if (options.debounce !== undefined && options.debounce > 0) {\n if (!element[RENDER_TIMERS]) {\n element[RENDER_TIMERS] = {};\n }\n clearTimeout(element[RENDER_TIMERS].debounce);\n element[RENDER_TIMERS].debounce = setTimeout(() => {\n renderScheduler.schedule(element, options);\n }, options.debounce);\n return;\n }\n // Handle throttle\n if (options.throttle !== undefined && options.throttle > 0) {\n if (!element[RENDER_TIMERS]) {\n element[RENDER_TIMERS] = { lastThrottle: 0 };\n }\n const timers = element[RENDER_TIMERS];\n const now = Date.now();\n if (timers.lastThrottle === 0 || now - timers.lastThrottle >= options.throttle) {\n timers.lastThrottle = now;\n renderScheduler.schedule(element, options);\n return;\n }\n if (!timers.throttleTimer) {\n const remaining = options.throttle - (now - timers.lastThrottle);\n timers.throttleTimer = setTimeout(() => {\n timers.throttleTimer = null;\n timers.lastThrottle = Date.now();\n renderScheduler.schedule(element, options);\n }, remaining);\n }\n return;\n }\n // Normal rendering (with microtask batching unless sync)\n renderScheduler.schedule(element, options);\n}\n/**\n * @render decorator for component rendering\n *\n * Marks a method as the render method for the component.\n * The method should return html`...` template.\n * Automatically re-renders when properties change (unless once: true).\n *\n * @example\n * ```typescript\n * @render()\n * renderContent() {\n * return html`<div>${this.count}</div>`;\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Debounced rendering\n * @render({ debounce: 100 })\n * renderContent() {\n * return html`<div>${this.searchTerm}</div>`;\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Render only once (manual re-renders only)\n * @render({ once: true })\n * renderContent() {\n * return html`<div>Static content</div>`;\n * }\n * ```\n */\nfunction render(options = {}) {\n return function (originalMethod, context) {\n context.name;\n context.addInitializer(function () {\n // Store the render method and options\n this[RENDER_METHOD] = originalMethod;\n this[RENDER_OPTIONS] = options;\n });\n // Return wrapped method that triggers re-render when called manually\n return function (...args) {\n // Call original method to get the template\n const result = originalMethod.apply(this, args);\n // Always render when method is called manually (even if once: true)\n // Force immediate render to bypass all options, pass precomputed result to avoid calling method twice\n performRender(this, {}, result);\n return result;\n };\n };\n}\n/**\n * @styles decorator for component styles\n *\n * Marks a method as the styles method for the component.\n * The method should return css`...` template.\n * Styles are applied once when the component is connected.\n *\n * @example\n * ```typescript\n * @styles()\n * styles() {\n * return css`:host { display: block; }`;\n * }\n * ```\n */\nfunction styles() {\n return function (originalMethod, context) {\n context.addInitializer(function () {\n // Collect parent styles methods before overwriting with child's\n if (this[STYLES_METHOD] && !this[PARENT_STYLES_METHODS]) {\n this[PARENT_STYLES_METHODS] = [this[STYLES_METHOD]];\n }\n else if (this[STYLES_METHOD] && this[PARENT_STYLES_METHODS]) {\n this[PARENT_STYLES_METHODS].push(this[STYLES_METHOD]);\n }\n this[STYLES_METHOD] = originalMethod;\n });\n return originalMethod;\n };\n}\n/**\n * Apply styles to an element\n * Called during element initialization\n */\nfunction applyStyles(element) {\n const stylesMethod = element[STYLES_METHOD];\n if (!stylesMethod)\n return;\n // Only apply once\n if (element[STYLES_APPLIED])\n return;\n element[STYLES_APPLIED] = true;\n try {\n // Collect all CSS results: parent styles first, then child styles\n const allResults = [];\n const parentMethods = element[PARENT_STYLES_METHODS];\n if (parentMethods) {\n for (const method of parentMethods) {\n const r = method.call(element);\n if (isCSSResult(r))\n allResults.push(r);\n }\n }\n const result = stylesMethod.call(element);\n if (!isCSSResult(result)) {\n console.warn('Styles method must return css`` template result');\n return;\n }\n allResults.push(result);\n // Ensure shadow root exists\n if (!element.shadowRoot) {\n element.attachShadow({ mode: 'open' });\n }\n if (!element.shadowRoot)\n return;\n // Prefer constructable stylesheets\n if (allResults.every(r => !!r.styleSheet) && 'adoptedStyleSheets' in element.shadowRoot) {\n element.shadowRoot.adoptedStyleSheets = allResults.map(r => r.styleSheet);\n return;\n }\n // Fallback to <style> tag — concatenate all CSS\n const style = document.createElement('style');\n style.textContent = allResults.map(r => r.cssText).join('\\n');\n element.shadowRoot.appendChild(style);\n }\n catch (error) {\n console.error('Error applying styles:', error);\n }\n}\n\n/**\n * Applies core element functionality to a constructor\n * This is shared between @element and @page decorators\n */\nfunction applyElementFunctionality(constructor) {\n // Mark as element class for channel decorator detection\n constructor.prototype[IS_ELEMENT_CLASS] = true;\n // Add controller property to all elements\n const originalConnectedCallback = constructor.prototype.connectedCallback;\n const originalDisconnectedCallback = constructor.prototype.disconnectedCallback;\n const originalAttributeChangedCallback = constructor.prototype.attributeChangedCallback;\n // Add 'controller' and all reflected properties to observed attributes\n const observedAttributes = constructor.observedAttributes || [];\n if (!observedAttributes.includes('controller')) {\n observedAttributes.push('controller');\n }\n // Add all properties to observed attributes (skip attribute: false)\n const properties = constructor[PROPERTIES];\n if (properties) {\n for (const [propName, propOptions] of properties) {\n if (propOptions.attribute === false)\n continue;\n const attributeName = getAttrName(propOptions, propName);\n if (!observedAttributes.includes(attributeName)) {\n observedAttributes.push(attributeName);\n }\n }\n }\n Object.defineProperty(constructor, 'observedAttributes', {\n get() { return observedAttributes; },\n configurable: true\n });\n // Add ready property - always returns a promise\n Object.defineProperty(constructor.prototype, 'ready', {\n get() {\n if (!this[READY_PROMISE]) {\n // Create a pending promise if not yet initialized\n this[READY_PROMISE] = new Promise((resolve) => {\n this[READY_RESOLVE] = resolve;\n });\n }\n return this[READY_PROMISE];\n },\n enumerable: true,\n configurable: true\n });\n // Note: rendered promise is stored via symbols RENDERED_PROMISE and RENDERED_RESOLVE\n // It's not exposed as a public property - only accessible via test utilities\n // This prevents accidental misuse in production code\n // Add controller property\n Object.defineProperty(constructor.prototype, 'controller', {\n get() {\n return this[CONTROLLER];\n },\n set(value) {\n const oldValue = this[CONTROLLER];\n this[CONTROLLER] = value;\n if (value === oldValue)\n return;\n if (value) {\n attachController(this, value).catch(error => {\n console.error(`Failed to attach controller \"${value}\":`, error);\n });\n return;\n }\n if (oldValue) {\n detachController(this).catch(error => {\n console.error(`Failed to detach controller:`, error);\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n constructor.prototype.connectedCallback = async function () {\n // If ready promise was already created (controller attached before connected), use existing resolve\n // Otherwise create the ready promise now\n if (!this[READY_PROMISE]) {\n this[READY_PROMISE] = new Promise((resolve) => {\n this[READY_RESOLVE] = resolve;\n });\n }\n // Only run initialization logic once, but re-establish handlers on reconnection\n if (this[INITIALIZED]) {\n // Re-establish handlers that get cleaned up on disconnect\n setupEventHandlers(this, this);\n setupResponseHandlers(this, this);\n setupContextHandler(this);\n // Re-establish observers that get cleaned up on disconnect\n try {\n setupObservers(this, this);\n }\n catch (error) {\n console.error(`Error setting up observers for ${this.tagName} on reconnection:`, error);\n }\n // Call user's connectedCallback\n if (originalConnectedCallback) {\n originalConnectedCallback.call(this);\n }\n return;\n }\n // Mark that properties are being initialized from attributes\n // This allows property setters to work during initialization\n this[PROPERTIES_INITIALIZED] = true;\n // Initialize properties from attributes before rendering\n const properties = constructor[PROPERTIES];\n if (properties) {\n for (const [propName, propOptions] of properties) {\n if (propOptions.attribute === false)\n continue;\n const attributeName = getAttrName(propOptions, propName);\n if (!this.hasAttribute(attributeName))\n continue;\n const attrValue = this.getAttribute(attributeName);\n ensureSet(this, EXPLICITLY_SET_PROPERTIES).add(propName);\n if (propOptions.type === Boolean && attrValue === '') {\n this.setAttribute(attributeName, 'true');\n }\n this[propName] = parseAttributeValue(attrValue, propOptions);\n }\n }\n // Clear pre-init values for properties that have HTML attributes\n if (this[PRE_INIT_PROPERTY_VALUES]) {\n for (const [propName, propValue] of Array.from(this[PRE_INIT_PROPERTY_VALUES].entries())) {\n const propOptions = properties?.get(propName);\n const attributeName = getAttrName(propOptions || {}, propName);\n this[PRE_INIT_PROPERTY_VALUES].delete(propName);\n if (!this.hasAttribute(attributeName)) {\n this[propName] = propValue;\n }\n }\n delete this[PRE_INIT_PROPERTY_VALUES];\n }\n applyStyles(this);\n setupEventHandlers(this, this);\n setupResponseHandlers(this, this);\n setupContextHandler(this);\n this[INITIALIZED] = true;\n if (originalConnectedCallback) {\n originalConnectedCallback.call(this);\n }\n // v4.16.1: Render, run @ready handlers, THEN resolve .ready promise\n // This ensures `await el.ready` waits for both initial render AND all async @ready() methods\n //\n // We await a microtask boundary (to defer render for parent property bindings),\n // then run render + @ready handlers sequentially, then resolve .ready.\n const readyHandlers = constructor[READY_HANDLERS];\n // Await one microtask to defer initial render (allows parent property bindings)\n await new Promise(r => queueMicrotask(r));\n if (this[RENDER_METHOD]) {\n requestRender(this, true);\n }\n // Setup observers after render so shadow DOM content exists\n try {\n setupObservers(this, this);\n }\n catch (error) {\n console.error(`Error setting up observers for ${this.tagName}:`, error);\n }\n // Run @ready handlers serially, awaiting each\n if (readyHandlers) {\n for (const handler of readyHandlers) {\n try {\n await handler.method.call(this);\n }\n catch (error) {\n console.error(`Error in @ready handler ${handler.methodName}:`, error);\n }\n }\n }\n // NOW resolve — render done AND all @ready handlers complete\n if (this[READY_RESOLVE]) {\n this[READY_RESOLVE]();\n this[READY_RESOLVE] = null;\n }\n };\n constructor.prototype.disconnectedCallback = async function () {\n // Call @dispose handlers\n const disposeHandlers = constructor[DISPOSE_HANDLERS];\n if (disposeHandlers) {\n for (const handler of disposeHandlers) {\n try {\n await handler.method.call(this);\n }\n catch (error) {\n console.error(`Error in @dispose handler ${handler.methodName}:`, error);\n }\n }\n }\n // Call original user-defined disconnectedCallback\n if (originalDisconnectedCallback) {\n originalDisconnectedCallback.call(this);\n }\n if (this[CONTROLLER]) {\n detachController(this).catch(error => {\n console.error(`Failed to detach controller:`, error);\n });\n }\n // Cleanup @on event handlers (v2.5.4 compatibility restored!)\n cleanupEventHandlers(this);\n // Cleanup @respond handlers\n cleanupResponseHandlers(this);\n // Cleanup @context handler\n cleanupContextHandler(this);\n // Cleanup @observe observers\n cleanupObservers(this);\n };\n constructor.prototype.attributeChangedCallback = function (name, oldValue, newValue) {\n originalAttributeChangedCallback?.call(this, name, oldValue, newValue);\n if (name === 'controller') {\n this.controller = newValue;\n return;\n }\n const properties = constructor[PROPERTIES];\n if (!properties)\n return;\n for (const [propName, propOptions] of properties) {\n const attributeName = getAttrName(propOptions, propName);\n if (attributeName.toLowerCase() !== name.toLowerCase())\n continue;\n const currentValue = this[PROPERTY_VALUES]?.[propName];\n const parsedValue = parseAttributeValue(newValue, propOptions, currentValue, undefined);\n if (currentValue === parsedValue)\n break;\n ensureSet(this, EXPLICITLY_SET_PROPERTIES).add(propName);\n ensureObj(this, PROPERTY_VALUES)[propName] = parsedValue;\n if (!this[SETTING_FROM_PROPERTY]?.has(name.toLowerCase())) {\n invokeWatchers(this, constructor, propName, currentValue, parsedValue);\n if (this[RENDER_METHOD] && this[INITIALIZED]) {\n requestRender(this);\n }\n }\n break;\n }\n };\n // Add connectedMoveCallback for handling DOM moves\n constructor.prototype.connectedMoveCallback = async function () {\n // Call @moved handlers\n const movedHandlers = constructor[MOVED_HANDLERS];\n if (movedHandlers) {\n for (const handler of movedHandlers) {\n try {\n await handler.method.call(this);\n }\n catch (error) {\n console.error(`Error in @moved handler ${handler.methodName}:`, error);\n }\n }\n }\n };\n // Add adoptedCallback for handling document adoption\n constructor.prototype.adoptedCallback = async function () {\n // Call @adopted handlers\n const adoptedHandlers = constructor[ADOPTED_HANDLERS];\n if (adoptedHandlers) {\n for (const handler of adoptedHandlers) {\n try {\n await handler.method.call(this);\n }\n catch (error) {\n console.error(`Error in @adopted handler ${handler.methodName}:`, error);\n }\n }\n }\n };\n}\n/**\n * Walk the prototype chain and merge parent element metadata into the child.\n * Called once at class definition time — zero per-instance cost.\n * Skips plain HTMLElement (no metadata to merge).\n *\n * Only merges PROPERTIES (stored via context.metadata at decoration time)\n * and formAssociated. Other handler registrations (@watch, @on, @ready, etc.)\n * inherit automatically via TC39 addInitializer — parent initializers run\n * during child instance construction.\n */\nfunction mergeParentMetadata(constructor) {\n let parent = Object.getPrototypeOf(constructor);\n // Collect ancestors bottom-up, then merge top-down so the deepest parent goes first\n const ancestors = [];\n while (parent && parent !== HTMLElement && parent !== Function.prototype) {\n ancestors.push(parent);\n parent = Object.getPrototypeOf(parent);\n }\n ancestors.reverse();\n for (const ancestor of ancestors) {\n // Properties (Map) — parent first, child overrides\n if (ancestor[PROPERTIES]) {\n if (!constructor[PROPERTIES])\n constructor[PROPERTIES] = new Map();\n for (const [key, value] of ancestor[PROPERTIES]) {\n if (!constructor[PROPERTIES].has(key)) {\n constructor[PROPERTIES].set(key, value);\n }\n }\n }\n // formAssociated — inherit if parent is form-associated\n if (ancestor.formAssociated && !constructor.formAssociated) {\n constructor.formAssociated = true;\n }\n }\n}\nfunction defineElement(tagName, constructor, context, options) {\n // Merge metadata from parent @element classes (inheritance support)\n mergeParentMetadata(constructor);\n if (context.metadata && context.metadata[PROPERTIES]) {\n if (!constructor[PROPERTIES])\n constructor[PROPERTIES] = new Map();\n for (const [key, value] of context.metadata[PROPERTIES]) {\n constructor[PROPERTIES].set(key, value);\n }\n }\n if (options?.formAssociated)\n constructor.formAssociated = true;\n applyElementFunctionality(constructor);\n if (customElements.get(tagName)) {\n if (globalThis.SNICE_DEBUG)\n console.warn(`[snice] \"${tagName}\" is already registered. Skipping.`);\n return constructor;\n }\n customElements.define(tagName, constructor);\n return constructor;\n}\nfunction element(tagName, options) {\n return function (constructor, context) {\n return defineElement(tagName, constructor, context, options);\n };\n}\nfunction layout(tagName) {\n return function (constructor, context) {\n return defineElement(tagName, constructor, context);\n };\n}\nfunction property(options) {\n return function (_value, context) {\n const propertyKey = context.name;\n // Use metadata to store property information at decoration time\n if (!context.metadata) {\n context.metadata = {};\n }\n if (!context.metadata[PROPERTIES]) {\n context.metadata[PROPERTIES] = new Map();\n }\n context.metadata[PROPERTIES].set(propertyKey, options || {});\n // Return a field initializer function for new decorators\n return function (initialValue) {\n // Ensure constructor[PROPERTIES] exists\n const constructor = this.constructor;\n if (!constructor[PROPERTIES]) {\n constructor[PROPERTIES] = new Map();\n }\n // Detect type from initial value if not explicitly provided\n const finalOptions = { ...options };\n if (!finalOptions.type && initialValue !== undefined) {\n finalOptions.type = detectType(initialValue);\n }\n // Always store property options on constructor for runtime access\n constructor[PROPERTIES].set(propertyKey, finalOptions);\n // Set up the property descriptor — re-define if a subclass overrides\n // the property with different options (different closure captures)\n const definerKey = `__propDef_${propertyKey}`;\n const existingDefiner = this.constructor.prototype[definerKey];\n if (!existingDefiner || existingDefiner !== options) {\n this.constructor.prototype[definerKey] = options;\n const descriptor = {\n get() {\n // attribute: false — use internal storage only, no DOM sync\n if (finalOptions?.attribute === false) {\n if (this[PROPERTY_VALUES] && propertyKey in this[PROPERTY_VALUES]) {\n return this[PROPERTY_VALUES][propertyKey];\n }\n if (this[PRE_INIT_PROPERTY_VALUES]?.has(propertyKey)) {\n return this[PRE_INIT_PROPERTY_VALUES].get(propertyKey);\n }\n return initialValue;\n }\n // Always read from DOM attribute - no internal state\n const attributeName = getAttrName(finalOptions || {}, propertyKey);\n const attrValue = this.getAttribute?.(attributeName);\n // If attribute exists, parse it\n if (attrValue !== null) {\n return parseAttributeValue(attrValue, finalOptions || {}, undefined, initialValue);\n }\n // For Boolean properties that have been explicitly set via attribute (and then removed),\n // follow HTML boolean attribute semantics (absence = false)\n const inferredType = finalOptions?.type || detectType(initialValue);\n if (inferredType === Boolean && this[EXPLICITLY_SET_PROPERTIES]?.has(propertyKey)) {\n return false;\n }\n // Check for pre-init property values (set before element was connected)\n if (this[PRE_INIT_PROPERTY_VALUES]?.has(propertyKey)) {\n return this[PRE_INIT_PROPERTY_VALUES].get(propertyKey);\n }\n // Otherwise return initial value (respects default values like showRememberMe = true)\n return initialValue;\n },\n set(newValue) {\n const oldValue = this[propertyKey];\n if (oldValue === newValue)\n return;\n // Pre-init: store for later, don't reflect to DOM yet\n if (!this[PROPERTIES_INITIALIZED]) {\n if (!this[PRE_INIT_PROPERTY_VALUES])\n this[PRE_INIT_PROPERTY_VALUES] = new Map();\n this[PRE_INIT_PROPERTY_VALUES].set(propertyKey, newValue);\n return;\n }\n // attribute: false — store internally, skip DOM reflection\n if (finalOptions?.attribute === false) {\n ensureObj(this, PROPERTY_VALUES)[propertyKey] = newValue;\n }\n else {\n const attributeName = getAttrName(finalOptions, propertyKey);\n const attributeValue = valueToAttribute(newValue, finalOptions, initialValue);\n ensureSet(this, EXPLICITLY_SET_PROPERTIES).add(propertyKey);\n ensureSet(this, SETTING_FROM_PROPERTY).add(attributeName.toLowerCase());\n if (attributeValue === null) {\n this.removeAttribute?.(attributeName);\n }\n else {\n this.setAttribute?.(attributeName, attributeValue);\n }\n setTimeout(() => {\n this[SETTING_FROM_PROPERTY]?.delete(attributeName.toLowerCase());\n }, 0);\n }\n invokeWatchers(this, this.constructor, propertyKey, oldValue, newValue);\n if (this[RENDER_METHOD] && this[INITIALIZED]) {\n requestRender(this);\n }\n },\n configurable: true,\n enumerable: true\n };\n Object.defineProperty(this.constructor.prototype, propertyKey, descriptor);\n }\n // Initialize the property value\n ensureObj(this, PROPERTY_VALUES)[propertyKey] = initialValue;\n return initialValue;\n };\n };\n}\nfunction getQueryRoot(instance) {\n const isController = instance[IS_CONTROLLER_INSTANCE] === true;\n return isController && instance.element ? instance.element : instance;\n}\nfunction query(selector, options = {}) {\n return function (_value, context) {\n const { light = false, shadow = true } = options;\n const propertyKey = context.name;\n return function (initialValue) {\n if (!Object.hasOwn(this.constructor.prototype, propertyKey)) {\n Object.defineProperty(this.constructor.prototype, propertyKey, {\n get() {\n const root = getQueryRoot(this);\n let result = null;\n if (shadow && root.shadowRoot)\n result = root.shadowRoot.querySelector(selector);\n if (!result && light)\n result = root.querySelector(selector);\n return result || null;\n },\n set() { },\n configurable: true,\n enumerable: true\n });\n }\n return initialValue;\n };\n };\n}\nfunction queryAll(selector, options = {}) {\n return function (_value, context) {\n const { light = false, shadow = true } = options;\n const propertyKey = context.name;\n return function (initialValue) {\n if (!Object.hasOwn(this.constructor.prototype, propertyKey)) {\n Object.defineProperty(this.constructor.prototype, propertyKey, {\n get() {\n const root = getQueryRoot(this);\n const results = [];\n if (shadow && root.shadowRoot)\n results.push(...root.shadowRoot.querySelectorAll(selector));\n if (light)\n results.push(...root.querySelectorAll(selector));\n return results;\n },\n set() { },\n configurable: true,\n enumerable: true\n });\n }\n return initialValue;\n };\n };\n}\nfunction watch(...propertyNames) {\n return function (target, context) {\n const methodName = context.name;\n context.addInitializer(function () {\n const constructor = this.constructor;\n // Dedup by method reference — allows child classes to register\n // their own method with the same name as a parent's\n if (!constructor.__watchMethods)\n constructor.__watchMethods = new Set();\n if (constructor.__watchMethods.has(target))\n return;\n constructor.__watchMethods.add(target);\n if (!constructor[PROPERTY_WATCHERS]) {\n constructor[PROPERTY_WATCHERS] = new Map();\n }\n for (const propertyName of propertyNames) {\n if (!constructor[PROPERTY_WATCHERS].has(propertyName)) {\n constructor[PROPERTY_WATCHERS].set(propertyName, []);\n }\n constructor[PROPERTY_WATCHERS].get(propertyName).push({\n methodName,\n method: target\n });\n }\n });\n };\n}\n/**\n * Decorator that injects router context into a property\n * The context is automatically provided to page components by the router\n */\nfunction context() {\n return function (_value, context) {\n const propertyKey = context.name;\n // Return a field initializer function for new decorators\n return function (initialValue) {\n // Set up the property descriptor on first access\n if (!Object.hasOwn(this.constructor.prototype, propertyKey)) {\n const descriptor = {\n get() {\n // Cached context\n if (this[ROUTER_CONTEXT] !== undefined) {\n return this[ROUTER_CONTEXT];\n }\n // Resolve dispatch target\n const isController = this[IS_CONTROLLER_INSTANCE] === true;\n let targetElement = isController && this.element ? this.element : this;\n // Controller was detached\n if (!targetElement || !targetElement.dispatchEvent)\n return undefined;\n // Shadow DOM: dispatch on host for proper bubbling\n if (targetElement.getRootNode && targetElement.getRootNode() instanceof ShadowRoot) {\n targetElement = targetElement.getRootNode().host;\n }\n // Request context from parent page\n const detail = { target: this };\n targetElement.dispatchEvent(new CustomEvent('@context/request', {\n bubbles: true,\n cancelable: true,\n detail\n }));\n // No context provided\n if (detail.context === undefined)\n return undefined;\n // Cache and return\n this[ROUTER_CONTEXT] = detail.context;\n return detail.context;\n },\n set() {\n // Context is read-only\n },\n configurable: true,\n enumerable: true\n };\n Object.defineProperty(this.constructor.prototype, propertyKey, descriptor);\n }\n return initialValue;\n };\n };\n}\nfunction registerHandler(symbol, prefix, target, context, extra) {\n const methodName = context.name;\n context.addInitializer(function () {\n const constructor = this.constructor;\n const setKey = `__${prefix}Methods`;\n if (!constructor[setKey])\n constructor[setKey] = new Set();\n if (constructor[setKey].has(target))\n return;\n constructor[setKey].add(target);\n if (!constructor[symbol])\n constructor[symbol] = [];\n constructor[symbol].push({ methodName, method: target, ...extra });\n });\n}\nfunction ready() {\n return function (target, context) {\n registerHandler(READY_HANDLERS, 'ready', target, context);\n };\n}\nfunction dispose() {\n return function (target, context) {\n registerHandler(DISPOSE_HANDLERS, 'dispose', target, context);\n };\n}\nfunction createLifecycleDecorator(handlersSymbol, timersSymbol, prefix) {\n return function (options = {}) {\n return function (originalMethod, context) {\n registerHandler(handlersSymbol, prefix, originalMethod, context, { options });\n const methodName = context.name;\n return function (...args) {\n if (!this[timersSymbol])\n this[timersSymbol] = new Map();\n if (!this[timersSymbol].has(methodName)) {\n this[timersSymbol].set(methodName, { throttleTimer: null, debounceTimer: null, lastThrottleCall: 0 });\n }\n const timers = this[timersSymbol].get(methodName);\n const exec = (...a) => originalMethod.apply(this, a);\n if (options.debounce > 0) {\n clearTimeout(timers.debounceTimer);\n timers.debounceTimer = setTimeout(() => exec(...args), options.debounce);\n return undefined;\n }\n if (options.throttle > 0) {\n const now = Date.now();\n if (timers.lastThrottleCall === 0 || now - timers.lastThrottleCall >= options.throttle) {\n timers.lastThrottleCall = now;\n return exec(...args);\n }\n if (!timers.throttleTimer) {\n const remaining = options.throttle - (now - timers.lastThrottleCall);\n timers.throttleTimer = setTimeout(() => {\n timers.throttleTimer = null;\n timers.lastThrottleCall = Date.now();\n exec(...args);\n }, remaining);\n }\n return undefined;\n }\n return exec(...args);\n };\n };\n };\n}\nconst moved = createLifecycleDecorator(MOVED_HANDLERS, MOVED_TIMERS, 'moved');\nconst adopted = createLifecycleDecorator(ADOPTED_HANDLERS, ADOPTED_TIMERS, 'adopted');\n\n/*!\n * pica-route v1.1.2\n * A pure URL pattern matching library compatible with route-parser API\n * (c) 2024\n * Released under the MIT License.\n */\nclass Route {\n constructor(pattern) {\n this.parsed = this.parsePattern(pattern);\n }\n get spec() {\n return this.parsed.template;\n }\n parsePattern(pattern) {\n // Handle optional query syntax (?query=:param)\n let pathPattern = pattern;\n let queryPattern = '';\n let queryOptional = false;\n const queryIndex = pattern.indexOf('?');\n if (queryIndex !== -1) {\n pathPattern = pattern.slice(0, queryIndex);\n queryPattern = pattern.slice(queryIndex + 1);\n // Check if query is wrapped in optional syntax (?...)\n if (pathPattern.endsWith('(') && queryPattern.endsWith(')')) {\n queryOptional = true;\n pathPattern = pathPattern.slice(0, -1);\n queryPattern = queryPattern.slice(0, -1);\n }\n }\n return {\n pathSegments: this.parseSegments(pathPattern),\n querySegments: queryPattern ? this.parseQuerySegments(queryPattern) : [],\n queryOptional,\n template: pattern\n };\n }\n parseSegments(pattern) {\n const segments = [];\n let i = 0;\n while (i < pattern.length) {\n const char = pattern[i];\n switch (char) {\n case '(':\n // Parse optional group\n const { segments: optionalSegments, endIndex } = this.parseOptionalGroup(pattern, i);\n segments.push({ type: 'optional', segments: optionalSegments });\n i = endIndex + 1;\n break;\n case ':':\n // Parse parameter\n const { name, endIndex: paramEndIndex } = this.parseIdentifier(pattern, i + 1);\n segments.push({ type: 'param', name });\n i = paramEndIndex;\n break;\n case '*':\n // Parse splat\n const { name: splatName, endIndex: splatEndIndex } = this.parseIdentifier(pattern, i + 1);\n segments.push({ type: 'splat', name: splatName });\n i = splatEndIndex;\n break;\n default:\n // Parse literal text\n const { value, endIndex: literalEndIndex } = this.parseLiteral(pattern, i);\n if (value) {\n segments.push({ type: 'literal', value });\n }\n i = literalEndIndex;\n break;\n }\n }\n return segments;\n }\n parseOptionalGroup(pattern, startIndex) {\n let depth = 1;\n let i = startIndex + 1;\n while (i < pattern.length && depth > 0) {\n if (pattern[i] === '(')\n depth++;\n if (pattern[i] === ')')\n depth--;\n i++;\n }\n const content = pattern.slice(startIndex + 1, i - 1);\n return {\n segments: this.parseSegments(content),\n endIndex: i - 1\n };\n }\n parseIdentifier(pattern, startIndex) {\n let i = startIndex;\n while (i < pattern.length && /[\\w-]/.test(pattern[i])) {\n i++;\n }\n return {\n name: pattern.slice(startIndex, i),\n endIndex: i\n };\n }\n parseLiteral(pattern, startIndex) {\n let i = startIndex;\n while (i < pattern.length && !'(:*('.includes(pattern[i])) {\n i++;\n }\n return {\n value: pattern.slice(startIndex, i),\n endIndex: i\n };\n }\n parseQuerySegments(queryPattern) {\n // Remove optional group syntax wrapping the query\n let cleanPattern = queryPattern;\n if (cleanPattern.startsWith('(') && cleanPattern.endsWith(')')) {\n cleanPattern = cleanPattern.slice(1, -1);\n }\n const segments = [];\n let i = 0;\n while (i < cleanPattern.length) {\n switch (cleanPattern[i]) {\n case ':':\n const { name, endIndex } = this.parseIdentifier(cleanPattern, i + 1);\n segments.push({ type: 'param', name });\n i = endIndex;\n break;\n default:\n const { value, endIndex: literalEndIndex } = this.parseQueryLiteral(cleanPattern, i);\n if (value) {\n segments.push({ type: 'literal', value });\n }\n i = literalEndIndex;\n break;\n }\n }\n return segments;\n }\n parseQueryLiteral(pattern, startIndex) {\n let i = startIndex;\n while (i < pattern.length && pattern[i] !== ':') {\n i++;\n }\n return {\n value: pattern.slice(startIndex, i),\n endIndex: i\n };\n }\n getAllParamNames() {\n const paramNames = new Set();\n const collectParams = (segments) => {\n for (const segment of segments) {\n switch (segment.type) {\n case 'param':\n case 'splat':\n paramNames.add(segment.name);\n break;\n case 'optional':\n collectParams(segment.segments);\n break;\n }\n }\n };\n collectParams(this.parsed.pathSegments);\n collectParams(this.parsed.querySegments);\n return Array.from(paramNames);\n }\n canMatchRemainingSegments(path, startIndex, segments) {\n // Quick check: try to match the remaining segments\n // This is a simplified check - we just look for literal segments that must exist\n let pathIndex = startIndex;\n for (const segment of segments) {\n if (segment.type === 'literal') {\n const literalIndex = path.indexOf(segment.value, pathIndex);\n if (literalIndex === -1) {\n return false; // Required literal not found\n }\n pathIndex = literalIndex + segment.value.length;\n }\n // For optional, param, and splat segments, we're more permissive in this quick check\n }\n return true;\n }\n match(url) {\n const [pathPart, queryPart] = url.split('?');\n const pathParams = this.matchPath(pathPart, this.parsed.pathSegments);\n if (pathParams === false) {\n return false;\n }\n const queryParams = this.matchQuery(queryPart || '', this.parsed.querySegments);\n if (queryParams === false) {\n return false;\n }\n // Initialize result with all optional parameters set to undefined\n const allParams = this.getAllParamNames();\n const result = {};\n // Set all parameters to undefined initially\n for (const paramName of allParams) {\n result[paramName] = undefined;\n }\n // Override with actual matched values\n Object.assign(result, pathParams, queryParams);\n return result;\n }\n matchPath(path, segments) {\n const result = {};\n let pathIndex = 0;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const remainingSegments = segments.slice(i + 1);\n const matchResult = this.matchSegment(path, pathIndex, segment, remainingSegments);\n if (matchResult === false) {\n return false;\n }\n Object.assign(result, matchResult.params);\n pathIndex = matchResult.nextIndex;\n }\n // Check if we've consumed the entire path\n if (pathIndex < path.length) {\n return false;\n }\n return result;\n }\n matchSegment(path, startIndex, segment, remainingSegments = []) {\n switch (segment.type) {\n case 'literal':\n if (path.slice(startIndex, startIndex + segment.value.length) === segment.value) {\n return { params: {}, nextIndex: startIndex + segment.value.length };\n }\n return false;\n case 'param': {\n let endIndex = startIndex;\n // Check if the next segment is a literal and find where it starts\n const nextSegment = remainingSegments[0];\n let stopChars = ['/', '?'];\n if (nextSegment && nextSegment.type === 'literal') {\n // For parameters followed by literals, we need to find where the literal starts\n const literalValue = nextSegment.value;\n const literalStart = path.indexOf(literalValue, startIndex);\n if (literalStart !== -1) {\n endIndex = literalStart;\n }\n else {\n // Literal not found, this parameter can't match\n return false;\n }\n }\n else {\n // Default behavior - stop at / or ?\n while (endIndex < path.length && !stopChars.includes(path[endIndex])) {\n endIndex++;\n }\n }\n if (endIndex === startIndex)\n return false;\n let value;\n try {\n value = decodeURIComponent(path.slice(startIndex, endIndex));\n }\n catch (e) {\n // If decoding fails, use the original value\n value = path.slice(startIndex, endIndex);\n }\n // If we hit a query string, we should reject this match for path parameters\n if (endIndex < path.length && path[endIndex] === '?' && remainingSegments.length > 0) {\n return false;\n }\n // Keep values as strings to match route-parser behavior\n return {\n params: { [segment.name]: value },\n nextIndex: endIndex\n };\n }\n case 'splat': {\n // For splats, we need to find the optimal stopping point by looking ahead\n let endIndex = path.length;\n const nextSegment = remainingSegments[0];\n if (nextSegment) {\n switch (nextSegment.type) {\n case 'literal':\n // For literal dots after splats, use first occurrence (for file extensions)\n // For other literals, use last occurrence\n if (nextSegment.value === '.') {\n const firstDotIndex = path.indexOf('.', startIndex);\n if (firstDotIndex !== -1) {\n endIndex = firstDotIndex;\n }\n }\n else {\n // Find the last occurrence of the next literal\n const literalIndex = path.lastIndexOf(nextSegment.value);\n if (literalIndex !== -1 && literalIndex >= startIndex) {\n endIndex = literalIndex;\n }\n }\n break;\n case 'param':\n // For parameter after splat, find the last slash\n let lastSlashIndex = -1;\n for (let i = path.length - 1; i >= startIndex; i--) {\n if (path[i] === '/') {\n lastSlashIndex = i;\n break;\n }\n }\n if (lastSlashIndex !== -1) {\n endIndex = lastSlashIndex;\n }\n break;\n case 'splat':\n // For consecutive splats, give this splat everything up to the last slash\n // The next splat gets the last component\n let lastSlash = -1;\n for (let i = path.length - 1; i > startIndex; i--) {\n if (path[i] === '/') {\n lastSlash = i + 1; // Include the slash\n break;\n }\n }\n if (lastSlash !== -1) {\n endIndex = lastSlash;\n }\n else {\n // No slash found, this splat gets everything except the last component\n const pathSegments = path.slice(startIndex).split('/').filter(s => s);\n if (pathSegments.length > 1) {\n endIndex = startIndex + pathSegments.slice(0, -1).join('/').length + 1;\n }\n else {\n endIndex = startIndex; // Give nothing to this splat\n }\n }\n break;\n case 'optional':\n // Look for literals inside optional groups\n const findFirstLiteral = (segs) => {\n for (const seg of segs) {\n if (seg.type === 'literal')\n return seg.value;\n if (seg.type === 'optional') {\n const nested = findFirstLiteral(seg.segments);\n if (nested)\n return nested;\n }\n }\n return null;\n };\n const firstLiteral = findFirstLiteral(nextSegment.segments);\n if (firstLiteral) {\n const literalIndex = path.lastIndexOf(firstLiteral);\n if (literalIndex !== -1 && literalIndex >= startIndex) {\n endIndex = literalIndex;\n }\n }\n break;\n }\n }\n // Don't go past query parameters\n const queryIndex = path.indexOf('?', startIndex);\n if (queryIndex !== -1 && queryIndex < endIndex) {\n endIndex = queryIndex;\n }\n let value;\n try {\n value = decodeURIComponent(path.slice(startIndex, endIndex));\n }\n catch (e) {\n // If decoding fails, use the original value\n value = path.slice(startIndex, endIndex);\n }\n return {\n params: { [segment.name]: value },\n nextIndex: endIndex\n };\n }\n case 'optional': {\n // Try to match the optional segment first, with backtracking if needed\n let tempIndex = startIndex;\n let params = {};\n let allMatched = true;\n for (let i = 0; i < segment.segments.length; i++) {\n const innerSegment = segment.segments[i];\n const remainingInner = segment.segments.slice(i + 1);\n const innerResult = this.matchSegment(path, tempIndex, innerSegment, remainingInner);\n if (innerResult === false) {\n allMatched = false;\n break;\n }\n Object.assign(params, innerResult.params);\n tempIndex = innerResult.nextIndex;\n }\n if (allMatched) {\n // Check if the rest of the segments can still be matched\n const canMatchRemaining = this.canMatchRemainingSegments(path, tempIndex, remainingSegments);\n if (canMatchRemaining) {\n return {\n params,\n nextIndex: tempIndex\n };\n }\n }\n // Optional segment either didn't match or would prevent remaining segments from matching\n // So skip it and return to original position\n return { params: {}, nextIndex: startIndex };\n }\n default:\n return false;\n }\n }\n findNextLiteral(segments) {\n for (const segment of segments) {\n if (segment.type === 'literal') {\n return segment;\n }\n else if (segment.type === 'optional') {\n const nested = this.findNextLiteral(segment.segments);\n if (nested)\n return nested;\n }\n }\n return null;\n }\n matchQuery(query, segments) {\n if (segments.length === 0) {\n return {};\n }\n const result = {};\n let queryIndex = 0;\n for (const segment of segments) {\n switch (segment.type) {\n case 'literal':\n if (query.slice(queryIndex, queryIndex + segment.value.length) === segment.value) {\n queryIndex += segment.value.length;\n }\n else {\n return false;\n }\n break;\n case 'param': {\n let endIndex = queryIndex;\n while (endIndex < query.length && query[endIndex] !== '&') {\n endIndex++;\n }\n if (endIndex === queryIndex)\n return false;\n let value;\n try {\n value = decodeURIComponent(query.slice(queryIndex, endIndex));\n }\n catch (e) {\n // If decoding fails, use the original value\n value = query.slice(queryIndex, endIndex);\n }\n result[segment.name] = value;\n queryIndex = endIndex;\n break;\n }\n }\n }\n return result;\n }\n reverse(params = {}) {\n const pathResult = this.reverseSegments(this.parsed.pathSegments, params);\n if (pathResult === false) {\n return false;\n }\n let result = pathResult;\n if (this.parsed.querySegments.length > 0) {\n const queryResult = this.reverseSegments(this.parsed.querySegments, params);\n if (!this.parsed.queryOptional) {\n // Query is required - if it fails, the whole reverse fails\n if (queryResult === false) {\n return false;\n }\n }\n // Add query string if we have a result\n if (queryResult && queryResult !== '') {\n result += '?' + queryResult;\n }\n }\n return result;\n }\n reverseSegments(segments, params, inActivatedStructure = false) {\n let result = '';\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const remainingSegments = segments.slice(i + 1);\n switch (segment.type) {\n case 'literal':\n result += segment.value;\n break;\n case 'param':\n case 'splat':\n if (segment.name in params) {\n result += String(params[segment.name]);\n }\n else {\n // Missing required parameter - but for query segments, this might be optional\n return false;\n }\n break;\n case 'optional':\n // Check if this optional group should be included\n // considering dependencies from later optional groups\n const shouldInclude = this.hasAllParams(segment.segments, params, inActivatedStructure) ||\n this.hasLaterOptionalGroupNeedingParams(remainingSegments, params, segment.segments);\n if (shouldInclude) {\n const optionalResult = this.reverseSegments(segment.segments, params, true);\n if (optionalResult === false) {\n return false;\n }\n result += optionalResult;\n }\n break;\n }\n }\n return result;\n }\n // Check if any later optional groups need parameters and would require this group to be included\n hasLaterOptionalGroupNeedingParams(laterSegments, params, currentOptionalSegments) {\n // Check if any later optional group has parameters that are provided\n for (const segment of laterSegments) {\n if (segment.type === 'optional') {\n if (this.hasAnyParamInSegments(segment.segments, params)) {\n // Check if the current optional group only has literals/no required params\n // If so, it should be included as a bridge to the later group\n return this.hasOnlyLiteralsAndOptionals(currentOptionalSegments);\n }\n }\n }\n return false;\n }\n hasOnlyLiteralsAndOptionals(segments) {\n for (const segment of segments) {\n if (segment.type === 'param' || segment.type === 'splat') {\n return false;\n }\n }\n return true;\n }\n hasAllParams(segments, params, inActivatedStructure = false) {\n // Check if we can include this optional group\n let hasDirectParams = false;\n let hasNestedParams = false;\n let missingDirectParam = false;\n let hasOnlyLiteralsAndOptionals = true;\n // First pass: check direct params and literals\n for (const segment of segments) {\n switch (segment.type) {\n case 'param':\n case 'splat':\n hasOnlyLiteralsAndOptionals = false;\n if (segment.name in params && params[segment.name] !== undefined) {\n hasDirectParams = true;\n }\n else {\n missingDirectParam = true;\n }\n break;\n }\n }\n // Determine if this level will be activated and propagate to nested\n const willBeActivated = (hasDirectParams && !missingDirectParam);\n const passToNested = inActivatedStructure || willBeActivated;\n // Second pass: check nested optional groups with correct context\n for (const segment of segments) {\n if (segment.type === 'optional') {\n const shouldIncludeNested = this.hasAllParams(segment.segments, params, passToNested);\n if (shouldIncludeNested) {\n hasNestedParams = true;\n }\n }\n }\n // Include this optional group if:\n // 1. We have all direct parameters needed, OR\n // 2. We have nested parameters and no missing direct parameters, OR\n // 3. We have only literals/optionals and parent was activated\n if (hasDirectParams && !missingDirectParam) {\n return true; // We have all required params for this level\n }\n if (hasNestedParams && !missingDirectParam) {\n return true; // We need this group to reach nested parameters\n }\n // Include literal-only groups in nested structures\n if (hasOnlyLiteralsAndOptionals && inActivatedStructure) {\n return true; // Include literal paths in activated structures\n }\n return false;\n }\n hasOnlyOptionalMissingParams(segments, params) {\n // Check if all missing parameters are in nested optional groups\n for (const segment of segments) {\n switch (segment.type) {\n case 'param':\n case 'splat':\n if (!(segment.name in params)) {\n return false; // Has required missing param\n }\n break;\n }\n }\n return true;\n }\n hasAnyParamInSegments(segments, params) {\n for (const segment of segments) {\n switch (segment.type) {\n case 'param':\n case 'splat':\n if (segment.name in params) {\n return true;\n }\n break;\n case 'optional':\n if (this.hasAnyParamInSegments(segment.segments, params)) {\n return true;\n }\n break;\n }\n }\n return false;\n }\n}\n\n/**\n * Generic transition system for animating between elements\n */\n/**\n * Parse CSS property string into an object\n */\nfunction parseStyles(styleString) {\n const styles = {};\n styleString.split(';').forEach(rule => {\n const [prop, value] = rule.split(':').map(s => s.trim());\n if (prop && value) {\n styles[prop] = value;\n }\n });\n return styles;\n}\n/**\n * Perform a transition between two elements\n */\nvar TransitionMode;\n(function (TransitionMode) {\n TransitionMode[\"SEQUENTIAL\"] = \"sequential\";\n TransitionMode[\"SIMULTANEOUS\"] = \"simultaneous\";\n})(TransitionMode || (TransitionMode = {}));\nfunction applyBaseTransitionStyles(el, isSlotted, duration, prop) {\n el.style.position = 'absolute';\n el.style.width = '100%';\n if (isSlotted) {\n el.style.height = '100%';\n el.style.transition = `opacity ${duration}ms ease-in-out`;\n return;\n }\n el.style.top = '0';\n el.style.left = '0';\n el.style.transition = `${prop} ${duration}ms ease-in-out`;\n}\nfunction resetTransitionStyles(el, isSlotted) {\n el.style.position = '';\n el.style.width = '';\n el.style.transition = '';\n if (isSlotted) {\n el.style.height = '';\n return;\n }\n el.style.top = '';\n el.style.left = '';\n}\nasync function performTransition(container, oldElement, newElement, transition = {}) {\n const outDuration = transition.outDuration || 300;\n const inDuration = transition.inDuration || 300;\n const mode = (transition.mode || 'sequential');\n const outStyles = transition.out ? parseStyles(transition.out) : { opacity: '0' };\n const inStartStyles = { opacity: '0' };\n const inEndStyles = transition.in ? parseStyles(transition.in) : { opacity: '1' };\n const containerStyle = container.style;\n const originalPosition = containerStyle.position;\n const isLayoutElement = container.tagName.includes('-') && container.shadowRoot;\n if (!isLayoutElement)\n containerStyle.position = 'relative';\n const isSlotted = oldElement.hasAttribute('slot') || newElement.hasAttribute('slot');\n applyBaseTransitionStyles(oldElement, isSlotted, outDuration, 'all');\n applyBaseTransitionStyles(newElement, isSlotted, inDuration, 'all');\n Object.assign(newElement.style, inStartStyles);\n container.appendChild(newElement);\n void newElement.offsetHeight;\n // Animate\n switch (mode) {\n case TransitionMode.SIMULTANEOUS:\n Object.assign(oldElement.style, outStyles);\n Object.assign(newElement.style, inEndStyles);\n await new Promise(resolve => setTimeout(resolve, Math.max(outDuration, inDuration)));\n break;\n case TransitionMode.SEQUENTIAL:\n Object.assign(oldElement.style, outStyles);\n await new Promise(resolve => setTimeout(resolve, outDuration));\n Object.assign(newElement.style, inEndStyles);\n await new Promise(resolve => setTimeout(resolve, inDuration));\n break;\n }\n // Cleanup\n oldElement.remove();\n resetTransitionStyles(newElement, isSlotted);\n Object.keys({ ...inStartStyles, ...inEndStyles }).forEach(prop => {\n newElement.style[prop] = '';\n });\n if (!isLayoutElement)\n containerStyle.position = originalPosition;\n}\n\n/**\n * Possible outcomes from route resolution\n */\nvar RouteResult;\n(function (RouteResult) {\n RouteResult[\"SUCCESS\"] = \"success\";\n RouteResult[\"GUARDS_FAILED\"] = \"guards-failed\";\n RouteResult[\"NOT_FOUND\"] = \"not-found\";\n})(RouteResult || (RouteResult = {}));\n/**\n * Creates a new router instance.\n * @param {RouterOptions} options - The router configuration options.\n * @returns An object containing the router's API methods.\n */\nfunction Router(options) {\n const win = options.window ?? window;\n const doc = options.document ?? document;\n const routes = [];\n let is_sorted = false;\n let placards = []; // Store collected placards\n let _404; // the 404 page\n let _403; // the 403 forbidden page\n let home; // the home page\n let currentLayoutName = null; // Track current layout name\n let currentLayoutTimestamp = null; // Track current layout timestamp\n const context = options.context || {}; // Store context for guards\n // Create Context instance for managing router state\n const navigationContext = new Context(context, [], '', {}, options.fetcher);\n function getCurrentLayoutElement(target) {\n const noCurrentLayout = !currentLayoutName || !currentLayoutTimestamp;\n if (noCurrentLayout) {\n return null;\n }\n const layoutElements = target.querySelectorAll(currentLayoutName);\n for (const element of layoutElements) {\n const hasTimestamp = element[CREATED_AT] === currentLayoutTimestamp;\n if (hasTimestamp) {\n return element;\n }\n }\n return null;\n }\n /**\n * Decorator function for defining a page with associated routes.\n * @param {PageOptions} pageOptions - The page configuration options.\n * @returns A decorator function to apply to a custom element class.\n */\n function page(pageOptions) {\n return function (constructor, context) {\n // Transfer metadata from context to constructor (for new decorators)\n if (context?.metadata && context.metadata[PROPERTIES]) {\n if (!constructor[PROPERTIES]) {\n constructor[PROPERTIES] = new Map();\n }\n for (const [key, value] of context.metadata[PROPERTIES]) {\n constructor[PROPERTIES].set(key, value);\n }\n }\n // Apply all element functionality (properties, queries, watchers, controllers, etc.)\n applyElementFunctionality(constructor);\n // Store transition config on constructor for later use\n constructor[PAGE_TRANSITION] = pageOptions.transition;\n // Extend the connectedCallback to add router-specific functionality\n const elementConnectedCallback = constructor.prototype.connectedCallback;\n constructor.prototype.connectedCallback = function () {\n // Store the Context instance for @context decorated methods to access\n this[CONTEXT_HANDLER] = navigationContext;\n // Call the element's connectedCallback first\n elementConnectedCallback?.call(this);\n };\n // Extend the disconnectedCallback to clean up router-specific stuff\n const elementDisconnectedCallback = constructor.prototype.disconnectedCallback;\n constructor.prototype.disconnectedCallback = function () {\n // Call element's disconnectedCallback first\n elementDisconnectedCallback?.call(this);\n // Clean up context references\n delete this[ROUTER_CONTEXT];\n delete this[CONTEXT_HANDLER];\n };\n // Define the custom element (skip if already registered)\n if (!win.customElements.get(pageOptions.tag)) {\n win.customElements.define(pageOptions.tag, constructor);\n }\n // Register the routes with guards, layout, and placard\n pageOptions.routes.forEach(route => register(route, pageOptions.tag, pageOptions.transition, pageOptions.guards, pageOptions.layout, pageOptions.placard));\n return constructor;\n };\n }\n /**\n * Registers a new route with the router.\n * @param {string} route - The route path.\n * @param {string} tag - The custom element tag associated with the route.\n * @example\n * register('/custom-route', 'custom-element');\n */\n function register(route, tag, transition, guards, layout, placard) {\n routes.push({ route: new Route(route), tag, transition, guards, layout, placard });\n is_sorted = false;\n switch (route) {\n case '/404':\n _404 = tag;\n break;\n case '/403':\n _403 = tag;\n break;\n case '/':\n home = tag;\n break;\n }\n }\n function setupEventListeners() {\n const handler = () => {\n if (!doc.querySelector(options.target))\n return;\n navigate(getPath());\n };\n switch (options.type) {\n case 'hash':\n win.addEventListener('hashchange', handler);\n break;\n case 'pushstate':\n win.addEventListener('popstate', handler);\n break;\n }\n }\n /**\n * Initializes the router and sets up navigation event listeners.\n * @example\n * initialize();\n */\n function initialize() {\n const target = doc.querySelector(options.target);\n if (!target) {\n throw new Error(`Target element not found: ${options.target}`);\n }\n const needsSorting = !is_sorted;\n if (needsSorting) {\n routes.sort((a, b) => b.route.spec.length - a.route.spec.length);\n is_sorted = true;\n }\n // Collect placards from registered routes\n collectPlacards();\n setupEventListeners();\n const path = getPath();\n navigate(path);\n }\n function collectPlacards() {\n const seen = new Set();\n placards = routes\n .filter(route => route.placard)\n .map(route => {\n const placard = route.placard;\n return typeof placard === 'function'\n ? placard(context)\n : placard;\n })\n .filter(p => {\n if (seen.has(p.name))\n return false;\n seen.add(p.name);\n return true;\n });\n }\n function emitContextUpdate(target, currentPath, routeParams) {\n // Update the navigation context and notify all registered elements\n navigationContext[CONTEXT_UPDATE](context, placards, currentPath, routeParams);\n }\n function updateLayout(layoutElement, currentPath, routeParams) {\n // Check if layout implements the update method\n if (typeof layoutElement.update === 'function') {\n layoutElement.update(context, placards, currentPath, routeParams);\n }\n }\n function getPath() {\n switch (options.type) {\n case 'hash':\n return win.location.hash.slice(1);\n case 'pushstate':\n return win.location.pathname;\n }\n }\n function renderForbiddenPage(target) {\n let newPageElement;\n if (_403) {\n newPageElement = doc.createElement(_403);\n newPageElement[ROUTER_CONTEXT] = context;\n }\n else {\n const div = doc.createElement('div');\n div.className = 'default-403';\n div.innerHTML = /*html*/ `<h1>403</h1><p>Unauthorized</p>`;\n newPageElement = div;\n }\n target.innerHTML = '';\n target.appendChild(newPageElement);\n currentLayoutName = null;\n currentLayoutTimestamp = null;\n }\n function createLoadingSpinner() {\n const container = doc.createElement('div');\n container.setAttribute('data-snice-loading', '');\n container.innerHTML = /*html*/ `\n <style>@keyframes snice-spin{to{transform:rotate(360deg)}}</style>\n <div style=\"display:flex;align-items:center;justify-content:center;height:100%;min-height:200px\">\n <div style=\"width:32px;height:32px;border:3px solid rgba(128,128,128,0.3);border-top-color:rgba(128,128,128,0.8);border-radius:50%;animation:snice-spin 0.6s linear infinite\"></div>\n </div>`;\n return container;\n }\n async function checkGuards(guards, params, target) {\n const hasGuards = !!guards;\n if (!hasGuards) {\n return true;\n }\n const guardsArray = Array.isArray(guards) ? guards : [guards];\n let spinner = null;\n let spinnerTimer = null;\n // Show spinner after a short delay (avoids flash for fast sync guards)\n spinnerTimer = setTimeout(() => {\n spinner = createLoadingSpinner();\n target.appendChild(spinner);\n }, 50);\n try {\n for (const guard of guardsArray) {\n const allowed = await guard(context, params);\n if (!allowed) {\n renderForbiddenPage(target);\n return false;\n }\n }\n return true;\n }\n finally {\n if (spinnerTimer)\n clearTimeout(spinnerTimer);\n // @ts-ignore — TS narrows spinner to never because it can't track setTimeout mutations\n if (spinner)\n spinner.remove();\n }\n }\n function createHomeElement() {\n const newPageElement = doc.createElement(home);\n newPageElement[ROUTER_CONTEXT] = context;\n const constructor = win.customElements.get(home);\n const transition = constructor?.[PAGE_TRANSITION];\n const homeRoute = routes.find(r => r.route.match('/'));\n return { element: newPageElement, transition, layout: homeRoute?.layout };\n }\n function create404Element() {\n const has404Page = !!_404;\n if (has404Page) {\n const newPageElement = doc.createElement(_404);\n newPageElement[ROUTER_CONTEXT] = context;\n const constructor = win.customElements.get(_404);\n const transition = constructor?.[PAGE_TRANSITION];\n return { element: newPageElement, transition, layout: undefined };\n }\n const div = doc.createElement('div');\n div.className = 'default-404';\n div.innerHTML = /*html*/ `<h1>404</h1><p>Page not found</p>`;\n return { element: div, transition: undefined, layout: undefined };\n }\n async function resolveRoute(path, target) {\n for (const route of routes) {\n const params = route.route.match(path);\n const isMatch = params !== false;\n if (!isMatch) {\n continue;\n }\n const guardsAllowed = await checkGuards(route.guards, params, target);\n if (!guardsAllowed) {\n return { result: RouteResult.GUARDS_FAILED };\n }\n const newPageElement = doc.createElement(route.tag);\n newPageElement[ROUTER_CONTEXT] = context;\n newPageElement[CONTEXT_HANDLER] = navigationContext;\n const routeParams = params;\n Object.keys(routeParams).forEach(key => newPageElement.setAttribute(key, routeParams[key]));\n return { result: RouteResult.SUCCESS, element: newPageElement, transition: route.transition, layout: route.layout, routeParams };\n }\n return { result: RouteResult.NOT_FOUND };\n }\n function determineLayout(pageLayout) {\n const isExplicitlyNoLayout = pageLayout === false;\n if (isExplicitlyNoLayout) {\n return null;\n }\n const hasPageLayout = !!pageLayout;\n if (hasPageLayout) {\n return pageLayout;\n }\n const hasRouterLayout = !!options.layout;\n if (hasRouterLayout) {\n return options.layout;\n }\n return null;\n }\n function setupLayout(layoutToUse) {\n const needsNewLayout = layoutToUse !== currentLayoutName;\n if (!needsNewLayout) {\n return { element: null, needsNewLayout: false };\n }\n currentLayoutName = layoutToUse;\n const shouldCreateLayout = !!layoutToUse;\n if (shouldCreateLayout) {\n const timestamp = Date.now();\n currentLayoutTimestamp = timestamp;\n const layoutElement = doc.createElement(layoutToUse);\n layoutElement[ROUTER_CONTEXT] = context;\n layoutElement[CREATED_AT] = timestamp;\n return { element: layoutElement, needsNewLayout: true };\n }\n currentLayoutTimestamp = null;\n return { element: null, needsNewLayout: true };\n }\n async function renderWithLayout(target, pageElement, transition, layoutElement, needsNewLayout, currentPath, routeParams) {\n const currentLayout = layoutElement || getCurrentLayoutElement(target);\n if (!currentLayout) {\n return;\n }\n // Update layout with current context and placards\n updateLayout(currentLayout, currentPath, routeParams);\n const oldPageInLayout = currentLayout.querySelector('[slot=\"page\"]');\n const shouldTransition = !!(transition && oldPageInLayout);\n if (shouldTransition) {\n pageElement.setAttribute('slot', 'page');\n await performTransition$1(currentLayout, oldPageInLayout, pageElement, transition);\n if (needsNewLayout) {\n target.innerHTML = '';\n target.appendChild(currentLayout);\n }\n return;\n }\n const existingPages = currentLayout.querySelectorAll('[slot=\"page\"]');\n existingPages.forEach(page => page.remove());\n pageElement.setAttribute('slot', 'page');\n currentLayout.appendChild(pageElement);\n if (needsNewLayout) {\n target.innerHTML = '';\n target.appendChild(currentLayout);\n }\n }\n async function renderDirect(target, pageElement, transition) {\n const currentElementInTarget = target.children[0];\n const shouldTransition = !!(transition && currentElementInTarget);\n if (shouldTransition) {\n await performTransition$1(target, currentElementInTarget, pageElement, transition);\n return;\n }\n target.innerHTML = '';\n target.appendChild(pageElement);\n }\n async function renderPage(target, pageElement, transition, layout, path, routeParams) {\n const layoutToUse = determineLayout(layout);\n const { element: layoutElement, needsNewLayout } = setupLayout(layoutToUse);\n const finalTransition = transition || options.transition;\n const hasLayout = layoutElement !== null || getCurrentLayoutElement(target) !== null;\n if (hasLayout) {\n await renderWithLayout(target, pageElement, finalTransition, layoutElement, needsNewLayout, path, routeParams);\n emitContextUpdate(target, path, routeParams);\n return;\n }\n await renderDirect(target, pageElement, finalTransition);\n emitContextUpdate(target, path, routeParams);\n }\n /**\n * Navigates to the specified path.\n * @param {string} path - The path to navigate to.\n * @example\n * navigate('/login');\n */\n async function navigate(path) {\n const target = doc.querySelector(options.target);\n if (!target) {\n throw new Error(`Target element not found: ${options.target}`);\n }\n collectPlacards();\n win.scrollTo(0, 0);\n // Home path\n const isHomePath = (path?.trim() === '' || path === '/') && !!home;\n if (isHomePath) {\n const homeRoute = routes.find(r => r.route.match('/'));\n if (!(await checkGuards(homeRoute?.guards, {}, target)))\n return;\n const { element, transition, layout } = createHomeElement();\n await renderPage(target, element, transition, layout, path, {});\n return;\n }\n // No path\n if (!path)\n return;\n // Resolve route\n const routeResult = await resolveRoute(path, target);\n // Guards failed (403 already rendered by checkGuards)\n if (routeResult.result === RouteResult.GUARDS_FAILED)\n return;\n // Route matched\n if (routeResult.result === RouteResult.SUCCESS) {\n const { element, transition, layout, routeParams = {} } = routeResult;\n await renderPage(target, element, transition, layout, path, routeParams);\n return;\n }\n // 404 fallthrough\n const { element, transition, layout } = create404Element();\n await renderPage(target, element, transition, layout, path, {});\n }\n async function performTransition$1(container, oldElement, newElement, transition) {\n return performTransition(container, oldElement, newElement, transition);\n }\n return {\n page,\n initialize,\n navigate,\n register\n };\n}\n\n// @dispatch decorator - auto-dispatches custom events from method return values\n/**\n * Decorator that automatically dispatches a custom event after a method is called.\n * The return value of the method becomes the event detail.\n *\n * @param eventName The name of the event to dispatch\n * @param options Optional configuration extending EventInit\n */\nfunction dispatch(eventName, options) {\n return function (originalMethod, _context) {\n return function (...args) {\n // Create timing wrappers for dispatch (per-instance)\n if (!this[DISPATCH_TIMERS]) {\n this[DISPATCH_TIMERS] = new Map();\n }\n const timerKey = `${eventName}_${_context.name}`;\n if (!this[DISPATCH_TIMERS].has(timerKey)) {\n this[DISPATCH_TIMERS].set(timerKey, {\n debounceTimeout: null,\n throttleLastCall: 0,\n throttleTimeout: null\n });\n }\n const timers = this[DISPATCH_TIMERS].get(timerKey);\n // Call the original method with preserved this context\n const result = originalMethod.apply(this, args);\n // Helper to dispatch the event\n const doDispatch = (detail) => {\n // Skip dispatch if result is undefined and dispatchOnUndefined is false\n if (detail === undefined && options?.dispatchOnUndefined === false) {\n return;\n }\n // Create event with spread operator for options\n const event = new CustomEvent(eventName, {\n bubbles: true, // Default to true for component events\n composed: true, // Allow crossing shadow DOM boundaries\n ...options, // Spread all EventInit options\n detail\n });\n this.dispatchEvent(event);\n };\n // Helper to handle timed dispatch\n const timedDispatch = (detail) => {\n if (options?.debounce) {\n clearTimeout(timers.debounceTimeout);\n timers.debounceTimeout = setTimeout(() => doDispatch(detail), options.debounce);\n return;\n }\n if (!options?.throttle) {\n doDispatch(detail);\n return;\n }\n const now = Date.now();\n const remaining = options.throttle - (now - timers.throttleLastCall);\n if (remaining <= 0) {\n clearTimeout(timers.throttleTimeout);\n timers.throttleLastCall = now;\n doDispatch(detail);\n return;\n }\n if (!timers.throttleTimeout) {\n timers.throttleTimeout = setTimeout(() => {\n timers.throttleLastCall = Date.now();\n timers.throttleTimeout = null;\n doDispatch(detail);\n }, remaining);\n }\n };\n // Handle async methods\n if (result instanceof Promise) {\n return result.then((resolvedResult) => {\n timedDispatch(resolvedResult);\n return resolvedResult;\n });\n }\n // Sync method\n timedDispatch(result);\n return result;\n };\n };\n}\n\n/**\n * createRequestHandler — vanilla JS utility for handling @request channels\n * outside of the Snice element/controller decorator system.\n *\n * Listens for @request CustomEvents on a target element (or document),\n * performs the discovery/data handshake, and dispatches to your route map.\n *\n * @example\n * ```js\n * import { createRequestHandler } from 'snice';\n *\n * const cleanup = createRequestHandler(document, {\n * 'fetch-user': async (payload) => {\n * const res = await fetch(`/api/users/${payload.id}`);\n * return res.json();\n * },\n * 'save-settings': async (payload) => {\n * await fetch('/api/settings', { method: 'POST', body: JSON.stringify(payload) });\n * return { ok: true };\n * }\n * });\n *\n * // Later, to remove all listeners:\n * cleanup();\n * ```\n */\n/**\n * Attach request handlers to a DOM target.\n *\n * @param target The element or document to listen on. Events bubble, so an\n * ancestor element catches requests from any descendant.\n * @param routes Map of channel names to handler functions.\n * @param options Optional configuration.\n * @returns A cleanup function that removes all listeners.\n */\nfunction createRequestHandler(target, routes, options) {\n const cleanups = [];\n for (const [channelName, handler] of Object.entries(routes)) {\n const eventName = `@request/${channelName}`;\n const listener = (event) => {\n const ce = event;\n const { discovery, data, payload } = ce.detail;\n if (!options?.passive) {\n ce.preventDefault();\n ce.stopImmediatePropagation();\n ce.stopPropagation();\n }\n // Signal that we found the handler — clears discovery timeout\n discovery.resolve();\n // Execute the handler and wire up the data promise\n Promise.resolve()\n .then(() => handler(payload))\n .then((result) => data.resolve(result))\n .catch((error) => {\n data.reject(error);\n console.error(`createRequestHandler: error in \"${channelName}\" handler:`, error);\n });\n };\n target.addEventListener(eventName, listener);\n cleanups.push(() => target.removeEventListener(eventName, listener));\n }\n return () => {\n for (const fn of cleanups)\n fn();\n cleanups.length = 0;\n };\n}\n\n/**\n * Custom element readiness utilities\n * Handles waiting for custom elements to be defined with timeout warnings\n */\n/**\n * Global flag to disable custom element readiness timeout warnings\n * Set this to true in environments where slow element registration is expected\n */\nlet DISABLE_ELEMENT_READY_WARNINGS = false;\n/**\n * Set whether to disable custom element readiness timeout warnings\n */\nfunction setDisableElementReadyWarnings(value) {\n DISABLE_ELEMENT_READY_WARNINGS = value;\n}\n/**\n * Default timeout for custom element registration warning (500ms)\n */\nconst DEFAULT_WARNING_TIMEOUT = 500;\n/**\n * Wait for a custom element to be defined\n * Logs a warning if it takes longer than the warning timeout\n *\n * @param tagName - The custom element tag name\n * @param warningTimeout - Time in ms before warning (default 500ms)\n * @returns Promise that resolves when element is defined\n */\nasync function waitForElementDefined(tagName, warningTimeout = DEFAULT_WARNING_TIMEOUT) {\n // If already defined, return immediately\n if (customElements.get(tagName)) {\n return;\n }\n // Set up warning timer if not disabled\n let warningTimer = null;\n if (!DISABLE_ELEMENT_READY_WARNINGS) {\n warningTimer = setTimeout(() => {\n console.warn(`Custom element <${tagName}> is taking longer than ${warningTimeout}ms to register. ` +\n `This may indicate a missing import or circular dependency. ` +\n `Set DISABLE_ELEMENT_READY_WARNINGS=true to disable this warning.`);\n }, warningTimeout);\n }\n try {\n // Wait for element to be defined\n await customElements.whenDefined(tagName);\n }\n finally {\n // Clear warning timer\n if (warningTimer) {\n clearTimeout(warningTimer);\n }\n }\n}\n/**\n * Wait for a custom element to be defined and ready\n * First waits for the element to be registered, then waits for its ready promise\n *\n * @param element - The custom element instance\n * @param warningTimeout - Time in ms before warning about registration (default 500ms)\n * @returns Promise that resolves when element is defined and ready\n */\nasync function waitForElementReady(element, warningTimeout = DEFAULT_WARNING_TIMEOUT) {\n const tagName = element.tagName.toLowerCase();\n // Wait for element to be defined\n await waitForElementDefined(tagName, warningTimeout);\n // Wait for element's ready promise if it exists\n if ('ready' in element && typeof element.ready?.then === 'function') {\n await element.ready;\n }\n}\n/**\n * Process all custom elements in a node tree and wait for them to be ready\n * This is useful after inserting a template with custom elements\n *\n * @param node - The root node to scan for custom elements\n * @param warningTimeout - Time in ms before warning about registration (default 500ms)\n * @returns Promise that resolves when all custom elements are ready\n */\nasync function waitForAllCustomElements(node, warningTimeout = DEFAULT_WARNING_TIMEOUT) {\n const customElements = [];\n // Find all custom elements (tag names with hyphens)\n if (node instanceof Element) {\n if (node.tagName.includes('-')) {\n customElements.push(node);\n }\n // Also check in shadow DOM\n if (node.shadowRoot) {\n const shadowCustomElements = node.shadowRoot.querySelectorAll('*');\n shadowCustomElements.forEach(el => {\n if (el.tagName.includes('-')) {\n customElements.push(el);\n }\n });\n }\n }\n // If it's a DocumentFragment, check all children\n if (node instanceof DocumentFragment) {\n const elements = node.querySelectorAll('*');\n elements.forEach(el => {\n if (el.tagName.includes('-')) {\n customElements.push(el);\n }\n });\n }\n // Wait for all custom elements to be ready\n await Promise.all(customElements.map(el => waitForElementReady(el, warningTimeout)));\n}\n\n/**\n * Render debugging utilities for Snice v3.0.0\n * For testing and debugging only - not recommended for production use\n */\n/**\n * Track renders of an element using an async generator\n * Each call to tracker.next() waits for the next render to complete\n *\n * @example\n * ```typescript\n * const tracker = trackRenders(element);\n *\n * element.someProp = 'new value';\n * await tracker.next(); // Waits for render\n * // DOM is now updated\n *\n * element.someProp = 'another value';\n * await tracker.next(); // Waits for next render\n * // DOM is updated again\n * ```\n *\n * WARNING: For testing/debugging only!\n * - Do not use in production code\n * - The generator yields indefinitely - use it only in controlled test environments\n * - Each yield waits for the next render event\n */\nasync function* trackRenders(element) {\n while (true) {\n await new Promise(resolve => {\n if (!element[RENDER_CALLBACKS]) {\n element[RENDER_CALLBACKS] = [];\n }\n element[RENDER_CALLBACKS].push(resolve);\n });\n yield;\n }\n}\n\n/**\n * Method decorators for common patterns\n * @debounce, @throttle, @once, @memoize\n */\nconst DEBOUNCE_TIMERS = getSymbol('debounce-timers');\nconst THROTTLE_TIMERS = getSymbol('throttle-timers');\nconst ONCE_CALLED = getSymbol('once-called');\nconst MEMOIZE_CACHE = getSymbol('memoize-cache');\n/**\n * @debounce decorator - delays function execution until after wait time has elapsed\n * since the last invocation\n *\n * @param wait - Time to wait in milliseconds (default: 300)\n * @param options - Debounce options\n * @param options.leading - Invoke on the leading edge (default: false)\n * @param options.trailing - Invoke on the trailing edge (default: true)\n * @param options.maxWait - Maximum time to wait before invoking (default: undefined)\n *\n * @example\n * ```typescript\n * @element('search-input')\n * class SearchInput extends HTMLElement {\n * @debounce(500)\n * handleSearch(query: string) {\n * // Only called 500ms after last keystroke\n * fetch(`/api/search?q=${query}`);\n * }\n * }\n * ```\n */\nfunction debounce(wait = 300, options = {}) {\n const { leading = false, trailing = true, maxWait } = options;\n return function (originalMethod, context) {\n const methodName = context.name;\n return function (...args) {\n if (!this[DEBOUNCE_TIMERS]) {\n this[DEBOUNCE_TIMERS] = {};\n }\n const timers = this[DEBOUNCE_TIMERS];\n const timerKey = methodName;\n // Clear existing timer\n if (timers[timerKey]) {\n clearTimeout(timers[timerKey].timeout);\n }\n // Track when debounce started for maxWait\n const now = Date.now();\n const isFirstCall = !timers[timerKey];\n const startTime = isFirstCall ? now : timers[timerKey].startTime;\n // Check if maxWait exceeded\n const shouldInvokeFromMaxWait = maxWait !== undefined && now - startTime >= maxWait;\n // Leading edge invocation\n if (leading && isFirstCall) {\n const result = originalMethod.apply(this, args);\n timers[timerKey] = {\n timeout: null,\n startTime,\n lastArgs: args,\n };\n return result;\n }\n // Set new timer for trailing edge\n const timeout = setTimeout(() => {\n if (trailing || shouldInvokeFromMaxWait) {\n originalMethod.apply(this, timers[timerKey].lastArgs);\n }\n delete timers[timerKey];\n }, shouldInvokeFromMaxWait ? 0 : wait);\n timers[timerKey] = {\n timeout,\n startTime,\n lastArgs: args,\n };\n };\n };\n}\n/**\n * @throttle decorator - ensures function is called at most once per specified time period\n *\n * @param wait - Time to wait in milliseconds (default: 300)\n * @param options - Throttle options\n * @param options.leading - Invoke on the leading edge (default: true)\n * @param options.trailing - Invoke on the trailing edge (default: true)\n *\n * @example\n * ```typescript\n * @element('scroll-tracker')\n * class ScrollTracker extends HTMLElement {\n * @throttle(100)\n * handleScroll(e: Event) {\n * // Called at most once every 100ms\n * this.updateScrollPosition();\n * }\n * }\n * ```\n */\nfunction throttle(wait = 300, options = {}) {\n const { leading = true, trailing = true } = options;\n return function (originalMethod, context) {\n const methodName = context.name;\n return function (...args) {\n if (!this[THROTTLE_TIMERS]) {\n this[THROTTLE_TIMERS] = {};\n }\n const timers = this[THROTTLE_TIMERS];\n const timerKey = methodName;\n const now = Date.now();\n // First call\n if (!timers[timerKey]) {\n if (leading)\n originalMethod.apply(this, args);\n timers[timerKey] = { lastInvoke: now, timeout: null, lastArgs: args };\n if (trailing && !leading) {\n timers[timerKey].timeout = setTimeout(() => {\n originalMethod.apply(this, timers[timerKey].lastArgs);\n delete timers[timerKey];\n }, wait);\n }\n return;\n }\n // Subsequent calls\n const timeSinceLastInvoke = now - timers[timerKey].lastInvoke;\n timers[timerKey].lastArgs = args;\n if (timers[timerKey].timeout) {\n clearTimeout(timers[timerKey].timeout);\n }\n // Enough time passed — invoke immediately\n if (timeSinceLastInvoke >= wait) {\n originalMethod.apply(this, args);\n timers[timerKey].lastInvoke = now;\n return;\n }\n // Set up trailing call\n if (trailing) {\n const remaining = wait - timeSinceLastInvoke;\n timers[timerKey].timeout = setTimeout(() => {\n originalMethod.apply(this, timers[timerKey].lastArgs);\n timers[timerKey].lastInvoke = Date.now();\n timers[timerKey].timeout = null;\n }, remaining);\n }\n };\n };\n}\n/**\n * @once decorator - ensures function is only called once\n * Subsequent calls return the result of the first call\n *\n * @param perInstance - If true, function can be called once per instance (default: true)\n * If false, function can only be called once globally across all instances\n *\n * @example\n * ```typescript\n * @element('data-loader')\n * class DataLoader extends HTMLElement {\n * @once()\n * async loadData() {\n * // Only loads data once, even if called multiple times\n * const data = await fetch('/api/data');\n * return data.json();\n * }\n * }\n * ```\n */\nfunction once(perInstance = true) {\n let globalCalled = false;\n let globalResult;\n return function (originalMethod, context) {\n const methodName = context.name;\n return function (...args) {\n // Per-instance tracking\n if (perInstance) {\n if (!this[ONCE_CALLED])\n this[ONCE_CALLED] = {};\n if (!this[ONCE_CALLED][methodName]) {\n this[ONCE_CALLED][methodName] = {\n called: true,\n result: originalMethod.apply(this, args),\n };\n }\n return this[ONCE_CALLED][methodName].result;\n }\n // Global tracking\n if (!globalCalled) {\n globalCalled = true;\n globalResult = originalMethod.apply(this, args);\n }\n return globalResult;\n };\n };\n}\n/**\n * @memoize decorator - caches function results based on arguments\n * Uses JSON.stringify for argument comparison by default\n *\n * @param options - Memoization options\n * @param options.keyGenerator - Custom function to generate cache key from arguments\n * @param options.maxSize - Maximum cache size (default: 100)\n * @param options.ttl - Time to live in milliseconds (default: undefined - no expiration)\n *\n * @example\n * ```typescript\n * @element('calculator')\n * class Calculator extends HTMLElement {\n * @memoize({ maxSize: 50 })\n * fibonacci(n: number): number {\n * // Results are cached, subsequent calls with same n are instant\n * if (n <= 1) return n;\n * return this.fibonacci(n - 1) + this.fibonacci(n - 2);\n * }\n * }\n * ```\n */\nfunction memoize(options = {}) {\n const { keyGenerator = (...args) => JSON.stringify(args), maxSize = 100, ttl } = options;\n return function (originalMethod, context) {\n const methodName = context.name;\n return function (...args) {\n if (!this[MEMOIZE_CACHE]) {\n this[MEMOIZE_CACHE] = {};\n }\n if (!this[MEMOIZE_CACHE][methodName]) {\n this[MEMOIZE_CACHE][methodName] = new Map();\n }\n const cache = this[MEMOIZE_CACHE][methodName];\n const key = keyGenerator(...args);\n // Check if cached\n if (cache.has(key)) {\n const cached = cache.get(key);\n const expired = ttl !== undefined && (Date.now() - cached.timestamp) > ttl;\n if (expired) {\n cache.delete(key);\n }\n else {\n return cached.value;\n }\n }\n // Compute result\n const result = originalMethod.apply(this, args);\n // Store in cache\n cache.set(key, {\n value: result,\n timestamp: Date.now(),\n });\n // Enforce max size (LRU - delete oldest)\n if (cache.size > maxSize) {\n const firstKey = cache.keys().next().value;\n cache.delete(firstKey);\n }\n return result;\n };\n };\n}\n/**\n * Clear all debounce timers for an instance\n * Useful in cleanup/disconnectedCallback\n */\nfunction clearDebounceTimers(instance) {\n if (instance[DEBOUNCE_TIMERS]) {\n for (const timerKey in instance[DEBOUNCE_TIMERS]) {\n if (instance[DEBOUNCE_TIMERS][timerKey]?.timeout) {\n clearTimeout(instance[DEBOUNCE_TIMERS][timerKey].timeout);\n }\n }\n instance[DEBOUNCE_TIMERS] = {};\n }\n}\n/**\n * Clear all throttle timers for an instance\n * Useful in cleanup/disconnectedCallback\n */\nfunction clearThrottleTimers(instance) {\n if (instance[THROTTLE_TIMERS]) {\n for (const timerKey in instance[THROTTLE_TIMERS]) {\n if (instance[THROTTLE_TIMERS][timerKey]?.timeout) {\n clearTimeout(instance[THROTTLE_TIMERS][timerKey].timeout);\n }\n }\n instance[THROTTLE_TIMERS] = {};\n }\n}\n/**\n * Clear memoize cache for an instance\n */\nfunction clearMemoizeCache(instance, methodName) {\n if (instance[MEMOIZE_CACHE]) {\n if (methodName) {\n delete instance[MEMOIZE_CACHE][methodName];\n }\n else {\n instance[MEMOIZE_CACHE] = {};\n }\n }\n}\n/**\n * Reset once-called state for an instance\n */\nfunction resetOnce(instance, methodName) {\n if (instance[ONCE_CALLED]) {\n if (methodName) {\n delete instance[ONCE_CALLED][methodName];\n }\n else {\n instance[ONCE_CALLED] = {};\n }\n }\n}\n\n/**\n * Context-aware fetch implementation with middleware support\n *\n * @example\n * ```typescript\n * const fetcher = new ContextAwareFetcher();\n *\n * fetcher.use('request', function(request, next) {\n * const token = this.application.user?.token;\n * if (token) {\n * request.headers.set('Authorization', `Bearer ${token}`);\n * }\n * return next();\n * });\n *\n * fetcher.use('response', async function(response, next) {\n * if (!response.ok) {\n * throw new Error(`HTTP ${response.status}`);\n * }\n * return next();\n * });\n *\n * const router = Router({\n * target: '#app',\n * context: { user: null },\n * fetcher\n * });\n * ```\n */\nclass ContextAwareFetcher {\n constructor() {\n this.requestMiddlewares = [];\n this.responseMiddlewares = [];\n }\n use(type, middleware) {\n if (type === 'request') {\n this.requestMiddlewares.push(middleware);\n return;\n }\n this.responseMiddlewares.push(middleware);\n }\n /**\n * Create a fetch function bound to the given Context instance\n * @param ctx - The Context instance to bind to\n * @returns A fetch function with middleware applied\n */\n create(ctx) {\n const requestMiddlewares = this.requestMiddlewares;\n const responseMiddlewares = this.responseMiddlewares;\n const fetchFn = async function (input, init) {\n const request = new Request(input, init);\n // Request middleware chain\n let reqIndex = 0;\n const nextRequest = async () => {\n if (reqIndex < requestMiddlewares.length) {\n const middleware = requestMiddlewares[reqIndex++];\n return middleware.call(this, request, nextRequest);\n }\n // Execute actual fetch\n const response = await fetch(request);\n // Response middleware chain\n let resIndex = 0;\n const nextResponse = async () => {\n if (resIndex < responseMiddlewares.length) {\n const middleware = responseMiddlewares[resIndex++];\n return middleware.call(this, response, nextResponse);\n }\n return response;\n };\n return nextResponse();\n };\n return nextRequest();\n };\n return fetchFn.bind(ctx);\n }\n}\n\n// v3.0.0 exports\n// Auto-enable native element controllers in browser environments\nif (typeof document !== 'undefined') {\n useNativeElementControllers();\n}\n// NOTE: @on decorator works in both elements AND controllers.\n// Supports event delegation, keyboard modifiers, debounce/throttle - see docs/events.md\n// Template event syntax (@click=${handler}) is also available as an alternative.\n\nexport { Context, ContextAwareFetcher, IS_CONTROLLER_INSTANCE, Router, SimpleArray, adopted, applyElementFunctionality, clearDebounceTimers, clearMemoizeCache, clearThrottleTimers, context$1 as context, context as contextProperty, controller, createRequestHandler, css, debounce, dispatch, dispose, element, getSymbol, html, layout, memoize, moved, noChange, nothing, observe, on, once, property, query, queryAll, ready, render, request, resetOnce, respond, setDisableElementReadyWarnings, styles, throttle, trackRenders, unsafeHTML, useNativeElementControllers, waitForAllCustomElements, waitForElementDefined, waitForElementReady, watch };\n//# sourceMappingURL=index.esm.js.map\n","/*!\n * snice v4.35.1\n * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.\n * (c) 2024\n * Released under the MIT License.\n */\n// Global namespace for Snice framework\n// Ensures all registries and symbols are shared across different JS files/modules\n// Initialize the global Snice namespace on globalThis\n// This ensures all module instances share the same registry\nif (!globalThis.snice) {\n globalThis.snice = {\n controllerRegistry: new Map(),\n controllerIdCounter: 0\n };\n}\n// Helper function to get or create a global symbol\n// Symbol.for() already guarantees global uniqueness, no need for a Map cache\nfunction getSymbol(name) {\n return Symbol.for(`snice:${name}`);\n}\n\n// Central file for all symbols used in the framework\n// All symbols are stored globally to ensure consistency across modules\nconst IS_CONTROLLER_CLASS = getSymbol('is-controller-class');\nconst IS_CONTROLLER_INSTANCE = getSymbol('is-controller-instance');\nconst IS_ELEMENT_CLASS = getSymbol('is-element-class');\nconst CHANNEL_HANDLERS = getSymbol('channel-handlers');\n// Internal element state symbols\nconst READY_PROMISE = getSymbol('ready-promise');\nconst READY_RESOLVE = getSymbol('ready-resolve');\nconst RENDERED_PROMISE = getSymbol('rendered-promise');\nconst RENDERED_RESOLVE = getSymbol('rendered-resolve');\nconst CONTROLLER = getSymbol('controller');\nconst INITIALIZED = getSymbol('initialized');\n// Event handler symbols\nconst ON_HANDLERS = getSymbol('on-handlers');\n// Controller symbols\nconst CONTROLLER_KEY = getSymbol('controller-key');\nconst CONTROLLER_NAME_KEY = getSymbol('controller-name');\nconst CONTROLLER_ID = getSymbol('controller-id');\nconst CONTROLLER_OPERATIONS = getSymbol('controller-operations');\nconst NATIVE_CONTROLLER = getSymbol('native-controller');\n// Cleanup symbol - holds an object with all cleanup arrays\nconst CLEANUP = getSymbol('cleanup');\n// Property symbols\nconst PROPERTIES = getSymbol('properties');\nconst PROPERTY_VALUES = getSymbol('property-values');\nconst PRE_INIT_PROPERTY_VALUES = getSymbol('pre-init-property-values');\nconst PROPERTIES_INITIALIZED = getSymbol('properties-initialized');\nconst PROPERTY_WATCHERS = getSymbol('property-watchers');\nconst EXPLICITLY_SET_PROPERTIES = getSymbol('explicitly-set-properties');\n// Router context symbol\nconst ROUTER_CONTEXT = getSymbol('router-context');\nconst CURRENT_PAGE_MARKER = getSymbol('current-page-marker');\nconst CONTEXT_REQUEST_HANDLER = getSymbol('context-request-handler');\nconst PAGE_TRANSITION = getSymbol('page-transition');\nconst CREATED_AT = getSymbol('created-at');\n// Lifecycle symbols\nconst READY_HANDLERS = getSymbol('ready-handlers');\nconst DISPOSE_HANDLERS = getSymbol('dispose-handlers');\nconst MOVED_HANDLERS = getSymbol('moved-handlers');\nconst ADOPTED_HANDLERS = getSymbol('adopted-handlers');\n// Observer symbols\nconst OBSERVERS = getSymbol('observers');\n// Part symbols\nconst PARTS = getSymbol('parts');\nconst PART_TIMERS = getSymbol('part-timers');\n// Property setter flag (prevents attributeChangedCallback re-triggering watchers)\nconst SETTING_FROM_PROPERTY = getSymbol('setting-from-property');\n// Lifecycle callback timers\nconst MOVED_TIMERS = getSymbol('moved-timers');\nconst ADOPTED_TIMERS = getSymbol('adopted-timers');\n// Dispatch timing symbols\nconst DISPATCH_TIMERS = getSymbol('dispatch-timers');\n// Render symbols (v3.0.0)\nconst RENDER_METHOD = getSymbol('render-method');\nconst RENDER_OPTIONS = getSymbol('render-options');\nconst RENDER_INSTANCE = getSymbol('render-instance');\nconst RENDER_TIMERS = getSymbol('render-timers');\nconst RENDER_CALLBACKS = getSymbol('render-callbacks');\nconst STYLES_METHOD = getSymbol('styles-method');\nconst STYLES_APPLIED = getSymbol('styles-applied');\nconst PARENT_STYLES_METHODS = getSymbol('parent-styles-methods');\n// Navigation context symbols\nconst CONTEXT_HANDLER = getSymbol('context-handler');\nconst CONTEXT_METHOD_NAME = getSymbol('context-method-name');\nconst NAVIGATION_CONTEXT_INSTANCE = getSymbol('navigation-context-instance');\nconst REGISTERED_ELEMENTS = getSymbol('registered-elements');\nconst IS_UPDATING = getSymbol('is-updating');\nconst CONTEXT_REGISTER = getSymbol('context-register');\nconst CONTEXT_UNREGISTER = getSymbol('context-unregister');\nconst CONTEXT_NOTIFY_ELEMENT = getSymbol('context-notify-element');\nconst CONTEXT_OPTIONS = getSymbol('context-options');\nconst CONTEXT_TIMER = getSymbol('context-timer');\nconst CONTEXT_CALLED = getSymbol('context-called');\nconst CONTEXT_UPDATE = getSymbol('context-update');\n\nexport { ADOPTED_HANDLERS, ADOPTED_TIMERS, CHANNEL_HANDLERS, CLEANUP, CONTEXT_CALLED, CONTEXT_HANDLER, CONTEXT_METHOD_NAME, CONTEXT_NOTIFY_ELEMENT, CONTEXT_OPTIONS, CONTEXT_REGISTER, CONTEXT_REQUEST_HANDLER, CONTEXT_TIMER, CONTEXT_UNREGISTER, CONTEXT_UPDATE, CONTROLLER, CONTROLLER_ID, CONTROLLER_KEY, CONTROLLER_NAME_KEY, CONTROLLER_OPERATIONS, CREATED_AT, CURRENT_PAGE_MARKER, DISPATCH_TIMERS, DISPOSE_HANDLERS, EXPLICITLY_SET_PROPERTIES, INITIALIZED, IS_CONTROLLER_CLASS, IS_CONTROLLER_INSTANCE, IS_ELEMENT_CLASS, IS_UPDATING, MOVED_HANDLERS, MOVED_TIMERS, NATIVE_CONTROLLER, NAVIGATION_CONTEXT_INSTANCE, OBSERVERS, ON_HANDLERS, PAGE_TRANSITION, PARENT_STYLES_METHODS, PARTS, PART_TIMERS, PRE_INIT_PROPERTY_VALUES, PROPERTIES, PROPERTIES_INITIALIZED, PROPERTY_VALUES, PROPERTY_WATCHERS, READY_HANDLERS, READY_PROMISE, READY_RESOLVE, REGISTERED_ELEMENTS, RENDERED_PROMISE, RENDERED_RESOLVE, RENDER_CALLBACKS, RENDER_INSTANCE, RENDER_METHOD, RENDER_OPTIONS, RENDER_TIMERS, ROUTER_CONTEXT, SETTING_FROM_PROPERTY, STYLES_APPLIED, STYLES_METHOD, getSymbol };\n//# sourceMappingURL=symbols.esm.js.map\n","/*!\n * snice v4.35.1\n * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.\n * (c) 2024\n * Released under the MIT License.\n */\n/**\n * Generic transition system for animating between elements\n */\n/**\n * Parse CSS property string into an object\n */\nfunction parseStyles(styleString) {\n const styles = {};\n styleString.split(';').forEach(rule => {\n const [prop, value] = rule.split(':').map(s => s.trim());\n if (prop && value) {\n styles[prop] = value;\n }\n });\n return styles;\n}\n/**\n * Perform a transition between two elements\n */\nvar TransitionMode;\n(function (TransitionMode) {\n TransitionMode[\"SEQUENTIAL\"] = \"sequential\";\n TransitionMode[\"SIMULTANEOUS\"] = \"simultaneous\";\n})(TransitionMode || (TransitionMode = {}));\nfunction applyBaseTransitionStyles(el, isSlotted, duration, prop) {\n el.style.position = 'absolute';\n el.style.width = '100%';\n if (isSlotted) {\n el.style.height = '100%';\n el.style.transition = `opacity ${duration}ms ease-in-out`;\n return;\n }\n el.style.top = '0';\n el.style.left = '0';\n el.style.transition = `${prop} ${duration}ms ease-in-out`;\n}\nfunction resetTransitionStyles(el, isSlotted) {\n el.style.position = '';\n el.style.width = '';\n el.style.transition = '';\n if (isSlotted) {\n el.style.height = '';\n return;\n }\n el.style.top = '';\n el.style.left = '';\n}\nasync function performTransition(container, oldElement, newElement, transition = {}) {\n const outDuration = transition.outDuration || 300;\n const inDuration = transition.inDuration || 300;\n const mode = (transition.mode || 'sequential');\n const outStyles = transition.out ? parseStyles(transition.out) : { opacity: '0' };\n const inStartStyles = { opacity: '0' };\n const inEndStyles = transition.in ? parseStyles(transition.in) : { opacity: '1' };\n const containerStyle = container.style;\n const originalPosition = containerStyle.position;\n const isLayoutElement = container.tagName.includes('-') && container.shadowRoot;\n if (!isLayoutElement)\n containerStyle.position = 'relative';\n const isSlotted = oldElement.hasAttribute('slot') || newElement.hasAttribute('slot');\n applyBaseTransitionStyles(oldElement, isSlotted, outDuration, 'all');\n applyBaseTransitionStyles(newElement, isSlotted, inDuration, 'all');\n Object.assign(newElement.style, inStartStyles);\n container.appendChild(newElement);\n void newElement.offsetHeight;\n // Animate\n switch (mode) {\n case TransitionMode.SIMULTANEOUS:\n Object.assign(oldElement.style, outStyles);\n Object.assign(newElement.style, inEndStyles);\n await new Promise(resolve => setTimeout(resolve, Math.max(outDuration, inDuration)));\n break;\n case TransitionMode.SEQUENTIAL:\n Object.assign(oldElement.style, outStyles);\n await new Promise(resolve => setTimeout(resolve, outDuration));\n Object.assign(newElement.style, inEndStyles);\n await new Promise(resolve => setTimeout(resolve, inDuration));\n break;\n }\n // Cleanup\n oldElement.remove();\n resetTransitionStyles(newElement, isSlotted);\n Object.keys({ ...inStartStyles, ...inEndStyles }).forEach(prop => {\n newElement.style[prop] = '';\n });\n if (!isLayoutElement)\n containerStyle.position = originalPosition;\n}\n/**\n * Predefined transitions\n */\n// Fade transition\nconst fadeTransition = {\n name: 'fade',\n outDuration: 200,\n inDuration: 200,\n out: 'opacity: 0',\n in: 'opacity: 1',\n mode: 'simultaneous'\n};\n// Slide transition (from left)\nconst slideTransition = {\n name: 'slide',\n outDuration: 300,\n inDuration: 300,\n out: 'transform: translateX(-100%)',\n in: 'transform: translateX(0)',\n mode: 'sequential'\n};\n// Slide from right\nconst slideRightTransition = {\n name: 'slide-right',\n outDuration: 300,\n inDuration: 300,\n out: 'transform: translateX(100%)',\n in: 'transform: translateX(0)',\n mode: 'sequential'\n};\n// Slide from top\nconst slideUpTransition = {\n name: 'slide-up',\n outDuration: 300,\n inDuration: 300,\n out: 'transform: translateY(-100%)',\n in: 'transform: translateY(0)',\n mode: 'sequential'\n};\n// Slide from bottom\nconst slideDownTransition = {\n name: 'slide-down',\n outDuration: 300,\n inDuration: 300,\n out: 'transform: translateY(100%)',\n in: 'transform: translateY(0)',\n mode: 'sequential'\n};\n// Scale transition\nconst scaleTransition = {\n name: 'scale',\n outDuration: 250,\n inDuration: 250,\n out: 'transform: scale(0.9); opacity: 0',\n in: 'transform: scale(1); opacity: 1',\n mode: 'simultaneous'\n};\n// Rotate transition\nconst rotateTransition = {\n name: 'rotate',\n outDuration: 400,\n inDuration: 400,\n out: 'transform: rotate(180deg) scale(0.5); opacity: 0',\n in: 'transform: rotate(0) scale(1); opacity: 1',\n mode: 'simultaneous'\n};\n// Flip transition\nconst flipTransition = {\n name: 'flip',\n outDuration: 400,\n inDuration: 400,\n out: 'transform: rotateY(180deg); opacity: 0',\n in: 'transform: rotateY(0); opacity: 1',\n mode: 'sequential'\n};\n// Zoom transition\nconst zoomTransition = {\n name: 'zoom',\n outDuration: 300,\n inDuration: 300,\n out: 'transform: scale(2); opacity: 0',\n in: 'transform: scale(1); opacity: 1',\n mode: 'simultaneous'\n};\n// None transition (instant swap)\nconst noneTransition = {\n name: 'none',\n outDuration: 0,\n inDuration: 0,\n out: '',\n in: '',\n mode: 'simultaneous'\n};\n\nexport { fadeTransition, flipTransition, noneTransition, performTransition, rotateTransition, scaleTransition, slideDownTransition, slideRightTransition, slideTransition, slideUpTransition, zoomTransition };\n//# sourceMappingURL=transitions.esm.js.map\n"],"names":["TransitionMode"],"mappings":";;;;;;;;;IAAA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACvB,IAAI,UAAU,CAAC,KAAK,GAAG;IACvB,QAAQ,kBAAkB,EAAE,IAAI,GAAG,EAAE;IACrC,QAAQ,mBAAmB,EAAE;IAC7B,KAAK;IACL;IACA;IACA,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK;IAC9B;IACA;IACA,SAAS,SAAS,CAAC,IAAI,EAAE;IACzB,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACtC;;IAEA;IACA;IACA,MAAM,mBAAmB,GAAG,SAAS,CAAC,qBAAqB,CAAC;AACvD,UAAC,sBAAsB,GAAG,SAAS,CAAC,wBAAwB;IACjE,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACtD,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACtD;IACA,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;IAChD,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;IAChD,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC;IAC1C,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC;IAC5C;IACA,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAClD,MAAM,mBAAmB,GAAG,SAAS,CAAC,iBAAiB,CAAC;IACxD,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;IAChD,MAAM,qBAAqB,GAAG,SAAS,CAAC,uBAAuB,CAAC;IAChE,MAAM,iBAAiB,GAAG,SAAS,CAAC,mBAAmB,CAAC;IACxD;IACA,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;IACpC;IACA,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC;IAC1C,MAAM,eAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC;IACpD,MAAM,wBAAwB,GAAG,SAAS,CAAC,0BAA0B,CAAC;IACtE,MAAM,sBAAsB,GAAG,SAAS,CAAC,wBAAwB,CAAC;IAClE,MAAM,iBAAiB,GAAG,SAAS,CAAC,mBAAmB,CAAC;IACxD,MAAM,yBAAyB,GAAG,SAAS,CAAC,2BAA2B,CAAC;IACxE;IACA,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAClD,MAAM,eAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC;IACpD,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC;IAC1C;IACA,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAClD,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACtD,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAClD,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACtD;IACA,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC;IACxC;IACA,MAAM,qBAAqB,GAAG,SAAS,CAAC,uBAAuB,CAAC;IAChE;IACA,MAAM,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC;IAC9C,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAClD;IACA,MAAM,eAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC;IACpD;IACA,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;IAChD,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAClD,MAAM,eAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC;IACpD,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;IAChD,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACtD,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;IAChD,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAClD,MAAM,qBAAqB,GAAG,SAAS,CAAC,uBAAuB,CAAC;IAChE;IACA,MAAM,eAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC;IACpD,MAAM,2BAA2B,GAAG,SAAS,CAAC,6BAA6B,CAAC;IAC5E,MAAM,mBAAmB,GAAG,SAAS,CAAC,qBAAqB,CAAC;IAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC;IAC5C,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACtD,MAAM,kBAAkB,GAAG,SAAS,CAAC,oBAAoB,CAAC;IAC1D,MAAM,sBAAsB,GAAG,SAAS,CAAC,wBAAwB,CAAC;IAClE,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;IAChD,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAClD,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;;IAElD;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,WAAW,CAAC;IAClB,IAAI,SAAS,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE;IACpC;IACA;IACA;IACA,IAAI,OAAO,SAAS,CAAC,GAAG,EAAE;IAC1B,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IAC/B,YAAY,OAAO,EAAE;IACrB,QAAQ,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI;IAC/B,YAAY,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IAC1C;IACA,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;IAC1D,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,kDAAkD,EAAE,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3H,gBAAgB;IAChB,gBAAgB,OAAO,IAAI;IAC3B,YAAY;IACZ,iBAAiB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;IAC5E,gBAAgB,OAAO,MAAM,CAAC,IAAI,CAAC;IACnC,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,kEAAkE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;IACnH,YAAY;IACZ,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;IACtC,IAAI;IACJ;IACA;IACA;IACA,IAAI,OAAO,KAAK,CAAC,GAAG,EAAE;IACtB,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;IAC7C,YAAY,OAAO,EAAE;IACrB;IACA;IACA,QAAQ,IAAI,GAAG,KAAK,EAAE;IACtB,YAAY,OAAO,EAAE;IACrB,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI;IAC5D;IACA,YAAY,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC5C,gBAAgB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;IACxC,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC/B,oBAAoB,OAAO,GAAG;IAC9B,YAAY;IACZ;IACA,YAAY,IAAI,IAAI,KAAK,MAAM;IAC/B,gBAAgB,OAAO,IAAI;IAC3B,YAAY,IAAI,IAAI,KAAK,OAAO;IAChC,gBAAgB,OAAO,KAAK;IAC5B;IACA,YAAY,OAAO,IAAI;IACvB,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;;IAEA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;IACd;IACA;IACA,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC;IAC3E;IACA,IAAI,gBAAgB,GAAG,CAAC;IACxB;IACA;IACA;IACA,MAAM,OAAO,CAAC;IACd,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,OAAO,EAAE;IAC3F,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,EAAE;IAChC,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;IAC5B,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK;IACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,gBAAgB,EAAE;IACpC,QAAQ,IAAI,CAAC,WAAW,GAAG,OAAO;IAClC,QAAQ,IAAI,CAAC,UAAU,GAAG;IAC1B,YAAY,QAAQ;IACpB,YAAY,KAAK,EAAE,YAAY;IAC/B,YAAY,MAAM,EAAE;IACpB,SAAS;IACT;IACA,QAAQ,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;IAC7D,YAAY,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7C,QAAQ;IACR,aAAa,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;IAC9C,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC,QAAQ;IACR,aAAa;IACb,YAAY,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;IAChE,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,EAAE,EAAE,GAAG,mBAAmB,EAAE,EAAE,GAAG,uBAAuB,EAAE,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE;IACxH,QAAQ,IAAI,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC;IAC1D,QAAQ,IAAI,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;IAClD,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE;IAClC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACjD,QAAQ,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACrD,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE;IACnE,QAAQ,IAAI,CAAC,WAAW,GAAG,OAAO;IAClC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ;IAC3C,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,YAAY;IAC5C,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,WAAW;IAC5C,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,MAAM,GAAG;IACb,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,IAAI;IACJ,IAAI,MAAM,GAAG;IACb;IACA,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;IAC/B,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI;IAChC;IACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;IACzD,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC;IACrD,QAAQ,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;IAC3C,YAAY,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;IACvD,YAAY,IAAI,UAAU,IAAI,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;IACzE,gBAAgB,IAAI;IACpB,oBAAoB,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;IAC7C,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,EAAE;IAC9B;IACA,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACxF,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK;IACjC,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE;IACtC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;IACjE,QAAQ,IAAI,UAAU,IAAI,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;IACrE,YAAY,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;IACrC,QAAQ;IACR,IAAI;IACJ;;IAEA;IACA;IACA;IACA;IACA;IACA,SAAS,UAAU,CAAC,YAAY,EAAE;IAClC,IAAI,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;IAC7D,QAAQ,OAAO,SAAS;IACxB,IAAI;IACJ,IAAI,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;IAC1C,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;IAC1C,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE;IAC3C,QAAQ,OAAO,OAAO;IACtB,IAAI;IACJ,IAAI,IAAI,YAAY,YAAY,IAAI,EAAE;IACtC,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;IAC1C,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;IACrC,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,OAAO,SAAS;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE;IAC1F;IACA,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,IAAI,UAAU,CAAC,YAAY,CAAC;IACtE,IAAI,QAAQ,SAAS;IACrB,QAAQ,KAAK,OAAO;IACpB;IACA;IACA;IACA;IACA;IACA;IACA,YAAY,IAAI,cAAc,KAAK,IAAI;IACvC,gBAAgB,OAAO,KAAK,CAAC;IAC7B,YAAY,IAAI,cAAc,KAAK,OAAO;IAC1C,gBAAgB,OAAO,KAAK,CAAC;IAC7B;IACA,YAAY,OAAO,IAAI;IACvB,QAAQ,KAAK,MAAM;IACnB,YAAY,OAAO,cAAc,KAAK,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI;IAC1E,QAAQ,KAAK,MAAM;IACnB,YAAY,OAAO,cAAc;IACjC,QAAQ,KAAK,IAAI;IACjB,YAAY,OAAO,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI;IACnE,QAAQ,KAAK,MAAM;IACnB,YAAY,IAAI,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IAChE,gBAAgB,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,OAAO,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI;IACrE,YAAY;IACZ,QAAQ,KAAK,WAAW;IACxB,YAAY,OAAO,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC;IACpD,QAAQ,KAAK,KAAK;IAClB,YAAY,IAAI;IAChB,gBAAgB,OAAO,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE;IACvE,YAAY;IACZ,YAAY,MAAM;IAClB,gBAAgB,OAAO,EAAE;IACzB,YAAY;IACZ,QAAQ,KAAK,MAAM;IACnB,YAAY,IAAI;IAChB,gBAAgB,OAAO,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE;IACvE,YAAY;IACZ,YAAY,MAAM;IAClB,gBAAgB,OAAO,EAAE;IACzB,YAAY;IACZ,QAAQ;IACR;IACA,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI,EAAE;IAC7E,gBAAgB,OAAO,MAAM,CAAC,cAAc,CAAC;IAC7C,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,OAAO,cAAc;IACrC,YAAY;IACZ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE;IACrC,IAAI,OAAO,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE;IACvF;IACA;IACA;IACA;IACA,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACjB,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE;IAC5B,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC;IACnB;IACA;IACA;IACA;IACA,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACjB,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;IACrB,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC;IACnB;IACA;IACA;IACA;IACA,SAAS,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC7E,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB,CAAC;IACnD,IAAI,IAAI,CAAC,QAAQ;IACjB,QAAQ;IACR,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IAChC,QAAQ,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IAChD,YAAY,IAAI;IAChB,gBAAgB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACrE,YAAY;IACZ,YAAY,OAAO,CAAC,EAAE;IACtB,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1F,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAC3B,QAAQ,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAC3C,YAAY,IAAI;IAChB,gBAAgB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACrE,YAAY;IACZ,YAAY,OAAO,CAAC,EAAE;IACtB,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA,SAAS,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE;IACpC,IAAI,IAAI,KAAK,GAAG,IAAI;IACpB,IAAI,OAAO,UAAU,GAAG,IAAI,EAAE;IAC9B,QAAQ,IAAI,KAAK,KAAK,IAAI;IAC1B,YAAY,YAAY,CAAC,KAAK,CAAC;IAC/B,QAAQ,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAChF,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,SAAS,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE;IACpC,IAAI,IAAI,QAAQ,GAAG,CAAC;IACpB,IAAI,IAAI,KAAK,GAAG,IAAI;IACpB,IAAI,OAAO,UAAU,GAAG,IAAI,EAAE;IAC9B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9B,QAAQ,MAAM,SAAS,GAAG,KAAK,IAAI,GAAG,GAAG,QAAQ,CAAC;IAClD,QAAQ,IAAI,SAAS,IAAI,CAAC,EAAE;IAC5B,YAAY,IAAI,KAAK,EAAE;IACvB,gBAAgB,YAAY,CAAC,KAAK,CAAC;IACnC,gBAAgB,KAAK,GAAG,IAAI;IAC5B,YAAY;IACZ,YAAY,QAAQ,GAAG,GAAG;IAC1B,YAAY,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IACvC,QAAQ;IACR,QAAQ,IAAI,CAAC,KAAK,EAAE;IACpB,YAAY,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;IAC/G,QAAQ;IACR,IAAI,CAAC;IACL;IACA,SAAS,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE;IAChE;IACA,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK;IAChE,SAAS,eAAe,EAAE,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;IAC/F,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA,IAAI,IAAI,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE;IAChD,QAAQ,OAAO,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC;IACjF,IAAI;IACJ;IACA,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,IAAI,UAAU,CAAC,YAAY,CAAC;IACtE,IAAI,QAAQ,SAAS;IACrB,QAAQ,KAAK,OAAO;IACpB;IACA;IACA,YAAY,OAAO,MAAM;IACzB,QAAQ,KAAK,IAAI;IACjB,YAAY,OAAO,KAAK,YAAY,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAC9E,QAAQ,KAAK,MAAM;IACnB,YAAY,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;IACrF,QAAQ,KAAK,WAAW;IACxB,YAAY,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACtF,QAAQ,KAAK,KAAK;IAClB,YAAY,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IAC/E,QAAQ,KAAK,MAAM;IACnB,YAAY,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACtG,QAAQ;IACR,YAAY,OAAO,MAAM,CAAC,KAAK,CAAC;IAChC;IACA;;IAEA;IACA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE;IACjC;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,OAAO,CAAC,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE;IAC5D;IACA,IAAI,IAAI,QAAQ;IAChB,IAAI,IAAI,IAAI;IACZ,IAAI,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;IAC/C,QAAQ,QAAQ,GAAG,iBAAiB;IACpC,QAAQ,IAAI,GAAG,OAAO;IACtB,IAAI;IACJ,SAAS;IACT,QAAQ,QAAQ,GAAG,SAAS;IAC5B,QAAQ,IAAI,GAAG,iBAAiB;IAChC,IAAI;IACJ,IAAI,OAAO,UAAU,MAAM,EAAE,OAAO,EAAE;IACtC,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI;IACxC,QAAQ,OAAO,CAAC,cAAc,CAAC,YAAY;IAC3C,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;IAChD,YAAY,IAAI,CAAC,WAAW,CAAC,gBAAgB;IAC7C,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE;IACxD,YAAY,IAAI,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;IACxD,gBAAgB;IAChB,YAAY,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;IACpD,YAAY,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;IACzC,gBAAgB,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE;IAC3C,YAAY;IACZ,YAAY,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,GAAG,CAAC,aAAa,CAAC;IACjG,YAAY,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE;IACvD,gBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;IACpE,gBAAgB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;IACrD,gBAAgB,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;IAC5C,oBAAoB,IAAI;IACxB,oBAAoB,MAAM,EAAE,SAAS;IACrC,oBAAoB,QAAQ;IAC5B,oBAAoB,UAAU,EAAE,WAAW;IAC3C,oBAAoB,MAAM,EAAE,MAAM;IAClC,oBAAoB,OAAO,EAAE;IAC7B,iBAAiB,CAAC;IAClB,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI,CAAC;IACL;IACA;IACA,SAAS,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;IAC3C,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC;IACrD,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;IAC3E,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;IAC5B,QAAQ,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IACvE,IAAI;IACJ,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE;IAC3C,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE;IACxC,IAAI;IACJ,IAAI,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;IACtC,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrD;IACA,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE;IAC3C,cAAc,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ;IAC/D,cAAc,MAAM;IACpB,QAAQ,QAAQ,QAAQ,CAAC,IAAI;IAC7B,YAAY,KAAK,cAAc;IAC/B,gBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAChF,gBAAgB;IAChB,YAAY,KAAK,QAAQ;IACzB,gBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC1E,gBAAgB;IAChB,YAAY,KAAK,OAAO;IACxB,gBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC9E,gBAAgB;IAChB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC5E,gBAAgB;IAChB,YAAY;IACZ,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE;IACA,IAAI;IACJ;IACA,SAAS,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC1E,IAAI,MAAM,OAAO,GAAG;IACpB,QAAQ,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC;IACnD,QAAQ,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,IAAI,KAAK;IACzD,QAAQ,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,IAAI;IACxC,KAAK;IACL;IACA,IAAI,MAAM,eAAe,GAAG,CAAC,OAAO,KAAK;IACzC,QAAQ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IACrC,YAAY,IAAI;IAChB,gBAAgB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC9C,gBAAgB,IAAI,MAAM,KAAK,KAAK,IAAI,EAAE,EAAE;IAC5C,oBAAoB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;IAC9C,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,KAAK,EAAE;IAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,+BAA+B,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAC9F,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC;IACL,IAAI,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE;IACrD,QAAQ,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC;IACjF,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,eAAe,EAAE,OAAO,CAAC;IACjE;IACA,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC;IAC7B,UAAU,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;IAClF,UAAU,CAAC,OAAO,CAAC;IACnB;IACA,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD;IACA,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;IAC3C,QAAQ,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvD;IACA,QAAQ,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;IAC3C,YAAY,EAAE,CAAC,UAAU,EAAE;IAC3B,QAAQ;IACR,IAAI,CAAC,CAAC;IACN;IACA,SAAS,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACpE,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,aAAa;IACtD;IACA,IAAI,MAAM,eAAe,GAAG,CAAC,OAAO,KAAK;IACzC,QAAQ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IACrC,YAAY,IAAI;IAChB,gBAAgB,QAAQ,CAAC,KAAK,CAAC;IAC/B,YAAY;IACZ,YAAY,OAAO,KAAK,EAAE;IAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,yBAAyB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACxF,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC;IACL;IACA,IAAI,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;IAC/C,QAAQ,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC;IAC3E,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,eAAe,CAAC;IAClD;IACA,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC;IAC7B,UAAU,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;IAClF,UAAU,CAAC,OAAO,CAAC;IACnB;IACA,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI;IAC9B,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC;IACnC,IAAI,CAAC,CAAC;IACN;IACA,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;IAC3C,QAAQ,EAAE,CAAC,UAAU,EAAE;IACvB,IAAI,CAAC,CAAC;IACN;IACA,SAAS,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACzE;IACA,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;IACtC,IAAI,IAAI,CAAC,UAAU,EAAE;IACrB,QAAQ,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC;IACpE,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;IAC7C,IAAI,IAAI,CAAC,GAAG,EAAE;IACd,QAAQ,IAAI;IACZ,YAAY,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;IAC/C,YAAY,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;IAChD,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC;IACtE,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK;IACvC,QAAQ,IAAI;IACZ,YAAY,QAAQ,CAAC,SAAS,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACxE,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,8BAA8B,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACzF,QAAQ;IACR,IAAI,CAAC;IACL;IACA,IAAI,eAAe,CAAC,GAAG,CAAC;IACxB;IACA,IAAI,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC;IACnD;IACA,IAAI,IAAI,GAAG,CAAC,gBAAgB,EAAE;IAC9B,QAAQ,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACrD,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;IAC/C,YAAY,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC5D,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,SAAS;IACT;IACA,QAAQ,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC;IACtC,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;IAC/C,YAAY,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC;IAC7C,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA,SAAS,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACtE;IACA;IACA,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IAC5C,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW;IAChD,IAAI,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC;IAClC;IACA,IAAI,MAAM,OAAO,GAAG,EAAE;IACtB,IAAI,QAAQ,YAAY;IACxB,QAAQ,KAAK,WAAW;IACxB,YAAY,OAAO,CAAC,SAAS,GAAG,IAAI;IACpC,YAAY;IACZ,QAAQ,KAAK,YAAY;IACzB,YAAY,OAAO,CAAC,UAAU,GAAG,IAAI;IACrC,YAAY,IAAI,aAAa,EAAE;IAC/B,gBAAgB,OAAO,CAAC,eAAe,GAAG,CAAC,aAAa,CAAC;IACzD,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC,CAAC;IAClE,YAAY;IACZ;IACA;IACA,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;IACnC,QAAQ,OAAO,CAAC,OAAO,GAAG,IAAI;IAC9B;IACA,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE;IACvC,YAAY,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC;IAC9E,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,MAAM,gBAAgB,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;IACvF,IAAI,MAAM,eAAe,GAAG,CAAC,SAAS,KAAK;IAC3C,QAAQ,IAAI;IACZ,YAAY,IAAI,CAAC,gBAAgB,EAAE;IACnC,gBAAgB,QAAQ,CAAC,SAAS,CAAC;IACnC,gBAAgB;IAChB,YAAY;IACZ,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ;IACtD,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO;IACtD,YAAY,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,IAAI;IAC1D,gBAAgB,IAAI,KAAK,GAAG,CAAC;IAC7B,gBAAgB,IAAI,OAAO,GAAG,QAAQ,CAAC,MAAM;IAC7C,gBAAgB,OAAO,OAAO,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,GAAG,QAAQ,EAAE;IACxE,oBAAoB,OAAO,GAAG,OAAO,CAAC,UAAU;IAChD,oBAAoB,KAAK,EAAE;IAC3B,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,GAAG,QAAQ;IACvC,YAAY,CAAC,CAAC;IACd,YAAY,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;IACnC,gBAAgB,QAAQ,CAAC,QAAQ,CAAC;IAClC,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,2BAA2B,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACtF,QAAQ;IACR,IAAI,CAAC;IACL;IACA,IAAI,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAAC,eAAe,CAAC;IACpD;IACA,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,sBAAsB,CAAC,KAAK,IAAI;IAClE;IACA;IACA;IACA,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC;IAC7B,UAAU,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;IAClF,UAAU,YAAY,IAAI,OAAO,CAAC;IAClC,cAAc,CAAC,OAAO,CAAC,UAAU;IACjC,cAAc,CAAC,OAAO,CAAC;IACvB;IACA,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI;IAC9B,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;IACnC,IAAI,CAAC,CAAC;IACN;IACA,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;IAC3C,QAAQ,EAAE,CAAC,UAAU,EAAE;IACvB,IAAI,CAAC,CAAC;IACN;IACA;IACA,SAAS,gBAAgB,CAAC,QAAQ,EAAE;IACpC,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE;IACtC,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE;IAC3D,YAAY,OAAO,EAAE;IACrB,QAAQ;IACR,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE;IACxC,IAAI;IACJ;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE;IACvC,IAAI,OAAO,UAAU,cAAc,EAAE,QAAQ,EAAE;IAC/C;IACA,QAAQ,IAAI,eAAe;IAC3B,QAAQ,IAAI,gBAAgB,GAAG,CAAC;IAChC,QAAQ,IAAI,eAAe;IAC3B,QAAQ,OAAO,gBAAgB,GAAG,IAAI,EAAE;IACxC,YAAY,MAAM,aAAa,GAAG,YAAY;IAC9C;IACA,gBAAgB,MAAM,eAAe,GAAG,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC;IACnE,gBAAgB,MAAM,gBAAgB,GAAG,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC;IACzE;IACA,gBAAgB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IAClE;IACA,gBAAgB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE;IACvE,gBAAgB,IAAI,IAAI,EAAE;IAC1B;IACA,oBAAoB,OAAO,OAAO;IAClC,gBAAgB;IAChB;IACA,gBAAgB,IAAI,WAAW;IAC/B,gBAAgB,IAAI,UAAU;IAC9B,gBAAgB,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IACrE,oBAAoB,WAAW,GAAG,OAAO;IACzC,oBAAoB,UAAU,GAAG,MAAM;IACvC,gBAAgB,CAAC,CAAC;IAClB;IACA,gBAAgB,IAAI,gBAAgB;IACpC,gBAAgB,IAAI,eAAe;IACnC,gBAAgB,IAAI,kBAAkB;IACtC,gBAAgB,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAC1E,oBAAoB,gBAAgB,GAAG,OAAO;IAC9C,oBAAoB,eAAe,GAAG,MAAM;IAC5C,oBAAoB,kBAAkB,GAAG,UAAU,CAAC,MAAM;IAC1D,wBAAwB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9H,oBAAoB,CAAC,EAAE,gBAAgB,CAAC;IACxC,gBAAgB,CAAC,CAAC;IAClB;IACA,gBAAgB,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3D,gBAAgB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE;IACzD,oBAAoB,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI;IACpF,oBAAoB,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,KAAK;IAC5D,oBAAoB,QAAQ,EAAE,IAAI;IAClC,oBAAoB,MAAM,EAAE;IAC5B,wBAAwB,OAAO;IAC/B,wBAAwB,SAAS,EAAE;IACnC,4BAA4B,OAAO,EAAE,MAAM;IAC3C,gCAAgC,YAAY,CAAC,kBAAkB,CAAC;IAChE,gCAAgC,gBAAgB,EAAE;IAClD,4BAA4B,CAAC;IAC7B,4BAA4B,MAAM,EAAE;IACpC,yBAAyB;IACzB,wBAAwB,IAAI,EAAE;IAC9B,4BAA4B,OAAO,EAAE,WAAW;IAChD,4BAA4B,MAAM,EAAE;IACpC;IACA;IACA,iBAAiB,CAAC;IAClB;IACA,gBAAgB,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,IAAI;IAC1E,gBAAgB,MAAM,UAAU,GAAG,YAAY,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;IACrF,gBAAgB,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;IAC/C,gBAAgB,IAAI;IACpB;IACA,oBAAoB,MAAM,gBAAgB;IAC1C;IACA;IACA,oBAAoB,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM;IAC/D,wBAAwB,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,kBAAkB,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9G,oBAAoB,CAAC,EAAE,eAAe,CAAC;IACvC,oBAAoB,MAAM,QAAQ,GAAG,MAAM,WAAW;IACtD,oBAAoB,YAAY,CAAC,iBAAiB,CAAC;IACnD;IACA,oBAAoB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChF,oBAAoB,OAAO,UAAU;IACrC,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,EAAE;IAC9B;IACA,oBAAoB,IAAI;IACxB,wBAAwB,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;IACpD,oBAAoB;IACpB,oBAAoB,OAAO,cAAc,EAAE;IAC3C,wBAAwB,MAAM,cAAc;IAC5C,oBAAoB;IACpB,gBAAgB;IAChB,YAAY,CAAC,CAAC;IACd;IACA,YAAY,IAAI,OAAO,EAAE,QAAQ,EAAE;IACnC,gBAAgB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IACxD,oBAAoB,YAAY,CAAC,eAAe,CAAC;IACjD,oBAAoB,eAAe,GAAG,UAAU,CAAC,YAAY;IAC7D,wBAAwB,IAAI;IAC5B,4BAA4B,OAAO,CAAC,MAAM,aAAa,EAAE,CAAC;IAC1D,wBAAwB;IACxB,wBAAwB,OAAO,KAAK,EAAE;IACtC,4BAA4B,MAAM,CAAC,KAAK,CAAC;IACzC,wBAAwB;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IACxC,gBAAgB,CAAC,CAAC;IAClB,YAAY;IACZ;IACA,YAAY,IAAI,CAAC,OAAO,EAAE,QAAQ;IAClC,gBAAgB,OAAO,aAAa,EAAE;IACtC;IACA,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAClC,YAAY,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,GAAG,gBAAgB,CAAC;IACzE,YAAY,IAAI,SAAS,IAAI,CAAC,EAAE;IAChC,gBAAgB,YAAY,CAAC,eAAe,CAAC;IAC7C,gBAAgB,gBAAgB,GAAG,GAAG;IACtC,gBAAgB,OAAO,aAAa,EAAE;IACtC,YAAY;IACZ;IACA,YAAY,IAAI,eAAe;IAC/B,gBAAgB,OAAO,OAAO,CAAC,OAAO,EAAE;IACxC;IACA,YAAY,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IACpD,gBAAgB,eAAe,GAAG,UAAU,CAAC,YAAY;IACzD,oBAAoB,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE;IACjD,oBAAoB,eAAe,GAAG,IAAI;IAC1C,oBAAoB,IAAI;IACxB,wBAAwB,OAAO,CAAC,MAAM,aAAa,EAAE,CAAC;IACtD,oBAAoB;IACpB,oBAAoB,OAAO,KAAK,EAAE;IAClC,wBAAwB,MAAM,CAAC,KAAK,CAAC;IACrC,oBAAoB;IACpB,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE;IACvC,IAAI,OAAO,UAAU,MAAM,EAAE,OAAO,EAAE;IACtC,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI;IACxC,QAAQ,OAAO,CAAC,cAAc,CAAC,YAAY;IAC3C,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;IAChD,YAAY,IAAI,CAAC,WAAW,CAAC,gBAAgB;IAC7C,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE;IACxD,YAAY,IAAI,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;IACxD,gBAAgB;IAChB,YAAY,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;IACpD,YAAY,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE;IAChD,gBAAgB,WAAW,CAAC,gBAAgB,CAAC,GAAG,EAAE;IAClD,YAAY;IACZ,YAAY,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;IAC/C,gBAAgB,WAAW,EAAE,WAAW;IACxC,gBAAgB,UAAU,EAAE,WAAW;IACvC,gBAAgB,MAAM,EAAE,MAAM;IAC9B,gBAAgB,OAAO,EAAE;IACzB,aAAa,CAAC;IACd,QAAQ,CAAC,CAAC;IACV,IAAI,CAAC;IACL;IACA;IACA,SAAS,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE;IAClD,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC;IAC3D,IAAI,IAAI,CAAC,QAAQ;IACjB,QAAQ;IACR;IACA;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;IAC5B,QAAQ,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxD,IAAI;IACJ,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACpC,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzD,QAAQ,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D;IACA,QAAQ,IAAI,eAAe;IAC3B,QAAQ,IAAI,gBAAgB,GAAG,CAAC;IAChC,QAAQ,IAAI,eAAe;IAC3B;IACA,QAAQ,MAAM,iBAAiB,GAAG,CAAC,cAAc,KAAK;IACtD,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE;IAC3C,gBAAgB,OAAO,CAAC,GAAG,IAAI,KAAK,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IACrE,oBAAoB,YAAY,CAAC,eAAe,CAAC;IACjD,oBAAoB,eAAe,GAAG,UAAU,CAAC,YAAY;IAC7D,wBAAwB,IAAI;IAC5B,4BAA4B,OAAO,CAAC,MAAM,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;IAClE,wBAAwB;IACxB,wBAAwB,OAAO,KAAK,EAAE;IACtC,4BAA4B,MAAM,CAAC,KAAK,CAAC;IACzC,wBAAwB;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAChD,gBAAgB,CAAC,CAAC;IAClB,YAAY;IACZ,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ;IAC1C,gBAAgB,OAAO,cAAc;IACrC,YAAY,OAAO,CAAC,GAAG,IAAI,KAAK;IAChC,gBAAgB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACtC,gBAAgB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,GAAG,gBAAgB,CAAC;IACrF,gBAAgB,IAAI,SAAS,IAAI,CAAC,EAAE;IACpC,oBAAoB,YAAY,CAAC,eAAe,CAAC;IACjD,oBAAoB,gBAAgB,GAAG,GAAG;IAC1C,oBAAoB,OAAO,cAAc,CAAC,GAAG,IAAI,CAAC;IAClD,gBAAgB;IAChB,gBAAgB,IAAI,eAAe;IACnC,oBAAoB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;IACrD,gBAAgB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IACxD,oBAAoB,eAAe,GAAG,UAAU,CAAC,YAAY;IAC7D,wBAAwB,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE;IACrD,wBAAwB,eAAe,GAAG,IAAI;IAC9C,wBAAwB,IAAI;IAC5B,4BAA4B,OAAO,CAAC,MAAM,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;IAClE,wBAAwB;IACxB,wBAAwB,OAAO,KAAK,EAAE;IACtC,4BAA4B,MAAM,CAAC,KAAK,CAAC;IACzC,wBAAwB;IACxB,oBAAoB,CAAC,EAAE,SAAS,CAAC;IACjC,gBAAgB,CAAC,CAAC;IAClB,YAAY,CAAC;IACb,QAAQ,CAAC;IACT,QAAQ,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC;IAC1D;IACA,QAAQ,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK;IAC3C;IACA,YAAY,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM;IAC7D;IACA,YAAY,KAAK,CAAC,cAAc,EAAE;IAClC,YAAY,KAAK,CAAC,wBAAwB,EAAE;IAC5C,YAAY,KAAK,CAAC,eAAe,EAAE;IACnC;IACA,YAAY,SAAS,CAAC,OAAO,EAAE;IAC/B;IACA,YAAY,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;IAChD,iBAAiB,IAAI,CAAC,MAAM,IAAI;IAChC,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,YAAY,CAAC;IACb,iBAAiB,KAAK,CAAC,KAAK,IAAI;IAChC,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACxF,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC;IACT,QAAQ,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC;IAC5D,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;IAC9C,YAAY,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC;IACnE,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA,SAAS,uBAAuB,CAAC,QAAQ,EAAE;IAC3C,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE;IACrC,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;IAC1D,YAAY,OAAO,EAAE;IACrB,QAAQ;IACR,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,EAAE;IACvC,IAAI;IACJ;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACjD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE;IAClC,IAAI,OAAO;IACX,QAAQ,UAAU,EAAE,WAAW;IAC/B,QAAQ,OAAO;IACf,QAAQ;IACR,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE;IACjC;IACA,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAC5B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC5C,QAAQ,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI;IACJ,IAAI,MAAM,MAAM,GAAG;IACnB,QAAQ,UAAU,EAAE,UAAU;IAC9B,QAAQ;IACR,KAAK;IACL;IACA;IACA,IAAI,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,oBAAoB,IAAI,QAAQ,CAAC,SAAS,EAAE;IAC5F,QAAQ,IAAI;IACZ,YAAY,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE;IAC7C,YAAY,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;IACtC,YAAY,MAAM,CAAC,UAAU,GAAG,KAAK;IACrC,QAAQ;IACR,QAAQ,OAAO,CAAC,EAAE;IAClB;IACA,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,MAAM;IACjB;IACA;IACA;IACA;IACA,SAAS,gBAAgB,CAAC,KAAK,EAAE;IACjC,IAAI,OAAO,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW;IACpD;IACA;IACA;IACA;IACA,SAAS,WAAW,CAAC,KAAK,EAAE;IAC5B,IAAI,OAAO,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU;IACnD;IACA;IACA;IACA;IACA;IACA;AACK,UAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe;IAC1C;IACA;IACA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACnD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,UAAU,CAAC,IAAI,EAAE;IAC1B,IAAI,OAAO;IACX,QAAQ,UAAU,EAAE,WAAW;IAC/B,QAAQ;IACR,KAAK;IACL;IACA;IACA;IACA;IACA,SAAS,YAAY,CAAC,KAAK,EAAE;IAC7B,IAAI,OAAO,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW;IACpD;;IAEA;IACA;IACA,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,GAAG,GAAG,MAAM;IAChC,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC3C;IACA,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE;IACnC;IACA,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;IAC7C;AACK,UAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB;IAC7C;IACA;IACA;IACA,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;IAC3G;IACA;IACA;IACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU;IACpG;IACA;IACA;IACA,MAAM,QAAQ,CAAC;IACf,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;IACpD,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;IACvB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC;IAC3I,QAAQ,IAAI,SAAS,GAAG,CAAC;IACzB,QAAQ,MAAM,aAAa,GAAG,EAAE;IAChC,QAAQ,IAAI,IAAI;IAChB,QAAQ,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE;IACpD,YAAY,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;IACrD,gBAAgB,MAAM,OAAO,GAAG,IAAI;IACpC,gBAAgB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;IAC7D;IACA;IACA;IACA,gBAAgB,IAAI,OAAO,KAAK,IAAI,EAAE;IACtC;IACA,oBAAoB,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;IACnE,oBAAoB,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IACjE;IACA,wBAAwB,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;IACxD,wBAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACxC,4BAA4B,IAAI,EAAE,gBAAgB;IAClD,4BAA4B,KAAK,EAAE,SAAS,EAAE;IAC9C,4BAA4B,OAAO;IACnC,yBAAyB,CAAC;IAC1B;IACA,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;IAChB;IACA,gBAAgB,IAAI,OAAO,KAAK,MAAM,EAAE;IACxC;IACA,oBAAoB,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;IACnE,oBAAoB,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IACjE;IACA,wBAAwB,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;IACxD,wBAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACxC,4BAA4B,IAAI,EAAE,kBAAkB;IACpD,4BAA4B,KAAK,EAAE,SAAS,EAAE;IAC9C,4BAA4B,OAAO;IACnC,yBAAyB,CAAC;IAC1B;IACA,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE,EAAE;IAC7C,oBAAoB,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU;IACzD,oBAAoB,MAAM,aAAa,GAAG,EAAE;IAC5C,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChE,wBAAwB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;IAClD,wBAAwB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;IAChD;IACA,wBAAwB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IACpD,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IACpD;IACA,4BAA4B,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI;IAC1F;IACA,4BAA4B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IACnE;IACA,4BAA4B,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;IAC1E,4BAA4B,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;IAC/D;IACA,gCAAgC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAChD,oCAAoC,IAAI,EAAE,OAAO;IACjD,oCAAoC,KAAK,EAAE,SAAS;IACpD,oCAAoC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,oCAAoC;IACpC,iCAAiC,CAAC;IAClC,gCAAgC,SAAS,IAAI,CAAC;IAC9C,4BAA4B;IAC5B,iCAAiC,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IACnE;IACA,gCAAgC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAChD,oCAAoC,IAAI,EAAE,OAAO;IACjD,oCAAoC,KAAK,EAAE,SAAS;IACpD,oCAAoC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,oCAAoC;IACpC,iCAAiC,CAAC;IAClC,gCAAgC,SAAS,IAAI,CAAC;IAC9C,4BAA4B;IAC5B,iCAAiC,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IACnE;IACA,gCAAgC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAChD,oCAAoC,IAAI,EAAE,UAAU;IACpD,oCAAoC,KAAK,EAAE,SAAS;IACpD,oCAAoC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,oCAAoC;IACpC,iCAAiC,CAAC;IAClC,gCAAgC,SAAS,IAAI,CAAC;IAC9C,4BAA4B;IAC5B,iCAAiC,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IACnE;IACA,gCAAgC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAChD,oCAAoC,IAAI,EAAE,mBAAmB;IAC7D,oCAAoC,KAAK,EAAE,SAAS;IACpD,oCAAoC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,oCAAoC;IACpC,iCAAiC,CAAC;IAClC,gCAAgC,SAAS,IAAI,CAAC;IAC9C,4BAA4B;IAC5B,iCAAiC;IACjC;IACA;IACA,gCAAgC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAChD,oCAAoC,IAAI,EAAE,WAAW;IACrD,oCAAoC,KAAK,EAAE,SAAS;IACpD,oCAAoC,IAAI,EAAE,IAAI,CAAC,IAAI;IACnD,oCAAoC,OAAO;IAC3C,oCAAoC;IACpC,iCAAiC,CAAC;IAClC;IACA,gCAAgC,SAAS,IAAI,eAAe;IAC5D,4BAA4B;IAC5B,wBAAwB;IACxB,oBAAoB;IACpB;IACA,oBAAoB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;IACtD,wBAAwB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1D,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,iBAAiB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;IAC1D,gBAAgB,MAAM,OAAO,GAAG,IAAI;IACpC;IACA,gBAAgB,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE;IAClD;IACA,oBAAoB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU;IACrD,oBAAoB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;IAC9D,oBAAoB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC;IACrE,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACpC,wBAAwB,IAAI,EAAE,MAAM;IACpC,wBAAwB,KAAK,EAAE,SAAS,EAAE;IAC1C,wBAAwB,SAAS,EAAE,OAAO;IAC1C,wBAAwB;IACxB,qBAAqB,CAAC;IACtB,gBAAgB;IAChB,YAAY;IACZ,iBAAiB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;IACvD,gBAAgB,MAAM,IAAI,GAAG,IAAI;IACjC,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;IACtC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC3C;IACA,oBAAoB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU;IAClD,oBAAoB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IACzD,oBAAoB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;IACtD,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;IACxD,wBAAwB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IACpF,wBAAwB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;IAClE,wBAAwB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;IAClE,wBAAwB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;IAC1D,wBAAwB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;IAC1D,wBAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACxC,4BAA4B,IAAI,EAAE,MAAM;IACxC,4BAA4B,KAAK,EAAE,SAAS,EAAE;IAC9C,4BAA4B,SAAS,EAAE,OAAO;IAC9C,4BAA4B;IAC5B,yBAAyB,CAAC;IAC1B,oBAAoB;IACpB;IACA,oBAAoB,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE;IACjD,wBAAwB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;IACpD,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAChD,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;IAC1C,YAAY,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC;IAC9C,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,eAAe,CAAC,MAAM,EAAE;IACjC;IACA,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;IAC9B,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7C,IAAI,IAAI,MAAM,EAAE;IAChB,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ;IACA,IAAI,MAAM,SAAS,GAAG,EAAE;IACxB,IAAI,MAAM,iBAAiB,GAAG,EAAE;IAChC;IACA,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC;IACtB,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC;IAC5B,IAAI,IAAI,aAAa,GAAG,EAAE,CAAC;IAC3B,IAAI,IAAI,eAAe,GAAG,EAAE,CAAC;IAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC7C,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAC9B,QAAQ,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3B,QAAQ,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IACpC;IACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACjD,gBAAgB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACnC,gBAAgB,IAAI,CAAC,KAAK,EAAE;IAC5B;IACA,oBAAoB,IAAI,IAAI,KAAK,GAAG,EAAE;IACtC,wBAAwB,KAAK,GAAG,IAAI;IACpC,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB,IAAI,CAAC,WAAW,EAAE;IACvC;IACA,oBAAoB,IAAI,IAAI,KAAK,GAAG,EAAE;IACtC,wBAAwB,KAAK,GAAG,KAAK;IACrC,oBAAoB;IACpB,yBAAyB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;IAC3D,wBAAwB,WAAW,GAAG,IAAI;IAC1C,wBAAwB,aAAa,GAAG,IAAI;IAC5C,oBAAoB;IACpB,yBAAyB,IAAI,IAAI,KAAK,GAAG,EAAE;IAC3C;IACA,wBAAwB,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC;IAC7C,wBAAwB,OAAO,SAAS,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE;IACrF,4BAA4B,SAAS,EAAE;IACvC,wBAAwB;IACxB,wBAAwB,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;IAChF,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB;IACA,oBAAoB,IAAI,IAAI,KAAK,aAAa,EAAE;IAChD,wBAAwB,WAAW,GAAG,KAAK;IAC3C,wBAAwB,aAAa,GAAG,EAAE;IAC1C,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ;IACA,YAAY,IAAI,WAAW,EAAE;IAC7B;IACA;IACA,gBAAgB,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC;IACvD,gBAAgB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACtC,YAAY;IACZ,iBAAiB,IAAI,KAAK,EAAE;IAC5B;IACA;IACA,gBAAgB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE;IAC7C,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IAC3C;IACA,oBAAoB,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;IACtD,oBAAoB,OAAO,SAAS,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE;IACvF,wBAAwB,SAAS,EAAE;IACnC,oBAAoB;IACpB,oBAAoB,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;IACjG,oBAAoB,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC;IAC3D,oBAAoB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C,gBAAgB;IAChB,qBAAqB;IACrB;IACA,oBAAoB,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACxE,oBAAoB,IAAI,gBAAgB,EAAE;IAC1C,wBAAwB,eAAe,GAAG,OAAO;IACjD,wBAAwB,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;IACvD,wBAAwB,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D,oBAAoB;IACpB,yBAAyB;IACzB;IACA,wBAAwB,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;IAClD,wBAAwB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9C,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,gBAAgB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1C,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IACnC,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;IACvD,IAAI,QAAQ,CAAC,SAAS,GAAG,IAAI;IAC7B,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,iBAAiB,CAAC;IAClE;IACA,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;IACpC,IAAI,OAAO,IAAI;IACf;IACA;IACA;IACA;IACA,MAAM,gBAAgB,CAAC;IACvB,IAAI,WAAW,CAAC,MAAM,EAAE;IACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;IACvB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;IAC5B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IACnC,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IAC/B,QAAQ,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC;IAC/C,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;IACrC,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,cAAc,CAAC,OAAO,EAAE;IAC5B,QAAQ,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO;IACvC,IAAI;IACJ,IAAI,cAAc,GAAG;IACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;IAC5B;IACA,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;IACzE;IACA,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC;IACxG,YAAY,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;IAC9F,YAAY,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE;IACrC,YAAY,IAAI,YAAY,GAAG,MAAM,CAAC,WAAW;IACjD,YAAY,IAAI,UAAU,GAAG,YAAY,CAAC,WAAW;IACrD,YAAY,OAAO,YAAY,IAAI,UAAU,EAAE;IAC/C,gBAAgB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;IACrD,gBAAgB,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE;IAChD,gBAAgB,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE;IACpD,YAAY;IACZ,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACjE,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,gBAAgB,IAAI,IAAI;IACxB,gBAAgB,QAAQ,OAAO,CAAC,IAAI;IACpC,oBAAoB,KAAK,MAAM;IAC/B,wBAAwB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;IACxE,wBAAwB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;IACpE,wBAAwB,IAAI,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC/D,wBAAwB;IACxB,oBAAoB,KAAK,WAAW;IACpC,wBAAwB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;IACxE,wBAAwB,IAAI,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC;IAChG,wBAAwB;IACxB,oBAAoB,KAAK,UAAU;IACnC,wBAAwB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;IACxE,wBAAwB,IAAI,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC;IAC1E,wBAAwB;IACxB,oBAAoB,KAAK,mBAAmB;IAC5C,wBAAwB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;IACxE,wBAAwB,IAAI,GAAG,IAAI,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC;IAClF,wBAAwB;IACxB,oBAAoB,KAAK,OAAO;IAChC,wBAAwB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;IACzE,wBAAwB,IAAI,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC;IACxE,wBAAwB;IACxB,oBAAoB,KAAK,gBAAgB;IACzC,wBAAwB,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;IACjF,wBAAwB,IAAI,GAAG,IAAI,iBAAiB,CAAC,oBAAoB,CAAC;IAC1E,wBAAwB;IACxB,oBAAoB,KAAK,kBAAkB;IAC3C,wBAAwB,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;IACnF,wBAAwB,IAAI,GAAG,IAAI,mBAAmB,CAAC,sBAAsB,CAAC;IAC9E,wBAAwB;IACxB,oBAAoB;IACpB,wBAAwB,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E;IACA,gBAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IACrC;IACA;IACA,gBAAgB,IAAI,IAAI,YAAY,iBAAiB,IAAI,IAAI,YAAY,mBAAmB,EAAE;IAC9F,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9E,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IAC1E,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,QAAQ;IAC5B,IAAI;IACJ,IAAI,MAAM,CAAC,MAAM,EAAE;IACnB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;IAC9C;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3B,QAAQ,OAAO,QAAQ;IACvB,IAAI;IACJ,IAAI,MAAM,CAAC,MAAM,EAAE;IACnB;IACA;IACA;IACA,QAAQ,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;IAC7D,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,QAAQ;IACR,QAAQ,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;IACzD;IACA,YAAY,IAAI,IAAI,YAAY,aAAa,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;IAC7E;IACA,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAC1C;IACA;IACA,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;IACvC,YAAY,IAAI,CAAC,KAAK,EAAE;IACxB,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA,MAAM,IAAI,CAAC;IACX;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,QAAQ,SAAS,IAAI,CAAC;IAC5B,IAAI,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE;IACpC,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,eAAe,GAAG,aAAa;IAC5C,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;IAClC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B,IAAI;IACJ,IAAI,MAAM,CAAC,KAAK,EAAE;IAClB;IACA,QAAQ,IAAI,KAAK,KAAK,QAAQ,EAAE;IAChC,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;IAChE,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;IAClD,gBAAgB,IAAI,CAAC,MAAM,EAAE;IAC7B,YAAY;IACZ,YAAY,IAAI,CAAC,eAAe,GAAG,OAAO;IAC1C,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;IAChC,YAAY,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;IAChD,gBAAgB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACvC,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;IACrC,YAAY,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;IAC7C,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;IACjC,YAAY,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACzC,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;IAC1C,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACnC,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;IAC/B,YAAY,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IACvC,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAC/B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,KAAK,EAAE;IACvB;IACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,KAAK,aAAa;IAC/D,YAAY,IAAI,CAAC,eAAe,KAAK,OAAO;IAC5C,YAAY,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;IAC7C,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;IAChD,QAAQ,IAAI,QAAQ,EAAE;IACtB,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;IACvD,YAAY,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;IAClE,gBAAgB,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7C,gBAAgB,IAAI,CAAC,eAAe,GAAG,KAAK;IAC5C,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK;IACpC,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,qBAAqB,CAAC,MAAM,EAAE;IAClC;IACA,QAAQ,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe;IACtD,QAAQ,IAAI,iBAAiB,YAAY,gBAAgB,EAAE;IAC3D;IACA,YAAY,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IACpE,YAAY,IAAI,cAAc,IAAI,iBAAiB,CAAC,QAAQ,KAAK,cAAc,EAAE;IACjF;IACA,gBAAgB,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACvD,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,QAAQ,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC;IACrD,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE;IAClD,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IACpC,QAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,QAAQ,IAAI,CAAC,eAAe,GAAG,QAAQ;IACvC,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,eAAe,CAAC,KAAK,EAAE;IAC3B;IACA,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;IAChD,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,EAAE;IAC5D,YAAY,IAAI,CAAC,MAAM,EAAE;IACzB,YAAY,IAAI,CAAC,eAAe,GAAG,EAAE;IACrC,QAAQ;IACR,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe;IAC9C,QAAQ,IAAI,SAAS,GAAG,CAAC;IACzB,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IAClC,YAAY,IAAI,QAAQ;IACxB,YAAY,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE;IAC/C;IACA,gBAAgB,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;IAC9D,gBAAgB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;IAC5D,gBAAgB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;IAC/C,gBAAgB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;IAC7C,gBAAgB,QAAQ,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;IAC/D,gBAAgB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACxC,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC;IAC/C,YAAY;IACZ;IACA,YAAY,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IACjC,YAAY,SAAS,EAAE;IACvB,QAAQ;IACR;IACA,QAAQ,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE;IAC1C;IACA,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC/D,gBAAgB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;IACzC;IACA,gBAAgB,IAAI,CAAC,MAAM,EAAE;IAC7B;IACA,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACvC,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;IACrC,YAAY;IACZ;IACA,YAAY,SAAS,CAAC,MAAM,GAAG,SAAS;IACxC,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA,IAAI,WAAW,CAAC,IAAI,EAAE;IACtB,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;IAC3C,YAAY,IAAI,CAAC,MAAM,EAAE;IACzB,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IACpC,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI;IACvC,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,KAAK,EAAE;IAC7B;IACA,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;IACvD,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI;IACnC,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IACxC,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK;IACpC,IAAI;IACJ,IAAI,aAAa,CAAC,IAAI,EAAE;IACxB,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;IACjE,IAAI;IACJ,IAAI,MAAM,GAAG;IACb,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU;IAChD,QAAQ,IAAI,CAAC,MAAM;IACnB,YAAY;IACZ,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;IAC7C,QAAQ,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE;IAC9C,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;IACzC,YAAY,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,YAAY,IAAI,GAAG,IAAI;IACvB,QAAQ;IACR,QAAQ,IAAI,CAAC,eAAe,GAAG,OAAO;IACtC,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,aAAa,SAAS,IAAI,CAAC;IACjC,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IACxC,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,eAAe,GAAG,aAAa;IAC5C,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;IACxB;IACA,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;IACvF;IACA;IACA,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IACpF,YAAY,IAAI,CAAC,OAAO,GAAG,OAAO;IAClC,QAAQ;IACR,aAAa;IACb;IACA,YAAY,IAAI,CAAC,eAAe,GAAG,aAAa;IAChD,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,CAAC,EAAE;IAClC,QAAQ,IAAI,MAAM,GAAG,KAAK;IAC1B,QAAQ,IAAI,UAAU;IACtB;IACA,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;IACxC,YAAY,IAAI,KAAK,KAAK,QAAQ;IAClC,gBAAgB;IAChB,YAAY,MAAM,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;IACxC,iBAAiB,KAAK,KAAK,IAAI,CAAC,eAAe,IAAI,KAAK,KAAK,QAAQ,CAAC;IACtE,YAAY,IAAI,MAAM,EAAE;IACxB,gBAAgB,IAAI,CAAC,eAAe,GAAG,KAAK;IAC5C,gBAAgB,UAAU,GAAG,KAAK;IAClC,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,OAAO;IACvB,YAAY;IACZ,QAAQ;IACR;IACA,aAAa;IACb,YAAY,MAAM,MAAM,GAAG,KAAK;IAChC,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;IACxD,YAAY,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAC9D,gBAAgB,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;IAC9C;IACA,gBAAgB,IAAI,CAAC,KAAK,QAAQ,EAAE;IACpC,oBAAoB,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAC1C,gBAAgB;IAChB;IACA,gBAAgB,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC;IAC9E;IACA,gBAAgB,IAAI,CAAC,KAAK,OAAO,EAAE;IACnC,oBAAoB,UAAU,GAAG,OAAO;IACxC,gBAAgB;IAChB,qBAAqB,IAAI,UAAU,KAAK,OAAO,EAAE;IACjD,oBAAoB,UAAU,GAAG,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7E,gBAAgB;IAChB;IACA,gBAAgB,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,YAAY;IACZ,YAAY,IAAI,CAAC,MAAM,EAAE;IACzB,gBAAgB,OAAO;IACvB,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;IACrC,IAAI;IACJ,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;IACxE,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,QAAQ;IACR,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/C,IAAI;IACJ;IACA;IACA;IACA;IACA,MAAM,YAAY,SAAS,IAAI,CAAC;IAChC,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;IAC/B,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,eAAe,GAAG,aAAa;IAC5C,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;IACxB,IAAI;IACJ,IAAI,MAAM,CAAC,KAAK,EAAE;IAClB,QAAQ,IAAI,KAAK,KAAK,QAAQ;IAC9B,YAAY;IACZ;IACA,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe;IAC1C,YAAY;IACZ,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK;IACpC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,OAAO,GAAG,SAAS,GAAG,KAAK;IACvE,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS;IAC3C,QAAQ,IAAI,CAAC,eAAe,GAAG,aAAa;IAC5C,IAAI;IACJ;IACA;IACA;IACA;IACA,MAAM,oBAAoB,SAAS,IAAI,CAAC;IACxC,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;IAC/B,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,eAAe,GAAG,aAAa;IAC5C,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;IACxB,IAAI;IACJ,IAAI,MAAM,CAAC,KAAK,EAAE;IAClB,QAAQ,IAAI,KAAK,KAAK,QAAQ;IAC9B,YAAY;IACZ;IACA,QAAQ,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,OAAO;IACtD;IACA,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe;IAC9C,YAAY;IACZ,QAAQ,IAAI,CAAC,eAAe,GAAG,SAAS;IACxC,QAAQ,IAAI,SAAS,EAAE;IACvB,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IACpD,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD,QAAQ;IACR,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/C,QAAQ,IAAI,CAAC,eAAe,GAAG,aAAa;IAC5C,IAAI;IACJ;IACA;IACA;IACA;IACA,MAAM,SAAS,SAAS,IAAI,CAAC;IAC7B,IAAI,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE;IACpC,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;IAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,SAAS;IAC9B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;IAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B;IACA;IACA;IACA,QAAQ,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,QAAQ,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;IAC/C,QAAQ,MAAM,UAAU,GAAG,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;IACxE;IACA,QAAQ,MAAM,cAAc,GAAG,QAAQ,GAAG,CAAC,IAAI,UAAU,GAAG;IAC5D,cAAc,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU;IAC3C,cAAc,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC5C,QAAQ,IAAI,cAAc,GAAG,CAAC,EAAE;IAChC,YAAY,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;IACpE,YAAY,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC;IACnE,YAAY,IAAI,CAAC,SAAS,GAAG,SAAS;IACtC,YAAY,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC;IACzD,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,CAAC,SAAS,GAAG,SAAS;IACtC,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,CAAC,KAAK,EAAE;IAClB;IACA,QAAQ,IAAI,KAAK,KAAK,QAAQ;IAC9B,YAAY;IACZ;IACA,QAAQ,IAAI,KAAK,KAAK,OAAO,EAAE;IAC/B,YAAY,KAAK,GAAG,IAAI;IACxB,QAAQ;IACR;IACA,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;IACzE,YAAY;IACZ;IACA,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;IAC3E,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;IAChC,QAAQ;IACR,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;IAC1B;IACA,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;IACnD,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU;IACvC,YAAY;IACZ;IACA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACxB,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IACvD,YAAY,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI;IAC7C,QAAQ;IACR,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI;IACzC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;IACxC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK;IACpC,YAAY,IAAI,SAAS,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC;IACrE,gBAAgB;IAChB,YAAY,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;IACtC,QAAQ,CAAC,CAAC;IACV,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;IACpE,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;IAC3E,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;IAChC,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,IAAI,EAAE;IACnC;IACA,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IAC7C,IAAI,IAAI,YAAY,EAAE;IACtB,QAAQ,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChC,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IACjC,IAAI,MAAM,MAAM,GAAG;IACnB,QAAQ,GAAG,EAAE,EAAE;IACf,QAAQ;IACR,KAAK;IACL,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IAC9B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;IACxC,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE;IACrD,YAAY,MAAM,CAAC,IAAI,GAAG,IAAI;IAC9B,QAAQ;IACR,aAAa,IAAI,KAAK,KAAK,KAAK,EAAE;IAClC,YAAY,MAAM,CAAC,GAAG,GAAG,IAAI;IAC7B,QAAQ;IACR,aAAa,IAAI,KAAK,KAAK,OAAO,EAAE;IACpC,YAAY,MAAM,CAAC,KAAK,GAAG,IAAI;IAC/B,QAAQ;IACR,aAAa,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE;IAC7E,YAAY,MAAM,CAAC,IAAI,GAAG,IAAI;IAC9B,QAAQ;IACR,aAAa;IACb;IACA,YAAY,MAAM,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC;IAC3C,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,MAAM;IACjB;IACA;IACA;IACA;IACA,SAAS,YAAY,CAAC,GAAG,EAAE;IAC3B,IAAI,MAAM,MAAM,GAAG;IACnB,QAAQ,KAAK,EAAE,QAAQ;IACvB,QAAQ,QAAQ,EAAE,QAAQ;IAC1B,QAAQ,OAAO,EAAE,OAAO;IACxB,QAAQ,QAAQ,EAAE,OAAO;IACzB,QAAQ,OAAO,EAAE,GAAG;IACpB,QAAQ,UAAU,EAAE,GAAG;IACvB,QAAQ,IAAI,EAAE,SAAS;IACvB,QAAQ,MAAM,EAAE,WAAW;IAC3B,QAAQ,MAAM,EAAE,WAAW;IAC3B,QAAQ,OAAO,EAAE,YAAY;IAC7B,QAAQ,SAAS,EAAE,SAAS;IAC5B,QAAQ,WAAW,EAAE,WAAW;IAChC,QAAQ,WAAW,EAAE,WAAW;IAChC,QAAQ,YAAY,EAAE,YAAY;IAClC,QAAQ,QAAQ,EAAE,QAAQ;IAC1B,QAAQ,KAAK,EAAE,QAAQ;IACvB,QAAQ,WAAW,EAAE,WAAW;IAChC,QAAQ,KAAK,EAAE,KAAK;IACpB,QAAQ,MAAM,EAAE,MAAM;IACtB,QAAQ,KAAK,EAAE,KAAK;IACpB,QAAQ,QAAQ,EAAE,QAAQ;IAC1B,QAAQ,UAAU,EAAE;IACpB,KAAK;IACL,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE;IACnC,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG;IAC/B;IACA;IACA;IACA;IACA,SAAS,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE;IAC9C;IACA,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE;IAClC,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;IACA,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE;IAC7B,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO;IAClE,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM;IAC9D,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ;IACtE,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO;IAClE,IAAI,OAAO,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS;IAC3D;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;IACjC,MAAM,iBAAiB,SAAS,IAAI,CAAC;IACrC,IAAI,WAAW,CAAC,SAAS,EAAE;IAC3B,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO;IAC5B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;IACjC,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU;IAC3C;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;IACrD,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;IACpD;IACA,QAAQ,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;IACtD,QAAQ,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC;IAChE;IACA,QAAQ,OAAO,SAAS,CAAC,UAAU,EAAE;IACrC,YAAY,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;IACnE,QAAQ;IACR;IACA,QAAQ,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;IACrC,IAAI;IACJ,IAAI,MAAM,CAAC,KAAK,EAAE;IAClB,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IACxC,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;IAChC,YAAY;IACZ,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;IAC1B,QAAQ,IAAI,SAAS,EAAE;IACvB;IACA,YAAY,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE;IAC1E,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;IACxF,YAAY;IACZ,QAAQ;IACR,aAAa;IACb;IACA,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IACrC,gBAAgB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IACtE,YAAY;IACZ,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;IACjD,YAAY,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE;IAClD,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;IAC7C,gBAAgB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC;IACpD,gBAAgB,IAAI,GAAG,IAAI;IAC3B,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IACjC,YAAY,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IAClE,QAAQ;IACR,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;IAC7C,QAAQ,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE;IAC9C,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;IACzC,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC;IAChD,YAAY,IAAI,GAAG,IAAI;IACvB,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,MAAM,mBAAmB,SAAS,IAAI,CAAC;IACvC,IAAI,WAAW,CAAC,WAAW,EAAE;IAC7B,QAAQ,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO;IAC5B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE;IACjC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;IACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;IAC9B,QAAQ,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU;IAC7C;IACA,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;IACvD,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IACtD;IACA,QAAQ,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;IACxD,QAAQ,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC;IAClE;IACA,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;IAC9D,YAAY,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;IACxD,YAAY,IAAI,QAAQ,KAAK,MAAM,EAAE;IACrC,gBAAgB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE;IACnE,gBAAgB,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IAClE,gBAAgB,OAAO,KAAK,CAAC,UAAU,EAAE;IACzC,oBAAoB,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;IAC1D,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC;IACtD,YAAY;IACZ,iBAAiB,IAAI,QAAQ,KAAK,SAAS,EAAE;IAC7C,gBAAgB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IACtE,gBAAgB,OAAO,KAAK,CAAC,UAAU,EAAE;IACzC,oBAAoB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;IACpE,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC;IACvC,IAAI;IACJ,IAAI,MAAM,CAAC,KAAK,EAAE;IAClB,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;IAChC,YAAY;IACZ,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;IAC1B,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IACtC;IACA,QAAQ,IAAI,CAAC,eAAe,EAAE;IAC9B;IACA,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrD,QAAQ,MAAM,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa;IAC7F,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC;IAC5F,QAAQ,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,aAAa,EAAE,EAAE;IAClE,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC;IAClF,QAAQ;IACR,IAAI;IACJ,IAAI,eAAe,GAAG;IACtB,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;IACpC,YAAY;IACZ,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK;IAC7C,cAAc,IAAI,CAAC;IACnB,cAAc,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;IAChD,QAAQ,IAAI,CAAC,QAAQ;IACrB,YAAY;IACZ,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;IAC7C,QAAQ,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE;IAC9C,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;IACzC,YAAY,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;IACtC,YAAY,IAAI,GAAG,IAAI;IACvB,QAAQ;IACR,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,eAAe,EAAE;IAC9B,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;IAC9B,IAAI;IACJ;;IAEA;IACA;IACA;IACA;IACA,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC;IAC5C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE;IACnD;IACA,IAAI,IAAI,QAAQ,GAAG,IAAI;IACvB,IAAI,IAAI,IAAI,GAAG,EAAE;IACjB,IAAI,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;IAC/C,QAAQ,QAAQ,GAAG,iBAAiB;IACpC,QAAQ,IAAI,GAAG,OAAO,IAAI,EAAE;IAC5B,IAAI;IACJ,SAAS,IAAI,iBAAiB,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;IACzE,QAAQ,IAAI,GAAG,iBAAiB;IAChC,IAAI;IACJ,SAAS,IAAI,iBAAiB,KAAK,IAAI,IAAI,OAAO,EAAE;IACpD,QAAQ,IAAI,GAAG,OAAO;IACtB,IAAI;IACJ,IAAI,OAAO,UAAU,cAAc,EAAE,OAAO,EAAE;IAC9C,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;IACvC,QAAQ,OAAO,CAAC,cAAc,CAAC,YAAY;IAC3C,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;IAChD;IACA,YAAY,IAAI,CAAC,WAAW,CAAC,WAAW;IACxC,gBAAgB,WAAW,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE;IACnD,YAAY,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC;IAC3D,gBAAgB;IAChB,YAAY,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC;IACvD,YAAY,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;IAC3C,gBAAgB,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE;IAC7C,YAAY;IACZ,YAAY,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,CAAC,SAAS,CAAC;IACjF,YAAY,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;IAC5C,gBAAgB,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;IAC9C,oBAAoB,SAAS,EAAE,KAAK;IACpC,oBAAoB,QAAQ;IAC5B,oBAAoB,UAAU;IAC9B,oBAAoB,MAAM,EAAE,cAAc;IAC1C,oBAAoB,OAAO,EAAE;IAC7B,iBAAiB,CAAC;IAClB,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,QAAQ,OAAO,cAAc;IAC7B,IAAI,CAAC;IACL;IACA;IACA;IACA,SAAS,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE;IAC/B,IAAI,IAAI,QAAQ,GAAG,CAAC;IACpB,IAAI,OAAO,UAAU,GAAG,IAAI,EAAE;IAC9B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9B,QAAQ,IAAI,GAAG,GAAG,QAAQ,IAAI,KAAK,EAAE;IACrC,YAAY,QAAQ,GAAG,GAAG;IAC1B,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IAChC,QAAQ;IACR,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACpC,IAAI,QAAQ;IACZ,IAAI,OAAO;IACX,IAAI,MAAM;IACV,IAAI,MAAM;IACV,IAAI,QAAQ;IACZ,IAAI,OAAO;IACX,IAAI,QAAQ;IACZ,IAAI,OAAO;IACX,IAAI,YAAY;IAChB,IAAI,YAAY;IAChB,IAAI,cAAc;IAClB,IAAI,cAAc;IAClB,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA,SAAS,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE;IACrD,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC;IACtD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACxE,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;IAC5B,QAAQ,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IACvE,IAAI;IACJ,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;IACxC,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE;IACrC,IAAI;IACJ,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;IAClD;IACA,QAAQ,oBAAoB,CAAC,QAAQ,CAAC;IACtC,IAAI;IACJ,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACpC;IACA,QAAQ,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;IAC1D,QAAQ,IAAI,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtG,QAAQ,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE;IACpD;IACA;IACA;IACA,QAAQ,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxH,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;IACvD,QAAQ,MAAM,UAAU,GAAG,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;IAChF,QAAQ,MAAM,cAAc,GAAG,QAAQ,GAAG,CAAC,IAAI,UAAU,GAAG;IAC5D,cAAc,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU;IAC3C,cAAc,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC5C,QAAQ,MAAM,aAAa,GAAG,cAAc,GAAG;IAC/C,cAAc,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc;IAC3D,cAAc,OAAO,CAAC,SAAS;IAC/B,QAAQ,MAAM,WAAW,GAAG,cAAc,GAAG;IAC7C,cAAc,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC;IAC5D,cAAc,IAAI;IAClB;IACA,QAAQ,IAAI,cAAc,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,GAAG,CAAC,EAAE;IACpE,YAAY,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC;IAC/E,QAAQ;IACR,aAAa,IAAI,cAAc,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,GAAG,CAAC,EAAE;IACzE,YAAY,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC;IAC1E,QAAQ;IACR;IACA;IACA,QAAQ,IAAI,SAAS,GAAG,IAAI;IAC5B,QAAQ,IAAI,WAAW,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;IACrF,YAAY,SAAS,GAAG,mBAAmB,CAAC,WAAW,CAAC;IACxD,QAAQ;IACR,QAAQ,MAAM,wBAAwB,GAAG,CAAC,MAAM,KAAK;IACrD,YAAY,IAAI,CAAC,SAAS,EAAE;IAC5B,gBAAgB,OAAO,MAAM;IAC7B,YAAY;IACZ,YAAY,OAAO,CAAC,KAAK,KAAK;IAC9B,gBAAgB,MAAM,QAAQ,GAAG,KAAK;IACtC,gBAAgB,IAAI,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE;IAChE,oBAAoB,MAAM,CAAC,KAAK,CAAC;IACjC,gBAAgB;IAChB,YAAY,CAAC;IACb,QAAQ,CAAC;IACT;IACA,QAAQ,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,WAAW,CAAC;IACvE;IACA,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE;IAC9B;IACA,YAAY,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,IAAI,aAAa;IACvE,YAAY,MAAM,gBAAgB,GAAG,CAAC,KAAK,KAAK;IAChD,gBAAgB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;IAC3C,gBAAgB,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM;IACrG,qBAAqB,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxE,oBAAoB,IAAI;IACxB,gBAAgB,IAAI,CAAC,eAAe;IACpC,oBAAoB;IACpB,gBAAgB,IAAI,cAAc,CAAC,cAAc;IACjD,oBAAoB,KAAK,CAAC,cAAc,EAAE;IAC1C,gBAAgB,IAAI,cAAc,CAAC,eAAe,EAAE;IACpD,oBAAoB,KAAK,CAAC,eAAe,EAAE;IAC3C,oBAAoB,KAAK,CAAC,wBAAwB,EAAE;IACpD,gBAAgB;IAChB,gBAAgB,IAAI;IACpB,oBAAoB,iBAAiB,CAAC,KAAK,CAAC;IAC5C,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,EAAE;IAC9B,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACzF,gBAAgB;IAChB,YAAY,CAAC;IACb;IACA,YAAY,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC;IACvE,YAAY,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,KAAK;IAC1D,kBAAkB,cAAc,CAAC;IACjC,kBAAkB,YAAY;IAC9B,YAAY,MAAM,eAAe,GAAG;IACpC,gBAAgB,OAAO,EAAE,UAAU;IACnC,gBAAgB,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,KAAK;IAClD,gBAAgB,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,KAAK;IACxD,aAAa;IACb,YAAY,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE,eAAe,CAAC;IACxF,YAAY,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1C,gBAAgB,MAAM,EAAE,SAAS;IACjC,gBAAgB,SAAS,EAAE,aAAa;IACxC,gBAAgB,OAAO,EAAE,gBAAgB;IACzC,gBAAgB,OAAO,EAAE,eAAe;IACxC,aAAa,CAAC;IACd,QAAQ;IACR,aAAa;IACb;IACA;IACA;IACA,YAAY,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU;IACvD;IACA;IACA;IACA,YAAY,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACzF,YAAY,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK;IAC7C,gBAAgB,IAAI,KAAK,CAAC,aAAa,CAAC;IACxC,oBAAoB;IACpB,gBAAgB,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI;IAC3C,gBAAgB,IAAI,cAAc,CAAC,cAAc;IACjD,oBAAoB,KAAK,CAAC,cAAc,EAAE;IAC1C,gBAAgB,IAAI,cAAc,CAAC,eAAe;IAClD,oBAAoB,KAAK,CAAC,eAAe,EAAE;IAC3C,gBAAgB,IAAI;IACpB,oBAAoB,iBAAiB,CAAC,KAAK,CAAC;IAC5C,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,EAAE;IAC9B,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACzF,gBAAgB;IAChB,YAAY,CAAC;IACb,YAAY,MAAM,eAAe,GAAG;IACpC,gBAAgB,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,KAAK;IACxD,gBAAgB,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,KAAK;IAClD,gBAAgB,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,KAAK;IACxD,aAAa;IACb,YAAY,IAAI,UAAU,EAAE;IAC5B;IACA,gBAAgB,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,CAAC;IAC1F,gBAAgB,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9C,oBAAoB,MAAM,EAAE,UAAU;IACtC,oBAAoB,SAAS,EAAE,aAAa;IAC5C,oBAAoB,OAAO,EAAE,aAAa;IAC1C,oBAAoB,OAAO,EAAE,eAAe;IAC5C,iBAAiB,CAAC;IAClB,YAAY;IACZ;IACA,YAAY,aAAa,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,CAAC;IACzF,YAAY,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1C,gBAAgB,MAAM,EAAE,aAAa;IACrC,gBAAgB,SAAS,EAAE,aAAa;IACxC,gBAAgB,OAAO,EAAE,aAAa;IACtC,gBAAgB,OAAO,EAAE,eAAe;IACxC,aAAa,CAAC;IACd,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,SAAS,oBAAoB,CAAC,QAAQ,EAAE;IACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM;IAClC,QAAQ;IACR,IAAI,KAAK,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;IACpF,QAAQ,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;IAC/D,IAAI;IACJ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE;IACjC;;IAEA;IACA,MAAM,eAAe,CAAC;IACtB,IAAI,WAAW,GAAG;IAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE;IACnC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE;IAC1C,IAAI;IACJ,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE;IAC3B,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;IACzC,IAAI;IACJ,IAAI,UAAU,CAAC,GAAG,EAAE;IACpB,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;IACnC,IAAI;IACJ,IAAI,MAAM,OAAO,GAAG;IACpB;IACA,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACjD;IACA,QAAQ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;IACxD,YAAY,IAAI;IAChB,gBAAgB,MAAM,OAAO,EAAE;IAC/B,YAAY;IACZ,YAAY,OAAO,KAAK,EAAE;IAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC;IAC7D,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IAC/B,IAAI;IACJ,IAAI,MAAM,YAAY,CAAC,SAAS,EAAE;IAClC,QAAQ,MAAM,OAAO,GAAG,SAAS,EAAE;IACnC,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC;IAC/C,QAAQ,IAAI;IACZ,YAAY,MAAM,MAAM,GAAG,MAAM,OAAO;IACxC,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC;IACtD,YAAY,OAAO,MAAM;IACzB,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC;IACtD,YAAY,MAAM,KAAK;IACvB,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,SAAS,UAAU,CAAC,IAAI,EAAE;IAC1B,IAAI,OAAO,UAAU,WAAW,EAAE,QAAQ,EAAE;IAC5C;IACA,QAAQ,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,kBAAkB;IAC7D,QAAQ,IAAI,CAAC,QAAQ,EAAE;IACvB,YAAY,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IACpE,QAAQ;IACR,QAAQ,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;IACvC;IACA,QAAQ,WAAW,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,IAAI;IACzD,QAAQ,OAAO,WAAW;IAC1B,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA,eAAe,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE;IACzD,IAAI,MAAM,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IACtD,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;IACrD;IACA,IAAI,MAAM,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACvD,IAAI,IAAI,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,KAAK,cAAc,EAAE;IAC/E;IACA,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,YAAY,KAAK,cAAc,IAAI,kBAAkB,EAAE;IAC/D;IACA,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,kBAAkB,EAAE;IAC5B,QAAQ,MAAM,gBAAgB,CAAC,OAAO,CAAC;IACvC,IAAI;IACJ;IACA,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,kBAAkB;IACzD,IAAI,IAAI,CAAC,QAAQ,EAAE;IACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAChE,IAAI;IACJ,IAAI,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC;IACxD,IAAI,IAAI,CAAC,eAAe,EAAE;IAC1B;IACA,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,uBAAuB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1G,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAC/E,IAAI;IACJ;IACA,IAAI,MAAM,kBAAkB,GAAG,IAAI,eAAe,EAAE;IACpD,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC;IAClC,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,mBAAmB;IAClD,IAAI,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE;IACvC;IACA,IAAI,kBAAkB,CAAC,sBAAsB,CAAC,GAAG,IAAI;IACrD,IAAI,kBAAkB,CAAC,aAAa,CAAC,GAAG,YAAY;IACpD,IAAI,kBAAkB,CAAC,OAAO,GAAG,OAAO;IACxC;IACA,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IACjD,IAAI,IAAI,aAAa,KAAK,SAAS,EAAE;IACrC,QAAQ,kBAAkB,CAAC,cAAc,CAAC,GAAG,aAAa;IAC1D,IAAI;IACJ;IACA,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB;IAChD,IAAI,OAAO,CAAC,mBAAmB,CAAC,GAAG,cAAc;IACjD,IAAI,OAAO,CAAC,qBAAqB,CAAC,GAAG,KAAK;IAC1C;IACA,IAAI,MAAM,OAAO,CAAC,KAAK;IACvB;IACA,IAAI,MAAM,KAAK,CAAC,YAAY,CAAC,YAAY;IACzC,QAAQ,MAAM,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC;IAChD,IAAI,CAAC,CAAC;IACN;IACA,IAAI,cAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC/C;IACA,IAAI,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACtD;IACA,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACnD,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,qBAAqB,EAAE;IACjE,QAAQ,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB;IACtE,KAAK,CAAC,CAAC;IACP;IACA;IACA;IACA;IACA;IACA,eAAe,gBAAgB,CAAC,OAAO,EAAE;IACzC,IAAI,MAAM,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IACtD,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IACvD,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAChD,IAAI,IAAI,CAAC,kBAAkB,EAAE;IAC7B,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,KAAK,EAAE;IACf,QAAQ,MAAM,KAAK,CAAC,YAAY,CAAC,YAAY;IAC7C,YAAY,MAAM,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC;IACpD,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,SAAS;IACT,QAAQ,MAAM,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC;IAChD,IAAI;IACJ,IAAI,kBAAkB,CAAC,OAAO,GAAG,IAAI;IACrC;IACA,IAAI,gBAAgB,CAAC,kBAAkB,CAAC;IACxC;IACA,IAAI,uBAAuB,CAAC,kBAAkB,CAAC;IAC/C;IACA,IAAI,oBAAoB,CAAC,kBAAkB,CAAC;IAC5C;IACA,IAAI,IAAI,KAAK,EAAE;IACf,QAAQ,MAAM,KAAK,CAAC,OAAO,EAAE;IAC7B,IAAI;IACJ;IACA,IAAI,OAAO,kBAAkB,CAAC,cAAc,CAAC;IAC7C,IAAI,OAAO,OAAO,CAAC,cAAc,CAAC;IAClC,IAAI,OAAO,OAAO,CAAC,mBAAmB,CAAC;IACvC,IAAI,OAAO,OAAO,CAAC,qBAAqB,CAAC;IACzC,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,qBAAqB,EAAE;IACjE,QAAQ,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB;IACtE,KAAK,CAAC,CAAC;IACP;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,2BAA2B,GAAG;IACvC;IACA,IAAI,IAAI,UAAU,CAAC,iCAAiC,EAAE;IACtD,QAAQ;IACR,IAAI;IACJ,IAAI,UAAU,CAAC,iCAAiC,GAAG,IAAI;IACvD;IACA,IAAI,SAAS,cAAc,CAAC,OAAO,EAAE;IACrC,QAAQ,IAAI,EAAE,OAAO,YAAY,WAAW,CAAC;IAC7C,YAAY;IACZ,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;IACzC,YAAY;IACZ,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IACrC,YAAY;IACZ,QAAQ,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;IACjE,QAAQ,MAAM,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAChE;IACA,QAAQ,IAAI,cAAc,KAAK,qBAAqB;IACpD,YAAY;IACZ;IACA,QAAQ,IAAI,CAAC,cAAc,EAAE;IAC7B,YAAY,OAAO,OAAO,CAAC,iBAAiB,CAAC;IAC7C,YAAY,OAAO,OAAO,CAAC,mBAAmB,CAAC;IAC/C,YAAY,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;IACrD,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,gDAAgD,CAAC,EAAE,KAAK,CAAC;IACxF,YAAY,CAAC,CAAC;IACd,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,OAAO,CAAC,iBAAiB,CAAC,GAAG,cAAc;IACnD,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;IAC5B,YAAY,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE;IAC7C,QAAQ;IACR,QAAQ,IAAI,qBAAqB,EAAE;IACnC,YAAY,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;IACrD,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,oDAAoD,CAAC,EAAE,KAAK,CAAC;IAC5F,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,QAAQ,gBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;IACjE,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,6BAA6B,EAAE,cAAc,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC;IACtG,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA,IAAI,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,KAAK;IACzD,QAAQ,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;IAC1C,YAAY,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,aAAa,KAAK,YAAY,EAAE;IAC3F,gBAAgB,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC/C,YAAY;IACZ,iBAAiB,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;IACpD;IACA,gBAAgB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI;IACpD,oBAAoB,IAAI,IAAI,YAAY,WAAW,EAAE;IACrD;IACA,wBAAwB,cAAc,CAAC,IAAI,CAAC;IAC5C;IACA,wBAAwB,IAAI,CAAC,gBAAgB,CAAC,gCAAgC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IACvG,oBAAoB;IACpB,gBAAgB,CAAC,CAAC;IAClB,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,IAAI,SAAS,cAAc,GAAG;IAC9B,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,gCAAgC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC3F,QAAQ,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;IACxC,YAAY,UAAU,EAAE,IAAI;IAC5B,YAAY,eAAe,EAAE,CAAC,YAAY,CAAC;IAC3C,YAAY,SAAS,EAAE,IAAI;IAC3B,YAAY,OAAO,EAAE;IACrB,SAAS,CAAC;IACV,IAAI;IACJ,IAAI,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE;IAC3C,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,cAAc,CAAC;IACrE,IAAI;IACJ,SAAS;IACT,QAAQ,cAAc,EAAE;IACxB,IAAI;IACJ;IACA,IAAI,UAAU,CAAC,6BAA6B,GAAG,QAAQ;IACvD;;IAEA;IACA;IACA;IACA,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACtD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,SAAS,CAAC,OAAO,GAAG,EAAE,EAAE;IACjC,IAAI,OAAO,UAAU,cAAc,EAAE,OAAO,EAAE;IAC9C,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;IACvC,QAAQ,OAAO,CAAC,cAAc,CAAC,YAAY;IAC3C,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;IAChD,YAAY,IAAI,CAAC,WAAW,CAAC,gBAAgB;IAC7C,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE;IACxD,YAAY,IAAI,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC;IAChE,gBAAgB;IAChB,YAAY,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC;IAC5D,YAAY,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE;IAChD,gBAAgB,WAAW,CAAC,gBAAgB,CAAC,GAAG,EAAE;IAClD,YAAY;IACZ,YAAY,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;IAC/C,gBAAgB,UAAU;IAC1B,gBAAgB,MAAM,EAAE,cAAc;IACtC,gBAAgB,OAAO;IACvB,aAAa,CAAC;IACd,QAAQ,CAAC,CAAC;IACV,QAAQ,OAAO,cAAc;IAC7B,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,OAAO,EAAE;IACtC,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC;IAC1D,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACxE,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC;IACxC,IAAI,IAAI,CAAC,GAAG,EAAE;IACd,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,OAAO,CAAC,2BAA2B,CAAC,GAAG,GAAG;IAC9C;IACA,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACpC,QAAQ,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;IACvD,QAAQ,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC3D;IACA,QAAQ,OAAO,CAAC,iBAAiB,CAAC,GAAG,UAAU,OAAO,EAAE;IACxD;IACA,YAAY,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;IACzD,gBAAgB;IAChB,YAAY;IACZ,YAAY,MAAM,UAAU,GAAG,MAAM;IACrC,gBAAgB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;IAC7C;IACA,gBAAgB,IAAI,OAAO,CAAC,IAAI,EAAE;IAClC,oBAAoB,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAClD;IACA,oBAAoB,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC;IACpE,oBAAoB,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,kBAAkB,CAAC,KAAK,UAAU,EAAE;IAC9E,wBAAwB,GAAG,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC;IACxD,oBAAoB;IACpB,gBAAgB;IAChB,YAAY,CAAC;IACb,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;IAClC,gBAAgB,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACpD,gBAAgB,OAAO,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC;IACjF,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;IAClC,gBAAgB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACtC,gBAAgB,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;IAC5D,gBAAgB,IAAI,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE;IACxD,oBAAoB,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG;IAChD,oBAAoB,UAAU,EAAE;IAChC,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,YAAY,UAAU,EAAE;IACxB,QAAQ,CAAC;IACT;IACA,QAAQ,IAAI,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,UAAU,EAAE;IACzD,YAAY,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAC7D,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;IACxC,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC;IAC1D,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACxE,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACpC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;IAChE,YAAY,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD,YAAY,OAAO,OAAO,CAAC,aAAa,CAAC;IACzC,QAAQ;IACR;IACA,QAAQ,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACnE,QAAQ,OAAO,OAAO,CAAC,iBAAiB,CAAC;IACzC,IAAI;IACJ;IACA,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC;IACpD,IAAI,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,kBAAkB,CAAC,KAAK,UAAU,EAAE;IAC9D,QAAQ,GAAG,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC;IACxC,IAAI;IACJ,IAAI,OAAO,OAAO,CAAC,2BAA2B,CAAC;IAC/C,IAAI,OAAO,OAAO,CAAC,cAAc,CAAC;IAClC;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,eAAe,CAAC;IACtB,IAAI,WAAW,GAAG;IAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE;IAChC,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;IAC9B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;IAC/B;IACA,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;IAC1B,YAAY,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3C,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;IAC7B,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI;IACjC,YAAY,cAAc,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9C,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA,IAAI,KAAK,GAAG;IACZ,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACjD,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;IAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;IAC9B,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACxC,YAAY,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE;IACzD,YAAY,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3C,QAAQ;IACR,IAAI;IACJ;IACA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE;IAC7C,SAAS,oBAAoB,CAAC,OAAO,EAAE;IACvC,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC/C,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;IAC5C,QAAQ;IACR,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC;IAC9B,IAAI,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE;IAClC,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;IAC3B;IACA;IACA;IACA;IACA,SAAS,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE;IAC5D,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAC/C,IAAI,IAAI,CAAC,YAAY;IACrB,QAAQ;IACR;IACA,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;IAClD,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI;IACR,QAAQ,MAAM,MAAM,GAAG,iBAAiB,KAAK,SAAS,GAAG,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;IACvG,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU;IAC/B,YAAY,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAClD;IACA,QAAQ,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE;IAC5C,YAAY,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IAC5C,gBAAgB,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC;IAC3F,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,CAAC,UAAU,CAAC,SAAS,GAAG,MAAM;IACjD,YAAY,oBAAoB,CAAC,OAAO,CAAC;IACzC,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;IACvC,YAAY,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC;IAC5E,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;IAC/C,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACjE,YAAY,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,YAAY,oBAAoB,CAAC,OAAO,CAAC;IACzC,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,QAAQ;IACpB,YAAY,OAAO,CAAC,UAAU,CAAC,SAAS,GAAG,EAAE;IAC7C,QAAQ,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAC/C,QAAQ,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ;IAC3C,QAAQ,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;IACjE,QAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,QAAQ,oBAAoB,CAAC,OAAO,CAAC;IACrC,IAAI;IACJ,IAAI,OAAO,KAAK,EAAE;IAClB,QAAQ,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC;IACxD,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,aAAa,CAAC,OAAO,EAAE,SAAS,GAAG,KAAK,EAAE;IACnD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE;IACjD;IACA,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;IAClD,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,SAAS,EAAE;IACnB,QAAQ,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;IACvC,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE;IAChE,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;IACrC,YAAY,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE;IACvC,QAAQ;IACR,QAAQ,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC;IACrD,QAAQ,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM;IAC3D,YAAY,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IAC5B,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE;IAChE,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;IACrC,YAAY,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE;IACxD,QAAQ;IACR,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9B,QAAQ,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;IACxF,YAAY,MAAM,CAAC,YAAY,GAAG,GAAG;IACrC,YAAY,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IACtD,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;IACnC,YAAY,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;IAC5E,YAAY,MAAM,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM;IACpD,gBAAgB,MAAM,CAAC,aAAa,GAAG,IAAI;IAC3C,gBAAgB,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE;IAChD,gBAAgB,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC9C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE;IAC9B,IAAI,OAAO,UAAU,cAAc,EAAE,OAAO,EAAE;IAC9C,QAAQ,OAAO,CAAC,IAAI;IACpB,QAAQ,OAAO,CAAC,cAAc,CAAC,YAAY;IAC3C;IACA,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,cAAc;IAChD,YAAY,IAAI,CAAC,cAAc,CAAC,GAAG,OAAO;IAC1C,QAAQ,CAAC,CAAC;IACV;IACA,QAAQ,OAAO,UAAU,GAAG,IAAI,EAAE;IAClC;IACA,YAAY,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IAC3D;IACA;IACA,YAAY,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC;IAC3C,YAAY,OAAO,MAAM;IACzB,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,MAAM,GAAG;IAClB,IAAI,OAAO,UAAU,cAAc,EAAE,OAAO,EAAE;IAC9C,QAAQ,OAAO,CAAC,cAAc,CAAC,YAAY;IAC3C;IACA,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;IACrE,gBAAgB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACnE,YAAY;IACZ,iBAAiB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,EAAE;IACzE,gBAAgB,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrE,YAAY;IACZ,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,cAAc;IAChD,QAAQ,CAAC,CAAC;IACV,QAAQ,OAAO,cAAc;IAC7B,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA,SAAS,WAAW,CAAC,OAAO,EAAE;IAC9B,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAC/C,IAAI,IAAI,CAAC,YAAY;IACrB,QAAQ;IACR;IACA,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IAC/B,QAAQ;IACR,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAClC,IAAI,IAAI;IACR;IACA,QAAQ,MAAM,UAAU,GAAG,EAAE;IAC7B,QAAQ,MAAM,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAC5D,QAAQ,IAAI,aAAa,EAAE;IAC3B,YAAY,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE;IAChD,gBAAgB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IAC9C,gBAAgB,IAAI,WAAW,CAAC,CAAC,CAAC;IAClC,oBAAoB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;IACjD,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;IAClC,YAAY,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC;IAC3E,YAAY;IACZ,QAAQ;IACR,QAAQ,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;IACA,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;IACjC,YAAY,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAClD,QAAQ;IACR,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU;IAC/B,YAAY;IACZ;IACA,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,oBAAoB,IAAI,OAAO,CAAC,UAAU,EAAE;IACjG,YAAY,OAAO,CAAC,UAAU,CAAC,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;IACrF,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IACrD,QAAQ,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACrE,QAAQ,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC;IAC7C,IAAI;IACJ,IAAI,OAAO,KAAK,EAAE;IAClB,QAAQ,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;IACtD,IAAI;IACJ;;IAEA;IACA;IACA;IACA;IACA,SAAS,yBAAyB,CAAC,WAAW,EAAE;IAChD;IACA,IAAI,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAClD;IACA,IAAI,MAAM,yBAAyB,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB;IAC7E,IAAI,MAAM,4BAA4B,GAAG,WAAW,CAAC,SAAS,CAAC,oBAAoB;IACnF,IAAI,MAAM,gCAAgC,GAAG,WAAW,CAAC,SAAS,CAAC,wBAAwB;IAC3F;IACA,IAAI,MAAM,kBAAkB,GAAG,WAAW,CAAC,kBAAkB,IAAI,EAAE;IACnE,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;IACpD,QAAQ,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7C,IAAI;IACJ;IACA,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAC9C,IAAI,IAAI,UAAU,EAAE;IACpB,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,UAAU,EAAE;IAC1D,YAAY,IAAI,WAAW,CAAC,SAAS,KAAK,KAAK;IAC/C,gBAAgB;IAChB,YAAY,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC;IACpE,YAAY,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;IAC7D,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC;IACtD,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,oBAAoB,EAAE;IAC7D,QAAQ,GAAG,GAAG,EAAE,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAC5C,QAAQ,YAAY,EAAE;IACtB,KAAK,CAAC;IACN;IACA,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE;IAC1D,QAAQ,GAAG,GAAG;IACd,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;IACtC;IACA,gBAAgB,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;IAC/D,oBAAoB,IAAI,CAAC,aAAa,CAAC,GAAG,OAAO;IACjD,gBAAgB,CAAC,CAAC;IAClB,YAAY;IACZ,YAAY,OAAO,IAAI,CAAC,aAAa,CAAC;IACtC,QAAQ,CAAC;IACT,QAAQ,UAAU,EAAE,IAAI;IACxB,QAAQ,YAAY,EAAE;IACtB,KAAK,CAAC;IACN;IACA;IACA;IACA;IACA,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE;IAC/D,QAAQ,GAAG,GAAG;IACd,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC;IACnC,QAAQ,CAAC;IACT,QAAQ,GAAG,CAAC,KAAK,EAAE;IACnB,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;IAC7C,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK;IACpC,YAAY,IAAI,KAAK,KAAK,QAAQ;IAClC,gBAAgB;IAChB,YAAY,IAAI,KAAK,EAAE;IACvB,gBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;IAC7D,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;IACnF,gBAAgB,CAAC,CAAC;IAClB,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAI,QAAQ,EAAE;IAC1B,gBAAgB,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;IACtD,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC,EAAE,KAAK,CAAC;IACxE,gBAAgB,CAAC,CAAC;IAClB,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,UAAU,EAAE,IAAI;IACxB,QAAQ,YAAY,EAAE;IACtB,KAAK,CAAC;IACN,IAAI,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,kBAAkB;IAChE;IACA;IACA,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;IAClC,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;IAC3D,gBAAgB,IAAI,CAAC,aAAa,CAAC,GAAG,OAAO;IAC7C,YAAY,CAAC,CAAC;IACd,QAAQ;IACR;IACA,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;IAC/B;IACA,YAAY,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC;IAC1C,YAAY,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC;IAC7C,YAAY,mBAAmB,CAAC,IAAI,CAAC;IACrC;IACA,YAAY,IAAI;IAChB,gBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;IAC1C,YAAY;IACZ,YAAY,OAAO,KAAK,EAAE;IAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,+BAA+B,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC;IACvG,YAAY;IACZ;IACA,YAAY,IAAI,yBAAyB,EAAE;IAC3C,gBAAgB,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;IACpD,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR;IACA;IACA,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,IAAI;IAC3C;IACA,QAAQ,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAClD,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,UAAU,EAAE;IAC9D,gBAAgB,IAAI,WAAW,CAAC,SAAS,KAAK,KAAK;IACnD,oBAAoB;IACpB,gBAAgB,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC;IACxE,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;IACrD,oBAAoB;IACpB,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;IAClE,gBAAgB,SAAS,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;IACxE,gBAAgB,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,KAAK,EAAE,EAAE;IACtE,oBAAoB,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IAC5D,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC;IAC5E,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,IAAI,CAAC,wBAAwB,CAAC,EAAE;IAC5C,YAAY,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;IACtG,gBAAgB,MAAM,WAAW,GAAG,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC;IAC7D,gBAAgB,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,IAAI,EAAE,EAAE,QAAQ,CAAC;IAC9E,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC/D,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;IACvD,oBAAoB,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC9C,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACjD,QAAQ;IACR,QAAQ,WAAW,CAAC,IAAI,CAAC;IACzB,QAAQ,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC;IACtC,QAAQ,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC;IACzC,QAAQ,mBAAmB,CAAC,IAAI,CAAC;IACjC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI;IAChC,QAAQ,IAAI,yBAAyB,EAAE;IACvC,YAAY,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;IAChD,QAAQ;IACR;IACA;IACA;IACA;IACA;IACA,QAAQ,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC;IACzD;IACA,QAAQ,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;IACjC,YAAY,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;IACrC,QAAQ;IACR;IACA,QAAQ,IAAI;IACZ,YAAY,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;IACtC,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,+BAA+B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACnF,QAAQ;IACR;IACA,QAAQ,IAAI,aAAa,EAAE;IAC3B,YAAY,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE;IACjD,gBAAgB,IAAI;IACpB,oBAAoB,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,EAAE;IAC9B,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,wBAAwB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAC1F,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;IACjC,YAAY,IAAI,CAAC,aAAa,CAAC,EAAE;IACjC,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI;IACtC,QAAQ;IACR,IAAI,CAAC;IACL,IAAI,WAAW,CAAC,SAAS,CAAC,oBAAoB,GAAG,kBAAkB;IACnE;IACA,QAAQ,MAAM,eAAe,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAC7D,QAAQ,IAAI,eAAe,EAAE;IAC7B,YAAY,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE;IACnD,gBAAgB,IAAI;IACpB,oBAAoB,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,EAAE;IAC9B,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAC5F,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,4BAA4B,EAAE;IAC1C,YAAY,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE;IAC9B,YAAY,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;IAClD,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC,EAAE,KAAK,CAAC;IACpE,YAAY,CAAC,CAAC;IACd,QAAQ;IACR;IACA,QAAQ,oBAAoB,CAAC,IAAI,CAAC;IAClC;IACA,QAAQ,uBAAuB,CAAC,IAAI,CAAC;IACrC;IACA,QAAQ,qBAAqB,CAAC,IAAI,CAAC;IACnC;IACA,QAAQ,gBAAgB,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC;IACL,IAAI,WAAW,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACzF,QAAQ,gCAAgC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC9E,QAAQ,IAAI,IAAI,KAAK,YAAY,EAAE;IACnC,YAAY,IAAI,CAAC,UAAU,GAAG,QAAQ;IACtC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAClD,QAAQ,IAAI,CAAC,UAAU;IACvB,YAAY;IACZ,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,UAAU,EAAE;IAC1D,YAAY,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC;IACpE,YAAY,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;IAClE,gBAAgB;IAChB,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;IAClE,YAAY,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC;IACnG,YAAY,IAAI,YAAY,KAAK,WAAW;IAC5C,gBAAgB;IAChB,YAAY,SAAS,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;IACpE,YAAY,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,WAAW;IACpE,YAAY,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;IACvE,gBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC;IACtF,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;IAC9D,oBAAoB,aAAa,CAAC,IAAI,CAAC;IACvC,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC;IACL;IACA,IAAI,WAAW,CAAC,SAAS,CAAC,qBAAqB,GAAG,kBAAkB;IACpE;IACA,QAAQ,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC;IACzD,QAAQ,IAAI,aAAa,EAAE;IAC3B,YAAY,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE;IACjD,gBAAgB,IAAI;IACpB,oBAAoB,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,EAAE;IAC9B,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,wBAAwB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAC1F,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC;IACL;IACA,IAAI,WAAW,CAAC,SAAS,CAAC,eAAe,GAAG,kBAAkB;IAC9D;IACA,QAAQ,MAAM,eAAe,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAC7D,QAAQ,IAAI,eAAe,EAAE;IAC7B,YAAY,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE;IACnD,gBAAgB,IAAI;IACpB,oBAAoB,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,EAAE;IAC9B,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAC5F,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,WAAW,EAAE;IAC1C,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC;IACnD;IACA,IAAI,MAAM,SAAS,GAAG,EAAE;IACxB,IAAI,OAAO,MAAM,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,QAAQ,CAAC,SAAS,EAAE;IAC9E,QAAQ,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9B,QAAQ,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;IAC9C,IAAI;IACJ,IAAI,SAAS,CAAC,OAAO,EAAE;IACvB,IAAI,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;IACtC;IACA,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;IAClC,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;IACxC,gBAAgB,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,EAAE;IACnD,YAAY,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;IAC7D,gBAAgB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IACvD,oBAAoB,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;IAC3D,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,QAAQ,CAAC,cAAc,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;IACpE,YAAY,WAAW,CAAC,cAAc,GAAG,IAAI;IAC7C,QAAQ;IACR,IAAI;IACJ;IACA,SAAS,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE;IAC/D;IACA,IAAI,mBAAmB,CAAC,WAAW,CAAC;IACpC,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;IAC1D,QAAQ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;IACpC,YAAY,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,EAAE;IAC/C,QAAQ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;IACjE,YAAY,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;IACnD,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,OAAO,EAAE,cAAc;IAC/B,QAAQ,WAAW,CAAC,cAAc,GAAG,IAAI;IACzC,IAAI,yBAAyB,CAAC,WAAW,CAAC;IAC1C,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;IACrC,QAAQ,IAAI,UAAU,CAAC,WAAW;IAClC,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACjF,QAAQ,OAAO,WAAW;IAC1B,IAAI;IACJ,IAAI,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;IAC/C,IAAI,OAAO,WAAW;IACtB;IACA,SAAS,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE;IACnC,IAAI,OAAO,UAAU,WAAW,EAAE,OAAO,EAAE;IAC3C,QAAQ,OAAO,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC;IACpE,IAAI,CAAC;IACL;IACA,SAAS,MAAM,CAAC,OAAO,EAAE;IACzB,IAAI,OAAO,UAAU,WAAW,EAAE,OAAO,EAAE;IAC3C,QAAQ,OAAO,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;IAC3D,IAAI,CAAC;IACL;IACA,SAAS,QAAQ,CAAC,OAAO,EAAE;IAC3B,IAAI,OAAO,UAAU,MAAM,EAAE,OAAO,EAAE;IACtC,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI;IACxC;IACA,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAC/B,YAAY,OAAO,CAAC,QAAQ,GAAG,EAAE;IACjC,QAAQ;IACR,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;IAC3C,YAAY,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,EAAE;IACpD,QAAQ;IACR,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC;IACpE;IACA,QAAQ,OAAO,UAAU,YAAY,EAAE;IACvC;IACA,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;IAChD,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;IAC1C,gBAAgB,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,EAAE;IACnD,YAAY;IACZ;IACA,YAAY,MAAM,YAAY,GAAG,EAAE,GAAG,OAAO,EAAE;IAC/C,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;IAClE,gBAAgB,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC;IAC5D,YAAY;IACZ;IACA,YAAY,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;IAClE;IACA;IACA,YAAY,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACzD,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;IAC1E,YAAY,IAAI,CAAC,eAAe,IAAI,eAAe,KAAK,OAAO,EAAE;IACjE,gBAAgB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,OAAO;IAChE,gBAAgB,MAAM,UAAU,GAAG;IACnC,oBAAoB,GAAG,GAAG;IAC1B;IACA,wBAAwB,IAAI,YAAY,EAAE,SAAS,KAAK,KAAK,EAAE;IAC/D,4BAA4B,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,WAAW,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE;IAC/F,gCAAgC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC;IACzE,4BAA4B;IAC5B,4BAA4B,IAAI,IAAI,CAAC,wBAAwB,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE;IAClF,gCAAgC,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;IACtF,4BAA4B;IAC5B,4BAA4B,OAAO,YAAY;IAC/C,wBAAwB;IACxB;IACA,wBAAwB,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,IAAI,EAAE,EAAE,WAAW,CAAC;IAC1F,wBAAwB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;IAC5E;IACA,wBAAwB,IAAI,SAAS,KAAK,IAAI,EAAE;IAChD,4BAA4B,OAAO,mBAAmB,CAAC,SAAS,EAAE,YAAY,IAAI,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC;IAC9G,wBAAwB;IACxB;IACA;IACA,wBAAwB,MAAM,YAAY,GAAG,YAAY,EAAE,IAAI,IAAI,UAAU,CAAC,YAAY,CAAC;IAC3F,wBAAwB,IAAI,YAAY,KAAK,OAAO,IAAI,IAAI,CAAC,yBAAyB,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE;IAC3G,4BAA4B,OAAO,KAAK;IACxC,wBAAwB;IACxB;IACA,wBAAwB,IAAI,IAAI,CAAC,wBAAwB,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE;IAC9E,4BAA4B,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;IAClF,wBAAwB;IACxB;IACA,wBAAwB,OAAO,YAAY;IAC3C,oBAAoB,CAAC;IACrB,oBAAoB,GAAG,CAAC,QAAQ,EAAE;IAClC,wBAAwB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;IAC1D,wBAAwB,IAAI,QAAQ,KAAK,QAAQ;IACjD,4BAA4B;IAC5B;IACA,wBAAwB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;IAC3D,4BAA4B,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAC/D,gCAAgC,IAAI,CAAC,wBAAwB,CAAC,GAAG,IAAI,GAAG,EAAE;IAC1E,4BAA4B,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC;IACrF,4BAA4B;IAC5B,wBAAwB;IACxB;IACA,wBAAwB,IAAI,YAAY,EAAE,SAAS,KAAK,KAAK,EAAE;IAC/D,4BAA4B,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,WAAW,CAAC,GAAG,QAAQ;IACpF,wBAAwB;IACxB,6BAA6B;IAC7B,4BAA4B,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC;IACxF,4BAA4B,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC;IACzG,4BAA4B,SAAS,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;IACvF,4BAA4B,SAAS,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;IACnG,4BAA4B,IAAI,cAAc,KAAK,IAAI,EAAE;IACzD,gCAAgC,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;IACrE,4BAA4B;IAC5B,iCAAiC;IACjC,gCAAgC,IAAI,CAAC,YAAY,GAAG,aAAa,EAAE,cAAc,CAAC;IAClF,4BAA4B;IAC5B,4BAA4B,UAAU,CAAC,MAAM;IAC7C,gCAAgC,IAAI,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;IAChG,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACjC,wBAAwB;IACxB,wBAAwB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC/F,wBAAwB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;IACtE,4BAA4B,aAAa,CAAC,IAAI,CAAC;IAC/C,wBAAwB;IACxB,oBAAoB,CAAC;IACrB,oBAAoB,YAAY,EAAE,IAAI;IACtC,oBAAoB,UAAU,EAAE;IAChC,iBAAiB;IACjB,gBAAgB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;IAC1F,YAAY;IACZ;IACA,YAAY,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,WAAW,CAAC,GAAG,YAAY;IACxE,YAAY,OAAO,YAAY;IAC/B,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;IACA,SAAS,YAAY,CAAC,QAAQ,EAAE;IAChC,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,sBAAsB,CAAC,KAAK,IAAI;IAClE,IAAI,OAAO,YAAY,IAAI,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,GAAG,QAAQ;IACzE;IACA,SAAS,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;IACvC,IAAI,OAAO,UAAU,MAAM,EAAE,OAAO,EAAE;IACtC,QAAQ,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO;IACxD,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI;IACxC,QAAQ,OAAO,UAAU,YAAY,EAAE;IACvC,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;IACzE,gBAAgB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE;IAC/E,oBAAoB,GAAG,GAAG;IAC1B,wBAAwB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;IACvD,wBAAwB,IAAI,MAAM,GAAG,IAAI;IACzC,wBAAwB,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU;IACrD,4BAA4B,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;IAC5E,wBAAwB,IAAI,CAAC,MAAM,IAAI,KAAK;IAC5C,4BAA4B,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IACjE,wBAAwB,OAAO,MAAM,IAAI,IAAI;IAC7C,oBAAoB,CAAC;IACrB,oBAAoB,GAAG,GAAG,EAAE,CAAC;IAC7B,oBAAoB,YAAY,EAAE,IAAI;IACtC,oBAAoB,UAAU,EAAE;IAChC,iBAAiB,CAAC;IAClB,YAAY;IACZ,YAAY,OAAO,YAAY;IAC/B,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;IACA,SAAS,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;IAC1C,IAAI,OAAO,UAAU,MAAM,EAAE,OAAO,EAAE;IACtC,QAAQ,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO;IACxD,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI;IACxC,QAAQ,OAAO,UAAU,YAAY,EAAE;IACvC,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;IACzE,gBAAgB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE;IAC/E,oBAAoB,GAAG,GAAG;IAC1B,wBAAwB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;IACvD,wBAAwB,MAAM,OAAO,GAAG,EAAE;IAC1C,wBAAwB,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU;IACrD,4BAA4B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvF,wBAAwB,IAAI,KAAK;IACjC,4BAA4B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5E,wBAAwB,OAAO,OAAO;IACtC,oBAAoB,CAAC;IACrB,oBAAoB,GAAG,GAAG,EAAE,CAAC;IAC7B,oBAAoB,YAAY,EAAE,IAAI;IACtC,oBAAoB,UAAU,EAAE;IAChC,iBAAiB,CAAC;IAClB,YAAY;IACZ,YAAY,OAAO,YAAY;IAC/B,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;IACA,SAAS,KAAK,CAAC,GAAG,aAAa,EAAE;IACjC,IAAI,OAAO,UAAU,MAAM,EAAE,OAAO,EAAE;IACtC,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;IACvC,QAAQ,OAAO,CAAC,cAAc,CAAC,YAAY;IAC3C,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;IAChD;IACA;IACA,YAAY,IAAI,CAAC,WAAW,CAAC,cAAc;IAC3C,gBAAgB,WAAW,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE;IACtD,YAAY,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;IACtD,gBAAgB;IAChB,YAAY,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;IAClD,YAAY,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE;IACjD,gBAAgB,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI,GAAG,EAAE;IAC1D,YAAY;IACZ,YAAY,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;IACtD,gBAAgB,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;IACvE,oBAAoB,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;IACxE,gBAAgB;IAChB,gBAAgB,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;IACtE,oBAAoB,UAAU;IAC9B,oBAAoB,MAAM,EAAE;IAC5B,iBAAiB,CAAC;IAClB,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA,SAAS,OAAO,GAAG;IACnB,IAAI,OAAO,UAAU,MAAM,EAAE,OAAO,EAAE;IACtC,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI;IACxC;IACA,QAAQ,OAAO,UAAU,YAAY,EAAE;IACvC;IACA,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;IACzE,gBAAgB,MAAM,UAAU,GAAG;IACnC,oBAAoB,GAAG,GAAG;IAC1B;IACA,wBAAwB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE;IAChE,4BAA4B,OAAO,IAAI,CAAC,cAAc,CAAC;IACvD,wBAAwB;IACxB;IACA,wBAAwB,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,IAAI;IAClF,wBAAwB,IAAI,aAAa,GAAG,YAAY,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;IAC9F;IACA,wBAAwB,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,aAAa;IAC1E,4BAA4B,OAAO,SAAS;IAC5C;IACA,wBAAwB,IAAI,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,EAAE,YAAY,UAAU,EAAE;IAC5G,4BAA4B,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI;IAC5E,wBAAwB;IACxB;IACA,wBAAwB,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACvD,wBAAwB,aAAa,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,kBAAkB,EAAE;IACxF,4BAA4B,OAAO,EAAE,IAAI;IACzC,4BAA4B,UAAU,EAAE,IAAI;IAC5C,4BAA4B;IAC5B,yBAAyB,CAAC,CAAC;IAC3B;IACA,wBAAwB,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;IACxD,4BAA4B,OAAO,SAAS;IAC5C;IACA,wBAAwB,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,OAAO;IAC7D,wBAAwB,OAAO,MAAM,CAAC,OAAO;IAC7C,oBAAoB,CAAC;IACrB,oBAAoB,GAAG,GAAG;IAC1B;IACA,oBAAoB,CAAC;IACrB,oBAAoB,YAAY,EAAE,IAAI;IACtC,oBAAoB,UAAU,EAAE;IAChC,iBAAiB;IACjB,gBAAgB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;IAC1F,YAAY;IACZ,YAAY,OAAO,YAAY;IAC/B,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;IACA,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;IACjE,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;IACnC,IAAI,OAAO,CAAC,cAAc,CAAC,YAAY;IACvC,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;IAC5C,QAAQ,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3C,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAChC,YAAY,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE;IAC3C,QAAQ,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IAC3C,YAAY;IACZ,QAAQ,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IACvC,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAChC,YAAY,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE;IACpC,QAAQ,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAC1E,IAAI,CAAC,CAAC;IACN;IACA,SAAS,KAAK,GAAG;IACjB,IAAI,OAAO,UAAU,MAAM,EAAE,OAAO,EAAE;IACtC,QAAQ,eAAe,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;IACjE,IAAI,CAAC;IACL;IACA,SAAS,OAAO,GAAG;IACnB,IAAI,OAAO,UAAU,MAAM,EAAE,OAAO,EAAE;IACtC,QAAQ,eAAe,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;IACrE,IAAI,CAAC;IACL;IACA,SAAS,wBAAwB,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE;IACxE,IAAI,OAAO,UAAU,OAAO,GAAG,EAAE,EAAE;IACnC,QAAQ,OAAO,UAAU,cAAc,EAAE,OAAO,EAAE;IAClD,YAAY,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC;IACzF,YAAY,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;IAC3C,YAAY,OAAO,UAAU,GAAG,IAAI,EAAE;IACtC,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IACvC,oBAAoB,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,EAAE;IAClD,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;IACzD,oBAAoB,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;IACzH,gBAAgB;IAChB,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;IACjE,gBAAgB,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,gBAAgB,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE;IAC1C,oBAAoB,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC;IACtD,oBAAoB,MAAM,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IAC5F,oBAAoB,OAAO,SAAS;IACpC,gBAAgB;IAChB,gBAAgB,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE;IAC1C,oBAAoB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC1C,oBAAoB,IAAI,MAAM,CAAC,gBAAgB,KAAK,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,QAAQ,EAAE;IAC5G,wBAAwB,MAAM,CAAC,gBAAgB,GAAG,GAAG;IACrD,wBAAwB,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,oBAAoB;IACpB,oBAAoB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;IAC/C,wBAAwB,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC5F,wBAAwB,MAAM,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM;IAChE,4BAA4B,MAAM,CAAC,aAAa,GAAG,IAAI;IACvD,4BAA4B,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE;IAChE,4BAA4B,IAAI,CAAC,GAAG,IAAI,CAAC;IACzC,wBAAwB,CAAC,EAAE,SAAS,CAAC;IACrC,oBAAoB;IACpB,oBAAoB,OAAO,SAAS;IACpC,gBAAgB;IAChB,gBAAgB,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC;IACb,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;AACK,UAAC,KAAK,GAAG,wBAAwB,CAAC,cAAc,EAAE,YAAY,EAAE,OAAO;AACvE,UAAC,OAAO,GAAG,wBAAwB,CAAC,gBAAgB,EAAE,cAAc,EAAE,SAAS;;IAEpF;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,KAAK,CAAC;IACZ,IAAI,WAAW,CAAC,OAAO,EAAE;IACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IAChD,IAAI;IACJ,IAAI,IAAI,IAAI,GAAG;IACf,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ;IACnC,IAAI;IACJ,IAAI,YAAY,CAAC,OAAO,EAAE;IAC1B;IACA,QAAQ,IAAI,WAAW,GAAG,OAAO;IACjC,QAAQ,IAAI,YAAY,GAAG,EAAE;IAC7B,QAAQ,IAAI,aAAa,GAAG,KAAK;IACjC,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IAC/C,QAAQ,IAAI,UAAU,KAAK,EAAE,EAAE;IAC/B,YAAY,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;IACtD,YAAY,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;IACxD;IACA,YAAY,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACzE,gBAAgB,aAAa,GAAG,IAAI;IACpC,gBAAgB,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IACtD,gBAAgB,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IACxD,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO;IACf,YAAY,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;IACzD,YAAY,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG,EAAE;IACpF,YAAY,aAAa;IACzB,YAAY,QAAQ,EAAE;IACtB,SAAS;IACT,IAAI;IACJ,IAAI,aAAa,CAAC,OAAO,EAAE;IAC3B,QAAQ,MAAM,QAAQ,GAAG,EAAE;IAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC;IACjB,QAAQ,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;IACnC,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC;IACnC,YAAY,QAAQ,IAAI;IACxB,gBAAgB,KAAK,GAAG;IACxB;IACA,oBAAoB,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;IACxG,oBAAoB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IACnF,oBAAoB,CAAC,GAAG,QAAQ,GAAG,CAAC;IACpC,oBAAoB;IACpB,gBAAgB,KAAK,GAAG;IACxB;IACA,oBAAoB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IAClG,oBAAoB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1D,oBAAoB,CAAC,GAAG,aAAa;IACrC,oBAAoB;IACpB,gBAAgB,KAAK,GAAG;IACxB;IACA,oBAAoB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7G,oBAAoB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACrE,oBAAoB,CAAC,GAAG,aAAa;IACrC,oBAAoB;IACpB,gBAAgB;IAChB;IACA,oBAAoB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9F,oBAAoB,IAAI,KAAK,EAAE;IAC/B,wBAAwB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACjE,oBAAoB;IACpB,oBAAoB,CAAC,GAAG,eAAe;IACvC,oBAAoB;IACpB;IACA,QAAQ;IACR,QAAQ,OAAO,QAAQ;IACvB,IAAI;IACJ,IAAI,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE;IAC5C,QAAQ,IAAI,KAAK,GAAG,CAAC;IACrB,QAAQ,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC;IAC9B,QAAQ,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;IAChD,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;IAClC,gBAAgB,KAAK,EAAE;IACvB,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;IAClC,gBAAgB,KAAK,EAAE;IACvB,YAAY,CAAC,EAAE;IACf,QAAQ;IACR,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5D,QAAQ,OAAO;IACf,YAAY,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IACjD,YAAY,QAAQ,EAAE,CAAC,GAAG;IAC1B,SAAS;IACT,IAAI;IACJ,IAAI,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE;IACzC,QAAQ,IAAI,CAAC,GAAG,UAAU;IAC1B,QAAQ,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;IAC/D,YAAY,CAAC,EAAE;IACf,QAAQ;IACR,QAAQ,OAAO;IACf,YAAY,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9C,YAAY,QAAQ,EAAE;IACtB,SAAS;IACT,IAAI;IACJ,IAAI,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE;IACtC,QAAQ,IAAI,CAAC,GAAG,UAAU;IAC1B,QAAQ,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;IACnE,YAAY,CAAC,EAAE;IACf,QAAQ;IACR,QAAQ,OAAO;IACf,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/C,YAAY,QAAQ,EAAE;IACtB,SAAS;IACT,IAAI;IACJ,IAAI,kBAAkB,CAAC,YAAY,EAAE;IACrC;IACA,QAAQ,IAAI,YAAY,GAAG,YAAY;IACvC,QAAQ,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACxE,YAAY,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,EAAE;IAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC;IACjB,QAAQ,OAAO,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;IACxC,YAAY,QAAQ,YAAY,CAAC,CAAC,CAAC;IACnC,gBAAgB,KAAK,GAAG;IACxB,oBAAoB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;IACxF,oBAAoB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1D,oBAAoB,CAAC,GAAG,QAAQ;IAChC,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC;IACxG,oBAAoB,IAAI,KAAK,EAAE;IAC/B,wBAAwB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACjE,oBAAoB;IACpB,oBAAoB,CAAC,GAAG,eAAe;IACvC,oBAAoB;IACpB;IACA,QAAQ;IACR,QAAQ,OAAO,QAAQ;IACvB,IAAI;IACJ,IAAI,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE;IAC3C,QAAQ,IAAI,CAAC,GAAG,UAAU;IAC1B,QAAQ,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACzD,YAAY,CAAC,EAAE;IACf,QAAQ;IACR,QAAQ,OAAO;IACf,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/C,YAAY,QAAQ,EAAE;IACtB,SAAS;IACT,IAAI;IACJ,IAAI,gBAAgB,GAAG;IACvB,QAAQ,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE;IACpC,QAAQ,MAAM,aAAa,GAAG,CAAC,QAAQ,KAAK;IAC5C,YAAY,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IAC5C,gBAAgB,QAAQ,OAAO,CAAC,IAAI;IACpC,oBAAoB,KAAK,OAAO;IAChC,oBAAoB,KAAK,OAAO;IAChC,wBAAwB,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;IACpD,wBAAwB;IACxB,oBAAoB,KAAK,UAAU;IACnC,wBAAwB,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;IACvD,wBAAwB;IACxB;IACA,YAAY;IACZ,QAAQ,CAAC;IACT,QAAQ,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IAC/C,QAAQ,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IAChD,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACrC,IAAI;IACJ,IAAI,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC1D;IACA;IACA,QAAQ,IAAI,SAAS,GAAG,UAAU;IAClC,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACxC,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;IAC5C,gBAAgB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3E,gBAAgB,IAAI,YAAY,KAAK,EAAE,EAAE;IACzC,oBAAoB,OAAO,KAAK,CAAC;IACjC,gBAAgB;IAChB,gBAAgB,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM;IAC/D,YAAY;IACZ;IACA,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,KAAK,CAAC,GAAG,EAAE;IACf,QAAQ,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IACpD,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IAC7E,QAAQ,IAAI,UAAU,KAAK,KAAK,EAAE;IAClC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACvF,QAAQ,IAAI,WAAW,KAAK,KAAK,EAAE;IACnC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR;IACA,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;IACjD,QAAQ,MAAM,MAAM,GAAG,EAAE;IACzB;IACA,QAAQ,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE;IAC3C,YAAY,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS;IACzC,QAAQ;IACR;IACA,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC;IACtD,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE;IAC9B,QAAQ,MAAM,MAAM,GAAG,EAAE;IACzB,QAAQ,IAAI,SAAS,GAAG,CAAC;IACzB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAClD,YAAY,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;IACvC,YAAY,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3D,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC;IAC9F,YAAY,IAAI,WAAW,KAAK,KAAK,EAAE;IACvC,gBAAgB,OAAO,KAAK;IAC5B,YAAY;IACZ,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IACrD,YAAY,SAAS,GAAG,WAAW,CAAC,SAAS;IAC7C,QAAQ;IACR;IACA,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE;IACrC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,EAAE,EAAE;IACpE,QAAQ,QAAQ,OAAO,CAAC,IAAI;IAC5B,YAAY,KAAK,SAAS;IAC1B,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE;IACjG,oBAAoB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;IACvF,gBAAgB;IAChB,gBAAgB,OAAO,KAAK;IAC5B,YAAY,KAAK,OAAO,EAAE;IAC1B,gBAAgB,IAAI,QAAQ,GAAG,UAAU;IACzC;IACA,gBAAgB,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC;IACxD,gBAAgB,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAC1C,gBAAgB,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE;IACnE;IACA,oBAAoB,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK;IAC1D,oBAAoB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC;IAC/E,oBAAoB,IAAI,YAAY,KAAK,EAAE,EAAE;IAC7C,wBAAwB,QAAQ,GAAG,YAAY;IAC/C,oBAAoB;IACpB,yBAAyB;IACzB;IACA,wBAAwB,OAAO,KAAK;IACpC,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB;IACA,oBAAoB,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;IAC1F,wBAAwB,QAAQ,EAAE;IAClC,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,IAAI,QAAQ,KAAK,UAAU;IAC3C,oBAAoB,OAAO,KAAK;IAChC,gBAAgB,IAAI,KAAK;IACzB,gBAAgB,IAAI;IACpB,oBAAoB,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChF,gBAAgB;IAChB,gBAAgB,OAAO,CAAC,EAAE;IAC1B;IACA,oBAAoB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC5D,gBAAgB;IAChB;IACA,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;IACtG,oBAAoB,OAAO,KAAK;IAChC,gBAAgB;IAChB;IACA,gBAAgB,OAAO;IACvB,oBAAoB,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,EAAE;IACrD,oBAAoB,SAAS,EAAE;IAC/B,iBAAiB;IACjB,YAAY;IACZ,YAAY,KAAK,OAAO,EAAE;IAC1B;IACA,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;IAC1C,gBAAgB,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC;IACxD,gBAAgB,IAAI,WAAW,EAAE;IACjC,oBAAoB,QAAQ,WAAW,CAAC,IAAI;IAC5C,wBAAwB,KAAK,SAAS;IACtC;IACA;IACA,4BAA4B,IAAI,WAAW,CAAC,KAAK,KAAK,GAAG,EAAE;IAC3D,gCAAgC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;IACnF,gCAAgC,IAAI,aAAa,KAAK,EAAE,EAAE;IAC1D,oCAAoC,QAAQ,GAAG,aAAa;IAC5D,gCAAgC;IAChC,4BAA4B;IAC5B,iCAAiC;IACjC;IACA,gCAAgC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC;IACxF,gCAAgC,IAAI,YAAY,KAAK,EAAE,IAAI,YAAY,IAAI,UAAU,EAAE;IACvF,oCAAoC,QAAQ,GAAG,YAAY;IAC3D,gCAAgC;IAChC,4BAA4B;IAC5B,4BAA4B;IAC5B,wBAAwB,KAAK,OAAO;IACpC;IACA,4BAA4B,IAAI,cAAc,GAAG,EAAE;IACnD,4BAA4B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE;IAChF,gCAAgC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACrD,oCAAoC,cAAc,GAAG,CAAC;IACtD,oCAAoC;IACpC,gCAAgC;IAChC,4BAA4B;IAC5B,4BAA4B,IAAI,cAAc,KAAK,EAAE,EAAE;IACvD,gCAAgC,QAAQ,GAAG,cAAc;IACzD,4BAA4B;IAC5B,4BAA4B;IAC5B,wBAAwB,KAAK,OAAO;IACpC;IACA;IACA,4BAA4B,IAAI,SAAS,GAAG,EAAE;IAC9C,4BAA4B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;IAC/E,gCAAgC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACrD,oCAAoC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;IACtD,oCAAoC;IACpC,gCAAgC;IAChC,4BAA4B;IAC5B,4BAA4B,IAAI,SAAS,KAAK,EAAE,EAAE;IAClD,gCAAgC,QAAQ,GAAG,SAAS;IACpD,4BAA4B;IAC5B,iCAAiC;IACjC;IACA,gCAAgC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IACrG,gCAAgC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;IAC7D,oCAAoC,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;IAC1G,gCAAgC;IAChC,qCAAqC;IACrC,oCAAoC,QAAQ,GAAG,UAAU,CAAC;IAC1D,gCAAgC;IAChC,4BAA4B;IAC5B,4BAA4B;IAC5B,wBAAwB,KAAK,UAAU;IACvC;IACA,4BAA4B,MAAM,gBAAgB,GAAG,CAAC,IAAI,KAAK;IAC/D,gCAAgC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACxD,oCAAoC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;IAC9D,wCAAwC,OAAO,GAAG,CAAC,KAAK;IACxD,oCAAoC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;IACjE,wCAAwC,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrF,wCAAwC,IAAI,MAAM;IAClD,4CAA4C,OAAO,MAAM;IACzD,oCAAoC;IACpC,gCAAgC;IAChC,gCAAgC,OAAO,IAAI;IAC3C,4BAA4B,CAAC;IAC7B,4BAA4B,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC;IACvF,4BAA4B,IAAI,YAAY,EAAE;IAC9C,gCAAgC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;IACnF,gCAAgC,IAAI,YAAY,KAAK,EAAE,IAAI,YAAY,IAAI,UAAU,EAAE;IACvF,oCAAoC,QAAQ,GAAG,YAAY;IAC3D,gCAAgC;IAChC,4BAA4B;IAC5B,4BAA4B;IAC5B;IACA,gBAAgB;IAChB;IACA,gBAAgB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;IAChE,gBAAgB,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,GAAG,QAAQ,EAAE;IAChE,oBAAoB,QAAQ,GAAG,UAAU;IACzC,gBAAgB;IAChB,gBAAgB,IAAI,KAAK;IACzB,gBAAgB,IAAI;IACpB,oBAAoB,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChF,gBAAgB;IAChB,gBAAgB,OAAO,CAAC,EAAE;IAC1B;IACA,oBAAoB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC5D,gBAAgB;IAChB,gBAAgB,OAAO;IACvB,oBAAoB,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,EAAE;IACrD,oBAAoB,SAAS,EAAE;IAC/B,iBAAiB;IACjB,YAAY;IACZ,YAAY,KAAK,UAAU,EAAE;IAC7B;IACA,gBAAgB,IAAI,SAAS,GAAG,UAAU;IAC1C,gBAAgB,IAAI,MAAM,GAAG,EAAE;IAC/B,gBAAgB,IAAI,UAAU,GAAG,IAAI;IACrC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAClE,oBAAoB,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,oBAAoB,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACxE,oBAAoB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC;IACxG,oBAAoB,IAAI,WAAW,KAAK,KAAK,EAAE;IAC/C,wBAAwB,UAAU,GAAG,KAAK;IAC1C,wBAAwB;IACxB,oBAAoB;IACpB,oBAAoB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAC7D,oBAAoB,SAAS,GAAG,WAAW,CAAC,SAAS;IACrD,gBAAgB;IAChB,gBAAgB,IAAI,UAAU,EAAE;IAChC;IACA,oBAAoB,MAAM,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC;IAChH,oBAAoB,IAAI,iBAAiB,EAAE;IAC3C,wBAAwB,OAAO;IAC/B,4BAA4B,MAAM;IAClC,4BAA4B,SAAS,EAAE;IACvC,yBAAyB;IACzB,oBAAoB;IACpB,gBAAgB;IAChB;IACA;IACA,gBAAgB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;IAC5D,YAAY;IACZ,YAAY;IACZ,gBAAgB,OAAO,KAAK;IAC5B;IACA,IAAI;IACJ,IAAI,eAAe,CAAC,QAAQ,EAAE;IAC9B,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACxC,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;IAC5C,gBAAgB,OAAO,OAAO;IAC9B,YAAY;IACZ,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;IAClD,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;IACrE,gBAAgB,IAAI,MAAM;IAC1B,oBAAoB,OAAO,MAAM;IACjC,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE;IAChC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;IACnC,YAAY,OAAO,EAAE;IACrB,QAAQ;IACR,QAAQ,MAAM,MAAM,GAAG,EAAE;IACzB,QAAQ,IAAI,UAAU,GAAG,CAAC;IAC1B,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACxC,YAAY,QAAQ,OAAO,CAAC,IAAI;IAChC,gBAAgB,KAAK,SAAS;IAC9B,oBAAoB,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE;IACtG,wBAAwB,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM;IAC1D,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,OAAO,KAAK;IACpC,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB,KAAK,OAAO,EAAE;IAC9B,oBAAoB,IAAI,QAAQ,GAAG,UAAU;IAC7C,oBAAoB,OAAO,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE;IAC/E,wBAAwB,QAAQ,EAAE;IAClC,oBAAoB;IACpB,oBAAoB,IAAI,QAAQ,KAAK,UAAU;IAC/C,wBAAwB,OAAO,KAAK;IACpC,oBAAoB,IAAI,KAAK;IAC7B,oBAAoB,IAAI;IACxB,wBAAwB,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACrF,oBAAoB;IACpB,oBAAoB,OAAO,CAAC,EAAE;IAC9B;IACA,wBAAwB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;IACjE,oBAAoB;IACpB,oBAAoB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK;IAChD,oBAAoB,UAAU,GAAG,QAAQ;IACzC,oBAAoB;IACpB,gBAAgB;IAChB;IACA,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE;IACzB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC;IACjF,QAAQ,IAAI,UAAU,KAAK,KAAK,EAAE;IAClC,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,IAAI,MAAM,GAAG,UAAU;IAC/B,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;IAClD,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC;IACvF,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;IAC5C;IACA,gBAAgB,IAAI,WAAW,KAAK,KAAK,EAAE;IAC3C,oBAAoB,OAAO,KAAK;IAChC,gBAAgB;IAChB,YAAY;IACZ;IACA,YAAY,IAAI,WAAW,IAAI,WAAW,KAAK,EAAE,EAAE;IACnD,gBAAgB,MAAM,IAAI,GAAG,GAAG,WAAW;IAC3C,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,oBAAoB,GAAG,KAAK,EAAE;IACpE,QAAQ,IAAI,MAAM,GAAG,EAAE;IACvB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAClD,YAAY,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;IACvC,YAAY,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3D,YAAY,QAAQ,OAAO,CAAC,IAAI;IAChC,gBAAgB,KAAK,SAAS;IAC9B,oBAAoB,MAAM,IAAI,OAAO,CAAC,KAAK;IAC3C,oBAAoB;IACpB,gBAAgB,KAAK,OAAO;IAC5B,gBAAgB,KAAK,OAAO;IAC5B,oBAAoB,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE;IAChD,wBAAwB,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,oBAAoB;IACpB,yBAAyB;IACzB;IACA,wBAAwB,OAAO,KAAK;IACpC,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB,KAAK,UAAU;IAC/B;IACA;IACA,oBAAoB,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,oBAAoB,CAAC;IAC3G,wBAAwB,IAAI,CAAC,kCAAkC,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC;IAC5G,oBAAoB,IAAI,aAAa,EAAE;IACvC,wBAAwB,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IACnG,wBAAwB,IAAI,cAAc,KAAK,KAAK,EAAE;IACtD,4BAA4B,OAAO,KAAK;IACxC,wBAAwB;IACxB,wBAAwB,MAAM,IAAI,cAAc;IAChD,oBAAoB;IACpB,oBAAoB;IACpB;IACA,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ;IACA,IAAI,kCAAkC,CAAC,aAAa,EAAE,MAAM,EAAE,uBAAuB,EAAE;IACvF;IACA,QAAQ,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE;IAC7C,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;IAC7C,gBAAgB,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;IAC1E;IACA;IACA,oBAAoB,OAAO,IAAI,CAAC,2BAA2B,CAAC,uBAAuB,CAAC;IACpF,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,2BAA2B,CAAC,QAAQ,EAAE;IAC1C,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACxC,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;IACtE,gBAAgB,OAAO,KAAK;IAC5B,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,oBAAoB,GAAG,KAAK,EAAE;IACjE;IACA,QAAQ,IAAI,eAAe,GAAG,KAAK;IACnC,QAAQ,IAAI,eAAe,GAAG,KAAK;IACnC,QAAQ,IAAI,kBAAkB,GAAG,KAAK;IACtC,QAAQ,IAAI,2BAA2B,GAAG,IAAI;IAC9C;IACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACxC,YAAY,QAAQ,OAAO,CAAC,IAAI;IAChC,gBAAgB,KAAK,OAAO;IAC5B,gBAAgB,KAAK,OAAO;IAC5B,oBAAoB,2BAA2B,GAAG,KAAK;IACvD,oBAAoB,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;IACtF,wBAAwB,eAAe,GAAG,IAAI;IAC9C,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,kBAAkB,GAAG,IAAI;IACjD,oBAAoB;IACpB,oBAAoB;IACpB;IACA,QAAQ;IACR;IACA,QAAQ,MAAM,eAAe,IAAI,eAAe,IAAI,CAAC,kBAAkB,CAAC;IACxE,QAAQ,MAAM,YAAY,GAAG,oBAAoB,IAAI,eAAe;IACpE;IACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACxC,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;IAC7C,gBAAgB,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC;IACrG,gBAAgB,IAAI,mBAAmB,EAAE;IACzC,oBAAoB,eAAe,GAAG,IAAI;IAC1C,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR;IACA;IACA;IACA;IACA,QAAQ,IAAI,eAAe,IAAI,CAAC,kBAAkB,EAAE;IACpD,YAAY,OAAO,IAAI,CAAC;IACxB,QAAQ;IACR,QAAQ,IAAI,eAAe,IAAI,CAAC,kBAAkB,EAAE;IACpD,YAAY,OAAO,IAAI,CAAC;IACxB,QAAQ;IACR;IACA,QAAQ,IAAI,2BAA2B,IAAI,oBAAoB,EAAE;IACjE,YAAY,OAAO,IAAI,CAAC;IACxB,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE;IACnD;IACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACxC,YAAY,QAAQ,OAAO,CAAC,IAAI;IAChC,gBAAgB,KAAK,OAAO;IAC5B,gBAAgB,KAAK,OAAO;IAC5B,oBAAoB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE;IACnD,wBAAwB,OAAO,KAAK,CAAC;IACrC,oBAAoB;IACpB,oBAAoB;IACpB;IACA,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE;IAC5C,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;IACxC,YAAY,QAAQ,OAAO,CAAC,IAAI;IAChC,gBAAgB,KAAK,OAAO;IAC5B,gBAAgB,KAAK,OAAO;IAC5B,oBAAoB,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE;IAChD,wBAAwB,OAAO,IAAI;IACnC,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB,KAAK,UAAU;IAC/B,oBAAoB,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;IAC9E,wBAAwB,OAAO,IAAI;IACnC,oBAAoB;IACpB,oBAAoB;IACpB;IACA,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,WAAW,CAAC,WAAW,EAAE;IAClC,IAAI,MAAM,MAAM,GAAG,EAAE;IACrB,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI;IAC3C,QAAQ,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,QAAQ,IAAI,IAAI,IAAI,KAAK,EAAE;IAC3B,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK;IAChC,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,IAAI,OAAO,MAAM;IACjB;IACA;IACA;IACA;IACA,IAAIA,gBAAc;IAClB,CAAC,UAAU,cAAc,EAAE;IAC3B,IAAI,cAAc,CAAC,YAAY,CAAC,GAAG,YAAY;IAC/C,IAAI,cAAc,CAAC,cAAc,CAAC,GAAG,cAAc;IACnD,CAAC,EAAEA,gBAAc,KAAKA,gBAAc,GAAG,EAAE,CAAC,CAAC;IAC3C,SAAS,yBAAyB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClE,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;IAClC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;IAC3B,IAAI,IAAI,SAAS,EAAE;IACnB,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;IAChC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC;IACjE,QAAQ;IACR,IAAI;IACJ,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;IACtB,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;IACvB,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC;IAC7D;IACA,SAAS,qBAAqB,CAAC,EAAE,EAAE,SAAS,EAAE;IAC9C,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;IAC1B,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;IACvB,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;IAC5B,IAAI,IAAI,SAAS,EAAE;IACnB,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;IAC5B,QAAQ;IACR,IAAI;IACJ,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;IACrB,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;IACtB;IACA,eAAe,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,EAAE;IACrF,IAAI,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,GAAG;IACrD,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,GAAG;IACnD,IAAI,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,YAAY,CAAC;IAClD,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IACrF,IAAI,MAAM,aAAa,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IAC1C,IAAI,MAAM,WAAW,GAAG,UAAU,CAAC,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IACrF,IAAI,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK;IAC1C,IAAI,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ;IACpD,IAAI,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU;IACnF,IAAI,IAAI,CAAC,eAAe;IACxB,QAAQ,cAAc,CAAC,QAAQ,GAAG,UAAU;IAC5C,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC;IACxF,IAAI,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC;IACxE,IAAI,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC;IACvE,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;IAClD,IAAI,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC;IACrC,IAAI,KAAK,UAAU,CAAC,YAAY;IAChC;IACA,IAAI,QAAQ,IAAI;IAChB,QAAQ,KAAKA,gBAAc,CAAC,YAAY;IACxC,YAAY,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IACtD,YAAY,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC;IACxD,YAAY,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAChG,YAAY;IACZ,QAAQ,KAAKA,gBAAc,CAAC,UAAU;IACtC,YAAY,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IACtD,YAAY,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC1E,YAAY,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC;IACxD,YAAY,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACzE,YAAY;IACZ;IACA;IACA,IAAI,UAAU,CAAC,MAAM,EAAE;IACvB,IAAI,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC;IAChD,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI;IACtE,QAAQ,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;IACnC,IAAI,CAAC,CAAC;IACN,IAAI,IAAI,CAAC,eAAe;IACxB,QAAQ,cAAc,CAAC,QAAQ,GAAG,gBAAgB;IAClD;;IAEA;IACA;IACA;IACA,IAAI,WAAW;IACf,CAAC,UAAU,WAAW,EAAE;IACxB,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS;IACtC,IAAI,WAAW,CAAC,eAAe,CAAC,GAAG,eAAe;IAClD,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,WAAW;IAC1C,CAAC,EAAE,WAAW,KAAK,WAAW,GAAG,EAAE,CAAC,CAAC;IACrC;IACA;IACA;IACA;IACA;IACA,SAAS,MAAM,CAAC,OAAO,EAAE;IACzB,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM;IACxC,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ;IAC5C,IAAI,MAAM,MAAM,GAAG,EAAE;IACrB,IAAI,IAAI,SAAS,GAAG,KAAK;IACzB,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;IACtB,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,iBAAiB,GAAG,IAAI,CAAC;IACjC,IAAI,IAAI,sBAAsB,GAAG,IAAI,CAAC;IACtC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAC1C;IACA,IAAI,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;IAC/E,IAAI,SAAS,uBAAuB,CAAC,MAAM,EAAE;IAC7C,QAAQ,MAAM,eAAe,GAAG,CAAC,iBAAiB,IAAI,CAAC,sBAAsB;IAC7E,QAAQ,IAAI,eAAe,EAAE;IAC7B,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;IACzE,QAAQ,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE;IAC9C,YAAY,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,sBAAsB;IAC/E,YAAY,IAAI,YAAY,EAAE;IAC9B,gBAAgB,OAAO,OAAO;IAC9B,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,IAAI,CAAC,WAAW,EAAE;IAC/B,QAAQ,OAAO,UAAU,WAAW,EAAE,OAAO,EAAE;IAC/C;IACA,YAAY,IAAI,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;IACnE,gBAAgB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;IAC9C,oBAAoB,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,EAAE;IACvD,gBAAgB;IAChB,gBAAgB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;IACzE,oBAAoB,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;IAC3D,gBAAgB;IAChB,YAAY;IACZ;IACA,YAAY,yBAAyB,CAAC,WAAW,CAAC;IAClD;IACA,YAAY,WAAW,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC,UAAU;IACjE;IACA,YAAY,MAAM,wBAAwB,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB;IACpF,YAAY,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;IAClE;IACA,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,iBAAiB;IACzD;IACA,gBAAgB,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC;IACpD,YAAY,CAAC;IACb;IACA,YAAY,MAAM,2BAA2B,GAAG,WAAW,CAAC,SAAS,CAAC,oBAAoB;IAC1F,YAAY,WAAW,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;IACrE;IACA,gBAAgB,2BAA2B,EAAE,IAAI,CAAC,IAAI,CAAC;IACvD;IACA,gBAAgB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC3C,gBAAgB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC5C,YAAY,CAAC;IACb;IACA,YAAY,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;IAC1D,gBAAgB,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC;IACvE,YAAY;IACZ;IACA,YAAY,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACtK,YAAY,OAAO,WAAW;IAC9B,QAAQ,CAAC;IACT,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IACvE,QAAQ,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC1F,QAAQ,SAAS,GAAG,KAAK;IACzB,QAAQ,QAAQ,KAAK;IACrB,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,GAAG,GAAG;IAC1B,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,gBAAgB,IAAI,GAAG,GAAG;IAC1B,gBAAgB;IAChB,YAAY,KAAK,GAAG;IACpB,gBAAgB,IAAI,GAAG,GAAG;IAC1B,gBAAgB;IAChB;IACA,IAAI;IACJ,IAAI,SAAS,mBAAmB,GAAG;IACnC,QAAQ,MAAM,OAAO,GAAG,MAAM;IAC9B,YAAY,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;IAClD,gBAAgB;IAChB,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC/B,QAAQ,CAAC;IACT,QAAQ,QAAQ,OAAO,CAAC,IAAI;IAC5B,YAAY,KAAK,MAAM;IACvB,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC;IAC3D,gBAAgB;IAChB,YAAY,KAAK,WAAW;IAC5B,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC;IACzD,gBAAgB;IAChB;IACA,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,UAAU,GAAG;IAC1B,QAAQ,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;IACxD,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,QAAQ;IACR,QAAQ,MAAM,YAAY,GAAG,CAAC,SAAS;IACvC,QAAQ,IAAI,YAAY,EAAE;IAC1B,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5E,YAAY,SAAS,GAAG,IAAI;IAC5B,QAAQ;IACR;IACA,QAAQ,eAAe,EAAE;IACzB,QAAQ,mBAAmB,EAAE;IAC7B,QAAQ,MAAM,IAAI,GAAG,OAAO,EAAE;IAC9B,QAAQ,QAAQ,CAAC,IAAI,CAAC;IACtB,IAAI;IACJ,IAAI,SAAS,eAAe,GAAG;IAC/B,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE;IAC9B,QAAQ,QAAQ,GAAG;IACnB,aAAa,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO;IAC1C,aAAa,GAAG,CAAC,KAAK,IAAI;IAC1B,YAAY,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;IACzC,YAAY,OAAO,OAAO,OAAO,KAAK;IACtC,kBAAkB,OAAO,CAAC,OAAO;IACjC,kBAAkB,OAAO;IACzB,QAAQ,CAAC;IACT,aAAa,MAAM,CAAC,CAAC,IAAI;IACzB,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAChC,gBAAgB,OAAO,KAAK;IAC5B,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5B,YAAY,OAAO,IAAI;IACvB,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,SAAS,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE;IACjE;IACA,QAAQ,iBAAiB,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC;IACtF,IAAI;IACJ,IAAI,SAAS,YAAY,CAAC,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE;IACnE;IACA,QAAQ,IAAI,OAAO,aAAa,CAAC,MAAM,KAAK,UAAU,EAAE;IACxD,YAAY,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC;IAC7E,QAAQ;IACR,IAAI;IACJ,IAAI,SAAS,OAAO,GAAG;IACvB,QAAQ,QAAQ,OAAO,CAAC,IAAI;IAC5B,YAAY,KAAK,MAAM;IACvB,gBAAgB,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,YAAY,KAAK,WAAW;IAC5B,gBAAgB,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ;IAC5C;IACA,IAAI;IACJ,IAAI,SAAS,mBAAmB,CAAC,MAAM,EAAE;IACzC,QAAQ,IAAI,cAAc;IAC1B,QAAQ,IAAI,IAAI,EAAE;IAClB,YAAY,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;IACpD,YAAY,cAAc,CAAC,cAAc,CAAC,GAAG,OAAO;IACpD,QAAQ;IACR,aAAa;IACb,YAAY,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;IAChD,YAAY,GAAG,CAAC,SAAS,GAAG,aAAa;IACzC,YAAY,GAAG,CAAC,SAAS,YAAY,CAAC,+BAA+B,CAAC;IACtE,YAAY,cAAc,GAAG,GAAG;IAChC,QAAQ;IACR,QAAQ,MAAM,CAAC,SAAS,GAAG,EAAE;IAC7B,QAAQ,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC;IAC1C,QAAQ,iBAAiB,GAAG,IAAI;IAChC,QAAQ,sBAAsB,GAAG,IAAI;IACrC,IAAI;IACJ,IAAI,SAAS,oBAAoB,GAAG;IACpC,QAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;IAClD,QAAQ,SAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC;IACxD,QAAQ,SAAS,CAAC,SAAS,YAAY;AACvC;AACA;AACA;AACA,YAAY,CAAC;IACb,QAAQ,OAAO,SAAS;IACxB,IAAI;IACJ,IAAI,eAAe,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IACvD,QAAQ,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM;IAClC,QAAQ,IAAI,CAAC,SAAS,EAAE;IACxB,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;IACrE,QAAQ,IAAI,OAAO,GAAG,IAAI;IAC1B,QAAQ,IAAI,YAAY,GAAG,IAAI;IAC/B;IACA,QAAQ,YAAY,GAAG,UAAU,CAAC,MAAM;IACxC,YAAY,OAAO,GAAG,oBAAoB,EAAE;IAC5C,YAAY,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,CAAC;IACd,QAAQ,IAAI;IACZ,YAAY,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;IAC7C,gBAAgB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;IAC5D,gBAAgB,IAAI,CAAC,OAAO,EAAE;IAC9B,oBAAoB,mBAAmB,CAAC,MAAM,CAAC;IAC/C,oBAAoB,OAAO,KAAK;IAChC,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,gBAAgB;IAChB,YAAY,IAAI,YAAY;IAC5B,gBAAgB,YAAY,CAAC,YAAY,CAAC;IAC1C;IACA,YAAY,IAAI,OAAO;IACvB,gBAAgB,OAAO,CAAC,MAAM,EAAE;IAChC,QAAQ;IACR,IAAI;IACJ,IAAI,SAAS,iBAAiB,GAAG;IACjC,QAAQ,MAAM,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;IACtD,QAAQ,cAAc,CAAC,cAAc,CAAC,GAAG,OAAO;IAChD,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;IACxD,QAAQ,MAAM,UAAU,GAAG,WAAW,GAAG,eAAe,CAAC;IACzD,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9D,QAAQ,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;IACjF,IAAI;IACJ,IAAI,SAAS,gBAAgB,GAAG;IAChC,QAAQ,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI;IACjC,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,MAAM,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1D,YAAY,cAAc,CAAC,cAAc,CAAC,GAAG,OAAO;IACpD,YAAY,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5D,YAAY,MAAM,UAAU,GAAG,WAAW,GAAG,eAAe,CAAC;IAC7D,YAAY,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE;IAC7E,QAAQ;IACR,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;IAC5C,QAAQ,GAAG,CAAC,SAAS,GAAG,aAAa;IACrC,QAAQ,GAAG,CAAC,SAAS,YAAY,CAAC,iCAAiC,CAAC;IACpE,QAAQ,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IACzE,IAAI;IACJ,IAAI,eAAe,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE;IAC9C,QAAQ,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;IACpC,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IAClD,YAAY,MAAM,OAAO,GAAG,MAAM,KAAK,KAAK;IAC5C,YAAY,IAAI,CAAC,OAAO,EAAE;IAC1B,gBAAgB;IAChB,YAAY;IACZ,YAAY,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IACjF,YAAY,IAAI,CAAC,aAAa,EAAE;IAChC,gBAAgB,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,aAAa,EAAE;IAC5D,YAAY;IACZ,YAAY,MAAM,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;IAC/D,YAAY,cAAc,CAAC,cAAc,CAAC,GAAG,OAAO;IACpD,YAAY,cAAc,CAAC,eAAe,CAAC,GAAG,iBAAiB;IAC/D,YAAY,MAAM,WAAW,GAAG,MAAM;IACtC,YAAY,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACvG,YAAY,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE;IAC5I,QAAQ;IACR,QAAQ,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,SAAS,EAAE;IAChD,IAAI;IACJ,IAAI,SAAS,eAAe,CAAC,UAAU,EAAE;IACzC,QAAQ,MAAM,oBAAoB,GAAG,UAAU,KAAK,KAAK;IACzD,QAAQ,IAAI,oBAAoB,EAAE;IAClC,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU;IAC1C,QAAQ,IAAI,aAAa,EAAE;IAC3B,YAAY,OAAO,UAAU;IAC7B,QAAQ;IACR,QAAQ,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM;IAChD,QAAQ,IAAI,eAAe,EAAE;IAC7B,YAAY,OAAO,OAAO,CAAC,MAAM;IACjC,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,SAAS,WAAW,CAAC,WAAW,EAAE;IACtC,QAAQ,MAAM,cAAc,GAAG,WAAW,KAAK,iBAAiB;IAChE,QAAQ,IAAI,CAAC,cAAc,EAAE;IAC7B,YAAY,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;IAC3D,QAAQ;IACR,QAAQ,iBAAiB,GAAG,WAAW;IACvC,QAAQ,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW;IAChD,QAAQ,IAAI,kBAAkB,EAAE;IAChC,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;IACxC,YAAY,sBAAsB,GAAG,SAAS;IAC9C,YAAY,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC;IAChE,YAAY,aAAa,CAAC,cAAc,CAAC,GAAG,OAAO;IACnD,YAAY,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS;IACjD,YAAY,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE;IACnE,QAAQ;IACR,QAAQ,sBAAsB,GAAG,IAAI;IACrC,QAAQ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;IACtD,IAAI;IACJ,IAAI,eAAe,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;IAC9H,QAAQ,MAAM,aAAa,GAAG,aAAa,IAAI,uBAAuB,CAAC,MAAM,CAAC;IAC9E,QAAQ,IAAI,CAAC,aAAa,EAAE;IAC5B,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,YAAY,CAAC,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC;IAC7D,QAAQ,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC;IAC5E,QAAQ,MAAM,gBAAgB,GAAG,CAAC,EAAE,UAAU,IAAI,eAAe,CAAC;IAClE,QAAQ,IAAI,gBAAgB,EAAE;IAC9B,YAAY,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,YAAY,MAAM,mBAAmB,CAAC,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC;IAC9F,YAAY,IAAI,cAAc,EAAE;IAChC,gBAAgB,MAAM,CAAC,SAAS,GAAG,EAAE;IACrC,gBAAgB,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC;IACjD,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,aAAa,GAAG,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC;IAC7E,QAAQ,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IACpD,QAAQ,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;IAChD,QAAQ,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC;IAC9C,QAAQ,IAAI,cAAc,EAAE;IAC5B,YAAY,MAAM,CAAC,SAAS,GAAG,EAAE;IACjC,YAAY,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC;IAC7C,QAAQ;IACR,IAAI;IACJ,IAAI,eAAe,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE;IACjE,QAAQ,MAAM,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,QAAQ,MAAM,gBAAgB,GAAG,CAAC,EAAE,UAAU,IAAI,sBAAsB,CAAC;IACzE,QAAQ,IAAI,gBAAgB,EAAE;IAC9B,YAAY,MAAM,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,CAAC;IAC9F,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,CAAC,SAAS,GAAG,EAAE;IAC7B,QAAQ,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC;IACvC,IAAI;IACJ,IAAI,eAAe,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE;IAC1F,QAAQ,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC;IACnD,QAAQ,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC;IACnF,QAAQ,MAAM,eAAe,GAAG,UAAU,IAAI,OAAO,CAAC,UAAU;IAChE,QAAQ,MAAM,SAAS,GAAG,aAAa,KAAK,IAAI,IAAI,uBAAuB,CAAC,MAAM,CAAC,KAAK,IAAI;IAC5F,QAAQ,IAAI,SAAS,EAAE;IACvB,YAAY,MAAM,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC;IAC1H,YAAY,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC;IACxD,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC;IAChE,QAAQ,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC;IACpD,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,eAAe,QAAQ,CAAC,IAAI,EAAE;IAClC,QAAQ,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;IACxD,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,QAAQ;IACR,QAAQ,eAAe,EAAE;IACzB,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B;IACA,QAAQ,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI;IAC1E,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClE,YAAY,IAAI,EAAE,MAAM,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACnE,gBAAgB;IAChB,YAAY,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE;IACvE,YAAY,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;IAC3E,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,IAAI;IACjB,YAAY;IACZ;IACA,QAAQ,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IAC5D;IACA,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,aAAa;IAC5D,YAAY;IACZ;IACA,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,EAAE;IACxD,YAAY,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,WAAW;IACjF,YAAY,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC;IACpF,YAAY;IACZ,QAAQ;IACR;IACA,QAAQ,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE;IAClE,QAAQ,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;IACvE,IAAI;IACJ,IAAI,eAAe,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;IACtF,QAAQ,OAAO,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IAC/E,IAAI;IACJ,IAAI,OAAO;IACX,QAAQ,IAAI;IACZ,QAAQ,UAAU;IAClB,QAAQ,QAAQ;IAChB,QAAQ;IACR,KAAK;IACL;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;IACtC,IAAI,OAAO,UAAU,cAAc,EAAE,QAAQ,EAAE;IAC/C,QAAQ,OAAO,UAAU,GAAG,IAAI,EAAE;IAClC;IACA,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;IACxC,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,GAAG,EAAE;IACjD,YAAY;IACZ,YAAY,MAAM,QAAQ,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5D,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IACtD,gBAAgB,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IACpD,oBAAoB,eAAe,EAAE,IAAI;IACzC,oBAAoB,gBAAgB,EAAE,CAAC;IACvC,oBAAoB,eAAe,EAAE;IACrC,iBAAiB,CAAC;IAClB,YAAY;IACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9D;IACA,YAAY,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IAC3D;IACA,YAAY,MAAM,UAAU,GAAG,CAAC,MAAM,KAAK;IAC3C;IACA,gBAAgB,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,EAAE,mBAAmB,KAAK,KAAK,EAAE;IACpF,oBAAoB;IACpB,gBAAgB;IAChB;IACA,gBAAgB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE;IACzD,oBAAoB,OAAO,EAAE,IAAI;IACjC,oBAAoB,QAAQ,EAAE,IAAI;IAClC,oBAAoB,GAAG,OAAO;IAC9B,oBAAoB;IACpB,iBAAiB,CAAC;IAClB,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IACzC,YAAY,CAAC;IACb;IACA,YAAY,MAAM,aAAa,GAAG,CAAC,MAAM,KAAK;IAC9C,gBAAgB,IAAI,OAAO,EAAE,QAAQ,EAAE;IACvC,oBAAoB,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC;IACxD,oBAAoB,MAAM,CAAC,eAAe,GAAG,UAAU,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IACnG,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;IACxC,oBAAoB,UAAU,CAAC,MAAM,CAAC;IACtC,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACtC,gBAAgB,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACpF,gBAAgB,IAAI,SAAS,IAAI,CAAC,EAAE;IACpC,oBAAoB,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC;IACxD,oBAAoB,MAAM,CAAC,gBAAgB,GAAG,GAAG;IACjD,oBAAoB,UAAU,CAAC,MAAM,CAAC;IACtC,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;IAC7C,oBAAoB,MAAM,CAAC,eAAe,GAAG,UAAU,CAAC,MAAM;IAC9D,wBAAwB,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE;IAC5D,wBAAwB,MAAM,CAAC,eAAe,GAAG,IAAI;IACrD,wBAAwB,UAAU,CAAC,MAAM,CAAC;IAC1C,oBAAoB,CAAC,EAAE,SAAS,CAAC;IACjC,gBAAgB;IAChB,YAAY,CAAC;IACb;IACA,YAAY,IAAI,MAAM,YAAY,OAAO,EAAE;IAC3C,gBAAgB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,KAAK;IACvD,oBAAoB,aAAa,CAAC,cAAc,CAAC;IACjD,oBAAoB,OAAO,cAAc;IACzC,gBAAgB,CAAC,CAAC;IAClB,YAAY;IACZ;IACA,YAAY,aAAa,CAAC,MAAM,CAAC;IACjC,YAAY,OAAO,MAAM;IACzB,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IACvD,IAAI,MAAM,QAAQ,GAAG,EAAE;IACvB,IAAI,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IACjE,QAAQ,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACnD,QAAQ,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;IACpC,YAAY,MAAM,EAAE,GAAG,KAAK;IAC5B,YAAY,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM;IAC1D,YAAY,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;IACnC,gBAAgB,EAAE,CAAC,cAAc,EAAE;IACnC,gBAAgB,EAAE,CAAC,wBAAwB,EAAE;IAC7C,gBAAgB,EAAE,CAAC,eAAe,EAAE;IACpC,YAAY;IACZ;IACA,YAAY,SAAS,CAAC,OAAO,EAAE;IAC/B;IACA,YAAY,OAAO,CAAC,OAAO;IAC3B,iBAAiB,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC;IAC5C,iBAAiB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACtD,iBAAiB,KAAK,CAAC,CAAC,KAAK,KAAK;IAClC,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,gCAAgC,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAChG,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC;IACT,QAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC;IACpD,QAAQ,QAAQ,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5E,IAAI;IACJ,IAAI,OAAO,MAAM;IACjB,QAAQ,KAAK,MAAM,EAAE,IAAI,QAAQ;IACjC,YAAY,EAAE,EAAE;IAChB,QAAQ,QAAQ,CAAC,MAAM,GAAG,CAAC;IAC3B,IAAI,CAAC;IACL;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,8BAA8B,GAAG,KAAK;IAC1C;IACA;IACA;IACA,SAAS,8BAA8B,CAAC,KAAK,EAAE;IAC/C,IAAI,8BAA8B,GAAG,KAAK;IAC1C;IACA;IACA;IACA;IACA,MAAM,uBAAuB,GAAG,GAAG;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,eAAe,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,uBAAuB,EAAE;IACxF;IACA,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;IACrC,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,YAAY,GAAG,IAAI;IAC3B,IAAI,IAAI,CAAC,8BAA8B,EAAE;IACzC,QAAQ,YAAY,GAAG,UAAU,CAAC,MAAM;IACxC,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,wBAAwB,EAAE,cAAc,CAAC,gBAAgB,CAAC;IAC9G,gBAAgB,CAAC,2DAA2D,CAAC;IAC7E,gBAAgB,CAAC,gEAAgE,CAAC,CAAC;IACnF,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,IAAI;IACJ,IAAI,IAAI;IACR;IACA,QAAQ,MAAM,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC;IACjD,IAAI;IACJ,YAAY;IACZ;IACA,QAAQ,IAAI,YAAY,EAAE;IAC1B,YAAY,YAAY,CAAC,YAAY,CAAC;IACtC,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,eAAe,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,uBAAuB,EAAE;IACtF,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;IACjD;IACA,IAAI,MAAM,qBAAqB,CAAC,OAAO,EAAE,cAAc,CAAC;IACxD;IACA,IAAI,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,EAAE,IAAI,KAAK,UAAU,EAAE;IACzE,QAAQ,MAAM,OAAO,CAAC,KAAK;IAC3B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,eAAe,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,uBAAuB,EAAE;IACxF,IAAI,MAAM,cAAc,GAAG,EAAE;IAC7B;IACA,IAAI,IAAI,IAAI,YAAY,OAAO,EAAE;IACjC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACxC,YAAY,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;IACrC,QAAQ;IACR;IACA,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;IAC7B,YAAY,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC;IAC9E,YAAY,oBAAoB,CAAC,OAAO,CAAC,EAAE,IAAI;IAC/C,gBAAgB,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IAC9C,oBAAoB,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3C,gBAAgB;IAChB,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,IAAI,IAAI,YAAY,gBAAgB,EAAE;IAC1C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;IACnD,QAAQ,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI;IAC/B,YAAY,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IAC1C,gBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,IAAI,mBAAmB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IACxF;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,gBAAgB,YAAY,CAAC,OAAO,EAAE;IACtC,IAAI,OAAO,IAAI,EAAE;IACjB,QAAQ,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI;IACrC,YAAY,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;IAC5C,gBAAgB,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE;IAC9C,YAAY;IACZ,YAAY,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACnD,QAAQ,CAAC,CAAC;IACV,QAAQ,KAAK;IACb,IAAI;IACJ;;IAEA;IACA;IACA;IACA;IACA,MAAM,eAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC;IACpD,MAAM,eAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC;IACpD,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC;IAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;IAChD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,QAAQ,CAAC,IAAI,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE;IAC5C,IAAI,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO;IACjE,IAAI,OAAO,UAAU,cAAc,EAAE,OAAO,EAAE;IAC9C,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;IACvC,QAAQ,OAAO,UAAU,GAAG,IAAI,EAAE;IAClC,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;IACxC,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE;IAC1C,YAAY;IACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAChD,YAAY,MAAM,QAAQ,GAAG,UAAU;IACvC;IACA,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;IAClC,gBAAgB,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IACtD,YAAY;IACZ;IACA,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAClC,YAAY,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IACjD,YAAY,MAAM,SAAS,GAAG,WAAW,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;IAC5E;IACA,YAAY,MAAM,uBAAuB,GAAG,OAAO,KAAK,SAAS,IAAI,GAAG,GAAG,SAAS,IAAI,OAAO;IAC/F;IACA,YAAY,IAAI,OAAO,IAAI,WAAW,EAAE;IACxC,gBAAgB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IAC/D,gBAAgB,MAAM,CAAC,QAAQ,CAAC,GAAG;IACnC,oBAAoB,OAAO,EAAE,IAAI;IACjC,oBAAoB,SAAS;IAC7B,oBAAoB,QAAQ,EAAE,IAAI;IAClC,iBAAiB;IACjB,gBAAgB,OAAO,MAAM;IAC7B,YAAY;IACZ;IACA,YAAY,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;IAC7C,gBAAgB,IAAI,QAAQ,IAAI,uBAAuB,EAAE;IACzD,oBAAoB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;IACzE,gBAAgB;IAChB,gBAAgB,OAAO,MAAM,CAAC,QAAQ,CAAC;IACvC,YAAY,CAAC,EAAE,uBAAuB,GAAG,CAAC,GAAG,IAAI,CAAC;IAClD,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG;IAC/B,gBAAgB,OAAO;IACvB,gBAAgB,SAAS;IACzB,gBAAgB,QAAQ,EAAE,IAAI;IAC9B,aAAa;IACb,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,QAAQ,CAAC,IAAI,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE;IAC5C,IAAI,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO;IACvD,IAAI,OAAO,UAAU,cAAc,EAAE,OAAO,EAAE;IAC9C,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;IACvC,QAAQ,OAAO,UAAU,GAAG,IAAI,EAAE;IAClC,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;IACxC,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE;IAC1C,YAAY;IACZ,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAChD,YAAY,MAAM,QAAQ,GAAG,UAAU;IACvC,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAClC;IACA,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;IACnC,gBAAgB,IAAI,OAAO;IAC3B,oBAAoB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IACpD,gBAAgB,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACrF,gBAAgB,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE;IAC1C,oBAAoB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM;IAChE,wBAAwB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;IAC7E,wBAAwB,OAAO,MAAM,CAAC,QAAQ,CAAC;IAC/C,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC5B,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ;IACA,YAAY,MAAM,mBAAmB,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU;IACzE,YAAY,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,IAAI;IAC5C,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAC1C,gBAAgB,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IACtD,YAAY;IACZ;IACA,YAAY,IAAI,mBAAmB,IAAI,IAAI,EAAE;IAC7C,gBAAgB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IAChD,gBAAgB,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,GAAG;IACjD,gBAAgB;IAChB,YAAY;IACZ;IACA,YAAY,IAAI,QAAQ,EAAE;IAC1B,gBAAgB,MAAM,SAAS,GAAG,IAAI,GAAG,mBAAmB;IAC5D,gBAAgB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM;IAC5D,oBAAoB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;IACzE,oBAAoB,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;IAC5D,oBAAoB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,IAAI;IACnD,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,YAAY;IACZ,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE;IAClC,IAAI,IAAI,YAAY,GAAG,KAAK;IAC5B,IAAI,IAAI,YAAY;IACpB,IAAI,OAAO,UAAU,cAAc,EAAE,OAAO,EAAE;IAC9C,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;IACvC,QAAQ,OAAO,UAAU,GAAG,IAAI,EAAE;IAClC;IACA,YAAY,IAAI,WAAW,EAAE;IAC7B,gBAAgB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACtC,oBAAoB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;IAC1C,gBAAgB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,EAAE;IACpD,oBAAoB,IAAI,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,GAAG;IACpD,wBAAwB,MAAM,EAAE,IAAI;IACpC,wBAAwB,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IAChE,qBAAqB;IACrB,gBAAgB;IAChB,gBAAgB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM;IAC3D,YAAY;IACZ;IACA,YAAY,IAAI,CAAC,YAAY,EAAE;IAC/B,gBAAgB,YAAY,GAAG,IAAI;IACnC,gBAAgB,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IAC/D,YAAY;IACZ,YAAY,OAAO,YAAY;IAC/B,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,OAAO,CAAC,OAAO,GAAG,EAAE,EAAE;IAC/B,IAAI,MAAM,EAAE,YAAY,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO;IAC5F,IAAI,OAAO,UAAU,cAAc,EAAE,OAAO,EAAE;IAC9C,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;IACvC,QAAQ,OAAO,UAAU,GAAG,IAAI,EAAE;IAClC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;IACtC,gBAAgB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;IACxC,YAAY;IACZ,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,EAAE;IAClD,gBAAgB,IAAI,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,EAAE;IAC3D,YAAY;IACZ,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC;IACzD,YAAY,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC;IAC7C;IACA,YAAY,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAChC,gBAAgB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7C,gBAAgB,MAAM,OAAO,GAAG,GAAG,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG;IAC1F,gBAAgB,IAAI,OAAO,EAAE;IAC7B,oBAAoB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IACrC,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,OAAO,MAAM,CAAC,KAAK;IACvC,gBAAgB;IAChB,YAAY;IACZ;IACA,YAAY,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IAC3D;IACA,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;IAC3B,gBAAgB,KAAK,EAAE,MAAM;IAC7B,gBAAgB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;IACrC,aAAa,CAAC;IACd;IACA,YAAY,IAAI,KAAK,CAAC,IAAI,GAAG,OAAO,EAAE;IACtC,gBAAgB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;IAC1D,gBAAgB,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;IACtC,YAAY;IACZ,YAAY,OAAO,MAAM;IACzB,QAAQ,CAAC;IACT,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,QAAQ,EAAE;IACvC,IAAI,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAE;IACnC,QAAQ,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAE;IAC1D,YAAY,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE;IAC9D,gBAAgB,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IACzE,YAAY;IACZ,QAAQ;IACR,QAAQ,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE;IACtC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,QAAQ,EAAE;IACvC,IAAI,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAE;IACnC,QAAQ,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAE;IAC1D,YAAY,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE;IAC9D,gBAAgB,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IACzE,YAAY;IACZ,QAAQ;IACR,QAAQ,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE;IACtC,IAAI;IACJ;IACA;IACA;IACA;IACA,SAAS,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE;IACjD,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE;IACjC,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC;IACtD,QAAQ;IACR,aAAa;IACb,YAAY,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE;IACxC,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA,SAAS,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE;IACzC,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;IAC/B,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC;IACpD,QAAQ;IACR,aAAa;IACb,YAAY,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;IACtC,QAAQ;IACR,IAAI;IACJ;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,mBAAmB,CAAC;IAC1B,IAAI,WAAW,GAAG;IAClB,QAAQ,IAAI,CAAC,kBAAkB,GAAG,EAAE;IACpC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,EAAE;IACrC,IAAI;IACJ,IAAI,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE;IAC1B,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;IAChC,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;IACpD,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;IACjD,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,CAAC,GAAG,EAAE;IAChB,QAAQ,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;IAC1D,QAAQ,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;IAC5D,QAAQ,MAAM,OAAO,GAAG,gBAAgB,KAAK,EAAE,IAAI,EAAE;IACrD,YAAY,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;IACpD;IACA,YAAY,IAAI,QAAQ,GAAG,CAAC;IAC5B,YAAY,MAAM,WAAW,GAAG,YAAY;IAC5C,gBAAgB,IAAI,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE;IAC1D,oBAAoB,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC;IACrE,oBAAoB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC;IACtE,gBAAgB;IAChB;IACA,gBAAgB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;IACrD;IACA,gBAAgB,IAAI,QAAQ,GAAG,CAAC;IAChC,gBAAgB,MAAM,YAAY,GAAG,YAAY;IACjD,oBAAoB,IAAI,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE;IAC/D,wBAAwB,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;IAC1E,wBAAwB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC;IAC5E,oBAAoB;IACpB,oBAAoB,OAAO,QAAQ;IACnC,gBAAgB,CAAC;IACjB,gBAAgB,OAAO,YAAY,EAAE;IACrC,YAAY,CAAC;IACb,YAAY,OAAO,WAAW,EAAE;IAChC,QAAQ,CAAC;IACT,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAChC,IAAI;IACJ;;IAEA;IACA;IACA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;IACrC,IAAI,2BAA2B,EAAE;IACjC;;IC59KA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACvB,IAAI,UAAU,CAAC,KAAK,GAAG;IACvB,QAAQ,kBAAkB,EAAE,IAAI,GAAG,EAAE;IACrC,QAAQ,mBAAmB,EAAE;IAC7B,KAAK;IACL;;ICfA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAWA;IACA;IACA;IACA,IAAI,cAAc;IAClB,CAAC,UAAU,cAAc,EAAE;IAC3B,IAAI,cAAc,CAAC,YAAY,CAAC,GAAG,YAAY;IAC/C,IAAI,cAAc,CAAC,cAAc,CAAC,GAAG,cAAc;IACnD,CAAC,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|