{"version":3,"file":"index.cjs","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-collection/dist/index.mjs","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/@radix-ui/react-collapsible/dist/index.mjs","../node_modules/@radix-ui/react-direction/dist/index.mjs","../node_modules/@radix-ui/react-accordion/dist/index.mjs","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/check.js","../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../node_modules/lucide-react/dist/esm/icons/chevron-left.js","../node_modules/lucide-react/dist/esm/icons/chevron-right.js","../node_modules/lucide-react/dist/esm/icons/chevron-up.js","../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/lucide-react/dist/esm/icons/circle-x.js","../node_modules/lucide-react/dist/esm/icons/circle.js","../node_modules/lucide-react/dist/esm/icons/ellipsis.js","../node_modules/lucide-react/dist/esm/icons/menu.js","../node_modules/lucide-react/dist/esm/icons/search.js","../node_modules/lucide-react/dist/esm/icons/trash-2.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/upload.js","../node_modules/lucide-react/dist/esm/icons/x.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/class-variance-authority/dist/index.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/accordion.tsx","../src/components/ui/badge.tsx","../src/components/ui/banner.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/button.tsx","../src/components/ui/Cards/card.tsx","../src/components/ui/Cards/cardPageWide.tsx","../src/components/ui/pageHeader.tsx","../src/components/ui/carousel.tsx","../node_modules/@radix-ui/react-use-previous/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-checkbox/dist/index.mjs","../node_modules/@radix-ui/react-label/dist/index.mjs","../src/components/ui/label.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/checkbox-group.tsx","../src/components/ui/container.tsx","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../node_modules/aria-hidden/dist/es2015/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/@radix-ui/react-menu/dist/index.mjs","../node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs","../src/components/ui/dropdown-menu.tsx","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/react-select/dist/useStateManager-7e1e8489.esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../node_modules/react-select/dist/index-641ee5b8.esm.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/react-select/dist/Select-aab027f3.esm.js","../node_modules/react-select/dist/react-select.esm.js","../src/components/ui/select.tsx","../src/components/ui/typography.tsx","../src/components/ui/fileUpload.tsx","../src/components/ui/footer.tsx","../src/components/ui/header.tsx","../node_modules/@radix-ui/react-hover-card/dist/index.mjs","../src/components/ui/hover-card.tsx","../src/components/ui/input.tsx","../src/components/ui/input-search.tsx","../node_modules/@radix-ui/number/dist/index.mjs","../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/@radix-ui/react-select/dist/index.mjs","../src/components/icons/icons.tsx","../src/components/ui/LanguageSwitcher/languageSelect.tsx","../src/components/ui/LanguageSwitcher/index.tsx","../src/components/ui/list.tsx","../src/components/icons/undp-logo-blue.svg","../src/components/icons/undp-logo-white.svg","../src/components/ui/logo.tsx","../node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/@radix-ui/react-dialog/dist/index.mjs","../src/components/ui/dialog.tsx","../src/components/ui/modal.tsx","../node_modules/comma-separated-tokens/index.js","../node_modules/estree-util-is-identifier-name/lib/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/inline-style-parser/index.js","../node_modules/style-to-object/cjs/index.js","../node_modules/style-to-js/cjs/utilities.js","../node_modules/style-to-js/cjs/index.js","../node_modules/unist-util-position/lib/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/hast-util-to-jsx-runtime/lib/index.js","../node_modules/html-url-attributes/lib/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark/lib/parse.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/remark-parse/lib/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/bail/index.js","../node_modules/extend/index.js","../node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/react-markdown/lib/index.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-gfm-autolink-literal/lib/index.js","../node_modules/mdast-util-gfm-footnote/lib/index.js","../node_modules/mdast-util-gfm-strikethrough/lib/index.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-to-markdown/lib/handle/blockquote.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","../node_modules/mdast-util-to-markdown/lib/handle/break.js","../node_modules/longest-streak/index.js","../node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js","../node_modules/mdast-util-to-markdown/lib/util/check-fence.js","../node_modules/mdast-util-to-markdown/lib/handle/code.js","../node_modules/mdast-util-to-markdown/lib/util/check-quote.js","../node_modules/mdast-util-to-markdown/lib/handle/definition.js","../node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js","../node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js","../node_modules/mdast-util-to-markdown/lib/util/encode-info.js","../node_modules/mdast-util-to-markdown/lib/handle/emphasis.js","../node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js","../node_modules/mdast-util-to-markdown/lib/handle/heading.js","../node_modules/mdast-util-to-markdown/lib/handle/html.js","../node_modules/mdast-util-to-markdown/lib/handle/image.js","../node_modules/mdast-util-to-markdown/lib/handle/image-reference.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js","../node_modules/mdast-util-to-markdown/lib/handle/link.js","../node_modules/mdast-util-to-markdown/lib/handle/link-reference.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js","../node_modules/mdast-util-to-markdown/lib/util/check-rule.js","../node_modules/mdast-util-to-markdown/lib/handle/list.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/handle/paragraph.js","../node_modules/mdast-util-phrasing/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/root.js","../node_modules/mdast-util-to-markdown/lib/util/check-strong.js","../node_modules/mdast-util-to-markdown/lib/handle/strong.js","../node_modules/mdast-util-to-markdown/lib/handle/text.js","../node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js","../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js","../node_modules/mdast-util-to-markdown/lib/handle/index.js","../node_modules/mdast-util-gfm-table/lib/index.js","../node_modules/mdast-util-gfm-task-list-item/lib/index.js","../node_modules/mdast-util-gfm/lib/index.js","../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","../node_modules/micromark-extension-gfm-footnote/lib/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","../node_modules/micromark-extension-gfm-table/lib/edit-map.js","../node_modules/micromark-extension-gfm-table/lib/infer.js","../node_modules/micromark-extension-gfm-table/lib/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/remark-gfm/lib/index.js","../src/components/ui/md-renderer.tsx","../src/components/ui/Pagination/pagination.tsx","../src/components/ui/Pagination/index.tsx","../node_modules/@radix-ui/react-popover/dist/index.mjs","../src/components/ui/popover.tsx","../node_modules/@radix-ui/react-radio-group/dist/index.mjs","../src/components/ui/radio-group.tsx","../src/components/ui/sdgBorder.tsx","../src/components/ui/sdgIcons.tsx","../src/components/ui/segmentedControl.tsx","../node_modules/@radix-ui/react-separator/dist/index.mjs","../src/components/ui/separator.tsx","../src/components/ui/sidebar-nav.tsx","../node_modules/classnames/index.js","../node_modules/rc-util/es/hooks/useEvent.js","../node_modules/rc-util/es/Dom/canUseDom.js","../node_modules/rc-util/es/hooks/useLayoutEffect.js","../node_modules/rc-util/es/hooks/useState.js","../node_modules/rc-util/es/hooks/useMergedState.js","../node_modules/rc-util/es/warning.js","../node_modules/rc-util/es/isEqual.js","../node_modules/rc-slider/es/util.js","../node_modules/rc-util/es/KeyCode.js","../node_modules/rc-slider/es/context.js","../node_modules/rc-slider/es/Handles/Handle.js","../node_modules/rc-slider/es/Handles/index.js","../node_modules/rc-slider/es/Marks/Mark.js","../node_modules/rc-slider/es/Marks/index.js","../node_modules/rc-slider/es/Steps/Dot.js","../node_modules/rc-slider/es/Steps/index.js","../node_modules/rc-slider/es/Tracks/Track.js","../node_modules/rc-slider/es/Tracks/index.js","../node_modules/rc-slider/es/hooks/useDrag.js","../node_modules/rc-slider/es/hooks/useOffset.js","../node_modules/rc-slider/es/hooks/useRange.js","../node_modules/rc-slider/es/Slider.js","../src/components/ui/slider.tsx","../src/components/ui/spacer.tsx","../src/components/ui/spinner.tsx","../src/components/ui/stepper.tsx","../node_modules/@radix-ui/react-switch/dist/index.mjs","../src/components/ui/switch.tsx","../src/components/ui/table.tsx","../node_modules/@radix-ui/react-tabs/dist/index.mjs","../src/components/ui/tabs.tsx","../src/components/ui/textarea.tsx","../src/hooks/use-toast.ts","../node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/@radix-ui/react-toast/dist/index.mjs","../src/components/ui/toast.tsx","../src/components/ui/toaster.tsx","../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/@radix-ui/react-tooltip/dist/index.mjs","../src/components/ui/tooltip.tsx","../src/components/ui/vizCarousel.tsx","../src/components/ui/visualization-widget.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function getComponentNameFromType(type) {\n      if (null == type) return null;\n      if (\"function\" === typeof type)\n        return type.$$typeof === REACT_CLIENT_REFERENCE\n          ? null\n          : type.displayName || type.name || null;\n      if (\"string\" === typeof type) return type;\n      switch (type) {\n        case REACT_FRAGMENT_TYPE:\n          return \"Fragment\";\n        case REACT_PROFILER_TYPE:\n          return \"Profiler\";\n        case REACT_STRICT_MODE_TYPE:\n          return \"StrictMode\";\n        case REACT_SUSPENSE_TYPE:\n          return \"Suspense\";\n        case REACT_SUSPENSE_LIST_TYPE:\n          return \"SuspenseList\";\n        case REACT_ACTIVITY_TYPE:\n          return \"Activity\";\n      }\n      if (\"object\" === typeof type)\n        switch (\n          (\"number\" === typeof type.tag &&\n            console.error(\n              \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n            ),\n          type.$$typeof)\n        ) {\n          case REACT_PORTAL_TYPE:\n            return \"Portal\";\n          case REACT_CONTEXT_TYPE:\n            return (type.displayName || \"Context\") + \".Provider\";\n          case REACT_CONSUMER_TYPE:\n            return (type._context.displayName || \"Context\") + \".Consumer\";\n          case REACT_FORWARD_REF_TYPE:\n            var innerType = type.render;\n            type = type.displayName;\n            type ||\n              ((type = innerType.displayName || innerType.name || \"\"),\n              (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n            return type;\n          case REACT_MEMO_TYPE:\n            return (\n              (innerType = type.displayName || null),\n              null !== innerType\n                ? innerType\n                : getComponentNameFromType(type.type) || \"Memo\"\n            );\n          case REACT_LAZY_TYPE:\n            innerType = type._payload;\n            type = type._init;\n            try {\n              return getComponentNameFromType(type(innerType));\n            } catch (x) {}\n        }\n      return null;\n    }\n    function testStringCoercion(value) {\n      return \"\" + value;\n    }\n    function checkKeyStringCoercion(value) {\n      try {\n        testStringCoercion(value);\n        var JSCompiler_inline_result = !1;\n      } catch (e) {\n        JSCompiler_inline_result = !0;\n      }\n      if (JSCompiler_inline_result) {\n        JSCompiler_inline_result = console;\n        var JSCompiler_temp_const = JSCompiler_inline_result.error;\n        var JSCompiler_inline_result$jscomp$0 =\n          (\"function\" === typeof Symbol &&\n            Symbol.toStringTag &&\n            value[Symbol.toStringTag]) ||\n          value.constructor.name ||\n          \"Object\";\n        JSCompiler_temp_const.call(\n          JSCompiler_inline_result,\n          \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n          JSCompiler_inline_result$jscomp$0\n        );\n        return testStringCoercion(value);\n      }\n    }\n    function getTaskName(type) {\n      if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n      if (\n        \"object\" === typeof type &&\n        null !== type &&\n        type.$$typeof === REACT_LAZY_TYPE\n      )\n        return \"<...>\";\n      try {\n        var name = getComponentNameFromType(type);\n        return name ? \"<\" + name + \">\" : \"<...>\";\n      } catch (x) {\n        return \"<...>\";\n      }\n    }\n    function getOwner() {\n      var dispatcher = ReactSharedInternals.A;\n      return null === dispatcher ? null : dispatcher.getOwner();\n    }\n    function UnknownOwner() {\n      return Error(\"react-stack-top-frame\");\n    }\n    function hasValidKey(config) {\n      if (hasOwnProperty.call(config, \"key\")) {\n        var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n        if (getter && getter.isReactWarning) return !1;\n      }\n      return void 0 !== config.key;\n    }\n    function defineKeyPropWarningGetter(props, displayName) {\n      function warnAboutAccessingKey() {\n        specialPropKeyWarningShown ||\n          ((specialPropKeyWarningShown = !0),\n          console.error(\n            \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n            displayName\n          ));\n      }\n      warnAboutAccessingKey.isReactWarning = !0;\n      Object.defineProperty(props, \"key\", {\n        get: warnAboutAccessingKey,\n        configurable: !0\n      });\n    }\n    function elementRefGetterWithDeprecationWarning() {\n      var componentName = getComponentNameFromType(this.type);\n      didWarnAboutElementRef[componentName] ||\n        ((didWarnAboutElementRef[componentName] = !0),\n        console.error(\n          \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n        ));\n      componentName = this.props.ref;\n      return void 0 !== componentName ? componentName : null;\n    }\n    function ReactElement(\n      type,\n      key,\n      self,\n      source,\n      owner,\n      props,\n      debugStack,\n      debugTask\n    ) {\n      self = props.ref;\n      type = {\n        $$typeof: REACT_ELEMENT_TYPE,\n        type: type,\n        key: key,\n        props: props,\n        _owner: owner\n      };\n      null !== (void 0 !== self ? self : null)\n        ? Object.defineProperty(type, \"ref\", {\n            enumerable: !1,\n            get: elementRefGetterWithDeprecationWarning\n          })\n        : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n      type._store = {};\n      Object.defineProperty(type._store, \"validated\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: 0\n      });\n      Object.defineProperty(type, \"_debugInfo\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: null\n      });\n      Object.defineProperty(type, \"_debugStack\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugStack\n      });\n      Object.defineProperty(type, \"_debugTask\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugTask\n      });\n      Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n      return type;\n    }\n    function jsxDEVImpl(\n      type,\n      config,\n      maybeKey,\n      isStaticChildren,\n      source,\n      self,\n      debugStack,\n      debugTask\n    ) {\n      var children = config.children;\n      if (void 0 !== children)\n        if (isStaticChildren)\n          if (isArrayImpl(children)) {\n            for (\n              isStaticChildren = 0;\n              isStaticChildren < children.length;\n              isStaticChildren++\n            )\n              validateChildKeys(children[isStaticChildren]);\n            Object.freeze && Object.freeze(children);\n          } else\n            console.error(\n              \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n            );\n        else validateChildKeys(children);\n      if (hasOwnProperty.call(config, \"key\")) {\n        children = getComponentNameFromType(type);\n        var keys = Object.keys(config).filter(function (k) {\n          return \"key\" !== k;\n        });\n        isStaticChildren =\n          0 < keys.length\n            ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n            : \"{key: someKey}\";\n        didWarnAboutKeySpread[children + isStaticChildren] ||\n          ((keys =\n            0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n          console.error(\n            'A props object containing a \"key\" prop is being spread into JSX:\\n  let props = %s;\\n  <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n  let props = %s;\\n  <%s key={someKey} {...props} />',\n            isStaticChildren,\n            children,\n            keys,\n            children\n          ),\n          (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n      }\n      children = null;\n      void 0 !== maybeKey &&\n        (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n      hasValidKey(config) &&\n        (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n      if (\"key\" in config) {\n        maybeKey = {};\n        for (var propName in config)\n          \"key\" !== propName && (maybeKey[propName] = config[propName]);\n      } else maybeKey = config;\n      children &&\n        defineKeyPropWarningGetter(\n          maybeKey,\n          \"function\" === typeof type\n            ? type.displayName || type.name || \"Unknown\"\n            : type\n        );\n      return ReactElement(\n        type,\n        children,\n        self,\n        source,\n        getOwner(),\n        maybeKey,\n        debugStack,\n        debugTask\n      );\n    }\n    function validateChildKeys(node) {\n      \"object\" === typeof node &&\n        null !== node &&\n        node.$$typeof === REACT_ELEMENT_TYPE &&\n        node._store &&\n        (node._store.validated = 1);\n    }\n    var React = require(\"react\"),\n      REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n      REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n      REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n      REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n      REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n    Symbol.for(\"react.provider\");\n    var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n      REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n      REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n      REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n      REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n      REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n      REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n      REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n      REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n      ReactSharedInternals =\n        React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n      hasOwnProperty = Object.prototype.hasOwnProperty,\n      isArrayImpl = Array.isArray,\n      createTask = console.createTask\n        ? console.createTask\n        : function () {\n            return null;\n          };\n    React = {\n      \"react-stack-bottom-frame\": function (callStackForError) {\n        return callStackForError();\n      }\n    };\n    var specialPropKeyWarningShown;\n    var didWarnAboutElementRef = {};\n    var unknownOwnerDebugStack = React[\"react-stack-bottom-frame\"].bind(\n      React,\n      UnknownOwner\n    )();\n    var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n    var didWarnAboutKeySpread = {};\n    exports.Fragment = REACT_FRAGMENT_TYPE;\n    exports.jsx = function (type, config, maybeKey, source, self) {\n      var trackActualOwner =\n        1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return jsxDEVImpl(\n        type,\n        config,\n        maybeKey,\n        !1,\n        source,\n        self,\n        trackActualOwner\n          ? Error(\"react-stack-top-frame\")\n          : unknownOwnerDebugStack,\n        trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n    exports.jsxs = function (type, config, maybeKey, source, self) {\n      var trackActualOwner =\n        1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return jsxDEVImpl(\n        type,\n        config,\n        maybeKey,\n        !0,\n        source,\n        self,\n        trackActualOwner\n          ? Error(\"react-stack-top-frame\")\n          : unknownOwnerDebugStack,\n        trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n  const Context = React.createContext(defaultContext);\n  const Provider = (props) => {\n    const { children, ...context } = props;\n    const value = React.useMemo(() => context, Object.values(context));\n    return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n  };\n  Provider.displayName = rootComponentName + \"Provider\";\n  function useContext2(consumerName) {\n    const context = React.useContext(Context);\n    if (context) return context;\n    if (defaultContext !== void 0) return defaultContext;\n    throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n  }\n  return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n  let defaultContexts = [];\n  function createContext3(rootComponentName, defaultContext) {\n    const BaseContext = React.createContext(defaultContext);\n    const index = defaultContexts.length;\n    defaultContexts = [...defaultContexts, defaultContext];\n    const Provider = (props) => {\n      const { scope, children, ...context } = props;\n      const Context = scope?.[scopeName]?.[index] || BaseContext;\n      const value = React.useMemo(() => context, Object.values(context));\n      return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n    };\n    Provider.displayName = rootComponentName + \"Provider\";\n    function useContext2(consumerName, scope) {\n      const Context = scope?.[scopeName]?.[index] || BaseContext;\n      const context = React.useContext(Context);\n      if (context) return context;\n      if (defaultContext !== void 0) return defaultContext;\n      throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n    }\n    return [Provider, useContext2];\n  }\n  const createScope = () => {\n    const scopeContexts = defaultContexts.map((defaultContext) => {\n      return React.createContext(defaultContext);\n    });\n    return function useScope(scope) {\n      const contexts = scope?.[scopeName] || scopeContexts;\n      return React.useMemo(\n        () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n        [scope, contexts]\n      );\n    };\n  };\n  createScope.scopeName = scopeName;\n  return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n  const baseScope = scopes[0];\n  if (scopes.length === 1) return baseScope;\n  const createScope = () => {\n    const scopeHooks = scopes.map((createScope2) => ({\n      useScope: createScope2(),\n      scopeName: createScope2.scopeName\n    }));\n    return function useComposedScopes(overrideScopes) {\n      const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n        const scopeProps = useScope(overrideScopes);\n        const currentScope = scopeProps[`__scope${scopeName}`];\n        return { ...nextScopes2, ...currentScope };\n      }, {});\n      return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n    };\n  };\n  createScope.scopeName = baseScope.scopeName;\n  return createScope;\n}\nexport {\n  createContext2 as createContext,\n  createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n  if (typeof ref === \"function\") {\n    return ref(value);\n  } else if (ref !== null && ref !== void 0) {\n    ref.current = value;\n  }\n}\nfunction composeRefs(...refs) {\n  return (node) => {\n    let hasCleanup = false;\n    const cleanups = refs.map((ref) => {\n      const cleanup = setRef(ref, node);\n      if (!hasCleanup && typeof cleanup == \"function\") {\n        hasCleanup = true;\n      }\n      return cleanup;\n    });\n    if (hasCleanup) {\n      return () => {\n        for (let i = 0; i < cleanups.length; i++) {\n          const cleanup = cleanups[i];\n          if (typeof cleanup == \"function\") {\n            cleanup();\n          } else {\n            setRef(refs[i], null);\n          }\n        }\n      };\n    }\n  };\n}\nfunction useComposedRefs(...refs) {\n  return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n  composeRefs,\n  useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/slot.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n  const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n  const Slot2 = React.forwardRef((props, forwardedRef) => {\n    const { children, ...slotProps } = props;\n    const childrenArray = React.Children.toArray(children);\n    const slottable = childrenArray.find(isSlottable);\n    if (slottable) {\n      const newElement = slottable.props.children;\n      const newChildren = childrenArray.map((child) => {\n        if (child === slottable) {\n          if (React.Children.count(newElement) > 1) return React.Children.only(null);\n          return React.isValidElement(newElement) ? newElement.props.children : null;\n        } else {\n          return child;\n        }\n      });\n      return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n    }\n    return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n  });\n  Slot2.displayName = `${ownerName}.Slot`;\n  return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n  const SlotClone = React.forwardRef((props, forwardedRef) => {\n    const { children, ...slotProps } = props;\n    const childrenRef = React.isValidElement(children) ? getElementRef(children) : void 0;\n    const ref = useComposedRefs(childrenRef, forwardedRef);\n    if (React.isValidElement(children)) {\n      const props2 = mergeProps(slotProps, children.props);\n      if (children.type !== React.Fragment) {\n        props2.ref = ref;\n      }\n      return React.cloneElement(children, props2);\n    }\n    return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n  });\n  SlotClone.displayName = `${ownerName}.SlotClone`;\n  return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n  const Slottable2 = ({ children }) => {\n    return /* @__PURE__ */ jsx(Fragment2, { children });\n  };\n  Slottable2.displayName = `${ownerName}.Slottable`;\n  Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n  return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n  return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n  const overrideProps = { ...childProps };\n  for (const propName in childProps) {\n    const slotPropValue = slotProps[propName];\n    const childPropValue = childProps[propName];\n    const isHandler = /^on[A-Z]/.test(propName);\n    if (isHandler) {\n      if (slotPropValue && childPropValue) {\n        overrideProps[propName] = (...args) => {\n          const result = childPropValue(...args);\n          slotPropValue(...args);\n          return result;\n        };\n      } else if (slotPropValue) {\n        overrideProps[propName] = slotPropValue;\n      }\n    } else if (propName === \"style\") {\n      overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n    } else if (propName === \"className\") {\n      overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n    }\n  }\n  return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n  let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\nexport {\n  Slot as Root,\n  Slot,\n  Slottable,\n  createSlot,\n  createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n  const PROVIDER_NAME = name + \"CollectionProvider\";\n  const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n  const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n    PROVIDER_NAME,\n    { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n  );\n  const CollectionProvider = (props) => {\n    const { scope, children } = props;\n    const ref = React.useRef(null);\n    const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n    return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n  };\n  CollectionProvider.displayName = PROVIDER_NAME;\n  const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n  const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n  const CollectionSlot = React.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children } = props;\n      const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n      const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n      return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n    }\n  );\n  CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n  const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n  const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n  const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n  const CollectionItemSlot = React.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children, ...itemData } = props;\n      const ref = React.useRef(null);\n      const composedRefs = useComposedRefs(forwardedRef, ref);\n      const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n      React.useEffect(() => {\n        context.itemMap.set(ref, { ref, ...itemData });\n        return () => void context.itemMap.delete(ref);\n      });\n      return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n    }\n  );\n  CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n  function useCollection(scope) {\n    const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n    const getItems = React.useCallback(() => {\n      const collectionNode = context.collectionRef.current;\n      if (!collectionNode) return [];\n      const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n      const items = Array.from(context.itemMap.values());\n      const orderedItems = items.sort(\n        (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n      );\n      return orderedItems;\n    }, [context.collectionRef, context.itemMap]);\n    return getItems;\n  }\n  return [\n    { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n    useCollection,\n    createCollectionScope\n  ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n  #keys;\n  constructor(entries) {\n    super(entries);\n    this.#keys = [...super.keys()];\n    __instanciated.set(this, true);\n  }\n  set(key, value) {\n    if (__instanciated.get(this)) {\n      if (this.has(key)) {\n        this.#keys[this.#keys.indexOf(key)] = key;\n      } else {\n        this.#keys.push(key);\n      }\n    }\n    super.set(key, value);\n    return this;\n  }\n  insert(index, key, value) {\n    const has = this.has(key);\n    const length = this.#keys.length;\n    const relativeIndex = toSafeInteger(index);\n    let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n    const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n    if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n      this.set(key, value);\n      return this;\n    }\n    const size = this.size + (has ? 0 : 1);\n    if (relativeIndex < 0) {\n      actualIndex++;\n    }\n    const keys = [...this.#keys];\n    let nextValue;\n    let shouldSkip = false;\n    for (let i = actualIndex; i < size; i++) {\n      if (actualIndex === i) {\n        let nextKey = keys[i];\n        if (keys[i] === key) {\n          nextKey = keys[i + 1];\n        }\n        if (has) {\n          this.delete(key);\n        }\n        nextValue = this.get(nextKey);\n        this.set(key, value);\n      } else {\n        if (!shouldSkip && keys[i - 1] === key) {\n          shouldSkip = true;\n        }\n        const currentKey = keys[shouldSkip ? i : i - 1];\n        const currentValue = nextValue;\n        nextValue = this.get(currentKey);\n        this.delete(currentKey);\n        this.set(currentKey, currentValue);\n      }\n    }\n    return this;\n  }\n  with(index, key, value) {\n    const copy = new _OrderedDict(this);\n    copy.insert(index, key, value);\n    return copy;\n  }\n  before(key) {\n    const index = this.#keys.indexOf(key) - 1;\n    if (index < 0) {\n      return void 0;\n    }\n    return this.entryAt(index);\n  }\n  /**\n   * Sets a new key-value pair at the position before the given key.\n   */\n  setBefore(key, newKey, value) {\n    const index = this.#keys.indexOf(key);\n    if (index === -1) {\n      return this;\n    }\n    return this.insert(index, newKey, value);\n  }\n  after(key) {\n    let index = this.#keys.indexOf(key);\n    index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n    if (index === -1) {\n      return void 0;\n    }\n    return this.entryAt(index);\n  }\n  /**\n   * Sets a new key-value pair at the position after the given key.\n   */\n  setAfter(key, newKey, value) {\n    const index = this.#keys.indexOf(key);\n    if (index === -1) {\n      return this;\n    }\n    return this.insert(index + 1, newKey, value);\n  }\n  first() {\n    return this.entryAt(0);\n  }\n  last() {\n    return this.entryAt(-1);\n  }\n  clear() {\n    this.#keys = [];\n    return super.clear();\n  }\n  delete(key) {\n    const deleted = super.delete(key);\n    if (deleted) {\n      this.#keys.splice(this.#keys.indexOf(key), 1);\n    }\n    return deleted;\n  }\n  deleteAt(index) {\n    const key = this.keyAt(index);\n    if (key !== void 0) {\n      return this.delete(key);\n    }\n    return false;\n  }\n  at(index) {\n    const key = at(this.#keys, index);\n    if (key !== void 0) {\n      return this.get(key);\n    }\n  }\n  entryAt(index) {\n    const key = at(this.#keys, index);\n    if (key !== void 0) {\n      return [key, this.get(key)];\n    }\n  }\n  indexOf(key) {\n    return this.#keys.indexOf(key);\n  }\n  keyAt(index) {\n    return at(this.#keys, index);\n  }\n  from(key, offset) {\n    const index = this.indexOf(key);\n    if (index === -1) {\n      return void 0;\n    }\n    let dest = index + offset;\n    if (dest < 0) dest = 0;\n    if (dest >= this.size) dest = this.size - 1;\n    return this.at(dest);\n  }\n  keyFrom(key, offset) {\n    const index = this.indexOf(key);\n    if (index === -1) {\n      return void 0;\n    }\n    let dest = index + offset;\n    if (dest < 0) dest = 0;\n    if (dest >= this.size) dest = this.size - 1;\n    return this.keyAt(dest);\n  }\n  find(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return entry;\n      }\n      index++;\n    }\n    return void 0;\n  }\n  findIndex(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return index;\n      }\n      index++;\n    }\n    return -1;\n  }\n  filter(predicate, thisArg) {\n    const entries = [];\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        entries.push(entry);\n      }\n      index++;\n    }\n    return new _OrderedDict(entries);\n  }\n  map(callbackfn, thisArg) {\n    const entries = [];\n    let index = 0;\n    for (const entry of this) {\n      entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n      index++;\n    }\n    return new _OrderedDict(entries);\n  }\n  reduce(...args) {\n    const [callbackfn, initialValue] = args;\n    let index = 0;\n    let accumulator = initialValue ?? this.at(0);\n    for (const entry of this) {\n      if (index === 0 && args.length === 1) {\n        accumulator = entry;\n      } else {\n        accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n      }\n      index++;\n    }\n    return accumulator;\n  }\n  reduceRight(...args) {\n    const [callbackfn, initialValue] = args;\n    let accumulator = initialValue ?? this.at(-1);\n    for (let index = this.size - 1; index >= 0; index--) {\n      const entry = this.at(index);\n      if (index === this.size - 1 && args.length === 1) {\n        accumulator = entry;\n      } else {\n        accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n      }\n    }\n    return accumulator;\n  }\n  toSorted(compareFn) {\n    const entries = [...this.entries()].sort(compareFn);\n    return new _OrderedDict(entries);\n  }\n  toReversed() {\n    const reversed = new _OrderedDict();\n    for (let index = this.size - 1; index >= 0; index--) {\n      const key = this.keyAt(index);\n      const element = this.get(key);\n      reversed.set(key, element);\n    }\n    return reversed;\n  }\n  toSpliced(...args) {\n    const entries = [...this.entries()];\n    entries.splice(...args);\n    return new _OrderedDict(entries);\n  }\n  slice(start, end) {\n    const result = new _OrderedDict();\n    let stop = this.size - 1;\n    if (start === void 0) {\n      return result;\n    }\n    if (start < 0) {\n      start = start + this.size;\n    }\n    if (end !== void 0 && end > 0) {\n      stop = end - 1;\n    }\n    for (let index = start; index <= stop; index++) {\n      const key = this.keyAt(index);\n      const element = this.get(key);\n      result.set(key, element);\n    }\n    return result;\n  }\n  every(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return false;\n      }\n      index++;\n    }\n    return true;\n  }\n  some(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return true;\n      }\n      index++;\n    }\n    return false;\n  }\n};\nfunction at(array, index) {\n  if (\"at\" in Array.prototype) {\n    return Array.prototype.at.call(array, index);\n  }\n  const actualIndex = toSafeIndex(array, index);\n  return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n  const length = array.length;\n  const relativeIndex = toSafeInteger(index);\n  const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n  return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n  return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n  const PROVIDER_NAME = name + \"CollectionProvider\";\n  const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n  const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n    PROVIDER_NAME,\n    {\n      collectionElement: null,\n      collectionRef: { current: null },\n      collectionRefObject: { current: null },\n      itemMap: new OrderedDict(),\n      setItemMap: () => void 0\n    }\n  );\n  const CollectionProvider = ({ state, ...props }) => {\n    return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n  };\n  CollectionProvider.displayName = PROVIDER_NAME;\n  const CollectionInit = (props) => {\n    const state = useInitCollection();\n    return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n  };\n  CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n  const CollectionProviderImpl = (props) => {\n    const { scope, children, state } = props;\n    const ref = React2.useRef(null);\n    const [collectionElement, setCollectionElement] = React2.useState(\n      null\n    );\n    const composeRefs = useComposedRefs2(ref, setCollectionElement);\n    const [itemMap, setItemMap] = state;\n    React2.useEffect(() => {\n      if (!collectionElement) return;\n      const observer = getChildListObserver(() => {\n      });\n      observer.observe(collectionElement, {\n        childList: true,\n        subtree: true\n      });\n      return () => {\n        observer.disconnect();\n      };\n    }, [collectionElement]);\n    return /* @__PURE__ */ jsx2(\n      CollectionContextProvider,\n      {\n        scope,\n        itemMap,\n        setItemMap,\n        collectionRef: composeRefs,\n        collectionRefObject: ref,\n        collectionElement,\n        children\n      }\n    );\n  };\n  CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n  const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n  const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n  const CollectionSlot = React2.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children } = props;\n      const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n      const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n      return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n    }\n  );\n  CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n  const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n  const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n  const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n  const CollectionItemSlot = React2.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children, ...itemData } = props;\n      const ref = React2.useRef(null);\n      const [element, setElement] = React2.useState(null);\n      const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n      const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n      const { setItemMap } = context;\n      const itemDataRef = React2.useRef(itemData);\n      if (!shallowEqual(itemDataRef.current, itemData)) {\n        itemDataRef.current = itemData;\n      }\n      const memoizedItemData = itemDataRef.current;\n      React2.useEffect(() => {\n        const itemData2 = memoizedItemData;\n        setItemMap((map) => {\n          if (!element) {\n            return map;\n          }\n          if (!map.has(element)) {\n            map.set(element, { ...itemData2, element });\n            return map.toSorted(sortByDocumentPosition);\n          }\n          return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n        });\n        return () => {\n          setItemMap((map) => {\n            if (!element || !map.has(element)) {\n              return map;\n            }\n            map.delete(element);\n            return new OrderedDict(map);\n          });\n        };\n      }, [element, memoizedItemData, setItemMap]);\n      return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n    }\n  );\n  CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n  function useInitCollection() {\n    return React2.useState(new OrderedDict());\n  }\n  function useCollection(scope) {\n    const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n    return itemMap;\n  }\n  const functions = {\n    createCollectionScope,\n    useCollection,\n    useInitCollection\n  };\n  return [\n    { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n    functions\n  ];\n}\nfunction shallowEqual(a, b) {\n  if (a === b) return true;\n  if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n  if (a == null || b == null) return false;\n  const keysA = Object.keys(a);\n  const keysB = Object.keys(b);\n  if (keysA.length !== keysB.length) return false;\n  for (const key of keysA) {\n    if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n    if (a[key] !== b[key]) return false;\n  }\n  return true;\n}\nfunction isElementPreceding(a, b) {\n  return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n  return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n  const observer = new MutationObserver((mutationsList) => {\n    for (const mutation of mutationsList) {\n      if (mutation.type === \"childList\") {\n        callback();\n        return;\n      }\n    }\n  });\n  return observer;\n}\nexport {\n  createCollection,\n  createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/core/primitive/src/primitive.tsx\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n  return function handleEvent(event) {\n    originalEventHandler?.(event);\n    if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n      return ourEventHandler?.(event);\n    }\n  };\n}\nexport {\n  composeEventHandlers\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n  useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n  prop,\n  defaultProp,\n  onChange = () => {\n  },\n  caller\n}) {\n  const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n    defaultProp,\n    onChange\n  });\n  const isControlled = prop !== void 0;\n  const value = isControlled ? prop : uncontrolledProp;\n  if (true) {\n    const isControlledRef = React.useRef(prop !== void 0);\n    React.useEffect(() => {\n      const wasControlled = isControlledRef.current;\n      if (wasControlled !== isControlled) {\n        const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n        const to = isControlled ? \"controlled\" : \"uncontrolled\";\n        console.warn(\n          `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n        );\n      }\n      isControlledRef.current = isControlled;\n    }, [isControlled, caller]);\n  }\n  const setValue = React.useCallback(\n    (nextValue) => {\n      if (isControlled) {\n        const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n        if (value2 !== prop) {\n          onChangeRef.current?.(value2);\n        }\n      } else {\n        setUncontrolledProp(nextValue);\n      }\n    },\n    [isControlled, prop, setUncontrolledProp, onChangeRef]\n  );\n  return [value, setValue];\n}\nfunction useUncontrolledState({\n  defaultProp,\n  onChange\n}) {\n  const [value, setValue] = React.useState(defaultProp);\n  const prevValueRef = React.useRef(value);\n  const onChangeRef = React.useRef(onChange);\n  useInsertionEffect(() => {\n    onChangeRef.current = onChange;\n  }, [onChange]);\n  React.useEffect(() => {\n    if (prevValueRef.current !== value) {\n      onChangeRef.current?.(value);\n      prevValueRef.current = value;\n    }\n  }, [value, prevValueRef]);\n  return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n  const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n  const isControlled = controlledState !== void 0;\n  const onChange = useEffectEvent(onChangeProp);\n  if (true) {\n    const isControlledRef = React2.useRef(controlledState !== void 0);\n    React2.useEffect(() => {\n      const wasControlled = isControlledRef.current;\n      if (wasControlled !== isControlled) {\n        const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n        const to = isControlled ? \"controlled\" : \"uncontrolled\";\n        console.warn(\n          `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n        );\n      }\n      isControlledRef.current = isControlled;\n    }, [isControlled, caller]);\n  }\n  const args = [{ ...initialArg, state: defaultProp }];\n  if (init) {\n    args.push(init);\n  }\n  const [internalState, dispatch] = React2.useReducer(\n    (state2, action) => {\n      if (action.type === SYNC_STATE) {\n        return { ...state2, state: action.state };\n      }\n      const next = reducer(state2, action);\n      if (isControlled && !Object.is(next.state, state2.state)) {\n        onChange(next.state);\n      }\n      return next;\n    },\n    ...args\n  );\n  const uncontrolledState = internalState.state;\n  const prevValueRef = React2.useRef(uncontrolledState);\n  React2.useEffect(() => {\n    if (prevValueRef.current !== uncontrolledState) {\n      prevValueRef.current = uncontrolledState;\n      if (!isControlled) {\n        onChange(uncontrolledState);\n      }\n    }\n  }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n  const state = React2.useMemo(() => {\n    const isControlled2 = controlledState !== void 0;\n    if (isControlled2) {\n      return { ...internalState, state: controlledState };\n    }\n    return internalState;\n  }, [internalState, controlledState]);\n  React2.useEffect(() => {\n    if (isControlled && !Object.is(controlledState, internalState.state)) {\n      dispatch({ type: SYNC_STATE, state: controlledState });\n    }\n  }, [controlledState, internalState.state, isControlled]);\n  return [state, dispatch];\n}\nexport {\n  useControllableState,\n  useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n  \"a\",\n  \"button\",\n  \"div\",\n  \"form\",\n  \"h2\",\n  \"h3\",\n  \"img\",\n  \"input\",\n  \"label\",\n  \"li\",\n  \"nav\",\n  \"ol\",\n  \"p\",\n  \"select\",\n  \"span\",\n  \"svg\",\n  \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n  const Slot = createSlot(`Primitive.${node}`);\n  const Node = React.forwardRef((props, forwardedRef) => {\n    const { asChild, ...primitiveProps } = props;\n    const Comp = asChild ? Slot : node;\n    if (typeof window !== \"undefined\") {\n      window[Symbol.for(\"radix-ui\")] = true;\n    }\n    return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n  });\n  Node.displayName = `Primitive.${node}`;\n  return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n  if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n  Primitive,\n  Root,\n  dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n  return React.useReducer((state, event) => {\n    const nextState = machine[state][event];\n    return nextState ?? state;\n  }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n  const { present, children } = props;\n  const presence = usePresence(present);\n  const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n  const ref = useComposedRefs(presence.ref, getElementRef(child));\n  const forceMount = typeof children === \"function\";\n  return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n  const [node, setNode] = React2.useState();\n  const stylesRef = React2.useRef(null);\n  const prevPresentRef = React2.useRef(present);\n  const prevAnimationNameRef = React2.useRef(\"none\");\n  const initialState = present ? \"mounted\" : \"unmounted\";\n  const [state, send] = useStateMachine(initialState, {\n    mounted: {\n      UNMOUNT: \"unmounted\",\n      ANIMATION_OUT: \"unmountSuspended\"\n    },\n    unmountSuspended: {\n      MOUNT: \"mounted\",\n      ANIMATION_END: \"unmounted\"\n    },\n    unmounted: {\n      MOUNT: \"mounted\"\n    }\n  });\n  React2.useEffect(() => {\n    const currentAnimationName = getAnimationName(stylesRef.current);\n    prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n  }, [state]);\n  useLayoutEffect(() => {\n    const styles = stylesRef.current;\n    const wasPresent = prevPresentRef.current;\n    const hasPresentChanged = wasPresent !== present;\n    if (hasPresentChanged) {\n      const prevAnimationName = prevAnimationNameRef.current;\n      const currentAnimationName = getAnimationName(styles);\n      if (present) {\n        send(\"MOUNT\");\n      } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n        send(\"UNMOUNT\");\n      } else {\n        const isAnimating = prevAnimationName !== currentAnimationName;\n        if (wasPresent && isAnimating) {\n          send(\"ANIMATION_OUT\");\n        } else {\n          send(\"UNMOUNT\");\n        }\n      }\n      prevPresentRef.current = present;\n    }\n  }, [present, send]);\n  useLayoutEffect(() => {\n    if (node) {\n      let timeoutId;\n      const ownerWindow = node.ownerDocument.defaultView ?? window;\n      const handleAnimationEnd = (event) => {\n        const currentAnimationName = getAnimationName(stylesRef.current);\n        const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n        if (event.target === node && isCurrentAnimation) {\n          send(\"ANIMATION_END\");\n          if (!prevPresentRef.current) {\n            const currentFillMode = node.style.animationFillMode;\n            node.style.animationFillMode = \"forwards\";\n            timeoutId = ownerWindow.setTimeout(() => {\n              if (node.style.animationFillMode === \"forwards\") {\n                node.style.animationFillMode = currentFillMode;\n              }\n            });\n          }\n        }\n      };\n      const handleAnimationStart = (event) => {\n        if (event.target === node) {\n          prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n        }\n      };\n      node.addEventListener(\"animationstart\", handleAnimationStart);\n      node.addEventListener(\"animationcancel\", handleAnimationEnd);\n      node.addEventListener(\"animationend\", handleAnimationEnd);\n      return () => {\n        ownerWindow.clearTimeout(timeoutId);\n        node.removeEventListener(\"animationstart\", handleAnimationStart);\n        node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n        node.removeEventListener(\"animationend\", handleAnimationEnd);\n      };\n    } else {\n      send(\"ANIMATION_END\");\n    }\n  }, [node, send]);\n  return {\n    isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n    ref: React2.useCallback((node2) => {\n      stylesRef.current = node2 ? getComputedStyle(node2) : null;\n      setNode(node2);\n    }, [])\n  };\n}\nfunction getAnimationName(styles) {\n  return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n  let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n  Presence,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n  const [id, setId] = React.useState(useReactId());\n  useLayoutEffect(() => {\n    if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n  }, [deterministicId]);\n  return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n  useId\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collapsible.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar COLLAPSIBLE_NAME = \"Collapsible\";\nvar [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\nvar [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);\nvar Collapsible = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeCollapsible,\n      open: openProp,\n      defaultOpen,\n      disabled,\n      onOpenChange,\n      ...collapsibleProps\n    } = props;\n    const [open, setOpen] = useControllableState({\n      prop: openProp,\n      defaultProp: defaultOpen ?? false,\n      onChange: onOpenChange,\n      caller: COLLAPSIBLE_NAME\n    });\n    return /* @__PURE__ */ jsx(\n      CollapsibleProvider,\n      {\n        scope: __scopeCollapsible,\n        disabled,\n        contentId: useId(),\n        open,\n        onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n        children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            \"data-state\": getState(open),\n            \"data-disabled\": disabled ? \"\" : void 0,\n            ...collapsibleProps,\n            ref: forwardedRef\n          }\n        )\n      }\n    );\n  }\n);\nCollapsible.displayName = COLLAPSIBLE_NAME;\nvar TRIGGER_NAME = \"CollapsibleTrigger\";\nvar CollapsibleTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeCollapsible, ...triggerProps } = props;\n    const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-controls\": context.contentId,\n        \"aria-expanded\": context.open || false,\n        \"data-state\": getState(context.open),\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        disabled: context.disabled,\n        ...triggerProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n  }\n);\nCollapsibleTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"CollapsibleContent\";\nvar CollapsibleContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const { forceMount, ...contentProps } = props;\n    const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });\n  }\n);\nCollapsibleContent.displayName = CONTENT_NAME;\nvar CollapsibleContentImpl = React.forwardRef((props, forwardedRef) => {\n  const { __scopeCollapsible, present, children, ...contentProps } = props;\n  const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n  const [isPresent, setIsPresent] = React.useState(present);\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const heightRef = React.useRef(0);\n  const height = heightRef.current;\n  const widthRef = React.useRef(0);\n  const width = widthRef.current;\n  const isOpen = context.open || isPresent;\n  const isMountAnimationPreventedRef = React.useRef(isOpen);\n  const originalStylesRef = React.useRef(void 0);\n  React.useEffect(() => {\n    const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n    return () => cancelAnimationFrame(rAF);\n  }, []);\n  useLayoutEffect(() => {\n    const node = ref.current;\n    if (node) {\n      originalStylesRef.current = originalStylesRef.current || {\n        transitionDuration: node.style.transitionDuration,\n        animationName: node.style.animationName\n      };\n      node.style.transitionDuration = \"0s\";\n      node.style.animationName = \"none\";\n      const rect = node.getBoundingClientRect();\n      heightRef.current = rect.height;\n      widthRef.current = rect.width;\n      if (!isMountAnimationPreventedRef.current) {\n        node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n        node.style.animationName = originalStylesRef.current.animationName;\n      }\n      setIsPresent(present);\n    }\n  }, [context.open, present]);\n  return /* @__PURE__ */ jsx(\n    Primitive.div,\n    {\n      \"data-state\": getState(context.open),\n      \"data-disabled\": context.disabled ? \"\" : void 0,\n      id: context.contentId,\n      hidden: !isOpen,\n      ...contentProps,\n      ref: composedRefs,\n      style: {\n        [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,\n        [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,\n        ...props.style\n      },\n      children: isOpen && children\n    }\n  );\n});\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar Root = Collapsible;\nvar Trigger = CollapsibleTrigger;\nvar Content = CollapsibleContent;\nexport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n  Content,\n  Root,\n  Trigger,\n  createCollapsibleScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n  const { dir, children } = props;\n  return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n  const globalDir = React.useContext(DirectionContext);\n  return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n  DirectionProvider,\n  Provider,\n  useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/accordion.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\nimport { createCollapsibleScope } from \"@radix-ui/react-collapsible\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ACCORDION_NAME = \"Accordion\";\nvar ACCORDION_KEYS = [\"Home\", \"End\", \"ArrowDown\", \"ArrowUp\", \"ArrowLeft\", \"ArrowRight\"];\nvar [Collection, useCollection, createCollectionScope] = createCollection(ACCORDION_NAME);\nvar [createAccordionContext, createAccordionScope] = createContextScope(ACCORDION_NAME, [\n  createCollectionScope,\n  createCollapsibleScope\n]);\nvar useCollapsibleScope = createCollapsibleScope();\nvar Accordion = React.forwardRef(\n  (props, forwardedRef) => {\n    const { type, ...accordionProps } = props;\n    const singleProps = accordionProps;\n    const multipleProps = accordionProps;\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeAccordion, children: type === \"multiple\" ? /* @__PURE__ */ jsx(AccordionImplMultiple, { ...multipleProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(AccordionImplSingle, { ...singleProps, ref: forwardedRef }) });\n  }\n);\nAccordion.displayName = ACCORDION_NAME;\nvar [AccordionValueProvider, useAccordionValueContext] = createAccordionContext(ACCORDION_NAME);\nvar [AccordionCollapsibleProvider, useAccordionCollapsibleContext] = createAccordionContext(\n  ACCORDION_NAME,\n  { collapsible: false }\n);\nvar AccordionImplSingle = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      value: valueProp,\n      defaultValue,\n      onValueChange = () => {\n      },\n      collapsible = false,\n      ...accordionSingleProps\n    } = props;\n    const [value, setValue] = useControllableState({\n      prop: valueProp,\n      defaultProp: defaultValue ?? \"\",\n      onChange: onValueChange,\n      caller: ACCORDION_NAME\n    });\n    return /* @__PURE__ */ jsx(\n      AccordionValueProvider,\n      {\n        scope: props.__scopeAccordion,\n        value: React.useMemo(() => value ? [value] : [], [value]),\n        onItemOpen: setValue,\n        onItemClose: React.useCallback(() => collapsible && setValue(\"\"), [collapsible, setValue]),\n        children: /* @__PURE__ */ jsx(AccordionCollapsibleProvider, { scope: props.__scopeAccordion, collapsible, children: /* @__PURE__ */ jsx(AccordionImpl, { ...accordionSingleProps, ref: forwardedRef }) })\n      }\n    );\n  }\n);\nvar AccordionImplMultiple = React.forwardRef((props, forwardedRef) => {\n  const {\n    value: valueProp,\n    defaultValue,\n    onValueChange = () => {\n    },\n    ...accordionMultipleProps\n  } = props;\n  const [value, setValue] = useControllableState({\n    prop: valueProp,\n    defaultProp: defaultValue ?? [],\n    onChange: onValueChange,\n    caller: ACCORDION_NAME\n  });\n  const handleItemOpen = React.useCallback(\n    (itemValue) => setValue((prevValue = []) => [...prevValue, itemValue]),\n    [setValue]\n  );\n  const handleItemClose = React.useCallback(\n    (itemValue) => setValue((prevValue = []) => prevValue.filter((value2) => value2 !== itemValue)),\n    [setValue]\n  );\n  return /* @__PURE__ */ jsx(\n    AccordionValueProvider,\n    {\n      scope: props.__scopeAccordion,\n      value,\n      onItemOpen: handleItemOpen,\n      onItemClose: handleItemClose,\n      children: /* @__PURE__ */ jsx(AccordionCollapsibleProvider, { scope: props.__scopeAccordion, collapsible: true, children: /* @__PURE__ */ jsx(AccordionImpl, { ...accordionMultipleProps, ref: forwardedRef }) })\n    }\n  );\n});\nvar [AccordionImplProvider, useAccordionContext] = createAccordionContext(ACCORDION_NAME);\nvar AccordionImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeAccordion, disabled, dir, orientation = \"vertical\", ...accordionProps } = props;\n    const accordionRef = React.useRef(null);\n    const composedRefs = useComposedRefs(accordionRef, forwardedRef);\n    const getItems = useCollection(__scopeAccordion);\n    const direction = useDirection(dir);\n    const isDirectionLTR = direction === \"ltr\";\n    const handleKeyDown = composeEventHandlers(props.onKeyDown, (event) => {\n      if (!ACCORDION_KEYS.includes(event.key)) return;\n      const target = event.target;\n      const triggerCollection = getItems().filter((item) => !item.ref.current?.disabled);\n      const triggerIndex = triggerCollection.findIndex((item) => item.ref.current === target);\n      const triggerCount = triggerCollection.length;\n      if (triggerIndex === -1) return;\n      event.preventDefault();\n      let nextIndex = triggerIndex;\n      const homeIndex = 0;\n      const endIndex = triggerCount - 1;\n      const moveNext = () => {\n        nextIndex = triggerIndex + 1;\n        if (nextIndex > endIndex) {\n          nextIndex = homeIndex;\n        }\n      };\n      const movePrev = () => {\n        nextIndex = triggerIndex - 1;\n        if (nextIndex < homeIndex) {\n          nextIndex = endIndex;\n        }\n      };\n      switch (event.key) {\n        case \"Home\":\n          nextIndex = homeIndex;\n          break;\n        case \"End\":\n          nextIndex = endIndex;\n          break;\n        case \"ArrowRight\":\n          if (orientation === \"horizontal\") {\n            if (isDirectionLTR) {\n              moveNext();\n            } else {\n              movePrev();\n            }\n          }\n          break;\n        case \"ArrowDown\":\n          if (orientation === \"vertical\") {\n            moveNext();\n          }\n          break;\n        case \"ArrowLeft\":\n          if (orientation === \"horizontal\") {\n            if (isDirectionLTR) {\n              movePrev();\n            } else {\n              moveNext();\n            }\n          }\n          break;\n        case \"ArrowUp\":\n          if (orientation === \"vertical\") {\n            movePrev();\n          }\n          break;\n      }\n      const clampedIndex = nextIndex % triggerCount;\n      triggerCollection[clampedIndex].ref.current?.focus();\n    });\n    return /* @__PURE__ */ jsx(\n      AccordionImplProvider,\n      {\n        scope: __scopeAccordion,\n        disabled,\n        direction: dir,\n        orientation,\n        children: /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeAccordion, children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            ...accordionProps,\n            \"data-orientation\": orientation,\n            ref: composedRefs,\n            onKeyDown: disabled ? void 0 : handleKeyDown\n          }\n        ) })\n      }\n    );\n  }\n);\nvar ITEM_NAME = \"AccordionItem\";\nvar [AccordionItemProvider, useAccordionItemContext] = createAccordionContext(ITEM_NAME);\nvar AccordionItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeAccordion, value, ...accordionItemProps } = props;\n    const accordionContext = useAccordionContext(ITEM_NAME, __scopeAccordion);\n    const valueContext = useAccordionValueContext(ITEM_NAME, __scopeAccordion);\n    const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n    const triggerId = useId();\n    const open = value && valueContext.value.includes(value) || false;\n    const disabled = accordionContext.disabled || props.disabled;\n    return /* @__PURE__ */ jsx(\n      AccordionItemProvider,\n      {\n        scope: __scopeAccordion,\n        open,\n        disabled,\n        triggerId,\n        children: /* @__PURE__ */ jsx(\n          CollapsiblePrimitive.Root,\n          {\n            \"data-orientation\": accordionContext.orientation,\n            \"data-state\": getState(open),\n            ...collapsibleScope,\n            ...accordionItemProps,\n            ref: forwardedRef,\n            disabled,\n            open,\n            onOpenChange: (open2) => {\n              if (open2) {\n                valueContext.onItemOpen(value);\n              } else {\n                valueContext.onItemClose(value);\n              }\n            }\n          }\n        )\n      }\n    );\n  }\n);\nAccordionItem.displayName = ITEM_NAME;\nvar HEADER_NAME = \"AccordionHeader\";\nvar AccordionHeader = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeAccordion, ...headerProps } = props;\n    const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n    const itemContext = useAccordionItemContext(HEADER_NAME, __scopeAccordion);\n    return /* @__PURE__ */ jsx(\n      Primitive.h3,\n      {\n        \"data-orientation\": accordionContext.orientation,\n        \"data-state\": getState(itemContext.open),\n        \"data-disabled\": itemContext.disabled ? \"\" : void 0,\n        ...headerProps,\n        ref: forwardedRef\n      }\n    );\n  }\n);\nAccordionHeader.displayName = HEADER_NAME;\nvar TRIGGER_NAME = \"AccordionTrigger\";\nvar AccordionTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeAccordion, ...triggerProps } = props;\n    const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n    const itemContext = useAccordionItemContext(TRIGGER_NAME, __scopeAccordion);\n    const collapsibleContext = useAccordionCollapsibleContext(TRIGGER_NAME, __scopeAccordion);\n    const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n    return /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeAccordion, children: /* @__PURE__ */ jsx(\n      CollapsiblePrimitive.Trigger,\n      {\n        \"aria-disabled\": itemContext.open && !collapsibleContext.collapsible || void 0,\n        \"data-orientation\": accordionContext.orientation,\n        id: itemContext.triggerId,\n        ...collapsibleScope,\n        ...triggerProps,\n        ref: forwardedRef\n      }\n    ) });\n  }\n);\nAccordionTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"AccordionContent\";\nvar AccordionContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeAccordion, ...contentProps } = props;\n    const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n    const itemContext = useAccordionItemContext(CONTENT_NAME, __scopeAccordion);\n    const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n    return /* @__PURE__ */ jsx(\n      CollapsiblePrimitive.Content,\n      {\n        role: \"region\",\n        \"aria-labelledby\": itemContext.triggerId,\n        \"data-orientation\": accordionContext.orientation,\n        ...collapsibleScope,\n        ...contentProps,\n        ref: forwardedRef,\n        style: {\n          [\"--radix-accordion-content-height\"]: \"var(--radix-collapsible-content-height)\",\n          [\"--radix-accordion-content-width\"]: \"var(--radix-collapsible-content-width)\",\n          ...props.style\n        }\n      }\n    );\n  }\n);\nAccordionContent.displayName = CONTENT_NAME;\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar Root2 = Accordion;\nvar Item = AccordionItem;\nvar Header = AccordionHeader;\nvar Trigger2 = AccordionTrigger;\nvar Content2 = AccordionContent;\nexport {\n  Accordion,\n  AccordionContent,\n  AccordionHeader,\n  AccordionItem,\n  AccordionTrigger,\n  Content2 as Content,\n  Header,\n  Item,\n  Root2 as Root,\n  Trigger2 as Trigger,\n  createAccordionScope\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n  /^([A-Z])|[\\s-_]+(\\w)/g,\n  (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n  const camelCase = toCamelCase(string);\n  return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n  return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: 24,\n  height: 24,\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\",\n  strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n  ({\n    color = \"currentColor\",\n    size = 24,\n    strokeWidth = 2,\n    absoluteStrokeWidth,\n    className = \"\",\n    children,\n    iconNode,\n    ...rest\n  }, ref) => {\n    return createElement(\n      \"svg\",\n      {\n        ref,\n        ...defaultAttributes,\n        width: size,\n        height: size,\n        stroke: color,\n        strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n        className: mergeClasses(\"lucide\", className),\n        ...rest\n      },\n      [\n        ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n        ...Array.isArray(children) ? children : [children]\n      ]\n    );\n  }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n  const Component = forwardRef(\n    ({ className, ...props }, ref) => createElement(Icon, {\n      ref,\n      iconNode,\n      className: mergeClasses(\n        `lucide-${toKebabCase(toPascalCase(iconName))}`,\n        `lucide-${iconName}`,\n        className\n      ),\n      ...props\n    })\n  );\n  Component.displayName = toPascalCase(iconName);\n  return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]];\nconst ChevronLeft = createLucideIcon(\"chevron-left\", __iconNode);\n\nexport { __iconNode, ChevronLeft as default };\n//# sourceMappingURL=chevron-left.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]];\nconst ChevronRight = createLucideIcon(\"chevron-right\", __iconNode);\n\nexport { __iconNode, ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n  [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n  [\"path\", { d: \"m15 9-6 6\", key: \"1uzhvr\" }],\n  [\"path\", { d: \"m9 9 6 6\", key: \"z0biqf\" }]\n];\nconst CircleX = createLucideIcon(\"circle-x\", __iconNode);\n\nexport { __iconNode, CircleX as default };\n//# sourceMappingURL=circle-x.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]];\nconst Circle = createLucideIcon(\"circle\", __iconNode);\n\nexport { __iconNode, Circle as default };\n//# sourceMappingURL=circle.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"circle\", { cx: \"12\", cy: \"12\", r: \"1\", key: \"41hilf\" }],\n  [\"circle\", { cx: \"19\", cy: \"12\", r: \"1\", key: \"1wjl8i\" }],\n  [\"circle\", { cx: \"5\", cy: \"12\", r: \"1\", key: \"1pcz8c\" }]\n];\nconst Ellipsis = createLucideIcon(\"ellipsis\", __iconNode);\n\nexport { __iconNode, Ellipsis as default };\n//# sourceMappingURL=ellipsis.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"line\", { x1: \"4\", x2: \"20\", y1: \"12\", y2: \"12\", key: \"1e0a9i\" }],\n  [\"line\", { x1: \"4\", x2: \"20\", y1: \"6\", y2: \"6\", key: \"1owob3\" }],\n  [\"line\", { x1: \"4\", x2: \"20\", y1: \"18\", y2: \"18\", key: \"yk5zj1\" }]\n];\nconst Menu = createLucideIcon(\"menu\", __iconNode);\n\nexport { __iconNode, Menu as default };\n//# sourceMappingURL=menu.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }],\n  [\"path\", { d: \"m21 21-4.3-4.3\", key: \"1qie3q\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n  [\"path\", { d: \"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\", key: \"4alrt4\" }],\n  [\"path\", { d: \"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\", key: \"v07s0e\" }],\n  [\"line\", { x1: \"10\", x2: \"10\", y1: \"11\", y2: \"17\", key: \"1uufr5\" }],\n  [\"line\", { x1: \"14\", x2: \"14\", y1: \"11\", y2: \"17\", key: \"xtxkd\" }]\n];\nconst Trash2 = createLucideIcon(\"trash-2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-2.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\n    \"path\",\n    {\n      d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n      key: \"wmoenq\"\n    }\n  ],\n  [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n  [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }],\n  [\"polyline\", { points: \"17 8 12 3 7 8\", key: \"t8dd8p\" }],\n  [\"line\", { x1: \"12\", x2: \"12\", y1: \"3\", y2: \"15\", key: \"widbto\" }]\n];\nconst Upload = createLucideIcon(\"upload\", __iconNode);\n\nexport { __iconNode, Upload as default };\n//# sourceMappingURL=upload.js.map\n","/**\n * @license lucide-react v0.488.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n  [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n        var _config_compoundVariants;\n        if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n        const { variants, defaultVariants } = config;\n        const getVariantClassNames = Object.keys(variants).map((variant)=>{\n            const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n            const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n            if (variantProp === null) return null;\n            const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n            return variants[variant][variantKey];\n        });\n        const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n            let [key, value] = param;\n            if (value === undefined) {\n                return acc;\n            }\n            acc[key] = value;\n            return acc;\n        }, {});\n        const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n            let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n            return Object.entries(compoundVariantOptions).every((param)=>{\n                let [key, value] = param;\n                return Array.isArray(value) ? value.includes({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                }[key]) : ({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                })[key] === value;\n            }) ? [\n                ...acc,\n                cvClass,\n                cvClassName\n            ] : acc;\n        }, []);\n        return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n    };\n\n","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n  const classMap = createClassMap(config);\n  const {\n    conflictingClassGroups,\n    conflictingClassGroupModifiers\n  } = config;\n  const getClassGroupId = className => {\n    const classParts = className.split(CLASS_PART_SEPARATOR);\n    // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n    if (classParts[0] === '' && classParts.length !== 1) {\n      classParts.shift();\n    }\n    return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n  };\n  const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n    const conflicts = conflictingClassGroups[classGroupId] || [];\n    if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n      return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n    }\n    return conflicts;\n  };\n  return {\n    getClassGroupId,\n    getConflictingClassGroupIds\n  };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n  if (classParts.length === 0) {\n    return classPartObject.classGroupId;\n  }\n  const currentClassPart = classParts[0];\n  const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n  const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n  if (classGroupFromNextClassPart) {\n    return classGroupFromNextClassPart;\n  }\n  if (classPartObject.validators.length === 0) {\n    return undefined;\n  }\n  const classRest = classParts.join(CLASS_PART_SEPARATOR);\n  return classPartObject.validators.find(({\n    validator\n  }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n  if (arbitraryPropertyRegex.test(className)) {\n    const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n    const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n    if (property) {\n      // I use two dots here because one dot is used as prefix for class groups in plugins\n      return 'arbitrary..' + property;\n    }\n  }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n  const {\n    theme,\n    classGroups\n  } = config;\n  const classMap = {\n    nextPart: new Map(),\n    validators: []\n  };\n  for (const classGroupId in classGroups) {\n    processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n  }\n  return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n  classGroup.forEach(classDefinition => {\n    if (typeof classDefinition === 'string') {\n      const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n      classPartObjectToEdit.classGroupId = classGroupId;\n      return;\n    }\n    if (typeof classDefinition === 'function') {\n      if (isThemeGetter(classDefinition)) {\n        processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n        return;\n      }\n      classPartObject.validators.push({\n        validator: classDefinition,\n        classGroupId\n      });\n      return;\n    }\n    Object.entries(classDefinition).forEach(([key, classGroup]) => {\n      processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n    });\n  });\n};\nconst getPart = (classPartObject, path) => {\n  let currentClassPartObject = classPartObject;\n  path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n    if (!currentClassPartObject.nextPart.has(pathPart)) {\n      currentClassPartObject.nextPart.set(pathPart, {\n        nextPart: new Map(),\n        validators: []\n      });\n    }\n    currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n  });\n  return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n  if (maxCacheSize < 1) {\n    return {\n      get: () => undefined,\n      set: () => {}\n    };\n  }\n  let cacheSize = 0;\n  let cache = new Map();\n  let previousCache = new Map();\n  const update = (key, value) => {\n    cache.set(key, value);\n    cacheSize++;\n    if (cacheSize > maxCacheSize) {\n      cacheSize = 0;\n      previousCache = cache;\n      cache = new Map();\n    }\n  };\n  return {\n    get(key) {\n      let value = cache.get(key);\n      if (value !== undefined) {\n        return value;\n      }\n      if ((value = previousCache.get(key)) !== undefined) {\n        update(key, value);\n        return value;\n      }\n    },\n    set(key, value) {\n      if (cache.has(key)) {\n        cache.set(key, value);\n      } else {\n        update(key, value);\n      }\n    }\n  };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n  const {\n    prefix,\n    experimentalParseClassName\n  } = config;\n  /**\n   * Parse class name into parts.\n   *\n   * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n   * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n   */\n  let parseClassName = className => {\n    const modifiers = [];\n    let bracketDepth = 0;\n    let parenDepth = 0;\n    let modifierStart = 0;\n    let postfixModifierPosition;\n    for (let index = 0; index < className.length; index++) {\n      let currentCharacter = className[index];\n      if (bracketDepth === 0 && parenDepth === 0) {\n        if (currentCharacter === MODIFIER_SEPARATOR) {\n          modifiers.push(className.slice(modifierStart, index));\n          modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n          continue;\n        }\n        if (currentCharacter === '/') {\n          postfixModifierPosition = index;\n          continue;\n        }\n      }\n      if (currentCharacter === '[') {\n        bracketDepth++;\n      } else if (currentCharacter === ']') {\n        bracketDepth--;\n      } else if (currentCharacter === '(') {\n        parenDepth++;\n      } else if (currentCharacter === ')') {\n        parenDepth--;\n      }\n    }\n    const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n    const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n    const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n    const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n    return {\n      modifiers,\n      hasImportantModifier,\n      baseClassName,\n      maybePostfixModifierPosition\n    };\n  };\n  if (prefix) {\n    const fullPrefix = prefix + MODIFIER_SEPARATOR;\n    const parseClassNameOriginal = parseClassName;\n    parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n      isExternal: true,\n      modifiers: [],\n      hasImportantModifier: false,\n      baseClassName: className,\n      maybePostfixModifierPosition: undefined\n    };\n  }\n  if (experimentalParseClassName) {\n    const parseClassNameOriginal = parseClassName;\n    parseClassName = className => experimentalParseClassName({\n      className,\n      parseClassName: parseClassNameOriginal\n    });\n  }\n  return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n  if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n    return baseClassName.substring(0, baseClassName.length - 1);\n  }\n  /**\n   * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n   * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n   */\n  if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n    return baseClassName.substring(1);\n  }\n  return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n  const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n  const sortModifiers = modifiers => {\n    if (modifiers.length <= 1) {\n      return modifiers;\n    }\n    const sortedModifiers = [];\n    let unsortedModifiers = [];\n    modifiers.forEach(modifier => {\n      const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n      if (isPositionSensitive) {\n        sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n        unsortedModifiers = [];\n      } else {\n        unsortedModifiers.push(modifier);\n      }\n    });\n    sortedModifiers.push(...unsortedModifiers.sort());\n    return sortedModifiers;\n  };\n  return sortModifiers;\n};\nconst createConfigUtils = config => ({\n  cache: createLruCache(config.cacheSize),\n  parseClassName: createParseClassName(config),\n  sortModifiers: createSortModifiers(config),\n  ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n  const {\n    parseClassName,\n    getClassGroupId,\n    getConflictingClassGroupIds,\n    sortModifiers\n  } = configUtils;\n  /**\n   * Set of classGroupIds in following format:\n   * `{importantModifier}{variantModifiers}{classGroupId}`\n   * @example 'float'\n   * @example 'hover:focus:bg-color'\n   * @example 'md:!pr'\n   */\n  const classGroupsInConflict = [];\n  const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n  let result = '';\n  for (let index = classNames.length - 1; index >= 0; index -= 1) {\n    const originalClassName = classNames[index];\n    const {\n      isExternal,\n      modifiers,\n      hasImportantModifier,\n      baseClassName,\n      maybePostfixModifierPosition\n    } = parseClassName(originalClassName);\n    if (isExternal) {\n      result = originalClassName + (result.length > 0 ? ' ' + result : result);\n      continue;\n    }\n    let hasPostfixModifier = !!maybePostfixModifierPosition;\n    let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n    if (!classGroupId) {\n      if (!hasPostfixModifier) {\n        // Not a Tailwind class\n        result = originalClassName + (result.length > 0 ? ' ' + result : result);\n        continue;\n      }\n      classGroupId = getClassGroupId(baseClassName);\n      if (!classGroupId) {\n        // Not a Tailwind class\n        result = originalClassName + (result.length > 0 ? ' ' + result : result);\n        continue;\n      }\n      hasPostfixModifier = false;\n    }\n    const variantModifier = sortModifiers(modifiers).join(':');\n    const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n    const classId = modifierId + classGroupId;\n    if (classGroupsInConflict.includes(classId)) {\n      // Tailwind class omitted due to conflict\n      continue;\n    }\n    classGroupsInConflict.push(classId);\n    const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n    for (let i = 0; i < conflictGroups.length; ++i) {\n      const group = conflictGroups[i];\n      classGroupsInConflict.push(modifierId + group);\n    }\n    // Tailwind class not in conflict\n    result = originalClassName + (result.length > 0 ? ' ' + result : result);\n  }\n  return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n  let index = 0;\n  let argument;\n  let resolvedValue;\n  let string = '';\n  while (index < arguments.length) {\n    if (argument = arguments[index++]) {\n      if (resolvedValue = toValue(argument)) {\n        string && (string += ' ');\n        string += resolvedValue;\n      }\n    }\n  }\n  return string;\n}\nconst toValue = mix => {\n  if (typeof mix === 'string') {\n    return mix;\n  }\n  let resolvedValue;\n  let string = '';\n  for (let k = 0; k < mix.length; k++) {\n    if (mix[k]) {\n      if (resolvedValue = toValue(mix[k])) {\n        string && (string += ' ');\n        string += resolvedValue;\n      }\n    }\n  }\n  return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n  let configUtils;\n  let cacheGet;\n  let cacheSet;\n  let functionToCall = initTailwindMerge;\n  function initTailwindMerge(classList) {\n    const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n    configUtils = createConfigUtils(config);\n    cacheGet = configUtils.cache.get;\n    cacheSet = configUtils.cache.set;\n    functionToCall = tailwindMerge;\n    return tailwindMerge(classList);\n  }\n  function tailwindMerge(classList) {\n    const cachedResult = cacheGet(classList);\n    if (cachedResult) {\n      return cachedResult;\n    }\n    const result = mergeClassList(classList, configUtils);\n    cacheSet(classList, result);\n    return result;\n  }\n  return function callTailwindMerge() {\n    return functionToCall(twJoin.apply(null, arguments));\n  };\n}\nconst fromTheme = key => {\n  const themeGetter = theme => theme[key] || [];\n  themeGetter.isThemeGetter = true;\n  return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n  const result = arbitraryValueRegex.exec(value);\n  if (result) {\n    if (result[1]) {\n      return testLabel(result[1]);\n    }\n    return testValue(result[2]);\n  }\n  return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n  const result = arbitraryVariableRegex.exec(value);\n  if (result) {\n    if (result[1]) {\n      return testLabel(result[1]);\n    }\n    return shouldMatchNoLabel;\n  }\n  return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n  __proto__: null,\n  isAny,\n  isAnyNonArbitrary,\n  isArbitraryImage,\n  isArbitraryLength,\n  isArbitraryNumber,\n  isArbitraryPosition,\n  isArbitraryShadow,\n  isArbitrarySize,\n  isArbitraryValue,\n  isArbitraryVariable,\n  isArbitraryVariableFamilyName,\n  isArbitraryVariableImage,\n  isArbitraryVariableLength,\n  isArbitraryVariablePosition,\n  isArbitraryVariableShadow,\n  isArbitraryVariableSize,\n  isFraction,\n  isInteger,\n  isNumber,\n  isPercent,\n  isTshirtSize\n}, Symbol.toStringTag, {\n  value: 'Module'\n});\nconst getDefaultConfig = () => {\n  /**\n   * Theme getters for theme variable namespaces\n   * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n   */\n  /***/\n  const themeColor = fromTheme('color');\n  const themeFont = fromTheme('font');\n  const themeText = fromTheme('text');\n  const themeFontWeight = fromTheme('font-weight');\n  const themeTracking = fromTheme('tracking');\n  const themeLeading = fromTheme('leading');\n  const themeBreakpoint = fromTheme('breakpoint');\n  const themeContainer = fromTheme('container');\n  const themeSpacing = fromTheme('spacing');\n  const themeRadius = fromTheme('radius');\n  const themeShadow = fromTheme('shadow');\n  const themeInsetShadow = fromTheme('inset-shadow');\n  const themeTextShadow = fromTheme('text-shadow');\n  const themeDropShadow = fromTheme('drop-shadow');\n  const themeBlur = fromTheme('blur');\n  const themePerspective = fromTheme('perspective');\n  const themeAspect = fromTheme('aspect');\n  const themeEase = fromTheme('ease');\n  const themeAnimate = fromTheme('animate');\n  /**\n   * Helpers to avoid repeating the same scales\n   *\n   * We use functions that create a new array every time they're called instead of static arrays.\n   * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n   */\n  /***/\n  const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n  const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'left-top', 'top-right',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'right-top', 'bottom-right',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'right-bottom', 'bottom-left',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'left-bottom'];\n  const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n  const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n  const scaleOverscroll = () => ['auto', 'contain', 'none'];\n  const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n  const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n  const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n  const scaleGridColRowStartAndEnd = () => ['auto', {\n    span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n  }, isInteger, isArbitraryVariable, isArbitraryValue];\n  const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n  const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n  const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n  const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n  const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n  const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n  const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n  const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n    position: [isArbitraryVariable, isArbitraryValue]\n  }];\n  const scaleBgRepeat = () => ['no-repeat', {\n    repeat: ['', 'x', 'y', 'space', 'round']\n  }];\n  const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n    size: [isArbitraryVariable, isArbitraryValue]\n  }];\n  const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n  const scaleRadius = () => [\n  // Deprecated since Tailwind CSS v4.0.0\n  '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n  const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n  const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n  const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n  const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n  const scaleBlur = () => [\n  // Deprecated since Tailwind CSS v4.0.0\n  '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n  const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n  return {\n    cacheSize: 500,\n    theme: {\n      animate: ['spin', 'ping', 'pulse', 'bounce'],\n      aspect: ['video'],\n      blur: [isTshirtSize],\n      breakpoint: [isTshirtSize],\n      color: [isAny],\n      container: [isTshirtSize],\n      'drop-shadow': [isTshirtSize],\n      ease: ['in', 'out', 'in-out'],\n      font: [isAnyNonArbitrary],\n      'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n      'inset-shadow': [isTshirtSize],\n      leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n      perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n      radius: [isTshirtSize],\n      shadow: [isTshirtSize],\n      spacing: ['px', isNumber],\n      text: [isTshirtSize],\n      'text-shadow': [isTshirtSize],\n      tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n    },\n    classGroups: {\n      // --------------\n      // --- Layout ---\n      // --------------\n      /**\n       * Aspect Ratio\n       * @see https://tailwindcss.com/docs/aspect-ratio\n       */\n      aspect: [{\n        aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n      }],\n      /**\n       * Container\n       * @see https://tailwindcss.com/docs/container\n       * @deprecated since Tailwind CSS v4.0.0\n       */\n      container: ['container'],\n      /**\n       * Columns\n       * @see https://tailwindcss.com/docs/columns\n       */\n      columns: [{\n        columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n      }],\n      /**\n       * Break After\n       * @see https://tailwindcss.com/docs/break-after\n       */\n      'break-after': [{\n        'break-after': scaleBreak()\n      }],\n      /**\n       * Break Before\n       * @see https://tailwindcss.com/docs/break-before\n       */\n      'break-before': [{\n        'break-before': scaleBreak()\n      }],\n      /**\n       * Break Inside\n       * @see https://tailwindcss.com/docs/break-inside\n       */\n      'break-inside': [{\n        'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n      }],\n      /**\n       * Box Decoration Break\n       * @see https://tailwindcss.com/docs/box-decoration-break\n       */\n      'box-decoration': [{\n        'box-decoration': ['slice', 'clone']\n      }],\n      /**\n       * Box Sizing\n       * @see https://tailwindcss.com/docs/box-sizing\n       */\n      box: [{\n        box: ['border', 'content']\n      }],\n      /**\n       * Display\n       * @see https://tailwindcss.com/docs/display\n       */\n      display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n      /**\n       * Screen Reader Only\n       * @see https://tailwindcss.com/docs/display#screen-reader-only\n       */\n      sr: ['sr-only', 'not-sr-only'],\n      /**\n       * Floats\n       * @see https://tailwindcss.com/docs/float\n       */\n      float: [{\n        float: ['right', 'left', 'none', 'start', 'end']\n      }],\n      /**\n       * Clear\n       * @see https://tailwindcss.com/docs/clear\n       */\n      clear: [{\n        clear: ['left', 'right', 'both', 'none', 'start', 'end']\n      }],\n      /**\n       * Isolation\n       * @see https://tailwindcss.com/docs/isolation\n       */\n      isolation: ['isolate', 'isolation-auto'],\n      /**\n       * Object Fit\n       * @see https://tailwindcss.com/docs/object-fit\n       */\n      'object-fit': [{\n        object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n      }],\n      /**\n       * Object Position\n       * @see https://tailwindcss.com/docs/object-position\n       */\n      'object-position': [{\n        object: scalePositionWithArbitrary()\n      }],\n      /**\n       * Overflow\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      overflow: [{\n        overflow: scaleOverflow()\n      }],\n      /**\n       * Overflow X\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      'overflow-x': [{\n        'overflow-x': scaleOverflow()\n      }],\n      /**\n       * Overflow Y\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      'overflow-y': [{\n        'overflow-y': scaleOverflow()\n      }],\n      /**\n       * Overscroll Behavior\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      overscroll: [{\n        overscroll: scaleOverscroll()\n      }],\n      /**\n       * Overscroll Behavior X\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      'overscroll-x': [{\n        'overscroll-x': scaleOverscroll()\n      }],\n      /**\n       * Overscroll Behavior Y\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      'overscroll-y': [{\n        'overscroll-y': scaleOverscroll()\n      }],\n      /**\n       * Position\n       * @see https://tailwindcss.com/docs/position\n       */\n      position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n      /**\n       * Top / Right / Bottom / Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      inset: [{\n        inset: scaleInset()\n      }],\n      /**\n       * Right / Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      'inset-x': [{\n        'inset-x': scaleInset()\n      }],\n      /**\n       * Top / Bottom\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      'inset-y': [{\n        'inset-y': scaleInset()\n      }],\n      /**\n       * Start\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      start: [{\n        start: scaleInset()\n      }],\n      /**\n       * End\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      end: [{\n        end: scaleInset()\n      }],\n      /**\n       * Top\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      top: [{\n        top: scaleInset()\n      }],\n      /**\n       * Right\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      right: [{\n        right: scaleInset()\n      }],\n      /**\n       * Bottom\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      bottom: [{\n        bottom: scaleInset()\n      }],\n      /**\n       * Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      left: [{\n        left: scaleInset()\n      }],\n      /**\n       * Visibility\n       * @see https://tailwindcss.com/docs/visibility\n       */\n      visibility: ['visible', 'invisible', 'collapse'],\n      /**\n       * Z-Index\n       * @see https://tailwindcss.com/docs/z-index\n       */\n      z: [{\n        z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n      }],\n      // ------------------------\n      // --- Flexbox and Grid ---\n      // ------------------------\n      /**\n       * Flex Basis\n       * @see https://tailwindcss.com/docs/flex-basis\n       */\n      basis: [{\n        basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n      }],\n      /**\n       * Flex Direction\n       * @see https://tailwindcss.com/docs/flex-direction\n       */\n      'flex-direction': [{\n        flex: ['row', 'row-reverse', 'col', 'col-reverse']\n      }],\n      /**\n       * Flex Wrap\n       * @see https://tailwindcss.com/docs/flex-wrap\n       */\n      'flex-wrap': [{\n        flex: ['nowrap', 'wrap', 'wrap-reverse']\n      }],\n      /**\n       * Flex\n       * @see https://tailwindcss.com/docs/flex\n       */\n      flex: [{\n        flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n      }],\n      /**\n       * Flex Grow\n       * @see https://tailwindcss.com/docs/flex-grow\n       */\n      grow: [{\n        grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Flex Shrink\n       * @see https://tailwindcss.com/docs/flex-shrink\n       */\n      shrink: [{\n        shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Order\n       * @see https://tailwindcss.com/docs/order\n       */\n      order: [{\n        order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Grid Template Columns\n       * @see https://tailwindcss.com/docs/grid-template-columns\n       */\n      'grid-cols': [{\n        'grid-cols': scaleGridTemplateColsRows()\n      }],\n      /**\n       * Grid Column Start / End\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-start-end': [{\n        col: scaleGridColRowStartAndEnd()\n      }],\n      /**\n       * Grid Column Start\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-start': [{\n        'col-start': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Column End\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-end': [{\n        'col-end': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Template Rows\n       * @see https://tailwindcss.com/docs/grid-template-rows\n       */\n      'grid-rows': [{\n        'grid-rows': scaleGridTemplateColsRows()\n      }],\n      /**\n       * Grid Row Start / End\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-start-end': [{\n        row: scaleGridColRowStartAndEnd()\n      }],\n      /**\n       * Grid Row Start\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-start': [{\n        'row-start': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Row End\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-end': [{\n        'row-end': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Auto Flow\n       * @see https://tailwindcss.com/docs/grid-auto-flow\n       */\n      'grid-flow': [{\n        'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n      }],\n      /**\n       * Grid Auto Columns\n       * @see https://tailwindcss.com/docs/grid-auto-columns\n       */\n      'auto-cols': [{\n        'auto-cols': scaleGridAutoColsRows()\n      }],\n      /**\n       * Grid Auto Rows\n       * @see https://tailwindcss.com/docs/grid-auto-rows\n       */\n      'auto-rows': [{\n        'auto-rows': scaleGridAutoColsRows()\n      }],\n      /**\n       * Gap\n       * @see https://tailwindcss.com/docs/gap\n       */\n      gap: [{\n        gap: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Gap X\n       * @see https://tailwindcss.com/docs/gap\n       */\n      'gap-x': [{\n        'gap-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Gap Y\n       * @see https://tailwindcss.com/docs/gap\n       */\n      'gap-y': [{\n        'gap-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Justify Content\n       * @see https://tailwindcss.com/docs/justify-content\n       */\n      'justify-content': [{\n        justify: [...scaleAlignPrimaryAxis(), 'normal']\n      }],\n      /**\n       * Justify Items\n       * @see https://tailwindcss.com/docs/justify-items\n       */\n      'justify-items': [{\n        'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n      }],\n      /**\n       * Justify Self\n       * @see https://tailwindcss.com/docs/justify-self\n       */\n      'justify-self': [{\n        'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n      }],\n      /**\n       * Align Content\n       * @see https://tailwindcss.com/docs/align-content\n       */\n      'align-content': [{\n        content: ['normal', ...scaleAlignPrimaryAxis()]\n      }],\n      /**\n       * Align Items\n       * @see https://tailwindcss.com/docs/align-items\n       */\n      'align-items': [{\n        items: [...scaleAlignSecondaryAxis(), {\n          baseline: ['', 'last']\n        }]\n      }],\n      /**\n       * Align Self\n       * @see https://tailwindcss.com/docs/align-self\n       */\n      'align-self': [{\n        self: ['auto', ...scaleAlignSecondaryAxis(), {\n          baseline: ['', 'last']\n        }]\n      }],\n      /**\n       * Place Content\n       * @see https://tailwindcss.com/docs/place-content\n       */\n      'place-content': [{\n        'place-content': scaleAlignPrimaryAxis()\n      }],\n      /**\n       * Place Items\n       * @see https://tailwindcss.com/docs/place-items\n       */\n      'place-items': [{\n        'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n      }],\n      /**\n       * Place Self\n       * @see https://tailwindcss.com/docs/place-self\n       */\n      'place-self': [{\n        'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n      }],\n      // Spacing\n      /**\n       * Padding\n       * @see https://tailwindcss.com/docs/padding\n       */\n      p: [{\n        p: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding X\n       * @see https://tailwindcss.com/docs/padding\n       */\n      px: [{\n        px: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Y\n       * @see https://tailwindcss.com/docs/padding\n       */\n      py: [{\n        py: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Start\n       * @see https://tailwindcss.com/docs/padding\n       */\n      ps: [{\n        ps: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding End\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pe: [{\n        pe: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Top\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pt: [{\n        pt: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Right\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pr: [{\n        pr: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Bottom\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pb: [{\n        pb: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Left\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pl: [{\n        pl: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Margin\n       * @see https://tailwindcss.com/docs/margin\n       */\n      m: [{\n        m: scaleMargin()\n      }],\n      /**\n       * Margin X\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mx: [{\n        mx: scaleMargin()\n      }],\n      /**\n       * Margin Y\n       * @see https://tailwindcss.com/docs/margin\n       */\n      my: [{\n        my: scaleMargin()\n      }],\n      /**\n       * Margin Start\n       * @see https://tailwindcss.com/docs/margin\n       */\n      ms: [{\n        ms: scaleMargin()\n      }],\n      /**\n       * Margin End\n       * @see https://tailwindcss.com/docs/margin\n       */\n      me: [{\n        me: scaleMargin()\n      }],\n      /**\n       * Margin Top\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mt: [{\n        mt: scaleMargin()\n      }],\n      /**\n       * Margin Right\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mr: [{\n        mr: scaleMargin()\n      }],\n      /**\n       * Margin Bottom\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mb: [{\n        mb: scaleMargin()\n      }],\n      /**\n       * Margin Left\n       * @see https://tailwindcss.com/docs/margin\n       */\n      ml: [{\n        ml: scaleMargin()\n      }],\n      /**\n       * Space Between X\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-x': [{\n        'space-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Space Between X Reverse\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-x-reverse': ['space-x-reverse'],\n      /**\n       * Space Between Y\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-y': [{\n        'space-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Space Between Y Reverse\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-y-reverse': ['space-y-reverse'],\n      // --------------\n      // --- Sizing ---\n      // --------------\n      /**\n       * Size\n       * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n       */\n      size: [{\n        size: scaleSizing()\n      }],\n      /**\n       * Width\n       * @see https://tailwindcss.com/docs/width\n       */\n      w: [{\n        w: [themeContainer, 'screen', ...scaleSizing()]\n      }],\n      /**\n       * Min-Width\n       * @see https://tailwindcss.com/docs/min-width\n       */\n      'min-w': [{\n        'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        'none', ...scaleSizing()]\n      }],\n      /**\n       * Max-Width\n       * @see https://tailwindcss.com/docs/max-width\n       */\n      'max-w': [{\n        'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        {\n          screen: [themeBreakpoint]\n        }, ...scaleSizing()]\n      }],\n      /**\n       * Height\n       * @see https://tailwindcss.com/docs/height\n       */\n      h: [{\n        h: ['screen', 'lh', ...scaleSizing()]\n      }],\n      /**\n       * Min-Height\n       * @see https://tailwindcss.com/docs/min-height\n       */\n      'min-h': [{\n        'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n      }],\n      /**\n       * Max-Height\n       * @see https://tailwindcss.com/docs/max-height\n       */\n      'max-h': [{\n        'max-h': ['screen', 'lh', ...scaleSizing()]\n      }],\n      // ------------------\n      // --- Typography ---\n      // ------------------\n      /**\n       * Font Size\n       * @see https://tailwindcss.com/docs/font-size\n       */\n      'font-size': [{\n        text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n      }],\n      /**\n       * Font Smoothing\n       * @see https://tailwindcss.com/docs/font-smoothing\n       */\n      'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n      /**\n       * Font Style\n       * @see https://tailwindcss.com/docs/font-style\n       */\n      'font-style': ['italic', 'not-italic'],\n      /**\n       * Font Weight\n       * @see https://tailwindcss.com/docs/font-weight\n       */\n      'font-weight': [{\n        font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n      }],\n      /**\n       * Font Stretch\n       * @see https://tailwindcss.com/docs/font-stretch\n       */\n      'font-stretch': [{\n        'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n      }],\n      /**\n       * Font Family\n       * @see https://tailwindcss.com/docs/font-family\n       */\n      'font-family': [{\n        font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n      }],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-normal': ['normal-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-ordinal': ['ordinal'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-slashed-zero': ['slashed-zero'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n      /**\n       * Letter Spacing\n       * @see https://tailwindcss.com/docs/letter-spacing\n       */\n      tracking: [{\n        tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Line Clamp\n       * @see https://tailwindcss.com/docs/line-clamp\n       */\n      'line-clamp': [{\n        'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n      }],\n      /**\n       * Line Height\n       * @see https://tailwindcss.com/docs/line-height\n       */\n      leading: [{\n        leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        themeLeading, ...scaleUnambiguousSpacing()]\n      }],\n      /**\n       * List Style Image\n       * @see https://tailwindcss.com/docs/list-style-image\n       */\n      'list-image': [{\n        'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * List Style Position\n       * @see https://tailwindcss.com/docs/list-style-position\n       */\n      'list-style-position': [{\n        list: ['inside', 'outside']\n      }],\n      /**\n       * List Style Type\n       * @see https://tailwindcss.com/docs/list-style-type\n       */\n      'list-style-type': [{\n        list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Text Alignment\n       * @see https://tailwindcss.com/docs/text-align\n       */\n      'text-alignment': [{\n        text: ['left', 'center', 'right', 'justify', 'start', 'end']\n      }],\n      /**\n       * Placeholder Color\n       * @deprecated since Tailwind CSS v3.0.0\n       * @see https://v3.tailwindcss.com/docs/placeholder-color\n       */\n      'placeholder-color': [{\n        placeholder: scaleColor()\n      }],\n      /**\n       * Text Color\n       * @see https://tailwindcss.com/docs/text-color\n       */\n      'text-color': [{\n        text: scaleColor()\n      }],\n      /**\n       * Text Decoration\n       * @see https://tailwindcss.com/docs/text-decoration\n       */\n      'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n      /**\n       * Text Decoration Style\n       * @see https://tailwindcss.com/docs/text-decoration-style\n       */\n      'text-decoration-style': [{\n        decoration: [...scaleLineStyle(), 'wavy']\n      }],\n      /**\n       * Text Decoration Thickness\n       * @see https://tailwindcss.com/docs/text-decoration-thickness\n       */\n      'text-decoration-thickness': [{\n        decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n      }],\n      /**\n       * Text Decoration Color\n       * @see https://tailwindcss.com/docs/text-decoration-color\n       */\n      'text-decoration-color': [{\n        decoration: scaleColor()\n      }],\n      /**\n       * Text Underline Offset\n       * @see https://tailwindcss.com/docs/text-underline-offset\n       */\n      'underline-offset': [{\n        'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Text Transform\n       * @see https://tailwindcss.com/docs/text-transform\n       */\n      'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n      /**\n       * Text Overflow\n       * @see https://tailwindcss.com/docs/text-overflow\n       */\n      'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n      /**\n       * Text Wrap\n       * @see https://tailwindcss.com/docs/text-wrap\n       */\n      'text-wrap': [{\n        text: ['wrap', 'nowrap', 'balance', 'pretty']\n      }],\n      /**\n       * Text Indent\n       * @see https://tailwindcss.com/docs/text-indent\n       */\n      indent: [{\n        indent: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Vertical Alignment\n       * @see https://tailwindcss.com/docs/vertical-align\n       */\n      'vertical-align': [{\n        align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Whitespace\n       * @see https://tailwindcss.com/docs/whitespace\n       */\n      whitespace: [{\n        whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n      }],\n      /**\n       * Word Break\n       * @see https://tailwindcss.com/docs/word-break\n       */\n      break: [{\n        break: ['normal', 'words', 'all', 'keep']\n      }],\n      /**\n       * Overflow Wrap\n       * @see https://tailwindcss.com/docs/overflow-wrap\n       */\n      wrap: [{\n        wrap: ['break-word', 'anywhere', 'normal']\n      }],\n      /**\n       * Hyphens\n       * @see https://tailwindcss.com/docs/hyphens\n       */\n      hyphens: [{\n        hyphens: ['none', 'manual', 'auto']\n      }],\n      /**\n       * Content\n       * @see https://tailwindcss.com/docs/content\n       */\n      content: [{\n        content: ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      // -------------------\n      // --- Backgrounds ---\n      // -------------------\n      /**\n       * Background Attachment\n       * @see https://tailwindcss.com/docs/background-attachment\n       */\n      'bg-attachment': [{\n        bg: ['fixed', 'local', 'scroll']\n      }],\n      /**\n       * Background Clip\n       * @see https://tailwindcss.com/docs/background-clip\n       */\n      'bg-clip': [{\n        'bg-clip': ['border', 'padding', 'content', 'text']\n      }],\n      /**\n       * Background Origin\n       * @see https://tailwindcss.com/docs/background-origin\n       */\n      'bg-origin': [{\n        'bg-origin': ['border', 'padding', 'content']\n      }],\n      /**\n       * Background Position\n       * @see https://tailwindcss.com/docs/background-position\n       */\n      'bg-position': [{\n        bg: scaleBgPosition()\n      }],\n      /**\n       * Background Repeat\n       * @see https://tailwindcss.com/docs/background-repeat\n       */\n      'bg-repeat': [{\n        bg: scaleBgRepeat()\n      }],\n      /**\n       * Background Size\n       * @see https://tailwindcss.com/docs/background-size\n       */\n      'bg-size': [{\n        bg: scaleBgSize()\n      }],\n      /**\n       * Background Image\n       * @see https://tailwindcss.com/docs/background-image\n       */\n      'bg-image': [{\n        bg: ['none', {\n          linear: [{\n            to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n          }, isInteger, isArbitraryVariable, isArbitraryValue],\n          radial: ['', isArbitraryVariable, isArbitraryValue],\n          conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n        }, isArbitraryVariableImage, isArbitraryImage]\n      }],\n      /**\n       * Background Color\n       * @see https://tailwindcss.com/docs/background-color\n       */\n      'bg-color': [{\n        bg: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops From Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-from-pos': [{\n        from: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops Via Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-via-pos': [{\n        via: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops To Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-to-pos': [{\n        to: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops From\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-from': [{\n        from: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops Via\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-via': [{\n        via: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops To\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-to': [{\n        to: scaleColor()\n      }],\n      // ---------------\n      // --- Borders ---\n      // ---------------\n      /**\n       * Border Radius\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      rounded: [{\n        rounded: scaleRadius()\n      }],\n      /**\n       * Border Radius Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-s': [{\n        'rounded-s': scaleRadius()\n      }],\n      /**\n       * Border Radius End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-e': [{\n        'rounded-e': scaleRadius()\n      }],\n      /**\n       * Border Radius Top\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-t': [{\n        'rounded-t': scaleRadius()\n      }],\n      /**\n       * Border Radius Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-r': [{\n        'rounded-r': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-b': [{\n        'rounded-b': scaleRadius()\n      }],\n      /**\n       * Border Radius Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-l': [{\n        'rounded-l': scaleRadius()\n      }],\n      /**\n       * Border Radius Start Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-ss': [{\n        'rounded-ss': scaleRadius()\n      }],\n      /**\n       * Border Radius Start End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-se': [{\n        'rounded-se': scaleRadius()\n      }],\n      /**\n       * Border Radius End End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-ee': [{\n        'rounded-ee': scaleRadius()\n      }],\n      /**\n       * Border Radius End Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-es': [{\n        'rounded-es': scaleRadius()\n      }],\n      /**\n       * Border Radius Top Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-tl': [{\n        'rounded-tl': scaleRadius()\n      }],\n      /**\n       * Border Radius Top Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-tr': [{\n        'rounded-tr': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-br': [{\n        'rounded-br': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-bl': [{\n        'rounded-bl': scaleRadius()\n      }],\n      /**\n       * Border Width\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w': [{\n        border: scaleBorderWidth()\n      }],\n      /**\n       * Border Width X\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-x': [{\n        'border-x': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Y\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-y': [{\n        'border-y': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Start\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-s': [{\n        'border-s': scaleBorderWidth()\n      }],\n      /**\n       * Border Width End\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-e': [{\n        'border-e': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Top\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-t': [{\n        'border-t': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Right\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-r': [{\n        'border-r': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Bottom\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-b': [{\n        'border-b': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Left\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-l': [{\n        'border-l': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width X\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-x': [{\n        'divide-x': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width X Reverse\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-x-reverse': ['divide-x-reverse'],\n      /**\n       * Divide Width Y\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-y': [{\n        'divide-y': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width Y Reverse\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-y-reverse': ['divide-y-reverse'],\n      /**\n       * Border Style\n       * @see https://tailwindcss.com/docs/border-style\n       */\n      'border-style': [{\n        border: [...scaleLineStyle(), 'hidden', 'none']\n      }],\n      /**\n       * Divide Style\n       * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n       */\n      'divide-style': [{\n        divide: [...scaleLineStyle(), 'hidden', 'none']\n      }],\n      /**\n       * Border Color\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color': [{\n        border: scaleColor()\n      }],\n      /**\n       * Border Color X\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-x': [{\n        'border-x': scaleColor()\n      }],\n      /**\n       * Border Color Y\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-y': [{\n        'border-y': scaleColor()\n      }],\n      /**\n       * Border Color S\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-s': [{\n        'border-s': scaleColor()\n      }],\n      /**\n       * Border Color E\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-e': [{\n        'border-e': scaleColor()\n      }],\n      /**\n       * Border Color Top\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-t': [{\n        'border-t': scaleColor()\n      }],\n      /**\n       * Border Color Right\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-r': [{\n        'border-r': scaleColor()\n      }],\n      /**\n       * Border Color Bottom\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-b': [{\n        'border-b': scaleColor()\n      }],\n      /**\n       * Border Color Left\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-l': [{\n        'border-l': scaleColor()\n      }],\n      /**\n       * Divide Color\n       * @see https://tailwindcss.com/docs/divide-color\n       */\n      'divide-color': [{\n        divide: scaleColor()\n      }],\n      /**\n       * Outline Style\n       * @see https://tailwindcss.com/docs/outline-style\n       */\n      'outline-style': [{\n        outline: [...scaleLineStyle(), 'none', 'hidden']\n      }],\n      /**\n       * Outline Offset\n       * @see https://tailwindcss.com/docs/outline-offset\n       */\n      'outline-offset': [{\n        'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Outline Width\n       * @see https://tailwindcss.com/docs/outline-width\n       */\n      'outline-w': [{\n        outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n      }],\n      /**\n       * Outline Color\n       * @see https://tailwindcss.com/docs/outline-color\n       */\n      'outline-color': [{\n        outline: scaleColor()\n      }],\n      // ---------------\n      // --- Effects ---\n      // ---------------\n      /**\n       * Box Shadow\n       * @see https://tailwindcss.com/docs/box-shadow\n       */\n      shadow: [{\n        shadow: [\n        // Deprecated since Tailwind CSS v4.0.0\n        '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Box Shadow Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n       */\n      'shadow-color': [{\n        shadow: scaleColor()\n      }],\n      /**\n       * Inset Box Shadow\n       * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n       */\n      'inset-shadow': [{\n        'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Inset Box Shadow Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n       */\n      'inset-shadow-color': [{\n        'inset-shadow': scaleColor()\n      }],\n      /**\n       * Ring Width\n       * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n       */\n      'ring-w': [{\n        ring: scaleBorderWidth()\n      }],\n      /**\n       * Ring Width Inset\n       * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-w-inset': ['ring-inset'],\n      /**\n       * Ring Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n       */\n      'ring-color': [{\n        ring: scaleColor()\n      }],\n      /**\n       * Ring Offset Width\n       * @see https://v3.tailwindcss.com/docs/ring-offset-width\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-offset-w': [{\n        'ring-offset': [isNumber, isArbitraryLength]\n      }],\n      /**\n       * Ring Offset Color\n       * @see https://v3.tailwindcss.com/docs/ring-offset-color\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-offset-color': [{\n        'ring-offset': scaleColor()\n      }],\n      /**\n       * Inset Ring Width\n       * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n       */\n      'inset-ring-w': [{\n        'inset-ring': scaleBorderWidth()\n      }],\n      /**\n       * Inset Ring Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n       */\n      'inset-ring-color': [{\n        'inset-ring': scaleColor()\n      }],\n      /**\n       * Text Shadow\n       * @see https://tailwindcss.com/docs/text-shadow\n       */\n      'text-shadow': [{\n        'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Text Shadow Color\n       * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n       */\n      'text-shadow-color': [{\n        'text-shadow': scaleColor()\n      }],\n      /**\n       * Opacity\n       * @see https://tailwindcss.com/docs/opacity\n       */\n      opacity: [{\n        opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Mix Blend Mode\n       * @see https://tailwindcss.com/docs/mix-blend-mode\n       */\n      'mix-blend': [{\n        'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n      }],\n      /**\n       * Background Blend Mode\n       * @see https://tailwindcss.com/docs/background-blend-mode\n       */\n      'bg-blend': [{\n        'bg-blend': scaleBlendMode()\n      }],\n      /**\n       * Mask Clip\n       * @see https://tailwindcss.com/docs/mask-clip\n       */\n      'mask-clip': [{\n        'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n      }, 'mask-no-clip'],\n      /**\n       * Mask Composite\n       * @see https://tailwindcss.com/docs/mask-composite\n       */\n      'mask-composite': [{\n        mask: ['add', 'subtract', 'intersect', 'exclude']\n      }],\n      /**\n       * Mask Image\n       * @see https://tailwindcss.com/docs/mask-image\n       */\n      'mask-image-linear-pos': [{\n        'mask-linear': [isNumber]\n      }],\n      'mask-image-linear-from-pos': [{\n        'mask-linear-from': scaleMaskImagePosition()\n      }],\n      'mask-image-linear-to-pos': [{\n        'mask-linear-to': scaleMaskImagePosition()\n      }],\n      'mask-image-linear-from-color': [{\n        'mask-linear-from': scaleColor()\n      }],\n      'mask-image-linear-to-color': [{\n        'mask-linear-to': scaleColor()\n      }],\n      'mask-image-t-from-pos': [{\n        'mask-t-from': scaleMaskImagePosition()\n      }],\n      'mask-image-t-to-pos': [{\n        'mask-t-to': scaleMaskImagePosition()\n      }],\n      'mask-image-t-from-color': [{\n        'mask-t-from': scaleColor()\n      }],\n      'mask-image-t-to-color': [{\n        'mask-t-to': scaleColor()\n      }],\n      'mask-image-r-from-pos': [{\n        'mask-r-from': scaleMaskImagePosition()\n      }],\n      'mask-image-r-to-pos': [{\n        'mask-r-to': scaleMaskImagePosition()\n      }],\n      'mask-image-r-from-color': [{\n        'mask-r-from': scaleColor()\n      }],\n      'mask-image-r-to-color': [{\n        'mask-r-to': scaleColor()\n      }],\n      'mask-image-b-from-pos': [{\n        'mask-b-from': scaleMaskImagePosition()\n      }],\n      'mask-image-b-to-pos': [{\n        'mask-b-to': scaleMaskImagePosition()\n      }],\n      'mask-image-b-from-color': [{\n        'mask-b-from': scaleColor()\n      }],\n      'mask-image-b-to-color': [{\n        'mask-b-to': scaleColor()\n      }],\n      'mask-image-l-from-pos': [{\n        'mask-l-from': scaleMaskImagePosition()\n      }],\n      'mask-image-l-to-pos': [{\n        'mask-l-to': scaleMaskImagePosition()\n      }],\n      'mask-image-l-from-color': [{\n        'mask-l-from': scaleColor()\n      }],\n      'mask-image-l-to-color': [{\n        'mask-l-to': scaleColor()\n      }],\n      'mask-image-x-from-pos': [{\n        'mask-x-from': scaleMaskImagePosition()\n      }],\n      'mask-image-x-to-pos': [{\n        'mask-x-to': scaleMaskImagePosition()\n      }],\n      'mask-image-x-from-color': [{\n        'mask-x-from': scaleColor()\n      }],\n      'mask-image-x-to-color': [{\n        'mask-x-to': scaleColor()\n      }],\n      'mask-image-y-from-pos': [{\n        'mask-y-from': scaleMaskImagePosition()\n      }],\n      'mask-image-y-to-pos': [{\n        'mask-y-to': scaleMaskImagePosition()\n      }],\n      'mask-image-y-from-color': [{\n        'mask-y-from': scaleColor()\n      }],\n      'mask-image-y-to-color': [{\n        'mask-y-to': scaleColor()\n      }],\n      'mask-image-radial': [{\n        'mask-radial': [isArbitraryVariable, isArbitraryValue]\n      }],\n      'mask-image-radial-from-pos': [{\n        'mask-radial-from': scaleMaskImagePosition()\n      }],\n      'mask-image-radial-to-pos': [{\n        'mask-radial-to': scaleMaskImagePosition()\n      }],\n      'mask-image-radial-from-color': [{\n        'mask-radial-from': scaleColor()\n      }],\n      'mask-image-radial-to-color': [{\n        'mask-radial-to': scaleColor()\n      }],\n      'mask-image-radial-shape': [{\n        'mask-radial': ['circle', 'ellipse']\n      }],\n      'mask-image-radial-size': [{\n        'mask-radial': [{\n          closest: ['side', 'corner'],\n          farthest: ['side', 'corner']\n        }]\n      }],\n      'mask-image-radial-pos': [{\n        'mask-radial-at': scalePosition()\n      }],\n      'mask-image-conic-pos': [{\n        'mask-conic': [isNumber]\n      }],\n      'mask-image-conic-from-pos': [{\n        'mask-conic-from': scaleMaskImagePosition()\n      }],\n      'mask-image-conic-to-pos': [{\n        'mask-conic-to': scaleMaskImagePosition()\n      }],\n      'mask-image-conic-from-color': [{\n        'mask-conic-from': scaleColor()\n      }],\n      'mask-image-conic-to-color': [{\n        'mask-conic-to': scaleColor()\n      }],\n      /**\n       * Mask Mode\n       * @see https://tailwindcss.com/docs/mask-mode\n       */\n      'mask-mode': [{\n        mask: ['alpha', 'luminance', 'match']\n      }],\n      /**\n       * Mask Origin\n       * @see https://tailwindcss.com/docs/mask-origin\n       */\n      'mask-origin': [{\n        'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n      }],\n      /**\n       * Mask Position\n       * @see https://tailwindcss.com/docs/mask-position\n       */\n      'mask-position': [{\n        mask: scaleBgPosition()\n      }],\n      /**\n       * Mask Repeat\n       * @see https://tailwindcss.com/docs/mask-repeat\n       */\n      'mask-repeat': [{\n        mask: scaleBgRepeat()\n      }],\n      /**\n       * Mask Size\n       * @see https://tailwindcss.com/docs/mask-size\n       */\n      'mask-size': [{\n        mask: scaleBgSize()\n      }],\n      /**\n       * Mask Type\n       * @see https://tailwindcss.com/docs/mask-type\n       */\n      'mask-type': [{\n        'mask-type': ['alpha', 'luminance']\n      }],\n      /**\n       * Mask Image\n       * @see https://tailwindcss.com/docs/mask-image\n       */\n      'mask-image': [{\n        mask: ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      // ---------------\n      // --- Filters ---\n      // ---------------\n      /**\n       * Filter\n       * @see https://tailwindcss.com/docs/filter\n       */\n      filter: [{\n        filter: [\n        // Deprecated since Tailwind CSS v3.0.0\n        '', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Blur\n       * @see https://tailwindcss.com/docs/blur\n       */\n      blur: [{\n        blur: scaleBlur()\n      }],\n      /**\n       * Brightness\n       * @see https://tailwindcss.com/docs/brightness\n       */\n      brightness: [{\n        brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Contrast\n       * @see https://tailwindcss.com/docs/contrast\n       */\n      contrast: [{\n        contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Drop Shadow\n       * @see https://tailwindcss.com/docs/drop-shadow\n       */\n      'drop-shadow': [{\n        'drop-shadow': [\n        // Deprecated since Tailwind CSS v4.0.0\n        '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Drop Shadow Color\n       * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n       */\n      'drop-shadow-color': [{\n        'drop-shadow': scaleColor()\n      }],\n      /**\n       * Grayscale\n       * @see https://tailwindcss.com/docs/grayscale\n       */\n      grayscale: [{\n        grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Hue Rotate\n       * @see https://tailwindcss.com/docs/hue-rotate\n       */\n      'hue-rotate': [{\n        'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Invert\n       * @see https://tailwindcss.com/docs/invert\n       */\n      invert: [{\n        invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Saturate\n       * @see https://tailwindcss.com/docs/saturate\n       */\n      saturate: [{\n        saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Sepia\n       * @see https://tailwindcss.com/docs/sepia\n       */\n      sepia: [{\n        sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Filter\n       * @see https://tailwindcss.com/docs/backdrop-filter\n       */\n      'backdrop-filter': [{\n        'backdrop-filter': [\n        // Deprecated since Tailwind CSS v3.0.0\n        '', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Blur\n       * @see https://tailwindcss.com/docs/backdrop-blur\n       */\n      'backdrop-blur': [{\n        'backdrop-blur': scaleBlur()\n      }],\n      /**\n       * Backdrop Brightness\n       * @see https://tailwindcss.com/docs/backdrop-brightness\n       */\n      'backdrop-brightness': [{\n        'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Contrast\n       * @see https://tailwindcss.com/docs/backdrop-contrast\n       */\n      'backdrop-contrast': [{\n        'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Grayscale\n       * @see https://tailwindcss.com/docs/backdrop-grayscale\n       */\n      'backdrop-grayscale': [{\n        'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Hue Rotate\n       * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n       */\n      'backdrop-hue-rotate': [{\n        'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Invert\n       * @see https://tailwindcss.com/docs/backdrop-invert\n       */\n      'backdrop-invert': [{\n        'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Opacity\n       * @see https://tailwindcss.com/docs/backdrop-opacity\n       */\n      'backdrop-opacity': [{\n        'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Saturate\n       * @see https://tailwindcss.com/docs/backdrop-saturate\n       */\n      'backdrop-saturate': [{\n        'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Sepia\n       * @see https://tailwindcss.com/docs/backdrop-sepia\n       */\n      'backdrop-sepia': [{\n        'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      // --------------\n      // --- Tables ---\n      // --------------\n      /**\n       * Border Collapse\n       * @see https://tailwindcss.com/docs/border-collapse\n       */\n      'border-collapse': [{\n        border: ['collapse', 'separate']\n      }],\n      /**\n       * Border Spacing\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing': [{\n        'border-spacing': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Border Spacing X\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing-x': [{\n        'border-spacing-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Border Spacing Y\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing-y': [{\n        'border-spacing-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Table Layout\n       * @see https://tailwindcss.com/docs/table-layout\n       */\n      'table-layout': [{\n        table: ['auto', 'fixed']\n      }],\n      /**\n       * Caption Side\n       * @see https://tailwindcss.com/docs/caption-side\n       */\n      caption: [{\n        caption: ['top', 'bottom']\n      }],\n      // ---------------------------------\n      // --- Transitions and Animation ---\n      // ---------------------------------\n      /**\n       * Transition Property\n       * @see https://tailwindcss.com/docs/transition-property\n       */\n      transition: [{\n        transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Behavior\n       * @see https://tailwindcss.com/docs/transition-behavior\n       */\n      'transition-behavior': [{\n        transition: ['normal', 'discrete']\n      }],\n      /**\n       * Transition Duration\n       * @see https://tailwindcss.com/docs/transition-duration\n       */\n      duration: [{\n        duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Timing Function\n       * @see https://tailwindcss.com/docs/transition-timing-function\n       */\n      ease: [{\n        ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Delay\n       * @see https://tailwindcss.com/docs/transition-delay\n       */\n      delay: [{\n        delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Animation\n       * @see https://tailwindcss.com/docs/animation\n       */\n      animate: [{\n        animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n      }],\n      // ------------------\n      // --- Transforms ---\n      // ------------------\n      /**\n       * Backface Visibility\n       * @see https://tailwindcss.com/docs/backface-visibility\n       */\n      backface: [{\n        backface: ['hidden', 'visible']\n      }],\n      /**\n       * Perspective\n       * @see https://tailwindcss.com/docs/perspective\n       */\n      perspective: [{\n        perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Perspective Origin\n       * @see https://tailwindcss.com/docs/perspective-origin\n       */\n      'perspective-origin': [{\n        'perspective-origin': scalePositionWithArbitrary()\n      }],\n      /**\n       * Rotate\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      rotate: [{\n        rotate: scaleRotate()\n      }],\n      /**\n       * Rotate X\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-x': [{\n        'rotate-x': scaleRotate()\n      }],\n      /**\n       * Rotate Y\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-y': [{\n        'rotate-y': scaleRotate()\n      }],\n      /**\n       * Rotate Z\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-z': [{\n        'rotate-z': scaleRotate()\n      }],\n      /**\n       * Scale\n       * @see https://tailwindcss.com/docs/scale\n       */\n      scale: [{\n        scale: scaleScale()\n      }],\n      /**\n       * Scale X\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-x': [{\n        'scale-x': scaleScale()\n      }],\n      /**\n       * Scale Y\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-y': [{\n        'scale-y': scaleScale()\n      }],\n      /**\n       * Scale Z\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-z': [{\n        'scale-z': scaleScale()\n      }],\n      /**\n       * Scale 3D\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-3d': ['scale-3d'],\n      /**\n       * Skew\n       * @see https://tailwindcss.com/docs/skew\n       */\n      skew: [{\n        skew: scaleSkew()\n      }],\n      /**\n       * Skew X\n       * @see https://tailwindcss.com/docs/skew\n       */\n      'skew-x': [{\n        'skew-x': scaleSkew()\n      }],\n      /**\n       * Skew Y\n       * @see https://tailwindcss.com/docs/skew\n       */\n      'skew-y': [{\n        'skew-y': scaleSkew()\n      }],\n      /**\n       * Transform\n       * @see https://tailwindcss.com/docs/transform\n       */\n      transform: [{\n        transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n      }],\n      /**\n       * Transform Origin\n       * @see https://tailwindcss.com/docs/transform-origin\n       */\n      'transform-origin': [{\n        origin: scalePositionWithArbitrary()\n      }],\n      /**\n       * Transform Style\n       * @see https://tailwindcss.com/docs/transform-style\n       */\n      'transform-style': [{\n        transform: ['3d', 'flat']\n      }],\n      /**\n       * Translate\n       * @see https://tailwindcss.com/docs/translate\n       */\n      translate: [{\n        translate: scaleTranslate()\n      }],\n      /**\n       * Translate X\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-x': [{\n        'translate-x': scaleTranslate()\n      }],\n      /**\n       * Translate Y\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-y': [{\n        'translate-y': scaleTranslate()\n      }],\n      /**\n       * Translate Z\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-z': [{\n        'translate-z': scaleTranslate()\n      }],\n      /**\n       * Translate None\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-none': ['translate-none'],\n      // ---------------------\n      // --- Interactivity ---\n      // ---------------------\n      /**\n       * Accent Color\n       * @see https://tailwindcss.com/docs/accent-color\n       */\n      accent: [{\n        accent: scaleColor()\n      }],\n      /**\n       * Appearance\n       * @see https://tailwindcss.com/docs/appearance\n       */\n      appearance: [{\n        appearance: ['none', 'auto']\n      }],\n      /**\n       * Caret Color\n       * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n       */\n      'caret-color': [{\n        caret: scaleColor()\n      }],\n      /**\n       * Color Scheme\n       * @see https://tailwindcss.com/docs/color-scheme\n       */\n      'color-scheme': [{\n        scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n      }],\n      /**\n       * Cursor\n       * @see https://tailwindcss.com/docs/cursor\n       */\n      cursor: [{\n        cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Field Sizing\n       * @see https://tailwindcss.com/docs/field-sizing\n       */\n      'field-sizing': [{\n        'field-sizing': ['fixed', 'content']\n      }],\n      /**\n       * Pointer Events\n       * @see https://tailwindcss.com/docs/pointer-events\n       */\n      'pointer-events': [{\n        'pointer-events': ['auto', 'none']\n      }],\n      /**\n       * Resize\n       * @see https://tailwindcss.com/docs/resize\n       */\n      resize: [{\n        resize: ['none', '', 'y', 'x']\n      }],\n      /**\n       * Scroll Behavior\n       * @see https://tailwindcss.com/docs/scroll-behavior\n       */\n      'scroll-behavior': [{\n        scroll: ['auto', 'smooth']\n      }],\n      /**\n       * Scroll Margin\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-m': [{\n        'scroll-m': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin X\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mx': [{\n        'scroll-mx': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Y\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-my': [{\n        'scroll-my': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Start\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-ms': [{\n        'scroll-ms': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin End\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-me': [{\n        'scroll-me': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Top\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mt': [{\n        'scroll-mt': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Right\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mr': [{\n        'scroll-mr': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Bottom\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mb': [{\n        'scroll-mb': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Left\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-ml': [{\n        'scroll-ml': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-p': [{\n        'scroll-p': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding X\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-px': [{\n        'scroll-px': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Y\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-py': [{\n        'scroll-py': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Start\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-ps': [{\n        'scroll-ps': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding End\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pe': [{\n        'scroll-pe': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Top\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pt': [{\n        'scroll-pt': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Right\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pr': [{\n        'scroll-pr': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Bottom\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pb': [{\n        'scroll-pb': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Left\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pl': [{\n        'scroll-pl': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Snap Align\n       * @see https://tailwindcss.com/docs/scroll-snap-align\n       */\n      'snap-align': [{\n        snap: ['start', 'end', 'center', 'align-none']\n      }],\n      /**\n       * Scroll Snap Stop\n       * @see https://tailwindcss.com/docs/scroll-snap-stop\n       */\n      'snap-stop': [{\n        snap: ['normal', 'always']\n      }],\n      /**\n       * Scroll Snap Type\n       * @see https://tailwindcss.com/docs/scroll-snap-type\n       */\n      'snap-type': [{\n        snap: ['none', 'x', 'y', 'both']\n      }],\n      /**\n       * Scroll Snap Type Strictness\n       * @see https://tailwindcss.com/docs/scroll-snap-type\n       */\n      'snap-strictness': [{\n        snap: ['mandatory', 'proximity']\n      }],\n      /**\n       * Touch Action\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      touch: [{\n        touch: ['auto', 'none', 'manipulation']\n      }],\n      /**\n       * Touch Action X\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-x': [{\n        'touch-pan': ['x', 'left', 'right']\n      }],\n      /**\n       * Touch Action Y\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-y': [{\n        'touch-pan': ['y', 'up', 'down']\n      }],\n      /**\n       * Touch Action Pinch Zoom\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-pz': ['touch-pinch-zoom'],\n      /**\n       * User Select\n       * @see https://tailwindcss.com/docs/user-select\n       */\n      select: [{\n        select: ['none', 'text', 'all', 'auto']\n      }],\n      /**\n       * Will Change\n       * @see https://tailwindcss.com/docs/will-change\n       */\n      'will-change': [{\n        'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n      }],\n      // -----------\n      // --- SVG ---\n      // -----------\n      /**\n       * Fill\n       * @see https://tailwindcss.com/docs/fill\n       */\n      fill: [{\n        fill: ['none', ...scaleColor()]\n      }],\n      /**\n       * Stroke Width\n       * @see https://tailwindcss.com/docs/stroke-width\n       */\n      'stroke-w': [{\n        stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n      }],\n      /**\n       * Stroke\n       * @see https://tailwindcss.com/docs/stroke\n       */\n      stroke: [{\n        stroke: ['none', ...scaleColor()]\n      }],\n      // ---------------------\n      // --- Accessibility ---\n      // ---------------------\n      /**\n       * Forced Color Adjust\n       * @see https://tailwindcss.com/docs/forced-color-adjust\n       */\n      'forced-color-adjust': [{\n        'forced-color-adjust': ['auto', 'none']\n      }]\n    },\n    conflictingClassGroups: {\n      overflow: ['overflow-x', 'overflow-y'],\n      overscroll: ['overscroll-x', 'overscroll-y'],\n      inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n      'inset-x': ['right', 'left'],\n      'inset-y': ['top', 'bottom'],\n      flex: ['basis', 'grow', 'shrink'],\n      gap: ['gap-x', 'gap-y'],\n      p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n      px: ['pr', 'pl'],\n      py: ['pt', 'pb'],\n      m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n      mx: ['mr', 'ml'],\n      my: ['mt', 'mb'],\n      size: ['w', 'h'],\n      'font-size': ['leading'],\n      'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n      'fvn-ordinal': ['fvn-normal'],\n      'fvn-slashed-zero': ['fvn-normal'],\n      'fvn-figure': ['fvn-normal'],\n      'fvn-spacing': ['fvn-normal'],\n      'fvn-fraction': ['fvn-normal'],\n      'line-clamp': ['display', 'overflow'],\n      rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n      'rounded-s': ['rounded-ss', 'rounded-es'],\n      'rounded-e': ['rounded-se', 'rounded-ee'],\n      'rounded-t': ['rounded-tl', 'rounded-tr'],\n      'rounded-r': ['rounded-tr', 'rounded-br'],\n      'rounded-b': ['rounded-br', 'rounded-bl'],\n      'rounded-l': ['rounded-tl', 'rounded-bl'],\n      'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n      'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n      'border-w-x': ['border-w-r', 'border-w-l'],\n      'border-w-y': ['border-w-t', 'border-w-b'],\n      'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n      'border-color-x': ['border-color-r', 'border-color-l'],\n      'border-color-y': ['border-color-t', 'border-color-b'],\n      translate: ['translate-x', 'translate-y', 'translate-none'],\n      'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n      'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n      'scroll-mx': ['scroll-mr', 'scroll-ml'],\n      'scroll-my': ['scroll-mt', 'scroll-mb'],\n      'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n      'scroll-px': ['scroll-pr', 'scroll-pl'],\n      'scroll-py': ['scroll-pt', 'scroll-pb'],\n      touch: ['touch-x', 'touch-y', 'touch-pz'],\n      'touch-x': ['touch'],\n      'touch-y': ['touch'],\n      'touch-pz': ['touch']\n    },\n    conflictingClassGroupModifiers: {\n      'font-size': ['leading']\n    },\n    orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n  };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n  cacheSize,\n  prefix,\n  experimentalParseClassName,\n  extend = {},\n  override = {}\n}) => {\n  overrideProperty(baseConfig, 'cacheSize', cacheSize);\n  overrideProperty(baseConfig, 'prefix', prefix);\n  overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n  overrideConfigProperties(baseConfig.theme, override.theme);\n  overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n  overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n  overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n  overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n  mergeConfigProperties(baseConfig.theme, extend.theme);\n  mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n  mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n  mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n  mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n  return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n  if (overrideValue !== undefined) {\n    baseObject[overrideKey] = overrideValue;\n  }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n  if (overrideObject) {\n    for (const key in overrideObject) {\n      overrideProperty(baseObject, key, overrideObject[key]);\n    }\n  }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n  if (mergeObject) {\n    for (const key in mergeObject) {\n      mergeArrayProperties(baseObject, mergeObject, key);\n    }\n  }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n  const mergeValue = mergeObject[key];\n  if (mergeValue !== undefined) {\n    baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n  }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n\nexport function generateRandomId() {\n  const id = Math.random().toString(36).substring(2, 10); // Base 36, first 8 characters\n  return id;\n}\n","import React from 'react';\r\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\r\nimport { ChevronDown } from 'lucide-react';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst accordionVariants = cva('', {\r\n  variants: {\r\n    variant: {\r\n      primary:\r\n        'bg-primary-gray-200 dark:bg-primary-gray-650 text-primary-gray-700 dark:text-primary-white mb-4 px-4 py-1',\r\n      secondary:\r\n        'bg-primary-gray-200 dark:bg-primary-gray-650 text-primary-gray-700 dark:text-primary-white mb-0 px-4 py-1 border-b border-b-primary-gray-400 dark:border-b-primary-gray-550 last:border-b-0',\r\n      tertiary:\r\n        'bg-transparent text-primary-gray-700 dark:text-primary-white mb-0 py-2 px-0 border-b border-b-primary-gray-400 dark:border-b-primary-gray-500',\r\n      quaternary: 'bg-transparent text-primary-gray-700 dark:text-primary-white mb-0 py-0 px-0',\r\n    },\r\n  },\r\n  defaultVariants: { variant: 'primary' },\r\n});\r\n\r\nconst accordionTitleVariants = cva(\r\n  'flex flex-1 items-center transition-all text-left text-primary-gray-700 dark:text-primary-white [&[data-state=open]>svg]:rotate-180',\r\n  {\r\n    variants: {\r\n      variant: {\r\n        primary: 'font-normal text-xl justify-between',\r\n        secondary: 'uppercase font-normal text-base justify-between',\r\n        tertiary: 'uppercase font-normal text-2xl justify-between',\r\n        quaternary: 'uppercase font-bold text-base gap-3',\r\n      },\r\n    },\r\n    defaultVariants: { variant: 'primary' },\r\n  },\r\n);\r\n\r\nconst accordionContentVariants = cva(\r\n  'overflow-hidden text-primary-gray-700 dark:text-primary-white text-base data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down',\r\n  {\r\n    variants: {\r\n      variant: {\r\n        primary: 'my-3.5',\r\n        secondary: 'my-3.5',\r\n        tertiary: 'my-3.5 px-3.5',\r\n        quaternary: 'my-3.5 p-0',\r\n      },\r\n    },\r\n    defaultVariants: { variant: 'primary' },\r\n  },\r\n);\r\n\r\nconst AccordionContext = React.createContext<{\r\n  variant: 'primary' | 'secondary' | 'tertiary' | 'quaternary' | null | undefined;\r\n} | null>(null);\r\n\r\ntype AccordionProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root> &\r\n  VariantProps<typeof accordionVariants>;\r\n\r\nconst Accordion = React.forwardRef<\r\n  React.ComponentRef<typeof AccordionPrimitive.Root>,\r\n  AccordionProps\r\n>(({ variant, children, ...props }, ref) => {\r\n  return (\r\n    <AccordionContext.Provider value={{ variant }}>\r\n      <AccordionPrimitive.Root ref={ref} {...props}>\r\n        {children}\r\n      </AccordionPrimitive.Root>\r\n    </AccordionContext.Provider>\r\n  );\r\n});\r\nAccordion.displayName = AccordionPrimitive.Root.displayName;\r\n\r\nconst AccordionItem = React.forwardRef<\r\n  React.ComponentRef<typeof AccordionPrimitive.Item>,\r\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\r\n>(({ className, ...props }, ref) => {\r\n  const context = React.useContext(AccordionContext);\r\n\r\n  const combinedClasses = cn(accordionVariants({ variant: context?.variant }), className);\r\n  return (\r\n    <AccordionPrimitive.Item {...props} ref={ref} className={cn(combinedClasses, className)} />\r\n  );\r\n});\r\nAccordionItem.displayName = 'AccordionItem';\r\n\r\nconst AccordionTrigger = React.forwardRef<\r\n  React.ComponentRef<typeof AccordionPrimitive.Trigger>,\r\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => {\r\n  const context = React.useContext(AccordionContext);\r\n  return (\r\n    <AccordionPrimitive.Header className='flex my-4'>\r\n      <AccordionPrimitive.Trigger\r\n        {...props}\r\n        ref={ref}\r\n        className={cn(accordionTitleVariants({ variant: context?.variant }), className)}\r\n      >\r\n        {context?.variant === 'quaternary' ? (\r\n          <>\r\n            <ChevronDown className='h-6 w-6 shrink-0 text-accent-red dark:text-primary-white transition-transform duration-200' />\r\n            {children}\r\n          </>\r\n        ) : (\r\n          <>\r\n            {children}\r\n            <ChevronDown className='h-6 w-6 shrink-0 text-accent-red dark:text-primary-white transition-transform duration-200' />\r\n          </>\r\n        )}\r\n      </AccordionPrimitive.Trigger>\r\n    </AccordionPrimitive.Header>\r\n  );\r\n});\r\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\r\n\r\nconst AccordionContent = React.forwardRef<\r\n  React.ComponentRef<typeof AccordionPrimitive.Content>,\r\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => {\r\n  const context = React.useContext(AccordionContext);\r\n  return (\r\n    <AccordionPrimitive.Content\r\n      {...props}\r\n      ref={ref}\r\n      className={cn(accordionContentVariants({ variant: context?.variant }), className)}\r\n    >\r\n      <div className={className}>{children}</div>\r\n    </AccordionPrimitive.Content>\r\n  );\r\n});\r\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\r\n\r\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst badgeVariants = cva(\r\n  'inline-flex items-center border-2 px-2.5 py-0.5 font-normal transition-colors focus:outline-hidden',\r\n  {\r\n    variants: {\r\n      variant: {\r\n        'light-gray':\r\n          'border-transparent bg-primary-gray-300 dark:bg-primary-gray-600 text-primary-black dark:text-primary-white',\r\n        gray: 'border-transparent bg-primary-gray-400 dark:bg-primary-gray-550 text-primary-black dark:text-primary-white',\r\n        'dark-gray':\r\n          'border-transparent bg-primary-gray-600 dark:bg-primary-gray-200 text-primary-white dark:text-primary-black',\r\n        blue: 'border-transparent bg-primary-blue-200 text-primary-black dark:bg-primary-blue-500 dark:text-primary-white',\r\n        yellow:\r\n          'border-transparent bg-accent-light-yellow text-primary-black dark:bg-accent-dark-yellow dark:text-primary-black',\r\n        green:\r\n          'border-transparent bg-accent-light-green text-primary-black dark:bg-accent-dark-green dark:text-primary-white',\r\n        red: 'border-transparent bg-accent-light-red text-primary-black dark:bg-accent-dark-red dark:text-primary-white',\r\n        azure:\r\n          'border-transparent bg-accent-light-azure text-primary-black dark:bg-accent-dark-azure dark:text-primary-white',\r\n        outline:\r\n          'border-primary-gray-400 dark:border-primary-gray-500 text-primary-gray-600 dark:text-primary-gray-200',\r\n        custom: 'border-transparent bg-custom-color-200 text-primary-black',\r\n      },\r\n      rounded: {\r\n        none: 'rounded-none',\r\n        xs: 'rounded-xs',\r\n        sm: 'rounded-sm',\r\n        full: 'rounded-full',\r\n      },\r\n      size: {\r\n        base: 'text-base!',\r\n        sm: 'text-sm!',\r\n        xs: 'text-xs!',\r\n        lg: 'text-lg!',\r\n        xl: 'text-xl!',\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      variant: 'light-gray',\r\n      size: 'base',\r\n      rounded: 'full',\r\n    },\r\n  },\r\n);\r\n\r\ninterface BadgeProps\r\n  extends React.HTMLAttributes<HTMLDivElement>,\r\n    VariantProps<typeof badgeVariants> {}\r\n\r\nfunction Badge({ className, rounded, variant, size, ...props }: BadgeProps) {\r\n  return <div {...props} className={cn(badgeVariants({ variant, rounded, size }), className)} />;\r\n}\r\n\r\nexport { Badge };\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst bannerVariants = cva('', {\r\n  variants: {\r\n    backgroundColor: {\r\n      transparent: 'bg-primary-transparent text-primary-black dark:text-primary-white',\r\n      white: 'bg-primary-white dark:bg-primary-gray-700 text-primary-black dark:text-primary-white',\r\n      gray: 'bg-primary-gray-200 dark:bg-primary-gray-600 text-primary-black dark:text-primary-white',\r\n      'dark-gray':\r\n        'bg-primary-gray-600 dark:bg-primary-gray-300 text-primary-white dark:text-primary-black',\r\n      black:\r\n        'bg-primary-gray-700 dark:bg-primary-gray-100 text-primary-white dark:text-primary-black',\r\n      blue: 'bg-primary-blue-600 dark:bg-primary-blue-500 text-primary-white',\r\n      azure: 'bg-accent-azure',\r\n      yellow: 'bg-accent-yellow',\r\n      red: 'bg-accent-red text-primary-white',\r\n      green: 'bg-accent-green',\r\n      custom: 'bg-custom-color-600 text-custom-foreground',\r\n    },\r\n    padding: {\r\n      none: 'py-24 px-0',\r\n      '2xs': 'py-24 px-1',\r\n      xs: 'py-24 px-2',\r\n      sm: 'py-24 px-3',\r\n      base: 'py-24 px-4',\r\n      lg: 'py-24 px-5',\r\n      xl: 'py-24 px-6',\r\n      '2xl': 'py-24 px-8',\r\n      '3xl': 'py-24 px-10',\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    backgroundColor: 'transparent',\r\n    padding: 'base',\r\n  },\r\n});\r\n\r\nconst bodyVariants = cva('flex flex-row items-stretch flex-wrap w-full', {\r\n  variants: {\r\n    bodyMaxWidth: {\r\n      xs: 'max-w-[1024px] mx-auto',\r\n      sm: 'max-w-[1272px] mx-auto',\r\n      base: 'max-w-[1440px] mx-auto',\r\n      lg: 'max-w-[1600px] mx-auto',\r\n      xl: 'max-w-[1980px] mx-auto',\r\n      full: 'max-w-none',\r\n    },\r\n    bodyGap: {\r\n      none: 'gap-0',\r\n      '2xs': 'gap-1',\r\n      xs: 'gap-2',\r\n      sm: 'gap-3',\r\n      base: 'gap-4',\r\n      lg: 'gap-5',\r\n      xl: 'gap-6',\r\n      '2xl': 'gap-7',\r\n      '3xl': 'gap-8',\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    bodyGap: 'base',\r\n    bodyMaxWidth: 'full',\r\n  },\r\n});\r\n\r\nconst sidebarVariants = cva('w-full', {\r\n  variants: {\r\n    sidebarWidth: {\r\n      sm: 'sm:w-1/4',\r\n      base: 'sm:w-1/3',\r\n      lg: 'sm:w-1/2',\r\n      full: '',\r\n    },\r\n  },\r\n  defaultVariants: { sidebarWidth: 'base' },\r\n});\r\n\r\nconst BannerContext = React.createContext<{\r\n  backgroundColor:\r\n    | 'transparent'\r\n    | 'white'\r\n    | 'gray'\r\n    | 'dark-gray'\r\n    | 'black'\r\n    | 'blue'\r\n    | 'azure'\r\n    | 'yellow'\r\n    | 'red'\r\n    | 'green'\r\n    | 'custom'\r\n    | null\r\n    | undefined;\r\n  padding: 'none' | '2xs' | 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | null | undefined;\r\n  bodyMaxWidth: 'xs' | 'sm' | 'base' | 'lg' | 'xl' | 'full' | null | undefined;\r\n  bodyGap: 'none' | '2xs' | 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | null | undefined;\r\n  sidebarWidth: 'sm' | 'base' | 'lg' | 'full' | null | undefined;\r\n} | null>(null);\r\n\r\nconst Banner = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement> &\r\n    VariantProps<typeof bannerVariants> &\r\n    VariantProps<typeof bodyVariants> &\r\n    VariantProps<typeof sidebarVariants>\r\n>(({ className, backgroundColor, sidebarWidth, bodyGap, bodyMaxWidth, padding, ...props }, ref) => {\r\n  const contextValue = React.useMemo(\r\n    () => ({\r\n      backgroundColor,\r\n      sidebarWidth,\r\n      bodyGap,\r\n      bodyMaxWidth,\r\n      padding,\r\n    }),\r\n    [backgroundColor, sidebarWidth, bodyGap, bodyMaxWidth, padding],\r\n  );\r\n  return (\r\n    <BannerContext.Provider value={contextValue}>\r\n      <div\r\n        {...props}\r\n        className={cn(\r\n          bannerVariants({\r\n            backgroundColor,\r\n            padding,\r\n          }),\r\n          className,\r\n        )}\r\n        ref={ref}\r\n      />\r\n    </BannerContext.Provider>\r\n  );\r\n});\r\nBanner.displayName = 'Banner';\r\n\r\nconst BannerBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n  ({ className, ...props }, ref) => {\r\n    const context = React.useContext(BannerContext);\r\n    return (\r\n      <div\r\n        {...props}\r\n        className={cn(\r\n          bodyVariants({\r\n            bodyMaxWidth: context?.bodyMaxWidth,\r\n            bodyGap: context?.bodyGap,\r\n          }),\r\n          className,\r\n        )}\r\n        ref={ref}\r\n      />\r\n    );\r\n  },\r\n);\r\nBannerBody.displayName = 'BannerBody';\r\n\r\nconst BannerBodySidebar = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n  ({ className, ...props }, ref) => {\r\n    const context = React.useContext(BannerContext);\r\n    return (\r\n      <div\r\n        {...props}\r\n        className={cn(sidebarVariants({ sidebarWidth: context?.sidebarWidth }), className)}\r\n        ref={ref}\r\n      />\r\n    );\r\n  },\r\n);\r\nBannerBodySidebar.displayName = 'BannerBodySidebar';\r\n\r\nconst BannerBodyContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n  ({ className, ...props }, ref) => {\r\n    return <div {...props} className={cn('flex-1', className)} ref={ref} />;\r\n  },\r\n);\r\nBannerBodyContent.displayName = 'BannerBodyContent';\r\n\r\nexport { Banner, BannerBody, BannerBodySidebar, BannerBodyContent };\r\n","import React from 'react';\r\nimport { MoreHorizontal } from 'lucide-react';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst Breadcrumb = React.forwardRef<HTMLElement, React.ComponentPropsWithoutRef<'nav'>>(\r\n  ({ ...props }, ref) => <nav ref={ref} aria-label='breadcrumb' {...props} />,\r\n);\r\nBreadcrumb.displayName = 'Breadcrumb';\r\n\r\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(\r\n  ({ className, ...props }, ref) => (\r\n    <ol\r\n      {...props}\r\n      ref={ref}\r\n      className={cn(\r\n        'flex flex-wrap items-center gap-1.5 break-words font-semibold text-xs uppercase list-none sm:gap-2.5',\r\n        className,\r\n      )}\r\n    />\r\n  ),\r\n);\r\nBreadcrumbList.displayName = 'BreadcrumbList';\r\n\r\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\r\n  ({ className, ...props }, ref) => (\r\n    <li {...props} ref={ref} className={cn('inline-flex items-center gap-1.5', className)} />\r\n  ),\r\n);\r\nBreadcrumbItem.displayName = 'BreadcrumbItem';\r\n\r\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, React.ComponentPropsWithoutRef<'a'>>(\r\n  ({ className, ...props }, ref) => {\r\n    const Comp = 'a';\r\n\r\n    const combinedClasses = cn(\r\n      'transition-colors text-accent-dark-red hover:text-accent-light-red dark:text-primary-white dark:hover:text-primary-gray-500',\r\n      className,\r\n    );\r\n\r\n    return <Comp ref={ref} className={combinedClasses} {...props} />;\r\n  },\r\n);\r\nBreadcrumbLink.displayName = 'BreadcrumbLink';\r\n\r\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\r\n  ({ className, ...props }, ref) => {\r\n    return (\r\n      <span\r\n        {...props}\r\n        ref={ref}\r\n        role='link'\r\n        aria-disabled='true'\r\n        aria-current='page'\r\n        className={cn('text-primary-gray-700 text-xs dark:text-primary-white', className)}\r\n      />\r\n    );\r\n  },\r\n);\r\nBreadcrumbPage.displayName = 'BreadcrumbPage';\r\n\r\nfunction BreadcrumbSeparator() {\r\n  return (\r\n    <li role='presentation' aria-hidden='true'>\r\n      <div className='text-accent-dark-red dark:text-primary-white'>/</div>\r\n    </li>\r\n  );\r\n}\r\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\r\n\r\nfunction BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<'span'>) {\r\n  return (\r\n    <span\r\n      {...props}\r\n      role='presentation'\r\n      aria-hidden='true'\r\n      className={cn('flex h-9 w-9 items-center justify-center', className)}\r\n    >\r\n      <MoreHorizontal className='h-4 w-4' />\r\n      <span className='sr-only'>More</span>\r\n    </span>\r\n  );\r\n}\r\nBreadcrumbEllipsis.displayName = 'BreadcrumbElipssis';\r\n\r\nexport {\r\n  Breadcrumb,\r\n  BreadcrumbList,\r\n  BreadcrumbItem,\r\n  BreadcrumbLink,\r\n  BreadcrumbPage,\r\n  BreadcrumbSeparator,\r\n  BreadcrumbEllipsis,\r\n};\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst buttonVariants = cva(\r\n  'undp-button m-0! tracking-[0.48px] inline-flex items-center justify-center gap-2 uppercase whitespace-nowrap rounded-none text-lg font-bold transition-colors focus-visible:outline-hidden focus-visible:ring-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\r\n  {\r\n    variants: {\r\n      variant: {\r\n        primary:\r\n          'bg-accent-dark-red text-primary-white button-arrow black-arrow hover:bg-accent-red',\r\n        'primary-without-icon': 'bg-accent-dark-red text-primary-white hover:bg-accent-red',\r\n        secondary:\r\n          'bg-primary-blue-600 text-primary-white button-arrow white-arrow hover:bg-primary-blue-400',\r\n        'secondary-without-icon':\r\n          'bg-primary-blue-600 text-primary-white hover:bg-primary-blue-400',\r\n        tertiary:\r\n          'bg-primary-gray-300 text-primary-gray-700 dark:bg-primary-gray-600 dark:text-primary-white red-arrow hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550',\r\n        link: 'text-primary-gray-700 dark:text-primary-white red-arrow button-arrow',\r\n        'link-without-icon':\r\n          'text-primary-gray-700 dark:text-primary-white dark:hover:text-primary-gray-500 hover:text-primary-gray-500',\r\n        outline:\r\n          'bg-transparent text-primary-black dark:text-primary-white border-2 border-primary-gray-700 dark:border-primary-gray-100 dark:hover:bg-primary-gray-550 hover:bg-primary-gray-300',\r\n        icon: 'bg-transparent dark:text-primary-gray-100 text-primary-gray-700 dark:hover:text-primary-gray-500 hover:text-primary-gray-500',\r\n      },\r\n      size: {\r\n        base: 'leading-none text-base!',\r\n        xs: 'leading-none text-xs!',\r\n        sm: 'leading-none text-sm!',\r\n        xl: 'leading-none text-xl!',\r\n      },\r\n      padding: {\r\n        base: 'py-4 px-6',\r\n        sm: 'px-4 py-2',\r\n        none: 'py-0 px-0',\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      variant: 'primary',\r\n      size: 'base',\r\n      padding: 'base',\r\n    },\r\n  },\r\n);\r\n\r\ninterface ButtonProps\r\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n    VariantProps<typeof buttonVariants> {}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n  ({ className, variant, size, padding, ...props }, ref) => {\r\n    const Comp = 'button';\r\n    return (\r\n      <Comp\r\n        {...props}\r\n        className={cn(buttonVariants({ variant, size, padding }), className)}\r\n        ref={ref}\r\n      />\r\n    );\r\n  },\r\n);\r\nButton.displayName = 'Button';\r\n\r\nexport { Button };\r\n","import * as React from 'react';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst cardVariants = cva('flex flex-col justify-between items-stretch', {\r\n  variants: {\r\n    variant: {\r\n      'with-image': '[&_.card-tag]:pb-[26px]',\r\n      'without-image': '[&_.card-tag]:pb-4',\r\n    },\r\n    backgroundColor: {\r\n      transparent: 'bg-primary-transparent text-primary-black dark:text-primary-white',\r\n      white:\r\n        'bg-primary-white dark:bg-primary-gray-700 hover:bg-primary-gray-200 dark:hover:bg-primary-gray-600 text-primary-black dark:text-primary-white',\r\n      gray: 'bg-primary-gray-200 dark:bg-primary-gray-600 hover:bg-primary-gray-400 dark:hover:bg-primary-gray-500 text-primary-black dark:text-primary-white',\r\n      'dark-gray':\r\n        'bg-primary-gray-600 dark:bg-primary-gray-300 hover:bg-primary-gray-500 dark:hover:bg-primary-gray-400 text-primary-white dark:text-primary-black',\r\n      black:\r\n        'bg-primary-gray-700 dark:bg-primary-gray-100 hover:bg-primary-gray-650 dark:hover:bg-primary-gray-300 text-primary-white dark:text-primary-black',\r\n      blue: 'bg-primary-blue-200 hover:bg-primary-blue-300 dark:bg-primary-blue-600 dark:hover:bg-primary-blue-500 text-primary-black dark:text-primary-white',\r\n      azure:\r\n        'bg-accent-light-azure hover:bg-accent-azure dark:bg-accent-dark-azure dark:hover:bg-accent-azure text-primary-black dark:text-primary-white',\r\n      yellow:\r\n        'bg-accent-light-yellow hover:bg-accent-yellow dark:bg-accent-dark-yellow dark:hover:bg-accent-yellow text-primary-black',\r\n      red: 'bg-accent-light-red hover:bg-accent-red dark:bg-accent-dark-red dark:hover:bg-accent-red text-primary-black dark:text-primary-white',\r\n      green:\r\n        'bg-accent-light-green hover:bg-accent-green dark:bg-accent-dark-green dark:hover:bg-accent-green text-primary-black dark:text-primary-white',\r\n      custom: 'bg-custom-color-200 hover:bg-custom-color-300 text-custom-foreground',\r\n    },\r\n    size: {\r\n      xs: 'w-1/4',\r\n      sm: 'w-1/3',\r\n      base: 'w-1/2',\r\n      lg: 'w-2/3',\r\n      xl: 'w-3/4',\r\n      full: 'w-full',\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    size: 'full',\r\n    variant: 'with-image',\r\n    backgroundColor: 'white',\r\n  },\r\n});\r\n\r\nexport interface CardProps\r\n  extends React.HTMLAttributes<HTMLDivElement>,\r\n    VariantProps<typeof cardVariants> {\r\n  border?: boolean;\r\n}\r\n\r\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\r\n  ({ className, border, size, variant, backgroundColor, ...props }, ref) => (\r\n    <div\r\n      ref={ref}\r\n      className={cn(\r\n        cardVariants({ size, backgroundColor, variant }),\r\n        border === false ? '' : 'border-t-2 border-primary-black dark:border-primary-gray-100',\r\n        className,\r\n      )}\r\n      {...props}\r\n    />\r\n  ),\r\n);\r\nCard.displayName = 'Card';\r\n\r\nconst CardHeader = React.forwardRef<HTMLDivElement, CardProps>(({ ...props }, ref) => (\r\n  <div ref={ref} {...props} />\r\n));\r\nCardHeader.displayName = 'CardHeader';\r\n\r\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n  ({ className, ...props }, ref) => (\r\n    <div\r\n      ref={ref}\r\n      className={cn('pl-6 pr-6 pt-4 pb-6 flex flex-wrap gap-4', className)}\r\n      {...props}\r\n    />\r\n  ),\r\n);\r\nCardFooter.displayName = 'CardFooter';\r\n\r\nconst CardTag = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\r\n  ({ children, className, ...props }, ref) => (\r\n    <div\r\n      ref={ref}\r\n      className={cn(\r\n        'card-tag flex gap-2 mt-0 mb-0 pt-4 pl-6 pr-6 md:mb-0 text-xs font-bold leading-[1.15] uppercase',\r\n        className,\r\n      )}\r\n      {...props}\r\n    >\r\n      {children}\r\n    </div>\r\n  ),\r\n);\r\nCardTag.displayName = 'CardTag';\r\n\r\nconst CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\r\n  ({ children, className, ...props }, ref) => (\r\n    <div\r\n      ref={ref}\r\n      className={cn(\r\n        'm-0 pl-6 pr-6 pt-4 pb-6 leading-[1.15] flex gap-2 font-normal text-[1.25rem] md:text-[1.563rem]',\r\n        className,\r\n      )}\r\n      {...props}\r\n    >\r\n      {children}\r\n    </div>\r\n  ),\r\n);\r\nCardTitle.displayName = 'CardTitle';\r\n\r\nconst CardDescription = React.forwardRef<\r\n  HTMLHeadingElement,\r\n  React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ children, className, ...props }, ref) => (\r\n  <div\r\n    ref={ref}\r\n    className={cn(`pl-6 pr-6 pt-0 pb-6 mt-0 text-base leading-[1.4] md:text-xl`, className)}\r\n    {...props}\r\n  >\r\n    {children}\r\n  </div>\r\n));\r\nCardDescription.displayName = 'CardDescription';\r\n\r\ninterface CardImageProps extends React.HTMLAttributes<HTMLImageElement> {\r\n  src: string;\r\n  alt?: string;\r\n}\r\n\r\nconst CardImage = React.forwardRef<HTMLImageElement, CardImageProps>(\r\n  ({ className, ...props }, ref) => (\r\n    <img ref={ref} alt='card' {...props} className={cn('w-full h-64 object-cover', className)} />\r\n  ),\r\n);\r\nCardImage.displayName = 'CardImage';\r\n\r\nexport { Card, CardTag, CardTitle, CardDescription, CardImage, CardFooter, CardHeader };\r\n","import * as React from 'react';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst cardVariants = cva('flex flex-col items-stretch w-full', {\r\n  variants: {\r\n    imageWidth: {\r\n      zero: '[&_.card-img]:hidden [&_.card-content]:w-full',\r\n      xs: '[&_.card-img]:w-1/4 [&_.card-content]:w-3/4',\r\n      sm: '[&_.card-img]:w-1/3 [&_.card-content]:w-2/3',\r\n      base: '[&_.card-img]:w-1/2 [&_.card-content]:w-1/2',\r\n      lg: '[&_.card-img]:w-2/3 [&_.card-content]:w-1/3',\r\n      xl: '[&_.card-img]:w-3/4 [&_.card-content]:w-1/4',\r\n    },\r\n  },\r\n  defaultVariants: { imageWidth: 'base' },\r\n});\r\n\r\ninterface CardProps\r\n  extends React.HTMLAttributes<HTMLDivElement>,\r\n    VariantProps<typeof cardVariants> {\r\n  border?: boolean;\r\n}\r\n\r\nconst PageWideCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n  ({ className, border, imageWidth, ...props }, ref) => (\r\n    <div\r\n      ref={ref}\r\n      className={cn(\r\n        cardVariants({ imageWidth }),\r\n        border === false ? '' : 'border-t-2 border-primary-black dark:border-primary-gray-100',\r\n        className,\r\n      )}\r\n      {...props}\r\n    />\r\n  ),\r\n);\r\nPageWideCard.displayName = 'PageWideCard';\r\n\r\nconst PageWideCardContent = React.forwardRef<HTMLDivElement, CardProps>(\r\n  ({ className, ...props }, ref) => (\r\n    <div\r\n      ref={ref}\r\n      {...props}\r\n      className={cn('card-content flex flex-col justify-between pl-4 rtl:pl-0 rtl:pr-4', className)}\r\n    />\r\n  ),\r\n);\r\nPageWideCardContent.displayName = 'PageWideCardContent';\r\n\r\nconst PageWideCardHeader = React.forwardRef<HTMLDivElement, CardProps>(({ ...props }, ref) => (\r\n  <div ref={ref} {...props} />\r\n));\r\nPageWideCardHeader.displayName = 'PageWideCardHeader';\r\n\r\nconst PageWideCardContainer = React.forwardRef<HTMLDivElement, CardProps>(\r\n  ({ className, ...props }, ref) => (\r\n    <div ref={ref} {...props} className={cn('flex flex-row gap-6 items-stretch', className)} />\r\n  ),\r\n);\r\nPageWideCardContainer.displayName = 'PageWideCardContainer';\r\n\r\nconst PageWideCardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n  ({ className, ...props }, ref) => (\r\n    <div\r\n      ref={ref}\r\n      className={cn(\r\n        'pt-4 pb-2 flex flex-wrap gap-4 text-primary-black dark:text-primary-white',\r\n        className,\r\n      )}\r\n      {...props}\r\n    />\r\n  ),\r\n);\r\nPageWideCardFooter.displayName = 'PageWideCardFooter';\r\n\r\nconst PageWideCardTag = React.forwardRef<\r\n  HTMLHeadingElement,\r\n  React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ children, className, ...props }, ref) => (\r\n  <div\r\n    ref={ref}\r\n    className={cn(\r\n      'flex gap-2 w-full mt-0 mb-0 pt-4 pl-6 pr-6 [dir-rtl]:pr-6 rtl:pl-6 pb-4 md:mb-0 text-xs font-bold leading-[1.15] text-primary-black dark:text-primary-white uppercase',\r\n      className,\r\n    )}\r\n    {...props}\r\n  >\r\n    {children}\r\n  </div>\r\n));\r\nPageWideCardTag.displayName = 'PageWideCardTag';\r\n\r\nconst PageWideCardTitle = React.forwardRef<\r\n  HTMLHeadingElement,\r\n  React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ children, className, ...props }, ref) => (\r\n  <div\r\n    ref={ref}\r\n    className={cn(\r\n      'flex gap-2 m-0 pl-0 pr-0 pt-12 pb-8 text-primary-black dark:text-primary-white leading-[1.15] font-normal text-[1.563rem] md:text-[2.188rem]',\r\n      className,\r\n    )}\r\n    {...props}\r\n  >\r\n    {children}\r\n  </div>\r\n));\r\nPageWideCardTitle.displayName = 'PageWideCardTitle';\r\n\r\nconst PageWideCardDescription = React.forwardRef<\r\n  HTMLHeadingElement,\r\n  React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ children, className, ...props }, ref) => (\r\n  <div\r\n    ref={ref}\r\n    className={cn(\r\n      `pl-0 pr-0 pt-0 pb-6 mt-0 text-base leading-[1.4] md:text-xl flex flex-col gap-2 text-primary-black dark:text-primary-white`,\r\n      className,\r\n    )}\r\n    {...props}\r\n  >\r\n    {children}\r\n  </div>\r\n));\r\nPageWideCardDescription.displayName = 'PageWideCardDescription';\r\n\r\ninterface PageWideCardImageProps extends React.HTMLAttributes<HTMLImageElement> {\r\n  src: string;\r\n  alt?: string;\r\n}\r\n\r\nconst PageWideCardImage = React.forwardRef<HTMLImageElement, PageWideCardImageProps>(\r\n  ({ className, ...props }, ref) => (\r\n    <img ref={ref} alt='card' {...props} className={cn('card-img object-cover', className)} />\r\n  ),\r\n);\r\nPageWideCardImage.displayName = 'PageWideCardImage';\r\n\r\nexport {\r\n  PageWideCard,\r\n  PageWideCardTag,\r\n  PageWideCardTitle,\r\n  PageWideCardDescription,\r\n  PageWideCardImage,\r\n  PageWideCardFooter,\r\n  PageWideCardContent,\r\n  PageWideCardContainer,\r\n  PageWideCardHeader,\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface PageHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\r\n  backgroundImage?: string;\r\n  minHeight?: boolean;\r\n  contentMode?: 'light' | 'dark';\r\n}\r\n\r\nconst PageHeader = React.forwardRef<HTMLDivElement, PageHeaderProps>(\r\n  (\r\n    { className, style, backgroundImage, minHeight = true, contentMode = 'dark', ...props },\r\n    ref,\r\n  ) => (\r\n    <div\r\n      ref={ref}\r\n      className={cn(\r\n        `${contentMode} bg-cover bg-center w-full py-20 pl-4 sm:pl-[8.3333%] rtl:pr-4 rtl:pl-0 sm:rtl:pr-[8.3333%] sm:rtl:pl-0 flex flex-col gap-4`,\r\n        minHeight ? 'min-h-[642px] lg:min-h-[746px]' : '',\r\n        className,\r\n      )}\r\n      style={{\r\n        ...style,\r\n        backgroundImage: backgroundImage ? `url(${backgroundImage})` : 'none',\r\n      }}\r\n      {...props}\r\n    />\r\n  ),\r\n);\r\nPageHeader.displayName = 'PageHeader';\r\n\r\nconst PageHeaderHead = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n  ({ className, ...props }, ref) => <div ref={ref} className={cn('p-4', className)} {...props} />,\r\n);\r\nPageHeaderHead.displayName = 'PageHeaderHead';\r\n\r\nconst PageHeaderContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n  ({ className, ...props }, ref) => (\r\n    <div\r\n      ref={ref}\r\n      className={cn('p-4 w-full sm:w-[66.667%] grow flex flex-col gap-6 justify-center', className)}\r\n      {...props}\r\n    />\r\n  ),\r\n);\r\n\r\nPageHeaderContent.displayName = 'PageHeaderContent';\r\n\r\nexport { PageHeaderContent, PageHeader, PageHeaderHead };\r\n","import React from 'react';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst Carousel = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n  ({ className, children, ...props }, ref) => {\r\n    const WrapperRef = React.useRef<HTMLDivElement>(null);\r\n    const [cursor, setCursor] = React.useState(\r\n      'url(https://design.undp.org/static/media/arrow-right.125a0586.svg)',\r\n    );\r\n    return (\r\n      <div\r\n        ref={WrapperRef}\r\n        className={cn(\r\n          'mr-auto ml-auto mb-0 undp-scrollbar w-full pb-4 flex snap-x snap-mandatory scroll-p-0 scroll-pl-0 overflow-x-auto',\r\n          className,\r\n        )}\r\n        {...props}\r\n        onClick={e => {\r\n          if (WrapperRef.current) {\r\n            if (e.clientX > window.innerWidth / 2) WrapperRef.current.scrollBy(280, 0);\r\n            else WrapperRef.current.scrollBy(-280, 0);\r\n          }\r\n        }}\r\n        onMouseMove={e => {\r\n          if (e.clientX > window.innerWidth / 2)\r\n            setCursor('url(https://design.undp.org/static/media/arrow-right.125a0586.svg)');\r\n          else setCursor('url(https://design.undp.org/static/media/arrow-left.14de54ea.svg)');\r\n        }}\r\n      >\r\n        <div\r\n          ref={ref}\r\n          className='flex gap-4 items-stretch w-full'\r\n          style={{ cursor: `${cursor}, auto` }}\r\n        >\r\n          {children}\r\n        </div>\r\n      </div>\r\n    );\r\n  },\r\n);\r\nCarousel.displayName = 'Carousel';\r\n\r\nconst cardVariants = cva('shrink-0 min-w-[320px] snap-start', {\r\n  variants: {\r\n    size: {\r\n      xs: 'w-1/4 snap-start',\r\n      sm: 'w-1/3 snap-start',\r\n      base: 'w-1/2 snap-start',\r\n      lg: 'w-2/3 snap-start',\r\n      xl: 'w-[calc(100%-80px)] snap-start',\r\n      full: 'w-full snap-start',\r\n    },\r\n  },\r\n  defaultVariants: { size: 'sm' },\r\n});\r\nconst CarouselCard = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardVariants>\r\n>(({ className, size, ...props }, ref) => (\r\n  <div ref={ref} className={cn(cardVariants({ size }), className)} {...props} />\r\n));\r\nCarouselCard.displayName = 'CarouselCard';\r\n\r\nexport { Carousel, CarouselCard };\r\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n  const ref = React.useRef({ value, previous: value });\n  return React.useMemo(() => {\n    if (ref.current.value !== value) {\n      ref.current.previous = ref.current.value;\n      ref.current.value = value;\n    }\n    return ref.current.previous;\n  }, [value]);\n}\nexport {\n  usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n  const [size, setSize] = React.useState(void 0);\n  useLayoutEffect(() => {\n    if (element) {\n      setSize({ width: element.offsetWidth, height: element.offsetHeight });\n      const resizeObserver = new ResizeObserver((entries) => {\n        if (!Array.isArray(entries)) {\n          return;\n        }\n        if (!entries.length) {\n          return;\n        }\n        const entry = entries[0];\n        let width;\n        let height;\n        if (\"borderBoxSize\" in entry) {\n          const borderSizeEntry = entry[\"borderBoxSize\"];\n          const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n          width = borderSize[\"inlineSize\"];\n          height = borderSize[\"blockSize\"];\n        } else {\n          width = element.offsetWidth;\n          height = element.offsetHeight;\n        }\n        setSize({ width, height });\n      });\n      resizeObserver.observe(element, { box: \"border-box\" });\n      return () => resizeObserver.unobserve(element);\n    } else {\n      setSize(void 0);\n    }\n  }, [element]);\n  return size;\n}\nexport {\n  useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nfunction CheckboxProvider(props) {\n  const {\n    __scopeCheckbox,\n    checked: checkedProp,\n    children,\n    defaultChecked,\n    disabled,\n    form,\n    name,\n    onCheckedChange,\n    required,\n    value = \"on\",\n    // @ts-expect-error\n    internal_do_not_use_render\n  } = props;\n  const [checked, setChecked] = useControllableState({\n    prop: checkedProp,\n    defaultProp: defaultChecked ?? false,\n    onChange: onCheckedChange,\n    caller: CHECKBOX_NAME\n  });\n  const [control, setControl] = React.useState(null);\n  const [bubbleInput, setBubbleInput] = React.useState(null);\n  const hasConsumerStoppedPropagationRef = React.useRef(false);\n  const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n    // We set this to true by default so that events bubble to forms without JS (SSR)\n    true\n  );\n  const context = {\n    checked,\n    disabled,\n    setChecked,\n    control,\n    setControl,\n    name,\n    form,\n    value,\n    hasConsumerStoppedPropagationRef,\n    required,\n    defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n    isFormControl,\n    bubbleInput,\n    setBubbleInput\n  };\n  return /* @__PURE__ */ jsx(\n    CheckboxProviderImpl,\n    {\n      scope: __scopeCheckbox,\n      ...context,\n      children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n    }\n  );\n}\nvar TRIGGER_NAME = \"CheckboxTrigger\";\nvar CheckboxTrigger = React.forwardRef(\n  ({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) => {\n    const {\n      control,\n      value,\n      disabled,\n      checked,\n      required,\n      setControl,\n      setChecked,\n      hasConsumerStoppedPropagationRef,\n      isFormControl,\n      bubbleInput\n    } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n    const composedRefs = useComposedRefs(forwardedRef, setControl);\n    const initialCheckedStateRef = React.useRef(checked);\n    React.useEffect(() => {\n      const form = control?.form;\n      if (form) {\n        const reset = () => setChecked(initialCheckedStateRef.current);\n        form.addEventListener(\"reset\", reset);\n        return () => form.removeEventListener(\"reset\", reset);\n      }\n    }, [control, setChecked]);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        role: \"checkbox\",\n        \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n        \"aria-required\": required,\n        \"data-state\": getState(checked),\n        \"data-disabled\": disabled ? \"\" : void 0,\n        disabled,\n        value,\n        ...checkboxProps,\n        ref: composedRefs,\n        onKeyDown: composeEventHandlers(onKeyDown, (event) => {\n          if (event.key === \"Enter\") event.preventDefault();\n        }),\n        onClick: composeEventHandlers(onClick, (event) => {\n          setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\n          if (bubbleInput && isFormControl) {\n            hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n            if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n          }\n        })\n      }\n    );\n  }\n);\nCheckboxTrigger.displayName = TRIGGER_NAME;\nvar Checkbox = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeCheckbox,\n      name,\n      checked,\n      defaultChecked,\n      required,\n      disabled,\n      value,\n      onCheckedChange,\n      form,\n      ...checkboxProps\n    } = props;\n    return /* @__PURE__ */ jsx(\n      CheckboxProvider,\n      {\n        __scopeCheckbox,\n        checked,\n        defaultChecked,\n        disabled,\n        required,\n        onCheckedChange,\n        name,\n        form,\n        value,\n        internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n          /* @__PURE__ */ jsx(\n            CheckboxTrigger,\n            {\n              ...checkboxProps,\n              ref: forwardedRef,\n              __scopeCheckbox\n            }\n          ),\n          isFormControl && /* @__PURE__ */ jsx(\n            CheckboxBubbleInput,\n            {\n              __scopeCheckbox\n            }\n          )\n        ] })\n      }\n    );\n  }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n    const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n    return /* @__PURE__ */ jsx(\n      Presence,\n      {\n        present: forceMount || isIndeterminate(context.checked) || context.checked === true,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            \"data-state\": getState(context.checked),\n            \"data-disabled\": context.disabled ? \"\" : void 0,\n            ...indicatorProps,\n            ref: forwardedRef,\n            style: { pointerEvents: \"none\", ...props.style }\n          }\n        )\n      }\n    );\n  }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"CheckboxBubbleInput\";\nvar CheckboxBubbleInput = React.forwardRef(\n  ({ __scopeCheckbox, ...props }, forwardedRef) => {\n    const {\n      control,\n      hasConsumerStoppedPropagationRef,\n      checked,\n      defaultChecked,\n      required,\n      disabled,\n      name,\n      value,\n      form,\n      bubbleInput,\n      setBubbleInput\n    } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n    const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n    const prevChecked = usePrevious(checked);\n    const controlSize = useSize(control);\n    React.useEffect(() => {\n      const input = bubbleInput;\n      if (!input) return;\n      const inputProto = window.HTMLInputElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        inputProto,\n        \"checked\"\n      );\n      const setChecked = descriptor.set;\n      const bubbles = !hasConsumerStoppedPropagationRef.current;\n      if (prevChecked !== checked && setChecked) {\n        const event = new Event(\"click\", { bubbles });\n        input.indeterminate = isIndeterminate(checked);\n        setChecked.call(input, isIndeterminate(checked) ? false : checked);\n        input.dispatchEvent(event);\n      }\n    }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n    const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n    return /* @__PURE__ */ jsx(\n      Primitive.input,\n      {\n        type: \"checkbox\",\n        \"aria-hidden\": true,\n        defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n        required,\n        disabled,\n        name,\n        value,\n        form,\n        ...props,\n        tabIndex: -1,\n        ref: composedRefs,\n        style: {\n          ...props.style,\n          ...controlSize,\n          position: \"absolute\",\n          pointerEvents: \"none\",\n          opacity: 0,\n          margin: 0,\n          // We transform because the input is absolutely positioned but we have\n          // rendered it **after** the button. This pulls it back to sit on top\n          // of the button.\n          transform: \"translateX(-100%)\"\n        }\n      }\n    );\n  }\n);\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction isIndeterminate(checked) {\n  return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n  return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nexport {\n  Checkbox,\n  CheckboxIndicator,\n  CheckboxIndicator as Indicator,\n  Checkbox as Root,\n  createCheckboxScope,\n  CheckboxBubbleInput as unstable_BubbleInput,\n  CheckboxBubbleInput as unstable_CheckboxBubbleInput,\n  CheckboxProvider as unstable_CheckboxProvider,\n  CheckboxTrigger as unstable_CheckboxTrigger,\n  CheckboxProvider as unstable_Provider,\n  CheckboxTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n  return /* @__PURE__ */ jsx(\n    Primitive.label,\n    {\n      ...props,\n      ref: forwardedRef,\n      onMouseDown: (event) => {\n        const target = event.target;\n        if (target.closest(\"button, input, select, textarea\")) return;\n        props.onMouseDown?.(event);\n        if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n      }\n    }\n  );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n  Label,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\nimport * as LabelPrimitive from '@radix-ui/react-label';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst Label = React.forwardRef<\r\n  React.ComponentRef<typeof LabelPrimitive.Root>,\r\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n  <LabelPrimitive.Root\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'text-sm m-0 p-0 block text-primary-gray-700 dark:text-primary-white peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nLabel.displayName = LabelPrimitive.Root.displayName;\r\n\r\nexport { Label };\r\n","import React from 'react';\r\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\r\nimport { Check } from 'lucide-react';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\n\r\nimport { Label } from './label';\r\n\r\nimport { cn, generateRandomId } from '@/lib/utils';\r\n\r\nconst checkBoxVariants = cva(\r\n  'peer h-4 w-4 shrink-0 rounded-0 bg-primary-white dark:bg-primary-gray-650 focus-visible:outline-hidden focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50',\r\n  {\r\n    variants: {\r\n      color: {\r\n        blue: 'border-primary-blue-600 hover:bg-primary-blue-100 dark:border-primary-blue-400 dark:hover:bg-primary-blue-200',\r\n        red: 'border-accent-dark-red hover:bg-accent-light-red dark:border-accent-red dark:hover:bg-accent-light-red',\r\n        black:\r\n          'border-primary-gray-700 hover:bg-primary-gray-400 dark:border-primary-gray-100 dark:hover:bg-primary-gray-550',\r\n        custom:\r\n          'border-custom-color-600 hover:bg-custom-color-100 dark:border-custom-color-400 dark:hover:bg-custom-color-200',\r\n      },\r\n      variant: {\r\n        light: 'border',\r\n        normal: 'border-2',\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      color: 'red',\r\n      variant: 'normal',\r\n    },\r\n  },\r\n);\r\n\r\nconst checkVariants = cva('h-4 w-4', {\r\n  variants: {\r\n    color: {\r\n      blue: 'stroke-primary-blue-600 dark:stroke-primary-blue-400',\r\n      red: 'stroke-accent-dark-red dark:stroke-accent-red',\r\n      black: 'stroke-primary-gray-700 dark:stroke-primary-gray-100',\r\n      custom: 'stroke-custom-color-600 dark:stroke-custom-color-400',\r\n    },\r\n    variant: {\r\n      light: '-mt-px',\r\n      normal: '-mt-0.5',\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    color: 'red',\r\n    variant: 'normal',\r\n  },\r\n});\r\nconst Checkbox = React.forwardRef<\r\n  React.ComponentRef<typeof CheckboxPrimitive.Root>,\r\n  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> &\r\n    VariantProps<typeof checkBoxVariants> & {\r\n      label?: string;\r\n      labelClassName?: string;\r\n      checkBoxClassName?: string;\r\n      checkIconClassName?: string;\r\n    }\r\n>(\r\n  (\r\n    {\r\n      className,\r\n      labelClassName,\r\n      checkBoxClassName,\r\n      checkIconClassName,\r\n      label,\r\n      color,\r\n      variant,\r\n      ...props\r\n    },\r\n    ref,\r\n  ) => {\r\n    const id = props.id || generateRandomId();\r\n    return (\r\n      <div className={cn('flex flex-row gap-2 items-center', className)}>\r\n        <CheckboxPrimitive.Root\r\n          {...props}\r\n          ref={ref}\r\n          className={cn(checkBoxVariants({ color, variant }), checkBoxClassName)}\r\n          id={id}\r\n        >\r\n          <CheckboxPrimitive.Indicator\r\n            className={cn('flex items-center justify-center text-current')}\r\n          >\r\n            <Check\r\n              className={cn(checkVariants({ color, variant }), checkIconClassName)}\r\n              strokeWidth={variant === 'light' ? 2 : 4}\r\n            />\r\n          </CheckboxPrimitive.Indicator>\r\n        </CheckboxPrimitive.Root>\r\n        {label ? (\r\n          <Label className={cn('mt-0.5 text-base!', labelClassName)} htmlFor={id}>\r\n            {label}\r\n          </Label>\r\n        ) : null}\r\n      </div>\r\n    );\r\n  },\r\n);\r\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\r\n\r\nexport { Checkbox };\r\n","import React from 'react';\r\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\r\n\r\nimport { Checkbox } from './checkbox';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface CheckboxGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onValueChange'> {\r\n  defaultValue?: string[];\r\n  value?: string[];\r\n  onValueChange?: (value: string[]) => void;\r\n  color?: 'blue' | 'red' | 'black' | 'custom' | undefined;\r\n  variant?: 'light' | 'normal' | undefined;\r\n}\r\n\r\n// Context for sharing state between CheckboxGroup and CheckboxGroupItem\r\nconst CheckboxGroupContext = React.createContext<{\r\n  selectedValues: string[];\r\n  onValueChange: (value: string, checked: boolean) => void;\r\n  color?: 'blue' | 'red' | 'black' | 'custom' | undefined;\r\n  variant?: 'light' | 'normal' | undefined;\r\n}>({\r\n  selectedValues: [],\r\n  onValueChange: () => {},\r\n  color: undefined,\r\n  variant: undefined,\r\n});\r\n\r\nconst CheckboxGroup = React.forwardRef<HTMLDivElement, CheckboxGroupProps>(\r\n  ({ className, children, value, variant, color, onValueChange, defaultValue, ...props }, ref) => {\r\n    // Internal state for uncontrolled usage\r\n    const [internalValue, setInternalValue] = React.useState<string[]>(defaultValue || []);\r\n\r\n    // Use either controlled or uncontrolled value\r\n    const selectedValues = value !== undefined ? value : internalValue;\r\n\r\n    // Handler for checkbox changes\r\n    const handleValueChange = React.useCallback(\r\n      (itemValue: string, checked: boolean) => {\r\n        const newValue = checked\r\n          ? [...selectedValues, itemValue]\r\n          : selectedValues.filter(v => v !== itemValue);\r\n\r\n        // Update internal state if uncontrolled\r\n        if (value === undefined) {\r\n          setInternalValue(newValue);\r\n        }\r\n\r\n        // Call onValueChange handler if provided\r\n        onValueChange?.(newValue);\r\n      },\r\n      [selectedValues, value, onValueChange],\r\n    );\r\n\r\n    // Context to pass down the handler and selected values\r\n    const contextValue = React.useMemo(\r\n      () => ({\r\n        selectedValues,\r\n        color,\r\n        variant,\r\n        onValueChange: handleValueChange,\r\n      }),\r\n      [selectedValues, handleValueChange, color, variant],\r\n    );\r\n\r\n    return (\r\n      <CheckboxGroupContext.Provider value={contextValue}>\r\n        <div\r\n          {...props}\r\n          className={cn('flex gap-x-4 gap-y-2 flex-row flex-wrap', className)}\r\n          ref={ref}\r\n        >\r\n          {children}\r\n        </div>\r\n      </CheckboxGroupContext.Provider>\r\n    );\r\n  },\r\n);\r\nCheckboxGroup.displayName = 'CheckboxGroup';\r\n\r\ninterface CheckboxGroupItemProps\r\n  extends Omit<React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, 'value'> {\r\n  label?: string;\r\n  labelClassName?: string;\r\n  checkBoxClassName?: string;\r\n  checkIconClassName?: string;\r\n  value: string;\r\n}\r\n\r\nconst CheckboxGroupItem = React.forwardRef<\r\n  React.ComponentRef<typeof CheckboxPrimitive.Root>,\r\n  CheckboxGroupItemProps\r\n>(({ value, ...props }, ref) => {\r\n  const { selectedValues, onValueChange, color, variant } = React.useContext(CheckboxGroupContext);\r\n\r\n  return (\r\n    <Checkbox\r\n      ref={ref}\r\n      {...props}\r\n      value={value}\r\n      color={color}\r\n      variant={variant}\r\n      checked={selectedValues.includes(value)}\r\n      onCheckedChange={checked => onValueChange(value, checked === true)}\r\n    />\r\n  );\r\n});\r\nCheckboxGroupItem.displayName = 'CheckboxGroupItem';\r\n\r\nexport { CheckboxGroup, CheckboxGroupItem };\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst containerVariants = cva('', {\r\n  variants: {\r\n    backgroundColor: {\r\n      transparent: 'bg-primary-transparent text-primary-black dark:text-primary-white',\r\n      white: 'bg-primary-white dark:bg-primary-gray-700 text-primary-black dark:text-primary-white',\r\n      gray: 'bg-primary-gray-200 dark:bg-primary-gray-600 text-primary-black dark:text-primary-white',\r\n      'dark-gray':\r\n        'bg-primary-gray-600 dark:bg-primary-gray-300 text-primary-white dark:text-primary-black',\r\n      black:\r\n        'bg-primary-gray-700 dark:bg-primary-gray-100 text-primary-white dark:text-primary-black',\r\n      blue: 'bg-primary-blue-600 dark:bg-primary-blue-500 text-primary-white',\r\n      azure: 'bg-accent-azure',\r\n      yellow: 'bg-accent-yellow',\r\n      red: 'bg-accent-red text-primary-white',\r\n      green: 'bg-accent-green',\r\n      custom: 'bg-custom-color-600 text-custom-foreground',\r\n    },\r\n    layout: {\r\n      flex: 'flex flex-row items-stretch flex-wrap',\r\n      default: '',\r\n    },\r\n    width: {\r\n      xs: 'w-1/4',\r\n      sm: 'w-1/3',\r\n      base: 'w-1/2',\r\n      lg: 'w-2/3',\r\n      xl: 'w-3/4',\r\n      full: 'w-full',\r\n    },\r\n    padding: {\r\n      none: 'p-0',\r\n      '2xs': 'p-1',\r\n      xs: 'p-2',\r\n      sm: 'p-3',\r\n      base: 'p-4',\r\n      lg: 'p-5',\r\n      xl: 'p-6',\r\n      '2xl': 'p-7',\r\n      '3xl': 'p-8',\r\n    },\r\n    gap: {\r\n      none: 'gap-0',\r\n      '2xs': 'gap-1',\r\n      xs: 'gap-2',\r\n      sm: 'gap-3',\r\n      base: 'gap-4',\r\n      lg: 'gap-5',\r\n      xl: 'gap-6',\r\n      '2xl': 'gap-7',\r\n      '3xl': 'gap-8',\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    backgroundColor: 'transparent',\r\n    layout: 'default',\r\n    padding: 'base',\r\n    gap: 'none',\r\n    width: 'full',\r\n  },\r\n});\r\n\r\nconst Container = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof containerVariants>\r\n>(({ className, backgroundColor, layout, width, padding, gap, ...props }, ref) => {\r\n  return (\r\n    <div\r\n      {...props}\r\n      className={cn(\r\n        containerVariants({\r\n          backgroundColor,\r\n          layout,\r\n          width,\r\n          padding,\r\n          gap,\r\n        }),\r\n        className,\r\n      )}\r\n      ref={ref}\r\n    />\r\n  );\r\n});\r\nContainer.displayName = 'Container';\r\n\r\nexport { Container };\r\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n  const callbackRef = React.useRef(callback);\n  React.useEffect(() => {\n    callbackRef.current = callback;\n  });\n  return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n  useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n  const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n  React.useEffect(() => {\n    const handleKeyDown = (event) => {\n      if (event.key === \"Escape\") {\n        onEscapeKeyDown(event);\n      }\n    };\n    ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n    return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n  }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n  useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n  layers: /* @__PURE__ */ new Set(),\n  layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n  branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      disableOutsidePointerEvents = false,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      ...layerProps\n    } = props;\n    const context = React.useContext(DismissableLayerContext);\n    const [node, setNode] = React.useState(null);\n    const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n    const [, force] = React.useState({});\n    const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n    const layers = Array.from(context.layers);\n    const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n    const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n    const index = node ? layers.indexOf(node) : -1;\n    const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n    const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n    const pointerDownOutside = usePointerDownOutside((event) => {\n      const target = event.target;\n      const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n      onPointerDownOutside?.(event);\n      onInteractOutside?.(event);\n      if (!event.defaultPrevented) onDismiss?.();\n    }, ownerDocument);\n    const focusOutside = useFocusOutside((event) => {\n      const target = event.target;\n      const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (isFocusInBranch) return;\n      onFocusOutside?.(event);\n      onInteractOutside?.(event);\n      if (!event.defaultPrevented) onDismiss?.();\n    }, ownerDocument);\n    useEscapeKeydown((event) => {\n      const isHighestLayer = index === context.layers.size - 1;\n      if (!isHighestLayer) return;\n      onEscapeKeyDown?.(event);\n      if (!event.defaultPrevented && onDismiss) {\n        event.preventDefault();\n        onDismiss();\n      }\n    }, ownerDocument);\n    React.useEffect(() => {\n      if (!node) return;\n      if (disableOutsidePointerEvents) {\n        if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n          originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n          ownerDocument.body.style.pointerEvents = \"none\";\n        }\n        context.layersWithOutsidePointerEventsDisabled.add(node);\n      }\n      context.layers.add(node);\n      dispatchUpdate();\n      return () => {\n        if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n          ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n        }\n      };\n    }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n    React.useEffect(() => {\n      return () => {\n        if (!node) return;\n        context.layers.delete(node);\n        context.layersWithOutsidePointerEventsDisabled.delete(node);\n        dispatchUpdate();\n      };\n    }, [node, context]);\n    React.useEffect(() => {\n      const handleUpdate = () => force({});\n      document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n      return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        ...layerProps,\n        ref: composedRefs,\n        style: {\n          pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n          ...props.style\n        },\n        onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n        onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n        onPointerDownCapture: composeEventHandlers(\n          props.onPointerDownCapture,\n          pointerDownOutside.onPointerDownCapture\n        )\n      }\n    );\n  }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n  const context = React.useContext(DismissableLayerContext);\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  React.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      context.branches.add(node);\n      return () => {\n        context.branches.delete(node);\n      };\n    }\n  }, [context.branches]);\n  return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n  const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n  const isPointerInsideReactTreeRef = React.useRef(false);\n  const handleClickRef = React.useRef(() => {\n  });\n  React.useEffect(() => {\n    const handlePointerDown = (event) => {\n      if (event.target && !isPointerInsideReactTreeRef.current) {\n        let handleAndDispatchPointerDownOutsideEvent2 = function() {\n          handleAndDispatchCustomEvent(\n            POINTER_DOWN_OUTSIDE,\n            handlePointerDownOutside,\n            eventDetail,\n            { discrete: true }\n          );\n        };\n        var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n        const eventDetail = { originalEvent: event };\n        if (event.pointerType === \"touch\") {\n          ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n          handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n          ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n        } else {\n          handleAndDispatchPointerDownOutsideEvent2();\n        }\n      } else {\n        ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n      }\n      isPointerInsideReactTreeRef.current = false;\n    };\n    const timerId = window.setTimeout(() => {\n      ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n    }, 0);\n    return () => {\n      window.clearTimeout(timerId);\n      ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n      ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n    };\n  }, [ownerDocument, handlePointerDownOutside]);\n  return {\n    // ensures we check React component tree (not just DOM tree)\n    onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n  };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n  const handleFocusOutside = useCallbackRef(onFocusOutside);\n  const isFocusInsideReactTreeRef = React.useRef(false);\n  React.useEffect(() => {\n    const handleFocus = (event) => {\n      if (event.target && !isFocusInsideReactTreeRef.current) {\n        const eventDetail = { originalEvent: event };\n        handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n          discrete: false\n        });\n      }\n    };\n    ownerDocument.addEventListener(\"focusin\", handleFocus);\n    return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n  }, [ownerDocument, handleFocusOutside]);\n  return {\n    onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n    onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n  };\n}\nfunction dispatchUpdate() {\n  const event = new CustomEvent(CONTEXT_UPDATE);\n  document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n  const target = detail.originalEvent.target;\n  const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n  if (handler) target.addEventListener(name, handler, { once: true });\n  if (discrete) {\n    dispatchDiscreteCustomEvent(target, event);\n  } else {\n    target.dispatchEvent(event);\n  }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n  Branch,\n  DismissableLayer,\n  DismissableLayerBranch,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/focus-guards/src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n  useFocusGuards();\n  return props.children;\n}\nfunction useFocusGuards() {\n  React.useEffect(() => {\n    const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n    document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n    document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n    count++;\n    return () => {\n      if (count === 1) {\n        document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n      }\n      count--;\n    };\n  }, []);\n}\nfunction createFocusGuard() {\n  const element = document.createElement(\"span\");\n  element.setAttribute(\"data-radix-focus-guard\", \"\");\n  element.tabIndex = 0;\n  element.style.outline = \"none\";\n  element.style.opacity = \"0\";\n  element.style.position = \"fixed\";\n  element.style.pointerEvents = \"none\";\n  return element;\n}\nvar Root = FocusGuards;\nexport {\n  FocusGuards,\n  Root,\n  useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n  const {\n    loop = false,\n    trapped = false,\n    onMountAutoFocus: onMountAutoFocusProp,\n    onUnmountAutoFocus: onUnmountAutoFocusProp,\n    ...scopeProps\n  } = props;\n  const [container, setContainer] = React.useState(null);\n  const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n  const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n  const lastFocusedElementRef = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n  const focusScope = React.useRef({\n    paused: false,\n    pause() {\n      this.paused = true;\n    },\n    resume() {\n      this.paused = false;\n    }\n  }).current;\n  React.useEffect(() => {\n    if (trapped) {\n      let handleFocusIn2 = function(event) {\n        if (focusScope.paused || !container) return;\n        const target = event.target;\n        if (container.contains(target)) {\n          lastFocusedElementRef.current = target;\n        } else {\n          focus(lastFocusedElementRef.current, { select: true });\n        }\n      }, handleFocusOut2 = function(event) {\n        if (focusScope.paused || !container) return;\n        const relatedTarget = event.relatedTarget;\n        if (relatedTarget === null) return;\n        if (!container.contains(relatedTarget)) {\n          focus(lastFocusedElementRef.current, { select: true });\n        }\n      }, handleMutations2 = function(mutations) {\n        const focusedElement = document.activeElement;\n        if (focusedElement !== document.body) return;\n        for (const mutation of mutations) {\n          if (mutation.removedNodes.length > 0) focus(container);\n        }\n      };\n      var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n      document.addEventListener(\"focusin\", handleFocusIn2);\n      document.addEventListener(\"focusout\", handleFocusOut2);\n      const mutationObserver = new MutationObserver(handleMutations2);\n      if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n      return () => {\n        document.removeEventListener(\"focusin\", handleFocusIn2);\n        document.removeEventListener(\"focusout\", handleFocusOut2);\n        mutationObserver.disconnect();\n      };\n    }\n  }, [trapped, container, focusScope.paused]);\n  React.useEffect(() => {\n    if (container) {\n      focusScopesStack.add(focusScope);\n      const previouslyFocusedElement = document.activeElement;\n      const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n      if (!hasFocusedCandidate) {\n        const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n        container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n        container.dispatchEvent(mountEvent);\n        if (!mountEvent.defaultPrevented) {\n          focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n          if (document.activeElement === previouslyFocusedElement) {\n            focus(container);\n          }\n        }\n      }\n      return () => {\n        container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n        setTimeout(() => {\n          const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n          container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n          container.dispatchEvent(unmountEvent);\n          if (!unmountEvent.defaultPrevented) {\n            focus(previouslyFocusedElement ?? document.body, { select: true });\n          }\n          container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n          focusScopesStack.remove(focusScope);\n        }, 0);\n      };\n    }\n  }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n  const handleKeyDown = React.useCallback(\n    (event) => {\n      if (!loop && !trapped) return;\n      if (focusScope.paused) return;\n      const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n      const focusedElement = document.activeElement;\n      if (isTabKey && focusedElement) {\n        const container2 = event.currentTarget;\n        const [first, last] = getTabbableEdges(container2);\n        const hasTabbableElementsInside = first && last;\n        if (!hasTabbableElementsInside) {\n          if (focusedElement === container2) event.preventDefault();\n        } else {\n          if (!event.shiftKey && focusedElement === last) {\n            event.preventDefault();\n            if (loop) focus(first, { select: true });\n          } else if (event.shiftKey && focusedElement === first) {\n            event.preventDefault();\n            if (loop) focus(last, { select: true });\n          }\n        }\n      }\n    },\n    [loop, trapped, focusScope.paused]\n  );\n  return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n  const previouslyFocusedElement = document.activeElement;\n  for (const candidate of candidates) {\n    focus(candidate, { select });\n    if (document.activeElement !== previouslyFocusedElement) return;\n  }\n}\nfunction getTabbableEdges(container) {\n  const candidates = getTabbableCandidates(container);\n  const first = findVisible(candidates, container);\n  const last = findVisible(candidates.reverse(), container);\n  return [first, last];\n}\nfunction getTabbableCandidates(container) {\n  const nodes = [];\n  const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n    acceptNode: (node) => {\n      const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n      if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n      return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n    }\n  });\n  while (walker.nextNode()) nodes.push(walker.currentNode);\n  return nodes;\n}\nfunction findVisible(elements, container) {\n  for (const element of elements) {\n    if (!isHidden(element, { upTo: container })) return element;\n  }\n}\nfunction isHidden(node, { upTo }) {\n  if (getComputedStyle(node).visibility === \"hidden\") return true;\n  while (node) {\n    if (upTo !== void 0 && node === upTo) return false;\n    if (getComputedStyle(node).display === \"none\") return true;\n    node = node.parentElement;\n  }\n  return false;\n}\nfunction isSelectableInput(element) {\n  return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n  if (element && element.focus) {\n    const previouslyFocusedElement = document.activeElement;\n    element.focus({ preventScroll: true });\n    if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n      element.select();\n  }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n  let stack = [];\n  return {\n    add(focusScope) {\n      const activeFocusScope = stack[0];\n      if (focusScope !== activeFocusScope) {\n        activeFocusScope?.pause();\n      }\n      stack = arrayRemove(stack, focusScope);\n      stack.unshift(focusScope);\n    },\n    remove(focusScope) {\n      stack = arrayRemove(stack, focusScope);\n      stack[0]?.resume();\n    }\n  };\n}\nfunction arrayRemove(array, item) {\n  const updatedArray = [...array];\n  const index = updatedArray.indexOf(item);\n  if (index !== -1) {\n    updatedArray.splice(index, 1);\n  }\n  return updatedArray;\n}\nfunction removeLinks(items) {\n  return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n  FocusScope,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          var _overflowsData$;\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          const hasInitialMainAxisOverflow = ((_overflowsData$ = overflowsData[0]) == null ? void 0 : _overflowsData$.overflows[0]) > 0;\n          if (!ignoreCrossAxisOverflow || hasInitialMainAxisOverflow) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  return [':popover-open', ':modal'].some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (e) {\n      return false;\n    }\n  });\n}\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n  if (ignoreScrollbarX === void 0) {\n    ignoreScrollbarX = false;\n  }\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n  // RTL <body> scrollbar.\n  getWindowScrollBarX(documentElement, htmlRect));\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, offset as offset$1, shift as shift$1, limitShift as limitShift$1, flip as flip$1, size as size$1, autoPlacement as autoPlacement$1, hide as hide$1, inline as inline$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (typeof a === 'function' && a.toString() === b.toString()) {\n    return true;\n  }\n  let length;\n  let i;\n  let keys;\n  if (a && b && typeof a === 'object') {\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length !== b.length) return false;\n      for (i = length; i-- !== 0;) {\n        if (!deepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (i = length; i-- !== 0;) {\n      if (!{}.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (i = length; i-- !== 0;) {\n      const key = keys[i];\n      if (key === '_owner' && a.$$typeof) {\n        continue;\n      }\n      if (!deepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n  if (typeof window === 'undefined') {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform,\n    elements: {\n      reference: externalReference,\n      floating: externalFloating\n    } = {},\n    transform = true,\n    whileElementsMounted,\n    open\n  } = options;\n  const [data, setData] = React.useState({\n    x: 0,\n    y: 0,\n    strategy,\n    placement,\n    middlewareData: {},\n    isPositioned: false\n  });\n  const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n  if (!deepEqual(latestMiddleware, middleware)) {\n    setLatestMiddleware(middleware);\n  }\n  const [_reference, _setReference] = React.useState(null);\n  const [_floating, _setFloating] = React.useState(null);\n  const setReference = React.useCallback(node => {\n    if (node !== referenceRef.current) {\n      referenceRef.current = node;\n      _setReference(node);\n    }\n  }, []);\n  const setFloating = React.useCallback(node => {\n    if (node !== floatingRef.current) {\n      floatingRef.current = node;\n      _setFloating(node);\n    }\n  }, []);\n  const referenceEl = externalReference || _reference;\n  const floatingEl = externalFloating || _floating;\n  const referenceRef = React.useRef(null);\n  const floatingRef = React.useRef(null);\n  const dataRef = React.useRef(data);\n  const hasWhileElementsMounted = whileElementsMounted != null;\n  const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n  const platformRef = useLatestRef(platform);\n  const openRef = useLatestRef(open);\n  const update = React.useCallback(() => {\n    if (!referenceRef.current || !floatingRef.current) {\n      return;\n    }\n    const config = {\n      placement,\n      strategy,\n      middleware: latestMiddleware\n    };\n    if (platformRef.current) {\n      config.platform = platformRef.current;\n    }\n    computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n      const fullData = {\n        ...data,\n        // The floating element's position may be recomputed while it's closed\n        // but still mounted (such as when transitioning out). To ensure\n        // `isPositioned` will be `false` initially on the next open, avoid\n        // setting it to `true` when `open === false` (must be specified).\n        isPositioned: openRef.current !== false\n      };\n      if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n        dataRef.current = fullData;\n        ReactDOM.flushSync(() => {\n          setData(fullData);\n        });\n      }\n    });\n  }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n  index(() => {\n    if (open === false && dataRef.current.isPositioned) {\n      dataRef.current.isPositioned = false;\n      setData(data => ({\n        ...data,\n        isPositioned: false\n      }));\n    }\n  }, [open]);\n  const isMountedRef = React.useRef(false);\n  index(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  index(() => {\n    if (referenceEl) referenceRef.current = referenceEl;\n    if (floatingEl) floatingRef.current = floatingEl;\n    if (referenceEl && floatingEl) {\n      if (whileElementsMountedRef.current) {\n        return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n      }\n      update();\n    }\n  }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n  const refs = React.useMemo(() => ({\n    reference: referenceRef,\n    floating: floatingRef,\n    setReference,\n    setFloating\n  }), [setReference, setFloating]);\n  const elements = React.useMemo(() => ({\n    reference: referenceEl,\n    floating: floatingEl\n  }), [referenceEl, floatingEl]);\n  const floatingStyles = React.useMemo(() => {\n    const initialStyles = {\n      position: strategy,\n      left: 0,\n      top: 0\n    };\n    if (!elements.floating) {\n      return initialStyles;\n    }\n    const x = roundByDPR(elements.floating, data.x);\n    const y = roundByDPR(elements.floating, data.y);\n    if (transform) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n        ...(getDPR(elements.floating) >= 1.5 && {\n          willChange: 'transform'\n        })\n      };\n    }\n    return {\n      position: strategy,\n      left: x,\n      top: y\n    };\n  }, [strategy, transform, elements.floating, data.x, data.y]);\n  return React.useMemo(() => ({\n    ...data,\n    update,\n    refs,\n    elements,\n    floatingStyles\n  }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n  function isRef(value) {\n    return {}.hasOwnProperty.call(value, 'current');\n  }\n  return {\n    name: 'arrow',\n    options,\n    fn(state) {\n      const {\n        element,\n        padding\n      } = typeof options === 'function' ? options(state) : options;\n      if (element && isRef(element)) {\n        if (element.current != null) {\n          return arrow$2({\n            element: element.current,\n            padding\n          }).fn(state);\n        }\n        return {};\n      }\n      if (element) {\n        return arrow$2({\n          element,\n          padding\n        }).fn(state);\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n  ...offset$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n  ...shift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n  ...limitShift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n  ...flip$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n  ...size$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n  ...autoPlacement$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n  ...hide$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n  ...inline$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n  ...arrow$1(options),\n  options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n  const { children, width = 10, height = 5, ...arrowProps } = props;\n  return /* @__PURE__ */ jsx(\n    Primitive.svg,\n    {\n      ...arrowProps,\n      ref: forwardedRef,\n      width,\n      height,\n      viewBox: \"0 0 30 10\",\n      preserveAspectRatio: \"none\",\n      children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n    }\n  );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n  Arrow,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n  useFloating,\n  autoUpdate,\n  offset,\n  shift,\n  limitShift,\n  hide,\n  arrow as floatingUIarrow,\n  flip,\n  size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n  const { __scopePopper, children } = props;\n  const [anchor, setAnchor] = React.useState(null);\n  return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopper, virtualRef, ...anchorProps } = props;\n    const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    React.useEffect(() => {\n      context.onAnchorChange(virtualRef?.current || ref.current);\n    });\n    return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n  }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopePopper,\n      side = \"bottom\",\n      sideOffset = 0,\n      align = \"center\",\n      alignOffset = 0,\n      arrowPadding = 0,\n      avoidCollisions = true,\n      collisionBoundary = [],\n      collisionPadding: collisionPaddingProp = 0,\n      sticky = \"partial\",\n      hideWhenDetached = false,\n      updatePositionStrategy = \"optimized\",\n      onPlaced,\n      ...contentProps\n    } = props;\n    const context = usePopperContext(CONTENT_NAME, __scopePopper);\n    const [content, setContent] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n    const [arrow, setArrow] = React.useState(null);\n    const arrowSize = useSize(arrow);\n    const arrowWidth = arrowSize?.width ?? 0;\n    const arrowHeight = arrowSize?.height ?? 0;\n    const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n    const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n    const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n    const hasExplicitBoundaries = boundary.length > 0;\n    const detectOverflowOptions = {\n      padding: collisionPadding,\n      boundary: boundary.filter(isNotNull),\n      // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n      altBoundary: hasExplicitBoundaries\n    };\n    const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n      // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n      strategy: \"fixed\",\n      placement: desiredPlacement,\n      whileElementsMounted: (...args) => {\n        const cleanup = autoUpdate(...args, {\n          animationFrame: updatePositionStrategy === \"always\"\n        });\n        return cleanup;\n      },\n      elements: {\n        reference: context.anchor\n      },\n      middleware: [\n        offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n        avoidCollisions && shift({\n          mainAxis: true,\n          crossAxis: false,\n          limiter: sticky === \"partial\" ? limitShift() : void 0,\n          ...detectOverflowOptions\n        }),\n        avoidCollisions && flip({ ...detectOverflowOptions }),\n        size({\n          ...detectOverflowOptions,\n          apply: ({ elements, rects, availableWidth, availableHeight }) => {\n            const { width: anchorWidth, height: anchorHeight } = rects.reference;\n            const contentStyle = elements.floating.style;\n            contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n          }\n        }),\n        arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n        transformOrigin({ arrowWidth, arrowHeight }),\n        hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n      ]\n    });\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const handlePlaced = useCallbackRef(onPlaced);\n    useLayoutEffect(() => {\n      if (isPositioned) {\n        handlePlaced?.();\n      }\n    }, [isPositioned, handlePlaced]);\n    const arrowX = middlewareData.arrow?.x;\n    const arrowY = middlewareData.arrow?.y;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const [contentZIndex, setContentZIndex] = React.useState();\n    useLayoutEffect(() => {\n      if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n    }, [content]);\n    return /* @__PURE__ */ jsx(\n      \"div\",\n      {\n        ref: refs.setFloating,\n        \"data-radix-popper-content-wrapper\": \"\",\n        style: {\n          ...floatingStyles,\n          transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n          // keep off the page when measuring\n          minWidth: \"max-content\",\n          zIndex: contentZIndex,\n          [\"--radix-popper-transform-origin\"]: [\n            middlewareData.transformOrigin?.x,\n            middlewareData.transformOrigin?.y\n          ].join(\" \"),\n          // hide the content if using the hide middleware and should be hidden\n          // set visibility to hidden and disable pointer events so the UI behaves\n          // as if the PopperContent isn't there at all\n          ...middlewareData.hide?.referenceHidden && {\n            visibility: \"hidden\",\n            pointerEvents: \"none\"\n          }\n        },\n        dir: props.dir,\n        children: /* @__PURE__ */ jsx(\n          PopperContentProvider,\n          {\n            scope: __scopePopper,\n            placedSide,\n            onArrowChange: setArrow,\n            arrowX,\n            arrowY,\n            shouldHideArrow: cannotCenterArrow,\n            children: /* @__PURE__ */ jsx(\n              Primitive.div,\n              {\n                \"data-side\": placedSide,\n                \"data-align\": placedAlign,\n                ...contentProps,\n                ref: composedRefs,\n                style: {\n                  ...contentProps.style,\n                  // if the PopperContent hasn't been placed yet (not all measurements done)\n                  // we prevent animations so that users's animation don't kick in too early referring wrong sides\n                  animation: !isPositioned ? \"none\" : void 0\n                }\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n  top: \"bottom\",\n  right: \"left\",\n  bottom: \"top\",\n  left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n  const { __scopePopper, ...arrowProps } = props;\n  const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n  const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n  return (\n    // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n    // doesn't report size as we'd expect on SVG elements.\n    // it reports their bounding box which is effectively the largest path inside the SVG.\n    /* @__PURE__ */ jsx(\n      \"span\",\n      {\n        ref: contentContext.onArrowChange,\n        style: {\n          position: \"absolute\",\n          left: contentContext.arrowX,\n          top: contentContext.arrowY,\n          [baseSide]: 0,\n          transformOrigin: {\n            top: \"\",\n            right: \"0 0\",\n            bottom: \"center 0\",\n            left: \"100% 0\"\n          }[contentContext.placedSide],\n          transform: {\n            top: \"translateY(100%)\",\n            right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n            bottom: `rotate(180deg)`,\n            left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n          }[contentContext.placedSide],\n          visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n        },\n        children: /* @__PURE__ */ jsx(\n          ArrowPrimitive.Root,\n          {\n            ...arrowProps,\n            ref: forwardedRef,\n            style: {\n              ...arrowProps.style,\n              // ensures the element can be measured correctly (mostly for if SVG)\n              display: \"block\"\n            }\n          }\n        )\n      }\n    )\n  );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n  return value !== null;\n}\nvar transformOrigin = (options) => ({\n  name: \"transformOrigin\",\n  options,\n  fn(data) {\n    const { placement, rects, middlewareData } = data;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const isArrowHidden = cannotCenterArrow;\n    const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n    const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n    const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n    const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n    let x = \"\";\n    let y = \"\";\n    if (placedSide === \"bottom\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${-arrowHeight}px`;\n    } else if (placedSide === \"top\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${rects.floating.height + arrowHeight}px`;\n    } else if (placedSide === \"right\") {\n      x = `${-arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    } else if (placedSide === \"left\") {\n      x = `${rects.floating.width + arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    }\n    return { data: { x, y } };\n  }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n  const [side, align = \"center\"] = placement.split(\"-\");\n  return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n  ALIGN_OPTIONS,\n  Anchor,\n  Arrow,\n  Content,\n  Popper,\n  PopperAnchor,\n  PopperArrow,\n  PopperContent,\n  Root2 as Root,\n  SIDE_OPTIONS,\n  createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n  const { container: containerProp, ...portalProps } = props;\n  const [mounted, setMounted] = React.useState(false);\n  useLayoutEffect(() => setMounted(true), []);\n  const container = containerProp || mounted && globalThis?.document?.body;\n  return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n  Portal,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n  GROUP_NAME,\n  [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n  }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n  const {\n    __scopeRovingFocusGroup,\n    orientation,\n    loop = false,\n    dir,\n    currentTabStopId: currentTabStopIdProp,\n    defaultCurrentTabStopId,\n    onCurrentTabStopIdChange,\n    onEntryFocus,\n    preventScrollOnEntryFocus = false,\n    ...groupProps\n  } = props;\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const direction = useDirection(dir);\n  const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n    prop: currentTabStopIdProp,\n    defaultProp: defaultCurrentTabStopId ?? null,\n    onChange: onCurrentTabStopIdChange,\n    caller: GROUP_NAME\n  });\n  const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n  const handleEntryFocus = useCallbackRef(onEntryFocus);\n  const getItems = useCollection(__scopeRovingFocusGroup);\n  const isClickFocusRef = React.useRef(false);\n  const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n  React.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n      return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n    }\n  }, [handleEntryFocus]);\n  return /* @__PURE__ */ jsx(\n    RovingFocusProvider,\n    {\n      scope: __scopeRovingFocusGroup,\n      orientation,\n      dir: direction,\n      loop,\n      currentTabStopId,\n      onItemFocus: React.useCallback(\n        (tabStopId) => setCurrentTabStopId(tabStopId),\n        [setCurrentTabStopId]\n      ),\n      onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n      onFocusableItemAdd: React.useCallback(\n        () => setFocusableItemsCount((prevCount) => prevCount + 1),\n        []\n      ),\n      onFocusableItemRemove: React.useCallback(\n        () => setFocusableItemsCount((prevCount) => prevCount - 1),\n        []\n      ),\n      children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n          \"data-orientation\": orientation,\n          ...groupProps,\n          ref: composedRefs,\n          style: { outline: \"none\", ...props.style },\n          onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n            isClickFocusRef.current = true;\n          }),\n          onFocus: composeEventHandlers(props.onFocus, (event) => {\n            const isKeyboardFocus = !isClickFocusRef.current;\n            if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n              const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n              event.currentTarget.dispatchEvent(entryFocusEvent);\n              if (!entryFocusEvent.defaultPrevented) {\n                const items = getItems().filter((item) => item.focusable);\n                const activeItem = items.find((item) => item.active);\n                const currentItem = items.find((item) => item.id === currentTabStopId);\n                const candidateItems = [activeItem, currentItem, ...items].filter(\n                  Boolean\n                );\n                const candidateNodes = candidateItems.map((item) => item.ref.current);\n                focusFirst(candidateNodes, preventScrollOnEntryFocus);\n              }\n            }\n            isClickFocusRef.current = false;\n          }),\n          onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n        }\n      )\n    }\n  );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeRovingFocusGroup,\n      focusable = true,\n      active = false,\n      tabStopId,\n      children,\n      ...itemProps\n    } = props;\n    const autoId = useId();\n    const id = tabStopId || autoId;\n    const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n    const isCurrentTabStop = context.currentTabStopId === id;\n    const getItems = useCollection(__scopeRovingFocusGroup);\n    const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n    React.useEffect(() => {\n      if (focusable) {\n        onFocusableItemAdd();\n        return () => onFocusableItemRemove();\n      }\n    }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n    return /* @__PURE__ */ jsx(\n      Collection.ItemSlot,\n      {\n        scope: __scopeRovingFocusGroup,\n        id,\n        focusable,\n        active,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            tabIndex: isCurrentTabStop ? 0 : -1,\n            \"data-orientation\": context.orientation,\n            ...itemProps,\n            ref: forwardedRef,\n            onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n              if (!focusable) event.preventDefault();\n              else context.onItemFocus(id);\n            }),\n            onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n            onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n              if (event.key === \"Tab\" && event.shiftKey) {\n                context.onItemShiftTab();\n                return;\n              }\n              if (event.target !== event.currentTarget) return;\n              const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n              if (focusIntent !== void 0) {\n                if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n                event.preventDefault();\n                const items = getItems().filter((item) => item.focusable);\n                let candidateNodes = items.map((item) => item.ref.current);\n                if (focusIntent === \"last\") candidateNodes.reverse();\n                else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n                  if (focusIntent === \"prev\") candidateNodes.reverse();\n                  const currentIndex = candidateNodes.indexOf(event.currentTarget);\n                  candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n                }\n                setTimeout(() => focusFirst(candidateNodes));\n              }\n            }),\n            children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n          }\n        )\n      }\n    );\n  }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n  ArrowLeft: \"prev\",\n  ArrowUp: \"prev\",\n  ArrowRight: \"next\",\n  ArrowDown: \"next\",\n  PageUp: \"first\",\n  Home: \"first\",\n  PageDown: \"last\",\n  End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n  if (dir !== \"rtl\") return key;\n  return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n  const key = getDirectionAwareKey(event.key, dir);\n  if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n  if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n  return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n  for (const candidate of candidates) {\n    if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n    candidate.focus({ preventScroll });\n    if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n  }\n}\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n  Item,\n  Root,\n  RovingFocusGroup,\n  RovingFocusGroupItem,\n  createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","var getDefaultParent = function (originalTarget) {\n    if (typeof document === 'undefined') {\n        return null;\n    }\n    var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n    return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n    return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n    return targets\n        .map(function (target) {\n        if (parent.contains(target)) {\n            return target;\n        }\n        var correctedTarget = unwrapHost(target);\n        if (correctedTarget && parent.contains(correctedTarget)) {\n            return correctedTarget;\n        }\n        console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n        return null;\n    })\n        .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n    var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n    if (!markerMap[markerName]) {\n        markerMap[markerName] = new WeakMap();\n    }\n    var markerCounter = markerMap[markerName];\n    var hiddenNodes = [];\n    var elementsToKeep = new Set();\n    var elementsToStop = new Set(targets);\n    var keep = function (el) {\n        if (!el || elementsToKeep.has(el)) {\n            return;\n        }\n        elementsToKeep.add(el);\n        keep(el.parentNode);\n    };\n    targets.forEach(keep);\n    var deep = function (parent) {\n        if (!parent || elementsToStop.has(parent)) {\n            return;\n        }\n        Array.prototype.forEach.call(parent.children, function (node) {\n            if (elementsToKeep.has(node)) {\n                deep(node);\n            }\n            else {\n                try {\n                    var attr = node.getAttribute(controlAttribute);\n                    var alreadyHidden = attr !== null && attr !== 'false';\n                    var counterValue = (counterMap.get(node) || 0) + 1;\n                    var markerValue = (markerCounter.get(node) || 0) + 1;\n                    counterMap.set(node, counterValue);\n                    markerCounter.set(node, markerValue);\n                    hiddenNodes.push(node);\n                    if (counterValue === 1 && alreadyHidden) {\n                        uncontrolledNodes.set(node, true);\n                    }\n                    if (markerValue === 1) {\n                        node.setAttribute(markerName, 'true');\n                    }\n                    if (!alreadyHidden) {\n                        node.setAttribute(controlAttribute, 'true');\n                    }\n                }\n                catch (e) {\n                    console.error('aria-hidden: cannot operate on ', node, e);\n                }\n            }\n        });\n    };\n    deep(parentNode);\n    elementsToKeep.clear();\n    lockCount++;\n    return function () {\n        hiddenNodes.forEach(function (node) {\n            var counterValue = counterMap.get(node) - 1;\n            var markerValue = markerCounter.get(node) - 1;\n            counterMap.set(node, counterValue);\n            markerCounter.set(node, markerValue);\n            if (!counterValue) {\n                if (!uncontrolledNodes.has(node)) {\n                    node.removeAttribute(controlAttribute);\n                }\n                uncontrolledNodes.delete(node);\n            }\n            if (!markerValue) {\n                node.removeAttribute(markerName);\n            }\n        });\n        lockCount--;\n        if (!lockCount) {\n            // clear\n            counterMap = new WeakMap();\n            counterMap = new WeakMap();\n            uncontrolledNodes = new WeakMap();\n            markerMap = {};\n        }\n    };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n    var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n    var activeParentNode = parentNode || getDefaultParent(originalTarget);\n    if (!activeParentNode) {\n        return function () { return null; };\n    }\n    // we should not hide ariaLive elements - https://github.com/theKashey/aria-hidden/issues/10\n    targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live]')));\n    return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-inert-ed'; }\n    var activeParentNode = parentNode || getDefaultParent(originalTarget);\n    if (!activeParentNode) {\n        return function () { return null; };\n    }\n    return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n    return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-suppressed'; }\n    return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n    if (typeof ref === 'function') {\n        ref(value);\n    }\n    else if (ref) {\n        ref.current = value;\n    }\n    return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n    var ref = useState(function () { return ({\n        // value\n        value: initialValue,\n        // last callback\n        callback: callback,\n        // \"memoized\" public interface\n        facade: {\n            get current() {\n                return ref.value;\n            },\n            set current(value) {\n                var last = ref.value;\n                if (last !== value) {\n                    ref.value = value;\n                    ref.callback(value, last);\n                }\n            },\n        },\n    }); })[0];\n    // update callback\n    ref.callback = callback;\n    return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n *   const ownRef = useRef();\n *   const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n *   return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n    var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n        return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n    });\n    // handle refs changes - added or removed\n    useIsomorphicLayoutEffect(function () {\n        var oldValue = currentValues.get(callbackRef);\n        if (oldValue) {\n            var prevRefs_1 = new Set(oldValue);\n            var nextRefs_1 = new Set(refs);\n            var current_1 = callbackRef.current;\n            prevRefs_1.forEach(function (ref) {\n                if (!nextRefs_1.has(ref)) {\n                    assignRef(ref, null);\n                }\n            });\n            nextRefs_1.forEach(function (ref) {\n                if (!prevRefs_1.has(ref)) {\n                    assignRef(ref, current_1);\n                }\n            });\n        }\n        currentValues.set(callbackRef, refs);\n    }, [refs]);\n    return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n    return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    var buffer = [];\n    var assigned = false;\n    var medium = {\n        read: function () {\n            if (assigned) {\n                throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n            }\n            if (buffer.length) {\n                return buffer[buffer.length - 1];\n            }\n            return defaults;\n        },\n        useMedium: function (data) {\n            var item = middleware(data, assigned);\n            buffer.push(item);\n            return function () {\n                buffer = buffer.filter(function (x) { return x !== item; });\n            };\n        },\n        assignSyncMedium: function (cb) {\n            assigned = true;\n            while (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n            }\n            buffer = {\n                push: function (x) { return cb(x); },\n                filter: function () { return buffer; },\n            };\n        },\n        assignMedium: function (cb) {\n            assigned = true;\n            var pendingQueue = [];\n            if (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n                pendingQueue = buffer;\n            }\n            var executeQueue = function () {\n                var cbs = pendingQueue;\n                pendingQueue = [];\n                cbs.forEach(cb);\n            };\n            var cycle = function () { return Promise.resolve().then(executeQueue); };\n            cycle();\n            buffer = {\n                push: function (x) {\n                    pendingQueue.push(x);\n                    cycle();\n                },\n                filter: function (filter) {\n                    pendingQueue = pendingQueue.filter(filter);\n                    return buffer;\n                },\n            };\n        },\n    };\n    return medium;\n}\nexport function createMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n    if (options === void 0) { options = {}; }\n    var medium = innerCreateMedium(null);\n    medium.options = __assign({ async: true, ssr: false }, options);\n    return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n    var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n    if (!sideCar) {\n        throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n    }\n    var Target = sideCar.read();\n    if (!Target) {\n        throw new Error('Sidecar medium not found');\n    }\n    return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n    medium.useMedium(exported);\n    return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n    return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n    var ref = React.useRef(null);\n    var _a = React.useState({\n        onScrollCapture: nothing,\n        onWheelCapture: nothing,\n        onTouchMoveCapture: nothing,\n    }), callbacks = _a[0], setCallbacks = _a[1];\n    var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n    var SideCar = sideCar;\n    var containerRef = useMergeRefs([ref, parentRef]);\n    var containerProps = __assign(__assign({}, rest), callbacks);\n    return (React.createElement(React.Fragment, null,\n        enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n        forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n    enabled: true,\n    removeScrollBar: true,\n    inert: false,\n};\nRemoveScroll.classNames = {\n    fullWidth: fullWidthClassName,\n    zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n    currentNonce = nonce;\n};\nexport var getNonce = function () {\n    if (currentNonce) {\n        return currentNonce;\n    }\n    if (typeof __webpack_nonce__ !== 'undefined') {\n        return __webpack_nonce__;\n    }\n    return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n    if (!document)\n        return null;\n    var tag = document.createElement('style');\n    tag.type = 'text/css';\n    var nonce = getNonce();\n    if (nonce) {\n        tag.setAttribute('nonce', nonce);\n    }\n    return tag;\n}\nfunction injectStyles(tag, css) {\n    // @ts-ignore\n    if (tag.styleSheet) {\n        // @ts-ignore\n        tag.styleSheet.cssText = css;\n    }\n    else {\n        tag.appendChild(document.createTextNode(css));\n    }\n}\nfunction insertStyleTag(tag) {\n    var head = document.head || document.getElementsByTagName('head')[0];\n    head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n    var counter = 0;\n    var stylesheet = null;\n    return {\n        add: function (style) {\n            if (counter == 0) {\n                if ((stylesheet = makeStyleTag())) {\n                    injectStyles(stylesheet, style);\n                    insertStyleTag(stylesheet);\n                }\n            }\n            counter++;\n        },\n        remove: function () {\n            counter--;\n            if (!counter && stylesheet) {\n                stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n                stylesheet = null;\n            }\n        },\n    };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n    var sheet = stylesheetSingleton();\n    return function (styles, isDynamic) {\n        React.useEffect(function () {\n            sheet.add(styles);\n            return function () {\n                sheet.remove();\n            };\n        }, [styles && isDynamic]);\n    };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n    var useStyle = styleHookSingleton();\n    var Sheet = function (_a) {\n        var styles = _a.styles, dynamic = _a.dynamic;\n        useStyle(styles, dynamic);\n        return null;\n    };\n    return Sheet;\n};\n","export var zeroGap = {\n    left: 0,\n    top: 0,\n    right: 0,\n    gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n    var cs = window.getComputedStyle(document.body);\n    var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n    var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n    var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n    return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n    if (gapMode === void 0) { gapMode = 'margin'; }\n    if (typeof window === 'undefined') {\n        return zeroGap;\n    }\n    var offsets = getOffset(gapMode);\n    var documentWidth = document.documentElement.clientWidth;\n    var windowWidth = window.innerWidth;\n    return {\n        left: offsets[0],\n        top: offsets[1],\n        right: offsets[2],\n        gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n    };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n    var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n    if (gapMode === void 0) { gapMode = 'margin'; }\n    return \"\\n  .\".concat(noScrollbarsClassName, \" {\\n   overflow: hidden \").concat(important, \";\\n   padding-right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  body[\").concat(lockAttribute, \"] {\\n    overflow: hidden \").concat(important, \";\\n    overscroll-behavior: contain;\\n    \").concat([\n        allowRelative && \"position: relative \".concat(important, \";\"),\n        gapMode === 'margin' &&\n            \"\\n    padding-left: \".concat(left, \"px;\\n    padding-top: \").concat(top, \"px;\\n    padding-right: \").concat(right, \"px;\\n    margin-left:0;\\n    margin-top:0;\\n    margin-right: \").concat(gap, \"px \").concat(important, \";\\n    \"),\n        gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n    ]\n        .filter(Boolean)\n        .join(''), \"\\n  }\\n  \\n  .\").concat(zeroRightClassName, \" {\\n    right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  \\n  .\").concat(fullWidthClassName, \" {\\n    margin-right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  \\n  .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n    right: 0 \").concat(important, \";\\n  }\\n  \\n  .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n    margin-right: 0 \").concat(important, \";\\n  }\\n  \\n  body[\").concat(lockAttribute, \"] {\\n    \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n  }\\n\");\n};\nvar getCurrentUseCounter = function () {\n    var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n    return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n    React.useEffect(function () {\n        document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n        return function () {\n            var newCounter = getCurrentUseCounter() - 1;\n            if (newCounter <= 0) {\n                document.body.removeAttribute(lockAttribute);\n            }\n            else {\n                document.body.setAttribute(lockAttribute, newCounter.toString());\n            }\n        };\n    }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n    var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n    useLockAttribute();\n    /*\n     gap will be measured on every component mount\n     however it will be used only by the \"first\" invocation\n     due to singleton nature of <Style\n     */\n    var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n    return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n    try {\n        var options = Object.defineProperty({}, 'passive', {\n            get: function () {\n                passiveSupported = true;\n                return true;\n            },\n        });\n        // @ts-ignore\n        window.addEventListener('test', options, options);\n        // @ts-ignore\n        window.removeEventListener('test', options, options);\n    }\n    catch (err) {\n        passiveSupported = false;\n    }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n    // textarea will always _contain_ scroll inside self. It only can be hidden\n    return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n    if (!(node instanceof Element)) {\n        return false;\n    }\n    var styles = window.getComputedStyle(node);\n    return (\n    // not-not-scrollable\n    styles[overflow] !== 'hidden' &&\n        // contains scroll inside self\n        !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n    var ownerDocument = node.ownerDocument;\n    var current = node;\n    do {\n        // Skip over shadow root\n        if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n            current = current.host;\n        }\n        var isScrollable = elementCouldBeScrolled(axis, current);\n        if (isScrollable) {\n            var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n            if (scrollHeight > clientHeight) {\n                return true;\n            }\n        }\n        current = current.parentNode;\n    } while (current && current !== ownerDocument.body);\n    return false;\n};\nvar getVScrollVariables = function (_a) {\n    var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n    return [\n        scrollTop,\n        scrollHeight,\n        clientHeight,\n    ];\n};\nvar getHScrollVariables = function (_a) {\n    var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n    return [\n        scrollLeft,\n        scrollWidth,\n        clientWidth,\n    ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n    return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n    return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n    /**\n     * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n     * and then increasingly negative as you scroll towards the end of the content.\n     * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n     */\n    return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n    var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n    var delta = directionFactor * sourceDelta;\n    // find scrollable target\n    var target = event.target;\n    var targetInLock = endTarget.contains(target);\n    var shouldCancelScroll = false;\n    var isDeltaPositive = delta > 0;\n    var availableScroll = 0;\n    var availableScrollTop = 0;\n    do {\n        var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n        var elementScroll = scroll_1 - capacity - directionFactor * position;\n        if (position || elementScroll) {\n            if (elementCouldBeScrolled(axis, target)) {\n                availableScroll += elementScroll;\n                availableScrollTop += position;\n            }\n        }\n        if (target instanceof ShadowRoot) {\n            target = target.host;\n        }\n        else {\n            target = target.parentNode;\n        }\n    } while (\n    // portaled content\n    (!targetInLock && target !== document.body) ||\n        // self content\n        (targetInLock && (endTarget.contains(target) || endTarget === target)));\n    // handle epsilon around 0 (non standard zoom levels)\n    if (isDeltaPositive &&\n        ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n        shouldCancelScroll = true;\n    }\n    else if (!isDeltaPositive &&\n        ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n        shouldCancelScroll = true;\n    }\n    return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n    return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n    return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n  .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n  .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n    var shouldPreventQueue = React.useRef([]);\n    var touchStartRef = React.useRef([0, 0]);\n    var activeAxis = React.useRef();\n    var id = React.useState(idCounter++)[0];\n    var Style = React.useState(styleSingleton)[0];\n    var lastProps = React.useRef(props);\n    React.useEffect(function () {\n        lastProps.current = props;\n    }, [props]);\n    React.useEffect(function () {\n        if (props.inert) {\n            document.body.classList.add(\"block-interactivity-\".concat(id));\n            var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n            allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n            return function () {\n                document.body.classList.remove(\"block-interactivity-\".concat(id));\n                allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n            };\n        }\n        return;\n    }, [props.inert, props.lockRef.current, props.shards]);\n    var shouldCancelEvent = React.useCallback(function (event, parent) {\n        if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n            return !lastProps.current.allowPinchZoom;\n        }\n        var touch = getTouchXY(event);\n        var touchStart = touchStartRef.current;\n        var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n        var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n        var currentAxis;\n        var target = event.target;\n        var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n        // allow horizontal touch move on Range inputs. They will not cause any scroll\n        if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n            return false;\n        }\n        var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n        if (!canBeScrolledInMainDirection) {\n            return true;\n        }\n        if (canBeScrolledInMainDirection) {\n            currentAxis = moveDirection;\n        }\n        else {\n            currentAxis = moveDirection === 'v' ? 'h' : 'v';\n            canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n            // other axis might be not scrollable\n        }\n        if (!canBeScrolledInMainDirection) {\n            return false;\n        }\n        if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n            activeAxis.current = currentAxis;\n        }\n        if (!currentAxis) {\n            return true;\n        }\n        var cancelingAxis = activeAxis.current || currentAxis;\n        return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n    }, []);\n    var shouldPrevent = React.useCallback(function (_event) {\n        var event = _event;\n        if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n            // not the last active\n            return;\n        }\n        var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n        var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n        // self event, and should be canceled\n        if (sourceEvent && sourceEvent.should) {\n            if (event.cancelable) {\n                event.preventDefault();\n            }\n            return;\n        }\n        // outside or shard event\n        if (!sourceEvent) {\n            var shardNodes = (lastProps.current.shards || [])\n                .map(extractRef)\n                .filter(Boolean)\n                .filter(function (node) { return node.contains(event.target); });\n            var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n            if (shouldStop) {\n                if (event.cancelable) {\n                    event.preventDefault();\n                }\n            }\n        }\n    }, []);\n    var shouldCancel = React.useCallback(function (name, delta, target, should) {\n        var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n        shouldPreventQueue.current.push(event);\n        setTimeout(function () {\n            shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n        }, 1);\n    }, []);\n    var scrollTouchStart = React.useCallback(function (event) {\n        touchStartRef.current = getTouchXY(event);\n        activeAxis.current = undefined;\n    }, []);\n    var scrollWheel = React.useCallback(function (event) {\n        shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n    }, []);\n    var scrollTouchMove = React.useCallback(function (event) {\n        shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n    }, []);\n    React.useEffect(function () {\n        lockStack.push(Style);\n        props.setCallbacks({\n            onScrollCapture: scrollWheel,\n            onWheelCapture: scrollWheel,\n            onTouchMoveCapture: scrollTouchMove,\n        });\n        document.addEventListener('wheel', shouldPrevent, nonPassive);\n        document.addEventListener('touchmove', shouldPrevent, nonPassive);\n        document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n        return function () {\n            lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n            document.removeEventListener('wheel', shouldPrevent, nonPassive);\n            document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n            document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n        };\n    }, []);\n    var removeScrollBar = props.removeScrollBar, inert = props.inert;\n    return (React.createElement(React.Fragment, null,\n        inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n        removeScrollBar ? React.createElement(RemoveScrollBar, { gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n    var shadowParent = null;\n    while (node !== null) {\n        if (node instanceof ShadowRoot) {\n            shadowParent = node.host;\n            node = node.host;\n        }\n        node = node.parentNode;\n    }\n    return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","\"use client\";\n\n// src/menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs, composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n  ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n  rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n  ltr: [\"ArrowLeft\"],\n  rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n  createCollectionScope,\n  createPopperScope,\n  createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props) => {\n  const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n  const popperScope = usePopperScope(__scopeMenu);\n  const [content, setContent] = React.useState(null);\n  const isUsingKeyboardRef = React.useRef(false);\n  const handleOpenChange = useCallbackRef(onOpenChange);\n  const direction = useDirection(dir);\n  React.useEffect(() => {\n    const handleKeyDown = () => {\n      isUsingKeyboardRef.current = true;\n      document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n      document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n    };\n    const handlePointer = () => isUsingKeyboardRef.current = false;\n    document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n    return () => {\n      document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n      document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n      document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n    };\n  }, []);\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    MenuProvider,\n    {\n      scope: __scopeMenu,\n      open,\n      onOpenChange: handleOpenChange,\n      content,\n      onContentChange: setContent,\n      children: /* @__PURE__ */ jsx(\n        MenuRootProvider,\n        {\n          scope: __scopeMenu,\n          onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n          isUsingKeyboardRef,\n          dir: direction,\n          modal,\n          children\n        }\n      )\n    }\n  ) });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...anchorProps } = props;\n    const popperScope = usePopperScope(__scopeMenu);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n  }\n);\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar MenuPortal = (props) => {\n  const { __scopeMenu, forceMount, children, container } = props;\n  const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n  }\n);\nvar MenuRootContentModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    React.useEffect(() => {\n      const content = ref.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      MenuContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: context.open,\n        disableOutsideScroll: true,\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault(),\n          { checkForDefaultPrevented: false }\n        ),\n        onDismiss: () => context.onOpenChange(false)\n      }\n    );\n  }\n);\nvar MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {\n  const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n  return /* @__PURE__ */ jsx(\n    MenuContentImpl,\n    {\n      ...props,\n      ref: forwardedRef,\n      trapFocus: false,\n      disableOutsidePointerEvents: false,\n      disableOutsideScroll: false,\n      onDismiss: () => context.onOpenChange(false)\n    }\n  );\n});\nvar Slot = createSlot(\"MenuContent.ScrollLock\");\nvar MenuContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeMenu,\n      loop = false,\n      trapFocus,\n      onOpenAutoFocus,\n      onCloseAutoFocus,\n      disableOutsidePointerEvents,\n      onEntryFocus,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      disableOutsideScroll,\n      ...contentProps\n    } = props;\n    const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n    const popperScope = usePopperScope(__scopeMenu);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n    const getItems = useCollection(__scopeMenu);\n    const [currentItemId, setCurrentItemId] = React.useState(null);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n    const timerRef = React.useRef(0);\n    const searchRef = React.useRef(\"\");\n    const pointerGraceTimerRef = React.useRef(0);\n    const pointerGraceIntentRef = React.useRef(null);\n    const pointerDirRef = React.useRef(\"right\");\n    const lastPointerXRef = React.useRef(0);\n    const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n    const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;\n    const handleTypeaheadSearch = (key) => {\n      const search = searchRef.current + key;\n      const items = getItems().filter((item) => !item.disabled);\n      const currentItem = document.activeElement;\n      const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n      const values = items.map((item) => item.textValue);\n      const nextMatch = getNextMatch(values, search, currentMatch);\n      const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n      (function updateSearch(value) {\n        searchRef.current = value;\n        window.clearTimeout(timerRef.current);\n        if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n      })(search);\n      if (newItem) {\n        setTimeout(() => newItem.focus());\n      }\n    };\n    React.useEffect(() => {\n      return () => window.clearTimeout(timerRef.current);\n    }, []);\n    useFocusGuards();\n    const isPointerMovingToSubmenu = React.useCallback((event) => {\n      const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n      return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      MenuContentProvider,\n      {\n        scope: __scopeMenu,\n        searchRef,\n        onItemEnter: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) event.preventDefault();\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        onItemLeave: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) return;\n            contentRef.current?.focus();\n            setCurrentItemId(null);\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        onTriggerLeave: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) event.preventDefault();\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        pointerGraceTimerRef,\n        onPointerGraceIntentChange: React.useCallback((intent) => {\n          pointerGraceIntentRef.current = intent;\n        }, []),\n        children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n          FocusScope,\n          {\n            asChild: true,\n            trapped: trapFocus,\n            onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n              event.preventDefault();\n              contentRef.current?.focus({ preventScroll: true });\n            }),\n            onUnmountAutoFocus: onCloseAutoFocus,\n            children: /* @__PURE__ */ jsx(\n              DismissableLayer,\n              {\n                asChild: true,\n                disableOutsidePointerEvents,\n                onEscapeKeyDown,\n                onPointerDownOutside,\n                onFocusOutside,\n                onInteractOutside,\n                onDismiss,\n                children: /* @__PURE__ */ jsx(\n                  RovingFocusGroup.Root,\n                  {\n                    asChild: true,\n                    ...rovingFocusGroupScope,\n                    dir: rootContext.dir,\n                    orientation: \"vertical\",\n                    loop,\n                    currentTabStopId: currentItemId,\n                    onCurrentTabStopIdChange: setCurrentItemId,\n                    onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n                      if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n                    }),\n                    preventScrollOnEntryFocus: true,\n                    children: /* @__PURE__ */ jsx(\n                      PopperPrimitive.Content,\n                      {\n                        role: \"menu\",\n                        \"aria-orientation\": \"vertical\",\n                        \"data-state\": getOpenState(context.open),\n                        \"data-radix-menu-content\": \"\",\n                        dir: rootContext.dir,\n                        ...popperScope,\n                        ...contentProps,\n                        ref: composedRefs,\n                        style: { outline: \"none\", ...contentProps.style },\n                        onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n                          const target = event.target;\n                          const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n                          const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n                          const isCharacterKey = event.key.length === 1;\n                          if (isKeyDownInside) {\n                            if (event.key === \"Tab\") event.preventDefault();\n                            if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n                          }\n                          const content = contentRef.current;\n                          if (event.target !== content) return;\n                          if (!FIRST_LAST_KEYS.includes(event.key)) return;\n                          event.preventDefault();\n                          const items = getItems().filter((item) => !item.disabled);\n                          const candidateNodes = items.map((item) => item.ref.current);\n                          if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n                          focusFirst(candidateNodes);\n                        }),\n                        onBlur: composeEventHandlers(props.onBlur, (event) => {\n                          if (!event.currentTarget.contains(event.target)) {\n                            window.clearTimeout(timerRef.current);\n                            searchRef.current = \"\";\n                          }\n                        }),\n                        onPointerMove: composeEventHandlers(\n                          props.onPointerMove,\n                          whenMouse((event) => {\n                            const target = event.target;\n                            const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n                            if (event.currentTarget.contains(target) && pointerXHasChanged) {\n                              const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n                              pointerDirRef.current = newDir;\n                              lastPointerXRef.current = event.clientX;\n                            }\n                          })\n                        )\n                      }\n                    )\n                  }\n                )\n              }\n            )\n          }\n        ) })\n      }\n    );\n  }\n);\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...groupProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n  }\n);\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...labelProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n  }\n);\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { disabled = false, onSelect, ...itemProps } = props;\n    const ref = React.useRef(null);\n    const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n    const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const isPointerDownRef = React.useRef(false);\n    const handleSelect = () => {\n      const menuItem = ref.current;\n      if (!disabled && menuItem) {\n        const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n        menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n        dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n        if (itemSelectEvent.defaultPrevented) {\n          isPointerDownRef.current = false;\n        } else {\n          rootContext.onClose();\n        }\n      }\n    };\n    return /* @__PURE__ */ jsx(\n      MenuItemImpl,\n      {\n        ...itemProps,\n        ref: composedRefs,\n        disabled,\n        onClick: composeEventHandlers(props.onClick, handleSelect),\n        onPointerDown: (event) => {\n          props.onPointerDown?.(event);\n          isPointerDownRef.current = true;\n        },\n        onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n          if (!isPointerDownRef.current) event.currentTarget?.click();\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          const isTypingAhead = contentContext.searchRef.current !== \"\";\n          if (disabled || isTypingAhead && event.key === \" \") return;\n          if (SELECTION_KEYS.includes(event.key)) {\n            event.currentTarget.click();\n            event.preventDefault();\n          }\n        })\n      }\n    );\n  }\n);\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n    const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const [isFocused, setIsFocused] = React.useState(false);\n    const [textContent, setTextContent] = React.useState(\"\");\n    React.useEffect(() => {\n      const menuItem = ref.current;\n      if (menuItem) {\n        setTextContent((menuItem.textContent ?? \"\").trim());\n      }\n    }, [itemProps.children]);\n    return /* @__PURE__ */ jsx(\n      Collection.ItemSlot,\n      {\n        scope: __scopeMenu,\n        disabled,\n        textValue: textValue ?? textContent,\n        children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            role: \"menuitem\",\n            \"data-highlighted\": isFocused ? \"\" : void 0,\n            \"aria-disabled\": disabled || void 0,\n            \"data-disabled\": disabled ? \"\" : void 0,\n            ...itemProps,\n            ref: composedRefs,\n            onPointerMove: composeEventHandlers(\n              props.onPointerMove,\n              whenMouse((event) => {\n                if (disabled) {\n                  contentContext.onItemLeave(event);\n                } else {\n                  contentContext.onItemEnter(event);\n                  if (!event.defaultPrevented) {\n                    const item = event.currentTarget;\n                    item.focus({ preventScroll: true });\n                  }\n                }\n              })\n            ),\n            onPointerLeave: composeEventHandlers(\n              props.onPointerLeave,\n              whenMouse((event) => contentContext.onItemLeave(event))\n            ),\n            onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n            onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n          }\n        ) })\n      }\n    );\n  }\n);\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n    return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n      MenuItem,\n      {\n        role: \"menuitemcheckbox\",\n        \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n        ...checkboxItemProps,\n        ref: forwardedRef,\n        \"data-state\": getCheckedState(checked),\n        onSelect: composeEventHandlers(\n          checkboxItemProps.onSelect,\n          () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }\n);\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n  RADIO_GROUP_NAME,\n  { value: void 0, onValueChange: () => {\n  } }\n);\nvar MenuRadioGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    const { value, onValueChange, ...groupProps } = props;\n    const handleValueChange = useCallbackRef(onValueChange);\n    return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n  }\n);\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { value, ...radioItemProps } = props;\n    const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n    const checked = value === context.value;\n    return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n      MenuItem,\n      {\n        role: \"menuitemradio\",\n        \"aria-checked\": checked,\n        ...radioItemProps,\n        ref: forwardedRef,\n        \"data-state\": getCheckedState(checked),\n        onSelect: composeEventHandlers(\n          radioItemProps.onSelect,\n          () => context.onValueChange?.(value),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }\n);\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n  ITEM_INDICATOR_NAME,\n  { checked: false }\n);\nvar MenuItemIndicator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n    const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n    return /* @__PURE__ */ jsx(\n      Presence,\n      {\n        present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            ...itemIndicatorProps,\n            ref: forwardedRef,\n            \"data-state\": getCheckedState(indicatorContext.checked)\n          }\n        )\n      }\n    );\n  }\n);\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...separatorProps } = props;\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        role: \"separator\",\n        \"aria-orientation\": \"horizontal\",\n        ...separatorProps,\n        ref: forwardedRef\n      }\n    );\n  }\n);\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeMenu);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props) => {\n  const { __scopeMenu, children, open = false, onOpenChange } = props;\n  const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n  const popperScope = usePopperScope(__scopeMenu);\n  const [trigger, setTrigger] = React.useState(null);\n  const [content, setContent] = React.useState(null);\n  const handleOpenChange = useCallbackRef(onOpenChange);\n  React.useEffect(() => {\n    if (parentMenuContext.open === false) handleOpenChange(false);\n    return () => handleOpenChange(false);\n  }, [parentMenuContext.open, handleOpenChange]);\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    MenuProvider,\n    {\n      scope: __scopeMenu,\n      open,\n      onOpenChange: handleOpenChange,\n      content,\n      onContentChange: setContent,\n      children: /* @__PURE__ */ jsx(\n        MenuSubProvider,\n        {\n          scope: __scopeMenu,\n          contentId: useId(),\n          triggerId: useId(),\n          trigger,\n          onTriggerChange: setTrigger,\n          children\n        }\n      )\n    }\n  ) });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const openTimerRef = React.useRef(null);\n    const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n    const scope = { __scopeMenu: props.__scopeMenu };\n    const clearOpenTimer = React.useCallback(() => {\n      if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n      openTimerRef.current = null;\n    }, []);\n    React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n    React.useEffect(() => {\n      const pointerGraceTimer = pointerGraceTimerRef.current;\n      return () => {\n        window.clearTimeout(pointerGraceTimer);\n        onPointerGraceIntentChange(null);\n      };\n    }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n    return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n      MenuItemImpl,\n      {\n        id: subContext.triggerId,\n        \"aria-haspopup\": \"menu\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": subContext.contentId,\n        \"data-state\": getOpenState(context.open),\n        ...props,\n        ref: composeRefs(forwardedRef, subContext.onTriggerChange),\n        onClick: (event) => {\n          props.onClick?.(event);\n          if (props.disabled || event.defaultPrevented) return;\n          event.currentTarget.focus();\n          if (!context.open) context.onOpenChange(true);\n        },\n        onPointerMove: composeEventHandlers(\n          props.onPointerMove,\n          whenMouse((event) => {\n            contentContext.onItemEnter(event);\n            if (event.defaultPrevented) return;\n            if (!props.disabled && !context.open && !openTimerRef.current) {\n              contentContext.onPointerGraceIntentChange(null);\n              openTimerRef.current = window.setTimeout(() => {\n                context.onOpenChange(true);\n                clearOpenTimer();\n              }, 100);\n            }\n          })\n        ),\n        onPointerLeave: composeEventHandlers(\n          props.onPointerLeave,\n          whenMouse((event) => {\n            clearOpenTimer();\n            const contentRect = context.content?.getBoundingClientRect();\n            if (contentRect) {\n              const side = context.content?.dataset.side;\n              const rightSide = side === \"right\";\n              const bleed = rightSide ? -5 : 5;\n              const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n              const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n              contentContext.onPointerGraceIntentChange({\n                area: [\n                  // Apply a bleed on clientX to ensure that our exit point is\n                  // consistently within polygon bounds\n                  { x: event.clientX + bleed, y: event.clientY },\n                  { x: contentNearEdge, y: contentRect.top },\n                  { x: contentFarEdge, y: contentRect.top },\n                  { x: contentFarEdge, y: contentRect.bottom },\n                  { x: contentNearEdge, y: contentRect.bottom }\n                ],\n                side\n              });\n              window.clearTimeout(pointerGraceTimerRef.current);\n              pointerGraceTimerRef.current = window.setTimeout(\n                () => contentContext.onPointerGraceIntentChange(null),\n                300\n              );\n            } else {\n              contentContext.onTriggerLeave(event);\n              if (event.defaultPrevented) return;\n              contentContext.onPointerGraceIntentChange(null);\n            }\n          })\n        ),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          const isTypingAhead = contentContext.searchRef.current !== \"\";\n          if (props.disabled || isTypingAhead && event.key === \" \") return;\n          if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n            context.onOpenChange(true);\n            context.content?.focus();\n            event.preventDefault();\n          }\n        })\n      }\n    ) });\n  }\n);\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n    const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n    const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n      MenuContentImpl,\n      {\n        id: subContext.contentId,\n        \"aria-labelledby\": subContext.triggerId,\n        ...subContentProps,\n        ref: composedRefs,\n        align: \"start\",\n        side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n        disableOutsidePointerEvents: false,\n        disableOutsideScroll: false,\n        trapFocus: false,\n        onOpenAutoFocus: (event) => {\n          if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n          event.preventDefault();\n        },\n        onCloseAutoFocus: (event) => event.preventDefault(),\n        onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n          if (event.target !== subContext.trigger) context.onOpenChange(false);\n        }),\n        onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n          rootContext.onClose();\n          event.preventDefault();\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          const isKeyDownInside = event.currentTarget.contains(event.target);\n          const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n          if (isKeyDownInside && isCloseKey) {\n            context.onOpenChange(false);\n            subContext.trigger?.focus();\n            event.preventDefault();\n          }\n        })\n      }\n    ) }) }) });\n  }\n);\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n  return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n  return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n  return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n  for (const candidate of candidates) {\n    if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n    candidate.focus();\n    if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n  }\n}\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const normalizedSearch = isRepeated ? search[0] : search;\n  const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n  let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n  const excludeCurrentMatch = normalizedSearch.length === 1;\n  if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n  const nextMatch = wrappedValues.find(\n    (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n  );\n  return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n  const { x, y } = point;\n  let inside = false;\n  for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n    const ii = polygon[i];\n    const jj = polygon[j];\n    const xi = ii.x;\n    const yi = ii.y;\n    const xj = jj.x;\n    const yj = jj.y;\n    const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect) inside = !inside;\n  }\n  return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n  if (!area) return false;\n  const cursorPos = { x: event.clientX, y: event.clientY };\n  return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n  return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\nexport {\n  Anchor2 as Anchor,\n  Arrow2 as Arrow,\n  CheckboxItem,\n  Content2 as Content,\n  Group,\n  Item2 as Item,\n  ItemIndicator,\n  Label,\n  Menu,\n  MenuAnchor,\n  MenuArrow,\n  MenuCheckboxItem,\n  MenuContent,\n  MenuGroup,\n  MenuItem,\n  MenuItemIndicator,\n  MenuLabel,\n  MenuPortal,\n  MenuRadioGroup,\n  MenuRadioItem,\n  MenuSeparator,\n  MenuSub,\n  MenuSubContent,\n  MenuSubTrigger,\n  Portal,\n  RadioGroup,\n  RadioItem,\n  Root3 as Root,\n  Separator,\n  Sub,\n  SubContent,\n  SubTrigger,\n  createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dropdown-menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as MenuPrimitive from \"@radix-ui/react-menu\";\nimport { createMenuScope } from \"@radix-ui/react-menu\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DROPDOWN_MENU_NAME = \"DropdownMenu\";\nvar [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n  DROPDOWN_MENU_NAME,\n  [createMenuScope]\n);\nvar useMenuScope = createMenuScope();\nvar [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);\nvar DropdownMenu = (props) => {\n  const {\n    __scopeDropdownMenu,\n    children,\n    dir,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = true\n  } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  const triggerRef = React.useRef(null);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: DROPDOWN_MENU_NAME\n  });\n  return /* @__PURE__ */ jsx(\n    DropdownMenuProvider,\n    {\n      scope: __scopeDropdownMenu,\n      triggerId: useId(),\n      triggerRef,\n      contentId: useId(),\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      modal,\n      children: /* @__PURE__ */ jsx(MenuPrimitive.Root, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })\n    }\n  );\n};\nDropdownMenu.displayName = DROPDOWN_MENU_NAME;\nvar TRIGGER_NAME = \"DropdownMenuTrigger\";\nvar DropdownMenuTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n    const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        id: context.triggerId,\n        \"aria-haspopup\": \"menu\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.open ? context.contentId : void 0,\n        \"data-state\": context.open ? \"open\" : \"closed\",\n        \"data-disabled\": disabled ? \"\" : void 0,\n        disabled,\n        ...triggerProps,\n        ref: composeRefs(forwardedRef, context.triggerRef),\n        onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n          if (!disabled && event.button === 0 && event.ctrlKey === false) {\n            context.onOpenToggle();\n            if (!context.open) event.preventDefault();\n          }\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          if (disabled) return;\n          if ([\"Enter\", \" \"].includes(event.key)) context.onOpenToggle();\n          if (event.key === \"ArrowDown\") context.onOpenChange(true);\n          if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault();\n        })\n      }\n    ) });\n  }\n);\nDropdownMenuTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DropdownMenuPortal\";\nvar DropdownMenuPortal = (props) => {\n  const { __scopeDropdownMenu, ...portalProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });\n};\nDropdownMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"DropdownMenuContent\";\nvar DropdownMenuContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, ...contentProps } = props;\n    const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    const hasInteractedOutsideRef = React.useRef(false);\n    return /* @__PURE__ */ jsx(\n      MenuPrimitive.Content,\n      {\n        id: context.contentId,\n        \"aria-labelledby\": context.triggerId,\n        ...menuScope,\n        ...contentProps,\n        ref: forwardedRef,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n          hasInteractedOutsideRef.current = false;\n          event.preventDefault();\n        }),\n        onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {\n          const originalEvent = event.detail.originalEvent;\n          const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n          const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n          if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n        }),\n        style: {\n          ...props.style,\n          // re-namespace exposed content custom properties\n          ...{\n            \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n            \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n            \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n            \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n            \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n          }\n        }\n      }\n    );\n  }\n);\nDropdownMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"DropdownMenuGroup\";\nvar DropdownMenuGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, ...groupProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });\n  }\n);\nDropdownMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"DropdownMenuLabel\";\nvar DropdownMenuLabel = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, ...labelProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });\n  }\n);\nDropdownMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"DropdownMenuItem\";\nvar DropdownMenuItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, ...itemProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });\n  }\n);\nDropdownMenuItem.displayName = ITEM_NAME;\nvar CHECKBOX_ITEM_NAME = \"DropdownMenuCheckboxItem\";\nvar DropdownMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });\n});\nDropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"DropdownMenuRadioGroup\";\nvar DropdownMenuRadioGroup = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...radioGroupProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });\n});\nDropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"DropdownMenuRadioItem\";\nvar DropdownMenuRadioItem = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...radioItemProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });\n});\nDropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar INDICATOR_NAME = \"DropdownMenuItemIndicator\";\nvar DropdownMenuItemIndicator = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });\n});\nDropdownMenuItemIndicator.displayName = INDICATOR_NAME;\nvar SEPARATOR_NAME = \"DropdownMenuSeparator\";\nvar DropdownMenuSeparator = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...separatorProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });\n});\nDropdownMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"DropdownMenuArrow\";\nvar DropdownMenuArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, ...arrowProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nDropdownMenuArrow.displayName = ARROW_NAME;\nvar DropdownMenuSub = (props) => {\n  const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: \"DropdownMenuSub\"\n  });\n  return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });\n};\nvar SUB_TRIGGER_NAME = \"DropdownMenuSubTrigger\";\nvar DropdownMenuSubTrigger = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...subTriggerProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });\n});\nDropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"DropdownMenuSubContent\";\nvar DropdownMenuSubContent = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...subContentProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(\n    MenuPrimitive.SubContent,\n    {\n      ...menuScope,\n      ...subContentProps,\n      ref: forwardedRef,\n      style: {\n        ...props.style,\n        // re-namespace exposed content custom properties\n        ...{\n          \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n          \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n          \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n          \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n          \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n        }\n      }\n    }\n  );\n});\nDropdownMenuSubContent.displayName = SUB_CONTENT_NAME;\nvar Root2 = DropdownMenu;\nvar Trigger = DropdownMenuTrigger;\nvar Portal2 = DropdownMenuPortal;\nvar Content2 = DropdownMenuContent;\nvar Group2 = DropdownMenuGroup;\nvar Label2 = DropdownMenuLabel;\nvar Item2 = DropdownMenuItem;\nvar CheckboxItem2 = DropdownMenuCheckboxItem;\nvar RadioGroup2 = DropdownMenuRadioGroup;\nvar RadioItem2 = DropdownMenuRadioItem;\nvar ItemIndicator2 = DropdownMenuItemIndicator;\nvar Separator2 = DropdownMenuSeparator;\nvar Arrow2 = DropdownMenuArrow;\nvar Sub2 = DropdownMenuSub;\nvar SubTrigger2 = DropdownMenuSubTrigger;\nvar SubContent2 = DropdownMenuSubContent;\nexport {\n  Arrow2 as Arrow,\n  CheckboxItem2 as CheckboxItem,\n  Content2 as Content,\n  DropdownMenu,\n  DropdownMenuArrow,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuItemIndicator,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n  Group2 as Group,\n  Item2 as Item,\n  ItemIndicator2 as ItemIndicator,\n  Label2 as Label,\n  Portal2 as Portal,\n  RadioGroup2 as RadioGroup,\n  RadioItem2 as RadioItem,\n  Root2 as Root,\n  Separator2 as Separator,\n  Sub2 as Sub,\n  SubContent2 as SubContent,\n  SubTrigger2 as SubTrigger,\n  Trigger,\n  createDropdownMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\r\nimport { ChevronRight } from 'lucide-react';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst DropdownMenu = DropdownMenuPrimitive.Root;\r\n\r\nconst DropdownMenuTrigger = React.forwardRef<\r\n  React.ComponentRef<typeof DropdownMenuPrimitive.Trigger>,\r\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n  <DropdownMenuPrimitive.Trigger\r\n    {...props}\r\n    ref={ref}\r\n    className={cn('focus:outline-hidden text-primary-black dark:text-primary-gray-100', className)}\r\n  >\r\n    {children}\r\n  </DropdownMenuPrimitive.Trigger>\r\n));\r\nDropdownMenuTrigger.displayName = DropdownMenuPrimitive.Trigger.displayName;\r\n\r\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\r\n\r\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\r\n\r\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\r\n\r\nconst DropdownMenuSubTrigger = React.forwardRef<\r\n  React.ComponentRef<typeof DropdownMenuPrimitive.SubTrigger>,\r\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\r\n    inset?: boolean;\r\n  }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n  <DropdownMenuPrimitive.SubTrigger\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'flex cursor-default gap-2 select-none items-center rounded-none px-2 py-1.5 text-base outline-hidden focus:bg-primary-blue-100 focus:font-bold data-[state=open]:bg-primary-gray-200 dark:data-[state=open]:bg-primary-gray-600 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\r\n      inset && 'pl-8',\r\n      className,\r\n    )}\r\n  >\r\n    {children}\r\n    <ChevronRight className='ml-auto' />\r\n  </DropdownMenuPrimitive.SubTrigger>\r\n));\r\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\r\n\r\nconst DropdownMenuSubContent = React.forwardRef<\r\n  React.ComponentRef<typeof DropdownMenuPrimitive.SubContent>,\r\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n  <DropdownMenuPrimitive.SubContent\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'z-50 min-w-[8rem] overflow-hidden rounded-none border border-primary-gray-200 bg-primary-gray-100 dark:bg-primary-gray-650 p-1 text-primary-black dark:text-primary-white shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\r\n\r\nconst DropdownMenuContent = React.forwardRef<\r\n  React.ComponentRef<typeof DropdownMenuPrimitive.Content>,\r\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n  <DropdownMenuPrimitive.Portal>\r\n    <DropdownMenuPrimitive.Content\r\n      {...props}\r\n      ref={ref}\r\n      sideOffset={sideOffset}\r\n      className={cn(\r\n        'z-50 min-w-[8rem] overflow-hidden rounded-none border border-primary-gray-200 bg-primary-gray-100 dark:bg-primary-gray-650 p-1 text-primary-black dark:text-primary-white shadow-md',\r\n        'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\r\n        className,\r\n      )}\r\n    />\r\n  </DropdownMenuPrimitive.Portal>\r\n));\r\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\r\n\r\nconst DropdownMenuItem = React.forwardRef<\r\n  React.ComponentRef<typeof DropdownMenuPrimitive.Item>,\r\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\r\n    inset?: boolean;\r\n  }\r\n>(({ className, inset, ...props }, ref) => (\r\n  <DropdownMenuPrimitive.Item\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'relative flex cursor-default select-none items-center gap-2 rounded-none px-2 py-1.5 text-base outline-hidden transition-colors focus:bg-primary-gray-300 dark:focus:bg-primary-gray-550 data-disabled:pointer-events-none data-disabled:opacity-25 [&>svg]:size-4 [&>svg]:shrink-0',\r\n      inset && 'pl-8',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\r\n\r\nconst DropdownMenuLabel = React.forwardRef<\r\n  React.ComponentRef<typeof DropdownMenuPrimitive.Label>,\r\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\r\n    inset?: boolean;\r\n  }\r\n>(({ className, inset, ...props }, ref) => (\r\n  <DropdownMenuPrimitive.Label\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'px-2 py-1.5 text-base uppercase font-semibold dark:text-primary-white',\r\n      inset && 'pl-8',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\r\n\r\nconst DropdownMenuSeparator = React.forwardRef<\r\n  React.ComponentRef<typeof DropdownMenuPrimitive.Separator>,\r\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n  <DropdownMenuPrimitive.Separator\r\n    {...props}\r\n    ref={ref}\r\n    className={cn('-mx-1 my-1 h-px bg-primary-gray-400 dark:bg-primary-gray-500', className)}\r\n  />\r\n));\r\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\r\n\r\nexport {\r\n  DropdownMenu,\r\n  DropdownMenuTrigger,\r\n  DropdownMenuContent,\r\n  DropdownMenuItem,\r\n  DropdownMenuLabel,\r\n  DropdownMenuSeparator,\r\n  DropdownMenuGroup,\r\n  DropdownMenuPortal,\r\n  DropdownMenuSub,\r\n  DropdownMenuSubContent,\r\n  DropdownMenuSubTrigger,\r\n};\r\n","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nexport { _objectSpread2 as default };","function _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nexport { _iterableToArrayLimit as default };","function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var n = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nexport { _objectWithoutProperties as default };","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useState, useCallback } from 'react';\n\nvar _excluded = [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\", \"inputValue\", \"menuIsOpen\", \"onChange\", \"onInputChange\", \"onMenuClose\", \"onMenuOpen\", \"value\"];\nfunction useStateManager(_ref) {\n  var _ref$defaultInputValu = _ref.defaultInputValue,\n    defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,\n    _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,\n    defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,\n    _ref$defaultValue = _ref.defaultValue,\n    defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,\n    propsInputValue = _ref.inputValue,\n    propsMenuIsOpen = _ref.menuIsOpen,\n    propsOnChange = _ref.onChange,\n    propsOnInputChange = _ref.onInputChange,\n    propsOnMenuClose = _ref.onMenuClose,\n    propsOnMenuOpen = _ref.onMenuOpen,\n    propsValue = _ref.value,\n    restSelectProps = _objectWithoutProperties(_ref, _excluded);\n  var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),\n    _useState2 = _slicedToArray(_useState, 2),\n    stateInputValue = _useState2[0],\n    setStateInputValue = _useState2[1];\n  var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),\n    _useState4 = _slicedToArray(_useState3, 2),\n    stateMenuIsOpen = _useState4[0],\n    setStateMenuIsOpen = _useState4[1];\n  var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),\n    _useState6 = _slicedToArray(_useState5, 2),\n    stateValue = _useState6[0],\n    setStateValue = _useState6[1];\n  var onChange = useCallback(function (value, actionMeta) {\n    if (typeof propsOnChange === 'function') {\n      propsOnChange(value, actionMeta);\n    }\n    setStateValue(value);\n  }, [propsOnChange]);\n  var onInputChange = useCallback(function (value, actionMeta) {\n    var newValue;\n    if (typeof propsOnInputChange === 'function') {\n      newValue = propsOnInputChange(value, actionMeta);\n    }\n    setStateInputValue(newValue !== undefined ? newValue : value);\n  }, [propsOnInputChange]);\n  var onMenuOpen = useCallback(function () {\n    if (typeof propsOnMenuOpen === 'function') {\n      propsOnMenuOpen();\n    }\n    setStateMenuIsOpen(true);\n  }, [propsOnMenuOpen]);\n  var onMenuClose = useCallback(function () {\n    if (typeof propsOnMenuClose === 'function') {\n      propsOnMenuClose();\n    }\n    setStateMenuIsOpen(false);\n  }, [propsOnMenuClose]);\n  var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;\n  var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;\n  var value = propsValue !== undefined ? propsValue : stateValue;\n  return _objectSpread(_objectSpread({}, restSelectProps), {}, {\n    inputValue: inputValue,\n    menuIsOpen: menuIsOpen,\n    onChange: onChange,\n    onInputChange: onInputChange,\n    onMenuClose: onMenuClose,\n    onMenuOpen: onMenuOpen,\n    value: value\n  });\n}\n\nexport { useStateManager as u };\n","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nexport { _createClass as default };","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","function _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n    return !!t;\n  })();\n}\nexport { _isNativeReflectConstruct as default };","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n  var r = isNativeReflectConstruct();\n  return function () {\n    var e,\n      o = getPrototypeOf(t);\n    if (r) {\n      var s = getPrototypeOf(this).constructor;\n      e = Reflect.construct(o, arguments, s);\n    } else e = o.apply(this, arguments);\n    return possibleConstructorReturn(this, e);\n  };\n}\nexport { _createSuper as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      return document.styleSheets[i];\n    }\n  } // this function should always return with a value\n  // TS can't understand it though so we make it stop complaining here\n\n\n  return undefined;\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    this.tags.forEach(function (tag) {\n      var _tag$parentNode;\n\n      return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value;\n  var parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if (key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  var inserted = {};\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport { createCache as default };\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else if (className) {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  scale: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  var componentSelector = interpolation;\n\n  if (componentSelector.__emotion_styles !== undefined) {\n\n    return componentSelector;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        var keyframes = interpolation;\n\n        if (keyframes.anim === 1) {\n          cursor = {\n            name: keyframes.name,\n            styles: keyframes.styles,\n            next: cursor\n          };\n          return keyframes.name;\n        }\n\n        var serializedStyles = interpolation;\n\n        if (serializedStyles.styles !== undefined) {\n          var next = serializedStyles.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = serializedStyles.styles + \";\";\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        }\n\n        break;\n      }\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  var asString = interpolation;\n\n  if (registered == null) {\n    return asString;\n  }\n\n  var cached = registered[asString];\n  return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var key in obj) {\n      var value = obj[key];\n\n      if (typeof value !== 'object') {\n        var asString = value;\n\n        if (registered != null && registered[asString] !== undefined) {\n          string += key + \"{\" + registered[asString] + \"}\";\n        } else if (isProcessableValue(asString)) {\n          string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n        }\n      } else {\n        if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n\n                string += key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    var asTemplateStringsArr = strings;\n\n    styles += asTemplateStringsArr[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      var templateStringsArr = strings;\n\n      styles += templateStringsArr[i];\n    }\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n}\n\nexport { serializeStyles };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n  return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    return mergedTheme;\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = React.useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n  var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n    var theme = React.useContext(ThemeContext);\n    return /*#__PURE__*/React.createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  });\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n  var newProps = {};\n\n  for (var _key in props) {\n    if (hasOwn.call(props, _key)) {\n      newProps[_key] = props[_key];\n    }\n  }\n\n  newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var _key2 in props) {\n    if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n      newProps[_key2] = props[_key2];\n    }\n  }\n\n  newProps.className = className;\n\n  if (ref) {\n    newProps.ref = ref;\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-f0de968e.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-f0de968e.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx = function jsx(type, props) {\n  // eslint-disable-next-line prefer-rest-params\n  var args = arguments;\n\n  if (props == null || !hasOwn.call(props, 'css')) {\n    return React.createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  }\n\n  return React.createElement.apply(null, createElementArgArray);\n};\n\n(function (_jsx) {\n  var JSX;\n\n  (function (_JSX) {})(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));\n})(jsx || (jsx = {}));\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = React.useRef();\n  useInsertionEffectWithLayoutFallback(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false;\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nfunction keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name;\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n}\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && isDevelopment) {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && isDevelopment) {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: React.useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","function _taggedTemplateLiteral(e, t) {\n  return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n    raw: {\n      value: Object.freeze(t)\n    }\n  }));\n}\nexport { _taggedTemplateLiteral as default };","import { useLayoutEffect } from 'react';\n\nvar index = useLayoutEffect ;\n\nexport { index as default };\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { jsx, keyframes, css as css$2 } from '@emotion/react';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { useContext, useRef, useState, useMemo, useCallback, createContext } from 'react';\nimport { createPortal } from 'react-dom';\nimport { autoUpdate } from '@floating-ui/dom';\nimport useLayoutEffect from 'use-isomorphic-layout-effect';\n\nvar _excluded$4 = [\"className\", \"clearValue\", \"cx\", \"getStyles\", \"getClassNames\", \"getValue\", \"hasValue\", \"isMulti\", \"isRtl\", \"options\", \"selectOption\", \"selectProps\", \"setValue\", \"theme\"];\n// ==============================\n// NO OP\n// ==============================\n\nvar noop = function noop() {};\n\n// ==============================\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n   @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n   @returns 'react-select__comp react-select__comp--some'\n*/\nfunction applyPrefixToName(prefix, name) {\n  if (!name) {\n    return prefix;\n  } else if (name[0] === '-') {\n    return prefix + name;\n  } else {\n    return prefix + '__' + name;\n  }\n}\nfunction classNames(prefix, state) {\n  for (var _len = arguments.length, classNameList = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    classNameList[_key - 2] = arguments[_key];\n  }\n  var arr = [].concat(classNameList);\n  if (state && prefix) {\n    for (var key in state) {\n      if (state.hasOwnProperty(key) && state[key]) {\n        arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n      }\n    }\n  }\n  return arr.filter(function (i) {\n    return i;\n  }).map(function (i) {\n    return String(i).trim();\n  }).join(' ');\n}\n// ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n  if (isArray(value)) return value.filter(Boolean);\n  if (_typeof(value) === 'object' && value !== null) return [value];\n  return [];\n};\n\n// ==============================\n// Clean Common Props\n// ==============================\n\nvar cleanCommonProps = function cleanCommonProps(props) {\n  //className\n  props.className;\n    props.clearValue;\n    props.cx;\n    props.getStyles;\n    props.getClassNames;\n    props.getValue;\n    props.hasValue;\n    props.isMulti;\n    props.isRtl;\n    props.options;\n    props.selectOption;\n    props.selectProps;\n    props.setValue;\n    props.theme;\n    var innerProps = _objectWithoutProperties(props, _excluded$4);\n  return _objectSpread({}, innerProps);\n};\n\n// ==============================\n// Get Style Props\n// ==============================\n\nvar getStyleProps = function getStyleProps(props, name, classNamesState) {\n  var cx = props.cx,\n    getStyles = props.getStyles,\n    getClassNames = props.getClassNames,\n    className = props.className;\n  return {\n    css: getStyles(name, props),\n    className: cx(classNamesState !== null && classNamesState !== void 0 ? classNamesState : {}, getClassNames(name, props), className)\n  };\n};\n\n// ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n  if (onInputChange) {\n    var _newValue = onInputChange(inputValue, actionMeta);\n    if (typeof _newValue === 'string') return _newValue;\n  }\n  return inputValue;\n}\n\n// ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n  return [document.documentElement, document.body, window].indexOf(el) > -1;\n}\n\n// Normalized Scroll Top\n// ------------------------------\n\nfunction normalizedHeight(el) {\n  if (isDocumentElement(el)) {\n    return window.innerHeight;\n  }\n  return el.clientHeight;\n}\n\n// Normalized scrollTo & scrollTop\n// ------------------------------\n\nfunction getScrollTop(el) {\n  if (isDocumentElement(el)) {\n    return window.pageYOffset;\n  }\n  return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n  // with a scroll distance, we perform scroll on the element\n  if (isDocumentElement(el)) {\n    window.scrollTo(0, top);\n    return;\n  }\n  el.scrollTop = top;\n}\n\n// Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n  var style = getComputedStyle(element);\n  var excludeStaticParent = style.position === 'absolute';\n  var overflowRx = /(auto|scroll)/;\n  if (style.position === 'fixed') return document.documentElement;\n  for (var parent = element; parent = parent.parentElement;) {\n    style = getComputedStyle(parent);\n    if (excludeStaticParent && style.position === 'static') {\n      continue;\n    }\n    if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n      return parent;\n    }\n  }\n  return document.documentElement;\n}\n\n// Animated Scroll To\n// ------------------------------\n\n/**\n  @param t: time (elapsed)\n  @param b: initial value\n  @param c: amount of change\n  @param d: duration\n*/\nfunction easeOutCubic(t, b, c, d) {\n  return c * ((t = t / d - 1) * t * t + 1) + b;\n}\nfunction animatedScrollTo(element, to) {\n  var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n  var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n  var start = getScrollTop(element);\n  var change = to - start;\n  var increment = 10;\n  var currentTime = 0;\n  function animateScroll() {\n    currentTime += increment;\n    var val = easeOutCubic(currentTime, start, change, duration);\n    scrollTo(element, val);\n    if (currentTime < duration) {\n      window.requestAnimationFrame(animateScroll);\n    } else {\n      callback(element);\n    }\n  }\n  animateScroll();\n}\n\n// Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n  var menuRect = menuEl.getBoundingClientRect();\n  var focusedRect = focusedEl.getBoundingClientRect();\n  var overScroll = focusedEl.offsetHeight / 3;\n  if (focusedRect.bottom + overScroll > menuRect.bottom) {\n    scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n  } else if (focusedRect.top - overScroll < menuRect.top) {\n    scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n  }\n}\n\n// ==============================\n// Get bounding client object\n// ==============================\n\n// cannot get keys using array notation with DOMRect\nfunction getBoundingClientObj(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    bottom: rect.bottom,\n    height: rect.height,\n    left: rect.left,\n    right: rect.right,\n    top: rect.top,\n    width: rect.width\n  };\n}\n\n// ==============================\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n  try {\n    document.createEvent('TouchEvent');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n// ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n  try {\n    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  } catch (e) {\n    return false;\n  }\n}\n\n// ==============================\n// Passive Event Detector\n// ==============================\n\n// https://github.com/rafgraph/detect-it/blob/main/src/index.ts#L19-L36\nvar passiveOptionAccessed = false;\nvar options = {\n  get passive() {\n    return passiveOptionAccessed = true;\n  }\n};\n// check for SSR\nvar w = typeof window !== 'undefined' ? window : {};\nif (w.addEventListener && w.removeEventListener) {\n  w.addEventListener('p', noop, options);\n  w.removeEventListener('p', noop, false);\n}\nvar supportsPassiveEvents = passiveOptionAccessed;\nfunction notNullish(item) {\n  return item != null;\n}\nfunction isArray(arg) {\n  return Array.isArray(arg);\n}\nfunction valueTernary(isMulti, multiValue, singleValue) {\n  return isMulti ? multiValue : singleValue;\n}\nfunction singleValueAsValue(singleValue) {\n  return singleValue;\n}\nfunction multiValueAsValue(multiValue) {\n  return multiValue;\n}\nvar removeProps = function removeProps(propsObj) {\n  for (var _len2 = arguments.length, properties = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    properties[_key2 - 1] = arguments[_key2];\n  }\n  var propsMap = Object.entries(propsObj).filter(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      key = _ref2[0];\n    return !properties.includes(key);\n  });\n  return propsMap.reduce(function (newProps, _ref3) {\n    var _ref4 = _slicedToArray(_ref3, 2),\n      key = _ref4[0],\n      val = _ref4[1];\n    newProps[key] = val;\n    return newProps;\n  }, {});\n};\n\nvar _excluded$3 = [\"children\", \"innerProps\"],\n  _excluded2$1 = [\"children\", \"innerProps\"];\nfunction getMenuPlacement(_ref) {\n  var preferredMaxHeight = _ref.maxHeight,\n    menuEl = _ref.menuEl,\n    minHeight = _ref.minHeight,\n    preferredPlacement = _ref.placement,\n    shouldScroll = _ref.shouldScroll,\n    isFixedPosition = _ref.isFixedPosition,\n    controlHeight = _ref.controlHeight;\n  var scrollParent = getScrollParent(menuEl);\n  var defaultState = {\n    placement: 'bottom',\n    maxHeight: preferredMaxHeight\n  };\n\n  // something went wrong, return default state\n  if (!menuEl || !menuEl.offsetParent) return defaultState;\n\n  // we can't trust `scrollParent.scrollHeight` --> it may increase when\n  // the menu is rendered\n  var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n    scrollHeight = _scrollParent$getBoun.height;\n  var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n    menuBottom = _menuEl$getBoundingCl.bottom,\n    menuHeight = _menuEl$getBoundingCl.height,\n    menuTop = _menuEl$getBoundingCl.top;\n  var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n    containerTop = _menuEl$offsetParent$.top;\n  var viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent);\n  var scrollTop = getScrollTop(scrollParent);\n  var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n  var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n  var viewSpaceAbove = containerTop - marginTop;\n  var viewSpaceBelow = viewHeight - menuTop;\n  var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n  var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n  var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n  var scrollUp = scrollTop + menuTop - marginTop;\n  var scrollDuration = 160;\n  switch (preferredPlacement) {\n    case 'auto':\n    case 'bottom':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceBelow >= menuHeight) {\n        return {\n          placement: 'bottom',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 2: the menu will fit, if scrolled\n      if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n        return {\n          placement: 'bottom',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 3: the menu will fit, if constrained\n      if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n\n        // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n        var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n        return {\n          placement: 'bottom',\n          maxHeight: constrainedHeight\n        };\n      }\n\n      // 4. Forked beviour when there isn't enough space below\n\n      // AUTO: flip the menu, render above\n      if (preferredPlacement === 'auto' || isFixedPosition) {\n        // may need to be constrained after flipping\n        var _constrainedHeight = preferredMaxHeight;\n        var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n        if (spaceAbove >= minHeight) {\n          _constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight);\n        }\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight\n        };\n      }\n\n      // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n      if (preferredPlacement === 'bottom') {\n        if (shouldScroll) {\n          scrollTo(scrollParent, scrollDown);\n        }\n        return {\n          placement: 'bottom',\n          maxHeight: preferredMaxHeight\n        };\n      }\n      break;\n    case 'top':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceAbove >= menuHeight) {\n        return {\n          placement: 'top',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 2: the menu will fit, if scrolled\n      if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n        return {\n          placement: 'top',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 3: the menu will fit, if constrained\n      if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n        var _constrainedHeight2 = preferredMaxHeight;\n\n        // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n        if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n          _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n        }\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight2\n        };\n      }\n\n      // 4. not enough space, the browser WILL NOT increase scrollable area when\n      // absolutely positioned element rendered above the viewport (only below).\n      // Flip the menu, render below\n      return {\n        placement: 'bottom',\n        maxHeight: preferredMaxHeight\n      };\n    default:\n      throw new Error(\"Invalid placement provided \\\"\".concat(preferredPlacement, \"\\\".\"));\n  }\n  return defaultState;\n}\n\n// Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n  var placementToCSSProp = {\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement ? placementToCSSProp[placement] : 'bottom';\n}\nvar coercePlacement = function coercePlacement(p) {\n  return p === 'auto' ? 'bottom' : p;\n};\nvar menuCSS = function menuCSS(_ref2, unstyled) {\n  var _objectSpread2;\n  var placement = _ref2.placement,\n    _ref2$theme = _ref2.theme,\n    borderRadius = _ref2$theme.borderRadius,\n    spacing = _ref2$theme.spacing,\n    colors = _ref2$theme.colors;\n  return _objectSpread((_objectSpread2 = {\n    label: 'menu'\n  }, _defineProperty(_objectSpread2, alignToControl(placement), '100%'), _defineProperty(_objectSpread2, \"position\", 'absolute'), _defineProperty(_objectSpread2, \"width\", '100%'), _defineProperty(_objectSpread2, \"zIndex\", 1), _objectSpread2), unstyled ? {} : {\n    backgroundColor: colors.neutral0,\n    borderRadius: borderRadius,\n    boxShadow: '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)',\n    marginBottom: spacing.menuGutter,\n    marginTop: spacing.menuGutter\n  });\n};\nvar PortalPlacementContext = /*#__PURE__*/createContext(null);\n\n// NOTE: internal only\nvar MenuPlacer = function MenuPlacer(props) {\n  var children = props.children,\n    minMenuHeight = props.minMenuHeight,\n    maxMenuHeight = props.maxMenuHeight,\n    menuPlacement = props.menuPlacement,\n    menuPosition = props.menuPosition,\n    menuShouldScrollIntoView = props.menuShouldScrollIntoView,\n    theme = props.theme;\n  var _ref3 = useContext(PortalPlacementContext) || {},\n    setPortalPlacement = _ref3.setPortalPlacement;\n  var ref = useRef(null);\n  var _useState = useState(maxMenuHeight),\n    _useState2 = _slicedToArray(_useState, 2),\n    maxHeight = _useState2[0],\n    setMaxHeight = _useState2[1];\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    placement = _useState4[0],\n    setPlacement = _useState4[1];\n  var controlHeight = theme.spacing.controlHeight;\n  useLayoutEffect(function () {\n    var menuEl = ref.current;\n    if (!menuEl) return;\n\n    // DO NOT scroll if position is fixed\n    var isFixedPosition = menuPosition === 'fixed';\n    var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n    var state = getMenuPlacement({\n      maxHeight: maxMenuHeight,\n      menuEl: menuEl,\n      minHeight: minMenuHeight,\n      placement: menuPlacement,\n      shouldScroll: shouldScroll,\n      isFixedPosition: isFixedPosition,\n      controlHeight: controlHeight\n    });\n    setMaxHeight(state.maxHeight);\n    setPlacement(state.placement);\n    setPortalPlacement === null || setPortalPlacement === void 0 ? void 0 : setPortalPlacement(state.placement);\n  }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]);\n  return children({\n    ref: ref,\n    placerProps: _objectSpread(_objectSpread({}, props), {}, {\n      placement: placement || coercePlacement(menuPlacement),\n      maxHeight: maxHeight\n    })\n  });\n};\nvar Menu = function Menu(props) {\n  var children = props.children,\n    innerRef = props.innerRef,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'menu', {\n    menu: true\n  }), {\n    ref: innerRef\n  }, innerProps), children);\n};\nvar Menu$1 = Menu;\n\n// ==============================\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4, unstyled) {\n  var maxHeight = _ref4.maxHeight,\n    baseUnit = _ref4.theme.spacing.baseUnit;\n  return _objectSpread({\n    maxHeight: maxHeight,\n    overflowY: 'auto',\n    position: 'relative',\n    // required for offset[Height, Top] > keyboard scroll\n    WebkitOverflowScrolling: 'touch'\n  }, unstyled ? {} : {\n    paddingBottom: baseUnit,\n    paddingTop: baseUnit\n  });\n};\nvar MenuList = function MenuList(props) {\n  var children = props.children,\n    innerProps = props.innerProps,\n    innerRef = props.innerRef,\n    isMulti = props.isMulti;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'menuList', {\n    'menu-list': true,\n    'menu-list--is-multi': isMulti\n  }), {\n    ref: innerRef\n  }, innerProps), children);\n};\n\n// ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5, unstyled) {\n  var _ref5$theme = _ref5.theme,\n    baseUnit = _ref5$theme.spacing.baseUnit,\n    colors = _ref5$theme.colors;\n  return _objectSpread({\n    textAlign: 'center'\n  }, unstyled ? {} : {\n    color: colors.neutral40,\n    padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\")\n  });\n};\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(_ref6) {\n  var _ref6$children = _ref6.children,\n    children = _ref6$children === void 0 ? 'No options' : _ref6$children,\n    innerProps = _ref6.innerProps,\n    restProps = _objectWithoutProperties(_ref6, _excluded$3);\n  return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n    children: children,\n    innerProps: innerProps\n  }), 'noOptionsMessage', {\n    'menu-notice': true,\n    'menu-notice--no-options': true\n  }), innerProps), children);\n};\nvar LoadingMessage = function LoadingMessage(_ref7) {\n  var _ref7$children = _ref7.children,\n    children = _ref7$children === void 0 ? 'Loading...' : _ref7$children,\n    innerProps = _ref7.innerProps,\n    restProps = _objectWithoutProperties(_ref7, _excluded2$1);\n  return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n    children: children,\n    innerProps: innerProps\n  }), 'loadingMessage', {\n    'menu-notice': true,\n    'menu-notice--loading': true\n  }), innerProps), children);\n};\n\n// ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref8) {\n  var rect = _ref8.rect,\n    offset = _ref8.offset,\n    position = _ref8.position;\n  return {\n    left: rect.left,\n    position: position,\n    top: offset,\n    width: rect.width,\n    zIndex: 1\n  };\n};\nvar MenuPortal = function MenuPortal(props) {\n  var appendTo = props.appendTo,\n    children = props.children,\n    controlElement = props.controlElement,\n    innerProps = props.innerProps,\n    menuPlacement = props.menuPlacement,\n    menuPosition = props.menuPosition;\n  var menuPortalRef = useRef(null);\n  var cleanupRef = useRef(null);\n  var _useState5 = useState(coercePlacement(menuPlacement)),\n    _useState6 = _slicedToArray(_useState5, 2),\n    placement = _useState6[0],\n    setPortalPlacement = _useState6[1];\n  var portalPlacementContext = useMemo(function () {\n    return {\n      setPortalPlacement: setPortalPlacement\n    };\n  }, []);\n  var _useState7 = useState(null),\n    _useState8 = _slicedToArray(_useState7, 2),\n    computedPosition = _useState8[0],\n    setComputedPosition = _useState8[1];\n  var updateComputedPosition = useCallback(function () {\n    if (!controlElement) return;\n    var rect = getBoundingClientObj(controlElement);\n    var scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset;\n    var offset = rect[placement] + scrollDistance;\n    if (offset !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset) || rect.left !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left) || rect.width !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width)) {\n      setComputedPosition({\n        offset: offset,\n        rect: rect\n      });\n    }\n  }, [controlElement, menuPosition, placement, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width]);\n  useLayoutEffect(function () {\n    updateComputedPosition();\n  }, [updateComputedPosition]);\n  var runAutoUpdate = useCallback(function () {\n    if (typeof cleanupRef.current === 'function') {\n      cleanupRef.current();\n      cleanupRef.current = null;\n    }\n    if (controlElement && menuPortalRef.current) {\n      cleanupRef.current = autoUpdate(controlElement, menuPortalRef.current, updateComputedPosition, {\n        elementResize: 'ResizeObserver' in window\n      });\n    }\n  }, [controlElement, updateComputedPosition]);\n  useLayoutEffect(function () {\n    runAutoUpdate();\n  }, [runAutoUpdate]);\n  var setMenuPortalElement = useCallback(function (menuPortalElement) {\n    menuPortalRef.current = menuPortalElement;\n    runAutoUpdate();\n  }, [runAutoUpdate]);\n\n  // bail early if required elements aren't present\n  if (!appendTo && menuPosition !== 'fixed' || !computedPosition) return null;\n\n  // same wrapper element whether fixed or portalled\n  var menuWrapper = jsx(\"div\", _extends({\n    ref: setMenuPortalElement\n  }, getStyleProps(_objectSpread(_objectSpread({}, props), {}, {\n    offset: computedPosition.offset,\n    position: menuPosition,\n    rect: computedPosition.rect\n  }), 'menuPortal', {\n    'menu-portal': true\n  }), innerProps), children);\n  return jsx(PortalPlacementContext.Provider, {\n    value: portalPlacementContext\n  }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);\n};\n\n// ==============================\n// Root Container\n// ==============================\n\nvar containerCSS = function containerCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n    isRtl = _ref.isRtl;\n  return {\n    label: 'container',\n    direction: isRtl ? 'rtl' : undefined,\n    pointerEvents: isDisabled ? 'none' : undefined,\n    // cancel mouse events when disabled\n    position: 'relative'\n  };\n};\nvar SelectContainer = function SelectContainer(props) {\n  var children = props.children,\n    innerProps = props.innerProps,\n    isDisabled = props.isDisabled,\n    isRtl = props.isRtl;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'container', {\n    '--is-disabled': isDisabled,\n    '--is-rtl': isRtl\n  }), innerProps), children);\n};\n\n// ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2, unstyled) {\n  var spacing = _ref2.theme.spacing,\n    isMulti = _ref2.isMulti,\n    hasValue = _ref2.hasValue,\n    controlShouldRenderValue = _ref2.selectProps.controlShouldRenderValue;\n  return _objectSpread({\n    alignItems: 'center',\n    display: isMulti && hasValue && controlShouldRenderValue ? 'flex' : 'grid',\n    flex: 1,\n    flexWrap: 'wrap',\n    WebkitOverflowScrolling: 'touch',\n    position: 'relative',\n    overflow: 'hidden'\n  }, unstyled ? {} : {\n    padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\")\n  });\n};\nvar ValueContainer = function ValueContainer(props) {\n  var children = props.children,\n    innerProps = props.innerProps,\n    isMulti = props.isMulti,\n    hasValue = props.hasValue;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'valueContainer', {\n    'value-container': true,\n    'value-container--is-multi': isMulti,\n    'value-container--has-value': hasValue\n  }), innerProps), children);\n};\n\n// ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n  return {\n    alignItems: 'center',\n    alignSelf: 'stretch',\n    display: 'flex',\n    flexShrink: 0\n  };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'indicatorsContainer', {\n    indicators: true\n  }), innerProps), children);\n};\n\nvar _templateObject;\nvar _excluded$2 = [\"size\"],\n  _excluded2 = [\"innerProps\", \"isRtl\", \"size\"];\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"8mmkcg\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0\"\n} : {\n  name: \"tj5bde-Svg\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgSlNYLCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHtcbiAgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWUsXG4gIENTU09iamVjdFdpdGhMYWJlbCxcbiAgR3JvdXBCYXNlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRTdHlsZVByb3BzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBTdmcgPSAoe1xuICBzaXplLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IHR5cGUgQ3Jvc3NJY29uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBDcm9zc0ljb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNMTQuMzQ4IDE0Ljg0OWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMGwtMi42NTEtMy4wMzAtMi42NTEgMy4wMjljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDAtMC40NjktMC40NjktMC40NjktMS4yMjkgMC0xLjY5N2wyLjc1OC0zLjE1LTIuNzU5LTMuMTUyYy0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOCAwLTEuNjk3czEuMjI4LTAuNDY5IDEuNjk3IDBsMi42NTIgMy4wMzEgMi42NTEtMy4wMzFjMC40NjktMC40NjkgMS4yMjgtMC40NjkgMS42OTcgMHMwLjQ2OSAxLjIyOSAwIDEuNjk3bC0yLjc1OCAzLjE1MiAyLjc1OCAzLjE1YzAuNDY5IDAuNDY5IDAuNDY5IDEuMjI5IDAgMS42OTh6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuZXhwb3J0IHR5cGUgRG93bkNoZXZyb25Qcm9wcyA9IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU/OiBudW1iZXIgfTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogRG93bkNoZXZyb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snZGl2J107XG4gIC8qKiBUaGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgc2VsZWN0LiAqL1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IGJhc2VDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgdGhlbWU6IHtcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICAgIGNvbG9ycyxcbiAgICB9LFxuICB9OlxuICAgIHwgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuICAgIHwgQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgLi4uKHVuc3R5bGVkXG4gICAgPyB7fVxuICAgIDoge1xuICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnZHJvcGRvd25JbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENsZWFySW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnY2xlYXJJbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGljYXRvclNlcGFyYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpbm5lclByb3BzPzogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ107XG59XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0Rpc2FibGVkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgd2lkdGg6IDEsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICAgICAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgICAgIH0pLFxufSk7XG5cbmV4cG9ydCBjb25zdCBJbmRpY2F0b3JTZXBhcmF0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHByb3BzOiBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgey4uLmdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgICAgICdpbmRpY2F0b3Itc2VwYXJhdG9yJzogdHJ1ZSxcbiAgICAgIH0pfVxuICAgIC8+XG4gICk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBsb2FkaW5nRG90QW5pbWF0aW9ucyA9IGtleWZyYW1lc2BcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cbiAgNDAlIHsgb3BhY2l0eTogMTsgfVxuYDtcblxuZXhwb3J0IGNvbnN0IGxvYWRpbmdJbmRpY2F0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgc2l6ZSxcbiAgICB0aGVtZToge1xuICAgICAgY29sb3JzLFxuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIH0sXG4gIH06IExvYWRpbmdJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIGFsaWduU2VsZjogJ2NlbnRlcicsXG4gIGZvbnRTaXplOiBzaXplLFxuICBsaW5lSGVpZ2h0OiAxLFxuICBtYXJnaW5SaWdodDogc2l6ZSxcbiAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5pbnRlcmZhY2UgTG9hZGluZ0RvdFByb3BzIHtcbiAgZGVsYXk6IG51bWJlcjtcbiAgb2Zmc2V0OiBib29sZWFuO1xufVxuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogTG9hZGluZ0RvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ0luZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgc2l6ZTogbnVtYmVyO1xufVxuZXhwb3J0IGNvbnN0IExvYWRpbmdJbmRpY2F0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oe1xuICBpbm5lclByb3BzLFxuICBpc1J0bCxcbiAgc2l6ZSA9IDQsXG4gIC4uLnJlc3RQcm9wc1xufTogTG9hZGluZ0luZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgey4uLmdldFN0eWxlUHJvcHMoXG4gICAgICAgIHsgLi4ucmVzdFByb3BzLCBpbm5lclByb3BzLCBpc1J0bCwgc2l6ZSB9LFxuICAgICAgICAnbG9hZGluZ0luZGljYXRvcicsXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\nvar Svg = function Svg(_ref) {\n  var size = _ref.size,\n    props = _objectWithoutProperties(_ref, _excluded$2);\n  return jsx(\"svg\", _extends({\n    height: size,\n    width: size,\n    viewBox: \"0 0 20 20\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    css: _ref2\n  }, props));\n};\nvar CrossIcon = function CrossIcon(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n  }));\n};\nvar DownChevron = function DownChevron(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n  }));\n};\n\n// ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3, unstyled) {\n  var isFocused = _ref3.isFocused,\n    _ref3$theme = _ref3.theme,\n    baseUnit = _ref3$theme.spacing.baseUnit,\n    colors = _ref3$theme.colors;\n  return _objectSpread({\n    label: 'indicatorContainer',\n    display: 'flex',\n    transition: 'color 150ms'\n  }, unstyled ? {} : {\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    padding: baseUnit * 2,\n    ':hover': {\n      color: isFocused ? colors.neutral80 : colors.neutral40\n    }\n  });\n};\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'dropdownIndicator', {\n    indicator: true,\n    'dropdown-indicator': true\n  }), innerProps), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'clearIndicator', {\n    indicator: true,\n    'clear-indicator': true\n  }), innerProps), children || jsx(CrossIcon, null));\n};\n\n// ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4, unstyled) {\n  var isDisabled = _ref4.isDisabled,\n    _ref4$theme = _ref4.theme,\n    baseUnit = _ref4$theme.spacing.baseUnit,\n    colors = _ref4$theme.colors;\n  return _objectSpread({\n    label: 'indicatorSeparator',\n    alignSelf: 'stretch',\n    width: 1\n  }, unstyled ? {} : {\n    backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n    marginBottom: baseUnit * 2,\n    marginTop: baseUnit * 2\n  });\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n  var innerProps = props.innerProps;\n  return jsx(\"span\", _extends({}, innerProps, getStyleProps(props, 'indicatorSeparator', {\n    'indicator-separator': true\n  })));\n};\n\n// ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n  0%, 80%, 100% { opacity: 0; }\\n  40% { opacity: 1; }\\n\"])));\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5, unstyled) {\n  var isFocused = _ref5.isFocused,\n    size = _ref5.size,\n    _ref5$theme = _ref5.theme,\n    colors = _ref5$theme.colors,\n    baseUnit = _ref5$theme.spacing.baseUnit;\n  return _objectSpread({\n    label: 'loadingIndicator',\n    display: 'flex',\n    transition: 'color 150ms',\n    alignSelf: 'center',\n    fontSize: size,\n    lineHeight: 1,\n    marginRight: size,\n    textAlign: 'center',\n    verticalAlign: 'middle'\n  }, unstyled ? {} : {\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    padding: baseUnit * 2\n  });\n};\nvar LoadingDot = function LoadingDot(_ref6) {\n  var delay = _ref6.delay,\n    offset = _ref6.offset;\n  return jsx(\"span\", {\n    css: /*#__PURE__*/css$2({\n      animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n      backgroundColor: 'currentColor',\n      borderRadius: '1em',\n      display: 'inline-block',\n      marginLeft: offset ? '1em' : undefined,\n      height: '1em',\n      verticalAlign: 'top',\n      width: '1em'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:LoadingDot;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1RSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgSlNYLCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHtcbiAgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWUsXG4gIENTU09iamVjdFdpdGhMYWJlbCxcbiAgR3JvdXBCYXNlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRTdHlsZVByb3BzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBTdmcgPSAoe1xuICBzaXplLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IHR5cGUgQ3Jvc3NJY29uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBDcm9zc0ljb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNMTQuMzQ4IDE0Ljg0OWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMGwtMi42NTEtMy4wMzAtMi42NTEgMy4wMjljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDAtMC40NjktMC40NjktMC40NjktMS4yMjkgMC0xLjY5N2wyLjc1OC0zLjE1LTIuNzU5LTMuMTUyYy0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOCAwLTEuNjk3czEuMjI4LTAuNDY5IDEuNjk3IDBsMi42NTIgMy4wMzEgMi42NTEtMy4wMzFjMC40NjktMC40NjkgMS4yMjgtMC40NjkgMS42OTcgMHMwLjQ2OSAxLjIyOSAwIDEuNjk3bC0yLjc1OCAzLjE1MiAyLjc1OCAzLjE1YzAuNDY5IDAuNDY5IDAuNDY5IDEuMjI5IDAgMS42OTh6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuZXhwb3J0IHR5cGUgRG93bkNoZXZyb25Qcm9wcyA9IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU/OiBudW1iZXIgfTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogRG93bkNoZXZyb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snZGl2J107XG4gIC8qKiBUaGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgc2VsZWN0LiAqL1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IGJhc2VDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgdGhlbWU6IHtcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICAgIGNvbG9ycyxcbiAgICB9LFxuICB9OlxuICAgIHwgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuICAgIHwgQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgLi4uKHVuc3R5bGVkXG4gICAgPyB7fVxuICAgIDoge1xuICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnZHJvcGRvd25JbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENsZWFySW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnY2xlYXJJbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGljYXRvclNlcGFyYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpbm5lclByb3BzPzogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ107XG59XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0Rpc2FibGVkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgd2lkdGg6IDEsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICAgICAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgICAgIH0pLFxufSk7XG5cbmV4cG9ydCBjb25zdCBJbmRpY2F0b3JTZXBhcmF0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHByb3BzOiBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgey4uLmdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgICAgICdpbmRpY2F0b3Itc2VwYXJhdG9yJzogdHJ1ZSxcbiAgICAgIH0pfVxuICAgIC8+XG4gICk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBsb2FkaW5nRG90QW5pbWF0aW9ucyA9IGtleWZyYW1lc2BcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cbiAgNDAlIHsgb3BhY2l0eTogMTsgfVxuYDtcblxuZXhwb3J0IGNvbnN0IGxvYWRpbmdJbmRpY2F0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgc2l6ZSxcbiAgICB0aGVtZToge1xuICAgICAgY29sb3JzLFxuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIH0sXG4gIH06IExvYWRpbmdJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIGFsaWduU2VsZjogJ2NlbnRlcicsXG4gIGZvbnRTaXplOiBzaXplLFxuICBsaW5lSGVpZ2h0OiAxLFxuICBtYXJnaW5SaWdodDogc2l6ZSxcbiAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5pbnRlcmZhY2UgTG9hZGluZ0RvdFByb3BzIHtcbiAgZGVsYXk6IG51bWJlcjtcbiAgb2Zmc2V0OiBib29sZWFuO1xufVxuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogTG9hZGluZ0RvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ0luZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgc2l6ZTogbnVtYmVyO1xufVxuZXhwb3J0IGNvbnN0IExvYWRpbmdJbmRpY2F0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oe1xuICBpbm5lclByb3BzLFxuICBpc1J0bCxcbiAgc2l6ZSA9IDQsXG4gIC4uLnJlc3RQcm9wc1xufTogTG9hZGluZ0luZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgey4uLmdldFN0eWxlUHJvcHMoXG4gICAgICAgIHsgLi4ucmVzdFByb3BzLCBpbm5lclByb3BzLCBpc1J0bCwgc2l6ZSB9LFxuICAgICAgICAnbG9hZGluZ0luZGljYXRvcicsXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXX0= */\")\n  });\n};\nvar LoadingIndicator = function LoadingIndicator(_ref7) {\n  var innerProps = _ref7.innerProps,\n    isRtl = _ref7.isRtl,\n    _ref7$size = _ref7.size,\n    size = _ref7$size === void 0 ? 4 : _ref7$size,\n    restProps = _objectWithoutProperties(_ref7, _excluded2);\n  return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n    innerProps: innerProps,\n    isRtl: isRtl,\n    size: size\n  }), 'loadingIndicator', {\n    indicator: true,\n    'loading-indicator': true\n  }), innerProps), jsx(LoadingDot, {\n    delay: 0,\n    offset: isRtl\n  }), jsx(LoadingDot, {\n    delay: 160,\n    offset: true\n  }), jsx(LoadingDot, {\n    delay: 320,\n    offset: !isRtl\n  }));\n};\n\nvar css$1 = function css(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    isFocused = _ref.isFocused,\n    _ref$theme = _ref.theme,\n    colors = _ref$theme.colors,\n    borderRadius = _ref$theme.borderRadius,\n    spacing = _ref$theme.spacing;\n  return _objectSpread({\n    label: 'control',\n    alignItems: 'center',\n    cursor: 'default',\n    display: 'flex',\n    flexWrap: 'wrap',\n    justifyContent: 'space-between',\n    minHeight: spacing.controlHeight,\n    outline: '0 !important',\n    position: 'relative',\n    transition: 'all 100ms'\n  }, unstyled ? {} : {\n    backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n    borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n    borderRadius: borderRadius,\n    borderStyle: 'solid',\n    borderWidth: 1,\n    boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : undefined,\n    '&:hover': {\n      borderColor: isFocused ? colors.primary : colors.neutral30\n    }\n  });\n};\nvar Control = function Control(props) {\n  var children = props.children,\n    isDisabled = props.isDisabled,\n    isFocused = props.isFocused,\n    innerRef = props.innerRef,\n    innerProps = props.innerProps,\n    menuIsOpen = props.menuIsOpen;\n  return jsx(\"div\", _extends({\n    ref: innerRef\n  }, getStyleProps(props, 'control', {\n    control: true,\n    'control--is-disabled': isDisabled,\n    'control--is-focused': isFocused,\n    'control--menu-is-open': menuIsOpen\n  }), innerProps, {\n    \"aria-disabled\": isDisabled || undefined\n  }), children);\n};\nvar Control$1 = Control;\n\nvar _excluded$1 = [\"data\"];\nvar groupCSS = function groupCSS(_ref, unstyled) {\n  var spacing = _ref.theme.spacing;\n  return unstyled ? {} : {\n    paddingBottom: spacing.baseUnit * 2,\n    paddingTop: spacing.baseUnit * 2\n  };\n};\nvar Group = function Group(props) {\n  var children = props.children,\n    cx = props.cx,\n    getStyles = props.getStyles,\n    getClassNames = props.getClassNames,\n    Heading = props.Heading,\n    headingProps = props.headingProps,\n    innerProps = props.innerProps,\n    label = props.label,\n    theme = props.theme,\n    selectProps = props.selectProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'group', {\n    group: true\n  }), innerProps), jsx(Heading, _extends({}, headingProps, {\n    selectProps: selectProps,\n    theme: theme,\n    getStyles: getStyles,\n    getClassNames: getClassNames,\n    cx: cx\n  }), label), jsx(\"div\", null, children));\n};\nvar groupHeadingCSS = function groupHeadingCSS(_ref2, unstyled) {\n  var _ref2$theme = _ref2.theme,\n    colors = _ref2$theme.colors,\n    spacing = _ref2$theme.spacing;\n  return _objectSpread({\n    label: 'group',\n    cursor: 'default',\n    display: 'block'\n  }, unstyled ? {} : {\n    color: colors.neutral40,\n    fontSize: '75%',\n    fontWeight: 500,\n    marginBottom: '0.25em',\n    paddingLeft: spacing.baseUnit * 3,\n    paddingRight: spacing.baseUnit * 3,\n    textTransform: 'uppercase'\n  });\n};\nvar GroupHeading = function GroupHeading(props) {\n  var _cleanCommonProps = cleanCommonProps(props);\n    _cleanCommonProps.data;\n    var innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded$1);\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'groupHeading', {\n    'group-heading': true\n  }), innerProps));\n};\nvar Group$1 = Group;\n\nvar _excluded = [\"innerRef\", \"isDisabled\", \"isHidden\", \"inputClassName\"];\nvar inputCSS = function inputCSS(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    value = _ref.value,\n    _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread(_objectSpread({\n    visibility: isDisabled ? 'hidden' : 'visible',\n    // force css to recompute when value change due to @emotion bug.\n    // We can remove it whenever the bug is fixed.\n    transform: value ? 'translateZ(0)' : ''\n  }, containerStyle), unstyled ? {} : {\n    margin: spacing.baseUnit / 2,\n    paddingBottom: spacing.baseUnit / 2,\n    paddingTop: spacing.baseUnit / 2,\n    color: colors.neutral80\n  });\n};\nvar spacingStyle = {\n  gridArea: '1 / 2',\n  font: 'inherit',\n  minWidth: '2px',\n  border: 0,\n  margin: 0,\n  outline: 0,\n  padding: 0\n};\nvar containerStyle = {\n  flex: '1 1 auto',\n  display: 'inline-grid',\n  gridArea: '1 / 1 / 2 / 3',\n  gridTemplateColumns: '0 min-content',\n  '&:after': _objectSpread({\n    content: 'attr(data-value) \" \"',\n    visibility: 'hidden',\n    whiteSpace: 'pre'\n  }, spacingStyle)\n};\nvar inputStyle = function inputStyle(isHidden) {\n  return _objectSpread({\n    label: 'input',\n    color: 'inherit',\n    background: 0,\n    opacity: isHidden ? 0 : 1,\n    width: '100%'\n  }, spacingStyle);\n};\nvar Input = function Input(props) {\n  var cx = props.cx,\n    value = props.value;\n  var _cleanCommonProps = cleanCommonProps(props),\n    innerRef = _cleanCommonProps.innerRef,\n    isDisabled = _cleanCommonProps.isDisabled,\n    isHidden = _cleanCommonProps.isHidden,\n    inputClassName = _cleanCommonProps.inputClassName,\n    innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded);\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'input', {\n    'input-container': true\n  }), {\n    \"data-value\": value || ''\n  }), jsx(\"input\", _extends({\n    className: cx({\n      input: true\n    }, inputClassName),\n    ref: innerRef,\n    style: inputStyle(isHidden),\n    disabled: isDisabled\n  }, innerProps)));\n};\nvar Input$1 = Input;\n\nvar multiValueCSS = function multiValueCSS(_ref, unstyled) {\n  var _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    borderRadius = _ref$theme.borderRadius,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'multiValue',\n    display: 'flex',\n    minWidth: 0\n  }, unstyled ? {} : {\n    backgroundColor: colors.neutral10,\n    borderRadius: borderRadius / 2,\n    margin: spacing.baseUnit / 2\n  });\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2, unstyled) {\n  var _ref2$theme = _ref2.theme,\n    borderRadius = _ref2$theme.borderRadius,\n    colors = _ref2$theme.colors,\n    cropWithEllipsis = _ref2.cropWithEllipsis;\n  return _objectSpread({\n    overflow: 'hidden',\n    textOverflow: cropWithEllipsis || cropWithEllipsis === undefined ? 'ellipsis' : undefined,\n    whiteSpace: 'nowrap'\n  }, unstyled ? {} : {\n    borderRadius: borderRadius / 2,\n    color: colors.neutral80,\n    fontSize: '85%',\n    padding: 3,\n    paddingLeft: 6\n  });\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3, unstyled) {\n  var _ref3$theme = _ref3.theme,\n    spacing = _ref3$theme.spacing,\n    borderRadius = _ref3$theme.borderRadius,\n    colors = _ref3$theme.colors,\n    isFocused = _ref3.isFocused;\n  return _objectSpread({\n    alignItems: 'center',\n    display: 'flex'\n  }, unstyled ? {} : {\n    borderRadius: borderRadius / 2,\n    backgroundColor: isFocused ? colors.dangerLight : undefined,\n    paddingLeft: spacing.baseUnit,\n    paddingRight: spacing.baseUnit,\n    ':hover': {\n      backgroundColor: colors.dangerLight,\n      color: colors.danger\n    }\n  });\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n  var children = _ref4.children,\n    innerProps = _ref4.innerProps;\n  return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nfunction MultiValueRemove(_ref5) {\n  var children = _ref5.children,\n    innerProps = _ref5.innerProps;\n  return jsx(\"div\", _extends({\n    role: \"button\"\n  }, innerProps), children || jsx(CrossIcon, {\n    size: 14\n  }));\n}\nvar MultiValue = function MultiValue(props) {\n  var children = props.children,\n    components = props.components,\n    data = props.data,\n    innerProps = props.innerProps,\n    isDisabled = props.isDisabled,\n    removeProps = props.removeProps,\n    selectProps = props.selectProps;\n  var Container = components.Container,\n    Label = components.Label,\n    Remove = components.Remove;\n  return jsx(Container, {\n    data: data,\n    innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, 'multiValue', {\n      'multi-value': true,\n      'multi-value--is-disabled': isDisabled\n    })), innerProps),\n    selectProps: selectProps\n  }, jsx(Label, {\n    data: data,\n    innerProps: _objectSpread({}, getStyleProps(props, 'multiValueLabel', {\n      'multi-value__label': true\n    })),\n    selectProps: selectProps\n  }, children), jsx(Remove, {\n    data: data,\n    innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, 'multiValueRemove', {\n      'multi-value__remove': true\n    })), {}, {\n      'aria-label': \"Remove \".concat(children || 'option')\n    }, removeProps),\n    selectProps: selectProps\n  }));\n};\nvar MultiValue$1 = MultiValue;\n\nvar optionCSS = function optionCSS(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    isFocused = _ref.isFocused,\n    isSelected = _ref.isSelected,\n    _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'option',\n    cursor: 'default',\n    display: 'block',\n    fontSize: 'inherit',\n    width: '100%',\n    userSelect: 'none',\n    WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)'\n  }, unstyled ? {} : {\n    backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n    color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n    padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n    // provide some affordance on touch devices\n    ':active': {\n      backgroundColor: !isDisabled ? isSelected ? colors.primary : colors.primary50 : undefined\n    }\n  });\n};\nvar Option = function Option(props) {\n  var children = props.children,\n    isDisabled = props.isDisabled,\n    isFocused = props.isFocused,\n    isSelected = props.isSelected,\n    innerRef = props.innerRef,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'option', {\n    option: true,\n    'option--is-disabled': isDisabled,\n    'option--is-focused': isFocused,\n    'option--is-selected': isSelected\n  }), {\n    ref: innerRef,\n    \"aria-disabled\": isDisabled\n  }, innerProps), children);\n};\nvar Option$1 = Option;\n\nvar placeholderCSS = function placeholderCSS(_ref, unstyled) {\n  var _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'placeholder',\n    gridArea: '1 / 1 / 2 / 3'\n  }, unstyled ? {} : {\n    color: colors.neutral50,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2\n  });\n};\nvar Placeholder = function Placeholder(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'placeholder', {\n    placeholder: true\n  }), innerProps), children);\n};\nvar Placeholder$1 = Placeholder;\n\nvar css = function css(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'singleValue',\n    gridArea: '1 / 1 / 2 / 3',\n    maxWidth: '100%',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap'\n  }, unstyled ? {} : {\n    color: isDisabled ? colors.neutral40 : colors.neutral80,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2\n  });\n};\nvar SingleValue = function SingleValue(props) {\n  var children = props.children,\n    isDisabled = props.isDisabled,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'singleValue', {\n    'single-value': true,\n    'single-value--is-disabled': isDisabled\n  }), innerProps), children);\n};\nvar SingleValue$1 = SingleValue;\n\nvar components = {\n  ClearIndicator: ClearIndicator,\n  Control: Control$1,\n  DropdownIndicator: DropdownIndicator,\n  DownChevron: DownChevron,\n  CrossIcon: CrossIcon,\n  Group: Group$1,\n  GroupHeading: GroupHeading,\n  IndicatorsContainer: IndicatorsContainer,\n  IndicatorSeparator: IndicatorSeparator,\n  Input: Input$1,\n  LoadingIndicator: LoadingIndicator,\n  Menu: Menu$1,\n  MenuList: MenuList,\n  MenuPortal: MenuPortal,\n  LoadingMessage: LoadingMessage,\n  NoOptionsMessage: NoOptionsMessage,\n  MultiValue: MultiValue$1,\n  MultiValueContainer: MultiValueContainer,\n  MultiValueLabel: MultiValueLabel,\n  MultiValueRemove: MultiValueRemove,\n  Option: Option$1,\n  Placeholder: Placeholder$1,\n  SelectContainer: SelectContainer,\n  SingleValue: SingleValue$1,\n  ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n  return _objectSpread(_objectSpread({}, components), props.components);\n};\n\nexport { isMobileDevice as A, multiValueAsValue as B, singleValueAsValue as C, valueTernary as D, classNames as E, defaultComponents as F, isDocumentElement as G, cleanValue as H, scrollIntoView as I, noop as J, notNullish as K, handleInputChange as L, MenuPlacer as M, clearIndicatorCSS as a, containerCSS as b, components as c, css$1 as d, dropdownIndicatorCSS as e, groupHeadingCSS as f, groupCSS as g, indicatorSeparatorCSS as h, indicatorsContainerCSS as i, inputCSS as j, loadingMessageCSS as k, loadingIndicatorCSS as l, menuCSS as m, menuListCSS as n, menuPortalCSS as o, multiValueCSS as p, multiValueLabelCSS as q, removeProps as r, supportsPassiveEvents as s, multiValueRemoveCSS as t, noOptionsMessageCSS as u, optionCSS as v, placeholderCSS as w, css as x, valueContainerCSS as y, isTouchCapable as z };\n","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var cache = null;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n            return cache.lastResult;\n        }\n        var lastResult = resultFn.apply(this, newArgs);\n        cache = {\n            lastResult: lastResult,\n            lastArgs: newArgs,\n            lastThis: this,\n        };\n        return lastResult;\n    }\n    memoized.clear = function clear() {\n        cache = null;\n    };\n    return memoized;\n}\n\nexport { memoizeOne as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _createSuper from '@babel/runtime/helpers/esm/createSuper';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport * as React from 'react';\nimport { useMemo, Fragment, useRef, useCallback, useEffect, Component } from 'react';\nimport { r as removeProps, s as supportsPassiveEvents, a as clearIndicatorCSS, b as containerCSS, d as css$1, e as dropdownIndicatorCSS, g as groupCSS, f as groupHeadingCSS, i as indicatorsContainerCSS, h as indicatorSeparatorCSS, j as inputCSS, l as loadingIndicatorCSS, k as loadingMessageCSS, m as menuCSS, n as menuListCSS, o as menuPortalCSS, p as multiValueCSS, q as multiValueLabelCSS, t as multiValueRemoveCSS, u as noOptionsMessageCSS, v as optionCSS, w as placeholderCSS, x as css$2, y as valueContainerCSS, z as isTouchCapable, A as isMobileDevice, B as multiValueAsValue, C as singleValueAsValue, D as valueTernary, E as classNames, F as defaultComponents, G as isDocumentElement, H as cleanValue, I as scrollIntoView, J as noop, M as MenuPlacer, K as notNullish } from './index-641ee5b8.esm.js';\nimport { jsx, css } from '@emotion/react';\nimport memoizeOne from 'memoize-one';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\n// Assistive text to describe visual elements. Hidden for sighted users.\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n  name: \"7pg0cj-a11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap\"\n} : {\n  name: \"1f43avz-a11yText-A11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPSSIsImZpbGUiOiJBMTF5VGV4dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IEpTWCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuLy8gQXNzaXN0aXZlIHRleHQgdG8gZGVzY3JpYmUgdmlzdWFsIGVsZW1lbnRzLiBIaWRkZW4gZm9yIHNpZ2h0ZWQgdXNlcnMuXG5jb25zdCBBMTF5VGV4dCA9IChwcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ10pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2\n};\nvar A11yText = function A11yText(props) {\n  return jsx(\"span\", _extends({\n    css: _ref\n  }, props));\n};\nvar A11yText$1 = A11yText;\n\nvar defaultAriaLiveMessages = {\n  guidance: function guidance(props) {\n    var isSearchable = props.isSearchable,\n      isMulti = props.isMulti,\n      tabSelectsValue = props.tabSelectsValue,\n      context = props.context,\n      isInitialFocus = props.isInitialFocus;\n    switch (context) {\n      case 'menu':\n        return \"Use Up and Down to choose options, press Enter to select the currently focused option, press Escape to exit the menu\".concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', \".\");\n      case 'input':\n        return isInitialFocus ? \"\".concat(props['aria-label'] || 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '') : '';\n      case 'value':\n        return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n      default:\n        return '';\n    }\n  },\n  onChange: function onChange(props) {\n    var action = props.action,\n      _props$label = props.label,\n      label = _props$label === void 0 ? '' : _props$label,\n      labels = props.labels,\n      isDisabled = props.isDisabled;\n    switch (action) {\n      case 'deselect-option':\n      case 'pop-value':\n      case 'remove-value':\n        return \"option \".concat(label, \", deselected.\");\n      case 'clear':\n        return 'All selected options have been cleared.';\n      case 'initial-input-focus':\n        return \"option\".concat(labels.length > 1 ? 's' : '', \" \").concat(labels.join(','), \", selected.\");\n      case 'select-option':\n        return isDisabled ? \"option \".concat(label, \" is disabled. Select another option.\") : \"option \".concat(label, \", selected.\");\n      default:\n        return '';\n    }\n  },\n  onFocus: function onFocus(props) {\n    var context = props.context,\n      focused = props.focused,\n      options = props.options,\n      _props$label2 = props.label,\n      label = _props$label2 === void 0 ? '' : _props$label2,\n      selectValue = props.selectValue,\n      isDisabled = props.isDisabled,\n      isSelected = props.isSelected,\n      isAppleDevice = props.isAppleDevice;\n    var getArrayIndex = function getArrayIndex(arr, item) {\n      return arr && arr.length ? \"\".concat(arr.indexOf(item) + 1, \" of \").concat(arr.length) : '';\n    };\n    if (context === 'value' && selectValue) {\n      return \"value \".concat(label, \" focused, \").concat(getArrayIndex(selectValue, focused), \".\");\n    }\n    if (context === 'menu' && isAppleDevice) {\n      var disabled = isDisabled ? ' disabled' : '';\n      var status = \"\".concat(isSelected ? ' selected' : '').concat(disabled);\n      return \"\".concat(label).concat(status, \", \").concat(getArrayIndex(options, focused), \".\");\n    }\n    return '';\n  },\n  onFilter: function onFilter(props) {\n    var inputValue = props.inputValue,\n      resultsMessage = props.resultsMessage;\n    return \"\".concat(resultsMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n  }\n};\n\nvar LiveRegion = function LiveRegion(props) {\n  var ariaSelection = props.ariaSelection,\n    focusedOption = props.focusedOption,\n    focusedValue = props.focusedValue,\n    focusableOptions = props.focusableOptions,\n    isFocused = props.isFocused,\n    selectValue = props.selectValue,\n    selectProps = props.selectProps,\n    id = props.id,\n    isAppleDevice = props.isAppleDevice;\n  var ariaLiveMessages = selectProps.ariaLiveMessages,\n    getOptionLabel = selectProps.getOptionLabel,\n    inputValue = selectProps.inputValue,\n    isMulti = selectProps.isMulti,\n    isOptionDisabled = selectProps.isOptionDisabled,\n    isSearchable = selectProps.isSearchable,\n    menuIsOpen = selectProps.menuIsOpen,\n    options = selectProps.options,\n    screenReaderStatus = selectProps.screenReaderStatus,\n    tabSelectsValue = selectProps.tabSelectsValue,\n    isLoading = selectProps.isLoading;\n  var ariaLabel = selectProps['aria-label'];\n  var ariaLive = selectProps['aria-live'];\n\n  // Update aria live message configuration when prop changes\n  var messages = useMemo(function () {\n    return _objectSpread(_objectSpread({}, defaultAriaLiveMessages), ariaLiveMessages || {});\n  }, [ariaLiveMessages]);\n\n  // Update aria live selected option when prop changes\n  var ariaSelected = useMemo(function () {\n    var message = '';\n    if (ariaSelection && messages.onChange) {\n      var option = ariaSelection.option,\n        selectedOptions = ariaSelection.options,\n        removedValue = ariaSelection.removedValue,\n        removedValues = ariaSelection.removedValues,\n        value = ariaSelection.value;\n      // select-option when !isMulti does not return option so we assume selected option is value\n      var asOption = function asOption(val) {\n        return !Array.isArray(val) ? val : null;\n      };\n\n      // If there is just one item from the action then get its label\n      var selected = removedValue || option || asOption(value);\n      var label = selected ? getOptionLabel(selected) : '';\n\n      // If there are multiple items from the action then return an array of labels\n      var multiSelected = selectedOptions || removedValues || undefined;\n      var labels = multiSelected ? multiSelected.map(getOptionLabel) : [];\n      var onChangeProps = _objectSpread({\n        // multiSelected items are usually items that have already been selected\n        // or set by the user as a default value so we assume they are not disabled\n        isDisabled: selected && isOptionDisabled(selected, selectValue),\n        label: label,\n        labels: labels\n      }, ariaSelection);\n      message = messages.onChange(onChangeProps);\n    }\n    return message;\n  }, [ariaSelection, messages, isOptionDisabled, selectValue, getOptionLabel]);\n  var ariaFocused = useMemo(function () {\n    var focusMsg = '';\n    var focused = focusedOption || focusedValue;\n    var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption));\n    if (focused && messages.onFocus) {\n      var onFocusProps = {\n        focused: focused,\n        label: getOptionLabel(focused),\n        isDisabled: isOptionDisabled(focused, selectValue),\n        isSelected: isSelected,\n        options: focusableOptions,\n        context: focused === focusedOption ? 'menu' : 'value',\n        selectValue: selectValue,\n        isAppleDevice: isAppleDevice\n      };\n      focusMsg = messages.onFocus(onFocusProps);\n    }\n    return focusMsg;\n  }, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, focusableOptions, selectValue, isAppleDevice]);\n  var ariaResults = useMemo(function () {\n    var resultsMsg = '';\n    if (menuIsOpen && options.length && !isLoading && messages.onFilter) {\n      var resultsMessage = screenReaderStatus({\n        count: focusableOptions.length\n      });\n      resultsMsg = messages.onFilter({\n        inputValue: inputValue,\n        resultsMessage: resultsMessage\n      });\n    }\n    return resultsMsg;\n  }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus, isLoading]);\n  var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus';\n  var ariaGuidance = useMemo(function () {\n    var guidanceMsg = '';\n    if (messages.guidance) {\n      var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input';\n      guidanceMsg = messages.guidance({\n        'aria-label': ariaLabel,\n        context: context,\n        isDisabled: focusedOption && isOptionDisabled(focusedOption, selectValue),\n        isMulti: isMulti,\n        isSearchable: isSearchable,\n        tabSelectsValue: tabSelectsValue,\n        isInitialFocus: isInitialFocus\n      });\n    }\n    return guidanceMsg;\n  }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue, isInitialFocus]);\n  var ScreenReaderText = jsx(Fragment, null, jsx(\"span\", {\n    id: \"aria-selection\"\n  }, ariaSelected), jsx(\"span\", {\n    id: \"aria-focused\"\n  }, ariaFocused), jsx(\"span\", {\n    id: \"aria-results\"\n  }, ariaResults), jsx(\"span\", {\n    id: \"aria-guidance\"\n  }, ariaGuidance));\n  return jsx(Fragment, null, jsx(A11yText$1, {\n    id: id\n  }, isInitialFocus && ScreenReaderText), jsx(A11yText$1, {\n    \"aria-live\": ariaLive,\n    \"aria-atomic\": \"false\",\n    \"aria-relevant\": \"additions text\",\n    role: \"log\"\n  }, isFocused && !isInitialFocus && ScreenReaderText));\n};\nvar LiveRegion$1 = LiveRegion;\n\nvar diacritics = [{\n  base: 'A',\n  letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n  base: 'AA',\n  letters: \"\\uA732\"\n}, {\n  base: 'AE',\n  letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n  base: 'AO',\n  letters: \"\\uA734\"\n}, {\n  base: 'AU',\n  letters: \"\\uA736\"\n}, {\n  base: 'AV',\n  letters: \"\\uA738\\uA73A\"\n}, {\n  base: 'AY',\n  letters: \"\\uA73C\"\n}, {\n  base: 'B',\n  letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n  base: 'C',\n  letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n  base: 'D',\n  letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\"\n}, {\n  base: 'DZ',\n  letters: \"\\u01F1\\u01C4\"\n}, {\n  base: 'Dz',\n  letters: \"\\u01F2\\u01C5\"\n}, {\n  base: 'E',\n  letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n  base: 'F',\n  letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n  base: 'G',\n  letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n  base: 'H',\n  letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n  base: 'I',\n  letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n  base: 'J',\n  letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n  base: 'K',\n  letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n  base: 'L',\n  letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n  base: 'LJ',\n  letters: \"\\u01C7\"\n}, {\n  base: 'Lj',\n  letters: \"\\u01C8\"\n}, {\n  base: 'M',\n  letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n  base: 'N',\n  letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n  base: 'NJ',\n  letters: \"\\u01CA\"\n}, {\n  base: 'Nj',\n  letters: \"\\u01CB\"\n}, {\n  base: 'O',\n  letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n  base: 'OI',\n  letters: \"\\u01A2\"\n}, {\n  base: 'OO',\n  letters: \"\\uA74E\"\n}, {\n  base: 'OU',\n  letters: \"\\u0222\"\n}, {\n  base: 'P',\n  letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n  base: 'Q',\n  letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n  base: 'R',\n  letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n  base: 'S',\n  letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n  base: 'T',\n  letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n  base: 'TZ',\n  letters: \"\\uA728\"\n}, {\n  base: 'U',\n  letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n  base: 'V',\n  letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n  base: 'VY',\n  letters: \"\\uA760\"\n}, {\n  base: 'W',\n  letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n  base: 'X',\n  letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n  base: 'Y',\n  letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n  base: 'Z',\n  letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n  base: 'a',\n  letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n  base: 'aa',\n  letters: \"\\uA733\"\n}, {\n  base: 'ae',\n  letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n  base: 'ao',\n  letters: \"\\uA735\"\n}, {\n  base: 'au',\n  letters: \"\\uA737\"\n}, {\n  base: 'av',\n  letters: \"\\uA739\\uA73B\"\n}, {\n  base: 'ay',\n  letters: \"\\uA73D\"\n}, {\n  base: 'b',\n  letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n  base: 'c',\n  letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n  base: 'd',\n  letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n  base: 'dz',\n  letters: \"\\u01F3\\u01C6\"\n}, {\n  base: 'e',\n  letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n  base: 'f',\n  letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n  base: 'g',\n  letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n  base: 'h',\n  letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n  base: 'hv',\n  letters: \"\\u0195\"\n}, {\n  base: 'i',\n  letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n  base: 'j',\n  letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n  base: 'k',\n  letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n  base: 'l',\n  letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n  base: 'lj',\n  letters: \"\\u01C9\"\n}, {\n  base: 'm',\n  letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n  base: 'n',\n  letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n  base: 'nj',\n  letters: \"\\u01CC\"\n}, {\n  base: 'o',\n  letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n  base: 'oi',\n  letters: \"\\u01A3\"\n}, {\n  base: 'ou',\n  letters: \"\\u0223\"\n}, {\n  base: 'oo',\n  letters: \"\\uA74F\"\n}, {\n  base: 'p',\n  letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n  base: 'q',\n  letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n  base: 'r',\n  letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n  base: 's',\n  letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n  base: 't',\n  letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n  base: 'tz',\n  letters: \"\\uA729\"\n}, {\n  base: 'u',\n  letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n  base: 'v',\n  letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n  base: 'vy',\n  letters: \"\\uA761\"\n}, {\n  base: 'w',\n  letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n  base: 'x',\n  letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n  base: 'y',\n  letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n  base: 'z',\n  letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\nvar anyDiacritic = new RegExp('[' + diacritics.map(function (d) {\n  return d.letters;\n}).join('') + ']', 'g');\nvar diacriticToBase = {};\nfor (var i = 0; i < diacritics.length; i++) {\n  var diacritic = diacritics[i];\n  for (var j = 0; j < diacritic.letters.length; j++) {\n    diacriticToBase[diacritic.letters[j]] = diacritic.base;\n  }\n}\nvar stripDiacritics = function stripDiacritics(str) {\n  return str.replace(anyDiacritic, function (match) {\n    return diacriticToBase[match];\n  });\n};\n\nvar memoizedStripDiacriticsForInput = memoizeOne(stripDiacritics);\nvar trimString = function trimString(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n};\nvar defaultStringify = function defaultStringify(option) {\n  return \"\".concat(option.label, \" \").concat(option.value);\n};\nvar createFilter = function createFilter(config) {\n  return function (option, rawInput) {\n    // eslint-disable-next-line no-underscore-dangle\n    if (option.data.__isNew__) return true;\n    var _ignoreCase$ignoreAcc = _objectSpread({\n        ignoreCase: true,\n        ignoreAccents: true,\n        stringify: defaultStringify,\n        trim: true,\n        matchFrom: 'any'\n      }, config),\n      ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n      ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n      stringify = _ignoreCase$ignoreAcc.stringify,\n      trim = _ignoreCase$ignoreAcc.trim,\n      matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n    var input = trim ? trimString(rawInput) : rawInput;\n    var candidate = trim ? trimString(stringify(option)) : stringify(option);\n    if (ignoreCase) {\n      input = input.toLowerCase();\n      candidate = candidate.toLowerCase();\n    }\n    if (ignoreAccents) {\n      input = memoizedStripDiacriticsForInput(input);\n      candidate = stripDiacritics(candidate);\n    }\n    return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n  };\n};\n\nvar _excluded = [\"innerRef\"];\nfunction DummyInput(_ref) {\n  var innerRef = _ref.innerRef,\n    props = _objectWithoutProperties(_ref, _excluded);\n  // Remove animation props not meant for HTML elements\n  var filteredProps = removeProps(props, 'onExited', 'in', 'enter', 'exit', 'appear');\n  return jsx(\"input\", _extends({\n    ref: innerRef\n  }, filteredProps, {\n    css: /*#__PURE__*/css({\n      label: 'dummyInput',\n      // get rid of any default styles\n      background: 0,\n      border: 0,\n      // important! this hides the flashing cursor\n      caretColor: 'transparent',\n      fontSize: 'inherit',\n      gridArea: '1 / 1 / 2 / 3',\n      outline: 0,\n      padding: 0,\n      // important! without `width` browsers won't allow focus\n      width: 1,\n      // remove cursor on desktop\n      color: 'transparent',\n      // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n      left: -100,\n      opacity: 0,\n      position: 'relative',\n      transform: 'scale(.01)'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:DummyInput;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCTSIsImZpbGUiOiJEdW1teUlucHV0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgSlNYLCBSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyByZW1vdmVQcm9wcyB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHVtbXlJbnB1dCh7XG4gIGlubmVyUmVmLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydpbnB1dCddICYge1xuICByZWFkb25seSBpbm5lclJlZjogUmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xufSkge1xuICAvLyBSZW1vdmUgYW5pbWF0aW9uIHByb3BzIG5vdCBtZWFudCBmb3IgSFRNTCBlbGVtZW50c1xuICBjb25zdCBmaWx0ZXJlZFByb3BzID0gcmVtb3ZlUHJvcHMoXG4gICAgcHJvcHMsXG4gICAgJ29uRXhpdGVkJyxcbiAgICAnaW4nLFxuICAgICdlbnRlcicsXG4gICAgJ2V4aXQnLFxuICAgICdhcHBlYXInXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8aW5wdXRcbiAgICAgIHJlZj17aW5uZXJSZWZ9XG4gICAgICB7Li4uZmlsdGVyZWRQcm9wc31cbiAgICAgIGNzcz17e1xuICAgICAgICBsYWJlbDogJ2R1bW15SW5wdXQnLFxuICAgICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgIC8vIGltcG9ydGFudCEgdGhpcyBoaWRlcyB0aGUgZmxhc2hpbmcgY3Vyc29yXG4gICAgICAgIGNhcmV0Q29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gICAgICAgIG91dGxpbmU6IDAsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICAgIHdpZHRoOiAxLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICAgIGxlZnQ6IC0xMDAsXG4gICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSguMDEpJyxcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn1cbiJdfQ== */\")\n  }));\n}\n\nvar cancelScroll = function cancelScroll(event) {\n  if (event.cancelable) event.preventDefault();\n  event.stopPropagation();\n};\nfunction useScrollCapture(_ref) {\n  var isEnabled = _ref.isEnabled,\n    onBottomArrive = _ref.onBottomArrive,\n    onBottomLeave = _ref.onBottomLeave,\n    onTopArrive = _ref.onTopArrive,\n    onTopLeave = _ref.onTopLeave;\n  var isBottom = useRef(false);\n  var isTop = useRef(false);\n  var touchStart = useRef(0);\n  var scrollTarget = useRef(null);\n  var handleEventDelta = useCallback(function (event, delta) {\n    if (scrollTarget.current === null) return;\n    var _scrollTarget$current = scrollTarget.current,\n      scrollTop = _scrollTarget$current.scrollTop,\n      scrollHeight = _scrollTarget$current.scrollHeight,\n      clientHeight = _scrollTarget$current.clientHeight;\n    var target = scrollTarget.current;\n    var isDeltaPositive = delta > 0;\n    var availableScroll = scrollHeight - clientHeight - scrollTop;\n    var shouldCancelScroll = false;\n\n    // reset bottom/top flags\n    if (availableScroll > delta && isBottom.current) {\n      if (onBottomLeave) onBottomLeave(event);\n      isBottom.current = false;\n    }\n    if (isDeltaPositive && isTop.current) {\n      if (onTopLeave) onTopLeave(event);\n      isTop.current = false;\n    }\n\n    // bottom limit\n    if (isDeltaPositive && delta > availableScroll) {\n      if (onBottomArrive && !isBottom.current) {\n        onBottomArrive(event);\n      }\n      target.scrollTop = scrollHeight;\n      shouldCancelScroll = true;\n      isBottom.current = true;\n\n      // top limit\n    } else if (!isDeltaPositive && -delta > scrollTop) {\n      if (onTopArrive && !isTop.current) {\n        onTopArrive(event);\n      }\n      target.scrollTop = 0;\n      shouldCancelScroll = true;\n      isTop.current = true;\n    }\n\n    // cancel scroll\n    if (shouldCancelScroll) {\n      cancelScroll(event);\n    }\n  }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]);\n  var onWheel = useCallback(function (event) {\n    handleEventDelta(event, event.deltaY);\n  }, [handleEventDelta]);\n  var onTouchStart = useCallback(function (event) {\n    // set touch start so we can calculate touchmove delta\n    touchStart.current = event.changedTouches[0].clientY;\n  }, []);\n  var onTouchMove = useCallback(function (event) {\n    var deltaY = touchStart.current - event.changedTouches[0].clientY;\n    handleEventDelta(event, deltaY);\n  }, [handleEventDelta]);\n  var startListening = useCallback(function (el) {\n    // bail early if no element is available to attach to\n    if (!el) return;\n    var notPassive = supportsPassiveEvents ? {\n      passive: false\n    } : false;\n    el.addEventListener('wheel', onWheel, notPassive);\n    el.addEventListener('touchstart', onTouchStart, notPassive);\n    el.addEventListener('touchmove', onTouchMove, notPassive);\n  }, [onTouchMove, onTouchStart, onWheel]);\n  var stopListening = useCallback(function (el) {\n    // bail early if no element is available to detach from\n    if (!el) return;\n    el.removeEventListener('wheel', onWheel, false);\n    el.removeEventListener('touchstart', onTouchStart, false);\n    el.removeEventListener('touchmove', onTouchMove, false);\n  }, [onTouchMove, onTouchStart, onWheel]);\n  useEffect(function () {\n    if (!isEnabled) return;\n    var element = scrollTarget.current;\n    startListening(element);\n    return function () {\n      stopListening(element);\n    };\n  }, [isEnabled, startListening, stopListening]);\n  return function (element) {\n    scrollTarget.current = element;\n  };\n}\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n  boxSizing: 'border-box',\n  // account for possible declaration `width: 100%;` on body\n  overflow: 'hidden',\n  position: 'relative',\n  height: '100%'\n};\nfunction preventTouchMove(e) {\n  if (e.cancelable) e.preventDefault();\n}\nfunction allowTouchMove(e) {\n  e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n  var top = this.scrollTop;\n  var totalScroll = this.scrollHeight;\n  var currentScroll = top + this.offsetHeight;\n  if (top === 0) {\n    this.scrollTop = 1;\n  } else if (currentScroll === totalScroll) {\n    this.scrollTop = top - 1;\n  }\n}\n\n// `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\nfunction isTouchDevice() {\n  return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar activeScrollLocks = 0;\nvar listenerOptions = {\n  capture: false,\n  passive: false\n};\nfunction useScrollLock(_ref) {\n  var isEnabled = _ref.isEnabled,\n    _ref$accountForScroll = _ref.accountForScrollbars,\n    accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll;\n  var originalStyles = useRef({});\n  var scrollTarget = useRef(null);\n  var addScrollLock = useCallback(function (touchScrollTarget) {\n    if (!canUseDOM) return;\n    var target = document.body;\n    var targetStyle = target && target.style;\n    if (accountForScrollbars) {\n      // store any styles already applied to the body\n      STYLE_KEYS.forEach(function (key) {\n        var val = targetStyle && targetStyle[key];\n        originalStyles.current[key] = val;\n      });\n    }\n\n    // apply the lock styles and padding if this is the first scroll lock\n    if (accountForScrollbars && activeScrollLocks < 1) {\n      var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0;\n      var clientWidth = document.body ? document.body.clientWidth : 0;\n      var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n      Object.keys(LOCK_STYLES).forEach(function (key) {\n        var val = LOCK_STYLES[key];\n        if (targetStyle) {\n          targetStyle[key] = val;\n        }\n      });\n      if (targetStyle) {\n        targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n      }\n    }\n\n    // account for touch devices\n    if (target && isTouchDevice()) {\n      // Mobile Safari ignores { overflow: hidden } declaration on the body.\n      target.addEventListener('touchmove', preventTouchMove, listenerOptions);\n\n      // Allow scroll on provided target\n      if (touchScrollTarget) {\n        touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions);\n        touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions);\n      }\n    }\n\n    // increment active scroll locks\n    activeScrollLocks += 1;\n  }, [accountForScrollbars]);\n  var removeScrollLock = useCallback(function (touchScrollTarget) {\n    if (!canUseDOM) return;\n    var target = document.body;\n    var targetStyle = target && target.style;\n\n    // safely decrement active scroll locks\n    activeScrollLocks = Math.max(activeScrollLocks - 1, 0);\n\n    // reapply original body styles, if any\n    if (accountForScrollbars && activeScrollLocks < 1) {\n      STYLE_KEYS.forEach(function (key) {\n        var val = originalStyles.current[key];\n        if (targetStyle) {\n          targetStyle[key] = val;\n        }\n      });\n    }\n\n    // remove touch listeners\n    if (target && isTouchDevice()) {\n      target.removeEventListener('touchmove', preventTouchMove, listenerOptions);\n      if (touchScrollTarget) {\n        touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions);\n        touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions);\n      }\n    }\n  }, [accountForScrollbars]);\n  useEffect(function () {\n    if (!isEnabled) return;\n    var element = scrollTarget.current;\n    addScrollLock(element);\n    return function () {\n      removeScrollLock(element);\n    };\n  }, [isEnabled, addScrollLock, removeScrollLock]);\n  return function (element) {\n    scrollTarget.current = element;\n  };\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\nvar blurSelectInput = function blurSelectInput(event) {\n  var element = event.target;\n  return element.ownerDocument.activeElement && element.ownerDocument.activeElement.blur();\n};\nvar _ref2$1 = process.env.NODE_ENV === \"production\" ? {\n  name: \"1kfdb0e\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0\"\n} : {\n  name: \"bp8cua-ScrollManager\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9EVSIsImZpbGUiOiJTY3JvbGxNYW5hZ2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIFJlYWN0RWxlbWVudCwgUmVmQ2FsbGJhY2ssIE1vdXNlRXZlbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlU2Nyb2xsQ2FwdHVyZSBmcm9tICcuL3VzZVNjcm9sbENhcHR1cmUnO1xuaW1wb3J0IHVzZVNjcm9sbExvY2sgZnJvbSAnLi91c2VTY3JvbGxMb2NrJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IChyZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PikgPT4gUmVhY3RFbGVtZW50O1xuICByZWFkb25seSBsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Cb3R0b21MZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uVG9wQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Ub3BMZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IGJsdXJTZWxlY3RJbnB1dCA9IChldmVudDogTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgcmV0dXJuIChcbiAgICBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJlxuICAgIChlbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JvbGxNYW5hZ2VyKHtcbiAgY2hpbGRyZW4sXG4gIGxvY2tFbmFibGVkLFxuICBjYXB0dXJlRW5hYmxlZCA9IHRydWUsXG4gIG9uQm90dG9tQXJyaXZlLFxuICBvbkJvdHRvbUxlYXZlLFxuICBvblRvcEFycml2ZSxcbiAgb25Ub3BMZWF2ZSxcbn06IFByb3BzKSB7XG4gIGNvbnN0IHNldFNjcm9sbENhcHR1cmVUYXJnZXQgPSB1c2VTY3JvbGxDYXB0dXJlKHtcbiAgICBpc0VuYWJsZWQ6IGNhcHR1cmVFbmFibGVkLFxuICAgIG9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZSxcbiAgfSk7XG4gIGNvbnN0IHNldFNjcm9sbExvY2tUYXJnZXQgPSB1c2VTY3JvbGxMb2NrKHsgaXNFbmFibGVkOiBsb2NrRW5hYmxlZCB9KTtcblxuICBjb25zdCB0YXJnZXRSZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PiA9IChlbGVtZW50KSA9PiB7XG4gICAgc2V0U2Nyb2xsQ2FwdHVyZVRhcmdldChlbGVtZW50KTtcbiAgICBzZXRTY3JvbGxMb2NrVGFyZ2V0KGVsZW1lbnQpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAge2xvY2tFbmFibGVkICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIG9uQ2xpY2s9e2JsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtjaGlsZHJlbih0YXJnZXRSZWYpfVxuICAgIDwvRnJhZ21lbnQ+XG4gICk7XG59XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1\n};\nfunction ScrollManager(_ref) {\n  var children = _ref.children,\n    lockEnabled = _ref.lockEnabled,\n    _ref$captureEnabled = _ref.captureEnabled,\n    captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled,\n    onBottomArrive = _ref.onBottomArrive,\n    onBottomLeave = _ref.onBottomLeave,\n    onTopArrive = _ref.onTopArrive,\n    onTopLeave = _ref.onTopLeave;\n  var setScrollCaptureTarget = useScrollCapture({\n    isEnabled: captureEnabled,\n    onBottomArrive: onBottomArrive,\n    onBottomLeave: onBottomLeave,\n    onTopArrive: onTopArrive,\n    onTopLeave: onTopLeave\n  });\n  var setScrollLockTarget = useScrollLock({\n    isEnabled: lockEnabled\n  });\n  var targetRef = function targetRef(element) {\n    setScrollCaptureTarget(element);\n    setScrollLockTarget(element);\n  };\n  return jsx(Fragment, null, lockEnabled && jsx(\"div\", {\n    onClick: blurSelectInput,\n    css: _ref2$1\n  }), children(targetRef));\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"1a0ro4n-requiredInput\",\n  styles: \"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%\"\n} : {\n  name: \"5kkxb2-requiredInput-RequiredInput\",\n  styles: \"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%;label:RequiredInput;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJlcXVpcmVkSW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNJIiwiZmlsZSI6IlJlcXVpcmVkSW5wdXQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBGb2N1c0V2ZW50SGFuZGxlciwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmNvbnN0IFJlcXVpcmVkSW5wdXQ6IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgb25Gb2N1czogRm9jdXNFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD47XG59PiA9ICh7IG5hbWUsIG9uRm9jdXMgfSkgPT4gKFxuICA8aW5wdXRcbiAgICByZXF1aXJlZFxuICAgIG5hbWU9e25hbWV9XG4gICAgdGFiSW5kZXg9ey0xfVxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAncmVxdWlyZWRJbnB1dCcsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH19XG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgdmFsdWU9XCJcIlxuICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cbiAgLz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVpcmVkSW5wdXQ7XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\nvar RequiredInput = function RequiredInput(_ref) {\n  var name = _ref.name,\n    onFocus = _ref.onFocus;\n  return jsx(\"input\", {\n    required: true,\n    name: name,\n    tabIndex: -1,\n    \"aria-hidden\": \"true\",\n    onFocus: onFocus,\n    css: _ref2\n    // Prevent `Switching from uncontrolled to controlled` error\n    ,\n    value: \"\",\n    onChange: function onChange() {}\n  });\n};\nvar RequiredInput$1 = RequiredInput;\n\n/// <reference types=\"user-agent-data-types\" />\n\nfunction testPlatform(re) {\n  var _window$navigator$use;\n  return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window$navigator$use = window.navigator['userAgentData']) === null || _window$navigator$use === void 0 ? void 0 : _window$navigator$use.platform) || window.navigator.platform) : false;\n}\nfunction isIPhone() {\n  return testPlatform(/^iPhone/i);\n}\nfunction isMac() {\n  return testPlatform(/^Mac/i);\n}\nfunction isIPad() {\n  return testPlatform(/^iPad/i) ||\n  // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n  isMac() && navigator.maxTouchPoints > 1;\n}\nfunction isIOS() {\n  return isIPhone() || isIPad();\n}\nfunction isAppleDevice() {\n  return isMac() || isIOS();\n}\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n  return group.label;\n};\nvar getOptionLabel$1 = function getOptionLabel(option) {\n  return option.label;\n};\nvar getOptionValue$1 = function getOptionValue(option) {\n  return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n  return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n  clearIndicator: clearIndicatorCSS,\n  container: containerCSS,\n  control: css$1,\n  dropdownIndicator: dropdownIndicatorCSS,\n  group: groupCSS,\n  groupHeading: groupHeadingCSS,\n  indicatorsContainer: indicatorsContainerCSS,\n  indicatorSeparator: indicatorSeparatorCSS,\n  input: inputCSS,\n  loadingIndicator: loadingIndicatorCSS,\n  loadingMessage: loadingMessageCSS,\n  menu: menuCSS,\n  menuList: menuListCSS,\n  menuPortal: menuPortalCSS,\n  multiValue: multiValueCSS,\n  multiValueLabel: multiValueLabelCSS,\n  multiValueRemove: multiValueRemoveCSS,\n  noOptionsMessage: noOptionsMessageCSS,\n  option: optionCSS,\n  placeholder: placeholderCSS,\n  singleValue: css$2,\n  valueContainer: valueContainerCSS\n};\n// Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n  var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  // initialize with source styles\n  var styles = _objectSpread({}, source);\n\n  // massage in target styles\n  Object.keys(target).forEach(function (keyAsString) {\n    var key = keyAsString;\n    if (source[key]) {\n      styles[key] = function (rsCss, props) {\n        return target[key](source[key](rsCss, props), props);\n      };\n    } else {\n      styles[key] = target[key];\n    }\n  });\n  return styles;\n}\n\nvar colors = {\n  primary: '#2684FF',\n  primary75: '#4C9AFF',\n  primary50: '#B2D4FF',\n  primary25: '#DEEBFF',\n  danger: '#DE350B',\n  dangerLight: '#FFBDAD',\n  neutral0: 'hsl(0, 0%, 100%)',\n  neutral5: 'hsl(0, 0%, 95%)',\n  neutral10: 'hsl(0, 0%, 90%)',\n  neutral20: 'hsl(0, 0%, 80%)',\n  neutral30: 'hsl(0, 0%, 70%)',\n  neutral40: 'hsl(0, 0%, 60%)',\n  neutral50: 'hsl(0, 0%, 50%)',\n  neutral60: 'hsl(0, 0%, 40%)',\n  neutral70: 'hsl(0, 0%, 30%)',\n  neutral80: 'hsl(0, 0%, 20%)',\n  neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4;\n// Used to calculate consistent margin/padding on elements\nvar baseUnit = 4;\n// The minimum height of the control\nvar controlHeight = 38;\n// The amount of space between the control and menu */\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n  baseUnit: baseUnit,\n  controlHeight: controlHeight,\n  menuGutter: menuGutter\n};\nvar defaultTheme = {\n  borderRadius: borderRadius,\n  colors: colors,\n  spacing: spacing\n};\n\nvar defaultProps = {\n  'aria-live': 'polite',\n  backspaceRemovesValue: true,\n  blurInputOnSelect: isTouchCapable(),\n  captureMenuScroll: !isTouchCapable(),\n  classNames: {},\n  closeMenuOnSelect: true,\n  closeMenuOnScroll: false,\n  components: {},\n  controlShouldRenderValue: true,\n  escapeClearsValue: false,\n  filterOption: createFilter(),\n  formatGroupLabel: formatGroupLabel,\n  getOptionLabel: getOptionLabel$1,\n  getOptionValue: getOptionValue$1,\n  isDisabled: false,\n  isLoading: false,\n  isMulti: false,\n  isRtl: false,\n  isSearchable: true,\n  isOptionDisabled: isOptionDisabled,\n  loadingMessage: function loadingMessage() {\n    return 'Loading...';\n  },\n  maxMenuHeight: 300,\n  minMenuHeight: 140,\n  menuIsOpen: false,\n  menuPlacement: 'bottom',\n  menuPosition: 'absolute',\n  menuShouldBlockScroll: false,\n  menuShouldScrollIntoView: !isMobileDevice(),\n  noOptionsMessage: function noOptionsMessage() {\n    return 'No options';\n  },\n  openMenuOnFocus: false,\n  openMenuOnClick: true,\n  options: [],\n  pageSize: 5,\n  placeholder: 'Select...',\n  screenReaderStatus: function screenReaderStatus(_ref) {\n    var count = _ref.count;\n    return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n  },\n  styles: {},\n  tabIndex: 0,\n  tabSelectsValue: true,\n  unstyled: false\n};\nfunction toCategorizedOption(props, option, selectValue, index) {\n  var isDisabled = _isOptionDisabled(props, option, selectValue);\n  var isSelected = _isOptionSelected(props, option, selectValue);\n  var label = getOptionLabel(props, option);\n  var value = getOptionValue(props, option);\n  return {\n    type: 'option',\n    data: option,\n    isDisabled: isDisabled,\n    isSelected: isSelected,\n    label: label,\n    value: value,\n    index: index\n  };\n}\nfunction buildCategorizedOptions(props, selectValue) {\n  return props.options.map(function (groupOrOption, groupOrOptionIndex) {\n    if ('options' in groupOrOption) {\n      var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) {\n        return toCategorizedOption(props, option, selectValue, optionIndex);\n      }).filter(function (categorizedOption) {\n        return isFocusable(props, categorizedOption);\n      });\n      return categorizedOptions.length > 0 ? {\n        type: 'group',\n        data: groupOrOption,\n        options: categorizedOptions,\n        index: groupOrOptionIndex\n      } : undefined;\n    }\n    var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex);\n    return isFocusable(props, categorizedOption) ? categorizedOption : undefined;\n  }).filter(notNullish);\n}\nfunction buildFocusableOptionsFromCategorizedOptions(categorizedOptions) {\n  return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n    if (categorizedOption.type === 'group') {\n      optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n        return option.data;\n      })));\n    } else {\n      optionsAccumulator.push(categorizedOption.data);\n    }\n    return optionsAccumulator;\n  }, []);\n}\nfunction buildFocusableOptionsWithIds(categorizedOptions, optionId) {\n  return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n    if (categorizedOption.type === 'group') {\n      optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n        return {\n          data: option.data,\n          id: \"\".concat(optionId, \"-\").concat(categorizedOption.index, \"-\").concat(option.index)\n        };\n      })));\n    } else {\n      optionsAccumulator.push({\n        data: categorizedOption.data,\n        id: \"\".concat(optionId, \"-\").concat(categorizedOption.index)\n      });\n    }\n    return optionsAccumulator;\n  }, []);\n}\nfunction buildFocusableOptions(props, selectValue) {\n  return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue));\n}\nfunction isFocusable(props, categorizedOption) {\n  var _props$inputValue = props.inputValue,\n    inputValue = _props$inputValue === void 0 ? '' : _props$inputValue;\n  var data = categorizedOption.data,\n    isSelected = categorizedOption.isSelected,\n    label = categorizedOption.label,\n    value = categorizedOption.value;\n  return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, {\n    label: label,\n    value: value,\n    data: data\n  }, inputValue);\n}\nfunction getNextFocusedValue(state, nextSelectValue) {\n  var focusedValue = state.focusedValue,\n    lastSelectValue = state.selectValue;\n  var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n  if (lastFocusedIndex > -1) {\n    var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n    if (nextFocusedIndex > -1) {\n      // the focused value is still in the selectValue, return it\n      return focusedValue;\n    } else if (lastFocusedIndex < nextSelectValue.length) {\n      // the focusedValue is not present in the next selectValue array by\n      // reference, so return the new value at the same index\n      return nextSelectValue[lastFocusedIndex];\n    }\n  }\n  return null;\n}\nfunction getNextFocusedOption(state, options) {\n  var lastFocusedOption = state.focusedOption;\n  return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n}\nvar getFocusedOptionId = function getFocusedOptionId(focusableOptionsWithIds, focusedOption) {\n  var _focusableOptionsWith;\n  var focusedOptionId = (_focusableOptionsWith = focusableOptionsWithIds.find(function (option) {\n    return option.data === focusedOption;\n  })) === null || _focusableOptionsWith === void 0 ? void 0 : _focusableOptionsWith.id;\n  return focusedOptionId || null;\n};\nvar getOptionLabel = function getOptionLabel(props, data) {\n  return props.getOptionLabel(data);\n};\nvar getOptionValue = function getOptionValue(props, data) {\n  return props.getOptionValue(data);\n};\nfunction _isOptionDisabled(props, option, selectValue) {\n  return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false;\n}\nfunction _isOptionSelected(props, option, selectValue) {\n  if (selectValue.indexOf(option) > -1) return true;\n  if (typeof props.isOptionSelected === 'function') {\n    return props.isOptionSelected(option, selectValue);\n  }\n  var candidate = getOptionValue(props, option);\n  return selectValue.some(function (i) {\n    return getOptionValue(props, i) === candidate;\n  });\n}\nfunction _filterOption(props, option, inputValue) {\n  return props.filterOption ? props.filterOption(option, inputValue) : true;\n}\nvar shouldHideSelectedOptions = function shouldHideSelectedOptions(props) {\n  var hideSelectedOptions = props.hideSelectedOptions,\n    isMulti = props.isMulti;\n  if (hideSelectedOptions === undefined) return isMulti;\n  return hideSelectedOptions;\n};\nvar instanceId = 1;\nvar Select = /*#__PURE__*/function (_Component) {\n  _inherits(Select, _Component);\n  var _super = _createSuper(Select);\n  // Misc. Instance Properties\n  // ------------------------------\n\n  // TODO\n\n  // Refs\n  // ------------------------------\n\n  // Lifecycle\n  // ------------------------------\n\n  function Select(_props) {\n    var _this;\n    _classCallCheck(this, Select);\n    _this = _super.call(this, _props);\n    _this.state = {\n      ariaSelection: null,\n      focusedOption: null,\n      focusedOptionId: null,\n      focusableOptionsWithIds: [],\n      focusedValue: null,\n      inputIsHidden: false,\n      isFocused: false,\n      selectValue: [],\n      clearFocusValueOnUpdate: false,\n      prevWasFocused: false,\n      inputIsHiddenAfterUpdate: undefined,\n      prevProps: undefined,\n      instancePrefix: ''\n    };\n    _this.blockOptionHover = false;\n    _this.isComposing = false;\n    _this.commonProps = void 0;\n    _this.initialTouchX = 0;\n    _this.initialTouchY = 0;\n    _this.openAfterFocus = false;\n    _this.scrollToFocusedOptionOnUpdate = false;\n    _this.userIsDragging = void 0;\n    _this.isAppleDevice = isAppleDevice();\n    _this.controlRef = null;\n    _this.getControlRef = function (ref) {\n      _this.controlRef = ref;\n    };\n    _this.focusedOptionRef = null;\n    _this.getFocusedOptionRef = function (ref) {\n      _this.focusedOptionRef = ref;\n    };\n    _this.menuListRef = null;\n    _this.getMenuListRef = function (ref) {\n      _this.menuListRef = ref;\n    };\n    _this.inputRef = null;\n    _this.getInputRef = function (ref) {\n      _this.inputRef = ref;\n    };\n    _this.focus = _this.focusInput;\n    _this.blur = _this.blurInput;\n    _this.onChange = function (newValue, actionMeta) {\n      var _this$props = _this.props,\n        onChange = _this$props.onChange,\n        name = _this$props.name;\n      actionMeta.name = name;\n      _this.ariaOnChange(newValue, actionMeta);\n      onChange(newValue, actionMeta);\n    };\n    _this.setValue = function (newValue, action, option) {\n      var _this$props2 = _this.props,\n        closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n        isMulti = _this$props2.isMulti,\n        inputValue = _this$props2.inputValue;\n      _this.onInputChange('', {\n        action: 'set-value',\n        prevInputValue: inputValue\n      });\n      if (closeMenuOnSelect) {\n        _this.setState({\n          inputIsHiddenAfterUpdate: !isMulti\n        });\n        _this.onMenuClose();\n      }\n      // when the select value should change, we should reset focusedValue\n      _this.setState({\n        clearFocusValueOnUpdate: true\n      });\n      _this.onChange(newValue, {\n        action: action,\n        option: option\n      });\n    };\n    _this.selectOption = function (newValue) {\n      var _this$props3 = _this.props,\n        blurInputOnSelect = _this$props3.blurInputOnSelect,\n        isMulti = _this$props3.isMulti,\n        name = _this$props3.name;\n      var selectValue = _this.state.selectValue;\n      var deselected = isMulti && _this.isOptionSelected(newValue, selectValue);\n      var isDisabled = _this.isOptionDisabled(newValue, selectValue);\n      if (deselected) {\n        var candidate = _this.getOptionValue(newValue);\n        _this.setValue(multiValueAsValue(selectValue.filter(function (i) {\n          return _this.getOptionValue(i) !== candidate;\n        })), 'deselect-option', newValue);\n      } else if (!isDisabled) {\n        // Select option if option is not disabled\n        if (isMulti) {\n          _this.setValue(multiValueAsValue([].concat(_toConsumableArray(selectValue), [newValue])), 'select-option', newValue);\n        } else {\n          _this.setValue(singleValueAsValue(newValue), 'select-option');\n        }\n      } else {\n        _this.ariaOnChange(singleValueAsValue(newValue), {\n          action: 'select-option',\n          option: newValue,\n          name: name\n        });\n        return;\n      }\n      if (blurInputOnSelect) {\n        _this.blurInput();\n      }\n    };\n    _this.removeValue = function (removedValue) {\n      var isMulti = _this.props.isMulti;\n      var selectValue = _this.state.selectValue;\n      var candidate = _this.getOptionValue(removedValue);\n      var newValueArray = selectValue.filter(function (i) {\n        return _this.getOptionValue(i) !== candidate;\n      });\n      var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null);\n      _this.onChange(newValue, {\n        action: 'remove-value',\n        removedValue: removedValue\n      });\n      _this.focusInput();\n    };\n    _this.clearValue = function () {\n      var selectValue = _this.state.selectValue;\n      _this.onChange(valueTernary(_this.props.isMulti, [], null), {\n        action: 'clear',\n        removedValues: selectValue\n      });\n    };\n    _this.popValue = function () {\n      var isMulti = _this.props.isMulti;\n      var selectValue = _this.state.selectValue;\n      var lastSelectedValue = selectValue[selectValue.length - 1];\n      var newValueArray = selectValue.slice(0, selectValue.length - 1);\n      var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null);\n      if (lastSelectedValue) {\n        _this.onChange(newValue, {\n          action: 'pop-value',\n          removedValue: lastSelectedValue\n        });\n      }\n    };\n    _this.getFocusedOptionId = function (focusedOption) {\n      return getFocusedOptionId(_this.state.focusableOptionsWithIds, focusedOption);\n    };\n    _this.getFocusableOptionsWithIds = function () {\n      return buildFocusableOptionsWithIds(buildCategorizedOptions(_this.props, _this.state.selectValue), _this.getElementId('option'));\n    };\n    _this.getValue = function () {\n      return _this.state.selectValue;\n    };\n    _this.cx = function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args));\n    };\n    _this.getOptionLabel = function (data) {\n      return getOptionLabel(_this.props, data);\n    };\n    _this.getOptionValue = function (data) {\n      return getOptionValue(_this.props, data);\n    };\n    _this.getStyles = function (key, props) {\n      var unstyled = _this.props.unstyled;\n      var base = defaultStyles[key](props, unstyled);\n      base.boxSizing = 'border-box';\n      var custom = _this.props.styles[key];\n      return custom ? custom(base, props) : base;\n    };\n    _this.getClassNames = function (key, props) {\n      var _this$props$className, _this$props$className2;\n      return (_this$props$className = (_this$props$className2 = _this.props.classNames)[key]) === null || _this$props$className === void 0 ? void 0 : _this$props$className.call(_this$props$className2, props);\n    };\n    _this.getElementId = function (element) {\n      return \"\".concat(_this.state.instancePrefix, \"-\").concat(element);\n    };\n    _this.getComponents = function () {\n      return defaultComponents(_this.props);\n    };\n    _this.buildCategorizedOptions = function () {\n      return buildCategorizedOptions(_this.props, _this.state.selectValue);\n    };\n    _this.getCategorizedOptions = function () {\n      return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : [];\n    };\n    _this.buildFocusableOptions = function () {\n      return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions());\n    };\n    _this.getFocusableOptions = function () {\n      return _this.props.menuIsOpen ? _this.buildFocusableOptions() : [];\n    };\n    _this.ariaOnChange = function (value, actionMeta) {\n      _this.setState({\n        ariaSelection: _objectSpread({\n          value: value\n        }, actionMeta)\n      });\n    };\n    _this.onMenuMouseDown = function (event) {\n      if (event.button !== 0) {\n        return;\n      }\n      event.stopPropagation();\n      event.preventDefault();\n      _this.focusInput();\n    };\n    _this.onMenuMouseMove = function (event) {\n      _this.blockOptionHover = false;\n    };\n    _this.onControlMouseDown = function (event) {\n      // Event captured by dropdown indicator\n      if (event.defaultPrevented) {\n        return;\n      }\n      var openMenuOnClick = _this.props.openMenuOnClick;\n      if (!_this.state.isFocused) {\n        if (openMenuOnClick) {\n          _this.openAfterFocus = true;\n        }\n        _this.focusInput();\n      } else if (!_this.props.menuIsOpen) {\n        if (openMenuOnClick) {\n          _this.openMenu('first');\n        }\n      } else {\n        if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n          _this.onMenuClose();\n        }\n      }\n      if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n        event.preventDefault();\n      }\n    };\n    _this.onDropdownIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n      if (_this.props.isDisabled) return;\n      var _this$props4 = _this.props,\n        isMulti = _this$props4.isMulti,\n        menuIsOpen = _this$props4.menuIsOpen;\n      _this.focusInput();\n      if (menuIsOpen) {\n        _this.setState({\n          inputIsHiddenAfterUpdate: !isMulti\n        });\n        _this.onMenuClose();\n      } else {\n        _this.openMenu('first');\n      }\n      event.preventDefault();\n    };\n    _this.onClearIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n      _this.clearValue();\n      event.preventDefault();\n      _this.openAfterFocus = false;\n      if (event.type === 'touchend') {\n        _this.focusInput();\n      } else {\n        setTimeout(function () {\n          return _this.focusInput();\n        });\n      }\n    };\n    _this.onScroll = function (event) {\n      if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n        if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n          _this.props.onMenuClose();\n        }\n      } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n        if (_this.props.closeMenuOnScroll(event)) {\n          _this.props.onMenuClose();\n        }\n      }\n    };\n    _this.onCompositionStart = function () {\n      _this.isComposing = true;\n    };\n    _this.onCompositionEnd = function () {\n      _this.isComposing = false;\n    };\n    _this.onTouchStart = function (_ref2) {\n      var touches = _ref2.touches;\n      var touch = touches && touches.item(0);\n      if (!touch) {\n        return;\n      }\n      _this.initialTouchX = touch.clientX;\n      _this.initialTouchY = touch.clientY;\n      _this.userIsDragging = false;\n    };\n    _this.onTouchMove = function (_ref3) {\n      var touches = _ref3.touches;\n      var touch = touches && touches.item(0);\n      if (!touch) {\n        return;\n      }\n      var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n      var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n      var moveThreshold = 5;\n      _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n    };\n    _this.onTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      // close the menu if the user taps outside\n      // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n      // on events on child elements, not the document (which we've attached this handler to).\n      if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n        _this.blurInput();\n      }\n\n      // reset move vars\n      _this.initialTouchX = 0;\n      _this.initialTouchY = 0;\n    };\n    _this.onControlTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n      _this.onControlMouseDown(event);\n    };\n    _this.onClearIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n      _this.onClearIndicatorMouseDown(event);\n    };\n    _this.onDropdownIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n      _this.onDropdownIndicatorMouseDown(event);\n    };\n    _this.handleInputChange = function (event) {\n      var prevInputValue = _this.props.inputValue;\n      var inputValue = event.currentTarget.value;\n      _this.setState({\n        inputIsHiddenAfterUpdate: false\n      });\n      _this.onInputChange(inputValue, {\n        action: 'input-change',\n        prevInputValue: prevInputValue\n      });\n      if (!_this.props.menuIsOpen) {\n        _this.onMenuOpen();\n      }\n    };\n    _this.onInputFocus = function (event) {\n      if (_this.props.onFocus) {\n        _this.props.onFocus(event);\n      }\n      _this.setState({\n        inputIsHiddenAfterUpdate: false,\n        isFocused: true\n      });\n      if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n        _this.openMenu('first');\n      }\n      _this.openAfterFocus = false;\n    };\n    _this.onInputBlur = function (event) {\n      var prevInputValue = _this.props.inputValue;\n      if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n        _this.inputRef.focus();\n        return;\n      }\n      if (_this.props.onBlur) {\n        _this.props.onBlur(event);\n      }\n      _this.onInputChange('', {\n        action: 'input-blur',\n        prevInputValue: prevInputValue\n      });\n      _this.onMenuClose();\n      _this.setState({\n        focusedValue: null,\n        isFocused: false\n      });\n    };\n    _this.onOptionHover = function (focusedOption) {\n      if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n        return;\n      }\n      var options = _this.getFocusableOptions();\n      var focusedOptionIndex = options.indexOf(focusedOption);\n      _this.setState({\n        focusedOption: focusedOption,\n        focusedOptionId: focusedOptionIndex > -1 ? _this.getFocusedOptionId(focusedOption) : null\n      });\n    };\n    _this.shouldHideSelectedOptions = function () {\n      return shouldHideSelectedOptions(_this.props);\n    };\n    _this.onValueInputFocus = function (e) {\n      e.preventDefault();\n      e.stopPropagation();\n      _this.focus();\n    };\n    _this.onKeyDown = function (event) {\n      var _this$props5 = _this.props,\n        isMulti = _this$props5.isMulti,\n        backspaceRemovesValue = _this$props5.backspaceRemovesValue,\n        escapeClearsValue = _this$props5.escapeClearsValue,\n        inputValue = _this$props5.inputValue,\n        isClearable = _this$props5.isClearable,\n        isDisabled = _this$props5.isDisabled,\n        menuIsOpen = _this$props5.menuIsOpen,\n        onKeyDown = _this$props5.onKeyDown,\n        tabSelectsValue = _this$props5.tabSelectsValue,\n        openMenuOnFocus = _this$props5.openMenuOnFocus;\n      var _this$state = _this.state,\n        focusedOption = _this$state.focusedOption,\n        focusedValue = _this$state.focusedValue,\n        selectValue = _this$state.selectValue;\n      if (isDisabled) return;\n      if (typeof onKeyDown === 'function') {\n        onKeyDown(event);\n        if (event.defaultPrevented) {\n          return;\n        }\n      }\n\n      // Block option hover events when the user has just pressed a key\n      _this.blockOptionHover = true;\n      switch (event.key) {\n        case 'ArrowLeft':\n          if (!isMulti || inputValue) return;\n          _this.focusValue('previous');\n          break;\n        case 'ArrowRight':\n          if (!isMulti || inputValue) return;\n          _this.focusValue('next');\n          break;\n        case 'Delete':\n        case 'Backspace':\n          if (inputValue) return;\n          if (focusedValue) {\n            _this.removeValue(focusedValue);\n          } else {\n            if (!backspaceRemovesValue) return;\n            if (isMulti) {\n              _this.popValue();\n            } else if (isClearable) {\n              _this.clearValue();\n            }\n          }\n          break;\n        case 'Tab':\n          if (_this.isComposing) return;\n          if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption ||\n          // don't capture the event if the menu opens on focus and the focused\n          // option is already selected; it breaks the flow of navigation\n          openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n            return;\n          }\n          _this.selectOption(focusedOption);\n          break;\n        case 'Enter':\n          if (event.keyCode === 229) {\n            // ignore the keydown event from an Input Method Editor(IME)\n            // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n            break;\n          }\n          if (menuIsOpen) {\n            if (!focusedOption) return;\n            if (_this.isComposing) return;\n            _this.selectOption(focusedOption);\n            break;\n          }\n          return;\n        case 'Escape':\n          if (menuIsOpen) {\n            _this.setState({\n              inputIsHiddenAfterUpdate: false\n            });\n            _this.onInputChange('', {\n              action: 'menu-close',\n              prevInputValue: inputValue\n            });\n            _this.onMenuClose();\n          } else if (isClearable && escapeClearsValue) {\n            _this.clearValue();\n          }\n          break;\n        case ' ':\n          // space\n          if (inputValue) {\n            return;\n          }\n          if (!menuIsOpen) {\n            _this.openMenu('first');\n            break;\n          }\n          if (!focusedOption) return;\n          _this.selectOption(focusedOption);\n          break;\n        case 'ArrowUp':\n          if (menuIsOpen) {\n            _this.focusOption('up');\n          } else {\n            _this.openMenu('last');\n          }\n          break;\n        case 'ArrowDown':\n          if (menuIsOpen) {\n            _this.focusOption('down');\n          } else {\n            _this.openMenu('first');\n          }\n          break;\n        case 'PageUp':\n          if (!menuIsOpen) return;\n          _this.focusOption('pageup');\n          break;\n        case 'PageDown':\n          if (!menuIsOpen) return;\n          _this.focusOption('pagedown');\n          break;\n        case 'Home':\n          if (!menuIsOpen) return;\n          _this.focusOption('first');\n          break;\n        case 'End':\n          if (!menuIsOpen) return;\n          _this.focusOption('last');\n          break;\n        default:\n          return;\n      }\n      event.preventDefault();\n    };\n    _this.state.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n    _this.state.selectValue = cleanValue(_props.value);\n    // Set focusedOption if menuIsOpen is set on init (e.g. defaultMenuIsOpen)\n    if (_props.menuIsOpen && _this.state.selectValue.length) {\n      var focusableOptionsWithIds = _this.getFocusableOptionsWithIds();\n      var focusableOptions = _this.buildFocusableOptions();\n      var optionIndex = focusableOptions.indexOf(_this.state.selectValue[0]);\n      _this.state.focusableOptionsWithIds = focusableOptionsWithIds;\n      _this.state.focusedOption = focusableOptions[optionIndex];\n      _this.state.focusedOptionId = getFocusedOptionId(focusableOptionsWithIds, focusableOptions[optionIndex]);\n    }\n    return _this;\n  }\n  _createClass(Select, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.startListeningComposition();\n      this.startListeningToTouch();\n      if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n        // Listen to all scroll events, and filter them out inside of 'onScroll'\n        document.addEventListener('scroll', this.onScroll, true);\n      }\n      if (this.props.autoFocus) {\n        this.focusInput();\n      }\n\n      // Scroll focusedOption into view if menuIsOpen is set on mount (e.g. defaultMenuIsOpen)\n      if (this.props.menuIsOpen && this.state.focusedOption && this.menuListRef && this.focusedOptionRef) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props6 = this.props,\n        isDisabled = _this$props6.isDisabled,\n        menuIsOpen = _this$props6.menuIsOpen;\n      var isFocused = this.state.isFocused;\n      if (\n      // ensure focus is restored correctly when the control becomes enabled\n      isFocused && !isDisabled && prevProps.isDisabled ||\n      // ensure focus is on the Input when the menu opens\n      isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n        this.focusInput();\n      }\n      if (isFocused && isDisabled && !prevProps.isDisabled) {\n        // ensure select state gets blurred in case Select is programmatically disabled while focused\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState({\n          isFocused: false\n        }, this.onMenuClose);\n      } else if (!isFocused && !isDisabled && prevProps.isDisabled && this.inputRef === document.activeElement) {\n        // ensure select state gets focused in case Select is programatically re-enabled while focused (Firefox)\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState({\n          isFocused: true\n        });\n      }\n\n      // scroll the focused option into view if necessary\n      if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n        this.scrollToFocusedOptionOnUpdate = false;\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stopListeningComposition();\n      this.stopListeningToTouch();\n      document.removeEventListener('scroll', this.onScroll, true);\n    }\n\n    // ==============================\n    // Consumer Handlers\n    // ==============================\n  }, {\n    key: \"onMenuOpen\",\n    value: function onMenuOpen() {\n      this.props.onMenuOpen();\n    }\n  }, {\n    key: \"onMenuClose\",\n    value: function onMenuClose() {\n      this.onInputChange('', {\n        action: 'menu-close',\n        prevInputValue: this.props.inputValue\n      });\n      this.props.onMenuClose();\n    }\n  }, {\n    key: \"onInputChange\",\n    value: function onInputChange(newValue, actionMeta) {\n      this.props.onInputChange(newValue, actionMeta);\n    }\n\n    // ==============================\n    // Methods\n    // ==============================\n  }, {\n    key: \"focusInput\",\n    value: function focusInput() {\n      if (!this.inputRef) return;\n      this.inputRef.focus();\n    }\n  }, {\n    key: \"blurInput\",\n    value: function blurInput() {\n      if (!this.inputRef) return;\n      this.inputRef.blur();\n    }\n\n    // aliased for consumers\n  }, {\n    key: \"openMenu\",\n    value: function openMenu(focusOption) {\n      var _this2 = this;\n      var _this$state2 = this.state,\n        selectValue = _this$state2.selectValue,\n        isFocused = _this$state2.isFocused;\n      var focusableOptions = this.buildFocusableOptions();\n      var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1;\n      if (!this.props.isMulti) {\n        var selectedIndex = focusableOptions.indexOf(selectValue[0]);\n        if (selectedIndex > -1) {\n          openAtIndex = selectedIndex;\n        }\n      }\n\n      // only scroll if the menu isn't already open\n      this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n      this.setState({\n        inputIsHiddenAfterUpdate: false,\n        focusedValue: null,\n        focusedOption: focusableOptions[openAtIndex],\n        focusedOptionId: this.getFocusedOptionId(focusableOptions[openAtIndex])\n      }, function () {\n        return _this2.onMenuOpen();\n      });\n    }\n  }, {\n    key: \"focusValue\",\n    value: function focusValue(direction) {\n      var _this$state3 = this.state,\n        selectValue = _this$state3.selectValue,\n        focusedValue = _this$state3.focusedValue;\n\n      // Only multiselects support value focusing\n      if (!this.props.isMulti) return;\n      this.setState({\n        focusedOption: null\n      });\n      var focusedIndex = selectValue.indexOf(focusedValue);\n      if (!focusedValue) {\n        focusedIndex = -1;\n      }\n      var lastIndex = selectValue.length - 1;\n      var nextFocus = -1;\n      if (!selectValue.length) return;\n      switch (direction) {\n        case 'previous':\n          if (focusedIndex === 0) {\n            // don't cycle from the start to the end\n            nextFocus = 0;\n          } else if (focusedIndex === -1) {\n            // if nothing is focused, focus the last value first\n            nextFocus = lastIndex;\n          } else {\n            nextFocus = focusedIndex - 1;\n          }\n          break;\n        case 'next':\n          if (focusedIndex > -1 && focusedIndex < lastIndex) {\n            nextFocus = focusedIndex + 1;\n          }\n          break;\n      }\n      this.setState({\n        inputIsHidden: nextFocus !== -1,\n        focusedValue: selectValue[nextFocus]\n      });\n    }\n  }, {\n    key: \"focusOption\",\n    value: function focusOption() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n      var pageSize = this.props.pageSize;\n      var focusedOption = this.state.focusedOption;\n      var options = this.getFocusableOptions();\n      if (!options.length) return;\n      var nextFocus = 0; // handles 'first'\n      var focusedIndex = options.indexOf(focusedOption);\n      if (!focusedOption) {\n        focusedIndex = -1;\n      }\n      if (direction === 'up') {\n        nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n      } else if (direction === 'down') {\n        nextFocus = (focusedIndex + 1) % options.length;\n      } else if (direction === 'pageup') {\n        nextFocus = focusedIndex - pageSize;\n        if (nextFocus < 0) nextFocus = 0;\n      } else if (direction === 'pagedown') {\n        nextFocus = focusedIndex + pageSize;\n        if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n      } else if (direction === 'last') {\n        nextFocus = options.length - 1;\n      }\n      this.scrollToFocusedOptionOnUpdate = true;\n      this.setState({\n        focusedOption: options[nextFocus],\n        focusedValue: null,\n        focusedOptionId: this.getFocusedOptionId(options[nextFocus])\n      });\n    }\n  }, {\n    key: \"getTheme\",\n    value:\n    // ==============================\n    // Getters\n    // ==============================\n\n    function getTheme() {\n      // Use the default theme if there are no customisations.\n      if (!this.props.theme) {\n        return defaultTheme;\n      }\n      // If the theme prop is a function, assume the function\n      // knows how to merge the passed-in default theme with\n      // its own modifications.\n      if (typeof this.props.theme === 'function') {\n        return this.props.theme(defaultTheme);\n      }\n      // Otherwise, if a plain theme object was passed in,\n      // overlay it with the default theme.\n      return _objectSpread(_objectSpread({}, defaultTheme), this.props.theme);\n    }\n  }, {\n    key: \"getCommonProps\",\n    value: function getCommonProps() {\n      var clearValue = this.clearValue,\n        cx = this.cx,\n        getStyles = this.getStyles,\n        getClassNames = this.getClassNames,\n        getValue = this.getValue,\n        selectOption = this.selectOption,\n        setValue = this.setValue,\n        props = this.props;\n      var isMulti = props.isMulti,\n        isRtl = props.isRtl,\n        options = props.options;\n      var hasValue = this.hasValue();\n      return {\n        clearValue: clearValue,\n        cx: cx,\n        getStyles: getStyles,\n        getClassNames: getClassNames,\n        getValue: getValue,\n        hasValue: hasValue,\n        isMulti: isMulti,\n        isRtl: isRtl,\n        options: options,\n        selectOption: selectOption,\n        selectProps: props,\n        setValue: setValue,\n        theme: this.getTheme()\n      };\n    }\n  }, {\n    key: \"hasValue\",\n    value: function hasValue() {\n      var selectValue = this.state.selectValue;\n      return selectValue.length > 0;\n    }\n  }, {\n    key: \"hasOptions\",\n    value: function hasOptions() {\n      return !!this.getFocusableOptions().length;\n    }\n  }, {\n    key: \"isClearable\",\n    value: function isClearable() {\n      var _this$props7 = this.props,\n        isClearable = _this$props7.isClearable,\n        isMulti = _this$props7.isMulti;\n\n      // single select, by default, IS NOT clearable\n      // multi select, by default, IS clearable\n      if (isClearable === undefined) return isMulti;\n      return isClearable;\n    }\n  }, {\n    key: \"isOptionDisabled\",\n    value: function isOptionDisabled(option, selectValue) {\n      return _isOptionDisabled(this.props, option, selectValue);\n    }\n  }, {\n    key: \"isOptionSelected\",\n    value: function isOptionSelected(option, selectValue) {\n      return _isOptionSelected(this.props, option, selectValue);\n    }\n  }, {\n    key: \"filterOption\",\n    value: function filterOption(option, inputValue) {\n      return _filterOption(this.props, option, inputValue);\n    }\n  }, {\n    key: \"formatOptionLabel\",\n    value: function formatOptionLabel(data, context) {\n      if (typeof this.props.formatOptionLabel === 'function') {\n        var _inputValue = this.props.inputValue;\n        var _selectValue = this.state.selectValue;\n        return this.props.formatOptionLabel(data, {\n          context: context,\n          inputValue: _inputValue,\n          selectValue: _selectValue\n        });\n      } else {\n        return this.getOptionLabel(data);\n      }\n    }\n  }, {\n    key: \"formatGroupLabel\",\n    value: function formatGroupLabel(data) {\n      return this.props.formatGroupLabel(data);\n    }\n\n    // ==============================\n    // Mouse Handlers\n    // ==============================\n  }, {\n    key: \"startListeningComposition\",\n    value:\n    // ==============================\n    // Composition Handlers\n    // ==============================\n\n    function startListeningComposition() {\n      if (document && document.addEventListener) {\n        document.addEventListener('compositionstart', this.onCompositionStart, false);\n        document.addEventListener('compositionend', this.onCompositionEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningComposition\",\n    value: function stopListeningComposition() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('compositionstart', this.onCompositionStart);\n        document.removeEventListener('compositionend', this.onCompositionEnd);\n      }\n    }\n  }, {\n    key: \"startListeningToTouch\",\n    value:\n    // ==============================\n    // Touch Handlers\n    // ==============================\n\n    function startListeningToTouch() {\n      if (document && document.addEventListener) {\n        document.addEventListener('touchstart', this.onTouchStart, false);\n        document.addEventListener('touchmove', this.onTouchMove, false);\n        document.addEventListener('touchend', this.onTouchEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningToTouch\",\n    value: function stopListeningToTouch() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('touchstart', this.onTouchStart);\n        document.removeEventListener('touchmove', this.onTouchMove);\n        document.removeEventListener('touchend', this.onTouchEnd);\n      }\n    }\n  }, {\n    key: \"renderInput\",\n    value:\n    // ==============================\n    // Renderers\n    // ==============================\n    function renderInput() {\n      var _this$props8 = this.props,\n        isDisabled = _this$props8.isDisabled,\n        isSearchable = _this$props8.isSearchable,\n        inputId = _this$props8.inputId,\n        inputValue = _this$props8.inputValue,\n        tabIndex = _this$props8.tabIndex,\n        form = _this$props8.form,\n        menuIsOpen = _this$props8.menuIsOpen,\n        required = _this$props8.required;\n      var _this$getComponents = this.getComponents(),\n        Input = _this$getComponents.Input;\n      var _this$state4 = this.state,\n        inputIsHidden = _this$state4.inputIsHidden,\n        ariaSelection = _this$state4.ariaSelection;\n      var commonProps = this.commonProps;\n      var id = inputId || this.getElementId('input');\n\n      // aria attributes makes the JSX \"noisy\", separated for clarity\n      var ariaAttributes = _objectSpread(_objectSpread(_objectSpread({\n        'aria-autocomplete': 'list',\n        'aria-expanded': menuIsOpen,\n        'aria-haspopup': true,\n        'aria-errormessage': this.props['aria-errormessage'],\n        'aria-invalid': this.props['aria-invalid'],\n        'aria-label': this.props['aria-label'],\n        'aria-labelledby': this.props['aria-labelledby'],\n        'aria-required': required,\n        role: 'combobox',\n        'aria-activedescendant': this.isAppleDevice ? undefined : this.state.focusedOptionId || ''\n      }, menuIsOpen && {\n        'aria-controls': this.getElementId('listbox')\n      }), !isSearchable && {\n        'aria-readonly': true\n      }), this.hasValue() ? (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus' && {\n        'aria-describedby': this.getElementId('live-region')\n      } : {\n        'aria-describedby': this.getElementId('placeholder')\n      });\n      if (!isSearchable) {\n        // use a dummy input to maintain focus/blur functionality\n        return /*#__PURE__*/React.createElement(DummyInput, _extends({\n          id: id,\n          innerRef: this.getInputRef,\n          onBlur: this.onInputBlur,\n          onChange: noop,\n          onFocus: this.onInputFocus,\n          disabled: isDisabled,\n          tabIndex: tabIndex,\n          inputMode: \"none\",\n          form: form,\n          value: \"\"\n        }, ariaAttributes));\n      }\n      return /*#__PURE__*/React.createElement(Input, _extends({}, commonProps, {\n        autoCapitalize: \"none\",\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        id: id,\n        innerRef: this.getInputRef,\n        isDisabled: isDisabled,\n        isHidden: inputIsHidden,\n        onBlur: this.onInputBlur,\n        onChange: this.handleInputChange,\n        onFocus: this.onInputFocus,\n        spellCheck: \"false\",\n        tabIndex: tabIndex,\n        form: form,\n        type: \"text\",\n        value: inputValue\n      }, ariaAttributes));\n    }\n  }, {\n    key: \"renderPlaceholderOrValue\",\n    value: function renderPlaceholderOrValue() {\n      var _this3 = this;\n      var _this$getComponents2 = this.getComponents(),\n        MultiValue = _this$getComponents2.MultiValue,\n        MultiValueContainer = _this$getComponents2.MultiValueContainer,\n        MultiValueLabel = _this$getComponents2.MultiValueLabel,\n        MultiValueRemove = _this$getComponents2.MultiValueRemove,\n        SingleValue = _this$getComponents2.SingleValue,\n        Placeholder = _this$getComponents2.Placeholder;\n      var commonProps = this.commonProps;\n      var _this$props9 = this.props,\n        controlShouldRenderValue = _this$props9.controlShouldRenderValue,\n        isDisabled = _this$props9.isDisabled,\n        isMulti = _this$props9.isMulti,\n        inputValue = _this$props9.inputValue,\n        placeholder = _this$props9.placeholder;\n      var _this$state5 = this.state,\n        selectValue = _this$state5.selectValue,\n        focusedValue = _this$state5.focusedValue,\n        isFocused = _this$state5.isFocused;\n      if (!this.hasValue() || !controlShouldRenderValue) {\n        return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, {\n          key: \"placeholder\",\n          isDisabled: isDisabled,\n          isFocused: isFocused,\n          innerProps: {\n            id: this.getElementId('placeholder')\n          }\n        }), placeholder);\n      }\n      if (isMulti) {\n        return selectValue.map(function (opt, index) {\n          var isOptionFocused = opt === focusedValue;\n          var key = \"\".concat(_this3.getOptionLabel(opt), \"-\").concat(_this3.getOptionValue(opt));\n          return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, {\n            components: {\n              Container: MultiValueContainer,\n              Label: MultiValueLabel,\n              Remove: MultiValueRemove\n            },\n            isFocused: isOptionFocused,\n            isDisabled: isDisabled,\n            key: key,\n            index: index,\n            removeProps: {\n              onClick: function onClick() {\n                return _this3.removeValue(opt);\n              },\n              onTouchEnd: function onTouchEnd() {\n                return _this3.removeValue(opt);\n              },\n              onMouseDown: function onMouseDown(e) {\n                e.preventDefault();\n              }\n            },\n            data: opt\n          }), _this3.formatOptionLabel(opt, 'value'));\n        });\n      }\n      if (inputValue) {\n        return null;\n      }\n      var singleValue = selectValue[0];\n      return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, {\n        data: singleValue,\n        isDisabled: isDisabled\n      }), this.formatOptionLabel(singleValue, 'value'));\n    }\n  }, {\n    key: \"renderClearIndicator\",\n    value: function renderClearIndicator() {\n      var _this$getComponents3 = this.getComponents(),\n        ClearIndicator = _this$getComponents3.ClearIndicator;\n      var commonProps = this.commonProps;\n      var _this$props10 = this.props,\n        isDisabled = _this$props10.isDisabled,\n        isLoading = _this$props10.isLoading;\n      var isFocused = this.state.isFocused;\n      if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n        return null;\n      }\n      var innerProps = {\n        onMouseDown: this.onClearIndicatorMouseDown,\n        onTouchEnd: this.onClearIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderLoadingIndicator\",\n    value: function renderLoadingIndicator() {\n      var _this$getComponents4 = this.getComponents(),\n        LoadingIndicator = _this$getComponents4.LoadingIndicator;\n      var commonProps = this.commonProps;\n      var _this$props11 = this.props,\n        isDisabled = _this$props11.isDisabled,\n        isLoading = _this$props11.isLoading;\n      var isFocused = this.state.isFocused;\n      if (!LoadingIndicator || !isLoading) return null;\n      var innerProps = {\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderIndicatorSeparator\",\n    value: function renderIndicatorSeparator() {\n      var _this$getComponents5 = this.getComponents(),\n        DropdownIndicator = _this$getComponents5.DropdownIndicator,\n        IndicatorSeparator = _this$getComponents5.IndicatorSeparator;\n\n      // separator doesn't make sense without the dropdown indicator\n      if (!DropdownIndicator || !IndicatorSeparator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderDropdownIndicator\",\n    value: function renderDropdownIndicator() {\n      var _this$getComponents6 = this.getComponents(),\n        DropdownIndicator = _this$getComponents6.DropdownIndicator;\n      if (!DropdownIndicator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      var innerProps = {\n        onMouseDown: this.onDropdownIndicatorMouseDown,\n        onTouchEnd: this.onDropdownIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderMenu\",\n    value: function renderMenu() {\n      var _this4 = this;\n      var _this$getComponents7 = this.getComponents(),\n        Group = _this$getComponents7.Group,\n        GroupHeading = _this$getComponents7.GroupHeading,\n        Menu = _this$getComponents7.Menu,\n        MenuList = _this$getComponents7.MenuList,\n        MenuPortal = _this$getComponents7.MenuPortal,\n        LoadingMessage = _this$getComponents7.LoadingMessage,\n        NoOptionsMessage = _this$getComponents7.NoOptionsMessage,\n        Option = _this$getComponents7.Option;\n      var commonProps = this.commonProps;\n      var focusedOption = this.state.focusedOption;\n      var _this$props12 = this.props,\n        captureMenuScroll = _this$props12.captureMenuScroll,\n        inputValue = _this$props12.inputValue,\n        isLoading = _this$props12.isLoading,\n        loadingMessage = _this$props12.loadingMessage,\n        minMenuHeight = _this$props12.minMenuHeight,\n        maxMenuHeight = _this$props12.maxMenuHeight,\n        menuIsOpen = _this$props12.menuIsOpen,\n        menuPlacement = _this$props12.menuPlacement,\n        menuPosition = _this$props12.menuPosition,\n        menuPortalTarget = _this$props12.menuPortalTarget,\n        menuShouldBlockScroll = _this$props12.menuShouldBlockScroll,\n        menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView,\n        noOptionsMessage = _this$props12.noOptionsMessage,\n        onMenuScrollToTop = _this$props12.onMenuScrollToTop,\n        onMenuScrollToBottom = _this$props12.onMenuScrollToBottom;\n      if (!menuIsOpen) return null;\n\n      // TODO: Internal Option Type here\n      var render = function render(props, id) {\n        var type = props.type,\n          data = props.data,\n          isDisabled = props.isDisabled,\n          isSelected = props.isSelected,\n          label = props.label,\n          value = props.value;\n        var isFocused = focusedOption === data;\n        var onHover = isDisabled ? undefined : function () {\n          return _this4.onOptionHover(data);\n        };\n        var onSelect = isDisabled ? undefined : function () {\n          return _this4.selectOption(data);\n        };\n        var optionId = \"\".concat(_this4.getElementId('option'), \"-\").concat(id);\n        var innerProps = {\n          id: optionId,\n          onClick: onSelect,\n          onMouseMove: onHover,\n          onMouseOver: onHover,\n          tabIndex: -1,\n          role: 'option',\n          'aria-selected': _this4.isAppleDevice ? undefined : isSelected // is not supported on Apple devices\n        };\n\n        return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, {\n          innerProps: innerProps,\n          data: data,\n          isDisabled: isDisabled,\n          isSelected: isSelected,\n          key: optionId,\n          label: label,\n          type: type,\n          value: value,\n          isFocused: isFocused,\n          innerRef: isFocused ? _this4.getFocusedOptionRef : undefined\n        }), _this4.formatOptionLabel(props.data, 'menu'));\n      };\n      var menuUI;\n      if (this.hasOptions()) {\n        menuUI = this.getCategorizedOptions().map(function (item) {\n          if (item.type === 'group') {\n            var _data = item.data,\n              options = item.options,\n              groupIndex = item.index;\n            var groupId = \"\".concat(_this4.getElementId('group'), \"-\").concat(groupIndex);\n            var headingId = \"\".concat(groupId, \"-heading\");\n            return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, {\n              key: groupId,\n              data: _data,\n              options: options,\n              Heading: GroupHeading,\n              headingProps: {\n                id: headingId,\n                data: item.data\n              },\n              label: _this4.formatGroupLabel(item.data)\n            }), item.options.map(function (option) {\n              return render(option, \"\".concat(groupIndex, \"-\").concat(option.index));\n            }));\n          } else if (item.type === 'option') {\n            return render(item, \"\".concat(item.index));\n          }\n        });\n      } else if (isLoading) {\n        var message = loadingMessage({\n          inputValue: inputValue\n        });\n        if (message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message);\n      } else {\n        var _message = noOptionsMessage({\n          inputValue: inputValue\n        });\n        if (_message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message);\n      }\n      var menuPlacementProps = {\n        minMenuHeight: minMenuHeight,\n        maxMenuHeight: maxMenuHeight,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition,\n        menuShouldScrollIntoView: menuShouldScrollIntoView\n      };\n      var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref4) {\n        var ref = _ref4.ref,\n          _ref4$placerProps = _ref4.placerProps,\n          placement = _ref4$placerProps.placement,\n          maxHeight = _ref4$placerProps.maxHeight;\n        return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n          innerRef: ref,\n          innerProps: {\n            onMouseDown: _this4.onMenuMouseDown,\n            onMouseMove: _this4.onMenuMouseMove\n          },\n          isLoading: isLoading,\n          placement: placement\n        }), /*#__PURE__*/React.createElement(ScrollManager, {\n          captureEnabled: captureMenuScroll,\n          onTopArrive: onMenuScrollToTop,\n          onBottomArrive: onMenuScrollToBottom,\n          lockEnabled: menuShouldBlockScroll\n        }, function (scrollTargetRef) {\n          return /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, {\n            innerRef: function innerRef(instance) {\n              _this4.getMenuListRef(instance);\n              scrollTargetRef(instance);\n            },\n            innerProps: {\n              role: 'listbox',\n              'aria-multiselectable': commonProps.isMulti,\n              id: _this4.getElementId('listbox')\n            },\n            isLoading: isLoading,\n            maxHeight: maxHeight,\n            focusedOption: focusedOption\n          }), menuUI);\n        }));\n      });\n\n      // positioning behaviour is almost identical for portalled and fixed,\n      // so we use the same component. the actual portalling logic is forked\n      // within the component based on `menuPosition`\n      return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, {\n        appendTo: menuPortalTarget,\n        controlElement: this.controlRef,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition\n      }), menuElement) : menuElement;\n    }\n  }, {\n    key: \"renderFormField\",\n    value: function renderFormField() {\n      var _this5 = this;\n      var _this$props13 = this.props,\n        delimiter = _this$props13.delimiter,\n        isDisabled = _this$props13.isDisabled,\n        isMulti = _this$props13.isMulti,\n        name = _this$props13.name,\n        required = _this$props13.required;\n      var selectValue = this.state.selectValue;\n      if (required && !this.hasValue() && !isDisabled) {\n        return /*#__PURE__*/React.createElement(RequiredInput$1, {\n          name: name,\n          onFocus: this.onValueInputFocus\n        });\n      }\n      if (!name || isDisabled) return;\n      if (isMulti) {\n        if (delimiter) {\n          var value = selectValue.map(function (opt) {\n            return _this5.getOptionValue(opt);\n          }).join(delimiter);\n          return /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\",\n            value: value\n          });\n        } else {\n          var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n            return /*#__PURE__*/React.createElement(\"input\", {\n              key: \"i-\".concat(i),\n              name: name,\n              type: \"hidden\",\n              value: _this5.getOptionValue(opt)\n            });\n          }) : /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\",\n            value: \"\"\n          });\n          return /*#__PURE__*/React.createElement(\"div\", null, input);\n        }\n      } else {\n        var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n        return /*#__PURE__*/React.createElement(\"input\", {\n          name: name,\n          type: \"hidden\",\n          value: _value\n        });\n      }\n    }\n  }, {\n    key: \"renderLiveRegion\",\n    value: function renderLiveRegion() {\n      var commonProps = this.commonProps;\n      var _this$state6 = this.state,\n        ariaSelection = _this$state6.ariaSelection,\n        focusedOption = _this$state6.focusedOption,\n        focusedValue = _this$state6.focusedValue,\n        isFocused = _this$state6.isFocused,\n        selectValue = _this$state6.selectValue;\n      var focusableOptions = this.getFocusableOptions();\n      return /*#__PURE__*/React.createElement(LiveRegion$1, _extends({}, commonProps, {\n        id: this.getElementId('live-region'),\n        ariaSelection: ariaSelection,\n        focusedOption: focusedOption,\n        focusedValue: focusedValue,\n        isFocused: isFocused,\n        selectValue: selectValue,\n        focusableOptions: focusableOptions,\n        isAppleDevice: this.isAppleDevice\n      }));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$getComponents8 = this.getComponents(),\n        Control = _this$getComponents8.Control,\n        IndicatorsContainer = _this$getComponents8.IndicatorsContainer,\n        SelectContainer = _this$getComponents8.SelectContainer,\n        ValueContainer = _this$getComponents8.ValueContainer;\n      var _this$props14 = this.props,\n        className = _this$props14.className,\n        id = _this$props14.id,\n        isDisabled = _this$props14.isDisabled,\n        menuIsOpen = _this$props14.menuIsOpen;\n      var isFocused = this.state.isFocused;\n      var commonProps = this.commonProps = this.getCommonProps();\n      return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, {\n        className: className,\n        innerProps: {\n          id: id,\n          onKeyDown: this.onKeyDown\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, {\n        innerRef: this.getControlRef,\n        innerProps: {\n          onMouseDown: this.onControlMouseDown,\n          onTouchEnd: this.onControlTouchEnd\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused,\n        menuIsOpen: menuIsOpen\n      }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(props, state) {\n      var prevProps = state.prevProps,\n        clearFocusValueOnUpdate = state.clearFocusValueOnUpdate,\n        inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate,\n        ariaSelection = state.ariaSelection,\n        isFocused = state.isFocused,\n        prevWasFocused = state.prevWasFocused,\n        instancePrefix = state.instancePrefix;\n      var options = props.options,\n        value = props.value,\n        menuIsOpen = props.menuIsOpen,\n        inputValue = props.inputValue,\n        isMulti = props.isMulti;\n      var selectValue = cleanValue(value);\n      var newMenuOptionsState = {};\n      if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) {\n        var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : [];\n        var focusableOptionsWithIds = menuIsOpen ? buildFocusableOptionsWithIds(buildCategorizedOptions(props, selectValue), \"\".concat(instancePrefix, \"-option\")) : [];\n        var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null;\n        var focusedOption = getNextFocusedOption(state, focusableOptions);\n        var focusedOptionId = getFocusedOptionId(focusableOptionsWithIds, focusedOption);\n        newMenuOptionsState = {\n          selectValue: selectValue,\n          focusedOption: focusedOption,\n          focusedOptionId: focusedOptionId,\n          focusableOptionsWithIds: focusableOptionsWithIds,\n          focusedValue: focusedValue,\n          clearFocusValueOnUpdate: false\n        };\n      }\n      // some updates should toggle the state of the input visibility\n      var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? {\n        inputIsHidden: inputIsHiddenAfterUpdate,\n        inputIsHiddenAfterUpdate: undefined\n      } : {};\n      var newAriaSelection = ariaSelection;\n      var hasKeptFocus = isFocused && prevWasFocused;\n      if (isFocused && !hasKeptFocus) {\n        // If `value` or `defaultValue` props are not empty then announce them\n        // when the Select is initially focused\n        newAriaSelection = {\n          value: valueTernary(isMulti, selectValue, selectValue[0] || null),\n          options: selectValue,\n          action: 'initial-input-focus'\n        };\n        hasKeptFocus = !prevWasFocused;\n      }\n\n      // If the 'initial-input-focus' action has been set already\n      // then reset the ariaSelection to null\n      if ((ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus') {\n        newAriaSelection = null;\n      }\n      return _objectSpread(_objectSpread(_objectSpread({}, newMenuOptionsState), newInputIsHiddenState), {}, {\n        prevProps: props,\n        ariaSelection: newAriaSelection,\n        prevWasFocused: hasKeptFocus\n      });\n    }\n  }]);\n  return Select;\n}(Component);\nSelect.defaultProps = defaultProps;\n\nexport { Select as S, defaultProps as a, getOptionLabel$1 as b, createFilter as c, defaultTheme as d, getOptionValue$1 as g, mergeStyles as m };\n","import { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nexport { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { forwardRef, useMemo } from 'react';\nimport { S as Select } from './Select-aab027f3.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-aab027f3.esm.js';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nexport { c as components } from './index-641ee5b8.esm.js';\nimport '@babel/runtime/helpers/objectSpread2';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/classCallCheck';\nimport '@babel/runtime/helpers/createClass';\nimport '@babel/runtime/helpers/inherits';\nimport '@babel/runtime/helpers/createSuper';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport 'memoize-one';\nimport '@babel/runtime/helpers/typeof';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport '@floating-ui/dom';\nimport 'use-isomorphic-layout-effect';\n\nvar StateManagedSelect = /*#__PURE__*/forwardRef(function (props, ref) {\n  var baseSelectProps = useStateManager(props);\n  return /*#__PURE__*/React.createElement(Select, _extends({\n    ref: ref\n  }, baseSelectProps));\n});\nvar StateManagedSelect$1 = StateManagedSelect;\n\nvar NonceProvider = (function (_ref) {\n  var nonce = _ref.nonce,\n    children = _ref.children,\n    cacheKey = _ref.cacheKey;\n  var emotionCache = useMemo(function () {\n    return createCache({\n      key: cacheKey,\n      nonce: nonce\n    });\n  }, [cacheKey, nonce]);\n  return /*#__PURE__*/React.createElement(CacheProvider, {\n    value: emotionCache\n  }, children);\n});\n\nexport { NonceProvider, StateManagedSelect$1 as default };\n","import Select, { components, createFilter, Props } from 'react-select';\r\nimport { ChevronDown, ChevronUp, X } from 'lucide-react';\r\nimport { cva } from 'class-variance-authority';\r\nimport { JSX } from 'react/jsx-runtime';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst MultiValue = (props: any, maxTagCount: number) => {\r\n  const { index, getValue } = props;\r\n  const selectedValues = getValue();\r\n\r\n  if (index < maxTagCount) {\r\n    return <components.MultiValue {...props} />;\r\n  }\r\n\r\n  if (index === maxTagCount) {\r\n    const extraCount = selectedValues.length - maxTagCount;\r\n    return <div className='ml-1 text-sm'>+{extraCount}</div>;\r\n  }\r\n\r\n  return null;\r\n};\r\nconst selectVariants = cva('text-sm! rounded-none!', {\r\n  variants: {\r\n    variant: {\r\n      light: 'border! border-primary-gray-400! dark:border-primary-gray-500!',\r\n      normal: 'border-2! border-primary-black! dark:border-primary-gray-300!',\r\n    },\r\n    size: {\r\n      sm: 'p-0! min-h-[40px]!',\r\n      base: 'min-h-[48px]! px-0! py-0.5!',\r\n    },\r\n    isDisabled: {\r\n      true: 'bg-primary-gray-200! dark:bg-primary-gray-650! border-primary-gray-400! dark:border-primary-gray-500!',\r\n      false: 'bg-primary-white! dark:bg-primary-gray-650!',\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    variant: 'normal',\r\n    size: 'base',\r\n    isDisabled: false,\r\n  },\r\n});\r\n\r\ninterface SelectPropsDataType extends Props {\r\n  truncateLabel?: boolean;\r\n  variant?: 'light' | 'normal';\r\n  size?: 'sm' | 'base';\r\n  maxTagCount?: number;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction CustomDropdownIndicator(props: any, isDisabled?: boolean) {\r\n  const { selectProps } = props;\r\n  return (\r\n    <components.DropdownIndicator {...props}>\r\n      {selectProps.menuIsOpen ? (\r\n        <ChevronUp\r\n          className={cn(\r\n            'h-6 w-6',\r\n            isDisabled ? 'stroke-primary-gray-400' : 'stroke-accent-red dark:stroke-primary-white',\r\n          )}\r\n        />\r\n      ) : (\r\n        <ChevronDown\r\n          className={cn(\r\n            'h-6 w-6',\r\n            isDisabled ? 'stroke-primary-gray-400' : 'stroke-accent-red dark:stroke-primary-white',\r\n          )}\r\n        />\r\n      )}\r\n    </components.DropdownIndicator>\r\n  );\r\n}\r\n\r\nconst customComponents = (maxTagCount?: number, isDisabled?: boolean) => ({\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  DropdownIndicator: (props: any) => CustomDropdownIndicator(props, isDisabled),\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  MultiValue: (props: any) => MultiValue(props, maxTagCount || Infinity),\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  MultiValueRemove: (props: any) => {\r\n    const { innerRef, innerProps } = props;\r\n    return (\r\n      <div\r\n        {...innerRef}\r\n        {...innerProps}\r\n        className='p-1.5 rounded text-primary-gray-600 hover:text-accent-dark-red dark:text-primary-gray-100 dark:hover:text-accent-light-red'\r\n      >\r\n        <X size={14} />\r\n      </div>\r\n    );\r\n  },\r\n});\r\n\r\nfunction DropdownSelect({\r\n  className,\r\n  variant,\r\n  size,\r\n  truncateLabel,\r\n  placeholder,\r\n  maxTagCount,\r\n  isDisabled,\r\n  ...props\r\n}: SelectPropsDataType): JSX.Element {\r\n  return (\r\n    <Select\r\n      {...props}\r\n      isDisabled={isDisabled}\r\n      placeholder={placeholder || 'Select...'}\r\n      classNames={{\r\n        control: () =>\r\n          cn(selectVariants({ variant, size, isDisabled: isDisabled || false }), className),\r\n        singleValue: state =>\r\n          cn(\r\n            'text-base',\r\n            state.isDisabled\r\n              ? 'text-primary-gray-500! dark:text-primary-gray-500! '\r\n              : 'text-primary-black! dark:text-primary-white!',\r\n          ),\r\n        placeholder: () => 'text-primary-gray-550! dark:text-primary-400! text-base',\r\n        group: () => 'py-0!',\r\n        groupHeading: () =>\r\n          'font-bold! text-base! normal-case! py-[12px]! m-0! bg-primary-gray-300 dark:bg-primary-gray-600 text-primary-gray-700! dark:text-primary-white!',\r\n        input: () => 'text-base undp-select-input',\r\n        multiValue: () =>\r\n          'bg-primary-gray-300 dark:bg-primary-gray-550 rounded-sm border border-primary-gray-400 dark:border-primary-gray-600',\r\n        multiValueLabel: () =>\r\n          `px-1.5! py-1! text-sm text-primary-black dark:text-primary-white ${\r\n            truncateLabel ? ' max-w-[72px] truncate' : ''\r\n          }`,\r\n        multiValueRemove: () => 'hover:bg-primary-gray-400 dark:[&_svg]:stroke-primary-white!',\r\n        valueContainer: () => 'px-2 py-[2px]',\r\n        option: state =>\r\n          cn(\r\n            'bg-transparent! text-base',\r\n            state.isSelected\r\n              ? 'bg-primary-blue-600! text-primary-white dark:bg-primary-blue-600! dark:text-primary-gray-700 hover:bg-primary-blue-700! dark:hover:bg-primary-blue-700!'\r\n              : 'text-primary-black dark:text-primary-white hover:bg-primary-blue-100! dark:hover:bg-primary-blue-700! hover:text-primary-black! dark:hover:text-primary-white!',\r\n          ),\r\n        menu: () =>\r\n          'bg-primary-white! rounded-none! mt-1! border-0! shadow-lg! p-0! dark:bg-primary-gray-650!',\r\n        menuList: () => 'undp-scrollbar pt-0! pb-0!',\r\n      }}\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      components={customComponents(maxTagCount, isDisabled) as any}\r\n    />\r\n  );\r\n}\r\n\r\nexport { DropdownSelect, createFilter };\r\n","import React from 'react';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface ParagraphProps extends React.HTMLAttributes<HTMLParagraphElement> {\r\n  className?: string;\r\n}\r\n\r\nconst paragraphVariant = cva('mt-0 ml-0 mr-0', {\r\n  variants: {\r\n    size: {\r\n      xs: 'text-xs',\r\n      sm: 'text-sm',\r\n      base: 'text-base',\r\n      'base-responsive': 'text-base md:text-xl',\r\n      lg: 'text-lg',\r\n      xl: 'text-xl',\r\n    },\r\n    leading: {\r\n      none: 'leading-none',\r\n      xs: 'leading-[1.25]',\r\n      sm: 'leading-[1.375]',\r\n      base: 'leading-[1.4]',\r\n      lg: 'leading-[1.625]',\r\n      xl: 'leading-[2]',\r\n    },\r\n    marginBottom: {\r\n      none: 'mb-0',\r\n      '3xs': 'mb-1',\r\n      '2xs': 'mb-2',\r\n      xs: 'mb-3',\r\n      sm: 'mb-4',\r\n      base: 'mb-5',\r\n      lg: 'mb-6',\r\n      xl: 'mb-7',\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    size: 'base-responsive',\r\n    leading: 'base',\r\n    marginBottom: 'base',\r\n  },\r\n});\r\nfunction P({\r\n  children,\r\n  className,\r\n  size,\r\n  leading,\r\n  marginBottom,\r\n  ...props\r\n}: ParagraphProps & VariantProps<typeof paragraphVariant>) {\r\n  return (\r\n    <p {...props} className={cn(paragraphVariant({ size, leading, marginBottom }), className)}>\r\n      {children}\r\n    </p>\r\n  );\r\n}\r\ninterface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\r\n  className?: string;\r\n}\r\n\r\nconst heading1Variant = cva('mt-0 ml-0 mr-0 p-0 font-bold uppercase', {\r\n  variants: {\r\n    marginBottom: {\r\n      none: 'mb-0',\r\n      '2xs': 'mb-1',\r\n      xs: 'mb-2',\r\n      sm: 'mb-3',\r\n      'base-responsive': 'mb-3 md:mb-4',\r\n      base: 'mb-4',\r\n      lg: 'mb-5',\r\n      xl: 'mb-6',\r\n    },\r\n    size: {\r\n      base: 'text-[2.938rem] md:text-[5.125rem] lg:text-[6.25rem] tracking-[0.06rem] leading-[1.08]',\r\n      sm: 'text-[2.5rem] md:text-[2.813rem] lg:text-[3.438rem] leading-[1.1]',\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    marginBottom: 'base-responsive',\r\n    size: 'base',\r\n  },\r\n});\r\nfunction H1({\r\n  children,\r\n  className,\r\n  marginBottom,\r\n  size,\r\n  ...props\r\n}: HeadingProps & VariantProps<typeof heading1Variant>) {\r\n  return (\r\n    <h1 {...props} className={cn(heading1Variant({ marginBottom, size }), className)}>\r\n      {children}\r\n    </h1>\r\n  );\r\n}\r\n\r\nconst headingVariant = cva('mt-0 ml-0 mr-0 p-0', {\r\n  variants: {\r\n    marginBottom: {\r\n      none: 'mb-0',\r\n      '2xs': 'mb-1',\r\n      xs: 'mb-2',\r\n      sm: 'mb-3',\r\n      'base-responsive': 'mb-3 md:mb-4',\r\n      base: 'mb-4',\r\n      lg: 'mb-5',\r\n      xl: 'mb-6',\r\n    },\r\n  },\r\n  defaultVariants: { marginBottom: 'base-responsive' },\r\n});\r\nfunction H2({\r\n  children,\r\n  className,\r\n  marginBottom,\r\n  ...props\r\n}: HeadingProps & VariantProps<typeof headingVariant>) {\r\n  return (\r\n    <h2\r\n      {...props}\r\n      className={cn(\r\n        'text-[2.5rem] md:text-[2.813rem] lg:text-[3.438rem] font-bold leading-[1.1]',\r\n        headingVariant({ marginBottom }),\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </h2>\r\n  );\r\n}\r\n\r\nfunction H3({\r\n  children,\r\n  className,\r\n  marginBottom,\r\n  ...props\r\n}: HeadingProps & VariantProps<typeof headingVariant>) {\r\n  return (\r\n    <h3\r\n      {...props}\r\n      className={cn(\r\n        'text-[1.875rem] md:text-[2.188rem] font-semibold leading-[1.15]',\r\n        headingVariant({ marginBottom }),\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </h3>\r\n  );\r\n}\r\n\r\nfunction H4({\r\n  children,\r\n  className,\r\n  marginBottom,\r\n  ...props\r\n}: HeadingProps & VariantProps<typeof headingVariant>) {\r\n  return (\r\n    <h4\r\n      {...props}\r\n      className={cn(\r\n        'text-[1.563rem] md:text-[2.188rem] font-normal leading-[1.15]',\r\n        headingVariant({ marginBottom }),\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </h4>\r\n  );\r\n}\r\n\r\nfunction H5({\r\n  children,\r\n  className,\r\n  marginBottom,\r\n  ...props\r\n}: HeadingProps & VariantProps<typeof headingVariant>) {\r\n  return (\r\n    <h5\r\n      {...props}\r\n      className={cn(\r\n        'text-[1.25rem] md:text-[1.563rem] font-normal leading-[1.15]',\r\n        headingVariant({ marginBottom }),\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </h5>\r\n  );\r\n}\r\n\r\nfunction H6({\r\n  children,\r\n  className,\r\n  marginBottom,\r\n  ...props\r\n}: HeadingProps & VariantProps<typeof headingVariant>) {\r\n  return (\r\n    <h6\r\n      {...props}\r\n      className={cn(\r\n        'text-base font-bold leading-[1.15] uppercase tracking-[0.48px]',\r\n        headingVariant({ marginBottom }),\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </h6>\r\n  );\r\n}\r\n\r\nfunction Cite({\r\n  children,\r\n  className,\r\n  marginBottom,\r\n  ...props\r\n}: HeadingProps & VariantProps<typeof headingVariant>) {\r\n  return (\r\n    <cite\r\n      {...props}\r\n      className={cn(\r\n        'text-xl md:text-2xl leading-[1.1] block font-normal',\r\n        headingVariant({ marginBottom }),\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </cite>\r\n  );\r\n}\r\n\r\nfunction Code({ children, className, ...props }: HeadingProps) {\r\n  return (\r\n    <code\r\n      {...props}\r\n      className={cn(\r\n        'font-mono mt-0 text-base bg-primary-gray-200 dark:bg-primary-gray-600 px-2 pb-2 text-primary-black dark:text-primary-white',\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </code>\r\n  );\r\n}\r\n\r\ninterface BlockquoteProps extends React.HTMLAttributes<HTMLQuoteElement> {\r\n  className?: string;\r\n}\r\n\r\nfunction Blockquote({\r\n  children,\r\n  className,\r\n  marginBottom,\r\n  ...props\r\n}: BlockquoteProps & VariantProps<typeof headingVariant>) {\r\n  return (\r\n    <blockquote\r\n      {...props}\r\n      className={cn(\r\n        'text-[1.625rem] md:text-[2.188rem] font-semibold leading-[1.1] md:leading-[1.25]',\r\n        headingVariant({ marginBottom }),\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </blockquote>\r\n  );\r\n}\r\n\r\ninterface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\r\n  className?: string;\r\n}\r\n\r\nfunction A({ children, className, ...props }: LinkProps) {\r\n  return (\r\n    <a\r\n      {...props}\r\n      className={cn(\r\n        'undp-link light text-primary-black dark:text-primary-white dark:text-primary-white bg-double-red dark:bg-double-white',\r\n        'cursor-pointer no-underline focus-visible:outline-hidden focus-visible:shadow-[0_0_0_#0468b1]',\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </a>\r\n  );\r\n}\r\n\r\nexport { H1, H2, H3, H4, H5, H6, Cite, Code, Blockquote, P, A };\r\n","import React, { useState } from 'react';\r\nimport { Upload, Trash2 } from 'lucide-react';\r\n\r\nimport { Badge } from './badge';\r\nimport { P } from './typography';\r\nimport { Label } from './label';\r\n\r\nimport { cn, generateRandomId } from '@/lib/utils';\r\nimport { Button } from '@/components/ui/button';\r\n\r\ninterface Props extends React.InputHTMLAttributes<HTMLInputElement> {\r\n  onFileChange?: (_d: File[]) => void;\r\n}\r\n\r\nfunction FileUpload({ onFileChange, children, ...props }: Props) {\r\n  const idForHtml = props.id || generateRandomId();\r\n  const [files, setFiles] = useState<File[]>([]);\r\n\r\n  const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n    if (event.target.files) {\r\n      let updatedFiles = [...Array.from(event.target.files)];\r\n      if (props.multiple) {\r\n        updatedFiles = [...files, ...Array.from(event.target.files)];\r\n      }\r\n      setFiles(updatedFiles);\r\n      onFileChange?.(updatedFiles);\r\n    }\r\n  };\r\n  const handleRemoveFile = (index: number) => {\r\n    const updatedFiles = files.filter((_, i) => i !== index);\r\n    setFiles(updatedFiles);\r\n    onFileChange?.(updatedFiles);\r\n  };\r\n\r\n  return (\r\n    <>\r\n      <div className={cn('flex flex-col items-center gap-4 mb-2.5 w-full', props.className)}>\r\n        <input\r\n          {...props}\r\n          id={idForHtml}\r\n          type='file'\r\n          className='hidden'\r\n          onChange={handleFileChange}\r\n        />\r\n\r\n        {/* Custom Upload Button */}\r\n        <label htmlFor={idForHtml} className='flex w-full'>\r\n          {children || (\r\n            <div className='flex flex-col w-full bg-primary-gray-200 dark:bg-primary-gray-600 px-4 py-6 items-center gap-2 border border-primary-gray-300 dark:border-primary-gray-550'>\r\n              <Upload className='w-7 h-7 stroke-1 stroke-primary-gray-500 dark:stroke-primary-gray-400' />\r\n              <P className='text-primary-gray-550 dark:text-primary-gray-300 text-sm md:text-sm'>\r\n                Click on this area to upload\r\n              </P>\r\n            </div>\r\n          )}\r\n        </label>\r\n      </div>\r\n      {files.length > 0 ? (\r\n        <>\r\n          <Label>File(s) uploaded</Label>\r\n          <div className='w-full flex flex-wrap gap-2.5 justify-left mt-1'>\r\n            {files?.map((file, index) => (\r\n              <Badge\r\n                key={index}\r\n                variant='gray'\r\n                className='flex gap-4 bg-primary-gray-200 dark:bg-primary-gray-600 border border-primary-gray-300 dark:border-primary-gray-600 pr-4 pl-4'\r\n              >\r\n                <span className='truncate text-primary-gray-500 dark:text-primary-gray-400 text-base'>\r\n                  {file.name}\r\n                </span>\r\n                <Button variant='icon' padding='none' onClick={() => handleRemoveFile(index)}>\r\n                  <Trash2 className='w-4 h-4 stroke-accent-red' />\r\n                </Button>\r\n              </Badge>\r\n            ))}\r\n          </div>\r\n        </>\r\n      ) : null}\r\n    </>\r\n  );\r\n}\r\n\r\nexport { FileUpload };\r\n","import React from 'react';\r\n\r\nimport { H5, P } from './typography';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface FooterProps extends React.HTMLAttributes<HTMLElement> {\r\n  className?: string;\r\n  children?: React.ReactNode;\r\n}\r\n\r\nfunction Footer({ className, children, ...props }: FooterProps) {\r\n  return (\r\n    <footer\r\n      {...props}\r\n      className={cn(\r\n        'bg-primary-blue-600 text-primary-white w-full pt-14 px-3 pb-12 h-auto',\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </footer>\r\n  );\r\n}\r\n\r\ninterface FooterLogoUnitProps extends React.HTMLAttributes<HTMLElement> {\r\n  className?: string;\r\n  link?: string;\r\n  children?: React.ReactNode;\r\n}\r\n\r\nfunction FooterLogoUnit({ className, link, children, ...props }: FooterLogoUnitProps) {\r\n  return (\r\n    <div\r\n      {...props}\r\n      className={cn(\r\n        'flex justify-between mb-8 flex-wrap pt-0 px-3 pb-12 border-b-primary-white border-b items-center',\r\n        className,\r\n      )}\r\n    >\r\n      <div className='flex items-center m-0 gap-4'>\r\n        <a href={link || './'} target='_blank' rel='noreferrer'>\r\n          <img\r\n            alt='undp logo'\r\n            src='https://design.undp.org/static/media/undp-logo-white.36e69590.svg'\r\n            className='w-[72px]'\r\n          />\r\n        </a>\r\n        <H5 className='mb-0 text-primary-white md:mb-0'>\r\n          United Nations\r\n          <br />\r\n          Development Programme\r\n        </H5>\r\n      </div>\r\n      <div>{children}</div>\r\n    </div>\r\n  );\r\n}\r\n\r\ninterface FooterMainNavUnitProps extends React.HTMLAttributes<HTMLElement> {\r\n  children?: React.ReactNode;\r\n  className?: string;\r\n}\r\n\r\nfunction FooterMainNavUnit({ className, children, ...props }: FooterMainNavUnitProps) {\r\n  return (\r\n    <div {...props} className={className}>\r\n      {children}\r\n    </div>\r\n  );\r\n}\r\n\r\ninterface FooterCopyrightUnitProps extends React.HTMLAttributes<HTMLElement> {\r\n  children?: React.ReactNode;\r\n  className?: string;\r\n}\r\n\r\nfunction FooterCopyrightUnit({ className, children, ...props }: FooterCopyrightUnitProps) {\r\n  return (\r\n    <div {...props} className={cn('flex justify-between flex-wrap items-center mt-6', className)}>\r\n      <P className='m-0 md:m-0 py-0 px-0 text-base'>© United Nations Development Programme</P>\r\n      <div>{children}</div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport { Footer, FooterLogoUnit, FooterCopyrightUnit, FooterMainNavUnit };\r\n","import React from 'react';\r\nimport { Menu, X } from 'lucide-react';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface HeaderProps extends React.HTMLAttributes<HTMLElement> {\r\n  className?: string;\r\n  children?: React.ReactNode;\r\n}\r\n\r\nfunction Header({ className, children, ...props }: HeaderProps) {\r\n  return (\r\n    <header\r\n      {...props}\r\n      className={cn(\r\n        'bg-primary-gray-100 dark:bg-primary-gray-650 shadow-header left-0 fixed top-0 w-full z-10 relative h-[75px] md:h-header',\r\n        className,\r\n      )}\r\n    >\r\n      <div className='max-w-full flex py-0 px-6 gap-4 justify-between items-center'>{children}</div>\r\n    </header>\r\n  );\r\n}\r\n\r\ninterface HeaderLogoUnitProps extends React.HTMLAttributes<HTMLElement> {\r\n  className?: string;\r\n  siteSubName?: string;\r\n  siteName: string;\r\n  hyperlink?: string;\r\n}\r\n\r\nfunction HeaderLogoUnit({\r\n  className,\r\n  siteName,\r\n  siteSubName,\r\n  hyperlink,\r\n  ...props\r\n}: HeaderLogoUnitProps) {\r\n  return (\r\n    <div {...props} className={cn('flex items-center', className)}>\r\n      <a\r\n        href={hyperlink || './'}\r\n        style={{ textDecoration: 'none' }}\r\n        className='logo-sub-head flex gap-6 items-center'\r\n      >\r\n        <img\r\n          src='https://design.undp.org/static/media/undp-logo-blue.4f32e17f.svg'\r\n          alt='UNDP Logo'\r\n          className='w-[40px] h-[82px] md:w-[60px] md:h-[122px] z-100'\r\n        />\r\n        <div>\r\n          {siteSubName ? (\r\n            <div className='leading-[1.142] border-b border-b-primary-gray-500 dark:border-b-primary-gray-550 pb-px uppercase font-semibold text-primary-gray-600 dark:text-primary-gray-200 pb-px mx-0 mt-0 mb-[4.8px] text-xs inline-block no-underline'>\r\n              {siteSubName}\r\n            </div>\r\n          ) : null}\r\n          <div className='text-primary-black dark:text-primary-white p-0 m-0 no-underline text-base lg:text-xl font-semibold leading-[1.142]'>\r\n            {siteName}\r\n          </div>\r\n        </div>\r\n      </a>\r\n    </div>\r\n  );\r\n}\r\n\r\ninterface HeaderMainNavUnitProps extends React.HTMLAttributes<HTMLElement> {\r\n  children?: React.ReactNode;\r\n  className?: string;\r\n}\r\n\r\nfunction HeaderMainNavUnit({ className, children, ...props }: HeaderMainNavUnitProps) {\r\n  const [showMenu, setShowMenu] = React.useState(false);\r\n  return (\r\n    <>\r\n      <div\r\n        {...props}\r\n        className={cn('grow justify-between gap-8 hidden text-sm uppercase md:flex', className)}\r\n      >\r\n        {children}\r\n      </div>\r\n      <div {...props} className={cn('grow justify-end gap-8 flex md:hidden', className)}>\r\n        <button\r\n          type='button'\r\n          onClick={() => {\r\n            setShowMenu(!showMenu);\r\n          }}\r\n        >\r\n          {showMenu ? (\r\n            <X className='w-6 h-6 stroke-primary-blue-600' />\r\n          ) : (\r\n            <Menu className='w-6 h-6 stroke-primary-blue-600' />\r\n          )}\r\n        </button>\r\n        {showMenu ? (\r\n          <div className='box-border h-[calc(100vh-75px)] left-0 m-0 overflow-y-auto p-[5.625rem_1.5rem_3.75rem] absolute top-full w-full backdrop-blur-[18px] bg-[rgba(247,247,247,0.8)] dark:bg-[rgba(59,72,89,0.8)]'>\r\n            {children}\r\n          </div>\r\n        ) : null}\r\n      </div>\r\n    </>\r\n  );\r\n}\r\n\r\ninterface HeaderMenuUnitProps extends React.HTMLAttributes<HTMLElement> {\r\n  children?: React.ReactNode;\r\n  className?: string;\r\n}\r\n\r\nfunction HeaderMenuUnit({ className, children, ...props }: HeaderMenuUnitProps) {\r\n  return (\r\n    <div\r\n      {...props}\r\n      className={cn(\r\n        'grid gap-4 md:gap-8 tracking-[0.42px] font-medium text-primary-black dark:text-primary-gray-200 md:flex grow items-center md:justify-center md:gap-12 [&>a]:text-base [&>a]:font-bold [&>a]:uppercase [&>a]:text-primary-black dark:[&>a]:text-primary-gray-200 md:[&>a]:text-sm md:[&>a]:font-medium [&>a]:no-underline [&>a:hover]:text-primary-blue-600 dark:[&>a:hover]:text-primary-gray-100',\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </div>\r\n  );\r\n}\r\n\r\ninterface HeaderActionsProps extends React.HTMLAttributes<HTMLElement> {\r\n  children?: React.ReactNode;\r\n  className?: string;\r\n}\r\n\r\nfunction HeaderActions({ className, children, ...props }: HeaderActionsProps) {\r\n  return (\r\n    <div\r\n      {...props}\r\n      className={cn('flex mt-6 md:mt-0 md:justify-center gap-8 items-center', className)}\r\n    >\r\n      {children}\r\n    </div>\r\n  );\r\n}\r\n\r\nexport { Header, HeaderLogoUnit, HeaderMenuUnit, HeaderActions, HeaderMainNavUnit };\r\n","\"use client\";\n\n// src/hover-card.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { jsx } from \"react/jsx-runtime\";\nvar originalBodyUserSelect;\nvar HOVERCARD_NAME = \"HoverCard\";\nvar [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n  createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [HoverCardProvider, useHoverCardContext] = createHoverCardContext(HOVERCARD_NAME);\nvar HoverCard = (props) => {\n  const {\n    __scopeHoverCard,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    openDelay = 700,\n    closeDelay = 300\n  } = props;\n  const popperScope = usePopperScope(__scopeHoverCard);\n  const openTimerRef = React.useRef(0);\n  const closeTimerRef = React.useRef(0);\n  const hasSelectionRef = React.useRef(false);\n  const isPointerDownOnContentRef = React.useRef(false);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: HOVERCARD_NAME\n  });\n  const handleOpen = React.useCallback(() => {\n    clearTimeout(closeTimerRef.current);\n    openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n  }, [openDelay, setOpen]);\n  const handleClose = React.useCallback(() => {\n    clearTimeout(openTimerRef.current);\n    if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) {\n      closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n    }\n  }, [closeDelay, setOpen]);\n  const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n  React.useEffect(() => {\n    return () => {\n      clearTimeout(openTimerRef.current);\n      clearTimeout(closeTimerRef.current);\n    };\n  }, []);\n  return /* @__PURE__ */ jsx(\n    HoverCardProvider,\n    {\n      scope: __scopeHoverCard,\n      open,\n      onOpenChange: setOpen,\n      onOpen: handleOpen,\n      onClose: handleClose,\n      onDismiss: handleDismiss,\n      hasSelectionRef,\n      isPointerDownOnContentRef,\n      children: /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children })\n    }\n  );\n};\nHoverCard.displayName = HOVERCARD_NAME;\nvar TRIGGER_NAME = \"HoverCardTrigger\";\nvar HoverCardTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeHoverCard, ...triggerProps } = props;\n    const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n    const popperScope = usePopperScope(__scopeHoverCard);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n      Primitive.a,\n      {\n        \"data-state\": context.open ? \"open\" : \"closed\",\n        ...triggerProps,\n        ref: forwardedRef,\n        onPointerEnter: composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen)),\n        onPointerLeave: composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose)),\n        onFocus: composeEventHandlers(props.onFocus, context.onOpen),\n        onBlur: composeEventHandlers(props.onBlur, context.onClose),\n        onTouchStart: composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())\n      }\n    ) });\n  }\n);\nHoverCardTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"HoverCardPortal\";\nvar [PortalProvider, usePortalContext] = createHoverCardContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar HoverCardPortal = (props) => {\n  const { __scopeHoverCard, forceMount, children, container } = props;\n  const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeHoverCard, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nHoverCardPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"HoverCardContent\";\nvar HoverCardContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(\n      HoverCardContentImpl,\n      {\n        \"data-state\": context.open ? \"open\" : \"closed\",\n        ...contentProps,\n        onPointerEnter: composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen)),\n        onPointerLeave: composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose)),\n        ref: forwardedRef\n      }\n    ) });\n  }\n);\nHoverCardContent.displayName = CONTENT_NAME;\nvar HoverCardContentImpl = React.forwardRef((props, forwardedRef) => {\n  const {\n    __scopeHoverCard,\n    onEscapeKeyDown,\n    onPointerDownOutside,\n    onFocusOutside,\n    onInteractOutside,\n    ...contentProps\n  } = props;\n  const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);\n  const popperScope = usePopperScope(__scopeHoverCard);\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const [containSelection, setContainSelection] = React.useState(false);\n  React.useEffect(() => {\n    if (containSelection) {\n      const body = document.body;\n      originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;\n      body.style.userSelect = \"none\";\n      body.style.webkitUserSelect = \"none\";\n      return () => {\n        body.style.userSelect = originalBodyUserSelect;\n        body.style.webkitUserSelect = originalBodyUserSelect;\n      };\n    }\n  }, [containSelection]);\n  React.useEffect(() => {\n    if (ref.current) {\n      const handlePointerUp = () => {\n        setContainSelection(false);\n        context.isPointerDownOnContentRef.current = false;\n        setTimeout(() => {\n          const hasSelection = document.getSelection()?.toString() !== \"\";\n          if (hasSelection) context.hasSelectionRef.current = true;\n        });\n      };\n      document.addEventListener(\"pointerup\", handlePointerUp);\n      return () => {\n        document.removeEventListener(\"pointerup\", handlePointerUp);\n        context.hasSelectionRef.current = false;\n        context.isPointerDownOnContentRef.current = false;\n      };\n    }\n  }, [context.isPointerDownOnContentRef, context.hasSelectionRef]);\n  React.useEffect(() => {\n    if (ref.current) {\n      const tabbables = getTabbableNodes(ref.current);\n      tabbables.forEach((tabbable) => tabbable.setAttribute(\"tabindex\", \"-1\"));\n    }\n  });\n  return /* @__PURE__ */ jsx(\n    DismissableLayer,\n    {\n      asChild: true,\n      disableOutsidePointerEvents: false,\n      onInteractOutside,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside: composeEventHandlers(onFocusOutside, (event) => {\n        event.preventDefault();\n      }),\n      onDismiss: context.onDismiss,\n      children: /* @__PURE__ */ jsx(\n        PopperPrimitive.Content,\n        {\n          ...popperScope,\n          ...contentProps,\n          onPointerDown: composeEventHandlers(contentProps.onPointerDown, (event) => {\n            if (event.currentTarget.contains(event.target)) {\n              setContainSelection(true);\n            }\n            context.hasSelectionRef.current = false;\n            context.isPointerDownOnContentRef.current = true;\n          }),\n          ref: composedRefs,\n          style: {\n            ...contentProps.style,\n            userSelect: containSelection ? \"text\" : void 0,\n            // Safari requires prefix\n            WebkitUserSelect: containSelection ? \"text\" : void 0,\n            // re-namespace exposed content custom properties\n            ...{\n              \"--radix-hover-card-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n              \"--radix-hover-card-content-available-width\": \"var(--radix-popper-available-width)\",\n              \"--radix-hover-card-content-available-height\": \"var(--radix-popper-available-height)\",\n              \"--radix-hover-card-trigger-width\": \"var(--radix-popper-anchor-width)\",\n              \"--radix-hover-card-trigger-height\": \"var(--radix-popper-anchor-height)\"\n            }\n          }\n        }\n      )\n    }\n  );\n});\nvar ARROW_NAME = \"HoverCardArrow\";\nvar HoverCardArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeHoverCard, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeHoverCard);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nHoverCardArrow.displayName = ARROW_NAME;\nfunction excludeTouch(eventHandler) {\n  return (event) => event.pointerType === \"touch\" ? void 0 : eventHandler();\n}\nfunction getTabbableNodes(container) {\n  const nodes = [];\n  const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n    acceptNode: (node) => {\n      return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n    }\n  });\n  while (walker.nextNode()) nodes.push(walker.currentNode);\n  return nodes;\n}\nvar Root2 = HoverCard;\nvar Trigger = HoverCardTrigger;\nvar Portal = HoverCardPortal;\nvar Content2 = HoverCardContent;\nvar Arrow2 = HoverCardArrow;\nexport {\n  Arrow2 as Arrow,\n  Content2 as Content,\n  HoverCard,\n  HoverCardArrow,\n  HoverCardContent,\n  HoverCardPortal,\n  HoverCardTrigger,\n  Portal,\n  Root2 as Root,\n  Trigger,\n  createHoverCardScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\nimport * as HoverCardPrimitive from '@radix-ui/react-hover-card';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst HoverCard = HoverCardPrimitive.Root;\r\n\r\nconst HoverCardTrigger = React.forwardRef<\r\n  React.ComponentRef<typeof HoverCardPrimitive.Trigger>,\r\n  React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n  <HoverCardPrimitive.Trigger\r\n    {...props}\r\n    ref={ref}\r\n    className={cn('cursor-pointer dark:text-primary-white text-primary-black', className)}\r\n  >\r\n    {children}\r\n  </HoverCardPrimitive.Trigger>\r\n));\r\n\r\nHoverCardTrigger.displayName = 'HoverCardTrigger';\r\nconst HoverCardContent = React.forwardRef<\r\n  React.ComponentRef<typeof HoverCardPrimitive.Content>,\r\n  React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\r\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\r\n  <HoverCardPrimitive.Content\r\n    {...props}\r\n    ref={ref}\r\n    align={align}\r\n    sideOffset={sideOffset}\r\n    className={cn(\r\n      'z-50 w-64 border border-primary-gray-300 dark:border-primary-gray-600 text-sm bg-primary-gray-100 dark:bg-primary-gray-650 p-2 text-primary-black dark:text-primary-white outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\r\n\r\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\r\n","import React from 'react';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst inputVariants = cva(\r\n  'w-full h-auto bg-primary-white dark:bg-primary-gray-650 text-primary-black dark:text-primary-white text-base transition-colors file:border-0 file:bg-transparent file:font-medium file:text-primary-gray-700 dark:file:text-primary-white focus-visible:outline-hidden focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 placeholder:text-primary-gray-550 dark:placeholder:text-primary-gray-400',\r\n  {\r\n    variants: {\r\n      variant: {\r\n        light: 'border border-primary-gray-400 dark:border-primary-gray-500',\r\n        normal: 'border-2 border-primary-black dark:border-primary-gray-300',\r\n      },\r\n      inputSize: {\r\n        sm: 'px-2.5 py-1',\r\n        base: 'p-2.5',\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      inputSize: 'base',\r\n      variant: 'normal',\r\n    },\r\n  },\r\n);\r\n\r\nconst Input = React.forwardRef<\r\n  HTMLInputElement,\r\n  React.InputHTMLAttributes<HTMLInputElement> & VariantProps<typeof inputVariants>\r\n>(({ className, inputSize, variant, ...props }, ref) => {\r\n  return (\r\n    <input {...props} ref={ref} className={cn(inputVariants({ inputSize, variant }), className)} />\r\n  );\r\n});\r\nInput.displayName = 'Input';\r\n\r\nexport { Input };\r\n","import React from 'react';\r\nimport { SearchIcon } from 'lucide-react';\r\n\r\nimport { Button } from './button';\r\nimport { Input } from './input';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst Search = React.forwardRef<\r\n  HTMLInputElement,\r\n  React.ComponentProps<'input'> & {\r\n    inputVariant?: 'light' | 'normal';\r\n    inputClassName?: string;\r\n    buttonClassName?: string;\r\n    buttonVariant?: 'tertiary' | 'icon';\r\n    showSearchButton?: boolean;\r\n    searchOnlyOnClick?: boolean;\r\n    buttonChildren?: React.ReactNode;\r\n    inputSize?: 'sm' | 'base';\r\n    onSearch?: (d?: string) => void;\r\n  }\r\n>(\r\n  (\r\n    {\r\n      className,\r\n      inputClassName,\r\n      buttonClassName,\r\n      onSearch,\r\n      searchOnlyOnClick,\r\n      buttonVariant,\r\n      buttonChildren,\r\n      showSearchButton,\r\n      inputVariant,\r\n      inputSize,\r\n      placeholder,\r\n      ...props\r\n    },\r\n    ref,\r\n  ) => {\r\n    const [query, setQuery] = React.useState<string | undefined>(undefined);\r\n    const [isFocused, setIsFocused] = React.useState(false);\r\n    return (\r\n      <div className={cn('flex gap-0', className)} ref={ref}>\r\n        <div className='relative w-full'>\r\n          <Input\r\n            {...props}\r\n            variant={inputVariant}\r\n            type='text'\r\n            className={inputClassName}\r\n            onChange={d => {\r\n              setQuery(d.target.value);\r\n              if (!searchOnlyOnClick) {\r\n                onSearch?.(d.target.value);\r\n              }\r\n            }}\r\n            inputSize={inputSize}\r\n            onKeyDown={event => {\r\n              if (event.key === 'Enter') {\r\n                onSearch?.(query);\r\n              }\r\n            }}\r\n            onFocus={() => setIsFocused(true)}\r\n            onBlur={() => setIsFocused(false)}\r\n          />\r\n          {!isFocused && (query === '' || !query) && (\r\n            <div className='absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none'>\r\n              {!buttonChildren ? (\r\n                <SearchIcon className='h-4 w-4 text-primary-gray-500 dark:text-primary-gray-400 mr-2' />\r\n              ) : null}\r\n              <span className='text-primary-gray-500 dark:text-primary-gray-400'>\r\n                {placeholder || 'Search...'}\r\n              </span>\r\n            </div>\r\n          )}\r\n        </div>\r\n        {showSearchButton === false ? null : (\r\n          <Button\r\n            variant={buttonVariant || 'icon'}\r\n            className={buttonClassName}\r\n            padding={inputSize}\r\n            onClick={() => {\r\n              onSearch?.(query);\r\n            }}\r\n          >\r\n            {buttonChildren || <SearchIcon className='stroke-2' />}\r\n          </Button>\r\n        )}\r\n      </div>\r\n    );\r\n  },\r\n);\r\nSearch.displayName = 'Search';\r\n\r\nexport { Search };\r\n","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n  return Math.min(max, Math.max(min, value));\n}\nexport {\n  clamp\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n  // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n  position: \"absolute\",\n  border: 0,\n  width: 1,\n  height: 1,\n  padding: 0,\n  margin: -1,\n  overflow: \"hidden\",\n  clip: \"rect(0, 0, 0, 0)\",\n  whiteSpace: \"nowrap\",\n  wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n  (props, forwardedRef) => {\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...props,\n        ref: forwardedRef,\n        style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n      }\n    );\n  }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n  Root,\n  VISUALLY_HIDDEN_STYLES,\n  VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { VISUALLY_HIDDEN_STYLES } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n  createCollectionScope,\n  createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nvar Select = (props) => {\n  const {\n    __scopeSelect,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    value: valueProp,\n    defaultValue,\n    onValueChange,\n    dir,\n    name,\n    autoComplete,\n    disabled,\n    required,\n    form\n  } = props;\n  const popperScope = usePopperScope(__scopeSelect);\n  const [trigger, setTrigger] = React.useState(null);\n  const [valueNode, setValueNode] = React.useState(null);\n  const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n  const direction = useDirection(dir);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: SELECT_NAME\n  });\n  const [value, setValue] = useControllableState({\n    prop: valueProp,\n    defaultProp: defaultValue,\n    onChange: onValueChange,\n    caller: SELECT_NAME\n  });\n  const triggerPointerDownPosRef = React.useRef(null);\n  const isFormControl = trigger ? form || !!trigger.closest(\"form\") : true;\n  const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n  const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsxs(\n    SelectProvider,\n    {\n      required,\n      scope: __scopeSelect,\n      trigger,\n      onTriggerChange: setTrigger,\n      valueNode,\n      onValueNodeChange: setValueNode,\n      valueNodeHasChildren,\n      onValueNodeHasChildrenChange: setValueNodeHasChildren,\n      contentId: useId(),\n      value,\n      onValueChange: setValue,\n      open,\n      onOpenChange: setOpen,\n      dir: direction,\n      triggerPointerDownPosRef,\n      disabled,\n      children: [\n        /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n          SelectNativeOptionsProvider,\n          {\n            scope: props.__scopeSelect,\n            onNativeOptionAdd: React.useCallback((option) => {\n              setNativeOptionsSet((prev) => new Set(prev).add(option));\n            }, []),\n            onNativeOptionRemove: React.useCallback((option) => {\n              setNativeOptionsSet((prev) => {\n                const optionsSet = new Set(prev);\n                optionsSet.delete(option);\n                return optionsSet;\n              });\n            }, []),\n            children\n          }\n        ) }),\n        isFormControl ? /* @__PURE__ */ jsxs(\n          SelectBubbleInput,\n          {\n            \"aria-hidden\": true,\n            required,\n            tabIndex: -1,\n            name,\n            autoComplete,\n            value,\n            onChange: (event) => setValue(event.target.value),\n            disabled,\n            form,\n            children: [\n              value === void 0 ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n              Array.from(nativeOptionsSet)\n            ]\n          },\n          nativeSelectKey\n        ) : null\n      ]\n    }\n  ) });\n};\nSelect.displayName = SELECT_NAME;\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, disabled = false, ...triggerProps } = props;\n    const popperScope = usePopperScope(__scopeSelect);\n    const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n    const isDisabled = context.disabled || disabled;\n    const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n    const getItems = useCollection(__scopeSelect);\n    const pointerTypeRef = React.useRef(\"touch\");\n    const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n      const enabledItems = getItems().filter((item) => !item.disabled);\n      const currentItem = enabledItems.find((item) => item.value === context.value);\n      const nextItem = findNextItem(enabledItems, search, currentItem);\n      if (nextItem !== void 0) {\n        context.onValueChange(nextItem.value);\n      }\n    });\n    const handleOpen = (pointerEvent) => {\n      if (!isDisabled) {\n        context.onOpenChange(true);\n        resetTypeahead();\n      }\n      if (pointerEvent) {\n        context.triggerPointerDownPosRef.current = {\n          x: Math.round(pointerEvent.pageX),\n          y: Math.round(pointerEvent.pageY)\n        };\n      }\n    };\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        role: \"combobox\",\n        \"aria-controls\": context.contentId,\n        \"aria-expanded\": context.open,\n        \"aria-required\": context.required,\n        \"aria-autocomplete\": \"none\",\n        dir: context.dir,\n        \"data-state\": context.open ? \"open\" : \"closed\",\n        disabled: isDisabled,\n        \"data-disabled\": isDisabled ? \"\" : void 0,\n        \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n        ...triggerProps,\n        ref: composedRefs,\n        onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n          event.currentTarget.focus();\n          if (pointerTypeRef.current !== \"mouse\") {\n            handleOpen(event);\n          }\n        }),\n        onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n          pointerTypeRef.current = event.pointerType;\n          const target = event.target;\n          if (target.hasPointerCapture(event.pointerId)) {\n            target.releasePointerCapture(event.pointerId);\n          }\n          if (event.button === 0 && event.ctrlKey === false && event.pointerType === \"mouse\") {\n            handleOpen(event);\n            event.preventDefault();\n          }\n        }),\n        onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n          const isTypingAhead = searchRef.current !== \"\";\n          const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n          if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n          if (isTypingAhead && event.key === \" \") return;\n          if (OPEN_KEYS.includes(event.key)) {\n            handleOpen();\n            event.preventDefault();\n          }\n        })\n      }\n    ) });\n  }\n);\nSelectTrigger.displayName = TRIGGER_NAME;\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n    const context = useSelectContext(VALUE_NAME, __scopeSelect);\n    const { onValueNodeHasChildrenChange } = context;\n    const hasChildren = children !== void 0;\n    const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n    useLayoutEffect(() => {\n      onValueNodeHasChildrenChange(hasChildren);\n    }, [onValueNodeHasChildrenChange, hasChildren]);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...valueProps,\n        ref: composedRefs,\n        style: { pointerEvents: \"none\" },\n        children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsx(Fragment, { children: placeholder }) : children\n      }\n    );\n  }\n);\nSelectValue.displayName = VALUE_NAME;\nvar ICON_NAME = \"SelectIcon\";\nvar SelectIcon = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, children, ...iconProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n  }\n);\nSelectIcon.displayName = ICON_NAME;\nvar PORTAL_NAME = \"SelectPortal\";\nvar SelectPortal = (props) => {\n  return /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...props });\n};\nSelectPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n    const [fragment, setFragment] = React.useState();\n    useLayoutEffect(() => {\n      setFragment(new DocumentFragment());\n    }, []);\n    if (!context.open) {\n      const frag = fragment;\n      return frag ? ReactDOM.createPortal(\n        /* @__PURE__ */ jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { children: props.children }) }) }),\n        frag\n      ) : null;\n    }\n    return /* @__PURE__ */ jsx(SelectContentImpl, { ...props, ref: forwardedRef });\n  }\n);\nSelectContent.displayName = CONTENT_NAME;\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar CONTENT_IMPL_NAME = \"SelectContentImpl\";\nvar Slot = createSlot(\"SelectContent.RemoveScroll\");\nvar SelectContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeSelect,\n      position = \"item-aligned\",\n      onCloseAutoFocus,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      //\n      // PopperContent props\n      side,\n      sideOffset,\n      align,\n      alignOffset,\n      arrowPadding,\n      collisionBoundary,\n      collisionPadding,\n      sticky,\n      hideWhenDetached,\n      avoidCollisions,\n      //\n      ...contentProps\n    } = props;\n    const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n    const [content, setContent] = React.useState(null);\n    const [viewport, setViewport] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n    const [selectedItem, setSelectedItem] = React.useState(null);\n    const [selectedItemText, setSelectedItemText] = React.useState(\n      null\n    );\n    const getItems = useCollection(__scopeSelect);\n    const [isPositioned, setIsPositioned] = React.useState(false);\n    const firstValidItemFoundRef = React.useRef(false);\n    React.useEffect(() => {\n      if (content) return hideOthers(content);\n    }, [content]);\n    useFocusGuards();\n    const focusFirst = React.useCallback(\n      (candidates) => {\n        const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n        const [lastItem] = restItems.slice(-1);\n        const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n        for (const candidate of candidates) {\n          if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n          candidate?.scrollIntoView({ block: \"nearest\" });\n          if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n          if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n          candidate?.focus();\n          if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n        }\n      },\n      [getItems, viewport]\n    );\n    const focusSelectedItem = React.useCallback(\n      () => focusFirst([selectedItem, content]),\n      [focusFirst, selectedItem, content]\n    );\n    React.useEffect(() => {\n      if (isPositioned) {\n        focusSelectedItem();\n      }\n    }, [isPositioned, focusSelectedItem]);\n    const { onOpenChange, triggerPointerDownPosRef } = context;\n    React.useEffect(() => {\n      if (content) {\n        let pointerMoveDelta = { x: 0, y: 0 };\n        const handlePointerMove = (event) => {\n          pointerMoveDelta = {\n            x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n            y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n          };\n        };\n        const handlePointerUp = (event) => {\n          if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n            event.preventDefault();\n          } else {\n            if (!content.contains(event.target)) {\n              onOpenChange(false);\n            }\n          }\n          document.removeEventListener(\"pointermove\", handlePointerMove);\n          triggerPointerDownPosRef.current = null;\n        };\n        if (triggerPointerDownPosRef.current !== null) {\n          document.addEventListener(\"pointermove\", handlePointerMove);\n          document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n        }\n        return () => {\n          document.removeEventListener(\"pointermove\", handlePointerMove);\n          document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n        };\n      }\n    }, [content, onOpenChange, triggerPointerDownPosRef]);\n    React.useEffect(() => {\n      const close = () => onOpenChange(false);\n      window.addEventListener(\"blur\", close);\n      window.addEventListener(\"resize\", close);\n      return () => {\n        window.removeEventListener(\"blur\", close);\n        window.removeEventListener(\"resize\", close);\n      };\n    }, [onOpenChange]);\n    const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n      const enabledItems = getItems().filter((item) => !item.disabled);\n      const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n      const nextItem = findNextItem(enabledItems, search, currentItem);\n      if (nextItem) {\n        setTimeout(() => nextItem.ref.current.focus());\n      }\n    });\n    const itemRefCallback = React.useCallback(\n      (node, value, disabled) => {\n        const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n        const isSelectedItem = context.value !== void 0 && context.value === value;\n        if (isSelectedItem || isFirstValidItem) {\n          setSelectedItem(node);\n          if (isFirstValidItem) firstValidItemFoundRef.current = true;\n        }\n      },\n      [context.value]\n    );\n    const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n    const itemTextRefCallback = React.useCallback(\n      (node, value, disabled) => {\n        const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n        const isSelectedItem = context.value !== void 0 && context.value === value;\n        if (isSelectedItem || isFirstValidItem) {\n          setSelectedItemText(node);\n        }\n      },\n      [context.value]\n    );\n    const SelectPosition = position === \"popper\" ? SelectPopperPosition : SelectItemAlignedPosition;\n    const popperContentProps = SelectPosition === SelectPopperPosition ? {\n      side,\n      sideOffset,\n      align,\n      alignOffset,\n      arrowPadding,\n      collisionBoundary,\n      collisionPadding,\n      sticky,\n      hideWhenDetached,\n      avoidCollisions\n    } : {};\n    return /* @__PURE__ */ jsx(\n      SelectContentProvider,\n      {\n        scope: __scopeSelect,\n        content,\n        viewport,\n        onViewportChange: setViewport,\n        itemRefCallback,\n        selectedItem,\n        onItemLeave: handleItemLeave,\n        itemTextRefCallback,\n        focusSelectedItem,\n        selectedItemText,\n        position,\n        isPositioned,\n        searchRef,\n        children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n          FocusScope,\n          {\n            asChild: true,\n            trapped: context.open,\n            onMountAutoFocus: (event) => {\n              event.preventDefault();\n            },\n            onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n              context.trigger?.focus({ preventScroll: true });\n              event.preventDefault();\n            }),\n            children: /* @__PURE__ */ jsx(\n              DismissableLayer,\n              {\n                asChild: true,\n                disableOutsidePointerEvents: true,\n                onEscapeKeyDown,\n                onPointerDownOutside,\n                onFocusOutside: (event) => event.preventDefault(),\n                onDismiss: () => context.onOpenChange(false),\n                children: /* @__PURE__ */ jsx(\n                  SelectPosition,\n                  {\n                    role: \"listbox\",\n                    id: context.contentId,\n                    \"data-state\": context.open ? \"open\" : \"closed\",\n                    dir: context.dir,\n                    onContextMenu: (event) => event.preventDefault(),\n                    ...contentProps,\n                    ...popperContentProps,\n                    onPlaced: () => setIsPositioned(true),\n                    ref: composedRefs,\n                    style: {\n                      // flex layout so we can place the scroll buttons properly\n                      display: \"flex\",\n                      flexDirection: \"column\",\n                      // reset the outline by default as the content MAY get focused\n                      outline: \"none\",\n                      ...contentProps.style\n                    },\n                    onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n                      const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n                      if (event.key === \"Tab\") event.preventDefault();\n                      if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n                      if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n                        const items = getItems().filter((item) => !item.disabled);\n                        let candidateNodes = items.map((item) => item.ref.current);\n                        if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n                          candidateNodes = candidateNodes.slice().reverse();\n                        }\n                        if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n                          const currentElement = event.target;\n                          const currentIndex = candidateNodes.indexOf(currentElement);\n                          candidateNodes = candidateNodes.slice(currentIndex + 1);\n                        }\n                        setTimeout(() => focusFirst(candidateNodes));\n                        event.preventDefault();\n                      }\n                    })\n                  }\n                )\n              }\n            )\n          }\n        ) })\n      }\n    );\n  }\n);\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\nvar ITEM_ALIGNED_POSITION_NAME = \"SelectItemAlignedPosition\";\nvar SelectItemAlignedPosition = React.forwardRef((props, forwardedRef) => {\n  const { __scopeSelect, onPlaced, ...popperProps } = props;\n  const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n  const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n  const [contentWrapper, setContentWrapper] = React.useState(null);\n  const [content, setContent] = React.useState(null);\n  const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n  const getItems = useCollection(__scopeSelect);\n  const shouldExpandOnScrollRef = React.useRef(false);\n  const shouldRepositionRef = React.useRef(true);\n  const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n  const position = React.useCallback(() => {\n    if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n      const triggerRect = context.trigger.getBoundingClientRect();\n      const contentRect = content.getBoundingClientRect();\n      const valueNodeRect = context.valueNode.getBoundingClientRect();\n      const itemTextRect = selectedItemText.getBoundingClientRect();\n      if (context.dir !== \"rtl\") {\n        const itemTextOffset = itemTextRect.left - contentRect.left;\n        const left = valueNodeRect.left - itemTextOffset;\n        const leftDelta = triggerRect.left - left;\n        const minContentWidth = triggerRect.width + leftDelta;\n        const contentWidth = Math.max(minContentWidth, contentRect.width);\n        const rightEdge = window.innerWidth - CONTENT_MARGIN;\n        const clampedLeft = clamp(left, [\n          CONTENT_MARGIN,\n          // Prevents the content from going off the starting edge of the\n          // viewport. It may still go off the ending edge, but this can be\n          // controlled by the user since they may want to manage overflow in a\n          // specific way.\n          // https://github.com/radix-ui/primitives/issues/2049\n          Math.max(CONTENT_MARGIN, rightEdge - contentWidth)\n        ]);\n        contentWrapper.style.minWidth = minContentWidth + \"px\";\n        contentWrapper.style.left = clampedLeft + \"px\";\n      } else {\n        const itemTextOffset = contentRect.right - itemTextRect.right;\n        const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n        const rightDelta = window.innerWidth - triggerRect.right - right;\n        const minContentWidth = triggerRect.width + rightDelta;\n        const contentWidth = Math.max(minContentWidth, contentRect.width);\n        const leftEdge = window.innerWidth - CONTENT_MARGIN;\n        const clampedRight = clamp(right, [\n          CONTENT_MARGIN,\n          Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n        ]);\n        contentWrapper.style.minWidth = minContentWidth + \"px\";\n        contentWrapper.style.right = clampedRight + \"px\";\n      }\n      const items = getItems();\n      const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n      const itemsHeight = viewport.scrollHeight;\n      const contentStyles = window.getComputedStyle(content);\n      const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n      const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n      const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n      const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n      const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n      const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n      const viewportStyles = window.getComputedStyle(viewport);\n      const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n      const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n      const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n      const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n      const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n      const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n      const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n      const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n      const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n      if (willAlignWithoutTopOverflow) {\n        const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;\n        contentWrapper.style.bottom = \"0px\";\n        const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n        const clampedTriggerMiddleToBottomEdge = Math.max(\n          triggerMiddleToBottomEdge,\n          selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n          (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n        );\n        const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n        contentWrapper.style.height = height + \"px\";\n      } else {\n        const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;\n        contentWrapper.style.top = \"0px\";\n        const clampedTopEdgeToTriggerMiddle = Math.max(\n          topEdgeToTriggerMiddle,\n          contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n          (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n        );\n        const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n        contentWrapper.style.height = height + \"px\";\n        viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n      }\n      contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n      contentWrapper.style.minHeight = minContentHeight + \"px\";\n      contentWrapper.style.maxHeight = availableHeight + \"px\";\n      onPlaced?.();\n      requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n    }\n  }, [\n    getItems,\n    context.trigger,\n    context.valueNode,\n    contentWrapper,\n    content,\n    viewport,\n    selectedItem,\n    selectedItemText,\n    context.dir,\n    onPlaced\n  ]);\n  useLayoutEffect(() => position(), [position]);\n  const [contentZIndex, setContentZIndex] = React.useState();\n  useLayoutEffect(() => {\n    if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n  }, [content]);\n  const handleScrollButtonChange = React.useCallback(\n    (node) => {\n      if (node && shouldRepositionRef.current === true) {\n        position();\n        focusSelectedItem?.();\n        shouldRepositionRef.current = false;\n      }\n    },\n    [position, focusSelectedItem]\n  );\n  return /* @__PURE__ */ jsx(\n    SelectViewportProvider,\n    {\n      scope: __scopeSelect,\n      contentWrapper,\n      shouldExpandOnScrollRef,\n      onScrollButtonChange: handleScrollButtonChange,\n      children: /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          ref: setContentWrapper,\n          style: {\n            display: \"flex\",\n            flexDirection: \"column\",\n            position: \"fixed\",\n            zIndex: contentZIndex\n          },\n          children: /* @__PURE__ */ jsx(\n            Primitive.div,\n            {\n              ...popperProps,\n              ref: composedRefs,\n              style: {\n                // When we get the height of the content, it includes borders. If we were to set\n                // the height without having `boxSizing: 'border-box'` it would be too big.\n                boxSizing: \"border-box\",\n                // We need to ensure the content doesn't get taller than the wrapper\n                maxHeight: \"100%\",\n                ...popperProps.style\n              }\n            }\n          )\n        }\n      )\n    }\n  );\n});\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\nvar POPPER_POSITION_NAME = \"SelectPopperPosition\";\nvar SelectPopperPosition = React.forwardRef((props, forwardedRef) => {\n  const {\n    __scopeSelect,\n    align = \"start\",\n    collisionPadding = CONTENT_MARGIN,\n    ...popperProps\n  } = props;\n  const popperScope = usePopperScope(__scopeSelect);\n  return /* @__PURE__ */ jsx(\n    PopperPrimitive.Content,\n    {\n      ...popperScope,\n      ...popperProps,\n      ref: forwardedRef,\n      align,\n      collisionPadding,\n      style: {\n        // Ensure border-box for floating-ui calculations\n        boxSizing: \"border-box\",\n        ...popperProps.style,\n        // re-namespace exposed content custom properties\n        ...{\n          \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n          \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n          \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n          \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n          \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n        }\n      }\n    }\n  );\n});\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, nonce, ...viewportProps } = props;\n    const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n    const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n    const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n    const prevScrollTopRef = React.useRef(0);\n    return /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ jsx(\n        \"style\",\n        {\n          dangerouslySetInnerHTML: {\n            __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n          },\n          nonce\n        }\n      ),\n      /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          \"data-radix-select-viewport\": \"\",\n          role: \"presentation\",\n          ...viewportProps,\n          ref: composedRefs,\n          style: {\n            // we use position: 'relative' here on the `viewport` so that when we call\n            // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n            // (independent of the scrollUpButton).\n            position: \"relative\",\n            flex: 1,\n            // Viewport should only be scrollable in the vertical direction.\n            // This won't work in vertical writing modes, so we'll need to\n            // revisit this if/when that is supported\n            // https://developer.chrome.com/blog/vertical-form-controls\n            overflow: \"hidden auto\",\n            ...viewportProps.style\n          },\n          onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n            const viewport = event.currentTarget;\n            const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n            if (shouldExpandOnScrollRef?.current && contentWrapper) {\n              const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n              if (scrolledBy > 0) {\n                const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n                const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n                const cssHeight = parseFloat(contentWrapper.style.height);\n                const prevHeight = Math.max(cssMinHeight, cssHeight);\n                if (prevHeight < availableHeight) {\n                  const nextHeight = prevHeight + scrolledBy;\n                  const clampedNextHeight = Math.min(availableHeight, nextHeight);\n                  const heightDiff = nextHeight - clampedNextHeight;\n                  contentWrapper.style.height = clampedNextHeight + \"px\";\n                  if (contentWrapper.style.bottom === \"0px\") {\n                    viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n                    contentWrapper.style.justifyContent = \"flex-end\";\n                  }\n                }\n              }\n            }\n            prevScrollTopRef.current = viewport.scrollTop;\n          })\n        }\n      ) })\n    ] });\n  }\n);\nSelectViewport.displayName = VIEWPORT_NAME;\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, ...groupProps } = props;\n    const groupId = useId();\n    return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n  }\n);\nSelectGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, ...labelProps } = props;\n    const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n    return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n  }\n);\nSelectLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeSelect,\n      value,\n      disabled = false,\n      textValue: textValueProp,\n      ...itemProps\n    } = props;\n    const context = useSelectContext(ITEM_NAME, __scopeSelect);\n    const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n    const isSelected = context.value === value;\n    const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n    const [isFocused, setIsFocused] = React.useState(false);\n    const composedRefs = useComposedRefs(\n      forwardedRef,\n      (node) => contentContext.itemRefCallback?.(node, value, disabled)\n    );\n    const textId = useId();\n    const pointerTypeRef = React.useRef(\"touch\");\n    const handleSelect = () => {\n      if (!disabled) {\n        context.onValueChange(value);\n        context.onOpenChange(false);\n      }\n    };\n    if (value === \"\") {\n      throw new Error(\n        \"A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.\"\n      );\n    }\n    return /* @__PURE__ */ jsx(\n      SelectItemContextProvider,\n      {\n        scope: __scopeSelect,\n        value,\n        disabled,\n        textId,\n        isSelected,\n        onItemTextChange: React.useCallback((node) => {\n          setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n        }, []),\n        children: /* @__PURE__ */ jsx(\n          Collection.ItemSlot,\n          {\n            scope: __scopeSelect,\n            value,\n            disabled,\n            textValue,\n            children: /* @__PURE__ */ jsx(\n              Primitive.div,\n              {\n                role: \"option\",\n                \"aria-labelledby\": textId,\n                \"data-highlighted\": isFocused ? \"\" : void 0,\n                \"aria-selected\": isSelected && isFocused,\n                \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n                \"aria-disabled\": disabled || void 0,\n                \"data-disabled\": disabled ? \"\" : void 0,\n                tabIndex: disabled ? void 0 : -1,\n                ...itemProps,\n                ref: composedRefs,\n                onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n                onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n                onClick: composeEventHandlers(itemProps.onClick, () => {\n                  if (pointerTypeRef.current !== \"mouse\") handleSelect();\n                }),\n                onPointerUp: composeEventHandlers(itemProps.onPointerUp, () => {\n                  if (pointerTypeRef.current === \"mouse\") handleSelect();\n                }),\n                onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {\n                  pointerTypeRef.current = event.pointerType;\n                }),\n                onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n                  pointerTypeRef.current = event.pointerType;\n                  if (disabled) {\n                    contentContext.onItemLeave?.();\n                  } else if (pointerTypeRef.current === \"mouse\") {\n                    event.currentTarget.focus({ preventScroll: true });\n                  }\n                }),\n                onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n                  if (event.currentTarget === document.activeElement) {\n                    contentContext.onItemLeave?.();\n                  }\n                }),\n                onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n                  const isTypingAhead = contentContext.searchRef?.current !== \"\";\n                  if (isTypingAhead && event.key === \" \") return;\n                  if (SELECTION_KEYS.includes(event.key)) handleSelect();\n                  if (event.key === \" \") event.preventDefault();\n                })\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nSelectItem.displayName = ITEM_NAME;\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, className, style, ...itemTextProps } = props;\n    const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n    const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n    const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n    const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n    const [itemTextNode, setItemTextNode] = React.useState(null);\n    const composedRefs = useComposedRefs(\n      forwardedRef,\n      (node) => setItemTextNode(node),\n      itemContext.onItemTextChange,\n      (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n    );\n    const textContent = itemTextNode?.textContent;\n    const nativeOption = React.useMemo(\n      () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n      [itemContext.disabled, itemContext.value, textContent]\n    );\n    const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n    useLayoutEffect(() => {\n      onNativeOptionAdd(nativeOption);\n      return () => onNativeOptionRemove(nativeOption);\n    }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n    return /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n      itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n    ] });\n  }\n);\nSelectItemText.displayName = ITEM_TEXT_NAME;\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, ...itemIndicatorProps } = props;\n    const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n    return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n  }\n);\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {\n  const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n  const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n  const [canScrollUp, setCanScrollUp] = React.useState(false);\n  const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n  useLayoutEffect(() => {\n    if (contentContext.viewport && contentContext.isPositioned) {\n      let handleScroll2 = function() {\n        const canScrollUp2 = viewport.scrollTop > 0;\n        setCanScrollUp(canScrollUp2);\n      };\n      var handleScroll = handleScroll2;\n      const viewport = contentContext.viewport;\n      handleScroll2();\n      viewport.addEventListener(\"scroll\", handleScroll2);\n      return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n    }\n  }, [contentContext.viewport, contentContext.isPositioned]);\n  return canScrollUp ? /* @__PURE__ */ jsx(\n    SelectScrollButtonImpl,\n    {\n      ...props,\n      ref: composedRefs,\n      onAutoScroll: () => {\n        const { viewport, selectedItem } = contentContext;\n        if (viewport && selectedItem) {\n          viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n        }\n      }\n    }\n  ) : null;\n});\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {\n  const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n  const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n  const [canScrollDown, setCanScrollDown] = React.useState(false);\n  const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n  useLayoutEffect(() => {\n    if (contentContext.viewport && contentContext.isPositioned) {\n      let handleScroll2 = function() {\n        const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n        const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n        setCanScrollDown(canScrollDown2);\n      };\n      var handleScroll = handleScroll2;\n      const viewport = contentContext.viewport;\n      handleScroll2();\n      viewport.addEventListener(\"scroll\", handleScroll2);\n      return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n    }\n  }, [contentContext.viewport, contentContext.isPositioned]);\n  return canScrollDown ? /* @__PURE__ */ jsx(\n    SelectScrollButtonImpl,\n    {\n      ...props,\n      ref: composedRefs,\n      onAutoScroll: () => {\n        const { viewport, selectedItem } = contentContext;\n        if (viewport && selectedItem) {\n          viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n        }\n      }\n    }\n  ) : null;\n});\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\nvar SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {\n  const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n  const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n  const autoScrollTimerRef = React.useRef(null);\n  const getItems = useCollection(__scopeSelect);\n  const clearAutoScrollTimer = React.useCallback(() => {\n    if (autoScrollTimerRef.current !== null) {\n      window.clearInterval(autoScrollTimerRef.current);\n      autoScrollTimerRef.current = null;\n    }\n  }, []);\n  React.useEffect(() => {\n    return () => clearAutoScrollTimer();\n  }, [clearAutoScrollTimer]);\n  useLayoutEffect(() => {\n    const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n    activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n  }, [getItems]);\n  return /* @__PURE__ */ jsx(\n    Primitive.div,\n    {\n      \"aria-hidden\": true,\n      ...scrollIndicatorProps,\n      ref: forwardedRef,\n      style: { flexShrink: 0, ...scrollIndicatorProps.style },\n      onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n        if (autoScrollTimerRef.current === null) {\n          autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n        }\n      }),\n      onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n        contentContext.onItemLeave?.();\n        if (autoScrollTimerRef.current === null) {\n          autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n        }\n      }),\n      onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n        clearAutoScrollTimer();\n      })\n    }\n  );\n});\nvar SEPARATOR_NAME = \"SelectSeparator\";\nvar SelectSeparator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, ...separatorProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n  }\n);\nSelectSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeSelect);\n    const context = useSelectContext(ARROW_NAME, __scopeSelect);\n    const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n    return context.open && contentContext.position === \"popper\" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n  }\n);\nSelectArrow.displayName = ARROW_NAME;\nvar BUBBLE_INPUT_NAME = \"SelectBubbleInput\";\nvar SelectBubbleInput = React.forwardRef(\n  ({ __scopeSelect, value, ...props }, forwardedRef) => {\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const prevValue = usePrevious(value);\n    React.useEffect(() => {\n      const select = ref.current;\n      if (!select) return;\n      const selectProto = window.HTMLSelectElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        selectProto,\n        \"value\"\n      );\n      const setValue = descriptor.set;\n      if (prevValue !== value && setValue) {\n        const event = new Event(\"change\", { bubbles: true });\n        setValue.call(select, value);\n        select.dispatchEvent(event);\n      }\n    }, [prevValue, value]);\n    return /* @__PURE__ */ jsx(\n      Primitive.select,\n      {\n        ...props,\n        style: { ...VISUALLY_HIDDEN_STYLES, ...props.style },\n        ref: composedRefs,\n        defaultValue: value\n      }\n    );\n  }\n);\nSelectBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction shouldShowPlaceholder(value) {\n  return value === \"\" || value === void 0;\n}\nfunction useTypeaheadSearch(onSearchChange) {\n  const handleSearchChange = useCallbackRef(onSearchChange);\n  const searchRef = React.useRef(\"\");\n  const timerRef = React.useRef(0);\n  const handleTypeaheadSearch = React.useCallback(\n    (key) => {\n      const search = searchRef.current + key;\n      handleSearchChange(search);\n      (function updateSearch(value) {\n        searchRef.current = value;\n        window.clearTimeout(timerRef.current);\n        if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n      })(search);\n    },\n    [handleSearchChange]\n  );\n  const resetTypeahead = React.useCallback(() => {\n    searchRef.current = \"\";\n    window.clearTimeout(timerRef.current);\n  }, []);\n  React.useEffect(() => {\n    return () => window.clearTimeout(timerRef.current);\n  }, []);\n  return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\nfunction findNextItem(items, search, currentItem) {\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const normalizedSearch = isRepeated ? search[0] : search;\n  const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n  let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n  const excludeCurrentItem = normalizedSearch.length === 1;\n  if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n  const nextItem = wrappedItems.find(\n    (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n  );\n  return nextItem !== currentItem ? nextItem : void 0;\n}\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root2 = Select;\nvar Trigger = SelectTrigger;\nvar Value = SelectValue;\nvar Icon = SelectIcon;\nvar Portal = SelectPortal;\nvar Content2 = SelectContent;\nvar Viewport = SelectViewport;\nvar Group = SelectGroup;\nvar Label = SelectLabel;\nvar Item = SelectItem;\nvar ItemText = SelectItemText;\nvar ItemIndicator = SelectItemIndicator;\nvar ScrollUpButton = SelectScrollUpButton;\nvar ScrollDownButton = SelectScrollDownButton;\nvar Separator = SelectSeparator;\nvar Arrow2 = SelectArrow;\nexport {\n  Arrow2 as Arrow,\n  Content2 as Content,\n  Group,\n  Icon,\n  Item,\n  ItemIndicator,\n  ItemText,\n  Label,\n  Portal,\n  Root2 as Root,\n  ScrollDownButton,\n  ScrollUpButton,\n  Select,\n  SelectArrow,\n  SelectContent,\n  SelectGroup,\n  SelectIcon,\n  SelectItem,\n  SelectItemIndicator,\n  SelectItemText,\n  SelectLabel,\n  SelectPortal,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n  SelectViewport,\n  Separator,\n  Trigger,\n  Value,\n  Viewport,\n  createSelectScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\n\r\ninterface SDGIconProps {\r\n  size?: number;\r\n  background: boolean;\r\n}\r\n\r\nexport function SDG1(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.800781 0H161.701V160.9H0.800781V0Z' fill='#E5243B' />\r\n      )}\r\n      <path\r\n        d='M23.1984 21.2001H23.2984V46.0001H28.6984V13.6001H24.3984L19.3984 19.5001V25.2001L23.1984 21.2001ZM131.998 81.3001C134.498 81.3001 136.398 79.3001 136.398 76.8001C136.398 74.3001 134.398 72.3001 131.998 72.3001C129.498 72.3001 127.498 74.3001 127.498 76.8001C127.498 79.3001 129.498 81.3001 131.998 81.3001ZM137.198 83.0001H126.798C123.798 83.3001 121.398 85.8001 121.398 88.9001V101.2C121.398 102.1 122.198 102.9 123.098 102.9C124.098 102.9 124.798 102.1 124.798 101.2V90.6001C124.798 90.2001 124.898 89.7001 125.598 89.7001C126.098 89.7001 126.198 90.2001 126.198 90.6001V122.4C126.198 123.8 127.298 124.9 128.698 124.9C130.098 124.9 131.198 123.8 131.198 122.4V104C131.198 103.8 131.298 103.3 131.898 103.3C132.498 103.3 132.598 103.8 132.598 104V122.3C132.598 123.7 133.698 124.8 135.098 124.8C136.498 124.8 137.598 123.7 137.598 122.3V90.5001C137.598 90.2001 137.698 89.6001 138.198 89.6001C138.898 89.6001 138.998 90.1001 138.998 90.5001V101.1C138.998 102 139.798 102.8 140.698 102.8C141.698 102.8 142.398 102 142.398 101.1V88.9001C142.598 85.8001 140.198 83.2001 137.198 83.0001V83.0001ZM96.7984 83.4001C99.0984 83.4001 100.998 81.5001 100.998 79.2001C100.998 76.9001 99.0984 75.0001 96.7984 75.0001C94.4984 75.0001 92.5984 76.9001 92.5984 79.2001C92.5984 81.5001 94.4984 83.4001 96.7984 83.4001ZM101.798 91.1001C102.398 90.9001 102.498 91.7001 102.498 91.7001L105.298 101.2C105.298 101.2 105.798 103.2 107.598 102.7C109.398 102.2 108.798 100.1 108.798 100.1L105.298 88.7001C105.298 88.7001 103.998 85.4001 101.298 85.4001H92.2984C89.4984 85.4001 88.2984 88.7001 88.2984 88.7001L84.7984 100.1C84.7984 100.1 84.1984 102.2 85.9984 102.7C87.7984 103.2 88.2984 101.2 88.2984 101.2L91.0984 91.7001C91.0984 91.7001 91.2984 91.0001 91.7984 91.1001C92.3984 91.3001 92.0984 92.0001 92.0984 92.0001L87.1984 109.9H91.7984V122.7C91.7984 123.9 92.7984 124.9 93.9984 124.9C95.1984 124.9 96.1984 123.9 96.1984 122.7V109.9H97.3984V122.7C97.3984 123.9 98.3984 124.9 99.5984 124.9C100.798 124.9 101.798 123.9 101.798 122.7V109.9H106.398L101.498 92.0001C101.498 92.0001 101.298 91.3001 101.798 91.1001V91.1001ZM71.4984 83.4001C73.7984 83.4001 75.6984 81.5001 75.6984 79.2001C75.6984 76.9001 73.7984 75.0001 71.4984 75.0001C69.1984 75.0001 67.2984 76.9001 67.2984 79.2001C67.2984 81.5001 69.1984 83.4001 71.4984 83.4001ZM79.9984 88.7001C79.9984 88.7001 78.7984 85.4001 75.9984 85.4001H66.9984C64.1984 85.4001 62.9984 88.7001 62.9984 88.7001L59.4984 100.1C59.4984 100.1 59.3984 100.4 59.3984 100.8C59.1984 100.5 58.7984 100.3 58.3984 100.3C57.8984 100.3 57.4984 100.5 57.2984 100.9C57.1984 101 55.5984 103.9 54.9984 104.4C54.3984 105 53.8984 104.9 53.8984 104.9H49.6984C49.6984 104.9 49.1984 105 48.5984 104.4C48.0984 103.9 46.3984 100.9 46.2984 100.9C46.0984 100.5 45.6984 100.3 45.1984 100.3C44.7984 100.3 44.3984 100.5 44.1984 100.9V88.9001C44.1984 85.8001 41.7984 83.3001 38.7984 83.0001H28.3984C25.3984 83.3001 22.9984 85.8001 22.9984 88.9001V101.2C22.9984 101.9 23.3984 102.4 23.8984 102.7C23.8984 102.7 23.7984 102.8 23.7984 102.9L19.7984 123.9C19.6984 124.3 19.9984 124.6 20.2984 124.7H20.3984C20.6984 124.7 20.9984 124.5 20.9984 124.2L24.9984 103.2V103C25.7984 102.8 26.2984 102.1 26.2984 101.3V90.7001C26.2984 90.3001 26.3984 89.8001 27.0984 89.8001C27.5984 89.8001 27.6984 90.3001 27.6984 90.7001V122.5C27.6984 123.9 28.7984 125 30.1984 125C31.5984 125 32.6984 123.9 32.6984 122.5V104C32.6984 103.8 32.7984 103.3 33.3984 103.3C33.9984 103.3 34.0984 103.8 34.0984 104V122.3C34.0984 123.7 35.1984 124.8 36.5984 124.8C37.9984 124.8 39.0984 123.7 39.0984 122.3V90.5001C39.0984 90.2001 39.1984 89.6001 39.6984 89.6001C40.3984 89.6001 40.4984 90.1001 40.4984 90.5001V101.1C40.4984 102 41.2984 102.8 42.1984 102.8C42.8984 102.8 43.4984 102.4 43.7984 101.8C43.7984 101.9 43.8984 102 43.8984 102L47.3984 108.4C47.3984 108.4 47.5984 108.8 47.5984 109.2V110.5L45.6984 117.4H47.5984V123C47.5984 124 48.3984 124.7 49.2984 124.7C50.2984 124.7 50.9984 123.9 50.9984 123V117.6V117.4H51.9984V123C51.9984 124 52.7984 124.7 53.6984 124.7C54.6984 124.7 55.3984 123.9 55.3984 123V117.4H57.2984L55.3984 110.5V109.3C55.3984 108.9 55.5984 108.5 55.5984 108.5L58.8984 102.6C58.8984 102.6 59.0984 102.2 59.1984 101.8C59.3984 102.2 59.6984 102.5 60.1984 102.7C61.9984 103.2 62.4984 101.2 62.4984 101.2L65.2984 91.7001C65.2984 91.7001 65.4984 91.0001 65.9984 91.1001C66.5984 91.3001 66.2984 92.0001 66.2984 92.0001L61.3984 109.9H65.9984V122.7C65.9984 123.9 66.9984 124.9 68.1984 124.9C69.3984 124.9 70.3984 123.9 70.3984 122.7V109.9H71.5984V122.7C71.5984 123.9 72.5984 124.9 73.7984 124.9C74.9984 124.9 75.9984 123.9 75.9984 122.7V109.9H80.5984L75.6984 92.0001C75.6984 92.0001 75.4984 91.2001 75.9984 91.1001C76.5984 90.9001 76.6984 91.7001 76.6984 91.7001L79.4984 101.2C79.4984 101.2 79.9984 103.2 81.7984 102.7C83.5984 102.2 82.9984 100.1 82.9984 100.1L79.9984 88.7001V88.7001ZM115.198 102.7C117.098 102.7 118.698 101.1 118.698 99.2001C118.698 97.3001 117.098 95.7001 115.198 95.7001C113.298 95.7001 111.698 97.3001 111.698 99.2001C111.698 101.2 113.198 102.7 115.198 102.7ZM123.498 112.7C123.498 112.6 121.298 107.2 120.998 106.4C120.198 104.1 118.798 104.1 117.398 104.1H115.198H112.498C110.698 104.2 110.098 105.1 108.098 110.3C107.798 111 106.798 113.5 106.798 113.6C106.598 114 106.498 114.9 107.298 115.3C108.298 115.7 108.798 114.8 108.798 114.8L110.698 108.7C110.698 108.7 110.998 108.3 110.998 108.7V123C110.998 124 111.798 124.8 112.798 124.8C113.798 124.8 114.598 124 114.598 123V117.3C114.598 117.3 114.498 116.5 115.098 116.5C115.698 116.5 115.598 117.3 115.598 117.3V123C115.598 124 116.398 124.8 117.398 124.8C118.398 124.8 119.198 124 119.198 123V108.7C119.198 108.3 119.398 108.6 119.398 108.6L120.898 112.8C120.898 112.8 121.498 114.7 121.698 114.7C122.398 115 123.198 114.7 123.398 114C123.798 113.6 123.698 113.1 123.498 112.7V112.7ZM33.5984 81.3001C36.0984 81.3001 38.0984 79.3001 38.0984 76.8001C38.0984 74.3001 36.0984 72.3001 33.5984 72.3001C31.0984 72.3001 29.1984 74.3001 29.1984 76.8001C29.1984 79.3001 31.1984 81.3001 33.5984 81.3001Z'\r\n        fill={background === false ? '#E5243B' : 'white'}\r\n      />\r\n      <path\r\n        d='M51.8 102.7C53.7 102.7 55.3 101.1 55.3 99.2002C55.3 97.3002 53.7 95.7002 51.8 95.7002C49.9 95.7002 48.3 97.3002 48.3 99.2002C48.3 101.2 49.9 102.7 51.8 102.7ZM48.9 18.2002V26.5002H47V13.4002H49.2L51.6 20.9002V13.4002H53.4V26.5002H51.5L48.9 18.2002ZM54.9 23.1002V16.7002C54.9 14.6002 55.9 13.2002 58.2 13.2002C60.5 13.2002 61.6 14.7002 61.6 16.7002V23.1002C61.6 25.1002 60.6 26.6002 58.2 26.6002C55.9 26.6002 54.9 25.1002 54.9 23.1002ZM59.4 23.4002V16.3002C59.4 15.5002 59.1 14.9002 58.3 14.9002C57.5 14.9002 57.2 15.5002 57.2 16.3002V23.4002C57.2 24.2002 57.5 24.8002 58.3 24.8002C59 24.8002 59.4 24.2002 59.4 23.4002ZM47.1 32.8002H50.4C52.6 32.8002 53.4 33.9002 53.4 35.7002V38.5002C53.4 40.3002 52.6 41.5002 50.4 41.5002H49.3V46.0002H47.1V32.8002V32.8002ZM49.3 34.6002V39.8002H50.1C50.9 39.8002 51.2 39.4002 51.2 38.7002V35.7002C51.2 35.0002 50.9 34.6002 50.1 34.6002H49.3ZM54.7 42.6002V36.2002C54.7 34.1002 55.7 32.7002 58 32.7002C60.3 32.7002 61.4 34.2002 61.4 36.2002V42.6002C61.4 44.6002 60.4 46.1002 58 46.1002C55.7 46.1002 54.7 44.6002 54.7 42.6002ZM59.2 42.9002V35.8002C59.2 35.0002 58.9 34.4002 58.1 34.4002C57.3 34.4002 57 35.0002 57 35.8002V42.9002C57 43.7002 57.3 44.3002 58.1 44.3002C58.8 44.3002 59.2 43.7002 59.2 42.9002ZM69.6 32.8002L67.1 45.9002H64.7L62.2 32.8002H64.4L65.9 42.0002L67.5 32.8002H69.6V32.8002ZM70.7 32.8002H76V34.6002H72.9V38.4002H75.1V40.2002H72.9V44.2002H76V46.0002H70.7V32.8002V32.8002ZM79.5 39.9002V45.9002H77.3V32.8002H80.5C82.7 32.8002 83.5 33.9002 83.5 35.7002V37.4002C83.5 38.8002 83 39.6002 81.7 39.9002L83.8 45.9002H81.5L79.5 39.9002V39.9002ZM79.5 34.6002V38.7002H80.2C81 38.7002 81.3 38.3002 81.3 37.6002V35.7002C81.3 35.0002 81 34.6002 80.2 34.6002H79.5ZM84.5 32.8002H90.4V34.6002H88.6V46.0002H86.4V34.7002H84.6L84.5 32.8002V32.8002ZM95.9 40.9002V45.9002H93.7V40.9002L91.2 32.8002H93.5L94.8 37.8002L96.1 32.8002H98.2L95.9 40.9002V40.9002Z'\r\n        fill={background === false ? '#E5243B' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG2(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.101562 0H161.002V160.9H0.101562V0Z' fill='#DDA63A' />\r\n      )}\r\n      <path\r\n        d='M30.2016 41.5002H21.3015V40.0002C21.3015 37.5002 22.2016 36.5002 23.6016 35.0002L27.1016 31.3002C29.9016 28.3002 30.5016 26.4002 30.5016 23.1002V20.0002C30.5016 15.4002 28.3016 13.2002 23.4016 13.2002C18.6016 13.2002 16.2016 15.7002 16.2016 20.3002V24.2002H21.2016V20.1002C21.2016 18.1002 22.2015 17.6002 23.3015 17.6002C24.4015 17.6002 25.3015 18.0002 25.3015 20.0002V22.7002C25.3015 25.4002 25.1015 26.4002 23.3015 28.3002L20.2016 31.6002C17.2016 34.8002 16.1016 36.9002 16.1016 40.1002V46.1002H30.3015L30.2016 41.5002V41.5002Z'\r\n        fill={background === false ? '#DDA63A' : 'white'}\r\n      />\r\n      <path\r\n        d='M66.5984 136.8V139.3C66.5984 139.9 67.0984 140.3 67.5984 140.3H94.0984C94.6984 140.3 95.0984 139.8 95.0984 139.2V136.6C109.998 131.7 121.198 119.6 123.698 104.8V104.7V104.6C123.698 104 123.198 103.5 122.598 103.5H37.9984C37.3984 103.5 36.8984 104 36.8984 104.6L36.9984 105.1C39.8984 119.9 51.3984 132.1 66.5984 136.8V136.8ZM95.2984 67.3002C94.9984 67.8002 86.7984 79.6002 95.4984 89.1002C99.4984 93.5002 99.0984 97.3002 97.9984 99.9002H103.598C104.698 96.1002 104.298 91.2002 99.6985 86.3002C93.2985 79.3002 99.7984 69.8002 99.8984 69.7002C100.698 68.6002 100.298 67.2002 98.9984 66.6002C97.6984 65.9002 96.0984 66.2002 95.2984 67.3002V67.3002ZM81.1985 99.9002H86.7984C87.8984 96.1002 87.4984 91.2002 82.8984 86.3002C76.4984 79.3002 82.9984 69.8002 83.0984 69.7002C83.8984 68.6002 83.4985 67.2002 82.1985 66.6002C80.8985 66.0002 79.2984 66.3002 78.4984 67.4002C78.0984 67.9002 69.9985 79.7002 78.6985 89.2002C82.6985 93.5002 82.2985 97.3002 81.1985 99.9002V99.9002ZM61.5984 67.3002C61.1984 67.8002 53.0984 79.6002 61.7984 89.1002C65.7984 93.5002 65.3984 97.3002 64.2984 99.9002H69.8984C70.9984 96.1002 70.5984 91.2002 65.9984 86.3002C59.5984 79.3002 66.0985 69.8002 66.1985 69.7002C66.9985 68.6002 66.5984 67.2002 65.2984 66.6002C64.0984 65.9002 62.3984 66.2002 61.5984 67.3002'\r\n        fill={background === false ? '#DDA63A' : 'white'}\r\n      />\r\n      <path\r\n        d='M48.3 24.8999H51.7V26.6999H46V24.8999L49.5 15.3999H46.4V13.5999H51.9V15.3999L48.3 24.8999V24.8999ZM53.1 13.4999H58.4V15.2999H55.3V19.0999H57.5V20.8999H55.3V24.8999H58.4V26.6999H53.1V13.4999V13.4999ZM62 20.5999V26.5999H59.8V13.4999H63C65.2 13.4999 66 14.5999 66 16.3999V18.0999C66 19.4999 65.5 20.2999 64.2 20.5999L66.3 26.5999H64L62 20.5999ZM62 15.2999V19.3999H62.7C63.5 19.3999 63.8 18.9999 63.8 18.2999V16.3999C63.8 15.6999 63.5 15.2999 62.7 15.2999H62ZM67.4 23.2999V16.8999C67.4 14.7999 68.4 13.3999 70.7 13.3999C73 13.3999 74.1 14.8999 74.1 16.8999V23.2999C74.1 25.2999 73.1 26.7999 70.7 26.7999C68.4 26.7999 67.4 25.2999 67.4 23.2999ZM71.9 23.5999V16.4999C71.9 15.6999 71.6 15.0999 70.8 15.0999C70 15.0999 69.7 15.6999 69.7 16.4999V23.5999C69.7 24.3999 70 24.9999 70.8 24.9999C71.6 24.9999 71.9 24.3999 71.9 23.5999Z'\r\n        fill={background === false ? '#DDA63A' : 'white'}\r\n      />\r\n      <path\r\n        d='M50.4016 40.1002H48.3015V45.9002H46.1016V32.8002H48.3015V38.4002H50.4016V32.8002H52.6016V45.9002H50.4016V40.1002ZM60.5016 32.8002V42.7002C60.5016 44.7002 59.6016 46.1002 57.4016 46.1002C55.1016 46.1002 54.1016 44.8002 54.1016 42.7002V32.8002H56.3015V43.0002C56.3015 43.8002 56.6016 44.3002 57.4016 44.3002C58.2016 44.3002 58.5016 43.8002 58.5016 43.0002V32.8002H60.5016ZM63.8015 37.7002V46.0002H62.0016V32.9002H64.2016L66.6016 40.4002V32.9002H68.4016V46.0002H66.5016L63.8015 37.7002ZM73.2016 38.9002H76.3015V45.9002H74.7016V44.5002C74.4016 45.5002 73.8016 46.1002 72.6016 46.1002C70.7016 46.1002 69.8015 44.6002 69.8015 42.6002V36.2002C69.8015 34.1002 70.8016 32.7002 73.1016 32.7002C75.5016 32.7002 76.3015 34.1002 76.3015 36.0002V37.2002H74.3015V35.9002C74.3015 35.1002 74.0016 34.6002 73.2016 34.6002C72.4016 34.6002 72.1016 35.2002 72.1016 36.0002V43.1002C72.1016 43.9002 72.4016 44.5002 73.2016 44.5002C73.9016 44.5002 74.3015 44.1002 74.3015 43.2002V40.9002H73.3015V38.9002H73.2016V38.9002ZM77.8015 32.8002H83.1016V34.6002H80.0016V38.4002H82.2016V40.2002H80.0016V44.2002H83.1016V46.0002H77.8015V32.8002V32.8002ZM86.6016 39.9002V45.9002H84.4016V32.8002H87.6016C89.8016 32.8002 90.6016 33.9002 90.6016 35.7002V37.4002C90.6016 38.8002 90.1015 39.6002 88.8015 39.9002L90.9016 45.9002H88.6016L86.6016 39.9002ZM86.6016 34.6002V38.7002H87.3015C88.1015 38.7002 88.4016 38.3002 88.4016 37.6002V35.7002C88.4016 35.0002 88.1015 34.6002 87.3015 34.6002H86.6016Z'\r\n        fill={background === false ? '#DDA63A' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG3(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : <path d='M0.5 0H161.4V160.9H0.5V0Z' fill='#4C9F38' />}\r\n      <path\r\n        d='M23.3984 46.4002C28.8984 46.4002 31.2984 43.5002 31.2984 39.0002V34.2002C31.2984 31.2002 29.9984 29.3002 27.2984 28.7002C29.4984 28.0002 30.9984 26.2002 30.9984 23.4002V20.6002C30.9984 16.0002 28.7984 13.2002 23.7984 13.2002C18.1984 13.2002 16.1985 16.5002 16.1985 21.3002V24.2002H21.1985V20.9002C21.1985 18.9002 21.7984 17.7002 23.4984 17.7002C25.1984 17.7002 25.7984 18.8002 25.7984 20.6002V24.1002C25.7984 25.8002 24.6984 26.7002 22.8984 26.7002H20.7984V30.9002H23.0984C24.9984 30.9002 25.7984 31.8002 25.7984 33.5002V38.9002C25.7984 40.6002 24.9984 41.8002 23.3984 41.8002C21.4984 41.8002 20.8984 40.6002 20.8984 38.6002V34.0002H15.8984V38.3002C15.8984 43.2002 17.8984 46.4002 23.3984 46.4002Z'\r\n        fill={background === false ? '#4C9F38' : 'white'}\r\n      />\r\n      <path\r\n        d='M134.899 100.6C134.899 96.0999 131.999 92.3999 127.599 92.3999C125.399 92.3999 122.699 94.7999 121.299 96.2999C119.899 94.7999 117.399 92.3999 115.199 92.3999C110.799 92.3999 107.699 96.0999 107.699 100.6C107.699 102.9 108.599 104.9 109.999 106.4L121.299 117.7L132.599 106.4C133.999 104.9 134.899 102.9 134.899 100.6V100.6Z'\r\n        fill={background === false ? '#4C9F38' : 'white'}\r\n      />\r\n      <path\r\n        d='M86.9 136.1C85.9 136 85.2 135.4 85.1 134.6L79.4 101.2L70.7 117.3C70.3 118 69.5 118.4 68.7 118.2C67.9 118.1 67.3 117.4 67.2 116.6L63.5 90.8001L56.8 105.9C56.5 106.6 55.8 107 55.1 107H28.9C27.9 107 27 106.2 27 105.1C27 104.1 27.8 103.2 28.9 103.2H53.9L62.8 83.3001C63.1 82.5001 63.9 82.1001 64.7 82.2001C65.5 82.3001 66.2 83.0001 66.3 83.8001L70.1 110.4L78.7 94.5001C79.1 93.8001 79.8 93.4001 80.6 93.6001C81.4 93.7001 82 94.3001 82.1 95.1001L87.4 126L106.7 61.8001C106.9 61.1001 107.6 60.5001 108.3 60.5001C109.1 60.4001 109.8 60.9001 110.1 61.5001L120.3 82.6001C120.7 83.5001 120.4 84.6001 119.4 85.1001C118.5 85.5001 117.4 85.2001 116.9 84.2001L108.8 67.4001L88.6 134.6C88.4 135.6 87.7 136.1 86.9 136.1V136.1Z'\r\n        fill={background === false ? '#4C9F38' : 'white'}\r\n      />\r\n      <path\r\n        d='M49.7984 19.5999H52.8984V26.5999H51.2984V25.1999C50.9984 26.1999 50.3985 26.7999 49.1985 26.7999C47.2985 26.7999 46.3984 25.2999 46.3984 23.2999V16.8999C46.3984 14.7999 47.3985 13.3999 49.6985 13.3999C52.0985 13.3999 52.8984 14.7999 52.8984 16.6999V17.8999H50.8984V16.5999C50.8984 15.7999 50.5984 15.2999 49.7984 15.2999C48.9984 15.2999 48.6985 15.8999 48.6985 16.6999V23.7999C48.6985 24.5999 48.9984 25.1999 49.7984 25.1999C50.4984 25.1999 50.8984 24.7999 50.8984 23.8999V21.5999H49.8984V19.5999H49.7984V19.5999ZM54.3984 23.2999V16.8999C54.3984 14.7999 55.3985 13.3999 57.6985 13.3999C59.9985 13.3999 61.0984 14.8999 61.0984 16.8999V23.2999C61.0984 25.2999 60.0985 26.7999 57.6985 26.7999C55.3985 26.7999 54.3984 25.2999 54.3984 23.2999ZM58.8984 23.5999V16.4999C58.8984 15.6999 58.5984 15.0999 57.7984 15.0999C56.9984 15.0999 56.6985 15.6999 56.6985 16.4999V23.5999C56.6985 24.3999 56.9984 24.9999 57.7984 24.9999C58.4984 24.9999 58.8984 24.3999 58.8984 23.5999ZM62.4984 23.2999V16.8999C62.4984 14.7999 63.4984 13.3999 65.7984 13.3999C68.0984 13.3999 69.1985 14.8999 69.1985 16.8999V23.2999C69.1985 25.2999 68.1984 26.7999 65.7984 26.7999C63.4984 26.7999 62.4984 25.2999 62.4984 23.2999ZM66.9984 23.5999V16.4999C66.9984 15.6999 66.6984 15.0999 65.8984 15.0999C65.0984 15.0999 64.7984 15.6999 64.7984 16.4999V23.5999C64.7984 24.3999 65.0984 24.9999 65.8984 24.9999C66.6984 24.9999 66.9984 24.3999 66.9984 23.5999ZM77.2984 16.9999V23.0999C77.2984 25.0999 76.4984 26.5999 74.0984 26.5999H70.6985V13.4999H74.0984C76.3984 13.4999 77.2984 14.9999 77.2984 16.9999ZM73.7984 24.7999C74.6984 24.7999 75.0984 24.2999 75.0984 23.4999V16.5999C75.0984 15.7999 74.7984 15.2999 73.7984 15.2999H72.8985V24.7999H73.7984V24.7999ZM86.0984 20.8999H83.9984V26.6999H81.7984V13.5999H83.9984V19.1999H86.0984V13.5999H88.2984V26.6999H86.0984V20.8999ZM89.8985 13.4999H95.1985V15.2999H92.0984V19.0999H94.2984V20.8999H92.0984V24.8999H95.1985V26.6999H89.8985V13.4999V13.4999ZM96.1985 26.6999L98.6985 13.5999H101.198L103.698 26.6999H101.398L100.998 24.2999H98.6985L98.2984 26.6999H96.1985V26.6999ZM98.9984 22.4999H100.798L99.8985 17.1999L98.9984 22.4999ZM104.798 13.4999H106.998V24.7999H109.598V26.5999H104.798V13.4999V13.4999ZM109.298 13.4999H115.198V15.2999H113.398V26.5999H111.198V15.2999H109.398V13.4999H109.298ZM120.798 20.8999H118.698V26.6999H116.498V13.5999H118.698V19.1999H120.798V13.5999H122.998V26.6999H120.798V20.8999Z'\r\n        fill={background === false ? '#4C9F38' : 'white'}\r\n      />\r\n      <path\r\n        d='M46.1016 45.9002L48.6016 32.8002H51.1016L53.6016 45.9002H51.3015L50.9016 43.5002H48.6016L48.2016 45.9002H46.1016ZM48.9016 41.8002H50.7016L49.8015 36.5002L48.9016 41.8002V41.8002ZM56.4016 37.7002V46.0002H54.5016V32.9002H56.7016L59.1016 40.4002V32.9002H60.9016V46.0002H59.0016L56.4016 37.7002ZM69.1016 36.3002V42.4002C69.1016 44.4002 68.3016 45.9002 65.9016 45.9002H62.5016V32.8002H65.9016C68.3016 32.8002 69.1016 34.3002 69.1016 36.3002ZM65.6016 44.1002C66.5016 44.1002 66.9016 43.6002 66.9016 42.8002V35.9002C66.9016 35.1002 66.6016 34.6002 65.6016 34.6002H64.7016V44.1002H65.6016V44.1002ZM77.6015 37.8002L76.4016 45.9002H74.3015L72.5016 32.8002H74.6015L75.6015 41.1002L76.7016 32.8002H78.5016L79.7016 41.1002L80.7016 32.8002H82.6015L80.9016 45.9002H78.8015L77.6015 37.8002V37.8002ZM83.8015 32.8002H89.1015V34.6002H86.0016V38.4002H88.2016V40.2002H86.0016V44.2002H89.1015V46.0002H83.8015V32.8002V32.8002ZM90.5016 32.8002H92.7016V44.1002H95.3015V45.9002H90.5016V32.8002V32.8002ZM96.5016 32.8002H98.7016V44.1002H101.302V45.9002H96.5016V32.8002V32.8002ZM101.102 38.2002H104.202V40.0002H101.102V38.2002ZM105.502 32.8002H108.702C110.902 32.8002 111.602 33.8002 111.602 35.7002V37.0002C111.602 38.1002 111.202 38.8002 110.302 39.1002C111.402 39.4002 111.902 40.1002 111.902 41.3002V43.0002C111.902 44.9002 111.102 45.9002 108.902 45.9002H105.502V32.8002V32.8002ZM107.702 38.3002H108.502C109.202 38.3002 109.502 37.9002 109.502 37.2002V35.6002C109.502 34.9002 109.202 34.5002 108.402 34.5002H107.602L107.702 38.3002V38.3002ZM107.702 40.0002V44.1002H108.702C109.402 44.1002 109.802 43.7002 109.802 43.0002V41.0002C109.802 40.3002 109.502 39.9002 108.702 39.9002H107.702V40.0002ZM113.302 32.8002H118.602V34.6002H115.502V38.4002H117.702V40.2002H115.502V44.2002H118.602V46.0002H113.302V32.8002V32.8002ZM119.902 32.8002H122.102V45.9002H119.902V32.8002ZM125.602 37.7002V46.0002H123.702V32.9002H125.902L128.302 40.4002V32.9002H130.102V46.0002H128.202L125.602 37.7002ZM135.002 38.9002H138.102V45.9002H136.502V44.5002C136.202 45.5002 135.602 46.1002 134.402 46.1002C132.502 46.1002 131.602 44.6002 131.602 42.6002V36.2002C131.602 34.1002 132.602 32.7002 134.902 32.7002C137.302 32.7002 138.102 34.1002 138.102 36.0002V37.2002H136.102V35.9002C136.102 35.1002 135.802 34.6002 135.002 34.6002C134.202 34.6002 133.902 35.2002 133.902 36.0002V43.1002C133.902 43.9002 134.202 44.5002 135.002 44.5002C135.702 44.5002 136.102 44.1002 136.102 43.2002V40.9002H135.102V38.9002H135.002V38.9002Z'\r\n        fill={background === false ? '#4C9F38' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG4(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.800781 0H161.701V160.9H0.800781V0Z' fill='#C5192D' />\r\n      )}\r\n      <path\r\n        d='M25.9984 46H31.1984V40.7H33.3984V36.4H31.1984V13.5H25.7984L16.3984 37.3V40.6H25.9984V46V46ZM21.1984 36.4L26.0984 23V36.4H21.1984Z'\r\n        fill={background === false ? '#C5192D' : 'white'}\r\n      />\r\n      <path\r\n        d='M71.4 86.2999L42.5 69.5999V123.6L71.4 132.3V86.2999ZM74.5 86.3999V132.3L103.6 123.5V69.5999L74.5 86.3999ZM126.2 68.2999C126.2 66.3999 124.7 64.8999 122.8 64.8999C120.9 64.8999 119.4 66.3999 119.4 68.2999V71.9999H126.2V68.2999ZM120.3 122.6H119.4L122.8 134.5L126.2 122.6H125.4H126.2V74.5999H119.4V122.6H120.3Z'\r\n        fill={background === false ? '#C5192D' : 'white'}\r\n      />\r\n      <path\r\n        d='M109.801 72L106.701 69.5V125L74.6008 135.4H71.4008L39.4008 126.5V69.5L36.3008 72V128.6L71.2008 138.3H74.8008L106.901 128.1L109.801 127.2V72Z'\r\n        fill={background === false ? '#C5192D' : 'white'}\r\n      />\r\n      <path\r\n        d='M46.8008 32.8001H52.1008V34.6001H49.0008V38.4001H51.2008V40.2001H49.0008V44.2001H52.1008V46.0001H46.8008V32.8001V32.8001ZM60.0008 36.3001V42.4001C60.0008 44.4001 59.2008 45.9001 56.8008 45.9001H53.4008V32.8001H56.8008C59.2008 32.8001 60.0008 34.3001 60.0008 36.3001ZM56.5008 44.1001C57.4008 44.1001 57.8008 43.6001 57.8008 42.8001V35.9001C57.8008 35.1001 57.5008 34.6001 56.5008 34.6001H55.6008V44.1001H56.5008V44.1001ZM67.9008 32.8001V42.7001C67.9008 44.7001 67.0008 46.1001 64.8008 46.1001C62.5008 46.1001 61.5008 44.8001 61.5008 42.7001V32.8001H63.7008V43.0001C63.7008 43.8001 64.0008 44.3001 64.8008 44.3001C65.6008 44.3001 65.9008 43.8001 65.9008 43.0001V32.8001H67.9008V32.8001ZM69.3008 42.5001V36.1001C69.3008 34.0001 70.3008 32.6001 72.6008 32.6001C75.0008 32.6001 75.7008 34.0001 75.7008 35.9001V37.5001H73.7008V35.8001C73.7008 35.0001 73.4008 34.5001 72.6008 34.5001C71.8008 34.5001 71.5008 35.1001 71.5008 35.9001V43.0001C71.5008 43.8001 71.8008 44.4001 72.6008 44.4001C73.4008 44.4001 73.7008 43.9001 73.7008 43.1001V40.7001H75.7008V43.0001C75.7008 44.9001 74.9008 46.3001 72.6008 46.3001C70.3008 46.1001 69.3008 44.6001 69.3008 42.5001ZM76.5008 45.9001L79.0008 32.8001H81.5008L84.0008 45.9001H81.7008L81.3008 43.5001H79.0008L78.6008 45.9001H76.5008ZM79.2008 41.8001H81.0008L80.1008 36.5001L79.2008 41.8001ZM83.7008 32.8001H89.6008V34.6001H87.8008V45.9001H85.6008V34.6001H83.8008V32.8001H83.7008ZM90.8008 32.8001H93.0008V45.9001H90.8008V32.8001ZM94.5008 42.5001V36.1001C94.5008 34.0001 95.5008 32.6001 97.8008 32.6001C100.101 32.6001 101.201 34.1001 101.201 36.1001V42.5001C101.201 44.5001 100.201 46.0001 97.8008 46.0001C95.5008 46.1001 94.5008 44.6001 94.5008 42.5001ZM99.0008 42.9001V35.8001C99.0008 35.0001 98.7008 34.4001 97.9008 34.4001C97.1008 34.4001 96.8008 35.0001 96.8008 35.8001V42.9001C96.8008 43.7001 97.1008 44.3001 97.9008 44.3001C98.6008 44.2001 99.0008 43.7001 99.0008 42.9001ZM104.501 37.7001V46.0001H102.601V32.9001H104.801L107.201 40.4001V32.9001H109.001V46.0001H107.101L104.501 37.7001Z'\r\n        fill={background === false ? '#C5192D' : 'white'}\r\n      />\r\n      <path\r\n        d='M49.3008 27.4998V26.5998C47.5008 26.2998 46.8008 24.9998 46.8008 23.1998V16.7998C46.8008 14.6998 47.8008 13.2998 50.1008 13.2998C52.4008 13.2998 53.5008 14.7998 53.5008 16.7998V23.1998C53.5008 24.5998 53.0008 25.7998 51.9008 26.2998L53.5008 26.5998V28.1998L49.3008 27.4998V27.4998ZM51.3008 23.6998V16.4998C51.3008 15.6998 51.0008 15.0998 50.2008 15.0998C49.4008 15.0998 49.1008 15.6998 49.1008 16.4998V23.6998C49.1008 24.4998 49.4008 25.0998 50.2008 25.0998C50.9008 25.0998 51.3008 24.4998 51.3008 23.6998ZM61.3008 13.4998V23.3998C61.3008 25.3998 60.4008 26.7998 58.2008 26.7998C55.9008 26.7998 54.9008 25.4998 54.9008 23.3998V13.4998H57.1008V23.6998C57.1008 24.4998 57.4008 24.9998 58.2008 24.9998C59.0008 24.9998 59.3008 24.4998 59.3008 23.6998V13.4998H61.3008V13.4998ZM62.2008 26.5998L64.7008 13.4998H67.2008L69.7008 26.5998H67.4008L67.0008 24.1998H64.7008L64.3008 26.5998H62.2008V26.5998ZM64.9008 22.4998H66.7008L65.8008 17.1998L64.9008 22.4998ZM70.7008 13.4998H72.9008V24.7998H75.5008V26.5998H70.7008V13.4998V13.4998ZM76.6008 13.4998H78.8008V26.5998H76.6008V13.4998ZM79.9008 13.4998H85.8008V15.2998H84.0008V26.5998H81.8008V15.2998H80.0008L79.9008 13.4998ZM91.1008 21.5998V26.5998H88.9008V21.5998L86.4008 13.4998H88.7008L90.0008 18.4998L91.3008 13.4998H93.4008L91.1008 21.5998V21.5998Z'\r\n        fill={background === false ? '#C5192D' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG5(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.199219 0H161.099V160.9H0.199219V0Z' fill='#FF3A21' />\r\n      )}\r\n      <path\r\n        d='M25.8016 23.7999C23.6016 23.7999 22.1016 24.5999 21.2016 25.9999V17.8999H30.6016V13.3999H16.2016V31.6999H21.2016V30.9999C21.2016 29.0999 22.1016 27.9999 23.6016 27.9999C25.3016 27.9999 25.9016 29.1999 25.9016 30.8999V38.6999C25.9016 40.3999 25.3016 41.5999 23.6016 41.5999C21.7016 41.5999 21.1016 40.3999 21.1016 38.3999V34.2999H16.1016V37.9999C16.1016 42.8999 18.1016 46.0999 23.6016 46.0999C29.1016 46.0999 31.4016 43.1999 31.4016 38.6999V30.9999C31.4016 25.7999 28.8016 23.7999 25.8016 23.7999'\r\n        fill={background === false ? '#FF3A21' : 'white'}\r\n      />\r\n      <path\r\n        d='M117.399 60.8999H97.3992C97.2992 60.8999 97.0992 60.9999 97.0992 61.1999V67.7999C97.0992 67.8999 97.1992 68.0999 97.3992 68.0999H105.399L96.5992 76.8999C92.0992 73.3999 86.4992 71.2999 80.3992 71.2999C65.9992 71.2999 54.1992 83.0999 54.1992 97.4999C54.1992 110.8 64.1992 121.8 76.9992 123.5V131.2H69.0992C68.9992 131.2 68.7992 131.3 68.7992 131.5V138.6C68.7992 138.7 68.8992 138.9 69.0992 138.9H76.9992V146.4C76.9992 146.5 77.0992 146.7 77.2992 146.7H84.3992C84.4992 146.7 84.6992 146.6 84.6992 146.4V138.9H92.5992C92.6992 138.9 92.8992 138.8 92.8992 138.6V131.5C92.8992 131.4 92.7992 131.2 92.5992 131.2H84.6992V123.4C97.0992 121.4 106.599 110.6 106.599 97.5999C106.599 91.9999 104.799 86.7999 101.799 82.4999L110.499 73.7999V81.1999C110.499 81.2999 110.599 81.4999 110.799 81.4999H117.399C117.499 81.4999 117.699 81.3999 117.699 81.1999V61.1999C117.699 60.9999 117.499 60.8999 117.399 60.8999V60.8999ZM80.3992 116.8C69.7992 116.8 61.0992 108.1 61.0992 97.4999C61.0992 86.8999 69.6992 78.1999 80.3992 78.1999C90.9992 78.1999 99.6992 86.7999 99.6992 97.4999C99.6992 108.1 90.9992 116.8 80.3992 116.8Z'\r\n        fill={background === false ? '#FF3A21' : 'white'}\r\n      />\r\n      <path\r\n        d='M92.2992 89.6001H68.9992C68.8992 89.6001 68.6992 89.7001 68.6992 89.8001V95.5001C68.6992 95.6001 68.7992 95.7001 68.9992 95.7001H92.3992C92.4992 95.7001 92.6992 95.6001 92.6992 95.5001V89.8001C92.5992 89.7001 92.4992 89.6001 92.2992 89.6001ZM92.2992 99.7001H68.9992C68.8992 99.7001 68.6992 99.8001 68.6992 99.9001V105.6C68.6992 105.7 68.7992 105.8 68.9992 105.8H92.3992C92.4992 105.8 92.6992 105.7 92.6992 105.6V99.9001C92.5992 99.8001 92.4992 99.7001 92.2992 99.7001Z'\r\n        fill={background === false ? '#FF3A21' : 'white'}\r\n      />\r\n      <path\r\n        d='M46.1016 32.8001H51.4016V34.6001H48.3016V38.4001H50.5016V40.2001H48.3016V44.2001H51.4016V46.0001H46.1016V32.8001V32.8001ZM54.9016 46.8001V45.9001C53.1016 45.6001 52.4016 44.3001 52.4016 42.5001V36.1001C52.4016 34.0001 53.4016 32.6001 55.7016 32.6001C58.0016 32.6001 59.1016 34.1001 59.1016 36.1001V42.5001C59.1016 43.9001 58.6016 45.1001 57.5016 45.6001L59.1016 45.9001V47.5001L54.9016 46.8001V46.8001ZM56.9016 43.0001V35.8001C56.9016 35.0001 56.6016 34.4001 55.8016 34.4001C55.0016 34.4001 54.7016 35.0001 54.7016 35.8001V43.0001C54.7016 43.8001 55.0016 44.4001 55.8016 44.4001C56.6016 44.4001 56.9016 43.8001 56.9016 43.0001ZM67.0016 32.8001V42.7001C67.0016 44.7001 66.1016 46.1001 63.9016 46.1001C61.6016 46.1001 60.6016 44.8001 60.6016 42.7001V32.8001H62.8016V43.0001C62.8016 43.8001 63.1016 44.3001 63.9016 44.3001C64.7016 44.3001 65.0016 43.8001 65.0016 43.0001V32.8001H67.0016V32.8001ZM68.1016 45.9001L70.6016 32.8001H73.1016L75.6016 45.9001H73.3016L72.9016 43.5001H70.6016L70.2016 45.9001H68.1016V45.9001ZM70.9016 41.8001H72.7016L71.8016 36.5001L70.9016 41.8001ZM76.7016 32.8001H78.9016V44.1001H81.5016V45.9001H76.7016V32.8001V32.8001ZM82.7016 32.8001H84.9016V45.9001H82.7016V32.8001ZM86.1016 32.8001H92.0016V34.6001H90.2016V45.9001H88.0016V34.6001H86.2016V32.8001H86.1016ZM97.5016 40.9001V45.9001H95.3016V40.9001L92.8016 32.8001H95.1016L96.4016 37.8001L97.7016 32.8001H99.8016L97.5016 40.9001V40.9001Z'\r\n        fill={background === false ? '#FF3A21' : 'white'}\r\n      />\r\n      <path\r\n        d='M49.5016 19.5999H52.6016V26.5999H51.0016V25.1999C50.7016 26.1999 50.1016 26.7999 48.9016 26.7999C47.0016 26.7999 46.1016 25.2999 46.1016 23.2999V16.8999C46.1016 14.7999 47.1016 13.3999 49.4016 13.3999C51.8016 13.3999 52.6016 14.7999 52.6016 16.6999V17.8999H50.6016V16.5999C50.6016 15.7999 50.3016 15.2999 49.5016 15.2999C48.7016 15.2999 48.4016 15.8999 48.4016 16.6999V23.7999C48.4016 24.5999 48.7016 25.1999 49.5016 25.1999C50.2016 25.1999 50.6016 24.7999 50.6016 23.8999V21.5999H49.6016V19.5999H49.5016V19.5999ZM54.1016 13.4999H59.4016V15.2999H56.3016V19.0999H58.5016V20.8999H56.3016V24.8999H59.4016V26.6999H54.1016V13.4999V13.4999ZM62.6016 18.3999V26.6999H60.7016V13.5999H62.9016L65.3016 21.0999V13.5999H67.1016V26.6999H65.2016L62.6016 18.3999ZM75.2016 16.9999V23.0999C75.2016 25.0999 74.4016 26.5999 72.0016 26.5999H68.6016V13.4999H72.0016C74.4016 13.4999 75.2016 14.9999 75.2016 16.9999ZM71.7016 24.7999C72.6016 24.7999 73.0016 24.2999 73.0016 23.4999V16.5999C73.0016 15.7999 72.7016 15.2999 71.7016 15.2999H70.8016V24.7999H71.7016V24.7999ZM76.7016 13.4999H82.0016V15.2999H78.9016V19.0999H81.1016V20.8999H78.9016V24.8999H82.0016V26.6999H76.7016V13.4999V13.4999ZM85.5016 20.5999V26.5999H83.3016V13.4999H86.5016C88.7016 13.4999 89.5016 14.5999 89.5016 16.3999V18.0999C89.5016 19.4999 89.0016 20.2999 87.7016 20.5999L89.8016 26.5999H87.5016L85.5016 20.5999V20.5999ZM85.5016 15.2999V19.3999H86.2016C87.0016 19.3999 87.3016 18.9999 87.3016 18.2999V16.3999C87.3016 15.6999 87.0016 15.2999 86.2016 15.2999H85.5016Z'\r\n        fill={background === false ? '#FF3A21' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG6(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : <path d='M0.5 0H161.4V160.9H0.5V0Z' fill='#26BDE2' />}\r\n      <path\r\n        d='M24.8994 46.4002C30.6994 46.4002 32.8994 43.2002 32.8994 38.2002V33.4002C32.8994 28.1002 30.7994 25.4002 26.8994 25.4002C24.5994 25.4002 23.1994 26.5002 22.3994 28.0002V21.0002C22.3994 19.0002 22.9993 17.6002 24.9993 17.6002C26.9993 17.6002 27.4993 18.8002 27.4993 20.8002V23.0002H32.4993V21.3002C32.4993 16.5002 30.8994 13.2002 24.8994 13.2002C19.1994 13.2002 16.9993 16.9002 16.9993 22.0002V37.8002C16.8993 42.7002 19.0994 46.4002 24.8994 46.4002ZM22.3994 32.7002C22.4994 30.9002 23.2993 29.7002 24.9993 29.7002C26.8993 29.7002 27.5993 30.8002 27.5993 33.0002V38.6002C27.5993 40.7002 26.7993 41.9002 24.9993 41.9002C23.1993 41.9002 22.4993 40.7002 22.4993 38.6002L22.3994 32.7002ZM110.699 65.1002C110.599 65.0002 110.399 64.9002 110.199 64.9002H51.7994C51.5994 64.9002 51.3994 65.0002 51.2994 65.1002C51.1994 65.3002 51.0993 65.5002 51.1993 65.7002L60.9993 125C61.0993 125.3 61.2993 125.6 61.6993 125.6H73.6993L74.4993 135.3H69.3994L81.1993 147.1L92.9993 135.3H87.8994L88.6993 125.7H100.899C101.199 125.7 101.499 125.5 101.599 125.1L110.799 65.8002C110.899 65.4002 110.799 65.2002 110.699 65.1002V65.1002ZM88.1993 112.6C88.1993 112.6 85.4993 115.3 81.1993 115C76.8993 115.3 74.1993 112.6 74.1993 112.6C69.7993 108.2 71.3994 102.8 72.8994 100C73.7994 98.2002 80.5993 88.1002 81.0993 87.3002V87.2002V87.3002C81.6993 88.2002 88.3994 98.3002 89.2994 100C90.9994 102.8 92.4993 108.2 88.1993 112.6V112.6ZM106.699 77.6002C105.099 76.9002 103.099 77.2002 101.199 77.9002C93.9993 80.8002 88.9994 81.9002 81.3994 79.5002C76.5994 78.0002 72.0994 74.9002 66.7994 76.8002C63.2994 78.1002 59.9993 79.3002 55.9993 79.2002L53.6993 67.4002H108.299L106.699 77.6002V77.6002Z'\r\n        fill={background === false ? '#26BDE2' : 'white'}\r\n      />\r\n      <path\r\n        d='M46.3008 45.9001L48.8008 32.8001H51.3008L53.8008 45.9001H51.5008L51.1008 43.5001H48.8008L48.4008 45.9001H46.3008ZM49.1008 41.8001H50.9008L50.0008 36.5001L49.1008 41.8001V41.8001ZM56.6008 37.7001V46.0001H54.7007V32.9001H56.9008L59.3008 40.4001V32.9001H61.1008V46.0001H59.2007L56.6008 37.7001ZM69.3008 36.3001V42.4001C69.3008 44.4001 68.5008 45.9001 66.1008 45.9001H62.7007V32.8001H66.1008C68.5008 32.8001 69.3008 34.3001 69.3008 36.3001ZM65.9008 44.1001C66.8008 44.1001 67.2007 43.6001 67.2007 42.8001V35.9001C67.2007 35.1001 66.9008 34.6001 65.9008 34.6001H65.0008V44.1001H65.9008V44.1001ZM74.3008 43.1001V41.3001H76.4008V43.1001C76.4008 43.8001 76.7008 44.3001 77.5008 44.3001C78.2008 44.3001 78.5008 43.8001 78.5008 43.1001V42.6001C78.5008 41.8001 78.2008 41.4001 77.5008 40.7001L76.2007 39.4001C74.9007 38.2001 74.4008 37.4001 74.4008 35.9001V35.5001C74.4008 33.9001 75.4008 32.6001 77.5008 32.6001C79.7008 32.6001 80.6008 33.7001 80.6008 35.6001V36.7001H78.6008V35.6001C78.6008 34.8001 78.3008 34.5001 77.6008 34.5001C77.0008 34.5001 76.6008 34.8001 76.6008 35.6001V35.9001C76.6008 36.6001 77.0008 37.1001 77.6008 37.7001L79.0008 39.1001C80.2008 40.3001 80.8008 41.1001 80.8008 42.5001V43.1001C80.8008 44.9001 79.8008 46.2001 77.6008 46.2001C75.1008 46.1001 74.3008 44.8001 74.3008 43.1001V43.1001ZM81.3008 45.9001L83.8008 32.8001H86.3008L88.8008 45.9001H86.5008L86.1008 43.5001H83.8008L83.4008 45.9001H81.3008ZM84.0008 41.8001H85.8008L84.9008 36.5001L84.0008 41.8001V41.8001ZM91.7007 37.7001V46.0001H89.8008V32.9001H92.0008L94.4008 40.4001V32.9001H96.2007V46.0001H94.3008L91.7007 37.7001ZM98.0008 32.8001H100.201V45.9001H98.0008V32.8001ZM101.301 32.8001H107.201V34.6001H105.401V45.9001H103.201V34.6001H101.401L101.301 32.8001V32.8001ZM106.601 45.9001L109.101 32.8001H111.601L114.101 45.9001H111.801L111.401 43.5001H109.101L108.701 45.9001H106.601ZM109.401 41.8001H111.201L110.301 36.5001L109.401 41.8001V41.8001ZM113.401 32.8001H119.301V34.6001H117.501V45.9001H115.301V34.6001H113.501L113.401 32.8001V32.8001ZM120.501 32.8001H122.701V45.9001H120.501V32.8001ZM124.101 42.5001V36.1001C124.101 34.0001 125.101 32.6001 127.401 32.6001C129.701 32.6001 130.801 34.1001 130.801 36.1001V42.5001C130.801 44.5001 129.801 46.0001 127.401 46.0001C125.201 46.1001 124.101 44.6001 124.101 42.5001ZM128.601 42.9001V35.8001C128.601 35.0001 128.301 34.4001 127.501 34.4001C126.701 34.4001 126.401 35.0001 126.401 35.8001V42.9001C126.401 43.7001 126.701 44.3001 127.501 44.3001C128.301 44.2001 128.601 43.7001 128.601 42.9001ZM134.201 37.7001V46.0001H132.301V32.9001H134.501L136.901 40.4001V32.9001H138.701V46.0001H136.801L134.201 37.7001Z'\r\n        fill={background === false ? '#26BDE2' : 'white'}\r\n      />\r\n      <path\r\n        d='M46.6016 23.1002V16.7002C46.6016 14.6002 47.6016 13.2002 49.9016 13.2002C52.3016 13.2002 53.0016 14.6002 53.0016 16.5002V18.1002H51.0016V16.4002C51.0016 15.6002 50.7016 15.1002 49.9016 15.1002C49.1016 15.1002 48.8016 15.7002 48.8016 16.5002V23.6002C48.8016 24.4002 49.1016 25.0002 49.9016 25.0002C50.7016 25.0002 51.0016 24.5002 51.0016 23.7002V21.3002H53.0016V23.6002C53.0016 25.5002 52.2016 26.9002 49.9016 26.9002C47.5016 26.7002 46.6016 25.2002 46.6016 23.1002V23.1002ZM54.4016 13.4002H56.6016V24.7002H59.2015V26.5002H54.4016V13.4002V13.4002ZM60.4016 13.4002H65.7015V15.2002H62.6016V19.0002H64.8016V20.8002H62.6016V24.8002H65.7015V26.6002H60.4016V13.4002V13.4002ZM66.7015 26.5002L69.2015 13.4002H71.7015L74.2015 26.5002H71.9016L71.5016 24.1002H69.2015L68.8016 26.5002H66.7015ZM69.5016 22.4002H71.3016L70.4016 17.1002L69.5016 22.4002V22.4002ZM77.2015 18.3002V26.6002H75.3016V13.5002H77.5016L79.9016 21.0002V13.5002H81.7015V26.6002H79.8016L77.2015 18.3002ZM91.2015 18.4002L90.0016 26.5002H87.9016L86.1016 13.4002H88.2015L89.2015 21.7002L90.3016 13.4002H92.1016L93.3016 21.7002L94.3016 13.4002H96.2015L94.5016 26.5002H92.4016L91.2015 18.4002ZM96.3016 26.5002L98.8016 13.4002H101.302L103.802 26.5002H101.502L101.102 24.1002H98.8016L98.4016 26.5002H96.3016ZM99.0016 22.4002H100.802L99.9016 17.1002L99.0016 22.4002V22.4002ZM103.502 13.4002H109.402V15.2002H107.602V26.5002H105.402V15.2002H103.602L103.502 13.4002V13.4002ZM110.402 13.4002H115.702V15.2002H112.602V19.0002H114.802V20.8002H112.602V24.8002H115.702V26.6002H110.402V13.4002V13.4002ZM119.102 20.5002V26.5002H116.902V13.4002H120.102C122.302 13.4002 123.102 14.5002 123.102 16.3002V18.0002C123.102 19.4002 122.602 20.2002 121.302 20.5002L123.402 26.5002H121.102L119.102 20.5002ZM119.102 15.2002V19.3002H119.802C120.602 19.3002 120.902 18.9002 120.902 18.2002V16.3002C120.902 15.6002 120.602 15.2002 119.802 15.2002H119.102Z'\r\n        fill={background === false ? '#26BDE2' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG7(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.800781 0.600098H161.701V161.5H0.800781V0.600098Z' fill='#FCC30B' />\r\n      )}\r\n      <path\r\n        d='M17.3008 18.5001H25.7008L18.4008 46.5001H23.8008L31.0008 19.1001V14.1001H17.3008V18.5001Z'\r\n        fill={background === false ? '#FCC30B' : 'white'}\r\n      />\r\n      <path\r\n        d='M46.3984 27.1999L48.8984 14.0999H51.3984L53.8984 27.1999H51.5984L51.1984 24.7999H48.8984L48.4984 27.1999H46.3984V27.1999ZM49.1984 22.9999H50.9984L50.0984 17.6999L49.1984 22.9999ZM54.6984 14.0999H59.8984V15.8999H56.8984V19.6999H59.0984V21.4999H56.8984V27.2999H54.6984V14.0999V14.0999ZM60.7984 14.0999H65.9984V15.8999H62.9984V19.6999H65.1984V21.4999H62.9984V27.2999H60.7984V14.0999V14.0999ZM66.5984 23.7999V17.3999C66.5984 15.2999 67.5984 13.8999 69.8984 13.8999C72.1984 13.8999 73.2984 15.3999 73.2984 17.3999V23.7999C73.2984 25.7999 72.2984 27.2999 69.8984 27.2999C67.5984 27.3999 66.5984 25.7999 66.5984 23.7999ZM71.0984 24.1999V17.0999C71.0984 16.2999 70.7984 15.6999 69.9984 15.6999C69.1984 15.6999 68.8984 16.2999 68.8984 17.0999V24.1999C68.8984 24.9999 69.1984 25.5999 69.9984 25.5999C70.7984 25.4999 71.0984 24.9999 71.0984 24.1999ZM76.6984 21.1999V27.1999H74.4984V14.0999H77.6984C79.8984 14.0999 80.6984 15.1999 80.6984 16.9999V18.6999C80.6984 20.0999 80.1984 20.8999 78.8984 21.1999L80.9984 27.1999H78.6984L76.6984 21.1999V21.1999ZM76.6984 15.8999V19.9999H77.3984C78.1984 19.9999 78.4984 19.5999 78.4984 18.8999V16.9999C78.4984 16.2999 78.1984 15.8999 77.3984 15.8999H76.6984ZM88.4984 17.5999V23.6999C88.4984 25.6999 87.6984 27.1999 85.2984 27.1999H81.8984V14.0999H85.2984C87.5984 14.0999 88.4984 15.5999 88.4984 17.5999ZM84.9984 25.3999C85.8984 25.3999 86.2984 24.8999 86.2984 24.0999V17.1999C86.2984 16.3999 85.9984 15.8999 84.9984 15.8999H84.0984V25.3999H84.9984ZM88.9984 27.1999L91.4984 14.0999H93.9984L96.4984 27.1999H94.1984L93.7984 24.7999H91.4984L91.0984 27.1999H88.9984ZM91.7984 22.9999H93.5984L92.6984 17.6999L91.7984 22.9999ZM97.2984 14.0999H100.498C102.698 14.0999 103.398 15.0999 103.398 16.9999V18.2999C103.398 19.3999 102.998 20.0999 102.098 20.3999C103.198 20.6999 103.698 21.3999 103.698 22.5999V24.2999C103.698 26.1999 102.898 27.1999 100.698 27.1999H97.2984V14.0999V14.0999ZM99.4984 19.5999H100.298C100.998 19.5999 101.298 19.1999 101.298 18.4999V16.8999C101.298 16.1999 100.998 15.7999 100.198 15.7999H99.3984V19.5999H99.4984V19.5999ZM99.4984 21.2999V25.3999H100.498C101.198 25.3999 101.598 24.9999 101.598 24.2999V22.2999C101.598 21.5999 101.298 21.1999 100.498 21.1999H99.4984V21.2999ZM104.798 14.0999H106.998V25.3999H109.598V27.1999H104.798V14.0999V14.0999ZM110.598 14.0999H115.898V15.8999H112.798V19.6999H114.998V21.4999H112.798V25.4999H115.898V27.2999H110.598V14.0999V14.0999ZM118.498 27.1999L120.998 14.0999H123.498L125.998 27.1999H123.698L123.298 24.7999H120.998L120.598 27.1999H118.498ZM121.298 22.9999H123.098L122.198 17.6999L121.298 22.9999ZM128.698 18.8999V27.1999H126.798V14.0999H128.998L131.398 21.5999V14.0999H133.198V27.1999H131.298L128.698 18.8999ZM140.998 17.5999V23.6999C140.998 25.6999 140.198 27.1999 137.798 27.1999H134.398V14.0999H137.798C140.198 14.0999 140.998 15.5999 140.998 17.5999ZM137.598 25.3999C138.498 25.3999 138.898 24.8999 138.898 24.0999V17.1999C138.898 16.3999 138.598 15.8999 137.598 15.8999H136.698V25.3999H137.598Z'\r\n        fill={background === false ? '#FCC30B' : 'white'}\r\n      />\r\n      <path\r\n        d='M46.6992 43.0998V36.7998C46.6992 34.7998 47.6992 33.2998 49.9992 33.2998C52.3992 33.2998 53.0992 34.6998 53.0992 36.5998V38.0998H51.0992V36.3998C51.0992 35.5998 50.7992 35.0998 49.9992 35.0998C49.1992 35.0998 48.8992 35.6998 48.8992 36.4998V43.4998C48.8992 44.2998 49.1992 44.8998 49.9992 44.8998C50.7992 44.8998 51.0992 44.3998 51.0992 43.5998V41.1998H53.0992V43.4998C53.0992 45.3998 52.2992 46.7998 49.9992 46.7998C47.6992 46.6998 46.6992 45.1998 46.6992 43.0998ZM54.4992 33.3998H56.6992V44.6998H59.2992V46.4998H54.4992V33.3998V33.3998ZM60.4992 33.3998H65.6992V35.1998H62.6992V38.8998H64.8992V40.6998H62.6992V44.6998H65.6992V46.4998H60.4992V33.3998ZM66.7992 46.4998L69.2992 33.3998H71.7992L74.2992 46.4998H71.9992L71.5992 44.0998H69.2992L68.8992 46.4998H66.7992V46.4998ZM69.5992 42.3998H71.3992L70.4992 37.0998L69.5992 42.3998ZM77.1992 38.2998V46.4998H75.2992V33.3998H77.4992L79.8992 40.8998V33.3998H81.6992V46.4998H79.7992L77.1992 38.2998ZM87.5992 33.3998H92.7992V35.1998H89.7992V38.8998H91.9992V40.6998H89.7992V44.6998H92.7992V46.4998H87.5992V33.3998ZM95.9992 38.2998V46.4998H94.0992V33.3998H96.2992L98.6992 40.8998V33.3998H100.499V46.4998H98.5992L95.9992 38.2998ZM101.999 33.3998H107.199V35.1998H104.199V38.8998H106.399V40.6998H104.199V44.6998H107.199V46.4998H101.999V33.3998ZM110.799 40.4998V46.4998H108.599V33.3998H111.799C113.999 33.3998 114.799 34.4998 114.799 36.2998V37.9998C114.799 39.3998 114.299 40.1998 112.999 40.4998L115.099 46.3998H112.799L110.799 40.4998V40.4998ZM110.799 35.1998V39.2998H111.499C112.299 39.2998 112.599 38.8998 112.599 38.1998V36.2998C112.599 35.5998 112.299 35.1998 111.499 35.1998H110.799ZM119.499 39.4998H122.599V46.4998H120.999V45.0998C120.699 46.0998 120.099 46.6998 118.899 46.6998C116.999 46.6998 116.099 45.1998 116.099 43.1998V36.8998C116.099 34.8998 117.099 33.3998 119.399 33.3998C121.799 33.3998 122.499 34.7998 122.499 36.6998V37.8998H120.499V36.5998C120.499 35.7998 120.199 35.2998 119.399 35.2998C118.599 35.2998 118.299 35.8998 118.299 36.6998V43.6998C118.299 44.4998 118.599 45.0998 119.399 45.0998C120.099 45.0998 120.499 44.6998 120.499 43.7998V41.4998H119.499V39.4998V39.4998ZM128.299 41.4998V46.4998H126.099V41.4998L123.599 33.3998H125.899L127.199 38.3998L128.499 33.3998H130.599L128.299 41.4998V41.4998Z'\r\n        fill={background === false ? '#FCC30B' : 'white'}\r\n      />\r\n      <path\r\n        d='M81.3992 143C82.4992 143 83.2992 142.1 83.2992 141.2V130.9C83.2992 130 82.3992 129.1 81.3992 129.1C80.2992 129.1 79.4992 130.1 79.4992 130.9V141.2C79.4992 142 80.3992 143 81.3992 143ZM81.1992 78.6C68.1992 78.6 57.5992 89.2 57.5992 102.2C57.5992 115.2 68.1992 125.8 81.1992 125.8C94.1992 125.8 104.799 115.2 104.799 102.2C104.799 89.1 94.2992 78.6 81.1992 78.6ZM79.4992 87.9C79.4992 87.1 80.2992 86.3 81.2992 86.3C82.2992 86.3 82.9992 87.2 82.9992 87.9V96C82.9992 96.8 82.1992 97.6 81.2992 97.6C80.2992 97.6 79.4992 96.7 79.4992 96V87.9ZM81.1992 114.2C74.3992 114.2 68.8992 108.7 68.8992 101.9C68.8992 96.4 72.4992 91.7 77.4992 90.2V94.8C74.8992 96.1 73.0992 98.8 73.0992 101.9C73.0992 106.3 76.6992 109.9 81.0992 109.9C85.4992 109.9 89.0992 106.3 89.0992 101.9C89.0992 98.8 87.2992 96.1 84.6992 94.7V90.1C89.6992 91.6 93.2992 96.3 93.2992 101.8C93.4992 108.7 87.9992 114.2 81.1992 114.2V114.2ZM54.1992 101.9C54.1992 100.8 53.2992 100 52.3992 100H41.9992C41.0992 100 40.1992 100.9 40.1992 101.9C40.1992 103 41.1992 103.8 41.9992 103.8H52.2992C53.1992 103.9 54.1992 103 54.1992 101.9V101.9ZM122.299 101.9C122.299 100.8 121.399 100 120.499 100H110.199C109.299 100 108.399 100.9 108.399 101.9C108.399 103 109.399 103.8 110.199 103.8H120.499C121.299 103.9 122.299 103 122.299 101.9ZM81.1992 74.9C82.2992 74.9 83.0992 74 83.0992 73.1V62.8C83.0992 61.9 82.1992 61 81.1992 61C80.0992 61 79.2992 62 79.2992 62.8V73C79.2992 73.9 80.1992 74.9 81.1992 74.9ZM57.6992 88.5C58.1992 87.6 57.7992 86.3 57.0992 85.9L48.0992 80.8C47.2992 80.4 46.0992 80.6 45.5992 81.6C45.0992 82.5 45.4992 83.8 46.1992 84.2L55.1992 89.3C55.8992 89.7 57.1992 89.4 57.6992 88.5ZM116.899 122.3C117.399 121.4 116.999 120.1 116.299 119.7L107.299 114.6C106.499 114.2 105.299 114.4 104.799 115.4C104.299 116.3 104.699 117.6 105.399 118L114.399 123.1C115.099 123.5 116.299 123.3 116.899 122.3ZM94.6992 78.4C95.5992 78.9 96.7992 78.5 97.2992 77.8L102.399 68.8C102.799 68 102.599 66.8 101.599 66.3C100.699 65.8 99.3992 66.2 98.9992 66.9L93.8992 75.9C93.4992 76.7 93.7992 77.9 94.6992 78.4ZM60.7992 137.6C61.6992 138.1 62.8992 137.7 63.3992 137L68.4992 128C68.8992 127.2 68.6992 126 67.6992 125.5C66.7992 125 65.4992 125.4 65.0992 126.1L59.9992 135.1C59.5992 135.8 59.8992 137 60.7992 137.6ZM67.6992 78.5C68.5992 78 68.8992 76.7 68.4992 76L63.3992 67C62.9992 66.2 61.6992 65.8 60.7992 66.4C59.8992 66.9 59.5992 68.2 59.9992 69L65.0992 78C65.5992 78.6 66.7992 79 67.6992 78.5ZM101.699 137.5C102.599 137 102.899 135.7 102.499 135L97.3992 126C96.9992 125.2 95.6992 124.8 94.7992 125.4C93.8992 125.9 93.5992 127.2 93.9992 128L99.0992 137C99.4992 137.7 100.799 138.1 101.699 137.5ZM104.699 88.4C105.199 89.3 106.499 89.6 107.199 89.2L116.199 84.1C116.999 83.7 117.399 82.4 116.799 81.5C116.299 80.6 114.999 80.3 114.199 80.7L105.199 85.8C104.599 86.3 104.199 87.5 104.699 88.4ZM45.6992 122.4C46.1992 123.3 47.4992 123.6 48.1992 123.2L57.1992 118.1C57.9992 117.7 58.3992 116.4 57.7992 115.5C57.2992 114.6 55.9992 114.3 55.1992 114.7L46.1992 119.8C45.4992 120.2 45.0992 121.5 45.6992 122.4Z'\r\n        fill={background === false ? '#FCC30B' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG8(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.101562 0.600098H161.002V161.5H0.101562V0.600098Z' fill='#A21942' />\r\n      )}\r\n      <path\r\n        d='M31.3992 38.5998V34.9998C31.3992 31.8998 30.2992 29.5998 27.7992 28.4998C29.9992 27.3998 30.9992 25.4998 30.9992 22.8998V21.5998C30.9992 16.4998 28.3992 13.7998 23.2992 13.7998C18.2992 13.7998 15.6992 16.4998 15.6992 21.5998V22.8998C15.6992 25.4998 16.6992 27.4998 18.7992 28.4998C16.2992 29.5998 15.1992 31.8998 15.1992 34.9998V38.4998C15.1992 43.3998 17.4992 46.8998 23.2992 46.8998C28.9992 46.9998 31.3992 43.4998 31.3992 38.5998V38.5998ZM20.7992 21.1998C20.7992 19.1998 21.4992 18.0998 23.1992 18.0998C24.9992 18.0998 25.6992 19.1998 25.6992 21.1998V23.3998C25.6992 25.3998 24.9992 26.4998 23.1992 26.4998C21.3992 26.4998 20.7992 25.2998 20.7992 23.3998V21.1998ZM25.8992 39.1998C25.8992 41.1998 25.1992 42.5998 23.1992 42.5998C21.2992 42.5998 20.5992 41.1998 20.5992 39.1998V33.8998C20.5992 31.8998 21.2992 30.5998 23.1992 30.5998C25.1992 30.5998 25.8992 31.9998 25.8992 33.8998V39.1998Z'\r\n        fill={background === false ? '#A21942' : 'white'}\r\n      />\r\n      <path\r\n        d='M111.798 79.8001L95.3984 95.4001C94.7984 96.0001 94.4984 96.5001 94.4984 97.7001V141.3C94.4984 141.8 94.8984 142.2 95.3984 142.2H112.298C112.798 142.2 113.198 141.8 113.198 141.3V80.2001C113.298 79.6001 112.898 78.7001 111.798 79.8001V79.8001ZM64.6985 100L48.2984 115.6C47.6984 116.2 47.3984 116.7 47.3984 117.9V141.2C47.3984 141.7 47.7984 142.1 48.2984 142.1H65.1985C65.6985 142.1 66.0984 141.7 66.0984 141.2V100.4C66.1984 99.9001 65.7985 99.0001 64.6985 100'\r\n        fill={background === false ? '#A21942' : 'white'}\r\n      />\r\n      <path\r\n        d='M119.3 60.8999C119.3 60.7999 119.3 60.5999 119.2 60.4999C119.1 60.3999 119 60.3999 118.9 60.3999H118.7L106.2 63.1999H106C105.9 63.1999 105.8 63.2999 105.8 63.2999C105.6 63.4999 105.6 63.7999 105.8 63.9999L105.9 64.0999L108.8 66.9999L80.4 95.3999L67.3 82.2999C67.2 82.1999 66.9 82.1999 66.8 82.2999L63.2 85.8999L42.2 106.9C42.1 107 42.1 107.3 42.2 107.4L45.8 111C45.9 111.1 46.2 111.1 46.3 111L67.1 90.2999L76.6 99.7999L80.2 103.4C80.3 103.5 80.6 103.5 80.7 103.4L112.9 71.1999L115.9 74.1999C116.1 74.3999 116.4 74.3999 116.6 74.1999C116.7 74.0999 116.7 73.9999 116.7 73.8999L119.5 61.0999L119.3 60.8999V60.8999Z'\r\n        fill={background === false ? '#A21942' : 'white'}\r\n      />\r\n      <path\r\n        d='M88.3992 102.8L80.4992 110.8C80.2992 110.9 80.0992 110.9 79.9992 110.8L72.7992 103.5C71.4992 102.2 71.1992 103.3 71.1992 103.8V141.4C71.1992 141.9 71.5992 142.3 72.0992 142.3H88.9992C89.4992 142.3 89.8992 141.9 89.8992 141.4V103.2C89.8992 102.5 89.4992 101.6 88.3992 102.8'\r\n        fill={background === false ? '#A21942' : 'white'}\r\n      />\r\n      <path\r\n        d='M49.9984 17.5999V23.6999C49.9984 25.6999 49.1984 27.1999 46.7984 27.1999H43.3984V14.0999H46.7984C49.1984 14.0999 49.9984 15.5999 49.9984 17.5999ZM46.4984 25.3999C47.3984 25.3999 47.7984 24.8999 47.7984 24.0999V17.1999C47.7984 16.3999 47.4984 15.8999 46.4984 15.8999H45.5984V25.3999H46.4984ZM51.3984 14.0999H56.6985V15.8999H53.5984V19.6999H55.7984V21.4999H53.5984V25.4999H56.6985V27.2999H51.3984V14.0999V14.0999ZM57.7984 23.7999V17.3999C57.7984 15.2999 58.7984 13.8999 61.0984 13.8999C63.4984 13.8999 64.1985 15.2999 64.1985 17.1999V18.7999H62.1985V16.9999C62.1985 16.1999 61.8984 15.6999 61.0984 15.6999C60.2984 15.6999 59.9984 16.2999 59.9984 17.0999V24.1999C59.9984 24.9999 60.2984 25.5999 61.0984 25.5999C61.8984 25.5999 62.1985 25.0999 62.1985 24.2999V21.8999H64.1985V24.1999C64.1985 26.0999 63.3984 27.4999 61.0984 27.4999C58.7984 27.3999 57.7984 25.7999 57.7984 23.7999ZM65.5984 14.0999H70.8984V15.8999H67.7984V19.6999H69.9984V21.4999H67.7984V25.4999H70.8984V27.2999H65.5984V14.0999V14.0999ZM73.9984 18.8999V27.1999H72.0984V14.0999H74.2984L76.6985 21.5999V14.0999H78.4984V27.1999H76.5984L73.9984 18.8999ZM79.6985 14.0999H85.5984V15.8999H83.7984V27.1999H81.5984V15.8999H79.7984V14.0999H79.6985V14.0999ZM93.6985 19.0999L92.4984 27.1999H90.3984L88.5984 14.0999H90.6985L91.6985 22.3999L92.7984 14.0999H94.5984L95.7984 22.3999L96.7984 14.0999H98.6985L96.9984 27.1999H94.9984L93.6985 19.0999ZM99.5984 23.7999V17.3999C99.5984 15.2999 100.598 13.8999 102.898 13.8999C105.198 13.8999 106.298 15.3999 106.298 17.3999V23.7999C106.298 25.7999 105.298 27.2999 102.898 27.2999C100.598 27.3999 99.5984 25.7999 99.5984 23.7999ZM103.998 24.1999V17.0999C103.998 16.2999 103.698 15.6999 102.898 15.6999C102.098 15.6999 101.798 16.2999 101.798 17.0999V24.1999C101.798 24.9999 102.098 25.5999 102.898 25.5999C103.698 25.4999 103.998 24.9999 103.998 24.1999ZM109.898 21.1999V27.1999H107.698V14.0999H110.898C113.098 14.0999 113.898 15.1999 113.898 16.9999V18.6999C113.898 20.0999 113.398 20.8999 112.098 21.1999L114.198 27.1999H111.898L109.898 21.1999V21.1999ZM109.898 15.8999V19.9999H110.598C111.398 19.9999 111.698 19.5999 111.698 18.8999V16.9999C111.698 16.2999 111.398 15.8999 110.598 15.8999H109.898ZM117.498 20.7999V27.1999H115.298V14.0999H117.498V19.8999L119.898 14.0999H122.098L119.498 19.9999L122.098 27.1999H119.798L117.498 20.7999V20.7999ZM125.198 27.1999L127.698 14.0999H130.198L132.698 27.1999H130.398L129.998 24.7999H127.698L127.298 27.1999H125.198ZM127.998 22.9999H129.798L128.898 17.6999L127.998 22.9999V22.9999ZM135.298 18.8999V27.1999H133.398V14.0999H135.598L137.998 21.5999V14.0999H139.798V27.1999H137.898L135.298 18.8999ZM147.898 17.5999V23.6999C147.898 25.6999 147.098 27.1999 144.698 27.1999H141.298V14.0999H144.698C147.098 14.0999 147.898 15.5999 147.898 17.5999ZM144.398 25.3999C145.298 25.3999 145.698 24.8999 145.698 24.0999V17.1999C145.698 16.3999 145.398 15.8999 144.398 15.8999H143.498V25.3999H144.398Z'\r\n        fill={background === false ? '#A21942' : 'white'}\r\n      />\r\n      <path\r\n        d='M43.3984 33.4002H48.6985V35.2002H45.5984V39.0002H47.7984V40.8002H45.5984V44.8002H48.6985V46.6002H43.3984V33.4002V33.4002ZM49.5984 43.1002V36.7002C49.5984 34.6002 50.5984 33.2002 52.8984 33.2002C55.2984 33.2002 55.9984 34.6002 55.9984 36.5002V38.1002H53.9984V36.4002C53.9984 35.6002 53.6984 35.1002 52.8984 35.1002C52.0984 35.1002 51.7984 35.7002 51.7984 36.5002V43.6002C51.7984 44.4002 52.0984 45.0002 52.8984 45.0002C53.6984 45.0002 53.9984 44.5002 53.9984 43.7002V41.3002H55.9984V43.6002C55.9984 45.5002 55.1984 46.9002 52.8984 46.9002C50.5984 46.7002 49.5984 45.2002 49.5984 43.1002V43.1002ZM57.1985 43.1002V36.7002C57.1985 34.6002 58.1984 33.2002 60.4984 33.2002C62.7984 33.2002 63.8984 34.7002 63.8984 36.7002V43.1002C63.8984 45.1002 62.8984 46.6002 60.4984 46.6002C58.2984 46.7002 57.1985 45.2002 57.1985 43.1002ZM61.6985 43.5002V36.4002C61.6985 35.6002 61.3984 35.0002 60.5984 35.0002C59.7984 35.0002 59.4984 35.6002 59.4984 36.4002V43.5002C59.4984 44.3002 59.7984 44.9002 60.5984 44.9002C61.3984 44.8002 61.6985 44.3002 61.6985 43.5002ZM67.0984 38.3002V46.6002H65.1985V33.5002H67.3984L69.7984 41.0002V33.5002H71.5984V46.6002H69.6985L67.0984 38.3002ZM72.8984 43.1002V36.7002C72.8984 34.6002 73.8985 33.2002 76.1985 33.2002C78.4985 33.2002 79.5984 34.7002 79.5984 36.7002V43.1002C79.5984 45.1002 78.5985 46.6002 76.1985 46.6002C73.8985 46.7002 72.8984 45.2002 72.8984 43.1002ZM77.2984 43.5002V36.4002C77.2984 35.6002 76.9985 35.0002 76.1985 35.0002C75.3985 35.0002 75.0984 35.6002 75.0984 36.4002V43.5002C75.0984 44.3002 75.3985 44.9002 76.1985 44.9002C76.9985 44.8002 77.2984 44.3002 77.2984 43.5002ZM86.8984 38.0002L85.2984 46.5002H84.2984L82.6985 38.0002V46.5002H80.8984V33.4002H83.4984L84.8984 40.8002L86.1985 33.4002H88.9984V46.5002H86.9984L86.8984 38.0002V38.0002ZM90.1985 33.4002H92.3984V46.5002H90.1985V33.4002ZM93.5984 43.1002V36.7002C93.5984 34.6002 94.5984 33.2002 96.8984 33.2002C99.2984 33.2002 99.9984 34.6002 99.9984 36.5002V38.1002H97.9984V36.4002C97.9984 35.6002 97.6984 35.1002 96.8984 35.1002C96.0984 35.1002 95.7984 35.7002 95.7984 36.5002V43.6002C95.7984 44.4002 96.0984 45.0002 96.8984 45.0002C97.6984 45.0002 97.9984 44.5002 97.9984 43.7002V41.3002H99.9984V43.6002C99.9984 45.5002 99.1984 46.9002 96.8984 46.9002C94.5984 46.7002 93.5984 45.2002 93.5984 43.1002V43.1002ZM107.198 39.5002H110.298V46.5002H108.698V45.1002C108.398 46.1002 107.798 46.7002 106.598 46.7002C104.698 46.7002 103.798 45.2002 103.798 43.2002V36.8002C103.798 34.7002 104.798 33.3002 107.098 33.3002C109.498 33.3002 110.298 34.7002 110.298 36.6002V37.8002H108.298V36.5002C108.298 35.7002 107.998 35.2002 107.198 35.2002C106.398 35.2002 106.098 35.8002 106.098 36.6002V43.7002C106.098 44.5002 106.398 45.1002 107.198 45.1002C107.898 45.1002 108.298 44.7002 108.298 43.8002V41.5002H107.298V39.5002H107.198V39.5002ZM113.998 40.5002V46.5002H111.798V33.4002H114.998C117.198 33.4002 117.998 34.5002 117.998 36.3002V38.0002C117.998 39.4002 117.498 40.2002 116.198 40.5002L118.298 46.5002H115.998L113.998 40.5002V40.5002ZM113.998 35.2002V39.3002H114.698C115.498 39.3002 115.798 38.9002 115.798 38.2002V36.3002C115.798 35.6002 115.498 35.2002 114.698 35.2002H113.998ZM118.998 43.1002V36.7002C118.998 34.6002 119.998 33.2002 122.298 33.2002C124.598 33.2002 125.698 34.7002 125.698 36.7002V43.1002C125.698 45.1002 124.698 46.6002 122.298 46.6002C119.998 46.7002 118.998 45.2002 118.998 43.1002ZM123.498 43.5002V36.4002C123.498 35.6002 123.198 35.0002 122.398 35.0002C121.598 35.0002 121.298 35.6002 121.298 36.4002V43.5002C121.298 44.3002 121.598 44.9002 122.398 44.9002C123.198 44.8002 123.498 44.3002 123.498 43.5002ZM131.398 38.4002L130.198 46.5002H128.098L126.298 33.4002H128.398L129.398 41.7002L130.498 33.4002H132.298L133.498 41.7002L134.498 33.4002H136.398L134.698 46.5002H132.598L131.398 38.4002ZM137.198 33.4002H143.098V35.2002H141.298V46.5002H138.998V35.2002H137.198V33.4002ZM148.098 40.7002H145.998V46.5002H143.798V33.4002H145.998V39.0002H148.098V33.4002H150.298V46.5002H148.098V40.7002Z'\r\n        fill={background === false ? '#A21942' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG9(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.101562 0.200195H161.002V161.1H0.101562V0.200195Z' fill='#FD6925' />\r\n      )}\r\n      <path\r\n        d='M29.5992 21.8001C29.5992 16.8001 27.3992 13.1001 21.6992 13.1001C15.8992 13.1001 13.6992 16.3001 13.6992 21.3001V26.1001C13.6992 31.4001 15.7992 34.1001 19.6992 34.1001C21.9992 34.1001 23.3992 33.0001 24.1992 31.5001V38.5001C24.1992 40.5001 23.3992 41.8001 21.4992 41.8001C19.4992 41.8001 18.7992 40.7001 18.7992 38.6001V36.4001H13.7992V38.1001C13.7992 42.9001 15.4992 46.2001 21.5992 46.2001C27.2992 46.2001 29.5992 42.5001 29.5992 37.4001V21.8001V21.8001ZM24.1992 26.8001C24.0992 28.6001 23.2992 29.8001 21.5992 29.8001C19.6992 29.8001 18.9992 28.7001 18.9992 26.5001V20.9001C18.9992 18.8001 19.7992 17.6001 21.5992 17.6001C23.3992 17.6001 24.0992 18.8001 24.0992 20.9001V26.8001H24.1992V26.8001ZM120.799 106L101.699 95.0001V72.9001C101.699 72.4001 101.499 72.0001 100.999 71.8001L81.1992 60.4001C80.7992 60.2001 80.2992 60.2001 79.8992 60.4001L60.0992 71.8001C59.6992 72.0001 59.3992 72.5001 59.3992 72.9001V95.0001L40.2992 106C39.8992 106.2 39.5992 106.7 39.5992 107.1V129.9C39.5992 130.4 39.7992 130.8 40.2992 131L60.0992 142.4C60.2992 142.5 60.4992 142.6 60.7992 142.6C60.9992 142.6 61.2992 142.5 61.4992 142.4L80.5992 131.4L99.6992 142.4C99.8992 142.5 100.099 142.6 100.399 142.6C100.699 142.6 100.899 142.5 101.099 142.4L120.899 131C121.299 130.8 121.599 130.3 121.599 129.9V107.1C121.399 106.6 121.199 106.2 120.799 106V106ZM79.1992 127.7L63.2992 118.5L79.1992 109.3V127.7ZM97.6992 95.7001L81.7992 104.9V86.6001L97.6992 95.7001ZM79.1992 104.8L63.2992 95.6001L79.1992 86.4001V104.8ZM83.1992 107.1L100.399 97.2001L117.599 107.1L100.399 117L83.1992 107.1ZM98.9992 93.4001L83.0992 84.2001L98.9992 75.0001V93.4001V93.4001ZM77.8992 84.3001L61.9992 93.5001V75.2001L77.8992 84.3001ZM59.4992 139.1L42.2992 129.2V109.4L59.4992 119.3V139.1ZM62.0992 139.1V120.8L77.9992 130L62.0992 139.1V139.1ZM118.799 129.2L101.599 139.1V119.3L118.799 109.4V129.2Z'\r\n        fill={background === false ? '#FD6925' : 'white'}\r\n      />\r\n      <path\r\n        d='M38.1016 13.8998H40.2016V26.0998H38.1016V13.8998ZM43.1016 18.4998V26.1998H41.4016V13.9998H43.4016L45.6016 20.9998V13.9998H47.3015V26.1998H45.5016L43.1016 18.4998ZM54.7016 17.1998V22.8998C54.7016 24.7998 53.9016 26.1998 51.7016 26.1998H48.5016V13.9998H51.7016C54.0016 13.8998 54.7016 15.2998 54.7016 17.1998ZM51.5016 24.4998C52.3016 24.4998 52.7016 23.9998 52.7016 23.2998V16.8998C52.7016 16.1998 52.4016 15.6998 51.5016 15.6998H50.6016V24.5998L51.5016 24.4998ZM62.0016 13.8998V23.0998C62.0016 24.9998 61.2016 26.1998 59.1016 26.1998C56.9016 26.1998 56.0016 24.9998 56.0016 23.0998V13.8998H58.1016V23.2998C58.1016 23.9998 58.4016 24.4998 59.1016 24.4998C59.8016 24.4998 60.1016 23.9998 60.1016 23.2998V13.8998H62.0016ZM63.1016 23.4998V21.8998H65.0016V23.5998C65.0016 24.2998 65.3016 24.6998 66.0016 24.6998C66.6016 24.6998 66.9016 24.2998 66.9016 23.5998V23.0998C66.9016 22.3998 66.6016 21.9998 66.0016 21.3998L64.8015 20.1998C63.6015 18.9998 63.1016 18.2998 63.1016 16.8998V16.4998C63.1016 14.9998 64.0016 13.7998 66.0016 13.7998C68.1016 13.7998 68.9016 14.7998 68.9016 16.5998V17.5998H67.0016V16.4998C67.0016 15.7998 66.7016 15.4998 66.0016 15.4998C65.4016 15.4998 65.0016 15.7998 65.0016 16.4998V16.7998C65.0016 17.4998 65.4016 17.8998 66.0016 18.4998L67.3015 19.7998C68.4015 20.8998 69.0016 21.5998 69.0016 22.9998V23.5998C69.0016 25.2998 68.1016 26.4998 66.0016 26.4998C63.9016 26.2998 63.1016 25.0998 63.1016 23.4998ZM69.5016 13.8998H75.0016V15.5998H73.3015V26.0998H71.2016V15.5998H69.5016V13.8998V13.8998ZM78.0016 20.4998V26.0998H76.0016V13.8998H79.0016C81.1016 13.8998 81.8015 14.8998 81.8015 16.5998V18.1998C81.8015 19.4998 81.3016 20.2998 80.2016 20.5998L82.2016 26.0998H80.0016L78.0016 20.4998ZM78.0016 15.5998V19.3998H78.7016C79.4016 19.3998 79.7016 18.9998 79.7016 18.3998V16.5998C79.7016 15.8998 79.4016 15.5998 78.7016 15.5998H78.0016ZM86.6015 21.4998V26.0998H84.5016V21.4998L82.2016 13.8998H84.3015L85.5016 18.4998L86.7016 13.8998H88.7016L86.6015 21.4998V21.4998ZM90.9016 24.2998L89.9016 27.0998H88.7016L89.0016 24.1998H90.9016V24.2998V24.2998ZM94.2016 13.8998H96.3015V26.0998H94.2016V13.8998ZM99.2016 18.4998V26.1998H97.5016V13.9998H99.5016L101.702 20.9998V13.9998H103.402V26.1998H101.602L99.2016 18.4998V18.4998ZM106.402 18.4998V26.1998H104.702V13.9998H106.702L108.902 20.9998V13.9998H110.602V26.1998H108.802L106.402 18.4998V18.4998ZM111.902 22.9998V17.0998C111.902 15.1998 112.802 13.7998 115.002 13.7998C117.202 13.7998 118.102 15.1998 118.102 17.0998V22.9998C118.102 24.8998 117.202 26.2998 115.002 26.2998C112.802 26.2998 111.902 24.8998 111.902 22.9998ZM116.102 23.2998V16.6998C116.102 15.9998 115.802 15.3998 115.002 15.3998C114.302 15.3998 114.002 15.8998 114.002 16.6998V23.2998C114.002 23.9998 114.302 24.5998 115.002 24.5998C115.702 24.5998 116.102 24.0998 116.102 23.2998ZM126.002 13.8998L123.702 26.0998H121.502L119.202 13.8998H121.302L122.702 22.3998L124.102 13.8998H126.002ZM125.702 26.0998L128.002 13.8998H130.302L132.602 26.0998H130.502L130.102 23.8998H128.002L127.602 26.0998H125.702ZM128.202 22.2998H129.802L129.002 17.3998L128.202 22.2998V22.2998ZM132.402 13.8998H137.902V15.5998H136.202V26.0998H134.102V15.5998H132.402V13.8998V13.8998ZM138.902 13.8998H141.002V26.0998H138.902V13.8998ZM142.302 22.9998V17.0998C142.302 15.1998 143.202 13.7998 145.402 13.7998C147.602 13.7998 148.502 15.1998 148.502 17.0998V22.9998C148.502 24.8998 147.602 26.2998 145.402 26.2998C143.202 26.2998 142.302 24.8998 142.302 22.9998ZM146.402 23.2998V16.6998C146.402 15.9998 146.102 15.3998 145.302 15.3998C144.602 15.3998 144.302 15.8998 144.302 16.6998V23.2998C144.302 23.9998 144.602 24.5998 145.302 24.5998C146.102 24.5998 146.402 24.0998 146.402 23.2998ZM151.502 18.4998V26.1998H149.802V13.9998H151.802L154.002 20.9998V13.9998H155.702V26.1998H153.902L151.502 18.4998V18.4998Z'\r\n        fill={background === false ? '#FD6925' : 'white'}\r\n      />\r\n      <path\r\n        d='M37.6992 45.5001L39.9992 33.3001H42.2992L44.5992 45.5001H42.4992L42.0992 43.3001H39.9992L39.5992 45.5001H37.6992V45.5001ZM40.2992 41.6001H41.8992L41.0992 36.7001L40.2992 41.6001ZM47.1992 37.8001V45.5001H45.4992V33.3001H47.4992L49.6992 40.3001V33.3001H51.3992V45.5001H49.5992L47.1992 37.8001ZM58.7992 36.5001V42.2001C58.7992 44.1001 57.9992 45.5001 55.7992 45.5001H52.5992V33.3001H55.7992C57.9992 33.3001 58.7992 34.7001 58.7992 36.5001ZM55.5992 43.8001C56.3992 43.8001 56.7992 43.3001 56.7992 42.6001V36.2001C56.7992 35.5001 56.4992 35.0001 55.5992 35.0001H54.6992V43.9001L55.5992 43.8001ZM61.9992 33.3001H64.0992V45.5001H61.9992V33.3001ZM67.0992 37.8001V45.5001H65.3992V33.3001H67.3992L69.5992 40.3001V33.3001H71.2992V45.5001H69.4992L67.0992 37.8001ZM72.5992 33.3001H77.3992V35.0001H74.5992V38.5001H76.6992V40.2001H74.5992V45.6001H72.4992L72.5992 33.3001V33.3001ZM80.3992 39.9001V45.5001H78.2992V33.3001H81.2992C83.3992 33.3001 84.0992 34.3001 84.0992 36.0001V37.6001C84.0992 38.9001 83.5992 39.7001 82.4992 40.0001L84.4992 45.5001H82.2992L80.3992 39.9001V39.9001ZM80.3992 34.9001V38.7001H81.0992C81.7992 38.7001 82.0992 38.3001 82.0992 37.7001V35.9001C82.0992 35.2001 81.7992 34.9001 81.0992 34.9001H80.3992ZM85.0992 45.5001L87.3992 33.3001H89.6992L91.9992 45.5001H89.8992L89.4992 43.3001H87.2992L86.8992 45.5001H85.0992V45.5001ZM87.5992 41.6001H89.1992L88.3992 36.7001L87.5992 41.6001V41.6001ZM92.6992 42.8001V41.2001H94.5992V42.9001C94.5992 43.6001 94.8992 44.0001 95.5992 44.0001C96.1992 44.0001 96.4992 43.6001 96.4992 42.9001V42.4001C96.4992 41.7001 96.1992 41.3001 95.5992 40.7001L94.3992 39.5001C93.1992 38.3001 92.6992 37.6001 92.6992 36.2001V35.8001C92.6992 34.3001 93.5992 33.1001 95.5992 33.1001C97.6992 33.1001 98.4992 34.1001 98.4992 35.9001V36.9001H96.5992V35.8001C96.5992 35.1001 96.2992 34.8001 95.5992 34.8001C94.9992 34.8001 94.5992 35.1001 94.5992 35.8001V36.1001C94.5992 36.8001 94.9992 37.2001 95.5992 37.8001L96.8992 39.1001C97.9992 40.2001 98.5992 40.9001 98.5992 42.3001V42.9001C98.5992 44.6001 97.6992 45.8001 95.5992 45.8001C93.4992 45.8001 92.6992 44.4001 92.6992 42.8001V42.8001ZM99.1992 33.3001H104.699V35.0001H102.999V45.5001H100.899V35.0001H99.1992V33.3001V33.3001ZM107.799 39.9001V45.5001H105.699V33.3001H108.699C110.799 33.3001 111.499 34.3001 111.499 36.0001V37.6001C111.499 38.9001 110.999 39.7001 109.899 40.0001L111.899 45.5001H109.699L107.799 39.9001V39.9001ZM107.799 34.9001V38.7001H108.499C109.199 38.7001 109.499 38.3001 109.499 37.7001V35.9001C109.499 35.2001 109.199 34.9001 108.499 34.9001H107.799ZM118.699 33.3001V42.5001C118.699 44.4001 117.899 45.6001 115.799 45.6001C113.599 45.6001 112.699 44.4001 112.699 42.5001V33.3001H114.799V42.7001C114.799 43.4001 115.099 43.9001 115.799 43.9001C116.499 43.9001 116.799 43.4001 116.799 42.7001V33.3001H118.699ZM119.999 42.3001V36.4001C119.999 34.5001 120.899 33.1001 123.099 33.1001C125.399 33.1001 125.999 34.4001 125.999 36.2001V37.6001H124.099V36.0001C124.099 35.2001 123.799 34.8001 123.099 34.8001C122.399 34.8001 122.099 35.3001 122.099 36.1001V42.7001C122.099 43.4001 122.399 44.0001 123.099 44.0001C123.799 44.0001 124.099 43.5001 124.099 42.8001V40.5001H125.999V42.6001C125.999 44.3001 125.299 45.6001 123.099 45.6001C120.899 45.6001 119.999 44.2001 119.999 42.3001V42.3001ZM126.399 33.3001H131.899V35.0001H130.199V45.5001H128.099V35.0001H126.399V33.3001V33.3001ZM138.899 33.3001V42.5001C138.899 44.4001 138.099 45.6001 135.999 45.6001C133.799 45.6001 132.899 44.4001 132.899 42.5001V33.3001H134.999V42.7001C134.999 43.4001 135.299 43.9001 135.999 43.9001C136.699 43.9001 136.999 43.4001 136.999 42.7001V33.3001H138.899ZM142.199 39.9001V45.5001H140.099V33.3001H143.099C145.199 33.3001 145.899 34.3001 145.899 36.0001V37.6001C145.899 38.9001 145.399 39.7001 144.299 40.0001L146.299 45.5001H144.099L142.199 39.9001V39.9001ZM142.199 34.9001V38.7001H142.899C143.599 38.7001 143.899 38.3001 143.899 37.7001V35.9001C143.899 35.2001 143.599 34.9001 142.899 34.9001H142.199ZM147.199 33.3001H152.099V35.0001H149.299V38.5001H151.299V40.2001H149.299V43.9001H152.099V45.6001H147.199V33.3001V33.3001Z'\r\n        fill={background === false ? '#FD6925' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG10(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.800781 0.600098H161.701V161.5H0.800781V0.600098Z' fill='#DD1367' />\r\n      )}\r\n      <path\r\n        d='M16.3984 21.7002V46.5002H21.7984V14.1002H17.4984L12.3984 19.9002V25.6002H12.4984L16.2984 21.7002H16.3984ZM41.7984 38.2002V22.5002C41.7984 17.4002 39.2984 13.7002 33.6984 13.7002C28.1984 13.7002 25.6984 17.4002 25.6984 22.5002V38.2002C25.6984 43.2002 28.1984 47.0002 33.6984 47.0002C39.1984 46.9002 41.7984 43.2002 41.7984 38.2002ZM31.0984 39.0002V21.6002C31.0984 19.6002 31.7984 18.2002 33.6984 18.2002C35.5984 18.2002 36.2984 19.6002 36.2984 21.6002V39.0002C36.2984 41.0002 35.5984 42.4002 33.6984 42.4002C31.7984 42.4002 31.0984 41.0002 31.0984 39.0002Z'\r\n        fill={background === false ? '#DD1367' : 'white'}\r\n      />\r\n      <path\r\n        d='M54.3992 21.1999V27.1999H52.1992V13.9999H55.3992C57.5992 13.9999 58.3992 15.0999 58.3992 16.8999V18.5999C58.3992 19.9999 57.8992 20.7999 56.5992 21.0999L58.6992 27.0999H56.3992L54.3992 21.1999V21.1999ZM54.3992 15.7999V19.8999H55.0992C55.8992 19.8999 56.1992 19.4999 56.1992 18.7999V16.8999C56.1992 16.1999 55.8992 15.7999 55.0992 15.7999H54.3992ZM59.8992 13.9999H65.1992V15.7999H62.0992V19.5999H64.2992V21.3999H62.0992V25.3999H65.1992V27.1999H59.8992V13.9999ZM72.6992 17.5999V23.6999C72.6992 25.6999 71.8992 27.1999 69.4992 27.1999H66.0992V13.9999H69.4992C71.8992 13.9999 72.6992 15.4999 72.6992 17.5999ZM69.1992 25.3999C70.0992 25.3999 70.4992 24.8999 70.4992 24.0999V17.1999C70.4992 16.3999 70.1992 15.8999 69.1992 15.8999H68.2992V25.3999H69.1992ZM80.5992 13.9999V23.8999C80.5992 25.8999 79.6992 27.2999 77.4992 27.2999C75.1992 27.2999 74.1992 25.9999 74.1992 23.8999V13.9999H76.3992V24.1999C76.3992 24.9999 76.6992 25.4999 77.4992 25.4999C78.2992 25.4999 78.5992 24.9999 78.5992 24.1999V13.9999H80.5992V13.9999ZM81.9992 23.7999V17.3999C81.9992 15.2999 82.9992 13.8999 85.2992 13.8999C87.6992 13.8999 88.3992 15.2999 88.3992 17.1999V18.7999H86.3992V16.9999C86.3992 16.1999 86.0992 15.6999 85.2992 15.6999C84.4992 15.6999 84.1992 16.2999 84.1992 17.0999V24.1999C84.1992 24.9999 84.4992 25.5999 85.2992 25.5999C86.0992 25.5999 86.3992 25.0999 86.3992 24.2999V21.8999H88.3992V24.1999C88.3992 26.0999 87.5992 27.4999 85.2992 27.4999C82.9992 27.2999 81.9992 25.7999 81.9992 23.7999ZM89.7992 13.9999H95.0992V15.7999H91.9992V19.5999H94.1992V21.3999H91.9992V25.3999H95.0992V27.1999H89.7992V13.9999V13.9999ZM103.099 17.5999V23.6999C103.099 25.6999 102.299 27.1999 99.8992 27.1999H96.4992V13.9999H99.8992C102.299 13.9999 103.099 15.4999 103.099 17.5999ZM99.5992 25.3999C100.499 25.3999 100.899 24.8999 100.899 24.0999V17.1999C100.899 16.3999 100.599 15.8999 99.5992 15.8999H98.6992V25.3999H99.5992Z'\r\n        fill={background === false ? '#DD1367' : 'white'}\r\n      />\r\n      <path\r\n        d='M52.1992 33.2H54.3992V46.3H52.1992V33.2ZM57.6992 38V46.3H55.7992V33.2H57.9992L60.3992 40.7V33.2H62.1992V46.3H60.2992L57.6992 38ZM63.4992 33.2H68.7992V35H65.6992V38.8H67.8992V40.6H65.6992V44.6H68.7992V46.4H63.4992V33.2V33.2ZM72.0992 47.2V46.3C70.2992 46 69.5992 44.7 69.5992 42.9V36.5C69.5992 34.4 70.5992 33 72.8992 33C75.1992 33 76.2992 34.5 76.2992 36.5V42.9C76.2992 44.3 75.7992 45.5 74.6992 46L76.2992 46.3V47.9L72.0992 47.2V47.2ZM74.0992 43.4V36.2C74.0992 35.4 73.7992 34.8 72.9992 34.8C72.1992 34.8 71.8992 35.4 71.8992 36.2V43.4C71.8992 44.2 72.1992 44.8 72.9992 44.8C73.6992 44.7 74.0992 44.2 74.0992 43.4ZM83.8992 33.2V43.1C83.8992 45.1 82.9992 46.5 80.7992 46.5C78.4992 46.5 77.4992 45.2 77.4992 43.1V33.2H79.6992V43.4C79.6992 44.2 79.9992 44.7 80.7992 44.7C81.5992 44.7 81.8992 44.2 81.8992 43.4V33.2H83.8992V33.2ZM84.5992 46.3L87.0992 33.2H89.5992L92.0992 46.3H89.7992L89.3992 43.9H87.0992L86.6992 46.3H84.5992V46.3ZM87.3992 42.1H89.1992L88.2992 36.8L87.3992 42.1ZM93.0992 33.2H95.2992V44.5H97.8992V46.3H93.0992V33.2V33.2ZM98.8992 33.2H101.099V46.3H98.8992V33.2ZM102.099 33.2H107.999V35H106.199V46.3H103.999V35H102.199V33.2H102.099ZM108.999 33.2H111.199V46.3H108.999V33.2ZM112.499 33.2H117.799V35H114.699V38.8H116.899V40.6H114.699V44.6H117.799V46.4H112.499V33.2V33.2ZM118.699 43.5V41.7H120.799V43.5C120.799 44.2 121.099 44.7 121.899 44.7C122.599 44.7 122.899 44.2 122.899 43.5V43C122.899 42.2 122.599 41.8 121.899 41.1L120.599 39.8C119.299 38.6 118.799 37.8 118.799 36.3V35.9C118.799 34.3 119.799 33 121.899 33C124.099 33 124.999 34.1 124.999 36V37.1H122.999V36C122.999 35.2 122.699 34.9 121.999 34.9C121.399 34.9 120.999 35.2 120.999 36V36.3C120.999 37 121.399 37.5 121.999 38.1L123.399 39.5C124.599 40.7 125.199 41.5 125.199 42.9V43.5C125.199 45.3 124.199 46.6 121.999 46.6C119.499 46.5 118.699 45.2 118.699 43.5V43.5Z'\r\n        fill={background === false ? '#DD1367' : 'white'}\r\n      />\r\n      <path\r\n        d='M53.9008 88.5002L38.8008 103.6L53.9008 118.8V88.5002ZM108.701 118.8L123.801 103.6L108.701 88.5002V118.8ZM96.5008 76.3002L81.3008 61.2002L66.2008 76.3002H96.5008ZM66.2008 131L81.3008 146.1L96.5008 131H66.2008ZM64.9008 89.5002H97.8008V98.6002H64.9008V89.5002ZM64.9008 108.3H97.8008V117.8H64.9008V108.3Z'\r\n        fill={background === false ? '#DD1367' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG11(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.699219 0.600098H161.599V161.5H0.699219V0.600098Z' fill='#FD9D24' />\r\n      )}\r\n      <path\r\n        d='M12.3008 20.0001V25.7001L16.2008 21.7001V46.5001H21.7008V14.1001H17.3008L12.3008 20.0001ZM24.7008 20.0001V25.7001H24.8008L28.6008 21.7001V46.5001H34.1008V14.1001H29.7008L24.7008 20.0001Z'\r\n        fill={background === false ? '#FD9D24' : 'white'}\r\n      />\r\n      <path\r\n        d='M27.3 123.1H51.5C51.8 123.1 52.1 122.8 52.1 122.5C52.1 122.3 52 122.2 51.9 122.1L39.9 106.5L39.8 106.4C39.7 106.3 39.5 106.2 39.4 106.2C39.3 106.2 39.1 106.3 39 106.4L38.9 106.5L38.8 106.6L27 122L26.8 122.2C26.7 122.3 26.7 122.4 26.7 122.5C26.7 122.8 27 123.1 27.3 123.1ZM51.4 125.3H27.1C26.8 125.3 26.5 125.6 26.5 125.9V144.9C26.5 145.2 26.8 145.5 27.1 145.5H34.9V133.6C34.9 133.3 35.2 133 35.5 133H42.7C43 133 43.3 133.3 43.3 133.6V145.5H51.3C51.6 145.5 51.9 145.2 51.9 144.9V125.9C52 125.6 51.8 125.3 51.4 125.3V125.3ZM135.2 120.3H111.2C110.9 120.3 110.6 120.6 110.6 120.9V145.1C110.6 145.4 110.9 145.7 111.2 145.7H135.2C135.5 145.7 135.8 145.4 135.8 145.1V120.9C135.8 120.6 135.6 120.3 135.2 120.3ZM122.1 136.2C122.1 136.5 121.8 136.8 121.5 136.8H114.3C114 136.8 113.7 136.5 113.7 136.2V131.8C113.7 131.5 114 131.2 114.3 131.2H121.5C121.8 131.2 122.1 131.5 122.1 131.8V136.2ZM122.1 128.1C122.1 128.4 121.8 128.7 121.5 128.7H114.3C114 128.7 113.7 128.4 113.7 128.1V123.7C113.7 123.4 114 123.1 114.3 123.1H121.5C121.8 123.1 122.1 123.4 122.1 123.7V128.1ZM133.1 136.2C133.1 136.5 132.8 136.8 132.5 136.8H125.3C125 136.8 124.7 136.5 124.7 136.2V131.8C124.7 131.5 125 131.2 125.3 131.2H132.5C132.8 131.2 133.1 131.5 133.1 131.8V136.2ZM133.1 128.1C133.1 128.4 132.8 128.7 132.5 128.7H125.3C125 128.7 124.7 128.4 124.7 128.1V123.7C124.7 123.4 125 123.1 125.3 123.1H132.5C132.8 123.1 133.1 123.4 133.1 123.7V128.1ZM79.4 64.1001H56C55.7 64.1001 55.4 64.4001 55.4 64.7001V145C55.4 145.3 55.7 145.6 56 145.6H79.5C79.8 145.6 80.1 145.3 80.1 145V64.7001C80 64.3001 79.8 64.1001 79.4 64.1001V64.1001ZM65.5 136.4C65.5 136.6 65.4 136.7 65.2 136.7H59.8C59.6 136.7 59.5 136.6 59.5 136.4V130.4C59.5 130.2 59.6 130.1 59.8 130.1H65.2C65.4 130.1 65.5 130.2 65.5 130.4V136.4ZM65.5 122.6C65.5 122.8 65.4 122.9 65.2 122.9H59.8C59.6 122.9 59.5 122.8 59.5 122.6V116.6C59.5 116.4 59.6 116.3 59.8 116.3H65.2C65.4 116.3 65.5 116.4 65.5 116.6V122.6ZM65.5 108.8C65.5 109 65.4 109.1 65.2 109.1H59.8C59.6 109.1 59.5 109 59.5 108.8V102.8C59.5 102.6 59.6 102.5 59.8 102.5H65.2C65.4 102.5 65.5 102.6 65.5 102.8V108.8ZM65.5 95.1001C65.5 95.3001 65.4 95.4001 65.2 95.4001H59.8C59.6 95.4001 59.5 95.3001 59.5 95.1001V89.1001C59.5 88.9001 59.6 88.8001 59.8 88.8001H65.2C65.4 88.8001 65.5 88.9001 65.5 89.1001V95.1001ZM65.5 81.3001C65.5 81.5001 65.4 81.6001 65.2 81.6001H59.8C59.6 81.6001 59.5 81.5001 59.5 81.3001V75.3001C59.5 75.1001 59.6 75.0001 59.8 75.0001H65.2C65.4 75.0001 65.5 75.1001 65.5 75.3001V81.3001ZM76 136.4C76 136.6 75.9 136.7 75.7 136.7H70.3C70.1 136.7 70 136.6 70 136.4V130.4C70 130.2 70.1 130.1 70.3 130.1H75.7C75.9 130.1 76 130.2 76 130.4V136.4ZM76 122.6C76 122.8 75.9 122.9 75.7 122.9H70.3C70.1 122.9 70 122.8 70 122.6V116.6C70 116.4 70.1 116.3 70.3 116.3H75.7C75.9 116.3 76 116.4 76 116.6V122.6ZM76 108.8C76 109 75.9 109.1 75.7 109.1H70.3C70.1 109.1 70 109 70 108.8V102.8C70 102.6 70.1 102.5 70.3 102.5H75.7C75.9 102.5 76 102.6 76 102.8V108.8ZM76 95.1001C76 95.3001 75.9 95.4001 75.7 95.4001H70.3C70.1 95.4001 70 95.3001 70 95.1001V89.1001C70 88.9001 70.1 88.8001 70.3 88.8001H75.7C75.9 88.8001 76 88.9001 76 89.1001V95.1001ZM76 81.3001C76 81.5001 75.9 81.6001 75.7 81.6001H70.3C70.1 81.6001 70 81.5001 70 81.3001V75.3001C70 75.1001 70.1 75.0001 70.3 75.0001H75.7C75.9 75.0001 76 75.1001 76 75.3001V81.3001ZM135.8 117.9C135.8 118.2 135.6 118.4 135.3 118.4H111.1C110.8 118.4 110.6 118.2 110.6 117.9V113.1C110.6 112.8 110.8 112.6 111.1 112.6H135.3C135.6 112.6 135.8 112.8 135.8 113.1V117.9ZM107.8 79.2001C107.7 78.9001 107.5 78.8001 107.2 78.8001C107.1 78.8001 107 78.8001 106.9 78.9001L106.7 79.1001L83.6 108.4L83.5 108.5C83.4 108.6 83.3 108.8 83.3 109V145C83.3 145.3 83.6 145.6 83.9 145.6H107.4C107.7 145.6 108 145.3 108 145V79.4001C107.9 79.4001 107.9 79.3001 107.8 79.2001V79.2001ZM98.1 95.1001L98.3 94.9001C99.9 92.9001 102.5 89.6001 103.8 88.0001L104 87.8001C104.1 87.7001 104.3 87.6001 104.5 87.6001C104.8 87.6001 105.1 87.8001 105.1 88.1001V95.5001C105.1 95.9001 104.8 96.1001 104.5 96.2001H98.7C98.3 96.2001 98.1 95.9001 98.1 95.5001C98 95.4001 98 95.2001 98.1 95.1001V95.1001ZM94.4 136.1C94.4 136.4 94.1 136.7 93.8 136.7H86.8C86.5 136.7 86.2 136.4 86.2 136.1V131.7C86.2 131.4 86.5 131.1 86.8 131.1H93.8C94.1 131.1 94.4 131.4 94.4 131.7V136.1ZM94.4 128.1C94.4 128.4 94.1 128.7 93.8 128.7H86.8C86.5 128.7 86.2 128.4 86.2 128.1V123.7C86.2 123.4 86.5 123.1 86.8 123.1H93.8C94.1 123.1 94.4 123.4 94.4 123.7V128.1ZM94.4 120C94.4 120.3 94.1 120.6 93.8 120.6H86.8C86.5 120.6 86.2 120.3 86.2 120V115.6C86.2 115.3 86.5 115 86.8 115H93.8C94.1 115 94.4 115.3 94.4 115.6V120ZM94.5 102.2V111.8C94.5 112.1 94.2 112.4 93.9 112.4H86.9C86.6 112.4 86.3 112.1 86.3 111.8V110.6V110.4V110.3C86.3 110.3 86.3 110.2 86.4 110.2C86.4 110.2 86.4 110.1 86.5 110.1C87.4 108.8 91.4 103.8 93.1 101.8L93.3 101.6C93.4 101.5 93.6 101.4 93.8 101.4C94.1 101.4 94.4 101.6 94.4 101.9V102.2H94.5V102.2ZM105.2 136.1C105.2 136.4 104.9 136.7 104.6 136.7H97.6C97.3 136.7 97 136.4 97 136.1V131.7C97 131.4 97.3 131.1 97.6 131.1H104.6C104.9 131.1 105.2 131.4 105.2 131.7V136.1ZM105.2 128.1C105.2 128.4 104.9 128.7 104.6 128.7H97.6C97.3 128.7 97 128.4 97 128.1V123.7C97 123.4 97.3 123.1 97.6 123.1H104.6C104.9 123.1 105.2 123.4 105.2 123.7V128.1ZM105.2 120C105.2 120.3 104.9 120.6 104.6 120.6H97.6C97.3 120.6 97 120.3 97 120V115.6C97 115.3 97.3 115 97.6 115H104.6C104.9 115 105.2 115.3 105.2 115.6V120ZM105.2 111.9C105.2 112.2 104.9 112.5 104.6 112.5H97.6C97.3 112.5 97 112.2 97 111.9V107.5C97 107.2 97.3 106.9 97.6 106.9H104.6C104.9 106.9 105.2 107.2 105.2 107.5V111.9ZM105.2 103.8C105.2 104.1 104.9 104.4 104.6 104.4H97.6C97.3 104.4 97 104.1 97 103.8V99.4001C97 99.1001 97.3 98.8001 97.6 98.8001H104.6C104.9 98.8001 105.2 99.1001 105.2 99.4001V103.8Z'\r\n        fill={background === false ? '#FD9D24' : 'white'}\r\n      />\r\n      <path\r\n        d='M44.6992 24.3999V22.5999H46.7992V24.3999C46.7992 25.0999 47.0992 25.5999 47.8992 25.5999C48.5992 25.5999 48.8992 25.0999 48.8992 24.3999V23.8999C48.8992 23.0999 48.5992 22.6999 47.8992 21.9999L46.5992 20.6999C45.2992 19.4999 44.7992 18.6999 44.7992 17.1999V16.7999C44.7992 15.1999 45.7992 13.8999 47.8992 13.8999C50.0992 13.8999 50.9992 14.9999 50.9992 16.8999V17.9999H48.9992V16.8999C48.9992 16.0999 48.6992 15.7999 47.9992 15.7999C47.3992 15.7999 46.9992 16.0999 46.9992 16.8999V17.1999C46.9992 17.8999 47.3992 18.3999 47.9992 18.9999L49.3992 20.3999C50.5992 21.5999 51.1992 22.3999 51.1992 23.7999V24.3999C51.1992 26.1999 50.1992 27.4999 47.9992 27.4999C45.7992 27.4999 44.6992 26.0999 44.6992 24.3999V24.3999ZM58.3992 14.0999V23.9999C58.3992 25.9999 57.4992 27.3999 55.2992 27.3999C52.9992 27.3999 51.9992 26.0999 51.9992 23.9999V14.0999H54.1992V24.2999C54.1992 25.0999 54.4992 25.5999 55.2992 25.5999C56.0992 25.5999 56.3992 25.0999 56.3992 24.2999V14.0999H58.3992V14.0999ZM59.5992 24.3999V22.5999H61.6992V24.3999C61.6992 25.0999 61.9992 25.5999 62.7992 25.5999C63.4992 25.5999 63.7992 25.0999 63.7992 24.3999V23.8999C63.7992 23.0999 63.4992 22.6999 62.7992 21.9999L61.4992 20.6999C60.1992 19.4999 59.6992 18.6999 59.6992 17.1999V16.7999C59.6992 15.1999 60.5992 13.8999 62.7992 13.8999C64.9992 13.8999 65.8992 14.9999 65.8992 16.8999V17.9999H63.8992V16.8999C63.8992 16.0999 63.5992 15.7999 62.8992 15.7999C62.2992 15.7999 61.8992 16.0999 61.8992 16.8999V17.1999C61.8992 17.8999 62.2992 18.3999 62.8992 18.9999L64.2992 20.3999C65.4992 21.5999 66.0992 22.3999 66.0992 23.7999V24.3999C66.0992 26.1999 65.0992 27.4999 62.8992 27.4999C60.3992 27.3999 59.5992 26.0999 59.5992 24.3999V24.3999ZM66.3992 14.0999H72.2992V15.8999H70.4992V27.1999H68.2992V15.8999H66.4992V14.0999H66.3992ZM71.8992 27.1999L74.3992 14.0999H76.8992L79.3992 27.1999H77.0992L76.6992 24.7999H74.3992L73.9992 27.1999H71.8992V27.1999ZM74.6992 22.9999H76.4992L75.5992 17.6999L74.6992 22.9999ZM80.2992 14.0999H82.4992V27.1999H80.2992V14.0999ZM85.5992 18.8999V27.1999H83.6992V14.0999H85.8992L88.2992 21.5999V14.0999H90.0992V27.1999H88.1992L85.5992 18.8999ZM90.8992 27.1999L93.3992 14.0999H95.8992L98.3992 27.1999H96.0992L95.6992 24.7999H93.3992L92.9992 27.1999H90.8992V27.1999ZM93.6992 22.9999H95.4992L94.5992 17.6999L93.6992 22.9999ZM99.0992 14.0999H102.299C104.499 14.0999 105.199 15.0999 105.199 16.9999V18.2999C105.199 19.3999 104.799 20.0999 103.899 20.3999C104.999 20.6999 105.499 21.3999 105.499 22.5999V24.2999C105.499 26.1999 104.699 27.1999 102.499 27.1999H99.0992V14.0999V14.0999ZM101.299 19.5999H102.099C102.799 19.5999 103.099 19.1999 103.099 18.4999V16.8999C103.099 16.1999 102.799 15.7999 101.999 15.7999H101.199L101.299 19.5999V19.5999ZM101.299 21.2999V25.3999H102.299C102.999 25.3999 103.399 24.9999 103.399 24.2999V22.2999C103.399 21.5999 103.099 21.1999 102.299 21.1999H101.299V21.2999ZM106.499 14.0999H108.699V25.3999H111.299V27.1999H106.499V14.0999V14.0999ZM112.199 14.0999H117.499V15.8999H114.399V19.6999H116.599V21.4999H114.399V25.4999H117.499V27.2999H112.199V14.0999V14.0999ZM121.199 23.7999V17.3999C121.199 15.2999 122.199 13.8999 124.499 13.8999C126.899 13.8999 127.599 15.2999 127.599 17.1999V18.7999H125.599V16.9999C125.599 16.1999 125.299 15.6999 124.499 15.6999C123.699 15.6999 123.399 16.2999 123.399 17.0999V24.1999C123.399 24.9999 123.699 25.5999 124.499 25.5999C125.299 25.5999 125.599 25.0999 125.599 24.2999V21.8999H127.599V24.1999C127.599 26.0999 126.799 27.4999 124.499 27.4999C122.099 27.3999 121.199 25.7999 121.199 23.7999ZM128.599 14.0999H130.799V27.1999H128.599V14.0999ZM131.599 14.0999H137.499V15.8999H135.699V27.1999H133.499V15.8999H131.699V14.0999H131.599ZM138.399 14.0999H140.599V27.1999H138.399V14.0999ZM141.799 14.0999H147.099V15.8999H143.999V19.6999H146.199V21.4999H143.999V25.4999H147.099V27.2999H141.799V14.0999V14.0999ZM147.599 24.3999V22.5999H149.699V24.3999C149.699 25.0999 149.999 25.5999 150.799 25.5999C151.499 25.5999 151.799 25.0999 151.799 24.3999V23.8999C151.799 23.0999 151.499 22.6999 150.799 21.9999L149.499 20.6999C148.199 19.4999 147.699 18.6999 147.699 17.1999V16.7999C147.699 15.1999 148.699 13.8999 150.799 13.8999C152.999 13.8999 153.899 14.9999 153.899 16.8999V17.9999H151.899V16.8999C151.899 16.0999 151.599 15.7999 150.899 15.7999C150.299 15.7999 149.899 16.0999 149.899 16.8999V17.1999C149.899 17.8999 150.299 18.3999 150.899 18.9999L152.299 20.3999C153.499 21.5999 154.099 22.3999 154.099 23.7999V24.3999C154.099 26.1999 153.099 27.4999 150.899 27.4999C148.699 27.4999 147.599 26.0999 147.599 24.3999V24.3999Z'\r\n        fill={background === false ? '#FD9D24' : 'white'}\r\n      />\r\n      <path\r\n        d='M44.6992 46.5002L47.1992 33.4002H49.6992L52.1992 46.5002H49.9992L49.5992 44.1002H47.2992L46.8992 46.5002H44.6992ZM47.4992 42.4002H49.2992L48.3992 37.1002L47.4992 42.4002ZM54.9992 38.3002V46.6002H53.0992V33.5002H55.2992L57.6992 41.0002V33.5002H59.4992V46.6002H57.5992L54.9992 38.3002ZM67.3992 36.9002V43.0002C67.3992 45.0002 66.5992 46.5002 64.1992 46.5002H60.7992V33.4002H64.1992C66.4992 33.4002 67.3992 34.9002 67.3992 36.9002ZM63.8992 44.7002C64.7992 44.7002 65.1992 44.2002 65.1992 43.4002V36.5002C65.1992 35.7002 64.8992 35.2002 63.8992 35.2002H62.9992V44.7002H63.8992ZM70.5992 43.1002V36.7002C70.5992 34.6002 71.5992 33.2002 73.8992 33.2002C76.2992 33.2002 76.9992 34.6002 76.9992 36.5002V38.1002H74.9992V36.4002C74.9992 35.6002 74.6992 35.1002 73.8992 35.1002C73.0992 35.1002 72.7992 35.7002 72.7992 36.5002V43.6002C72.7992 44.4002 73.0992 45.0002 73.8992 45.0002C74.6992 45.0002 74.9992 44.5002 74.9992 43.7002V41.3002H76.9992V43.6002C76.9992 45.5002 76.1992 46.9002 73.8992 46.9002C71.4992 46.7002 70.5992 45.2002 70.5992 43.1002V43.1002ZM78.1992 43.1002V36.7002C78.1992 34.6002 79.1992 33.2002 81.4992 33.2002C83.7992 33.2002 84.8992 34.7002 84.8992 36.7002V43.1002C84.8992 45.1002 83.8992 46.6002 81.4992 46.6002C79.1992 46.7002 78.1992 45.2002 78.1992 43.1002ZM82.5992 43.5002V36.4002C82.5992 35.6002 82.2992 35.0002 81.4992 35.0002C80.6992 35.0002 80.3992 35.6002 80.3992 36.4002V43.5002C80.3992 44.3002 80.6992 44.9002 81.4992 44.9002C82.2992 44.8002 82.5992 44.3002 82.5992 43.5002ZM92.1992 38.0002L90.5992 46.5002H89.5992L87.9992 38.0002V46.5002H86.1992V33.4002H88.7992L90.1992 40.8002L91.4992 33.4002H94.2992V46.5002H92.2992L92.1992 38.0002V38.0002ZM101.499 38.0002L99.8992 46.5002H98.8992L97.2992 38.0002V46.5002H95.4992V33.4002H98.0992L99.4992 40.8002L100.799 33.4002H103.599V46.5002H101.599V38.0002H101.499V38.0002ZM111.199 33.4002V43.3002C111.199 45.3002 110.299 46.7002 108.099 46.7002C105.799 46.7002 104.799 45.4002 104.799 43.3002V33.4002H106.999V43.6002C106.999 44.4002 107.299 44.9002 108.099 44.9002C108.899 44.9002 109.199 44.4002 109.199 43.6002V33.4002H111.199V33.4002ZM114.199 38.3002V46.6002H112.299V33.5002H114.499L116.899 41.0002V33.5002H118.699V46.6002H116.799L114.199 38.3002ZM119.999 33.4002H122.199V46.5002H119.999V33.4002ZM123.199 33.4002H129.099V35.2002H127.299V46.5002H124.999V35.2002H123.199V33.4002ZM130.099 33.4002H132.299V46.5002H130.099V33.4002ZM133.499 33.4002H138.799V35.2002H135.699V39.0002H137.899V40.8002H135.699V44.8002H138.799V46.6002H133.499V33.4002V33.4002ZM139.699 43.7002V41.9002H141.799V43.7002C141.799 44.4002 142.099 44.9002 142.899 44.9002C143.599 44.9002 143.899 44.4002 143.899 43.7002V43.2002C143.899 42.4002 143.599 42.0002 142.899 41.3002L141.599 40.0002C140.299 38.8002 139.799 38.0002 139.799 36.5002V36.1002C139.799 34.5002 140.699 33.2002 142.899 33.2002C145.099 33.2002 145.999 34.3002 145.999 36.2002V37.3002H143.999V36.2002C143.999 35.4002 143.699 35.1002 142.999 35.1002C142.399 35.1002 141.999 35.4002 141.999 36.2002V36.5002C141.999 37.2002 142.399 37.7002 142.999 38.3002L144.399 39.7002C145.599 40.9002 146.199 41.7002 146.199 43.1002V43.7002C146.199 45.5002 145.199 46.8002 142.999 46.8002C140.599 46.7002 139.699 45.4002 139.699 43.7002V43.7002Z'\r\n        fill={background === false ? '#FD9D24' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG12(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.5 0.600098H161.4V161.5H0.5V0.600098Z' fill='#BF8B2E' />\r\n      )}\r\n      <path\r\n        d='M16.5992 21.7002H16.6992V46.6002H22.0992V14.1002H17.7992L12.6992 20.0002V25.7002H12.7992L16.5992 21.7002ZM25.3992 20.8002V24.7002H30.3992V20.6002C30.3992 18.6002 31.3992 18.1002 32.4992 18.1002C33.5992 18.1002 34.4992 18.5002 34.4992 20.5002V23.2002C34.4992 25.9002 34.2992 26.9002 32.4992 28.8002L29.3992 32.1002C26.3992 35.3002 25.2992 37.4002 25.2992 40.6002V46.6002H39.4992V42.1002H30.4992V40.6002C30.4992 38.1002 31.3992 37.1002 32.7992 35.6002L36.2992 31.9002C39.0992 28.9002 39.6992 27.0002 39.6992 23.7002V20.5002C39.6992 15.9002 37.4992 13.7002 32.5992 13.7002C27.7992 13.7002 25.3992 16.3002 25.3992 20.8002V20.8002ZM125.799 86.8002C119.199 81.6002 111.399 81.1002 108.299 81.1002C106.699 81.1002 105.199 81.2002 104.099 81.5002L103.699 81.6002C99.4992 82.6002 92.5992 84.2002 84.4992 94.3002L84.2993 94.6002C84.1993 94.8002 84.0992 95.0002 84.0992 95.2002C84.0992 95.4002 84.0992 95.6002 84.1992 95.7002L84.3992 96.0002C85.6992 98.2002 86.7992 100.2 87.6992 101.8C87.9992 102.4 88.8992 102.6 89.3992 102C89.4992 101.9 89.4992 101.8 89.5992 101.8C96.5992 92.1002 102.099 90.8002 105.699 90.0002L106.099 89.9002C106.599 89.8002 107.399 89.7002 108.299 89.7002C109.999 89.7002 115.799 90.0002 120.399 93.6002C124.499 96.8002 126.499 101.9 126.499 108.8C126.499 120.4 120.899 124.9 116.199 126.6C114.399 127.3 112.499 127.6 110.499 127.6C105.699 127.6 101.899 125.7 101.899 125.6L101.599 125.4C97.5992 123.6 91.4993 120 85.7993 108.5C74.0993 85.0002 64.2993 82.8002 57.7993 81.3002L57.4992 81.2002C56.9992 81.1002 55.5993 80.8002 53.2993 80.8002C49.4993 80.8002 42.2992 81.5002 36.0992 86.5002C31.8992 89.9002 26.7992 96.5002 26.7992 108.5C26.7992 115.9 28.2992 120.7 32.1992 125.8C32.8992 126.8 39.6992 135.5 52.6992 135.5C54.5992 135.5 56.5992 135.3 58.5992 134.9C60.9992 134.4 64.5992 133.3 68.6992 130.3L72.0992 133.4C72.4992 133.7 73.0992 133.7 73.4992 133.3C73.6992 133.1 73.7992 132.9 73.6992 132.7L76.2993 116.4V116.2C76.2993 115.9 76.1992 115.7 75.9992 115.5C75.7992 115.3 75.5993 115.2 75.2993 115.2L59.3992 119.6H59.0992C58.8992 119.6 58.6992 119.7 58.5992 119.9C58.3992 120.1 58.2993 120.4 58.2993 120.6C58.2993 120.9 58.3992 121.1 58.5992 121.3L61.8992 124.3C60.1992 125.4 58.3993 126.1 56.7993 126.4C55.3993 126.7 53.9992 126.8 52.5992 126.8C43.5992 126.8 39.1992 120.9 38.9992 120.6L38.8992 120.5C36.1992 116.9 35.1992 113.8 35.1992 108.4C35.1992 101.5 37.1992 96.3002 41.1992 93.1002C45.6992 89.5002 51.3992 89.3002 52.9992 89.3002C53.8992 89.3002 54.6992 89.4002 55.1992 89.5002L55.5992 89.6002C60.7992 90.8002 67.8993 92.4002 77.7993 112.2C82.9993 122.7 89.4992 129.5 97.6992 133.1C98.6992 133.6 103.699 136 110.299 136C113.299 136 116.299 135.5 119.099 134.4C123.899 132.6 134.999 126.5 134.999 108.4C135.299 96.8002 130.099 90.2002 125.799 86.8002V86.8002Z'\r\n        fill={background === false ? '#BF8B2E' : 'white'}\r\n      />\r\n      <path\r\n        d='M54.0984 21.1999V27.1999H51.8984V14.0999H55.0984C57.2984 14.0999 58.0984 15.1999 58.0984 16.9999V18.6999C58.0984 20.0999 57.5985 20.8999 56.2985 21.1999L58.3984 27.1999H56.0984L54.0984 21.1999V21.1999ZM54.0984 15.8999V19.9999H54.7985C55.5985 19.9999 55.8984 19.5999 55.8984 18.8999V16.9999C55.8984 16.2999 55.5985 15.8999 54.7985 15.8999H54.0984ZM59.5984 14.0999H64.8984V15.8999H61.7985V19.6999H63.9984V21.4999H61.7985V25.4999H64.8984V27.2999H59.5984V14.0999V14.0999ZM66.0984 24.3999V22.5999H68.1984V24.3999C68.1984 25.0999 68.4985 25.5999 69.2985 25.5999C69.9985 25.5999 70.2985 25.0999 70.2985 24.3999V23.8999C70.2985 23.0999 69.9985 22.6999 69.2985 21.9999L67.9984 20.6999C66.6984 19.4999 66.1984 18.6999 66.1984 17.1999V16.7999C66.1984 15.1999 67.1985 13.8999 69.2985 13.8999C71.4985 13.8999 72.3984 14.9999 72.3984 16.8999V17.9999H70.3984V16.8999C70.3984 16.0999 70.0984 15.7999 69.3984 15.7999C68.7984 15.7999 68.3984 16.0999 68.3984 16.8999V17.1999C68.3984 17.8999 68.7984 18.3999 69.3984 18.9999L70.7985 20.3999C71.9985 21.5999 72.5984 22.3999 72.5984 23.7999V24.3999C72.5984 26.1999 71.5984 27.4999 69.3984 27.4999C66.9984 27.3999 66.0984 26.0999 66.0984 24.3999V24.3999ZM73.7985 14.0999H77.0984C79.2984 14.0999 80.0984 15.1999 80.0984 16.9999V19.7999C80.0984 21.5999 79.2984 22.7999 77.0984 22.7999H75.9984V27.2999H73.7985V14.0999ZM75.9984 15.8999V21.0999H76.7985C77.5985 21.0999 77.8984 20.6999 77.8984 19.9999V16.9999C77.8984 16.2999 77.5985 15.8999 76.7985 15.8999H75.9984V15.8999ZM81.4984 23.7999V17.3999C81.4984 15.2999 82.4985 13.8999 84.7985 13.8999C87.0985 13.8999 88.1984 15.3999 88.1984 17.3999V23.7999C88.1984 25.7999 87.1985 27.2999 84.7985 27.2999C82.4985 27.3999 81.4984 25.7999 81.4984 23.7999ZM85.9984 24.1999V17.0999C85.9984 16.2999 85.6984 15.6999 84.8984 15.6999C84.0984 15.6999 83.7985 16.2999 83.7985 17.0999V24.1999C83.7985 24.9999 84.0984 25.5999 84.8984 25.5999C85.5984 25.4999 85.9984 24.9999 85.9984 24.1999ZM91.4984 18.8999V27.1999H89.5984V14.0999H91.7985L94.1984 21.5999V14.0999H95.9984V27.1999H94.0984L91.4984 18.8999ZM97.4984 24.3999V22.5999H99.5984V24.3999C99.5984 25.0999 99.8984 25.5999 100.698 25.5999C101.398 25.5999 101.698 25.0999 101.698 24.3999V23.8999C101.698 23.0999 101.398 22.6999 100.698 21.9999L99.3984 20.6999C98.0984 19.4999 97.5984 18.6999 97.5984 17.1999V16.7999C97.5984 15.1999 98.5984 13.8999 100.698 13.8999C102.898 13.8999 103.798 14.9999 103.798 16.8999V17.9999H101.798V16.8999C101.798 16.0999 101.498 15.7999 100.798 15.7999C100.198 15.7999 99.7985 16.0999 99.7985 16.8999V17.1999C99.7985 17.8999 100.198 18.3999 100.798 18.9999L102.198 20.3999C103.398 21.5999 103.998 22.3999 103.998 23.7999V24.3999C103.998 26.1999 102.998 27.4999 100.798 27.4999C98.2985 27.3999 97.4984 26.0999 97.4984 24.3999V24.3999ZM105.098 14.0999H107.298V27.1999H105.098V14.0999ZM108.798 14.0999H111.998C114.198 14.0999 114.898 15.0999 114.898 16.9999V18.2999C114.898 19.3999 114.498 20.0999 113.598 20.3999C114.698 20.6999 115.198 21.3999 115.198 22.5999V24.2999C115.198 26.1999 114.398 27.1999 112.198 27.1999H108.798V14.0999V14.0999ZM111.098 19.5999H111.898C112.598 19.5999 112.898 19.1999 112.898 18.4999V16.8999C112.898 16.1999 112.598 15.7999 111.798 15.7999H110.998L111.098 19.5999V19.5999ZM111.098 21.2999V25.3999H112.098C112.798 25.3999 113.198 24.9999 113.198 24.2999V22.2999C113.198 21.5999 112.898 21.1999 112.098 21.1999H111.098V21.2999ZM116.598 14.0999H118.798V25.3999H121.398V27.1999H116.598V14.0999ZM122.698 14.0999H127.998V15.8999H124.898V19.6999H127.098V21.4999H124.898V25.4999H127.998V27.2999H122.698V14.0999V14.0999Z'\r\n        fill={background === false ? '#BF8B2E' : 'white'}\r\n      />\r\n      <path\r\n        d='M51.8984 43.1002V36.7002C51.8984 34.6002 52.8984 33.2002 55.1984 33.2002C57.5984 33.2002 58.2985 34.6002 58.2985 36.5002V38.1002H56.2985V36.4002C56.2985 35.6002 55.9984 35.1002 55.1984 35.1002C54.3984 35.1002 54.0984 35.7002 54.0984 36.5002V43.6002C54.0984 44.4002 54.3984 45.0002 55.1984 45.0002C55.9984 45.0002 56.2985 44.5002 56.2985 43.7002V41.3002H58.2985V43.6002C58.2985 45.5002 57.4984 46.9002 55.1984 46.9002C52.8984 46.7002 51.8984 45.2002 51.8984 43.1002V43.1002ZM59.6984 43.1002V36.7002C59.6984 34.6002 60.6984 33.2002 62.9984 33.2002C65.2984 33.2002 66.3984 34.7002 66.3984 36.7002V43.1002C66.3984 45.1002 65.3984 46.6002 62.9984 46.6002C60.6984 46.7002 59.6984 45.2002 59.6984 43.1002ZM64.1984 43.5002V36.4002C64.1984 35.6002 63.8984 35.0002 63.0984 35.0002C62.2984 35.0002 61.9984 35.6002 61.9984 36.4002V43.5002C61.9984 44.3002 62.2984 44.9002 63.0984 44.9002C63.8984 44.8002 64.1984 44.3002 64.1984 43.5002ZM69.6984 38.3002V46.6002H67.7985V33.5002H69.9984L72.3984 41.0002V33.5002H74.1984V46.6002H72.2985L69.6984 38.3002ZM75.5984 43.7002V41.9002H77.6984V43.7002C77.6984 44.4002 77.9985 44.9002 78.7985 44.9002C79.4985 44.9002 79.7985 44.4002 79.7985 43.7002V43.2002C79.7985 42.4002 79.4985 42.0002 78.7985 41.3002L77.4984 40.0002C76.1984 38.8002 75.6984 38.0002 75.6984 36.5002V36.1002C75.6984 34.5002 76.6985 33.2002 78.7985 33.2002C80.9985 33.2002 81.8984 34.3002 81.8984 36.2002V37.3002H79.8984V36.2002C79.8984 35.4002 79.5984 35.1002 78.8984 35.1002C78.2984 35.1002 77.8984 35.4002 77.8984 36.2002V36.5002C77.8984 37.2002 78.2984 37.7002 78.8984 38.3002L80.2985 39.7002C81.4985 40.9002 82.0984 41.7002 82.0984 43.1002V43.7002C82.0984 45.5002 81.0984 46.8002 78.8984 46.8002C76.4984 46.7002 75.5984 45.4002 75.5984 43.7002V43.7002ZM89.6984 33.4002V43.3002C89.6984 45.3002 88.7984 46.7002 86.5984 46.7002C84.2984 46.7002 83.2985 45.4002 83.2985 43.3002V33.4002H85.4984V43.6002C85.4984 44.4002 85.7984 44.9002 86.5984 44.9002C87.3984 44.9002 87.6984 44.4002 87.6984 43.6002V33.4002H89.6984ZM97.2985 38.0002L95.6984 46.5002H94.6984L93.0984 38.0002V46.5002H91.2985V33.4002H93.8984L95.2985 40.8002L96.5984 33.4002H99.3984V46.5002H97.3984V38.0002H97.2985V38.0002ZM100.798 33.4002H104.098C106.298 33.4002 107.098 34.5002 107.098 36.3002V39.1002C107.098 40.9002 106.298 42.1002 104.098 42.1002H102.998V46.6002H100.798V33.4002ZM102.998 35.2002V40.4002H103.798C104.598 40.4002 104.898 40.0002 104.898 39.3002V36.3002C104.898 35.6002 104.598 35.2002 103.798 35.2002H102.998V35.2002ZM107.798 33.4002H113.698V35.2002H111.898V46.5002H109.698V35.2002H107.898L107.798 33.4002V33.4002ZM114.698 33.4002H116.898V46.5002H114.698V33.4002ZM118.198 43.1002V36.7002C118.198 34.6002 119.198 33.2002 121.498 33.2002C123.798 33.2002 124.898 34.7002 124.898 36.7002V43.1002C124.898 45.1002 123.898 46.6002 121.498 46.6002C119.198 46.7002 118.198 45.2002 118.198 43.1002ZM122.698 43.5002V36.4002C122.698 35.6002 122.398 35.0002 121.598 35.0002C120.798 35.0002 120.498 35.6002 120.498 36.4002V43.5002C120.498 44.3002 120.798 44.9002 121.598 44.9002C122.298 44.8002 122.698 44.3002 122.698 43.5002ZM128.098 38.3002V46.6002H126.198V33.5002H128.398L130.798 41.0002V33.5002H132.598V46.6002H130.698L128.098 38.3002Z'\r\n        fill={background === false ? '#BF8B2E' : 'white'}\r\n      />\r\n      <path\r\n        d='M51.6016 65.8L54.1016 52.7H56.6016L59.1016 65.8H56.8016L56.4016 63.4H54.1016L53.7015 65.8H51.6016ZM54.3016 61.7H56.1016L55.2015 56.4L54.3016 61.7V61.7ZM61.9016 57.6V65.9H60.0016V52.8H62.2015L64.6016 60.3V52.8H66.4016V65.9H64.5016L61.9016 57.6ZM74.4016 56.2V62.3C74.4016 64.3 73.6015 65.8 71.2015 65.8H67.8016V52.7H71.2015C73.5015 52.7 74.4016 54.2 74.4016 56.2ZM70.9016 64C71.8016 64 72.2015 63.5 72.2015 62.7V55.8C72.2015 55 71.9016 54.5 70.9016 54.5H70.0016V64H70.9016ZM77.8016 52.7H81.1016C83.3016 52.7 84.1016 53.8 84.1016 55.6V58.4C84.1016 60.2 83.3016 61.4 81.1016 61.4H80.0016V65.9H77.8016V52.7ZM80.0016 54.5V59.7H80.8016C81.6016 59.7 81.9016 59.3 81.9016 58.6V55.6C81.9016 54.9 81.6016 54.5 80.8016 54.5H80.0016V54.5ZM87.5016 59.8V65.8H85.3016V52.7H88.5016C90.7016 52.7 91.5016 53.8 91.5016 55.6V57.3C91.5016 58.7 91.0015 59.5 89.7015 59.8L91.8016 65.8H89.5016L87.5016 59.8V59.8ZM87.5016 54.5V58.6H88.2015C89.0015 58.6 89.3016 58.2 89.3016 57.5V55.6C89.3016 54.9 89.0015 54.5 88.2015 54.5H87.5016ZM92.8016 62.4V56C92.8016 53.9 93.8016 52.5 96.1016 52.5C98.4016 52.5 99.5016 54 99.5016 56V62.4C99.5016 64.4 98.5016 65.9 96.1016 65.9C93.8016 66 92.8016 64.5 92.8016 62.4ZM97.3016 62.8V55.7C97.3016 54.9 97.0015 54.3 96.2015 54.3C95.4015 54.3 95.1016 54.9 95.1016 55.7V62.8C95.1016 63.6 95.4015 64.2 96.2015 64.2C97.0015 64.1 97.3016 63.6 97.3016 62.8ZM107.502 56.2V62.3C107.502 64.3 106.702 65.8 104.302 65.8H100.902V52.7H104.302C106.602 52.7 107.502 54.2 107.502 56.2ZM104.002 64C104.902 64 105.302 63.5 105.302 62.7V55.8C105.302 55 105.002 54.5 104.002 54.5H103.102V64H104.002ZM115.202 52.7V62.6C115.202 64.6 114.302 66 112.102 66C109.802 66 108.802 64.7 108.802 62.6V52.7H111.002V62.9C111.002 63.7 111.302 64.2 112.102 64.2C112.902 64.2 113.202 63.7 113.202 62.9V52.7H115.202ZM116.502 62.4V56C116.502 53.9 117.502 52.5 119.802 52.5C122.202 52.5 122.902 53.9 122.902 55.8V57.4H120.902V55.7C120.902 54.9 120.602 54.4 119.802 54.4C119.002 54.4 118.702 55 118.702 55.8V62.9C118.702 63.7 119.002 64.3 119.802 64.3C120.602 64.3 120.902 63.8 120.902 63V60.6H122.902V62.9C122.902 64.8 122.102 66.2 119.802 66.2C117.502 66 116.502 64.5 116.502 62.4V62.4ZM124.002 52.7H129.902V54.5H128.102V65.8H125.902V54.5H124.102L124.002 52.7V52.7ZM130.902 52.7H133.102V65.8H130.902V52.7ZM134.402 62.4V56C134.402 53.9 135.402 52.5 137.702 52.5C140.002 52.5 141.102 54 141.102 56V62.4C141.102 64.4 140.102 65.9 137.702 65.9C135.402 66 134.402 64.5 134.402 62.4ZM138.902 62.8V55.7C138.902 54.9 138.602 54.3 137.802 54.3C137.002 54.3 136.702 54.9 136.702 55.7V62.8C136.702 63.6 137.002 64.2 137.802 64.2C138.502 64.1 138.902 63.6 138.902 62.8ZM144.202 57.6V65.9H142.302V52.8H144.502L146.902 60.3V52.8H148.702V65.9H146.802L144.202 57.6Z'\r\n        fill={background === false ? '#BF8B2E' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG13(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.800781 0.899902H161.701V161.8H0.800781V0.899902Z' fill='#3F7E44' />\r\n      )}\r\n      <path\r\n        d='M21.0992 14.4001V46.9001H15.5992V22.0001L11.7992 26.0001H11.6992V20.3001L16.6992 14.4001H21.0992ZM39.0992 21.5001V24.3001C39.0992 27.0001 37.5992 28.8001 35.3992 29.6001C38.0992 30.2001 39.3992 32.1001 39.3992 35.1001V39.9001C39.3992 44.4001 36.9992 47.3001 31.4992 47.3001C25.9992 47.3001 23.9992 44.1001 23.9992 39.2001V34.9001H28.9992V39.5001C28.9992 41.4001 29.6992 42.7001 31.4992 42.7001C33.1992 42.7001 33.8992 41.5001 33.8992 39.8001V34.4001C33.8992 32.7001 33.0992 31.8001 31.1992 31.8001H28.8992V27.6001H30.9992C32.7992 27.6001 33.8992 26.7001 33.8992 25.0001V21.5001C33.8992 19.7001 33.2992 18.6001 31.5992 18.6001C29.8992 18.6001 29.2992 19.7001 29.2992 21.8001V25.1001H24.2992V22.2001C24.2992 17.4001 26.2992 14.1001 31.8992 14.1001C36.8992 14.1001 39.0992 16.9001 39.0992 21.5001V21.5001ZM140.299 101.7C136.099 95.8001 116.899 72.0001 81.1992 72.0001C45.4992 72.0001 26.3992 95.7001 22.0992 101.7C21.8992 102 21.7992 102.2 21.5992 102.4C21.6992 102.6 21.8992 102.8 22.0992 103.1C26.2992 109 45.4992 132.8 81.1992 132.8C116.799 132.8 135.999 109.1 140.299 103.1C140.499 102.8 140.599 102.6 140.799 102.4C140.599 102.2 140.499 101.9 140.299 101.7ZM61.2992 87.0001C61.5992 86.5001 62.6992 85.2001 62.7992 85.0001C63.0992 84.6001 63.5992 84.6001 63.9992 84.5001C64.3992 84.4001 64.8992 84.6001 64.8992 84.9001C64.9992 85.2001 64.7992 86.3001 64.5992 86.5001C64.0992 87.0001 62.6992 87.8001 61.9992 87.7001C61.4992 87.6001 61.1992 87.2001 61.2992 87.0001ZM60.0992 89.5001C60.1992 89.4001 60.1992 89.4001 60.1992 89.3001C60.5992 88.8001 61.4992 88.7001 62.1992 88.6001C62.7992 88.5001 63.5992 88.8001 63.6992 89.2001C63.7992 89.6001 62.1992 90.4001 61.7992 90.6001C60.8992 91.4001 59.5992 93.0001 58.7992 93.2001C58.4992 93.3001 58.2992 93.2001 58.1992 93.1001C58.6992 92.0001 59.3992 90.7001 60.0992 89.5001V89.5001ZM73.3992 116.9C72.8992 118.8 72.3992 119.5 71.8992 120.1C71.3992 120.7 69.5992 121.5 68.4992 121.4C67.3992 121.3 67.1992 118.3 67.1992 116.8C67.1992 116.3 66.3992 117.9 65.9992 114.6C65.6992 112.5 64.3992 114.8 64.2992 113.4C64.1992 112 63.4992 112.3 62.7992 111.4C62.0992 110.5 61.1992 111.5 60.2992 111.9C59.2992 112.3 59.6992 112.6 58.3992 112.1H58.2992C56.9992 109.1 56.2992 105.9 56.2992 102.4C56.2992 101.6 56.2992 100.7 56.3992 99.9001C56.3992 99.8001 56.4992 99.7001 56.5992 99.7001C57.8992 98.1001 57.8992 97.8001 57.8992 97.8001L59.3992 97.3001C59.3992 97.3001 61.6992 97.7001 63.4992 98.3001C64.8992 98.8001 67.1992 100.1 68.4992 99.5001C69.4992 99.1001 70.1992 98.6001 70.0992 97.8001C69.9992 96.8001 69.1992 96.6001 68.2992 97.2001C67.8992 97.4001 67.1992 95.7001 66.5992 95.8001C65.9992 95.9001 67.2992 97.9001 66.7992 97.9001C66.2992 98.0001 65.2992 95.8001 65.0992 95.5001C64.8992 95.2001 64.1992 94.3001 63.4992 95.0001C61.9992 96.4001 59.6992 96.3001 59.1992 96.7001C57.6992 97.8001 57.3992 96.3001 57.3992 95.5001C57.4992 95.3001 57.4992 95.1001 57.5992 94.9001C58.0992 94.4001 59.7992 94.2001 60.3992 94.6001C60.9992 95.0001 61.4992 94.5001 61.7992 94.2001C62.0992 93.9001 61.9992 93.5001 61.7992 93.2001C61.5992 92.9001 62.0992 92.6001 62.4992 92.5001C62.7992 92.4001 63.8992 91.6001 64.3992 91.4001C64.7992 91.1001 67.0992 90.9001 68.1992 91.4001C69.1992 91.9001 70.1992 91.5001 70.6992 90.9001C71.2992 90.1001 72.0992 89.6001 72.4992 89.4001C72.8992 89.2001 71.5992 88.1001 70.5992 89.3001C69.5992 90.6001 69.0992 90.7001 68.5992 90.7001C68.0992 90.7001 65.2992 90.0001 64.8992 89.1001C64.5992 88.2001 65.7992 87.5001 66.8992 87.0001C67.9992 86.5001 70.8992 86.5001 71.5992 86.3001C73.0992 86.0001 74.9992 85.2001 75.9992 85.9001C76.9992 86.5001 71.9992 87.7001 73.5992 88.6001C74.1992 88.9001 76.7992 87.1001 77.6992 86.6001C79.7992 85.5001 75.5992 85.1001 76.1992 82.9001C76.7992 80.4001 70.9992 81.3001 68.1992 81.6001C72.0992 79.1001 76.5992 77.7001 81.5992 77.7001C93.2992 77.7001 103.099 85.8001 105.699 96.7001C105.699 97.2001 105.599 97.6001 105.599 97.8001C105.399 98.7001 103.699 99.5001 102.699 98.0001C102.399 97.6001 101.399 96.6001 101.399 98.4001C101.399 100.1 103.099 100.3 101.499 101.3C99.8992 102.3 99.5992 102.1 98.8992 102.3C98.1992 102.6 97.4992 104.3 97.5992 105.3C97.7992 106.2 99.9992 108.8 98.3992 108.7C97.9992 108.7 94.9992 106.6 94.4992 105.3C93.9992 103.9 93.3992 102.6 92.9992 101.5C92.5992 100.5 91.4992 100.2 90.6992 100.8C89.7992 101.4 90.8992 102 90.2992 103.3C89.6992 104.6 89.1992 105.7 88.2992 104.7C85.8992 101.9 82.3992 103.3 81.7992 100.2C81.4992 98.5001 80.0992 98.7001 78.8992 97.7001C77.6992 96.8001 76.9992 96.2001 76.7992 96.9001C76.5992 97.5001 80.5992 100.7 80.8992 101.5C81.2992 102.7 79.6992 103.8 78.4992 104C77.2992 104.3 76.7992 103.3 75.5992 102.1C74.3992 100.9 73.8992 100 73.8992 101C73.7992 102.4 74.9992 104.4 76.1992 105.1C77.1992 105.7 78.2992 106 77.9992 107.1C77.6992 108.1 77.9992 107.5 76.8992 108.7C75.7992 109.8 75.5992 110.2 75.5992 111.7C75.6992 113.3 75.2992 113.3 74.9992 114.6C74.4992 116.1 73.8992 115 73.3992 116.9V116.9ZM100.099 107C100.899 106.9 102.199 108.1 101.699 108.5C101.199 108.9 99.9992 108.8 99.2992 108.3C98.6992 107.8 99.6992 107 100.099 107ZM98.9992 106.2C98.6992 106.1 98.4992 105.8 98.2992 105.2C98.0992 104.6 98.5992 104.2 99.0992 104.5C99.5992 104.8 100.299 105.5 100.299 105.9C100.299 106.4 99.2992 106.4 98.9992 106.2V106.2ZM87.9992 106.2C87.4992 106.6 86.2992 106.5 85.5992 106C84.9992 105.5 85.9992 104.7 86.3992 104.7C87.2992 104.6 88.4992 105.8 87.9992 106.2ZM77.8992 111.1C77.5992 111.7 76.5992 115.8 75.9992 115.3C75.3992 114.8 76.2992 110.5 76.3992 110.1C77.3992 108.4 79.4992 108.5 77.8992 111.1ZM81.2992 127.3C78.8992 127.3 76.4992 126.9 74.2992 126.3C73.9992 126 73.7992 125.6 73.9992 125.1C74.7992 123.1 77.0992 122.3 78.8992 122.1C82.8992 121.7 88.1992 124.7 89.0992 124.2C89.8992 123.7 91.5992 121.5 94.0992 121.6C95.7992 121.7 95.7992 122 96.3992 122.2C92.1992 125.4 86.8992 127.3 81.2992 127.3ZM98.7992 120.1C98.5992 120 98.2992 119.9 97.9992 119.8C96.5992 119.1 96.7992 120.2 96.0992 120C95.3992 119.8 96.8992 118.2 94.7992 119.5C92.7992 120.8 93.2992 119.3 92.4992 117.1C91.5992 114.9 93.4992 112.4 95.0992 111.8C97.2992 111 98.5992 110.9 99.5992 110.6C102.599 109.9 103.199 108.1 103.799 109.2L104.099 109.8C104.299 110.1 104.499 110.8 104.499 111.4C103.199 114.7 101.299 117.6 98.7992 120.1V120.1ZM105.599 107.6C104.899 107.4 102.099 103.6 104.399 101C104.799 100.6 103.699 99.4001 103.999 99.3001C105.199 99.2001 105.799 100 106.199 101V102.4C106.099 104.2 105.899 105.9 105.599 107.6ZM52.0992 24.2001V17.8001C52.0992 15.7001 53.0992 14.3001 55.3992 14.3001C57.7992 14.3001 58.4992 15.7001 58.4992 17.6001V19.2001H56.4992V17.5001C56.4992 16.7001 56.1992 16.2001 55.3992 16.2001C54.5992 16.2001 54.2992 16.8001 54.2992 17.6001V24.7001C54.2992 25.5001 54.5992 26.1001 55.3992 26.1001C56.1992 26.1001 56.4992 25.6001 56.4992 24.8001V22.4001H58.4992V24.7001C58.4992 26.6001 57.6992 28.0001 55.3992 28.0001C53.0992 27.7001 52.0992 26.2001 52.0992 24.2001ZM59.8992 14.4001H62.0992V25.7001H64.6992V27.5001H59.8992V14.4001V14.4001ZM65.9992 14.4001H68.1992V27.5001H65.9992V14.4001ZM75.8992 19.0001L74.2992 27.5001H73.2992L71.6992 19.0001V27.5001H69.8992V14.4001H72.4992L73.8992 21.8001L75.1992 14.4001H77.9992V27.5001H75.9992L75.8992 19.0001V19.0001ZM79.0992 27.6001L81.5992 14.5001H84.0992L86.5992 27.6001H84.2992L83.8992 25.2001H81.5992L81.1992 27.6001H79.0992V27.6001ZM81.7992 23.4001H83.5992L82.6992 18.1001L81.7992 23.4001ZM86.2992 14.4001H92.1992V16.2001H90.3992V27.5001H88.1992V16.2001H86.3992L86.2992 14.4001ZM93.3992 14.4001H98.6992V16.2001H95.5992V20.0001H97.7992V21.8001H95.5992V25.8001H98.6992V27.6001H93.3992V14.4001V14.4001ZM51.6992 46.6001L54.1992 33.5001H56.6992L59.1992 46.6001H56.9992L56.5992 44.2001H54.2992L53.8992 46.6001H51.6992ZM54.4992 42.4001H56.2992L55.3992 37.1001L54.4992 42.4001ZM59.8992 43.2001V36.8001C59.8992 34.7001 60.8992 33.3001 63.1992 33.3001C65.5992 33.3001 66.2992 34.7001 66.2992 36.6001V38.2001H64.2992V36.5001C64.2992 35.7001 63.9992 35.2001 63.1992 35.2001C62.3992 35.2001 62.0992 35.8001 62.0992 36.6001V43.7001C62.0992 44.5001 62.3992 45.1001 63.1992 45.1001C63.9992 45.1001 64.2992 44.6001 64.2992 43.8001V41.4001H66.2992V43.7001C66.2992 45.6001 65.4992 47.0001 63.1992 47.0001C60.7992 46.8001 59.8992 45.2001 59.8992 43.2001ZM67.0992 33.5001H72.9992V35.3001H71.1992V46.6001H68.9992V35.3001H67.1992L67.0992 33.5001ZM74.1992 33.5001H76.3992V46.6001H74.1992V33.5001ZM77.8992 43.2001V36.8001C77.8992 34.7001 78.8992 33.3001 81.1992 33.3001C83.4992 33.3001 84.5992 34.8001 84.5992 36.8001V43.2001C84.5992 45.2001 83.5992 46.7001 81.1992 46.7001C78.8992 46.8001 77.8992 45.2001 77.8992 43.2001ZM82.2992 43.6001V36.5001C82.2992 35.7001 81.9992 35.1001 81.1992 35.1001C80.3992 35.1001 80.0992 35.7001 80.0992 36.5001V43.6001C80.0992 44.4001 80.3992 45.0001 81.1992 45.0001C81.9992 44.9001 82.2992 44.4001 82.2992 43.6001ZM87.8992 38.3001V46.6001H85.9992V33.5001H88.1992L90.5992 41.0001V33.5001H92.3992V46.6001H90.4992L87.8992 38.3001Z'\r\n        fill={background === false ? '#3F7E44' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG14(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.101562 0.899902H161.002V161.8H0.101562V0.899902Z' fill='#0A97D9' />\r\n      )}\r\n      <path\r\n        d='M21.0992 14.4998V46.8998H15.5992V22.0998L11.7992 26.0998H11.6992V20.3998L16.6992 14.4998H21.0992ZM37.6992 46.8998V41.5998H39.8992V37.2998H37.6992V14.3998H32.2992L22.8992 38.1998V41.5998H32.4992V46.8998H37.6992V46.8998ZM27.6992 37.3998L32.5992 23.9998V37.3998H27.6992ZM123.999 118.4C121.999 115.7 108.899 98.9998 90.5992 98.9998C74.6992 98.9998 57.5992 113.4 57.5992 113.4C57.5992 113.4 51.1992 100.3 38.0992 98.9998H37.7992C37.4992 98.9998 37.2992 99.2998 37.2992 99.4998C37.2992 99.6998 37.4992 99.9998 37.4992 99.9998C39.1992 102.8 43.4992 110.8 43.4992 118.7C43.4992 126.7 39.1992 134.7 37.4992 137.5L37.3992 137.7C37.3992 137.8 37.2992 137.9 37.2992 138C37.2992 138.3 37.4992 138.5 37.7992 138.5H37.9992C51.0992 137.3 57.5992 124.1 57.5992 124.1C57.5992 124.1 74.5992 138.5 90.5992 138.5C108.899 138.5 121.999 121.8 123.999 119.1C124.099 119 124.099 119 124.099 118.9V118.7V118.5L123.999 118.4V118.4ZM100.699 120.9C97.6992 120.9 95.2992 118.5 95.2992 115.5C95.2992 112.5 97.6992 110.2 100.699 110.2C103.699 110.2 106.099 112.6 106.099 115.5C106.099 118.5 103.699 120.9 100.699 120.9ZM37.5992 67.5998H37.4992C37.1992 67.5998 36.9992 67.7998 36.9992 68.0998V71.7998C36.9992 71.9998 37.0992 72.0998 37.1992 72.1998C46.0992 79.8998 54.3992 72.6998 56.3992 70.7998C56.3992 70.6998 56.4992 70.6998 56.4992 70.6998C56.5992 70.5998 56.6992 70.5998 56.7992 70.5998C56.8992 70.5998 57.0992 70.6998 57.1992 70.6998C67.1992 80.1998 77.6992 72.4998 79.8992 70.6998L80.0992 70.4998H80.4992L80.6992 70.6998C82.8992 72.4998 93.3992 80.1998 103.399 70.6998C103.499 70.5998 103.599 70.5998 103.799 70.5998C103.899 70.5998 103.999 70.5998 104.099 70.6998C104.199 70.6998 104.199 70.7998 104.199 70.7998C106.099 72.6998 114.499 79.8998 123.399 72.1998C123.499 72.0998 123.599 71.9998 123.599 71.7998V68.0998C123.599 67.7998 123.399 67.5998 123.099 67.5998H122.999C122.899 67.5998 122.799 67.6998 122.699 67.6998C119.999 69.0998 111.499 72.2998 103.899 65.0998L103.699 64.8998H103.299C103.199 64.8998 103.099 64.9998 102.999 65.0998C100.699 66.7998 90.1992 73.8998 80.8992 65.1998L80.7992 65.0998C80.6992 64.9998 80.5992 64.8998 80.3992 64.8998C80.2992 64.8998 80.0992 64.9998 79.9992 65.0998L79.8992 65.1998C70.5992 73.8998 60.0992 66.7998 57.7992 65.0998C57.6992 64.9998 57.6992 64.8998 57.4992 64.8998H57.0992L56.8992 65.0998C49.1992 72.3998 40.7992 69.0998 38.0992 67.6998C37.7992 67.6998 37.6992 67.5998 37.5992 67.5998V67.5998ZM56.2992 83.9998C56.2992 83.8998 56.3992 83.8998 56.3992 83.8998C56.4992 83.7998 56.5992 83.7998 56.6992 83.7998C56.7992 83.7998 56.9992 83.8998 57.0992 83.8998C67.0992 93.3998 77.5992 85.6998 79.7992 83.8998L79.9992 83.6998H80.3992L80.5992 83.8998C82.7992 85.6998 93.2992 93.3998 103.299 83.8998C103.399 83.7998 103.499 83.7998 103.699 83.7998C103.799 83.7998 103.899 83.7998 103.999 83.8998C104.099 83.8998 104.099 83.9998 104.099 83.9998C105.999 85.8998 114.399 93.0998 123.299 85.3998C123.399 85.2998 123.499 85.1998 123.499 84.9998V81.2998C123.499 80.9998 123.299 80.7998 122.999 80.7998H122.899C122.799 80.7998 122.699 80.8998 122.599 80.8998C119.899 82.2998 111.399 85.4998 103.799 78.2998L103.599 78.0998C103.499 78.0998 103.499 77.9998 103.399 77.9998H103.199C103.099 77.9998 102.999 78.0998 102.899 78.1998C100.599 79.8998 90.0992 86.9998 80.7992 78.2998L80.6992 78.1998C80.5992 78.0998 80.4992 78.0998 80.2992 78.0998C80.1992 78.0998 79.9992 78.1998 79.8992 78.1998L79.7992 78.2998C70.4992 86.9998 59.9992 79.8998 57.6992 78.1998C57.5992 78.0998 57.5992 77.9998 57.3992 77.9998H57.1992C57.0992 77.9998 57.0992 77.9998 56.9992 78.0998L56.7992 78.2998C49.0992 85.4998 40.6992 82.2998 37.9992 80.8998C37.8992 80.8998 37.7992 80.7998 37.6992 80.7998H37.5992C37.2992 80.7998 37.0992 80.9998 37.0992 81.2998V84.9998C37.0992 85.1998 37.1992 85.2998 37.2992 85.3998C45.9992 93.0998 54.3992 85.8998 56.2992 83.9998V83.9998ZM51.4992 14.3998H53.6992V25.6998H56.2992V27.4998H51.4992V14.3998V14.3998ZM57.3992 14.3998H59.5992V27.4998H57.3992V14.3998ZM60.9992 14.3998H66.1992V16.1998H63.1992V19.9998H65.3992V21.7998H63.1992V27.5998H60.9992V14.3998V14.3998ZM67.1992 14.3998H72.4992V16.1998H69.3992V19.9998H71.5992V21.7998H69.3992V25.7998H72.4992V27.5998H67.1992V14.3998V14.3998ZM76.5992 14.3998H79.7992C81.9992 14.3998 82.6992 15.3998 82.6992 17.2998V18.5998C82.6992 19.6998 82.2992 20.3998 81.3992 20.6998C82.4992 20.9998 82.9992 21.6998 82.9992 22.8998V24.5998C82.9992 26.4998 82.1992 27.4998 79.9992 27.4998H76.5992V14.3998ZM78.7992 19.9998H79.5992C80.2992 19.9998 80.5992 19.5998 80.5992 18.8998V17.2998C80.5992 16.5998 80.2992 16.1998 79.4992 16.1998H78.6992V19.9998H78.7992V19.9998ZM78.7992 21.6998V25.7998H79.7992C80.4992 25.7998 80.8992 25.3998 80.8992 24.6998V22.6998C80.8992 21.9998 80.5992 21.5998 79.7992 21.5998L78.7992 21.6998ZM83.9992 14.3998H89.2992V16.1998H86.1992V19.9998H88.3992V21.7998H86.1992V25.7998H89.2992V27.5998H83.9992V14.3998V14.3998ZM90.6992 14.3998H92.8992V25.6998H95.4992V27.4998H90.6992V14.3998V14.3998ZM96.3992 24.1998V17.7998C96.3992 15.6998 97.3992 14.2998 99.6992 14.2998C101.999 14.2998 103.099 15.7998 103.099 17.7998V24.1998C103.099 26.1998 102.099 27.6998 99.6992 27.6998C97.3992 27.6998 96.3992 26.1998 96.3992 24.1998ZM100.799 24.4998V17.3998C100.799 16.5998 100.499 15.9998 99.6992 15.9998C98.8992 15.9998 98.5992 16.5998 98.5992 17.3998V24.4998C98.5992 25.2998 98.8992 25.8998 99.6992 25.8998C100.499 25.8998 100.799 25.2998 100.799 24.4998ZM108.899 19.3998L107.699 27.4998H105.599L103.799 14.3998H105.899L106.899 22.6998L107.999 14.3998H109.799L110.999 22.6998L111.999 14.3998H113.899L112.199 27.4998H110.099L108.899 19.3998Z'\r\n        fill={background === false ? '#0A97D9' : 'white'}\r\n      />\r\n      <path\r\n        d='M56.2992 38.7002L55.0992 46.8002H52.9992L51.1992 33.7002H53.2992L54.2992 42.0002L55.3992 33.7002H57.1992L58.3992 42.0002L59.3992 33.7002H61.2992L59.5992 46.8002H57.4992L56.2992 38.7002ZM61.1992 46.9002L63.6992 33.8002H66.1992L68.6992 46.9002H66.3992L65.9992 44.5002H63.6992L63.2992 46.9002H61.1992ZM63.8992 42.7002H65.6992L64.7992 37.4002L63.8992 42.7002V42.7002ZM68.1992 33.7002H74.0992V35.5002H72.2992V46.8002H70.0992V35.5002H68.2992V33.7002H68.1992V33.7002ZM75.0992 33.7002H80.3992V35.5002H77.2992V39.3002H79.4992V41.1002H77.2992V45.1002H80.3992V46.9002H75.0992V33.7002V33.7002ZM83.7992 40.8002V46.8002H81.5992V33.7002H84.7992C86.9992 33.7002 87.7992 34.8002 87.7992 36.6002V38.3002C87.7992 39.7002 87.2992 40.5002 85.9992 40.8002L88.0992 46.8002H85.7992L83.7992 40.8002ZM83.7992 35.5002V39.6002H84.4992C85.2992 39.6002 85.5992 39.2002 85.5992 38.5002V36.6002C85.5992 35.9002 85.2992 35.5002 84.4992 35.5002H83.7992Z'\r\n        fill={background === false ? '#0A97D9' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG15(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.5 0.899902H161.4V161.8H0.5V0.899902Z' fill='#56C02B' />\r\n      )}\r\n      <path\r\n        d='M12.3008 20.2999V25.9999L16.1008 21.9999H16.2008V46.8999H21.6008V14.3999H17.3008L12.3008 20.2999ZM34.6008 24.6999C32.4008 24.6999 30.9008 25.4999 30.0008 26.8999V18.7999H39.4008V14.3999H25.0008V32.6999H30.0008V31.9999C30.0008 30.0999 30.9008 28.9999 32.4008 28.9999C34.1008 28.9999 34.7008 30.0999 34.7008 31.8999V39.6999C34.7008 41.3999 34.1008 42.5999 32.4008 42.5999C30.5008 42.5999 29.9008 41.3999 29.9008 39.3999V35.2999H24.9008V38.9999C24.9008 43.8999 26.9008 47.0999 32.4008 47.0999C37.9008 47.0999 40.2008 44.1999 40.2008 39.6999V31.7999C40.2008 26.7999 37.5008 24.6999 34.6008 24.6999'\r\n        fill={background === false ? '#56C02B' : 'white'}\r\n      />\r\n      <path\r\n        d='M67.9 109.7C68.1 109.7 68.3 109.9 68.3 110.1V121.8C68.3 122 68.1 122.2 67.9 122.2H63.2C63 122.2 62.8 122 62.8 121.8V110.1C62.8 109.9 63 109.7 63.2 109.7H67.9ZM120 127.2H41.9C41.7 127.2 41.5 127.4 41.5 127.6V132.4C41.5 132.6 41.7 132.8 41.9 132.8H120C120.2 132.8 120.4 132.6 120.4 132.4V127.6C120.4 127.4 120.2 127.2 120 127.2ZM120 136.7H41.9C41.7 136.7 41.5 136.9 41.5 137.1V141.9C41.5 142.1 41.7 142.3 41.9 142.3H120C120.2 142.3 120.4 142.1 120.4 141.9V137.1C120.4 136.9 120.2 136.7 120 136.7ZM105.1 96.8002C104.1 96.0002 101.5 94.3002 98.3 94.3002C96 94.3002 93.9 95.2002 92 97.0002C91.9 97.1002 91.8 97.3002 91.8 97.5002V97.9002C91.8 98.1002 91.9 98.3002 92 98.4002C92.2 98.5002 92.3 98.6002 92.6 98.5002H92.7C92.8 98.4002 93 98.4002 93.1 98.3002C93.5 98.0002 94.6 97.6002 96.2 97.6002C97.9 97.6002 101.1 98.0002 104.3 101L104.4 101.1C104.6 101.3 104.8 101.4 105.1 101.4C105.3 101.4 105.6 101.3 105.8 101.1L105.9 101C109.1 98.1002 112.3 97.6002 114 97.6002C115.6 97.6002 116.7 98.0002 117.1 98.3002C117.2 98.4002 117.3 98.5002 117.5 98.6002C117.6 98.6002 117.8 98.7002 118 98.6002C118.3 98.5002 118.5 98.3002 118.5 98.0002V97.6002C118.5 97.4002 118.4 97.2002 118.3 97.1002C116.4 95.3002 114.3 94.4002 111.9 94.4002C108.7 94.2002 106.1 96.0002 105.1 96.8002V96.8002ZM100.3 65.6002C100.1 65.7002 100 65.8002 100 66.0002L99.9 66.3002C99.8 66.5002 99.9 66.7002 100 66.9002C100.1 67.1002 100.3 67.2002 100.5 67.2002H100.6C100.7 67.2002 100.9 67.2002 101 67.1002C101.1 67.1002 101.2 67.0002 101.5 67.0002C101.8 67.0002 105 67.1002 107.1 70.6002V70.7002C107.2 70.9002 107.4 71.0002 107.6 71.1002H107.8C107.9 71.1002 108.1 71.1002 108.2 71.0002H108.3C109.4 70.4002 110.6 70.1002 111.8 70.1002C113.8 70.1002 115.1 70.9002 115.4 71.2002L115.7 71.5002C115.8 71.5002 115.9 71.6002 116 71.6002H116.2C116.3 71.6002 116.4 71.6002 116.5 71.5002C116.7 71.4002 116.8 71.3002 116.8 71.1002L116.9 70.9002V70.7002C116.9 70.6002 116.9 70.5002 116.8 70.4002C115.3 67.8002 113.1 67.2002 111.5 67.2002C110.3 67.2002 109.3 67.5002 108.7 67.7002C108 66.7002 106.2 64.7002 103.4 64.7002C102.3 64.9002 101.3 65.1002 100.3 65.6002V65.6002ZM83.8 77.7002V78.1002C83.8 78.3002 83.9 78.5002 84.1 78.6002C84.3 78.7002 84.5 78.7002 84.6 78.7002H84.7C84.8 78.6002 84.9 78.6002 85 78.5002C85.3 78.3002 86.4 77.8002 88 77.8002C89.5 77.8002 91.8 78.2002 94.2 80.1002L94.3 80.2002C94.5 80.3002 94.7 80.4002 94.9 80.4002H95C95.2 80.4002 95.5 80.3002 95.6 80.1002L95.7 80.0002C98.3 77.2002 101.1 76.8002 102.6 76.8002C103.6 76.8002 104.4 77.0002 104.6 77.2002C104.7 77.3002 104.8 77.4002 105 77.4002H105.5C105.8 77.3002 106 77.0002 105.9 76.7002V76.4002C105.9 76.2002 105.8 76.1002 105.7 75.9002C104.1 74.6002 102.5 73.9002 100.7 73.9002C98 73.9002 95.8 75.5002 94.9 76.3002C94.1 75.7002 92.1 74.6002 89.7 74.6002C87.6 74.6002 85.8 75.5002 84.2 77.2002C83.8 77.3002 83.8 77.5002 83.8 77.7002V77.7002ZM44.2 83.9002C44.2 79.2002 48 75.4002 52.7 75.4002H53.2C53.6 69.5002 58.6 64.8002 64.6 64.8002C70.9 64.8002 76.1 69.9002 76.1 76.3002C76.1 78.1002 75.7 79.8002 74.9 81.3002C80.6 82.6002 84.9 87.7002 84.9 93.8002C84.9 100.9 79.2 106.6 72.1 106.6C71.6 106.6 55 106.5 55 106.5C50 106.5 45.9 102.4 45.9 97.4002C45.9 95.0002 46.8 92.8002 48.4 91.2002C46 89.8002 44.2 87.1002 44.2 83.9002V83.9002Z'\r\n        fill={background === false ? '#56C02B' : 'white'}\r\n      />\r\n      <path\r\n        d='M51.8984 14.3999H54.0984V25.6999H56.6985V27.4999H51.8984V14.3999V14.3999ZM57.9984 14.3999H60.1985V27.4999H57.9984V14.3999ZM61.7984 14.3999H66.9984V16.1999H63.9984V19.9999H66.1985V21.7999H63.9984V27.5999H61.7984V14.3999V14.3999ZM68.1985 14.3999H73.4984V16.1999H70.3984V19.9999H72.5984V21.7999H70.3984V25.7999H73.4984V27.5999H68.1985V14.3999V14.3999Z'\r\n        fill={background === false ? '#56C02B' : 'white'}\r\n      />\r\n      <path\r\n        d='M51.8984 43.5001V37.1001C51.8984 35.0001 52.8985 33.6001 55.1985 33.6001C57.4985 33.6001 58.5984 35.1001 58.5984 37.1001V43.5001C58.5984 45.5001 57.5985 47.0001 55.1985 47.0001C52.8985 47.0001 51.8984 45.5001 51.8984 43.5001ZM56.3984 43.8001V36.7001C56.3984 35.9001 56.0984 35.3001 55.2984 35.3001C54.4984 35.3001 54.1985 35.9001 54.1985 36.7001V43.8001C54.1985 44.6001 54.4984 45.2001 55.2984 45.2001C55.9984 45.2001 56.3984 44.6001 56.3984 43.8001ZM61.6985 38.6001V46.9001H59.7984V33.8001H61.9984L64.3984 41.3001V33.8001H66.1985V46.9001H64.2984L61.6985 38.6001ZM70.9984 33.7001H73.1985V45.0001H75.7984V46.8001H70.9984V33.7001V33.7001ZM76.3985 46.9001L78.8985 33.8001H81.3985L83.8985 46.9001H81.5984L81.1985 44.5001H78.8985L78.4984 46.9001H76.3985V46.9001ZM79.1985 42.7001H80.9984L80.0984 37.4001L79.1985 42.7001ZM86.6985 38.6001V46.9001H84.7984V33.8001H86.9984L89.3985 41.3001V33.8001H91.1985V46.9001H89.2984L86.6985 38.6001ZM99.2984 37.3001V43.4001C99.2984 45.4001 98.4984 46.9001 96.0984 46.9001H92.6985V33.8001H96.0984C98.3984 33.7001 99.2984 35.2001 99.2984 37.3001ZM95.7984 45.1001C96.6984 45.1001 97.0984 44.6001 97.0984 43.8001V36.9001C97.0984 36.1001 96.7984 35.6001 95.7984 35.6001H94.8985V45.1001H95.7984V45.1001Z'\r\n        fill={background === false ? '#56C02B' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG16(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.800781 0.899902H161.701V161.8H0.800781V0.899902Z' fill='#00689D' />\r\n      )}\r\n      <path\r\n        d='M13.1992 20.3001V26.0001H13.2992L17.0992 22.0001V46.9001H22.5992V14.4001H18.1992L13.1992 20.3001ZM41.6992 39.1001V34.3001C41.6992 29.0001 39.5992 26.3001 35.6992 26.3001C33.3992 26.3001 31.9992 27.4001 31.1992 28.9001V21.9001C31.1992 19.9001 31.7992 18.5001 33.7992 18.5001C35.7992 18.5001 36.2992 19.6001 36.2992 21.7001V23.9001H41.2992V22.2001C41.2992 17.4001 39.6992 14.1001 33.6992 14.1001C27.9992 14.1001 25.7992 17.8001 25.7992 22.9001V38.7001C25.7992 43.7001 27.9992 47.4001 33.6992 47.4001C39.3992 47.3001 41.6992 44.1001 41.6992 39.1001V39.1001ZM36.2992 39.6001C36.2992 41.7001 35.4992 42.9001 33.6992 42.9001C31.8992 42.9001 31.1992 41.7001 31.1992 39.6001V33.7001C31.2992 31.9001 32.0992 30.7001 33.7992 30.7001C35.6992 30.7001 36.3992 31.8001 36.3992 34.0001L36.2992 39.6001Z'\r\n        fill={background === false ? '#00689D' : 'white'}\r\n      />\r\n      <path\r\n        d='M52.1992 14.3998H55.4992C57.6992 14.3998 58.4992 15.4998 58.4992 17.2998V20.0998C58.4992 21.8998 57.6992 23.0998 55.4992 23.0998H54.3992V27.5998H52.1992V14.3998V14.3998ZM54.3992 16.1998V21.3998H55.1992C55.9992 21.3998 56.2992 20.9998 56.2992 20.2998V17.2998C56.2992 16.5998 55.9992 16.1998 55.1992 16.1998H54.3992ZM59.5992 14.3998H64.8992V16.1998H61.7992V19.9998H63.9992V21.7998H61.7992V25.7998H64.8992V27.5998H59.5992V14.3998V14.3998ZM65.7992 27.5998L68.2992 14.4998H70.7992L73.2992 27.5998H70.9992L70.5992 25.1998H68.2992L67.8992 27.5998H65.7992V27.5998ZM68.5992 23.3998H70.3992L69.4992 18.0998L68.5992 23.3998ZM74.0992 24.1998V17.7998C74.0992 15.6998 75.0992 14.2998 77.3992 14.2998C79.7992 14.2998 80.4992 15.6998 80.4992 17.5998V19.1998H78.4992V17.4998C78.4992 16.6998 78.1992 16.1998 77.3992 16.1998C76.5992 16.1998 76.2992 16.7998 76.2992 17.5998V24.6998C76.2992 25.4998 76.5992 26.0998 77.3992 26.0998C78.1992 26.0998 78.4992 25.5998 78.4992 24.7998V22.3998H80.4992V24.6998C80.4992 26.5998 79.6992 27.9998 77.3992 27.9998C75.0992 27.6998 74.0992 26.1998 74.0992 24.1998ZM81.8992 14.3998H87.1992V16.1998H84.0992V19.9998H86.2992V21.7998H84.0992V25.7998H87.1992V27.5998H81.8992V14.3998V14.3998ZM90.7992 25.5998L89.6992 28.5998H88.4992L88.7992 25.4998L90.7992 25.5998V25.5998ZM100.399 14.3998V24.5998C100.399 26.4998 99.5992 27.6998 97.3992 27.6998C95.0992 27.6998 94.4992 26.3998 94.4992 24.7998V22.1998H96.5992V24.8998C96.5992 25.5998 96.7992 25.8998 97.3992 25.8998C97.9992 25.8998 98.1992 25.4998 98.1992 24.7998V14.3998H100.399V14.3998ZM108.199 14.3998V24.2998C108.199 26.2998 107.299 27.6998 105.099 27.6998C102.799 27.6998 101.799 26.3998 101.799 24.2998V14.3998H103.999V24.5998C103.999 25.3998 104.299 25.8998 105.099 25.8998C105.899 25.8998 106.199 25.3998 106.199 24.5998V14.3998H108.199V14.3998ZM109.599 24.6998V22.9998H111.699V24.7998C111.699 25.4998 111.999 25.9998 112.799 25.9998C113.499 25.9998 113.799 25.4998 113.799 24.7998V24.2998C113.799 23.4998 113.499 23.0998 112.799 22.3998L111.499 21.0998C110.199 19.8998 109.699 19.0998 109.699 17.5998V17.1998C109.699 15.5998 110.699 14.2998 112.799 14.2998C114.999 14.2998 115.899 15.3998 115.899 17.2998V18.3998H113.899V17.2998C113.899 16.4998 113.599 16.1998 112.899 16.1998C112.299 16.1998 111.899 16.4998 111.899 17.2998V17.5998C111.899 18.2998 112.299 18.7998 112.899 19.3998L114.299 20.7998C115.499 21.9998 116.099 22.7998 116.099 24.1998V24.7998C116.099 26.5998 115.099 27.8998 112.899 27.8998C110.399 27.6998 109.599 26.4998 109.599 24.6998V24.6998ZM116.999 14.3998H122.899V16.1998H121.099V27.4998H118.899V16.1998H116.999V14.3998ZM124.099 14.3998H126.299V27.4998H124.099V14.3998ZM127.799 24.1998V17.7998C127.799 15.6998 128.799 14.2998 131.099 14.2998C133.499 14.2998 134.199 15.6998 134.199 17.5998V19.1998H132.199V17.4998C132.199 16.6998 131.899 16.1998 131.099 16.1998C130.299 16.1998 129.999 16.7998 129.999 17.5998V24.6998C129.999 25.4998 130.299 26.0998 131.099 26.0998C131.899 26.0998 132.199 25.5998 132.199 24.7998V22.3998H134.199V24.6998C134.199 26.5998 133.399 27.9998 131.099 27.9998C128.799 27.6998 127.799 26.1998 127.799 24.1998ZM135.599 14.3998H140.899V16.1998H137.799V19.9998H139.999V21.7998H137.799V25.7998H140.899V27.5998H135.599V14.3998V14.3998Z'\r\n        fill={background === false ? '#00689D' : 'white'}\r\n      />\r\n      <path\r\n        d='M51.8008 47.3L54.3008 34.2H56.8008L59.3008 47.3H57.0008L56.6008 44.9H54.3008L53.9008 47.3H51.8008V47.3ZM54.6008 43.1H56.4008L55.5008 37.8L54.6008 43.1ZM62.3008 39V47.3H60.4008V34.2H62.6008L65.0008 41.7V34.2H66.8008V47.3H64.9008L62.3008 39ZM74.9008 37.7V43.8C74.9008 45.8 74.1008 47.3 71.7008 47.3H68.3008V34.2H71.7008C74.1008 34.1 74.9008 35.6 74.9008 37.7ZM71.5008 45.5C72.4008 45.5 72.8008 45 72.8008 44.2V37.3C72.8008 36.5 72.5008 36 71.5008 36H70.6008V45.5H71.5008V45.5ZM78.5008 44.5V42.7H80.6008V44.5C80.6008 45.2 80.9008 45.7 81.7008 45.7C82.4008 45.7 82.7008 45.2 82.7008 44.5V44C82.7008 43.2 82.4008 42.8 81.7008 42.1L80.4008 40.8C79.1008 39.6 78.6008 38.8 78.6008 37.3V36.9C78.6008 35.3 79.6008 34 81.7008 34C83.9008 34 84.8008 35.1 84.8008 37V38.1H82.8008V37C82.8008 36.2 82.5008 35.9 81.8008 35.9C81.2008 35.9 80.8008 36.2 80.8008 37V37.3C80.8008 38 81.2008 38.5 81.8008 39.1L83.2008 40.5C84.4008 41.7 85.0008 42.5 85.0008 43.9V44.5C85.0008 46.3 84.0008 47.6 81.8008 47.6C79.4008 47.4 78.5008 46.2 78.5008 44.5V44.5ZM85.7008 34.1H91.6008V35.9H89.8008V47.2H87.6008V35.9H85.8008V34.1H85.7008ZM95.0008 41.3V47.3H92.8008V34.2H96.0008C98.2008 34.2 99.0008 35.3 99.0008 37.1V38.8C99.0008 40.2 98.5008 41 97.2008 41.3L99.3008 47.3H97.0008L95.0008 41.3ZM95.0008 35.9V40H95.7008C96.5008 40 96.8008 39.6 96.8008 38.9V37C96.8008 36.3 96.5008 35.9 95.7008 35.9H95.0008ZM100.401 43.9V37.5C100.401 35.4 101.401 34 103.701 34C106.001 34 107.101 35.5 107.101 37.5V43.9C107.101 45.9 106.101 47.4 103.701 47.4C101.401 47.4 100.401 45.9 100.401 43.9ZM104.901 44.2V37.1C104.901 36.3 104.601 35.7 103.801 35.7C103.001 35.7 102.701 36.3 102.701 37.1V44.2C102.701 45 103.001 45.6 103.801 45.6C104.501 45.6 104.901 45 104.901 44.2ZM110.401 39V47.3H108.501V34.2H110.701L113.101 41.7V34.2H114.901V47.3H113.001L110.401 39ZM119.801 40.3H122.901V47.3H121.301V45.9C121.001 46.9 120.401 47.5 119.201 47.5C117.301 47.5 116.401 46 116.401 44V37.6C116.401 35.5 117.401 34.1 119.701 34.1C122.101 34.1 122.901 35.5 122.901 37.4V38.6H120.901V37.3C120.901 36.5 120.601 36 119.801 36C119.001 36 118.701 36.6 118.701 37.4V44.5C118.701 45.3 119.001 45.9 119.801 45.9C120.501 45.9 120.901 45.5 120.901 44.6V42H119.901V40.3H119.801Z'\r\n        fill={background === false ? '#00689D' : 'white'}\r\n      />\r\n      <path\r\n        d='M52.1992 52.9998H54.3992V66.0998H52.1992V52.9998ZM57.7992 57.8998V66.1998H55.9992V52.9998H58.1992L60.5992 60.4998V52.9998H62.3992V66.0998H60.4992L57.7992 57.8998ZM63.6992 63.2998V61.4998H65.7992V63.2998C65.7992 63.9998 66.0992 64.4998 66.8992 64.4998C67.5992 64.4998 67.8992 63.9998 67.8992 63.2998V62.7998C67.8992 61.9998 67.5992 61.5998 66.8992 60.8998L65.5992 59.5998C64.2992 58.3998 63.7992 57.5998 63.7992 56.0998V55.6998C63.7992 54.0998 64.7992 52.7998 66.8992 52.7998C69.0992 52.7998 69.9992 53.8998 69.9992 55.7998V56.8998H67.9992V55.7998C67.9992 54.9998 67.6992 54.6998 66.9992 54.6998C66.3992 54.6998 65.9992 54.9998 65.9992 55.7998V56.0998C65.9992 56.7998 66.3992 57.2998 66.9992 57.8998L68.3992 59.2998C69.5992 60.4998 70.1992 61.2998 70.1992 62.6998V63.2998C70.1992 65.0998 69.1992 66.3998 66.9992 66.3998C64.5992 66.2998 63.6992 64.9998 63.6992 63.2998V63.2998ZM70.8992 52.9998H76.7992V54.7998H74.9992V66.0998H72.7992V54.7998H70.9992L70.8992 52.9998ZM77.9992 52.9998H80.1992V66.0998H77.9992V52.9998ZM81.3992 52.9998H87.2992V54.7998H85.4992V66.0998H83.2992V54.7998H81.4992V52.9998H81.3992ZM94.8992 52.9998V62.8998C94.8992 64.8998 93.9992 66.2998 91.7992 66.2998C89.4992 66.2998 88.4992 64.9998 88.4992 62.8998V52.9998H90.6992V63.1998C90.6992 63.9998 90.9992 64.4998 91.7992 64.4998C92.5992 64.4998 92.8992 63.9998 92.8992 63.1998V52.9998H94.8992V52.9998ZM96.0992 52.9998H101.999V54.7998H100.199V66.0998H97.9992V54.7998H96.1992V52.9998H96.0992ZM103.199 52.9998H105.399V66.0998H103.199V52.9998ZM106.899 62.6998V56.2998C106.899 54.1998 107.899 52.7998 110.199 52.7998C112.499 52.7998 113.599 54.2998 113.599 56.2998V62.6998C113.599 64.6998 112.599 66.1998 110.199 66.1998C107.899 66.2998 106.899 64.7998 106.899 62.6998ZM111.399 63.0998V55.9998C111.399 55.1998 111.099 54.5998 110.299 54.5998C109.499 54.5998 109.199 55.1998 109.199 55.9998V63.0998C109.199 63.8998 109.499 64.4998 110.299 64.4998C110.999 64.3998 111.399 63.8998 111.399 63.0998ZM116.899 57.8998V66.1998H114.999V52.9998H117.199L119.599 60.4998V52.9998H121.399V66.0998H119.499L116.899 57.8998ZM122.799 63.2998V61.4998H124.899V63.2998C124.899 63.9998 125.199 64.4998 125.999 64.4998C126.699 64.4998 126.999 63.9998 126.999 63.2998V62.7998C126.999 61.9998 126.699 61.5998 125.999 60.8998L124.699 59.5998C123.399 58.3998 122.899 57.5998 122.899 56.0998V55.6998C122.899 54.0998 123.899 52.7998 125.999 52.7998C128.199 52.7998 129.099 53.8998 129.099 55.7998V56.8998H127.099V55.7998C127.099 54.9998 126.799 54.6998 126.099 54.6998C125.499 54.6998 125.099 54.9998 125.099 55.7998V56.0998C125.099 56.7998 125.499 57.2998 126.099 57.8998L127.499 59.2998C128.699 60.4998 129.299 61.2998 129.299 62.6998V63.2998C129.299 65.0998 128.299 66.3998 126.099 66.3998C123.699 66.2998 122.799 64.9998 122.799 63.2998V63.2998Z'\r\n        fill={background === false ? '#00689D' : 'white'}\r\n      />\r\n      <path\r\n        d='M104.799 80.0999C104.799 80.0999 103.399 81.9 103.799 83.7C104.199 85.5 106.199 86.5 106.199 86.5C106.199 86.5 107.599 84.7 107.199 82.9C106.799 81.1 104.799 80.0999 104.799 80.0999ZM102.599 90.2999C102.599 90.2999 103.999 88.5 103.599 86.7C103.199 84.9 101.199 83.9 101.199 83.9C101.199 83.9 99.7992 85.7 100.199 87.4C100.599 89.3 102.599 90.2999 102.599 90.2999ZM108.199 88.4C108.199 88.4 109.599 89.8 111.299 89.7C112.899 89.6 114.099 87.9 114.099 87.9C114.099 87.9 112.699 86.4999 110.999 86.5999C109.399 86.6999 108.199 88.4 108.199 88.4ZM110.499 80.7C109.199 82 109.399 84.4 109.399 84.4C109.399 84.4 111.699 84.5999 113.099 83.2999C114.399 81.9999 114.199 79.5999 114.199 79.5999C114.199 79.5999 111.799 79.4 110.499 80.7ZM107.599 93.7999C109.199 93.9999 110.699 92.5999 110.699 92.5999C110.699 92.5999 109.599 90.9 107.999 90.7C106.399 90.5 104.899 91.9 104.899 91.9C104.899 91.9 105.999 93.5999 107.599 93.7999ZM108.999 121.9H96.8992C95.9992 121.9 95.1992 122.7 95.1992 123.6C95.1992 124.5 95.9992 125.3 96.8992 125.3H108.999C109.899 125.3 110.699 124.5 110.699 123.6C110.799 122.7 109.999 121.9 108.999 121.9ZM108.999 140.9H96.8992C95.9992 140.9 95.1992 141.7 95.1992 142.6C95.1992 143.5 95.9992 144.3 96.8992 144.3H108.999C109.899 144.3 110.699 143.5 110.699 142.6C110.799 141.6 109.999 140.9 108.999 140.9ZM54.4992 117.8C54.1992 117.7 53.8992 117.6 53.6992 117.6C53.6992 117.6 53.9992 117.7 54.4992 117.8Z'\r\n        fill={background === false ? '#00689D' : 'white'}\r\n      />\r\n      <path\r\n        d='M108.598 126.6H97.3984C96.8984 126.6 96.3984 127 96.3984 127.6V131L89.0984 131.8L78.3984 131.6V125C79.7984 124.8 81.1984 124.5 82.6984 124.1C92.9984 121.2 95.2984 112.7 94.9984 106.8C94.7984 100.8 96.6984 98.4998 99.4984 97.3998C100.298 97.0998 101.098 96.8998 101.798 96.7998C101.798 98.2998 102.098 99.9998 102.798 102C102.998 102 103.298 102 103.498 101.9C102.798 99.7998 102.498 98.0998 102.498 96.5998C103.898 96.3998 104.898 96.4998 104.898 96.4998C104.898 96.4998 103.898 95.9998 102.598 94.7998C103.098 91.9998 104.798 90.1998 106.498 88.3998C107.498 87.3998 108.498 86.3998 109.198 85.1998L108.598 84.7998C107.898 85.9998 106.898 86.8998 105.998 87.8998C104.298 89.5998 102.598 91.3998 101.998 94.2998C101.398 93.7998 100.798 93.1998 100.198 92.4998C97.6984 89.5998 94.3984 91.6998 89.6984 96.0998C84.9984 100.4 79.1984 100.6 73.3984 94.6998C65.7984 86.8998 59.1984 86.9998 54.6984 87.3998C57.7984 88.6998 58.8984 91.5998 60.4984 98.9998C62.0984 106.7 66.2984 110.2 71.9984 110.7C68.7984 111.8 68.6984 113.6 64.4984 116.5C61.1984 118.8 56.5984 118.1 54.6984 117.6C58.1984 118.7 62.1984 122.3 65.8984 123.6C67.9984 124.3 70.2984 124.8 72.5984 125V131.3L53.3984 130.9V135.3L89.2984 134.5L96.5984 135.3V138.7C96.5984 139.2 96.9984 139.7 97.5984 139.7H108.798C109.298 139.7 109.798 139.3 109.798 138.7V127.5C109.598 127 109.098 126.6 108.598 126.6V126.6ZM74.1984 125.2C74.9984 125.2 75.7984 125.2 76.5984 125.1V131.4L74.1984 131.3V125.2V125.2ZM52.0984 134.6C52.0984 135.5 51.4984 136.3 50.6984 136.3H49.7984C48.9984 136.3 48.3984 135.6 48.3984 134.6V131.6C48.3984 130.7 48.9984 129.9 49.7984 129.9H50.6984C51.4984 129.9 52.0984 130.6 52.0984 131.6V134.6Z'\r\n        fill={background === false ? '#00689D' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function SDG17(props: SDGIconProps) {\r\n  const { size, background } = props;\r\n  return (\r\n    <svg\r\n      width={size || '161'}\r\n      height={size || '161'}\r\n      viewBox='0 0 161 161'\r\n      fill='none'\r\n      xmlns='http://www.w3.org/2000/svg'\r\n    >\r\n      {background === false ? null : (\r\n        <path d='M0.199219 0.899902H161.099V161.8H0.199219V0.899902Z' fill='#19486A' />\r\n      )}\r\n      <path\r\n        d='M24.2984 14.3999V46.8999H18.7984V21.9999L14.8984 25.9999V20.2999L19.8984 14.3999H24.2984ZM26.7984 14.3999H40.3984V19.4999L33.2984 46.8999H27.8984L35.1984 18.8999H26.7984V14.3999ZM121.498 98.4999C121.498 87.1999 112.498 77.9999 101.298 77.5999C98.3984 69.4999 90.5984 63.5999 81.4984 63.5999C72.3984 63.5999 64.5984 69.3999 61.6984 77.5999C50.4984 77.9999 41.4984 87.1999 41.4984 98.4999C41.4984 105.2 44.6984 111.2 49.5984 115C49.0984 116.8 48.7984 118.8 48.7984 120.8C48.7984 132.4 58.1984 141.8 69.7984 141.8C74.1984 141.8 78.2984 140.4 81.5984 138.1C84.8984 140.3 88.8984 141.6 93.1984 141.6C104.798 141.6 114.198 132.2 114.198 120.6C114.198 118.6 113.898 116.7 113.398 114.9C118.398 111.2 121.498 105.2 121.498 98.4999V98.4999ZM98.2984 84.5999C98.2984 92.9999 92.0984 99.8999 83.9984 101.1C83.8984 100.3 83.7984 99.3999 83.7984 98.4999C83.7984 90.0999 89.9984 83.1999 98.0984 81.9999C98.1984 82.7999 98.2984 83.6999 98.2984 84.5999ZM81.6984 132.7C78.5984 129.7 76.5984 125.4 76.5984 120.7C76.5984 116.1 78.4984 111.9 81.4984 108.8C84.5984 111.8 86.5984 116.1 86.5984 120.8C86.5984 125.5 84.6984 129.7 81.6984 132.7ZM65.0984 81.9999C73.1984 83.1999 79.3984 90.0999 79.3984 98.4999C79.3984 99.3999 79.2984 100.2 79.1984 101.1C71.0984 99.8999 64.8984 92.9999 64.8984 84.5999C64.8984 83.6999 64.8984 82.7999 65.0984 81.9999ZM77.5984 106C74.7984 111.5 69.1984 115.3 62.6984 115.3C59.8984 115.3 57.2984 114.6 54.9984 113.4C57.7984 107.9 63.3984 104.1 69.9984 104.1C72.5984 104.1 75.2984 104.8 77.5984 106ZM85.5984 105.9C87.8984 104.7 90.4984 104 93.2984 104C99.8984 104 105.598 107.8 108.298 113.4C105.998 114.6 103.298 115.3 100.598 115.3C93.9984 115.3 88.2984 111.5 85.5984 105.9ZM81.5984 67.7999C88.4984 67.7999 94.3984 71.8999 96.8984 77.8999C90.0984 79.0999 84.3984 83.5999 81.5984 89.6999C78.7984 83.5999 73.0984 79.0999 66.2984 77.8999C68.7984 71.9999 74.6984 67.7999 81.5984 67.7999ZM45.8984 98.4999C45.8984 89.8999 52.4984 82.7999 60.7984 81.8999C60.6984 82.7999 60.5984 83.6999 60.5984 84.5999C60.5984 90.6999 63.1984 96.1999 67.3984 100.1C60.3984 100.9 54.4984 105.1 51.2984 111C47.9984 107.9 45.8984 103.5 45.8984 98.4999V98.4999ZM53.0984 120.9C53.0984 119.7 53.1984 118.6 53.4984 117.4C56.2984 118.7 59.2984 119.5 62.5984 119.5C66.2984 119.5 69.6984 118.6 72.6984 116.9C72.4984 118.1 72.2984 119.4 72.2984 120.8C72.2984 126.5 74.5984 131.6 78.1984 135.4C75.6984 136.9 72.7984 137.7 69.7984 137.7C60.5984 137.6 53.0984 130.1 53.0984 120.9ZM110.098 120.7C110.098 129.9 102.598 137.4 93.3984 137.4C90.3984 137.4 87.5984 136.6 85.0984 135.2C88.6984 131.4 90.8984 126.4 90.8984 120.8C90.8984 119.4 90.7984 118.1 90.4984 116.8C93.4984 118.5 96.9984 119.4 100.698 119.4C103.998 119.4 107.098 118.6 109.798 117.3C109.898 118.5 110.098 119.6 110.098 120.7ZM95.7984 99.8999C99.8984 96.0999 102.498 90.5999 102.498 84.4999C102.498 83.5999 102.398 82.6999 102.298 81.7999C110.698 82.6999 117.198 89.7999 117.198 98.3999C117.198 103.3 115.098 107.7 111.698 110.8C108.698 105 102.798 100.8 95.7984 99.8999Z'\r\n        fill={background === false ? '#19486A' : 'white'}\r\n      />\r\n      <path\r\n        d='M51.5 14.3998H54.8C57 14.3998 57.8 15.4998 57.8 17.2998V20.0998C57.8 21.8998 57 23.0998 54.8 23.0998H53.7V27.5998H51.5V14.3998V14.3998ZM53.8 16.1998V21.3998H54.6C55.4 21.3998 55.7 20.9998 55.7 20.2998V17.2998C55.7 16.5998 55.4 16.1998 54.6 16.1998H53.8ZM58.1 27.5998L60.6 14.4998H63.1L65.6 27.5998H63.3L62.9 25.1998H60.6L60.2 27.5998H58.1V27.5998ZM60.9 23.3998H62.7L61.8 18.0998L60.9 23.3998ZM69 21.4998V27.4998H66.8V14.3998H70C72.2 14.3998 73 15.4998 73 17.2998V18.9998C73 20.3998 72.5 21.1998 71.2 21.4998L73.3 27.4998H71L69 21.4998ZM69 16.1998V20.2998H69.7C70.5 20.2998 70.8 19.8998 70.8 19.1998V17.2998C70.8 16.5998 70.5 16.1998 69.7 16.1998H69ZM73.8 14.3998H79.7V16.1998H77.9V27.4998H75.7V16.1998H73.9V14.3998H73.8ZM82.9 19.2998V27.5998H81V14.4998H83.2L85.6 21.9998V14.4998H87.4V27.5998H85.5L82.9 19.2998ZM89.3 14.3998H94.6V16.1998H91.5V19.9998H93.7V21.7998H91.5V25.7998H94.6V27.5998H89.3V14.3998V14.3998ZM98.2 21.4998V27.4998H96V14.3998H99.2C101.4 14.3998 102.2 15.4998 102.2 17.2998V18.9998C102.2 20.3998 101.7 21.1998 100.4 21.4998L102.5 27.4998H100.2L98.2 21.4998V21.4998ZM98.2 16.1998V20.2998H98.9C99.7 20.2998 100 19.8998 100 19.1998V17.2998C100 16.5998 99.7 16.1998 98.9 16.1998H98.2ZM103.3 24.6998V22.9998H105.4V24.7998C105.4 25.4998 105.7 25.9998 106.5 25.9998C107.2 25.9998 107.5 25.4998 107.5 24.7998V24.2998C107.5 23.4998 107.2 23.0998 106.5 22.3998L105.2 21.0998C103.9 19.8998 103.4 19.0998 103.4 17.5998V17.1998C103.4 15.5998 104.4 14.2998 106.5 14.2998C108.7 14.2998 109.6 15.3998 109.6 17.2998V18.3998H107.6V17.2998C107.6 16.4998 107.3 16.1998 106.6 16.1998C106 16.1998 105.6 16.4998 105.6 17.2998V17.5998C105.6 18.2998 106 18.7998 106.6 19.3998L108 20.7998C109.2 21.9998 109.8 22.7998 109.8 24.1998V24.7998C109.8 26.5998 108.8 27.8998 106.6 27.8998C104.2 27.6998 103.3 26.4998 103.3 24.6998V24.6998ZM115.4 21.7998H113.3V27.5998H111V14.4998H113.2V20.0998H115.3V14.4998H117.5V27.5998H115.3V21.7998H115.4V21.7998ZM119.1 14.3998H121.3V27.4998H119.1V14.3998ZM122.7 14.3998H126C128.2 14.3998 129 15.4998 129 17.2998V20.0998C129 21.8998 128.2 23.0998 126 23.0998H125V27.5998H122.8L122.7 14.3998V14.3998ZM125 16.1998V21.3998H125.8C126.6 21.3998 126.9 20.9998 126.9 20.2998V17.2998C126.9 16.5998 126.6 16.1998 125.8 16.1998H125ZM129.9 24.6998V22.9998H132V24.7998C132 25.4998 132.3 25.9998 133.1 25.9998C133.8 25.9998 134.1 25.4998 134.1 24.7998V24.2998C134.1 23.4998 133.8 23.0998 133.1 22.3998L131.8 21.0998C130.5 19.8998 130 19.0998 130 17.5998V17.1998C130 15.5998 131 14.2998 133.1 14.2998C135.3 14.2998 136.2 15.3998 136.2 17.2998V18.3998H134.2V17.2998C134.2 16.4998 133.9 16.1998 133.2 16.1998C132.6 16.1998 132.2 16.4998 132.2 17.2998V17.5998C132.2 18.2998 132.6 18.7998 133.2 19.3998L134.6 20.7998C135.8 21.9998 136.4 22.7998 136.4 24.1998V24.7998C136.4 26.5998 135.4 27.8998 133.2 27.8998C130.8 27.6998 129.9 26.4998 129.9 24.6998V24.6998Z'\r\n        fill={background === false ? '#19486A' : 'white'}\r\n      />\r\n      <path\r\n        d='M51.5 33.4998H56.7V35.2998H53.7V39.0998H55.9V40.8998H53.7V46.6998H51.5V33.4998V33.4998ZM57.5 43.2998V36.8998C57.5 34.7998 58.5 33.3998 60.8 33.3998C63.1 33.3998 64.2 34.8998 64.2 36.8998V43.2998C64.2 45.2998 63.2 46.7998 60.8 46.7998C58.5 46.7998 57.5 45.2998 57.5 43.2998ZM62 43.5998V36.4998C62 35.6998 61.7 35.0998 60.9 35.0998C60.1 35.0998 59.8 35.6998 59.8 36.4998V43.5998C59.8 44.3998 60.1 44.9998 60.9 44.9998C61.6 44.9998 62 44.3998 62 43.5998ZM67.8 40.5998V46.5998H65.6V33.4998H68.8C71 33.4998 71.8 34.5998 71.8 36.3998V38.0998C71.8 39.4998 71.3 40.2998 70 40.5998L72.1 46.5998H69.8L67.8 40.5998V40.5998ZM67.8 35.2998V39.3998H68.5C69.3 39.3998 69.6 38.9998 69.6 38.2998V36.3998C69.6 35.6998 69.3 35.2998 68.5 35.2998H67.8ZM75.4 33.4998H81.3V35.2998H79.5V46.5998H77.3V35.2998H75.5V33.4998H75.4ZM86.6 40.8998H84.5V46.6998H82.3V33.5998H84.5V39.1998H86.6V33.5998H88.8V46.6998H86.6V40.8998ZM90.3 33.4998H95.6V35.2998H92.5V39.0998H94.7V40.8998H92.5V44.8998H95.6V46.6998H90.3V33.4998V33.4998ZM102.7 39.6998H105.8V46.6998H104.2V45.2998C103.9 46.2998 103.3 46.8998 102.1 46.8998C100.2 46.8998 99.3 45.3998 99.3 43.3998V36.9998C99.3 34.8998 100.3 33.4998 102.6 33.4998C105 33.4998 105.8 34.8998 105.8 36.7998V37.9998H103.8V36.6998C103.8 35.8998 103.5 35.3998 102.7 35.3998C101.9 35.3998 101.6 35.9998 101.6 36.7998V43.8998C101.6 44.6998 101.9 45.2998 102.7 45.2998C103.4 45.2998 103.8 44.8998 103.8 43.9998V41.6998H102.8V39.6998H102.7V39.6998ZM107 43.2998V36.8998C107 34.7998 108 33.3998 110.3 33.3998C112.6 33.3998 113.7 34.8998 113.7 36.8998V43.2998C113.7 45.2998 112.7 46.7998 110.3 46.7998C108.1 46.7998 107 45.2998 107 43.2998ZM111.5 43.5998V36.4998C111.5 35.6998 111.2 35.0998 110.4 35.0998C109.6 35.0998 109.3 35.6998 109.3 36.4998V43.5998C109.3 44.3998 109.6 44.9998 110.4 44.9998C111.2 44.9998 111.5 44.3998 111.5 43.5998ZM114.4 46.6998L116.9 33.5998H119.4L121.9 46.6998H119.6L119.2 44.2998H116.9L116.5 46.6998H114.4V46.6998ZM117.1 42.4998H118.9L118 37.1998L117.1 42.4998ZM123 33.4998H125.2V44.7998H127.8V46.5998H123V33.4998V33.4998ZM128.6 43.7998V41.9998H130.7V43.7998C130.7 44.4998 131 44.9998 131.8 44.9998C132.5 44.9998 132.8 44.4998 132.8 43.7998V43.2998C132.8 42.4998 132.5 42.0998 131.8 41.3998L130.5 40.0998C129.2 38.8998 128.7 38.0998 128.7 36.5998V36.1998C128.7 34.5998 129.7 33.2998 131.8 33.2998C134 33.2998 134.9 34.3998 134.9 36.2998V37.3998H132.9V36.2998C132.9 35.4998 132.6 35.1998 131.9 35.1998C131.3 35.1998 130.9 35.4998 130.9 36.2998V36.5998C130.9 37.2998 131.3 37.7998 131.9 38.3998L133.3 39.7998C134.5 40.9998 135.1 41.7998 135.1 43.1998V43.7998C135.1 45.5998 134.1 46.8998 131.9 46.8998C129.5 46.7998 128.6 45.5998 128.6 43.7998V43.7998Z'\r\n        fill={background === false ? '#19486A' : 'white'}\r\n      />\r\n    </svg>\r\n  );\r\n}\r\n\r\nexport function LanguageSwitcherIcon() {\r\n  return (\r\n    <svg width='25' height='26' viewBox='0 0 25 26' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n      <g>\r\n        <path\r\n          d='M16.599 23.688C17.7895 22.3987 18.4193 20.6895 18.35 18.936H0.75V0.75H23.88V15.468L23.875 15.474C23.875 15.521 23.875 15.568 23.875 15.616C23.905 20.278 17.206 24.488 16.175 24.488C15.921 24.488 16.004 24.24 16.599 23.688Z'\r\n          stroke='currentColor'\r\n          strokeWidth='1.5'\r\n        />\r\n        <path\r\n          d='M13.5854 13.542L16.9429 5.45215L20.2144 13.542'\r\n          stroke='currentColor'\r\n          strokeWidth='1.5'\r\n          strokeLinecap='round'\r\n          strokeLinejoin='round'\r\n        />\r\n        <path d='M15.0576 10.6704H18.9863' stroke='currentColor' strokeWidth='1.5' />\r\n        <path\r\n          d='M4.13086 6.76706H10.6748'\r\n          stroke='currentColor'\r\n          strokeWidth='1.5'\r\n          strokeLinecap='round'\r\n        />\r\n        <path\r\n          d='M4.13086 13.1656C4.13086 13.1656 9.59778 13.6368 9.92578 6.90781'\r\n          stroke='currentColor'\r\n          strokeWidth='1.5'\r\n          strokeLinecap='round'\r\n        />\r\n        <path\r\n          d='M10.8271 13.5417C10.8271 13.5417 6.38075 13.065 5.21875 9.11597'\r\n          stroke='currentColor'\r\n          strokeWidth='1.5'\r\n          strokeLinecap='round'\r\n        />\r\n        <path\r\n          d='M7.40723 4.08563V6.56317'\r\n          stroke='currentColor'\r\n          strokeWidth='1.5'\r\n          strokeLinecap='round'\r\n        />\r\n      </g>\r\n    </svg>\r\n  );\r\n}\r\n","import React from 'react';\r\nimport * as SelectPrimitive from '@radix-ui/react-select';\r\nimport { Check, ChevronDown } from 'lucide-react';\r\n\r\nimport { LanguageSwitcherIcon } from '../../icons/icons';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst LanguageSelect = SelectPrimitive.Root;\r\n\r\nconst LanguageSelectGroup = SelectPrimitive.Group;\r\n\r\nconst LanguageSelectValue = SelectPrimitive.Value;\r\n\r\nconst LanguageSelectTrigger = React.forwardRef<\r\n  React.ComponentRef<typeof SelectPrimitive.Trigger>,\r\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n  <SelectPrimitive.Trigger\r\n    ref={ref}\r\n    className={cn(\r\n      'cursor-pointer flex h-9 flex gap-2 rtl:[direction:rtl] items-center text-primary-blue-600 hover:text-primary-blue-400 dark:text-primary-white dark:hover:text-primary-white uppercase font-semibold text-sm justify-between whitespace-nowrap bg-transparent p-0 shadow-sm data-[placeholder]:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\r\n      '[&[data-state=open]>.lucide-chevron-down]:rotate-180',\r\n      className,\r\n    )}\r\n    {...props}\r\n  >\r\n    <LanguageSwitcherIcon />\r\n    {children}\r\n    <SelectPrimitive.Icon asChild>\r\n      <ChevronDown className='h-6 w-6 transition-transform duration-200' />\r\n    </SelectPrimitive.Icon>\r\n  </SelectPrimitive.Trigger>\r\n));\r\nLanguageSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\r\n\r\nconst LanguageSelectContent = React.forwardRef<\r\n  React.ComponentRef<typeof SelectPrimitive.Content>,\r\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\r\n>(({ className, children, position = 'popper', ...props }, ref) => (\r\n  <SelectPrimitive.Portal>\r\n    <SelectPrimitive.Content\r\n      ref={ref}\r\n      className={cn(\r\n        'relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-primary-white dark:bg-primary-gray-650 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]',\r\n        position === 'popper' &&\r\n          'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\r\n        className,\r\n      )}\r\n      position={position}\r\n      {...props}\r\n    >\r\n      <SelectPrimitive.Viewport\r\n        className={cn(\r\n          position === 'popper' &&\r\n            'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]',\r\n        )}\r\n      >\r\n        {children}\r\n      </SelectPrimitive.Viewport>\r\n    </SelectPrimitive.Content>\r\n  </SelectPrimitive.Portal>\r\n));\r\nLanguageSelectContent.displayName = SelectPrimitive.Content.displayName;\r\n\r\nconst LanguageSelectItem = React.forwardRef<\r\n  React.ComponentRef<typeof SelectPrimitive.Item>,\r\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\r\n>(({ className, children, ...props }, ref) => (\r\n  <SelectPrimitive.Item\r\n    ref={ref}\r\n    className={cn(\r\n      'relative flex w-full cursor-default select-none items-center py-3 px-4 text-sm uppercase font-semibold outline-none border-b border-primary-gray-400 [&:last-of-type]:border-b-0 dark:border-primary-gray-550 focus:bg-primary-gray-400 dark:focus:bg-primary-gray-550  data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\r\n      className,\r\n    )}\r\n    {...props}\r\n  >\r\n    <span className='absolute right-2 flex h-3.5 w-3.5 items-center justify-center'>\r\n      <SelectPrimitive.ItemIndicator>\r\n        <Check className='h-4 w-4' />\r\n      </SelectPrimitive.ItemIndicator>\r\n    </span>\r\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n  </SelectPrimitive.Item>\r\n));\r\nLanguageSelectItem.displayName = SelectPrimitive.Item.displayName;\r\n\r\nexport {\r\n  LanguageSelect,\r\n  LanguageSelectGroup,\r\n  LanguageSelectValue,\r\n  LanguageSelectTrigger,\r\n  LanguageSelectContent,\r\n  LanguageSelectItem,\r\n};\r\n","import React from 'react';\r\n\r\nimport {\r\n  LanguageSelect,\r\n  LanguageSelectContent,\r\n  LanguageSelectItem,\r\n  LanguageSelectTrigger,\r\n  LanguageSelectValue,\r\n} from './languageSelect';\r\n\r\ninterface LanguageSwitcherProps {\r\n  options: {\r\n    label: string;\r\n    id: string;\r\n  }[];\r\n  defaultValue: string;\r\n  value?: string;\r\n  onValueChange?: (_d: string) => void;\r\n}\r\n\r\nfunction LanguageSwitcher(props: LanguageSwitcherProps) {\r\n  const { options, value, onValueChange, defaultValue } = props;\r\n  return (\r\n    <LanguageSelect onValueChange={onValueChange} value={value} defaultValue={defaultValue}>\r\n      <LanguageSelectTrigger>\r\n        <LanguageSelectValue />\r\n      </LanguageSelectTrigger>\r\n      <LanguageSelectContent>\r\n        {options.map((d, i) => (\r\n          <LanguageSelectItem key={i} value={d.id}>\r\n            {d.label}\r\n          </LanguageSelectItem>\r\n        ))}\r\n      </LanguageSelectContent>\r\n    </LanguageSelect>\r\n  );\r\n}\r\n\r\nexport { LanguageSwitcher };\r\n","import React from 'react';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst Ol = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(\r\n  ({ className, ...props }, ref) => (\r\n    <ol\r\n      ref={ref}\r\n      aria-label='list'\r\n      {...props}\r\n      className={cn('pl-6 rtl:pr-6 rtl:pl-0', className)}\r\n    />\r\n  ),\r\n);\r\nOl.displayName = 'Ol';\r\n\r\nconst Ul = React.forwardRef<HTMLUListElement, React.ComponentPropsWithoutRef<'ul'>>(\r\n  ({ className, ...props }, ref) => (\r\n    <ul\r\n      ref={ref}\r\n      aria-label='list'\r\n      {...props}\r\n      className={cn('pl-6 rtl:pr-6 rtl:pl-0', className)}\r\n    />\r\n  ),\r\n);\r\nUl.displayName = 'Ul';\r\n\r\nconst Li = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\r\n  ({ className, ...props }, ref) => (\r\n    <li\r\n      {...props}\r\n      ref={ref}\r\n      className={cn('mb-6 pl-3 text-base md:text-xl rtl:pr-3 rtl:pl-0', className)}\r\n    />\r\n  ),\r\n);\r\nLi.displayName = 'li';\r\n\r\nexport { Ul, Ol, Li };\r\n","export default \"data:image/svg+xml,%3csvg%20width='100%25'%20height='100%25'%20viewBox='0%200%2060%20122'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M29.07%2061.73H0.0300293V90.77H29.07V61.73Z'%20fill='%230468B1'/%3e%3cpath%20d='M7.40002%2066.49V77.91C7.40002%2083.91%2010.4%2086.2%2014.4%2086.2C18.6%2086.2%2021.73%2083.78%2021.73%2077.82V66.49H19.16V78C19.16%2082.26%2017.29%2084.16%2014.45%2084.16C11.85%2084.16%209.93002%2082.31%209.93002%2078V66.49H7.40002Z'%20fill='white'/%3e%3cpath%20d='M59.9%2061.73H30.86V90.77H59.9V61.73Z'%20fill='%230468B1'/%3e%3cpath%20d='M40.46%2086V77.67C40.46%2074.44%2040.46%2072.11%2040.29%2069.67H40.38C41.4463%2071.8926%2042.6555%2074.0438%2044%2076.11L50.13%2086H52.66V66.56H50.31V74.7C50.31%2077.7%2050.31%2080.05%2050.59%2082.64H50.5C49.5009%2080.4608%2048.348%2078.3555%2047.05%2076.34L40.87%2066.53H38.11V86H40.46Z'%20fill='white'/%3e%3cpath%20d='M59.9%2092.55H30.86V121.59H59.9V92.55Z'%20fill='%230468B1'/%3e%3cpath%20d='M50.29%2098.79C49.13%2097.79%2047.29%2097.18%2044.85%2097.18C43.2377%2097.1631%2041.6274%2097.2971%2040.04%2097.58V116.71H42.54V109C43.1982%20109.132%2043.8691%20109.189%2044.54%20109.17C45.6256%20109.231%2046.7123%20109.07%2047.7336%20108.697C48.7549%20108.324%2049.6894%20107.746%2050.48%20107C51.0024%20106.446%2051.4066%20105.792%2051.6679%20105.076C51.9293%20104.361%2052.0423%20103.6%2052%20102.84C52.0182%20102.089%2051.8739%20101.342%2051.577%20100.652C51.2802%2099.9618%2050.8378%2099.3436%2050.28%2098.84'%20fill='white'/%3e%3cpath%20d='M44.62%20107.22C43.9212%20107.236%2043.223%20107.169%2042.54%20107.02V99.48C43.3192%2099.3435%2044.109%2099.2766%2044.9%2099.28C47.66%2099.28%2049.48%20100.51%2049.48%20103.11C49.48%20105.71%2047.66%20107.22%2044.62%20107.22Z'%20fill='%230468B1'/%3e%3cpath%20d='M29.04%2092.58H0V121.62H29.04V92.58Z'%20fill='%230468B1'/%3e%3cpath%20d='M20.42%2099.54C18.72%2097.96%2016.16%2097.15%2012.57%2097.15C10.7759%2097.1524%208.98448%2097.2861%207.20996%2097.55V116.63C8.73037%20116.801%2010.2602%20116.874%2011.79%20116.85C15.56%20116.85%2018.55%20115.85%2020.39%20114.07C21.3321%20113.061%2022.064%20111.875%2022.543%20110.58C23.022%20109.286%2023.2385%20107.909%2023.18%20106.53C23.2577%20105.233%2023.0509%20103.934%2022.5742%20102.725C22.0974%20101.516%2021.3622%20100.425%2020.42%2099.53'%20fill='white'/%3e%3cpath%20d='M12.28%20114.85C11.4348%20114.879%2010.5887%20114.839%209.75%20114.73V99.4C10.7146%2099.2089%2011.6968%2099.1217%2012.68%2099.14C17.97%2099.14%2020.57%20101.99%2020.54%20106.62C20.54%20111.85%2017.63%20114.87%2012.28%20114.85Z'%20fill='%230468B1'/%3e%3cpath%20d='M59.93%200H0.0300293V59.91H59.93V0Z'%20fill='%230468B1'/%3e%3cpath%20d='M51.41%2031.19C50.57%2032.38%2049.56%2033.49%2048.78%2034.7C48.9593%2033.6838%2048.9011%2032.6399%2048.61%2031.65C47.9036%2029.6832%2047.4369%2027.6385%2047.22%2025.56V24.74C47.71%2026.94%2049.87%2028.45%2049.73%2030.91C49.7339%2031.4591%2049.6529%2032.0056%2049.49%2032.53L49.59%2032.42C49.83%2031.196%2050.1643%2029.9924%2050.59%2028.82C51.29%2027.2%2052.17%2025.57%2051.82%2023.61C52.309%2024.8207%2052.524%2026.1246%2052.4496%2027.4282C52.3753%2028.7317%2052.0134%2030.0027%2051.39%2031.15'%20fill='white'/%3e%3cpath%20d='M50.08%2018.76C50.7909%2019.7977%2051.2278%2020.9982%2051.3501%2022.25C51.4725%2023.5019%2051.2764%2024.7643%2050.78%2025.92C50.3927%2026.8839%2050.1241%2027.8913%2049.98%2028.92C49.9%2028.74%2049.89%2028.5%2049.82%2028.3C49.26%2026.16%2047.23%2024.62%2046.39%2022.6C46.1161%2021.9328%2045.9117%2021.2391%2045.78%2020.53C46.67%2022.18%2048.87%2023.03%2049.47%2024.85C49.6517%2025.3482%2049.7791%2025.8645%2049.85%2026.39C49.867%2026.3902%2049.8834%2026.3842%2049.8963%2026.3732C49.9092%2026.3621%2049.9176%2026.3468%2049.92%2026.33C49.6827%2024.4254%2049.7096%2022.4972%2050%2020.6C50.0699%2019.6358%2049.8356%2018.674%2049.33%2017.85C49.69%2018.05%2049.85%2018.45%2050.09%2018.76'%20fill='white'/%3e%3cpath%20d='M49.09%2018.4C49.46%2020.07%2048.92%2021.71%2049.26%2023.4C48.35%2021.6%2046.41%2020.76%2045.08%2019.32C44.3605%2018.47%2043.9082%2017.4263%2043.78%2016.32C44.54%2018.16%2046.6%2018.57%2047.78%2020.11C48.104%2020.4905%2048.3672%2020.9189%2048.56%2021.38C47.9905%2019.8689%2047.5326%2018.3181%2047.19%2016.74C46.9324%2016.0419%2046.4729%2015.4362%2045.87%2015C46.6628%2015.2347%2047.3788%2015.6761%2047.9447%2016.2788C48.5105%2016.8816%2048.9058%2017.624%2049.09%2018.43'%20fill='white'/%3e%3cpath%20d='M44.94%2014.55C45.9901%2015.5785%2046.6899%2016.9115%2046.94%2018.36L47.13%2018.8C45.4114%2017.5585%2043.9452%2016.0006%2042.81%2014.21L41.48%2012.87C42.709%2013.2268%2043.8664%2013.7953%2044.9%2014.55'%20fill='white'/%3e%3cpath%20d='M22.73%2013.25C24.9935%2012.1383%2027.4783%2011.5504%2030%2011.53C33.0113%2011.5414%2035.9583%2012.4024%2038.5021%2014.0139C41.0459%2015.6255%2043.0833%2017.9222%2044.38%2020.64C46.0787%2024.1306%2046.4346%2028.124%2045.38%2031.86C44.6936%2034.3006%2043.4405%2036.5447%2041.7228%2038.4094C40.0051%2040.2741%2037.8712%2041.7068%2035.495%2042.5908C33.1188%2043.4748%2030.5674%2043.7851%2028.0486%2043.4965C25.5298%2043.2079%2023.1147%2042.3286%2021%2040.93C18.68%2039.3588%2016.8105%2037.2089%2015.5766%2034.6932C14.3427%2032.1775%2013.7871%2029.3831%2013.9649%2026.5867C14.1427%2023.7903%2015.0477%2021.0889%2016.5903%2018.7497C18.1329%2016.4105%2020.2597%2014.5147%2022.76%2013.25'%20fill='white'/%3e%3cpath%20d='M18.12%2013.09C17.0296%2014.1561%2016.0696%2015.3477%2015.26%2016.64C14.4284%2017.5119%2013.5361%2018.3239%2012.59%2019.07C13.07%2018.07%2013.09%2016.9%2013.77%2015.99C14.77%2014.3%2016.53%2013.71%2018.12%2013.09Z'%20fill='white'/%3e%3cpath%20d='M11.7%2016.67C12.2316%2015.9834%2012.9722%2015.4885%2013.81%2015.26C12.23%2016.35%2012.33%2018.26%2011.81%2019.91C11.65%2020.51%2011.37%2021.06%2011.23%2021.68H11.28C11.5682%2020.9554%2012.008%2020.3007%2012.57%2019.76C13.7%2018.76%2015.36%2018.08%2015.91%2016.55C15.91%2018.68%2014.11%2020.35%2012.41%2021.55C11.6897%2022.1329%2011.0887%2022.8493%2010.64%2023.66C10.64%2023.12%2010.73%2022.58%2010.69%2022.01C10.5%2020.15%2010.37%2018.01%2011.69%2016.64'%20fill='white'/%3e%3cpath%20d='M8.49997%2023C8.50923%2021.2205%209.1629%2019.5046%2010.34%2018.17C10.34%2018.17%2010.39%2018.12%2010.43%2018.12C9.21997%2019.97%2010.22%2022.29%2010.17%2024.39L9.99997%2026.58C9.99997%2026.58%209.99997%2026.66%2010.08%2026.63C10.1395%2026.3864%2010.1829%2026.1392%2010.21%2025.89C10.5%2024.16%2012%2022.89%2013.32%2021.73C13.5989%2021.4375%2013.8255%2021.0992%2013.99%2020.73C13.872%2021.6046%2013.626%2022.457%2013.26%2023.26C12.26%2025.26%2010.34%2026.89%209.99997%2029.17C9.83997%2027%208.34997%2025.36%208.49997%2023Z'%20fill='white'/%3e%3cpath%20d='M7.57995%2025.72C7.68543%2025.1306%207.85303%2024.5541%208.07995%2024C7.58995%2026.49%209.26995%2028.28%209.81995%2030.45C9.97605%2031.2711%2010.1797%2032.0825%2010.4299%2032.88C10.4299%2032.88%2010.4899%2032.88%2010.5099%2032.88C9.68995%2030.58%2010.8699%2028.45%2012.0599%2026.65C12.336%2026.1555%2012.5382%2025.6231%2012.6599%2025.07C12.7005%2026.1811%2012.603%2027.2929%2012.3699%2028.38C12.0799%2029.75%2011.6499%2031.05%2011.2799%2032.38C11.0774%2033.2396%2011.057%2034.132%2011.2199%2035L11.0999%2034.9C10.2299%2033.27%208.50995%2032%207.99995%2030.26C7.50422%2028.8009%207.36031%2027.2453%207.57995%2025.72Z'%20fill='white'/%3e%3cpath%20d='M7.50005%2030.59C7.69005%2033.23%2010.5%2034.59%2011.85%2036.81C12.1368%2037.2834%2012.4719%2037.7258%2012.85%2038.13C12.78%2037.85%2012.53%2037.61%2012.43%2037.32C11.9674%2036.3494%2011.7872%2035.2682%2011.91%2034.2C12.04%2032.85%2012.6%2031.6%2012.39%2030.2C13.55%2032.7%2013.2%2035.81%2013.84%2038.52C14.0577%2039.0923%2014.3047%2039.6531%2014.58%2040.2C12.2%2038.56%209.00005%2037%207.90005%2034.05C7.4985%2032.9437%207.36152%2031.7588%207.50005%2030.59Z'%20fill='white'/%3e%3cpath%20d='M8.92004%2036.65C10.25%2039.65%2013.57%2039.9%2015.8%2041.73C16.1866%2042.0871%2016.6249%2042.3838%2017.1%2042.61C16.5459%2042.1445%2016.0611%2041.6024%2015.66%2041C14.36%2039.19%2014.82%2036.65%2013.84%2034.7C14.7339%2035.7162%2015.4842%2036.8501%2016.07%2038.07C16.87%2040.07%2017.17%2042.25%2019.02%2043.74C17.02%2043.08%2014.68%2043.27%2012.92%2042.04C11.9194%2041.4639%2011.0479%2040.6881%2010.3597%2039.7608C9.67162%2038.8336%209.18156%2037.7747%208.92004%2036.65Z'%20fill='white'/%3e%3cpath%20d='M12.33%2042.25C14.45%2044.67%2017.93%2043.86%2020.76%2044.49C21.1468%2044.5995%2021.548%2044.6501%2021.95%2044.64C21.61%2044.43%2021.15%2044.45%2020.78%2044.26C18.56%2043.47%2018.23%2041.07%2017.02%2039.46C18.5425%2040.5811%2019.9675%2041.8289%2021.28%2043.19C22.3002%2044.0175%2023.5218%2044.5592%2024.82%2044.76C24.51%2044.87%2024.1%2044.84%2023.77%2044.93C21.45%2045.5%2018.86%2046.44%2016.39%2045.6C14.6623%2045.0358%2013.212%2043.8391%2012.33%2042.25Z'%20fill='white'/%3e%3cpath%20d='M41.18%2047.88C38.79%2048.78%2036.29%2047.88%2034.42%2046.42C33.66%2045.94%2032.99%2045.25%2032.01%2045.31C31.6735%2045.2911%2031.3361%2045.3248%2031.01%2045.41C32.8789%2046.283%2034.5864%2047.4665%2036.06%2048.91C35.781%2049.2122%2035.4766%2049.4899%2035.15%2049.74C33.7372%2048.1036%2032.0441%2046.7321%2030.15%2045.69C29.7951%2045.7816%2029.4574%2045.9302%2029.15%2046.13C27.5539%2047.0893%2026.1473%2048.3332%2025%2049.8L24%2049.01C25.4646%2047.5108%2027.1848%2046.2849%2029.08%2045.39C27.26%2044.82%2026.08%2046.39%2024.69%2047.12C23.8527%2047.7243%2022.8825%2048.1187%2021.861%2048.2701C20.8395%2048.4215%2019.7966%2048.3255%2018.82%2047.99C17.7208%2047.6173%2016.7453%2046.9497%2016%2046.06C16.8235%2046.5674%2017.7544%2046.8751%2018.7181%2046.9584C19.6818%2047.0418%2020.6516%2046.8985%2021.55%2046.54C23.89%2045.54%2026.32%2044.24%2029.13%2044.86C29.58%2044.86%2030.01%2045.3%2030.42%2044.93C32.5336%2044.4293%2034.757%2044.7099%2036.68%2045.72L38.55%2046.46C39.4388%2046.7896%2040.3922%2046.9079%2041.3346%2046.8055C42.277%2046.7031%2043.1827%2046.3828%2043.98%2045.87C43.2273%2046.7899%2042.2336%2047.4823%2041.11%2047.87'%20fill='white'/%3e%3cpath%20d='M43.75%2045.41C41.06%2046.41%2038.35%2045.18%2035.75%2044.76L35.26%2044.7C36.5117%2044.4995%2037.6881%2043.9717%2038.67%2043.17C39.9994%2041.7396%2041.4479%2040.4249%2043%2039.24C41.81%2040.76%2041.69%2042.93%2039.72%2043.91C39.2014%2044.1529%2038.6669%2044.36%2038.12%2044.53C38.8193%2044.4715%2039.5141%2044.368%2040.2%2044.22C42.84%2043.81%2045.85%2044.22%2047.7%2041.98C46.8593%2043.5967%2045.426%2044.8257%2043.7%2045.41'%20fill='white'/%3e%3cpath%20d='M45.2401%2042.67C43.8701%2043.04%2042.4001%2043.16%2041.0601%2043.61C43.3201%2041.67%2043.2001%2038.67%2044.7101%2036.39C45.1476%2035.7154%2045.6251%2035.0676%2046.1401%2034.45C45.2301%2036.29%2045.6201%2038.68%2044.5701%2040.45C44.1365%2041.1991%2043.5863%2041.8742%2042.9401%2042.45C43.1564%2042.3973%2043.356%2042.2906%2043.5201%2042.14C45.2301%2040.43%2047.4701%2039.95%2049.3201%2038.56C50.0803%2037.9868%2050.6825%2037.2298%2051.0701%2036.36C50.7201%2039.19%2047.9001%2041.85%2045.2401%2042.7'%20fill='white'/%3e%3cpath%20d='M48.63%2037.84C47.57%2038.53%2046.5%2039.18%2045.47%2039.97V39.88C47.04%2037.27%2046.27%2033.7%2047.24%2030.88L47.6%2029.88C47.4%2031.66%2048.17%2033.17%2048.12%2034.96C48.0556%2035.9963%2047.7099%2036.9955%2047.12%2037.85H47.22C47.9191%2036.8103%2048.6735%2035.8088%2049.48%2034.85C50.87%2033.51%2052.28%2032.14%2052.48%2030.28C52.95%2033.38%2051.21%2036.1%2048.63%2037.86'%20fill='white'/%3e%3cpath%20d='M36.6199%2037.63L36.7299%2037.48C37.2369%2037.1253%2037.7121%2036.7271%2038.15%2036.29H38.2099C38.1099%2036.29%2037.99%2036.36%2037.88%2036.29C37.7872%2036.2368%2037.7127%2036.1567%2037.6663%2036.0603C37.6199%2035.9639%2037.6037%2035.8557%2037.6199%2035.75L36.6199%2034.75L36.56%2034.6C36.4783%2034.777%2036.3547%2034.9315%2036.2%2035.05C36.2%2035.18%2036.2%2035.37%2036.32%2035.46C36.64%2035.56%2037.0499%2035.77%2037.1199%2036.15C36.9899%2036.5%2036.3199%2036.82%2036.7299%2037.2C36.8699%2037.39%2036.5499%2037.46%2036.5999%2037.62'%20fill='%230468B1'/%3e%3cpath%20d='M30.91%2024.68C31.1%2024.78%2031.2001%2024.59%2031.3601%2024.55C31.5714%2024.6086%2031.7576%2024.7351%2031.89%2024.91C32.03%2024.97%2032.17%2024.91%2032.3%2024.84C32.38%2024.18%2033.21%2024.27%2033.46%2023.65L33.3101%2023.71C33.2401%2023.62%2033.09%2023.66%2033.09%2023.51C33.2281%2023.3578%2033.3903%2023.2294%2033.57%2023.13C32.87%2022.6807%2032.1041%2022.3433%2031.3%2022.13C30.9628%2022.0897%2030.6286%2022.0262%2030.3%2021.94C30.3686%2022.4874%2030.4053%2023.0383%2030.41%2023.59L30.98%2023.78C31.16%2023.51%2031.52%2023.45%2031.68%2023.19C31.78%2023.1%2031.9%2023.19%2031.98%2023.28C31.9951%2023.4973%2031.9644%2023.7153%2031.89%2023.92C31.67%2024.35%2031.16%2024.4%2030.89%2024.72'%20fill='%230468B1'/%3e%3cpath%20d='M39.42%2030C39.1171%2031.1001%2038.6375%2032.1437%2038%2033.09C37.7842%2033.4783%2037.4916%2033.8185%2037.14%2034.09L37.86%2034.73C37.86%2034.73%2037.86%2034.63%2037.86%2034.57C37.86%2034.51%2037.86%2034.37%2038.02%2034.38C38.37%2034.38%2038.38%2034.75%2038.58%2034.94C38.58%2035.25%2038.81%2035.48%2038.72%2035.76C40.6652%2033.6934%2041.8012%2030.9955%2041.92%2028.16L42.03%2028.03C41.31%2028.1%2040.55%2028.03%2039.81%2028.03L39.69%2028C39.6932%2028.4789%2039.6564%2028.9572%2039.58%2029.43L39.84%2029.72C39.8747%2029.7773%2039.8877%2029.8451%2039.8767%2029.9111C39.8657%2029.9772%2039.8314%2030.0371%2039.78%2030.08C39.7288%2030.1206%2039.6654%2030.1426%2039.6%2030.1426C39.5347%2030.1426%2039.4712%2030.1206%2039.42%2030.08'%20fill='%230468B1'/%3e%3cpath%20d='M37.4999%2023C37.1904%2022.4929%2036.8321%2022.0173%2036.4299%2021.58V21.67C35.6899%2022.44%2034.8899%2023.23%2034.1899%2024.01C34.2287%2024.1102%2034.3037%2024.1923%2034.3999%2024.24C34.3999%2024.05%2034.5399%2023.88%2034.5599%2023.69C34.7499%2023.42%2035.0299%2023.59%2035.2799%2023.64C35.6587%2023.6306%2036.0374%2023.6607%2036.4099%2023.73C36.6999%2023.87%2036.7299%2024.24%2036.9899%2024.38C37.019%2024.4304%2037.0269%2024.4903%2037.0119%2024.5465C36.9969%2024.6027%2036.9602%2024.6507%2036.9099%2024.68C36.9899%2025.28%2037.2799%2024.52%2037.5799%2024.68C37.7099%2024.73%2037.8699%2024.68%2037.9599%2024.84C38.0499%2025%2038.3099%2025.05%2038.3299%2025.28C38.3499%2025.51%2038.1799%2025.43%2038.0899%2025.5C38.1699%2025.74%2037.8499%2025.89%2037.9599%2026.15C38.4199%2026.23%2038.4399%2025.7%2038.6599%2025.46C38.57%2025.0368%2038.4184%2024.6291%2038.2099%2024.25C37.9499%2024.25%2037.7899%2023.89%2037.5199%2023.83C37.0099%2023.63%2037.5999%2023.31%2037.5199%2023.01'%20fill='%230468B1'/%3e%3cpath%20d='M30.38%2039.64C31.0133%2039.5074%2031.6547%2039.4172%2032.3%2039.37C32.1615%2039.3382%2032.0359%2039.2649%2031.94%2039.16C31.57%2039.16%2031.39%2038.75%2031.27%2038.45C31.15%2038.15%2031.36%2038.06%2031.45%2037.88C31.29%2037.55%2030.8%2037.79%2030.51%2037.67C30.43%2037.61%2030.37%2037.51%2030.26%2037.49L30.38%2037.67C30.4213%2038.336%2030.4213%2039.004%2030.38%2039.67'%20fill='%230468B1'/%3e%3cpath%20d='M30.89%2033.42C31.1%2033.42%2030.95%2033.68%2031.1%2033.76C31.43%2033.66%2031.68%2034.04%2031.94%2033.76C31.94%2033.39%2032.35%2033.42%2032.58%2033.32C32.81%2033.22%2033.35%2032.82%2033.31%2032.32L33.25%2032.25C33%2032.25%2032.88%2032.44%2032.7%2032.59C32.52%2032.74%2032.36%2032.35%2032.17%2032.44C32.1772%2032.4588%2032.1894%2032.4752%2032.2052%2032.4876C32.2211%2032.4999%2032.24%2032.5077%2032.26%2032.51C32.26%2032.57%2032.32%2032.69%2032.26%2032.74C31.98%2032.99%2031.86%2032.62%2031.6%2032.65V32.74C31.6%2032.8%2031.6%2032.89%2031.51%2032.85C31.34%2032.59%2031.02%2032.69%2030.86%2032.46C30.76%2032.4%2030.66%2032.46%2030.59%2032.54C30.52%2032.62%2030.28%2032.54%2030.34%2032.73C30.14%2032.8%2030.12%2033.01%2029.97%2033.14C29.72%2033.14%2029.61%2033.38%2029.38%2033.38C29.38%2033.38%2029.38%2033.5%2029.45%2033.51C29.6033%2033.5559%2029.7667%2033.5559%2029.92%2033.51C30.16%2033.13%2030.55%2033.45%2030.92%2033.31'%20fill='%230468B1'/%3e%3cpath%20d='M33.25%2030.3C33.2484%2030.4378%2033.2943%2030.572%2033.38%2030.68C33.69%2030.63%2033.56%2031.06%2033.84%2031.03C34.12%2031%2033.84%2030.84%2033.9%2030.74C33.96%2030.64%2033.62%2030.47%2033.46%2030.33C33.3%2030.19%2033.46%2030.24%2033.46%2030.2C33.46%2030.16%2033.28%2030.2%2033.21%2030.3'%20fill='%230468B1'/%3e%3cpath%20d='M32.8899%2019.28C32.0514%2019.0225%2031.1912%2018.8417%2030.3199%2018.74L30.3999%2018.92V21.08H30.6099C31.9167%2021.2209%2033.1573%2021.7269%2034.1899%2022.54L34.2499%2022.71C34.6609%2022.2136%2035.1017%2021.7428%2035.5699%2021.3L35.9999%2021L35.8099%2020.92C34.9588%2020.2015%2033.9871%2019.6395%2032.9399%2019.26'%20fill='%230468B1'/%3e%3cpath%20d='M17.9999%2028.19L18.1699%2029.66C18.3157%2030.2079%2018.4194%2030.7662%2018.4799%2031.33C18.5599%2031.21%2018.4799%2030.97%2018.7299%2030.94C18.6399%2030.77%2018.8899%2030.62%2018.7299%2030.47C18.7451%2030.0735%2018.9052%2029.6963%2019.1799%2029.41C19.5899%2029.41%2019.6199%2028.86%2020.0299%2028.84C20.2399%2028.84%2020.3699%2029.11%2020.4599%2029.2C20.3556%2029.0201%2020.2909%2028.8199%2020.2702%2028.613C20.2496%2028.406%2020.2733%2028.197%2020.3399%2028L20.1599%2028.08C19.4196%2028.1087%2018.6782%2028.092%2017.9399%2028.03L17.9999%2028.19Z'%20fill='%230468B1'/%3e%3cpath%20d='M32.35%2031.93C32.54%2031.73%2032.95%2031.73%2032.96%2031.45C32.68%2031.45%2032.54%2031.56%2032.35%2031.71C32.35%2031.77%2032.24%2031.88%2032.35%2031.93Z'%20fill='%230468B1'/%3e%3cpath%20d='M37.4301%2027.92L37.6701%2028.17C37.9201%2028.33%2037.7601%2028.69%2038.0201%2028.84C38.2801%2028.99%2038.4401%2029.36%2038.5801%2029.63C38.608%2029.5548%2038.6314%2029.478%2038.6501%2029.4C38.7601%2028.96%2038.7401%2028.46%2038.8801%2028.03C38.3945%2028.1006%2037.8994%2028.0631%2037.4301%2027.92Z'%20fill='%230468B1'/%3e%3cpath%20d='M34.21%2033.51C34.48%2033.58%2034.67%2033.92%2035.01%2033.82C35.35%2033.72%2035.77%2033.91%2036.01%2033.61C36.01%2033.31%2036.23%2033.1%2036.36%2032.84H36.45C36.61%2033.01%2036.61%2033.26%2036.68%2033.44C36.9%2033.2%2037.08%2032.93%2037.28%2032.69C37.8077%2031.9384%2038.1877%2031.0935%2038.4%2030.2C38.1864%2030.2114%2037.9749%2030.2483%2037.77%2030.31C37.54%2030.31%2037.26%2030.43%2037.06%2030.31C36.86%2030.19%2036.94%2030.31%2036.95%2030.41C36.96%2030.51%2036.79%2030.68%2036.6%2030.63C36.41%2030.58%2036.46%2030.41%2036.41%2030.3C36.4252%2030.3826%2036.4252%2030.4674%2036.41%2030.55C36.2584%2030.6857%2036.1211%2030.8365%2036%2031C35.83%2031.18%2035.56%2031.12%2035.39%2031.27C35.39%2031.65%2034.93%2031.57%2034.69%2031.7C34.69%2031.7%2034.69%2031.75%2034.75%2031.79C34.8096%2031.8132%2034.8749%2031.818%2034.9373%2031.8037C34.9997%2031.7895%2035.0563%2031.7568%2035.1%2031.71C35.43%2031.8%2035.36%2031.38%2035.56%2031.23C35.76%2031.08%2035.88%2031.06%2036.05%2031.18C36.2169%2031.4111%2036.2885%2031.6976%2036.25%2031.98C36.05%2032.17%2036.15%2032.48%2036.02%2032.71C36.02%2032.97%2035.73%2033.09%2035.77%2033.36C35.7091%2033.41%2035.6387%2033.4472%2035.5632%2033.4695C35.4876%2033.4919%2035.4083%2033.4988%2035.33%2033.49C34.6869%2033.2479%2034.0142%2033.0932%2033.33%2033.03C33.2994%2033.0429%2033.274%2033.0657%2033.2577%2033.0946C33.2414%2033.1236%2033.2352%2033.1571%2033.24%2033.19C33.53%2033.34%2033.88%2033.35%2034.18%2033.47'%20fill='%230468B1'/%3e%3cpath%20d='M29.45%2040.51L29.53%2040.39L29.29%2040.45C26.2403%2040.3082%2023.3466%2039.0604%2021.15%2036.94V37.03L19.51%2038.69C21.8867%2040.8326%2024.8441%2042.2243%2028.01%2042.69C28.5433%2042.7219%2029.0742%2042.7854%2029.6%2042.88L29.48%2042.69L29.45%2040.51Z'%20fill='%230468B1'/%3e%3cpath%20d='M26.23%2031.9C27.0569%2032.588%2028.0501%2033.0466%2029.11%2033.23C29.17%2033.01%2029.11%2032.74%2029.19%2032.56C29.27%2032.38%2029.48%2032.39%2029.65%2032.42C29.6719%2032.4153%2029.6923%2032.4054%2029.7096%2032.3912C29.7268%2032.377%2029.7405%2032.3588%2029.7493%2032.3383C29.7581%2032.3177%2029.7618%2032.2953%2029.7602%2032.273C29.7586%2032.2507%2029.7517%2032.2291%2029.74%2032.21C29.51%2032.21%2029.61%2031.91%2029.53%2031.77C29.45%2031.63%2029.68%2031.7%2029.65%2031.6C29.62%2031.5%2029.72%2031.33%2029.59%2031.19C29.59%2031.19%2029.66%2031.12%2029.7%2031.09C29.22%2031.29%2028.7%2031%2028.27%2030.81C28.06%2030.69%2027.76%2030.57%2027.72%2030.31C27.2687%2030.8808%2026.7703%2031.4126%2026.23%2031.9Z'%20fill='%230468B1'/%3e%3cpath%20d='M25.4099%2029.41C25.3399%2029.41%2025.3299%2029.41%2025.2599%2029.41C25.1899%2029.41%2025.1699%2029.41%2025.1399%2029.41C25.1399%2028.95%2024.6299%2029.22%2024.4399%2028.98C24.6699%2029.4%2024.7799%2029.87%2025.0199%2030.28C25.2599%2030.69%2025.4799%2030.94%2025.6199%2031.28C25.8181%2030.9994%2026.0424%2030.7382%2026.2899%2030.5C26.3087%2030.3883%2026.2836%2030.2737%2026.2199%2030.18C26.1499%2030.01%2026.2199%2029.78%2026.0799%2029.63C25.8799%2029.71%2026.1599%2029.91%2026.0799%2030.03C26.0619%2030.0398%2026.0419%2030.0453%2026.0214%2030.0458C26.0009%2030.0464%2025.9806%2030.0422%2025.962%2030.0334C25.9435%2030.0246%2025.9273%2030.0116%2025.9148%2029.9953C25.9023%2029.9791%2025.8937%2029.9602%2025.8899%2029.94C25.7998%2029.9178%2025.7168%2029.8731%2025.6486%2029.8102C25.5805%2029.7472%2025.5293%2029.668%2025.4999%2029.58C25.6599%2029.48%2025.4999%2029.44%2025.4199%2029.36'%20fill='%230468B1'/%3e%3cpath%20d='M27%2029.64C26.9376%2029.8393%2026.8238%2030.0186%2026.67%2030.16C26.87%2030.02%2027%2029.78%2027.25%2029.76L27%2029.64Z'%20fill='%230468B1'/%3e%3cpath%20d='M29.26%2037.4C27.3873%2037.2937%2025.5913%2036.6206%2024.11%2035.47C24.16%2035.66%2024.42%2035.78%2024.34%2036.02C24.26%2036.26%2023.93%2036.24%2023.71%2036.24C23.25%2036.16%2022.91%2036.51%2022.49%2036.56C22.07%2036.61%2021.96%2036.2%2021.6%2036.24C23.7216%2038.1959%2026.4503%2039.3644%2029.33%2039.55L29.55%2039.7L29.45%2039.43V37.32L29.26%2037.4Z'%20fill='%230468B1'/%3e%3cpath%20d='M20.64%2036.36C20.3663%2036.1345%2020.1182%2035.8796%2019.9%2035.6C19.6184%2035.5246%2019.3777%2035.3414%2019.23%2035.09C19.15%2035%2019.23%2034.84%2019.13%2034.78L19%2034.9C18.72%2035.03%2018.62%2034.74%2018.42%2034.62C18.22%2034.5%2018.3%2034.02%2017.96%2034.1C17.83%2034.1%2017.79%2033.95%2017.71%2033.88C17.4%2033.88%2017.32%2033.56%2017.15%2033.4C17.15%2033.47%2017.15%2033.56%2017.06%2033.61C16.74%2033.68%2016.63%2033.29%2016.41%2033.13C16.35%2033.13%2016.31%2033.22%2016.23%2033.2C16.0413%2033.026%2015.9268%2032.7861%2015.91%2032.53C15.64%2032.24%2015.76%2031.77%2015.81%2031.41C15.86%2031.31%2016%2031.26%2015.97%2031.14C15.94%2031.02%2016.22%2030.95%2016.39%2030.94C16.4551%2030.9801%2016.5099%2031.0349%2016.55%2031.1C16.65%2031.03%2016.88%2031.1%2016.79%2030.87C16.9435%2030.7617%2017.1229%2030.6962%2017.31%2030.68C17.4144%2030.8543%2017.5349%2031.0183%2017.67%2031.17L17.6%2031C17.3951%2030.2042%2017.2678%2029.3904%2017.22%2028.57C17.22%2028.57%2017.12%2028.5%2017.22%2028.46C17.208%2028.3102%2017.208%2028.1598%2017.22%2028.01L17%2028.09H14.78C14.9125%2030.5439%2015.5961%2032.9365%2016.78%2035.09C17.4188%2036.1363%2018.1271%2037.1385%2018.9%2038.09L20.49%2036.44L20.64%2036.36Z'%20fill='%230468B1'/%3e%3cpath%20d='M23.2%2017.73C22.7%2018.07%2022.25%2018.52%2021.73%2018.82C22.3102%2019.2711%2022.8521%2019.7694%2023.35%2020.31V20.46C24.6933%2019.1918%2026.3737%2018.3378%2028.19%2018C28.6025%2017.903%2029.0273%2017.8693%2029.45%2017.9C29.395%2017.1343%2029.395%2016.3657%2029.45%2015.6C27.2215%2015.7153%2025.0671%2016.438%2023.22%2017.69'%20fill='%230468B1'/%3e%3cpath%20d='M21.3%2026.06C21.2691%2026.4619%2021.2022%2026.8601%2021.1%2027.25C21.4279%2027.1653%2021.772%2027.1653%2022.1%2027.25C21.92%2027.15%2022.1%2026.92%2021.97%2026.79C21.84%2026.66%2021.91%2026.35%2022.1%2026.22C22.1%2025.89%2022.43%2025.72%2022.46%2025.43C22.49%2025.14%2022.93%2025.32%2023.12%2025.14C23.31%2024.96%2023.12%2024.97%2023.12%2024.88C23.28%2024.66%2023.53%2024.67%2023.72%2024.55C23.8533%2024.3266%2024.0343%2024.1354%2024.25%2023.99C24.74%2023.99%2024.74%2023.34%2025.2%2023.32C24.5769%2022.8101%2023.9858%2022.2624%2023.43%2021.68C22.3347%2022.9358%2021.5958%2024.462%2021.29%2026.1'%20fill='%230468B1'/%3e%3cpath%20d='M21.5999%2029.3C21.5999%2029.15%2021.4099%2029.12%2021.4299%2028.97C21.4499%2028.82%2021.4299%2028.2%2021.8299%2028.07C21.7058%2028.1141%2021.5735%2028.1306%2021.4423%2028.1185C21.311%2028.1064%2021.184%2028.066%2021.0699%2028L21.1799%2028.19C21.2848%2028.7063%2021.3251%2029.2337%2021.2999%2029.76C21.3899%2029.6%2021.4099%2029.4%2021.5999%2029.3Z'%20fill='%230468B1'/%3e%3cpath%20d='M23.8%2035.06L23.77%2035.01L23.8%2035.1V35.06Z'%20fill='%230468B1'/%3e%3cpath%20d='M21.15%2019.49L20.28%2020.59C18.9157%2022.5399%2018.1258%2024.8335%2018%2027.21H20.19L20.39%2027.29C20.31%2027.23%2020.33%2027.14%2020.3%2027.06C20.423%2024.8254%2021.3212%2022.7037%2022.84%2021.06C22.2383%2020.5433%2021.6767%2019.9817%2021.16%2019.38L21.15%2019.49Z'%20fill='%230468B1'/%3e%3cpath%20d='M27.89%2034.42C28.0516%2034.2388%2028.2588%2034.1041%2028.49%2034.03C27.78%2034.17%2027.15%2033.66%2026.55%2033.38C26.1591%2033.1723%2025.8179%2032.8823%2025.55%2032.53C25.0895%2033.1241%2024.5702%2033.6703%2024%2034.16C24.25%2034.16%2024.38%2034.45%2024.59%2034.57C25.7937%2035.4793%2027.1892%2036.1018%2028.67%2036.39L28.29%2036.21C28%2035.89%2027.59%2035.5%2027.58%2035.05C27.86%2034.95%2027.83%2034.63%2027.93%2034.42'%20fill='%230468B1'/%3e%3cpath%20d='M22.4299%2028.07L22.3599%2028.49C22.2699%2028.74%2021.9599%2028.56%2021.8199%2028.73C21.6799%2028.9%2021.8199%2029.05%2021.9099%2029.18C21.6899%2029.69%2022.4099%2029.85%2022.3999%2030.31C22.6299%2030.6%2022.3999%2031.02%2022.6899%2031.31C22.7599%2031.83%2022.6199%2032.53%2023.0799%2032.94L23.1599%2033.44C23.2499%2033.78%2022.7499%2033.69%2022.8099%2033.99C22.9099%2033.99%2022.9299%2034.07%2022.9399%2034.1C23.58%2033.3557%2024.2681%2032.6542%2024.9999%2032L24.6999%2031.69C24.1162%2030.8687%2023.6983%2029.9414%2023.4699%2028.96L23.2399%2028.84C23.1879%2029.074%2023.1512%2029.3112%2023.1299%2029.55L22.9999%2029.6C22.8299%2029.6%2022.7199%2029.46%2022.5799%2029.37C22.4399%2029.28%2022.4599%2029.14%2022.5799%2029.07C22.6471%2029.0649%2022.714%2029.0825%2022.7699%2029.12C22.8399%2029.04%2022.7699%2028.91%2022.8499%2028.8C22.9299%2028.69%2022.6999%2028.43%2022.8499%2028.26C23.0099%2028.26%2023.1199%2028.43%2023.1799%2028.53C23.2399%2028.63%2023.4499%2028.46%2023.5799%2028.4C23.7099%2028.34%2023.7699%2028.08%2023.5799%2028C23.6652%2027.6925%2023.6652%2027.3675%2023.5799%2027.06C23.4899%2026.8%2023.1999%2026.84%2022.9799%2026.86C22.3299%2027.07%2023.0899%2027.56%2022.9299%2027.96C22.8299%2028.19%2022.5999%2027.96%2022.4299%2028.07Z'%20fill='%230468B1'/%3e%3cpath%20d='M42.88%2028L42.75%2027.9L42.83%2028.12C42.7121%2030.6827%2041.8311%2033.1516%2040.3%2035.21C40.0327%2035.5838%2039.7165%2035.9201%2039.36%2036.21C39.9985%2036.76%2040.5936%2037.3584%2041.14%2038L41.2%2037.88C43.6385%2035.2015%2045.0548%2031.7493%2045.2%2028.13L45.3%2027.94L45.18%2028H42.88Z'%20fill='%230468B1'/%3e%3cpath%20d='M21.26%2018.26V18.15C23.4756%2016.0635%2026.3692%2014.8457%2029.41%2014.72L29.34%2014.53V12.61L29.4%2012.39C26.3034%2012.5046%2023.3134%2013.5501%2020.82%2015.39C20.33%2015.72%2019.9%2016.23%2019.4%2016.52H19.47C20.108%2017.0345%2020.7002%2017.6033%2021.24%2018.22'%20fill='%230468B1'/%3e%3cpath%20d='M29.34%2018.8C27.3653%2018.9677%2025.4952%2019.7592%2024%2021.06C24.5976%2021.5559%2025.1653%2022.0868%2025.7%2022.65C25.7446%2022.5932%2025.7847%2022.533%2025.82%2022.47C26.5441%2021.9041%2027.3685%2021.48%2028.25%2021.22C28.6421%2021.1034%2029.0516%2021.056%2029.46%2021.08C29.37%2020.2959%2029.37%2019.5041%2029.46%2018.72L29.34%2018.8Z'%20fill='%230468B1'/%3e%3cpath%20d='M29.4501%2022C28.1611%2022.1144%2026.9553%2022.6853%2026.05%2023.61H26.22C26.41%2023.8%2026.7201%2023.76%2026.8701%2024.02C27.0201%2024.28%2026.73%2024.14%2026.74%2024.26C26.75%2024.38%2026.8401%2024.26%2026.8701%2024.36C26.9001%2024.46%2026.9901%2024.27%2027.0401%2024.21C27.0901%2024.15%2027.27%2024.4%2027.47%2024.4C27.501%2024.375%2027.5368%2024.3567%2027.5752%2024.3461C27.6136%2024.3356%2027.6537%2024.333%2027.6931%2024.3387C27.7325%2024.3443%2027.7703%2024.358%2027.8042%2024.3788C27.8381%2024.3997%2027.8673%2024.4273%2027.89%2024.46C28.02%2024.34%2028.29%2024.46%2028.33%2024.24C28.58%2023.98%2028.44%2023.57%2028.81%2023.4C28.93%2023.47%2028.81%2023.59%2028.81%2023.71C29.05%2023.81%2029.3301%2023.5%2029.5301%2023.71C29.4067%2023.1487%2029.3796%2022.5704%2029.4501%2022Z'%20fill='%230468B1'/%3e%3cpath%20d='M29.53%2025.54C29.4131%2025.7029%2029.264%2025.8402%2029.092%2025.9434C28.9201%2026.0466%2028.7288%2026.1135%2028.53%2026.14C28.43%2026.27%2028.45%2026.55%2028.2%2026.52C28.12%2026.7%2027.85%2026.8%2027.96%2027.06C27.8819%2027.361%2027.835%2027.6693%2027.82%2027.98C27.35%2028.27%2027.48%2027.58%2027.25%2027.44L27.16%2027.58C27.07%2027.58%2027.01%2027.58%2026.94%2027.48C26.87%2027.38%2026.75%2027.43%2026.69%2027.48C26.63%2027.53%2026.42%2027.8%2026.46%2028.04C26.5%2028.28%2026.18%2028.13%2026.21%2028.28C26.48%2028.2735%2026.7483%2028.2366%2027.01%2028.17C27.2%2028.17%2027.35%2028.08%2027.53%2028.08C27.5691%2028.0917%2027.6023%2028.1178%2027.6227%2028.1531C27.6432%2028.1885%2027.6494%2028.2303%2027.64%2028.27H27.71C27.7695%2028.2267%2027.8134%2028.1653%2027.835%2028.095C27.8566%2028.0247%2027.8549%2027.9492%2027.83%2027.88C27.83%2027.72%2028.04%2027.72%2028.15%2027.67C28.26%2027.62%2028.15%2027.82%2028.2%2027.9C28.56%2028.04%2028.12%2028.3%2028.07%2028.49C28.02%2028.68%2028.07%2028.98%2027.76%2028.94C27.7335%2028.9289%2027.7119%2028.9087%2027.699%2028.883C27.6862%2028.8573%2027.683%2028.8278%2027.69%2028.8H27.64C27.6426%2028.8738%2027.6643%2028.9458%2027.7028%2029.0088C27.7413%2029.0719%2027.7955%2029.1239%2027.86%2029.16C28.08%2028.98%2028.09%2028.66%2028.41%2028.62C28.73%2028.58%2028.34%2028.18%2028.59%2028.04C29%2028.04%2029.44%2027.85%2029.78%2028.18C29.78%2028.33%2029.7%2028.4%2029.78%2028.51C29.7157%2028.7056%2029.6175%2028.8883%2029.49%2029.05C29.5096%2029.103%2029.5115%2029.1609%2029.4952%2029.2151C29.479%2029.2692%2029.4456%2029.3166%2029.4%2029.35C29.3%2029.84%2028.74%2029.61%2028.4%2029.77C28.9044%2030.1478%2029.5337%2030.3194%2030.16%2030.25C30.51%2030.25%2030.35%2029.81%2030.53%2029.62C30.64%2029.07%2031.16%2029.45%2031.47%2029.3C31.5964%2029.0656%2031.6842%2028.8123%2031.73%2028.55C31.638%2028.4857%2031.5684%2028.3943%2031.5307%2028.2885C31.4931%2028.1828%2031.4893%2028.068%2031.52%2027.96C31.39%2027.77%2031.4%2027.44%2031.1%2027.4C31.1%2027.34%2031.1%2027.26%2031.1%2027.21C31.1%2027.16%2031.26%2026.98%2031.31%2026.84C31.13%2026.73%2031.18%2026.46%2031.19%2026.31C30.88%2026.4%2030.85%2025.99%2030.62%2025.9C30.56%2025.72%2030.36%2025.69%2030.2%2025.66C29.82%2025.84%2029.76%2025.37%2029.47%2025.26C29.47%2025.17%2029.37%2025.04%2029.47%2024.97C29.57%2024.9%2029.8%2024.97%2029.97%2024.97L29.84%2024.9C29.71%2024.76%2029.43%2024.85%2029.26%2024.9C29.42%2025.06%2029.35%2025.35%2029.45%2025.55'%20fill='%230468B1'/%3e%3cpath%20d='M17.23%2027.23L17.18%2026.92C17.3091%2024.4589%2018.1383%2022.0859%2019.57%2020.08C19.8751%2019.6308%2020.2345%2019.221%2020.64%2018.86C20.12%2018.37%2019.58%2017.81%2019.04%2017.27L19%2017.05C16.7613%2019.4594%2015.3313%2022.5081%2014.91%2025.77C14.82%2026.25%2014.91%2026.77%2014.79%2027.23C15.6089%2027.17%2016.4311%2027.17%2017.25%2027.23'%20fill='%230468B1'/%3e%3cpath%20d='M38.83%2036.77C38.5251%2037.1655%2038.1527%2037.504%2037.73%2037.77C37.21%2038.29%2036.37%2038.4%2036.1%2039.16C35.82%2039.41%2035.73%2039.81%2035.34%2039.95C35.19%2040.34%2034.78%2040.31%2034.55%2040.59C33.88%2041.19%2033.45%2040.21%2032.85%2040.09L31.62%2040.31C31.2096%2040.3799%2030.7904%2040.3799%2030.38%2040.31C30.44%2041.1456%2030.44%2041.9844%2030.38%2042.82L30.53%2042.72C34.2601%2042.5602%2037.8088%2041.0662%2040.53%2038.51L38.86%2037L38.83%2036.77Z'%20fill='%230468B1'/%3e%3cpath%20d='M30.34%2014.51C30.3422%2014.4408%2030.3668%2014.3741%2030.41%2014.32C30.52%2014.25%2030.62%2014.32%2030.66%2014.43C30.7%2014.54%2030.72%2014.73%2030.66%2014.8C30.75%2014.8%2030.8%2014.74%2030.89%2014.74C32.6485%2014.8782%2034.3553%2015.4005%2035.89%2016.27C36.2%2016.11%2036.6%2015.91%2036.89%2016.18C37.28%2016.04%2037.35%2016.51%2037.66%2016.57C37.8702%2016.6794%2038.0547%2016.8323%2038.2013%2017.0185C38.3478%2017.2047%2038.4531%2017.42%2038.51%2017.65C38.58%2017.79%2038.8%2017.89%2038.83%2018.04C39.1626%2017.5195%2039.5703%2017.0511%2040.04%2016.65L40.31%2016.53C37.9889%2014.3226%2035.0194%2012.9202%2031.84%2012.53C31.32%2012.4981%2030.8024%2012.4346%2030.29%2012.34C30.3605%2013.0716%2030.3605%2013.8084%2030.29%2014.54'%20fill='%230468B1'/%3e%3cpath%20d='M30.34%2017.94C30.6447%2017.8902%2030.9554%2017.8902%2031.26%2017.94C32.8122%2018.1487%2034.2873%2018.7435%2035.55%2019.67C35.3723%2019.5173%2035.2436%2019.3156%2035.18%2019.09C35.1952%2019.0812%2035.2125%2019.0766%2035.23%2019.0766C35.2476%2019.0766%2035.2648%2019.0812%2035.28%2019.09C35.28%2018.84%2035.03%2018.72%2034.99%2018.49C35.011%2018.4633%2035.0388%2018.4427%2035.0705%2018.4304C35.1021%2018.4181%2035.1365%2018.4145%2035.17%2018.42C35.4281%2018.6713%2035.6624%2018.9457%2035.87%2019.24C36.05%2019.17%2036.19%2019.24%2036.32%2019.38C36.45%2019.52%2036.41%2019.81%2036.58%2019.97C36.58%2020.44%2037.19%2020.7%2037.16%2021.17C37.16%2021.29%2037.3%2021.17%2037.35%2021.25L37.83%2021.84C37.8122%2021.8665%2037.8001%2021.8964%2037.7944%2021.9279C37.7888%2021.9593%2037.7898%2021.9916%2037.7973%2022.0226C37.8048%2022.0537%2037.8187%2022.0828%2037.8381%2022.1082C37.8575%2022.1336%2037.882%2022.1546%2037.91%2022.17C38.12%2022.27%2038.24%2022%2038.46%2022.04C38.68%2022.08%2038.41%2022.42%2038.46%2022.61C38.58%2022.61%2038.73%2022.52%2038.83%2022.61C38.93%2022.7%2038.68%2022.89%2038.61%2023.01C38.54%2023.13%2038.76%2023.14%2038.88%2023.18C38.9142%2023.1813%2038.9476%2023.1906%2038.9775%2023.2071C39.0075%2023.2236%2039.0332%2023.2468%2039.0526%2023.2749C39.072%2023.3031%2039.0846%2023.3354%2039.0894%2023.3692C39.0941%2023.4031%2039.0909%2023.4376%2039.08%2023.47C39.48%2023.88%2038.96%2024.33%2039.15%2024.77C39.1907%2024.9067%2039.1926%2025.052%2039.1555%2025.1898C39.1184%2025.3275%2039.0438%2025.4522%2038.94%2025.55C38.94%2025.9%2038.63%2026.12%2038.5%2026.41L38.09%2026.49C37.88%2026.71%2038.28%2026.97%2038.09%2027.11H38.99L38.89%2027.02C38.8271%2026.8397%2038.8043%2026.6479%2038.8233%2026.4578C38.8423%2026.2678%2038.9026%2026.0843%2039%2025.92C39.14%2025.64%2039.17%2025.29%2039.42%2025.05C39.48%2025.05%2039.58%2024.93%2039.63%2025.05C39.6582%2025.33%2039.6134%2025.6125%2039.5%2025.87C39.6986%2026.2728%2039.7817%2026.7228%2039.74%2027.17C40.53%2027.12%2041.31%2027.11%2042.08%2027.11L42%2027C41.9289%2025.5728%2041.5897%2024.1717%2041%2022.87C40.83%2022.87%2040.71%2023.01%2040.52%2022.96C40.4883%2022.9487%2040.4617%2022.9262%2040.4451%2022.8968C40.4286%2022.8674%2040.4232%2022.833%2040.43%2022.8C40.1563%2022.4499%2039.8624%2022.116%2039.55%2021.8C39.14%2021.8%2038.96%2021.37%2038.55%2021.32C38.14%2021.27%2038.45%2020.66%2037.98%2020.8C37.8571%2020.762%2037.7458%2020.6935%2037.6566%2020.6008C37.5674%2020.5081%2037.5032%2020.3943%2037.47%2020.27C37.4912%2020.0545%2037.4595%2019.8372%2037.3775%2019.6368C37.2956%2019.4363%2037.166%2019.259%2037%2019.12C36.71%2019.02%2036.59%2019.4%2036.3%2019.34C36.01%2019.28%2036.22%2019.05%2036.17%2018.92C36.12%2018.79%2035.98%2018.71%2036%2018.55C36.37%2018.05%2035.55%2018.06%2035.73%2017.55C35.73%2017.2%2035.32%2017.07%2035.14%2016.79C33.9151%2016.2222%2032.6096%2015.8478%2031.27%2015.68C30.9308%2015.6969%2030.5915%2015.6494%2030.27%2015.54L30.35%2015.69C30.35%2016.44%2030.35%2017.23%2030.35%2017.92'%20fill='%230468B1'/%3e%3cpath%20d='M39.0699%2018.76C39.2399%2018.76%2039.2899%2019%2039.3999%2019.12C39.9799%2019.43%2040.1299%2020.06%2040.6399%2020.41C40.9299%2021.01%2041.6399%2021.47%2041.6399%2022.16C42.3723%2023.7118%2042.7838%2025.3954%2042.8499%2027.11L42.7899%2027.21C42.8589%2027.2065%2042.9252%2027.1821%2042.9799%2027.14H45.2799C45.1299%2026.91%2045.1899%2026.59%2045.1499%2026.32C44.8159%2022.8313%2043.3313%2019.5527%2040.9299%2017C40.4349%2017.6016%2039.904%2018.1726%2039.3399%2018.71L39.0699%2018.76Z'%20fill='%230468B1'/%3e%3cpath%20d='M30.66%2014.13C30.73%2014%2030.91%2014.05%2031.01%2014.13L32.16%2013.63C32.3904%2013.6176%2032.6209%2013.6539%2032.8363%2013.7366C33.0517%2013.8193%2033.2472%2013.9466%2033.41%2014.11V14.17C33.2839%2014.302%2033.124%2014.397%2032.9477%2014.4446C32.7714%2014.4922%2032.5855%2014.4906%2032.41%2014.44C31.88%2014.54%2031.14%2014.84%2030.72%2014.3C30.72%2014.3%2030.66%2014.21%2030.72%2014.17'%20fill='white'/%3e%3cpath%20d='M37.5199%2015.58C37.5999%2015.5932%2037.675%2015.6269%2037.7381%2015.6777C37.8011%2015.7285%2037.85%2015.7947%2037.8799%2015.87C37.8799%2016.05%2038.0499%2016.2%2037.8799%2016.34C37.4499%2016.46%2037.4099%2015.97%2037.0799%2015.85C37.0548%2015.8178%2037.0365%2015.7807%2037.0262%2015.7412C37.0159%2015.7016%2037.0138%2015.6604%2037.0199%2015.62C37.1699%2015.44%2037.3099%2015.74%2037.4799%2015.62'%20fill='white'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='100%25'%20height='100%25'%20viewBox='0%200%2060%20123'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0.0314941%2062.2195V91.2957H29.1042V62.2195H0.0314941ZM21.721%2078.3312C21.721%2084.3024%2018.5598%2086.7154%2014.3764%2086.7154C10.3968%2086.7154%207.40417%2084.471%207.40417%2078.419V66.9683H9.94368V78.4892C9.94368%2082.8131%2011.8685%2084.6571%2014.4642%2084.6571C17.3128%2084.6571%2019.185%2082.7604%2019.185%2078.4892V66.9683H21.721V78.3312Z'%20fill='white'/%3e%3cpath%20d='M30.9097%2062.2195V91.2957H59.9824V62.2195H30.9097ZM52.7396%2086.4555H50.2036L44.0428%2076.5995C42.7038%2074.5201%2041.5001%2072.3566%2040.439%2070.1225L40.3512%2070.1506C40.4987%2072.6094%2040.5268%2074.9276%2040.5268%2078.1591V86.4555H38.1664V67.0386H40.9307L47.1232%2076.8735C48.4207%2078.8982%2049.5756%2081.0108%2050.5795%2083.196L50.6673%2083.1679C50.439%2080.5721%2050.3828%2078.2153%2050.3828%2075.2121V67.0632H52.7396V86.4555Z'%20fill='white'/%3e%3cpath%20d='M0%2093.0941V122.167H29.0762V93.0941H0ZM20.418%20114.608C18.5704%20116.424%2015.5743%20117.393%2011.8054%20117.393C10.2801%20117.417%208.75481%20117.342%207.2392%20117.169V98.0712C9.01234%2097.805%2010.8027%2097.67%2012.5957%2097.6673C16.196%2097.6673%2018.7601%2098.4752%2020.4566%20100.059C22.2129%20101.647%2023.2209%20103.923%2023.2209%20107.06C23.2209%20110.196%2022.1988%20112.824%2020.418%20114.608Z'%20fill='white'/%3e%3cpath%20d='M12.2935%20115.384C11.4475%20115.413%2010.6005%20115.373%209.76099%20115.265V99.9153C10.7285%2099.7303%2011.7124%2099.6444%2012.6974%2099.6589C17.9942%2099.6589%2020.5899%20102.511%2020.5583%20107.144C20.5583%20112.388%2017.6465%20115.412%2012.2935%20115.384Z'%20fill='white'/%3e%3cpath%20d='M12.2935%20115.384C11.4475%20115.413%2010.6005%20115.373%209.76099%20115.265V99.9153C10.7285%2099.7303%2011.7124%2099.6444%2012.6974%2099.6589C17.9942%2099.6589%2020.5899%20102.511%2020.5583%20107.144C20.5583%20112.388%2017.6465%20115.412%2012.2935%20115.384Z'%20fill='white'/%3e%3cpath%20d='M30.9097%2093.0624V122.139H59.9824V93.0624H30.9097ZM50.5408%20107.53C49.2202%20108.935%2047.067%20109.638%2044.6083%20109.638C43.9307%20109.66%2043.2528%20109.602%2042.5886%20109.466V117.242H40.0842V98.0993C41.6733%2097.815%2043.2856%2097.6798%2044.8998%2097.6954C47.3796%2097.6954%2049.1921%2098.2749%2050.3441%2099.3146C50.9108%2099.8238%2051.3591%20100.451%2051.6577%20101.152C51.9562%20101.852%2052.0977%20102.61%2052.0723%20103.372C52.0723%20105.121%2051.5524%20106.505%2050.5408%20107.53Z'%20fill='white'/%3e%3cpath%20d='M44.6716%20107.748C43.9741%20107.764%2043.2772%20107.697%2042.5957%20107.548V100.003C43.3755%2099.8612%2044.1671%2099.7942%2044.9596%2099.8029C47.7274%2099.8029%2049.5258%20101.036%2049.5258%20103.635C49.5258%20106.234%2047.7239%20107.748%2044.6716%20107.748Z'%20fill='white'/%3e%3cpath%20d='M0.0314941%200.400024V60.3825H59.9999V0.400024H0.0314941ZM51.4751%2031.6294C50.6357%2032.8201%2049.6206%2033.9301%2048.8443%2035.1419C48.9321%2034.183%2049.0445%2032.9993%2048.6652%2032.0895C47.9574%2030.1197%2047.4858%2028.0728%2047.2602%2025.9919V25.17C47.7484%2027.3652%2049.9086%2028.8791%2049.7681%2031.3414C49.7703%2031.8926%2049.6885%2032.441%2049.5257%2032.9676L49.5608%2033.0098L49.6592%2032.8974C49.9788%2031.6926%2050.1369%2030.4176%2050.6357%2029.2901C51.3382%2027.6708%2052.2233%2026.034%2051.865%2024.0741C52.975%2026.3923%2052.6518%2029.4727%2051.4751%2031.6294ZM50.1439%2019.1882C50.8563%2020.2262%2051.2944%2021.4276%2051.4172%2022.6805C51.5401%2023.9335%2051.3437%2025.1971%2050.8464%2026.3537C50.461%2027.3038%2050.1909%2028.2967%2050.0421%2029.3112C49.9683%2029.1355%2049.9542%2028.8967%2049.891%2028.6965C49.329%2026.5468%2047.2918%2025.0119%2046.4523%2022.9817C46.1789%2022.3143%2045.973%2021.6212%2045.8376%2020.9128C46.7333%2022.5672%2048.9391%2023.4207%2049.5398%2025.2437C49.7856%2025.7074%2049.7716%2026.2975%2049.9191%2026.7787C49.9353%2026.7797%2049.9513%2026.7744%2049.9637%2026.7639C49.9762%2026.7535%2049.9841%2026.7386%2049.9859%2026.7225C49.7502%2024.8289%2049.7751%2022.912%2050.0596%2021.0252C50.0421%2020.0172%2049.9472%2019.0442%2049.3887%2018.268C49.74%2018.4752%2049.9016%2018.8756%2050.1439%2019.1882ZM49.1499%2018.8194C49.5222%2020.4984%2048.9813%2022.1352%2049.322%2023.8317C48.4088%2022.0333%2046.4664%2021.1868%2045.1351%2019.7467C44.4165%2018.8973%2043.9633%2017.8554%2043.832%2016.7506C44.5977%2018.5981%2046.6595%2019.0056%2047.8433%2020.5546C48.2402%2020.9058%2048.3701%2021.4116%2048.6265%2021.8191L48.6652%2021.7769C47.9837%2020.3228%2047.7554%2018.6859%2047.2883%2017.1369C47.0308%2016.4263%2046.5596%2015.8128%2045.9395%2015.3807C47.4779%2015.7109%2048.8232%2017.3336%2049.1499%2018.8194ZM44.9911%2014.9557C46.1678%2016.0094%2046.6947%2017.3617%2047.0389%2018.7702L47.2286%2019.2163C45.5086%2017.9683%2044.0394%2016.4073%2042.8977%2014.615L41.57%2013.2697C42.7396%2013.7755%2043.9936%2014.0706%2044.9911%2014.9662V14.9557ZM22.7607%2013.6631C25.0257%2012.5541%2027.5097%2011.9649%2030.0315%2011.9385C33.0469%2011.9565%2035.9964%2012.8225%2038.543%2014.4374C41.0896%2016.0523%2043.1306%2018.351%2044.4326%2021.0709C46.15%2024.5616%2046.525%2028.5617%2045.4864%2032.3108C44.3905%2036.5855%2040.7937%2040.9093%2036.6069%2042.6691C31.8931%2044.9803%2025.1913%2044.4007%2020.9904%2041.387C15.1492%2037.3863%2012.7572%2030.4984%2014.5239%2023.6772C15.5988%2019.6273%2018.8197%2015.5423%2022.7607%2013.6631ZM18.1383%2013.505C16.9651%2014.5342%2016.1572%2015.8549%2015.2791%2017.0562C14.4958%2018.0221%2013.4983%2018.6614%2012.6097%2019.4903C13.0909%2018.4998%2013.1084%2017.3161%2013.7863%2016.4063C14.7523%2014.7204%2016.5436%2014.1268%2018.1383%2013.505ZM11.7175%2017.0913C12.2471%2016.4048%2012.9876%2015.9112%2013.825%2015.6863C12.2479%2016.7716%2012.3462%2018.7211%2011.8439%2020.3438C11.6824%2020.9445%2011.4049%2021.4959%2011.2679%2022.1001L11.31%2022.1317C11.603%2021.4078%2012.0459%2020.7542%2012.6097%2020.2139C13.7372%2019.1601%2015.4196%2018.5279%2015.9535%2016.9929C15.9289%2019.1285%2014.1446%2020.804%2012.4411%2022.0052C11.7246%2022.5873%2011.1281%2023.3031%2010.6848%2024.1127C10.6462%2023.5788%2010.7691%2023.0344%2010.7305%2022.4583C10.5373%2020.6002%2010.3968%2018.4752%2011.7175%2017.0913ZM8.51411%2023.4629C8.46494%2021.5767%209.2447%2020.0347%2010.3511%2018.6297C10.3827%2018.6297%2010.4073%2018.5806%2010.446%2018.5876C9.23065%2020.4211%2010.2352%2022.7604%2010.186%2024.8609L10.0245%2027.0105C10.0455%2027.0105%2010.0455%2027.0913%2010.1053%2027.0632C10.1629%2026.8187%2010.2074%2026.5713%2010.2387%2026.322C10.5373%2024.5869%2012.0266%2023.3575%2013.3473%2022.1773C13.6281%2021.8871%2013.8553%2021.5494%2014.0182%2021.1798C13.8978%2022.0551%2013.6505%2022.9083%2013.284%2023.7123C12.2584%2025.6898%2010.3652%2027.3301%2010.021%2029.6132C9.85588%2027.446%208.35956%2025.7882%208.51411%2023.4629ZM7.59033%2026.1464C7.69321%2025.5448%207.86043%2024.9561%208.0891%2024.3902C7.60087%2026.884%209.27632%2028.6789%209.82778%2030.8461C10.0596%2031.6505%2010.1193%2032.5216%2010.446%2033.2838C10.4776%2033.2838%2010.5022%2033.2838%2010.5232%2033.2416C9.70133%2030.9585%2010.8885%2028.8264%2012.0758%2027.0245C12.3485%2026.526%2012.5495%2025.9916%2012.6729%2025.4369C12.7993%2026.4906%2012.5394%2027.6743%2012.3849%2028.7527C12.1003%2030.1261%2011.6824%2031.4292%2011.2925%2032.7639C11.0868%2033.6317%2011.0688%2034.5335%2011.2398%2035.4088L11.1204%2035.314C10.2458%2033.7088%208.52114%2032.4513%208.01534%2030.6951C7.51625%2029.2337%207.3706%2027.6749%207.59033%2026.1464ZM7.50954%2031.0217C7.70273%2033.6701%2010.5478%2035.0681%2011.8685%2037.2564C12.1507%2037.7314%2012.4853%2038.1732%2012.8661%2038.5735C12.7993%2038.2925%2012.5394%2038.0537%2012.4446%2037.7657C11.9847%2036.7934%2011.8105%2035.7105%2011.9423%2034.6431C12.0687%2033.2908%2012.6448%2032.0368%2012.4235%2030.6143C13.5791%2033.1152%2013.2278%2036.2342%2013.8741%2038.9424C14.0427%2039.5324%2014.387%2040.0593%2014.6118%2040.6283C12.2303%2039.0056%208.99181%2037.4671%207.93807%2034.4885C7.46388%2033.4664%207.41471%2032.1984%207.50954%2031.0217ZM8.93561%2037.0948C10.2598%2040.0909%2013.5826%2040.3473%2015.806%2042.1773C16.1951%2042.535%2016.634%2042.8344%2017.1091%2043.066L17.1302%2043.0414C16.5696%2042.5836%2016.0775%2042.0477%2015.669%2041.4503C14.3659%2039.6378%2014.8225%2037.0948%2013.846%2035.1278C14.7425%2036.1428%2015.4931%2037.2777%2016.0765%2038.4998C16.8773%2040.4668%2017.1794%2042.6866%2019.0269%2044.1759C17.0248%2043.5191%2014.689%2043.7053%2012.9258%2042.4724C11.015%2041.3062%209.29388%2039.3006%208.93561%2037.0948ZM12.3462%2042.7147C14.4713%2045.1383%2017.9662%2044.3305%2020.7761%2044.9592C21.1626%2045.0725%2021.5643%2045.1246%2021.9669%2045.1138C21.6156%2044.896%2021.159%2044.9206%2020.7902%2044.7274C18.5703%2043.9441%2018.2437%2041.5416%2017.0354%2039.9188C18.5773%2040.9409%2019.8699%2042.3249%2021.296%2043.6596C22.3181%2044.5518%2023.5475%2044.9662%2024.8401%2045.2332C24.531%2045.3456%2024.1376%2045.3105%2023.7863%2045.4018C21.4646%2045.9778%2018.8689%2046.9121%2016.4101%2046.0691C14.6746%2045.5054%2013.2205%2044.2989%2012.3462%2042.6972V42.7147ZM41.2293%2048.3558C38.8302%2049.2514%2036.3294%2048.3171%2034.4572%2046.8946C33.7196%2046.4134%2033.0171%2045.7109%2032.0442%2045.7671C31.7088%2045.7491%2031.3726%2045.7811%2031.0466%2045.8619C32.9177%2046.7408%2034.6275%2047.9282%2036.1046%2049.3744C35.8209%2049.6751%2035.5144%2049.9534%2035.1878%2050.2068C33.702%2048.6016%2032.0266%2047.0456%2030.2001%2046.1534C29.8343%2046.2376%2029.486%2046.385%2029.171%2046.589C27.5928%2047.5572%2026.201%2048.8003%2025.0614%2050.2595L24.1025%2049.4692C25.568%2047.9697%2027.2891%2046.7434%2029.185%2045.8479C27.3655%2045.2753%2026.1748%2046.7997%2024.7909%2047.576C23.1822%2048.6965%2020.8604%2049.2233%2018.9075%2048.4506C17.8125%2048.0726%2016.8411%2047.4035%2016.0975%2046.5152C17.636%2047.569%2019.9191%2047.6849%2021.6578%2047C24.0006%2045.9813%2026.4277%2044.6958%2029.2482%2045.3105C29.6908%2045.3105%2030.1228%2045.7601%2030.5373%2045.3842C32.6552%2044.8811%2034.8836%2045.1619%2036.8106%2046.1745L38.6722%2046.9157C40.4003%2047.5549%2042.6378%2047.3828%2044.1165%2046.322C43.3595%2047.2487%2042.3599%2047.9467%2041.2293%2048.3382V48.3558ZM43.8004%2045.897C41.1063%2046.9121%2038.3982%2045.6687%2035.8165%2045.2507L35.3213%2045.1875C36.5542%2044.91%2037.7519%2044.5412%2038.7354%2043.6526C40.179%2042.2476%2041.4681%2040.8426%2043.0733%2039.7362C41.8826%2041.2641%2041.7596%2043.4348%2039.7927%2044.4183C39.3009%2044.7379%2038.6897%2044.7941%2038.184%2045.0365C38.904%2045.0365%2039.5573%2044.7941%2040.2704%2044.7239C42.9082%2044.3129%2045.9254%2044.7239%2047.773%2042.4864C47.0846%2043.9968%2045.3705%2045.3105%2043.8004%2045.8619V45.897ZM45.2932%2043.1573C43.9233%2043.5261%2042.4516%2043.6455%2041.1134%2044.0987C43.3754%2042.1563%2043.2489%2039.1531%2044.7593%2036.8665C45.2034%2036.1931%2045.6841%2035.5447%2046.1994%2034.9241C45.2827%2036.7716%2045.6796%2039.1601%2044.6223%2040.9515C44.1895%2041.6882%2043.639%2042.3491%2042.9925%2042.9079C43.2033%2042.9079%2043.3894%2042.7183%2043.5686%2042.5953C45.2897%2040.8883%2047.5271%2040.4071%2049.3817%2039.0161C50.1446%2038.443%2050.749%2037.6851%2051.1379%2036.8138C50.7797%2039.6132%2047.9592%2042.2722%2045.3108%2043.1222L45.2932%2043.1573ZM48.6933%2038.3206C47.6395%2039.0231%2046.5507%2039.6624%2045.532%2040.4527V40.3614C47.1021%2037.7551%2046.3329%2034.1794%2047.2883%2031.3203L47.6395%2030.3649C47.4393%2032.1422%2048.2121%2033.6561%2048.1629%2035.4439C48.1038%2036.4817%2047.7652%2037.4842%2047.1829%2038.3452H47.2777C48.047%2037.3407%2048.6476%2036.2694%2049.5433%2035.3069C50.9307%2033.9652%2052.3533%2032.5918%2052.5324%2030.7407C53.0136%2033.8036%2051.282%2036.5258%2048.6933%2038.2855V38.3206Z'%20fill='white'/%3e%3cpath%20d='M29.568%2025.9708C29.4475%2026.1336%2029.2956%2026.2706%2029.1212%2026.3738C28.9469%2026.4769%2028.7537%2026.5441%2028.5529%2026.5714C28.4511%2026.6979%2028.4757%2026.9789%2028.2263%2026.9543C28.149%2027.1299%2027.875%2027.2353%2027.9804%2027.4917C27.9035%2027.793%2027.8576%2028.1013%2027.8434%2028.412C27.3692%2028.7035%2027.4922%2028.0186%2027.2709%2027.8745L27.1866%2028.008C27.0953%2028.0326%2027.0285%2027.9764%2026.9618%2027.9132C26.9237%2027.8899%2026.88%2027.8776%2026.8353%2027.8776C26.7907%2027.8776%2026.747%2027.8899%2026.7089%2027.9132C26.6035%2028.0888%2026.4455%2028.2328%2026.4841%2028.4717C26.4384%2028.6157%2026.1961%2028.5665%2026.2277%2028.7175C26.4998%2028.7062%2026.7702%2028.6697%2027.0356%2028.6087C27.2217%2028.6543%2027.3868%2028.5208%2027.5554%2028.5138C27.6151%2028.5454%2027.6959%2028.6087%2027.6678%2028.7035H27.7486C27.8099%2028.6635%2027.8559%2028.6038%2027.8788%2028.5342C27.9018%2028.4646%2027.9005%2028.3893%2027.875%2028.3206C27.875%2028.152%2028.0788%2028.152%2028.1876%2028.1029C28.2895%2028.152%2028.2263%2028.2539%2028.2438%2028.3382C28.5951%2028.4717%2028.156%2028.7351%2028.1069%2028.9248C28.0577%2029.1144%2028.1069%2029.4235%2027.8048%2029.3744C27.7766%2029.3662%2027.7526%2029.3473%2027.7382%2029.3216C27.7238%2029.296%2027.7199%2029.2658%2027.7275%2029.2374H27.6854C27.6867%2029.3101%2027.7076%2029.3811%2027.7459%2029.443C27.7843%2029.5048%2027.8386%2029.5551%2027.9031%2029.5886C28.1209%2029.406%2028.1314%2029.0934%2028.4546%2029.0547C28.6197%2028.8791%2028.3808%2028.6087%2028.6302%2028.4646C29.0447%2028.4646%2029.4873%2028.2785%2029.8174%2028.6122C29.7928%2028.7597%2029.7402%2028.8264%2029.8596%2028.9423C29.7997%2029.1386%2029.7018%2029.3212%2029.5716%2029.4797C29.5906%2029.5326%2029.5928%2029.5901%2029.5777%2029.6442C29.5626%2029.6984%2029.531%2029.7465%2029.4873%2029.7818C29.3784%2030.2701%2028.8199%2030.0382%2028.4932%2030.2068C28.9988%2030.5791%2029.625%2030.7494%2030.2495%2030.6845C30.6007%2030.6845%2030.4427%2030.2455%2030.6007%2030.0558C30.7096%2029.4973%2031.2259%2029.8802%2031.5385%2029.7256C31.6713%2029.4966%2031.7617%2029.2455%2031.8055%2028.9845C31.7106%2028.921%2031.6386%2028.8287%2031.6001%2028.7212C31.5615%2028.6137%2031.5584%2028.4967%2031.5912%2028.3874C31.4578%2028.2012%2031.4718%2027.864%2031.1732%2027.8324C31.1573%2027.8013%2031.1522%2027.7659%2031.1585%2027.7316C31.1649%2027.6973%2031.1824%2027.666%2031.2084%2027.6427C31.2084%2027.4671%2031.3735%2027.4074%2031.4226%2027.2915C31.24%2027.1721%2031.2892%2026.9086%2031.3032%2026.7541C30.9906%2026.8454%2030.952%2026.4344%2030.7272%2026.3466C30.671%2026.164%2030.4708%2026.1324%2030.3127%2026.1008C29.9298%2026.2834%2029.8666%2025.8127%2029.5786%2025.7003C29.547%2025.6125%2029.4802%2025.4861%2029.5786%2025.4158C29.6769%2025.3456%2029.9298%2025.4158%2030.0809%2025.3877L29.9439%2025.3175C29.8174%2025.1735%2029.5399%2025.2613%2029.3714%2025.3175C29.5364%2025.4826%2029.4697%2025.7706%2029.568%2025.9708Z'%20fill='white'/%3e%3cpath%20d='M30.376%2018.3628C30.6821%2018.3172%2030.994%2018.3279%2031.2963%2018.3944C32.8504%2018.6013%2034.3276%2019.1956%2035.592%2020.1225C35.4209%2019.9692%2035.2987%2019.7688%2035.2408%2019.5465C35.2515%2019.5322%2035.2663%2019.5215%2035.2832%2019.5159C35.3002%2019.5102%2035.3185%2019.5099%2035.3356%2019.5149C35.3356%2019.2655%2035.0897%2019.1391%2035.0511%2018.9143C35.0693%2018.8856%2035.096%2018.8634%2035.1276%2018.8507C35.1591%2018.8381%2035.1938%2018.8358%2035.2267%2018.844C35.4874%2019.0942%2035.7227%2019.3695%2035.9292%2019.6659C36.1048%2019.5957%2036.2488%2019.7081%2036.3788%2019.7994C36.6071%2019.9364%2036.4666%2020.2349%2036.6422%2020.393C36.6739%2020.8637%2037.2464%2021.1306%2037.2183%2021.6013C37.2183%2021.7102%2037.3588%2021.6259%2037.408%2021.6821L37.8857%2022.2687C37.8693%2022.2955%2037.8585%2022.3254%2037.8539%2022.3565C37.8493%2022.3876%2037.851%2022.4193%2037.8588%2022.4498C37.8667%2022.4802%2037.8806%2022.5088%2037.8997%2022.5338C37.9187%2022.5588%2037.9426%2022.5797%2037.97%2022.5953C38.1842%2022.6972%2038.3212%2022.4232%2038.5179%2022.4618C38.827%2022.6375%2038.4687%2022.8447%2038.5003%2023.0379C38.6198%2023.0379%2038.7743%2022.9431%2038.8691%2023.0625C38.9078%2023.2381%2038.7251%2023.3505%2038.6514%2023.4629C38.6514%2023.6385%2038.7954%2023.5999%2038.9253%2023.6385C38.9586%2023.6412%2038.9908%2023.6513%2039.0196%2023.6682C39.0484%2023.685%2039.073%2023.7081%2039.0915%2023.7358C39.1101%2023.7635%2039.1222%2023.7951%2039.1269%2023.8281C39.1315%2023.8611%2039.1287%2023.8948%2039.1185%2023.9265C39.5154%2024.341%2038.9991%2024.7906%2039.1888%2025.2297C39.2315%2025.3662%2039.2344%2025.5121%2039.1971%2025.6503C39.1597%2025.7884%2039.0837%2025.913%2038.978%2026.0094C38.978%2026.3607%2038.6654%2026.5785%2038.5425%2026.8735L38.135%2026.9543C37.9173%2027.1685%2038.3212%2027.4355%2038.0999%2027.569L38.9991%2027.5865L38.9008%2027.4917C38.8343%2027.3051%2038.8105%2027.1061%2038.8312%2026.9091C38.8519%2026.7122%2038.9164%2026.5223%2039.0202%2026.3537C39.1046%2026.0365%2039.2489%2025.7385%2039.4452%2025.4755C39.5014%2025.4755%2039.6033%2025.3561%2039.6524%2025.4755C39.6819%2025.758%2039.6346%2026.0432%2039.5154%2026.301C39.7754%2026.6522%2039.7402%2027.1475%2039.7613%2027.6006C40.5551%2027.5514%2041.3314%2027.5374%2042.1076%2027.5479L42.0374%2027.3933C41.9481%2025.9603%2041.5907%2024.5568%2040.9837%2023.2557C40.8186%2023.2557%2040.6956%2023.3997%2040.506%2023.3505C40.4746%2023.3384%2040.4481%2023.3165%2040.4303%2023.2879C40.4126%2023.2594%2040.4046%2023.2259%2040.4076%2023.1924C40.1349%2022.8506%2039.8429%2022.5246%2039.533%2022.216C39.1185%2022.2546%2038.9359%2021.7839%2038.5706%2021.7348C38.2439%2021.6013%2038.4687%2021.0709%2037.9945%2021.2184C37.8728%2021.1777%2037.7631%2021.1072%2037.6754%2021.0133C37.5877%2020.9195%2037.5247%2020.8053%2037.4923%2020.681C37.5137%2020.4694%2037.4837%2020.2558%2037.4048%2020.0582C37.3259%2019.8607%2037.2005%2019.6851%2037.0392%2019.5465C36.7476%2019.4411%2036.6317%2019.824%2036.3367%2019.7608C36.1786%2019.68%2036.2488%2019.4727%2036.1997%2019.3393C36.1505%2019.2058%2036.01%2019.132%2036.0346%2018.9705C36.4104%2018.4752%2035.578%2018.4857%2035.7606%2017.9975C35.7114%2017.6463%2035.3532%2017.5058%2035.1705%2017.2283C33.9478%2016.6605%2032.6444%2016.2861%2031.3068%2016.1183C30.9556%2016.0692%2030.6429%2016.1429%2030.3479%2015.9849L30.4252%2016.1324C30.3971%2016.877%2030.4498%2017.6673%2030.376%2018.3628Z'%20fill='white'/%3e%3cpath%20d='M29.2975%2037.8465C27.4222%2037.7393%2025.6238%2037.0644%2024.1412%2035.9111C24.1903%2036.1008%2024.4432%2036.2273%2024.373%2036.4626C24.236%2036.6839%2023.9585%2036.6874%2023.7372%2036.6839C23.2771%2036.6066%2022.9434%2036.9543%2022.5149%2037C22.1215%2037.1194%2021.9845%2036.6488%2021.6262%2036.6839C23.8461%2038.6192%2026.3856%2039.8451%2029.3537%2039.9961L29.5785%2040.1472L29.4801%2039.8767V37.7692L29.2975%2037.8465Z'%20fill='white'/%3e%3cpath%20d='M18.0649%2028.6262L18.237%2030.0944C18.3073%2030.6634%2018.5566%2031.2078%2018.5391%2031.7663C18.6269%2031.6469%2018.5742%2031.4151%2018.7885%2031.3835C18.7007%2031.2078%2018.9571%2031.0533%2018.8131%2030.9023C18.8267%2030.5059%2018.9899%2030.1295%2019.2697%2029.8485C19.6771%2029.8485%2019.7052%2029.2935%2020.1162%2029.2725C20.3234%2029.2725%2020.4499%2029.5429%2020.5412%2029.6237C20.4377%2029.4513%2020.3695%2029.2601%2020.3405%2029.0611C20.3116%2028.8621%2020.3225%2028.6593%2020.3726%2028.4646L20.197%2028.5454C19.4533%2028.575%2018.7084%2028.5597%2017.9666%2028.4997L18.0649%2028.6262Z'%20fill='white'/%3e%3cpath%20d='M21.1836%2019.7607V19.9118L20.3196%2021.0112C18.9146%2022.9501%2018.2332%2025.198%2018.033%2027.6427L20.2247%2027.6006L20.432%2027.6813C20.3442%2027.6251%2020.3652%2027.5303%2020.3371%2027.4495C20.4654%2025.2141%2021.3654%2023.0925%2022.8837%2021.4467C22.2746%2020.9291%2021.7063%2020.3655%2021.1836%2019.7607Z'%20fill='white'/%3e%3cpath%20d='M33.3125%2033.6666C33.6005%2033.8177%2033.9482%2033.8282%2034.2538%2033.9546C34.5243%2034.0249%2034.7105%2034.3621%2035.0476%2034.2567C35.3392%2034.0987%2035.8169%2034.3551%2036.0101%2034.0495C35.9784%2033.7544%2036.2349%2033.5367%2036.3613%2033.2838L36.4526%2033.2592C36.6142%2033.4278%2036.6072%2033.6772%2036.6774%2033.8598C36.9022%2033.621%2037.0779%2033.354%2037.2781%2033.1081C37.8209%2032.3709%2038.2168%2031.5362%2038.4442%2030.6494C38.2308%2030.6585%2038.0195%2030.6951%2037.8155%2030.7583C37.5836%2030.7583%2037.3027%2030.8812%2037.113%2030.7197C37.0427%2030.66%2036.99%2030.7548%2037.0041%2030.818C36.9198%2030.9374%2036.839%2031.0885%2036.6528%2031.0323C36.4667%2030.9761%2036.5088%2030.818%2036.4597%2030.7056C36.4615%2030.7892%2036.4484%2030.8725%2036.421%2030.9515C36.2815%2031.1149%2036.1634%2031.2955%2036.0698%2031.4889C35.9012%2031.6715%2035.6272%2031.6083%2035.4516%2031.7594C35.42%2032.1422%2034.995%2032.0614%2034.7491%2032.1844C34.7491%2032.23%2034.7877%2032.2406%2034.8123%2032.2792C34.872%2032.3042%2034.9379%2032.3098%2035.0009%2032.2953C35.0639%2032.2808%2035.1208%2032.2469%2035.1636%2032.1984C35.5148%2032.2897%2035.427%2031.8472%2035.6237%2031.7207C35.7888%2031.6961%2035.9503%2031.5521%2036.1225%2031.6645C36.2867%2031.8997%2036.3557%2032.1884%2036.3156%2032.4724C36.1225%2032.6621%2036.2208%2032.9747%2036.0838%2033.1995C36.1154%2033.4629%2035.7923%2033.5823%2035.8344%2033.8458C35.7751%2033.8983%2035.7052%2033.9376%2035.6296%2033.9612C35.5539%2033.9848%2035.4741%2033.9922%2035.3954%2033.9827C34.7532%2033.7398%2034.0808%2033.5861%2033.3968%2033.5261C33.3691%2033.5368%2033.3458%2033.5565%2033.3305%2033.5819C33.3153%2033.6074%2033.3089%2033.6372%2033.3125%2033.6666Z'%20fill='white'/%3e%3cpath%20d='M21.6263%2029.7327C21.6474%2029.5887%2021.4331%2029.55%2021.4577%2029.406C21.6087%2029.111%2021.4577%2028.6333%2021.8581%2028.5033C21.7325%2028.5483%2021.5986%2028.5653%2021.4657%2028.5531C21.3329%2028.541%2021.2043%2028.5%2021.0889%2028.433L21.2083%2028.6262C21.2083%2029.1531%2021.4331%2029.6554%2021.3207%2030.1928C21.4261%2030.0382%2021.4261%2029.831%2021.6263%2029.7327Z'%20fill='white'/%3e%3cpath%20d='M33.291%2030.7372C33.2899%2030.8748%2033.3358%2031.0086%2033.421%2031.1166C33.7301%2031.0709%2033.6001%2031.5029%2033.8846%2031.4678C34.0462%2031.4186%2033.8846%2031.2817%2033.9373%2031.1798C33.8952%2030.9374%2033.6598%2030.9129%2033.4983%2030.7688C33.4807%2030.7232%2033.4983%2030.681%2033.5369%2030.6424C33.421%2030.5757%2033.3683%2030.6494%2033.291%2030.7372Z'%20fill='white'/%3e%3cpath%20d='M36.6631%2038.0783L36.7755%2037.9273C37.2759%2037.5698%2037.7458%2037.1715%2038.1805%2036.7366H38.2402C38.1419%2036.705%2038.0189%2036.7998%2037.9101%2036.7366C37.6817%2036.6312%2037.6466%2036.431%2037.6466%2036.1992L36.6631%2035.1841L36.6104%2035.033C36.5278%2035.2079%2036.4079%2035.3626%2036.2592%2035.4861C36.2592%2035.6161%2036.2205%2035.8093%2036.3751%2035.8936C36.6912%2035.999%2037.1057%2036.2097%2037.1794%2036.5961C37.0495%2036.9473%2036.3786%2037.267%2036.7931%2037.6498C36.9336%2037.8465%2036.6104%2037.9168%2036.6631%2038.0783Z'%20fill='white'/%3e%3cpath%20d='M25.4444%2029.8486C25.3671%2029.8064%2025.3566%2029.8169%2025.2934%2029.8872C25.2545%2029.8996%2025.2128%2029.8996%2025.1739%2029.8872C25.1739%2029.4341%2024.6646%2029.7045%2024.4714%2029.4657C24.6962%2029.8802%2024.8227%2030.3508%2025.044%2030.7653C25.1915%2031.1165%2025.5076%2031.4221%2025.6551%2031.7839C25.8575%2031.4948%2026.0882%2031.2266%2026.3436%2030.9831C26.352%2030.9284%2026.3495%2030.8727%2026.3363%2030.819C26.323%2030.7654%2026.2992%2030.7149%2026.2663%2030.6705C26.1961%2030.5019%2026.2663%2030.263%2026.1328%2030.119C25.9291%2030.1928%2026.2066%2030.4%2026.1328%2030.5229C26.1143%2030.533%2026.0935%2030.5382%2026.0724%2030.5381C26.0513%2030.5381%2026.0306%2030.5327%2026.0121%2030.5226C25.9936%2030.5125%2025.9779%2030.4979%2025.9665%2030.4802C25.9551%2030.4624%2025.9482%2030.4421%2025.9467%2030.4211C25.8568%2030.4014%2025.7736%2030.3586%2025.7052%2030.2971C25.6369%2030.2355%2025.5857%2030.1572%2025.5568%2030.0698C25.6762%2029.968%2025.4865%2029.9258%2025.4444%2029.8486Z'%20fill='white'/%3e%3cpath%20d='M39.1147%2019.1882C39.2869%2019.2268%2039.336%2019.427%2039.466%2019.5394C40.0455%2019.8485%2040.1966%2020.4738%2040.7094%2020.825C40.9974%2021.4291%2041.6613%2021.8787%2041.6859%2022.5812C42.4223%2024.1363%2042.8346%2025.8249%2042.8977%2027.5443L42.838%2027.6392C42.9066%2027.6365%2042.9723%2027.6105%2043.0241%2027.5654L45.3318%2027.5268C45.1808%2027.302%2045.2405%2026.9753%2045.2019%2026.7049C44.8963%2023.1467%2043.3789%2020.1014%2040.9869%2017.4179C40.4934%2018.0213%2039.9619%2018.5927%2039.3957%2019.1285L39.1147%2019.1882Z'%20fill='white'/%3e%3cpath%20d='M30.952%2025.1068C31.1347%2025.2122%2031.2365%2025.0225%2031.3946%2024.9803C31.6055%2025.0352%2031.7922%2025.1588%2031.925%2025.3316C32.069%2025.3948%2032.206%2025.3105%2032.3324%2025.2613C32.4238%2024.5975%2033.2527%2024.6958%2033.4986%2024.0706L33.3475%2024.1303C33.2843%2024.039%2033.1262%2024.0776%2033.1333%2023.9371C33.2671%2023.7783%2033.4305%2023.6471%2033.6145%2023.5508C32.9144%2023.0824%2032.1452%2022.7268%2031.3349%2022.497C31.0118%2022.4512%2030.6916%2022.3867%2030.376%2022.3038C30.527%2022.7605%2030.376%2023.4278%2030.4884%2023.9582L31.0609%2024.1479C31.233%2023.8704%2031.5983%2023.7966%2031.7634%2023.5508C31.8688%2023.4629%2031.9882%2023.5508%2032.069%2023.6456C32.0831%2023.8719%2032.0471%2024.0986%2031.9636%2024.3095C31.7494%2024.7415%2031.2365%2024.7942%2030.952%2025.1068Z'%20fill='white'/%3e%3cpath%20d='M39.4662%2030.4773C39.1654%2031.5638%2038.691%2032.5945%2038.0612%2033.5296C37.7978%2033.8809%2037.5379%2034.3305%2037.2007%2034.5061L37.9348%2035.1454C37.9734%2035.1067%2037.9348%2035.04%2037.9629%2034.9873C37.991%2034.9346%2038.0086%2034.7766%2038.128%2034.7941C38.4792%2034.7941%2038.4792%2035.1454%2038.6865%2035.3526C38.6443%2035.6582%2038.9113%2035.897%2038.8199%2036.178C40.7683%2034.1052%2041.9075%2031.4016%2042.0303%2028.5595L42.1357%2028.433C41.4332%2028.5033%2040.6605%2028.4541%2039.9193%2028.4646L39.7402%2028.4084C39.7461%2028.8907%2039.7097%2029.3726%2039.6313%2029.8486L39.8912%2030.1331C39.923%2030.1891%2039.935%2030.2541%2039.9255%2030.3178C39.9159%2030.3814%2039.8853%2030.4401%2039.8385%2030.4843C39.7846%2030.5249%2039.7187%2030.5463%2039.6512%2030.545C39.5837%2030.5437%2039.5186%2030.5199%2039.4662%2030.4773Z'%20fill='white'/%3e%3cpath%20d='M37.4746%2028.3558L37.7205%2028.5982C37.9664%2028.7703%2037.8013%2029.1251%2038.0717%2029.2726C38.3422%2029.4201%2038.4932%2029.7924%2038.6337%2030.0629C38.6672%2029.989%2038.6908%2029.9111%2038.704%2029.8311C38.8129%2029.392%2038.7953%2028.8968%2038.9323%2028.4647C38.4443%2028.5352%2037.9467%2028.4981%2037.4746%2028.3558Z'%20fill='white'/%3e%3cpath%20d='M32.926%2019.7186C32.0873%2019.4544%2031.2251%2019.2721%2030.3513%2019.1741L30.4321%2019.3498V21.5134L30.6429%2021.4748C31.9443%2021.6164%2033.1804%2022.1188%2034.2115%2022.9255L34.2677%2023.0941C34.619%2022.5918%2035.1704%2022.1597%2035.5919%2021.6891L35.9923%2021.4537L35.7991%2021.3765C34.9491%2020.6552%2033.9757%2020.0936%2032.926%2019.7186Z'%20fill='white'/%3e%3cpath%20d='M37.5414%2023.4067C37.2368%2022.9052%2036.8838%2022.4346%2036.4877%2022.0017L36.4491%2022.1001C35.7114%2022.8623%2034.9036%2023.6561%2034.2046%2024.4394C34.2497%2024.5374%2034.3247%2024.6186%2034.4189%2024.6712C34.4505%2024.478%2034.5558%2024.3199%2034.5734%2024.1127C34.7596%2023.8493%2035.0511%2024.0144%2035.297%2024.0706C35.6798%2023.9827%2036.0416%2024.1584%2036.4315%2024.1513C36.723%2024.2954%2036.7476%2024.6642%2037.0075%2024.8082C37.0813%2024.91%2037.0251%2025.0295%2036.9268%2025.1102C37.0075%2025.7109%2037.278%2024.9522%2037.6011%2025.1102C37.7276%2025.1594%2037.8857%2025.1419%2037.9805%2025.2788C38.0297%2025.5282%2038.3317%2025.4826%2038.3317%2025.7179C38.3072%2025.8373%2038.1807%2025.8689%2038.0964%2025.9357C38.1737%2026.1745%2037.854%2026.3256%2037.9629%2026.582C38.4266%2026.6698%2038.4441%2026.1324%2038.6654%2025.8795C38.5769%2025.4581%2038.4266%2025.0521%2038.2193%2024.6747C37.9594%2024.6185%2037.7978%2024.3235%2037.5168%2024.2497C37.0181%2024.0284%2037.6082%2023.7088%2037.5414%2023.4067Z'%20fill='white'/%3e%3cpath%20d='M32.3918%2032.3635C32.5814%2032.1668%2032.9854%2032.1738%2033.0029%2031.8893C32.7219%2031.8436%2032.5814%2031.9982%2032.3918%2032.1492C32.3637%2032.2089%2032.2794%2032.3213%2032.3918%2032.3635Z'%20fill='white'/%3e%3cpath%20d='M29.5047%2040.955L29.5855%2040.8356L29.3397%2040.8988C26.286%2040.7558%2023.3886%2039.5074%2021.1872%2037.3864L21.1626%2037.4812L19.5188%2039.1356C21.8995%2041.2809%2024.8644%2042.6698%2028.0365%2043.1257C28.5691%2043.1565%2029.0993%2043.2198%2029.6242%2043.3154L29.5047%2043.1257V40.955Z'%20fill='white'/%3e%3cpath%20d='M30.9272%2033.8598C31.138%2033.8984%2030.9904%2034.1232%2031.1415%2034.211C31.4681%2034.1057%2031.721%2034.4885%2031.981%2034.2497C31.981%2033.8738%2032.3919%2033.8984%2032.6202%2033.8106C32.9715%2033.5929%2033.3895%2033.3083%2033.3508%2032.8271L33.2911%2032.7569C33.0417%2032.7569%2032.9153%2032.9466%2032.7361%2033.1081C32.557%2033.2697%2032.3849%2032.8693%2032.2128%2032.9571C32.2128%2032.9957%2032.262%2033.0133%2032.2936%2033.0309C32.321%2033.0632%2032.3361%2033.1043%2032.3361%2033.1468C32.3361%2033.1892%2032.321%2033.2303%2032.2936%2033.2627C32.0231%2033.5086%2031.8967%2033.1397%2031.6367%2033.1643V33.2627C31.6367%2033.3189%2031.6367%2033.4032%2031.5454%2033.3716C31.3803%2033.1081%2031.0537%2033.2065%2030.8921%2032.9747C30.7937%2032.9185%2030.6954%2032.9747%2030.6251%2033.0555C30.5654%2033.1749%2030.3125%2033.0555%2030.3758%2033.2486C30.1756%2033.3189%2030.1545%2033.5296%2030.0245%2033.6631C29.7751%2033.6174%2029.6733%2033.8984%2029.4309%2033.8949C29.4555%2033.9406%2029.4309%2034.0214%2029.5012%2034.0284C29.6474%2034.09%2029.808%2034.1095%2029.9648%2034.0846C30.2072%2033.6842%2030.59%2034.0038%2030.9272%2033.8598Z'%20fill='white'/%3e%3cpath%20d='M20.6673%2036.8068C20.3897%2036.5805%2020.1398%2036.3223%2019.9226%2036.0375C19.7824%2036.0009%2019.6508%2035.9366%2019.5356%2035.8486C19.4204%2035.7605%2019.3239%2035.6504%2019.2517%2035.5247C19.1709%2035.4334%2019.2517%2035.2753%2019.1569%2035.2121L19.0585%2035.3315C18.7776%2035.465%2018.6792%2035.177%2018.486%2035.0611C18.2366%2034.9241%2018.3596%2034.4534%2018.0189%2034.5377C17.8959%2034.5377%2017.8538%2034.3867%2017.773%2034.3094C17.4639%2034.3375%2017.3831%2033.9968%2017.2145%2033.8282C17.1829%2033.902%2017.2145%2033.9968%2017.1197%2034.0425C16.8%2034.1162%2016.6876%2033.7263%2016.4699%2033.5613C16.4137%2033.5858%2016.375%2033.6561%2016.2942%2033.6385C16.197%2033.5539%2016.1176%2033.4506%2016.0609%2033.3347C16.0042%2033.2189%2015.9713%2033.0929%2015.9641%2032.9641C15.7006%2032.6656%2015.8236%2032.1984%2015.8692%2031.8366C15.9184%2031.7418%2016.0589%2031.6891%2016.0308%2031.5662C16.1046%2031.3976%2016.2802%2031.3835%2016.4488%2031.3765C16.5141%2031.4117%2016.5688%2031.4638%2016.6068%2031.5275C16.7122%2031.4608%2016.9581%2031.5275%2016.8562%2031.3027C17.0092%2031.1931%2017.1887%2031.1264%2017.3761%2031.1096C17.4758%2031.2863%2017.5935%2031.4523%2017.7273%2031.6048L17.6184%2031.4327C17.4117%2030.6368%2017.2823%2029.8228%2017.2321%2029.0021C17.2321%2028.9529%2017.1302%2028.9283%2017.1899%2028.8826V28.9072C17.1858%2028.757%2017.1941%2028.6066%2017.2145%2028.4576L17.0002%2028.5384H14.7769C14.8917%2030.9975%2015.5605%2033.3989%2016.7333%2035.5634C17.3023%2036.6171%2018.1383%2037.5655%2018.8408%2038.549L20.4319%2036.9016L20.6673%2036.8068Z'%20fill='white'/%3e%3cpath%20d='M27.9204%2034.8574C28.0871%2034.6826%2028.293%2034.5502%2028.5211%2034.471C27.8186%2034.615%2027.1863%2034.1197%2026.5787%2033.8212C26.2274%2033.5683%2025.7884%2033.3575%2025.5811%2032.9747C25.1034%2033.5669%2024.5706%2034.1126%2023.99%2034.6045C24.2359%2034.6045%2024.3728%2034.8925%2024.5836%2035.0154C25.7813%2036.013%2027.2741%2036.4942%2028.6616%2036.8384L28.2822%2036.6593C27.9942%2036.3326%2027.5797%2035.9568%2027.5797%2035.4931C27.8572%2035.3913%2027.8256%2035.0751%2027.9204%2034.8574Z'%20fill='white'/%3e%3cpath%20d='M30.4145%2040.0909C31.0046%2039.8907%2031.693%2039.9223%2032.3323%2039.8169C32.1964%2039.7864%2032.0735%2039.7139%2031.9811%2039.6097C31.6052%2039.5851%2031.4296%2039.1952%2031.3102%2038.9072C31.254%2038.6965%2031.4015%2038.5173%2031.4893%2038.3347C31.3277%2038.0045%2030.8325%2038.2434%2030.5445%2038.1274C30.4637%2038.0607%2030.4075%2037.9659%2030.2986%2037.9483L30.4145%2038.1274C30.4545%2038.7813%2030.4545%2039.437%2030.4145%2040.0909Z'%20fill='white'/%3e%3cpath%20d='M38.8723%2037.2177C38.644%2037.6533%2038.1698%2037.9202%2037.7764%2038.2715C37.2566%2038.7913%2036.4101%2038.9002%2036.1431%2039.6554C35.8657%2039.9083%2035.7708%2040.3087%2035.3809%2040.4527C35.2334%2040.8355%2034.826%2040.8039%2034.5941%2041.0884C33.9233%2041.6891%2033.4912%2040.7091%2032.8836%2040.5897L31.6612%2040.8039C31.2362%2040.8039%2030.8147%2040.955%2030.4143%2040.8039C30.474%2041.64%2030.474%2042.4793%2030.4143%2043.3153L30.5653%2043.217C34.3067%2043.0661%2037.8677%2041.5693%2040.5934%2039.002L38.911%2037.3968L38.8723%2037.2177Z'%20fill='white'/%3e%3cpath%20d='M42.9365%2028.4647L42.803%2028.3663L42.8803%2028.5841C42.7663%2031.1512%2041.8827%2033.6246%2040.3443%2035.6828C40.0796%2036.0666%2039.7641%2036.4128%2039.4065%2036.712C40.0454%2037.2496%2040.6409%2037.8368%2041.1873%2038.4682L41.2505%2038.3488C43.6862%2035.6652%2045.0978%2032.209%2045.2372%2028.5876L45.3355%2028.3979L45.2161%2028.4541L42.9365%2028.4647Z'%20fill='white'/%3e%3cpath%20d='M17.2531%2027.6674L17.211%2027.3548C17.344%2024.8902%2018.1761%2022.5144%2019.61%2020.5054C19.9612%2020.098%2020.2317%2019.5887%2020.6813%2019.2831C20.1614%2018.7949%2019.6275%2018.2294%2019.0726%2017.692L19.0164%2017.4742C16.7691%2019.883%2015.3331%2022.9355%2014.9103%2026.2027C14.8225%2026.6839%2014.8822%2027.1791%2014.7874%2027.6674C15.6079%2027.6006%2016.4325%2027.6006%2017.2531%2027.6674Z'%20fill='white'/%3e%3cpath%20d='M23.4705%2022.0615C22.3754%2023.3222%2021.6337%2024.8504%2021.3209%2026.4907C21.2331%2026.8735%2021.2822%2027.3196%2021.1277%2027.6814C21.4524%2027.5829%2021.7969%2027.5684%2022.1287%2027.6393C21.9496%2027.5444%2022.0971%2027.3126%2021.9918%2027.1862C21.9672%2026.9895%2021.9356%2026.7401%2022.1287%2026.6101C22.1077%2026.2835%2022.4554%2026.1149%2022.48%2025.8198C22.5678%2025.4686%2022.9507%2025.7074%2023.1333%2025.5318C23.2527%2025.4686%2023.1333%2025.3562%2023.1333%2025.2683C23.2914%2025.0506%2023.5407%2025.0611%2023.7304%2024.9417C23.8632%2024.7159%2024.0473%2024.5246%2024.2678%2024.3832C24.7455%2024.3832%2024.7561%2023.7264%2025.2092%2023.7088C24.5949%2023.1975%2024.0142%2022.6473%2023.4705%2022.0615Z'%20fill='white'/%3e%3cpath%20d='M26.2661%2032.3389C27.0935%2033.03%2028.0901%2033.4883%2029.1534%2033.6666C29.206%2033.4523%2029.1217%2033.1819%2029.2341%2032.9957C29.3465%2032.8096%2029.5257%2032.8271%2029.6873%2032.8587C29.7101%2032.8554%2029.7317%2032.8464%2029.75%2032.8325C29.7684%2032.8187%2029.783%2032.8004%2029.7925%2032.7794C29.802%2032.7584%2029.806%2032.7353%2029.8041%2032.7124C29.8023%2032.6894%2029.7947%2032.6672%2029.7821%2032.648C29.5538%2032.6058%2029.6556%2032.3494%2029.5749%2032.2054C29.5749%2032.1246%2029.7189%2032.1422%2029.6873%2032.0368C29.5257%2031.9069%2029.7645%2031.7664%2029.6311%2031.6294C29.6697%2031.6048%2029.7013%2031.5556%2029.7399%2031.5275C29.2552%2031.7312%2028.7424%2031.4362%2028.3139%2031.2465C28.1031%2031.1236%2027.8011%2031.0077%2027.7554%2030.7477C27.3971%2031.3097%2026.7438%2031.819%2026.2661%2032.3389Z'%20fill='white'/%3e%3cpath%20d='M22.4554%2028.4998L22.3922%2028.9248C22.2974%2029.1742%2021.9848%2028.988%2021.8407%2029.1566C21.6967%2029.3252%2021.8407%2029.4833%2021.9356%2029.6097C21.7143%2030.1226%2022.4414%2030.2841%2022.4308%2030.7443C22.6556%2031.0358%2022.3992%2031.4468%2022.7224%2031.7067C22.7926%2032.2265%2022.6486%2032.929%2023.1052%2033.3365L23.1825%2033.8352C23.2738%2034.1865%2022.7715%2034.0881%2022.8313%2034.3937C22.9296%2034.3481%2022.9507%2034.4745%2022.9577%2034.5061C23.5921%2033.7572%2024.2775%2033.0531%2025.009%2032.3986L24.7069%2032.0931C24.1276%2031.2644%2023.7105%2030.3336%2023.4776%2029.3498L23.2457%2029.2339C23.1963%2029.466%2023.1587%2029.7005%2023.1333%2029.9364L23.0525%2030.0312C22.8875%2030.0312%2022.7821%2029.8872%2022.6381%2029.7994C22.6029%2029.7116%2022.5151%2029.5676%2022.6381%2029.4973C22.7066%2029.4924%2022.7747%2029.511%2022.8313%2029.55C22.9015%2029.4657%2022.8699%2029.3393%2022.912%2029.2269C22.9331%2029.0337%2022.7645%2028.8756%2022.8839%2028.6895C23.035%2028.6895%2023.1474%2028.8581%2023.2106%2028.9599C23.3652%2029.0091%2023.4846%2028.8827%2023.611%2028.8265C23.611%2028.6895%2023.8007%2028.5068%2023.611%2028.426C23.6936%2028.1177%2023.6936%2027.793%2023.611%2027.4847C23.5267%2027.2213%2023.2317%2027.2669%2023.0139%2027.2915C22.3676%2027.4987%2023.1193%2027.994%2022.9612%2028.3839C22.8629%2028.6262%2022.624%2028.4085%2022.4554%2028.4998Z'%20fill='white'/%3e%3cpath%20d='M26.9791%2030.0804C26.9197%2030.2831%2026.8055%2030.4654%2026.6489%2030.6073H26.6946C26.8843%2030.4703%2027.0248%2030.2244%2027.2671%2030.2103L26.9791%2030.0804Z'%20fill='white'/%3e%3cpath%20d='M29.5046%2022.3916C28.213%2022.5041%2027.0038%2023.0732%2026.094%2023.9968H26.2661C26.4628%2024.19%2026.7719%2024.1478%2026.9159%2024.4078C26.9897%2024.5483%2026.7789%2024.5342%2026.7895%2024.6536C26.8316%2024.6852%2026.8843%2024.6923%2026.9159%2024.7485C27.0669%2024.8012%2027.0353%2024.6607%2027.095%2024.5974C27.2917%2024.4007%2027.3269%2024.7906%2027.5165%2024.7906C27.5474%2024.7657%2027.5829%2024.7473%2027.6211%2024.7364C27.6592%2024.7256%2027.6991%2024.7225%2027.7385%2024.7274C27.7778%2024.7323%2027.8158%2024.7451%2027.8501%2024.765C27.8843%2024.785%2027.9143%2024.8116%2027.938%2024.8433C28.068%2024.7309%2028.342%2024.8433%2028.3806%2024.629C28.63%2024.3656%2028.493%2023.9582%2028.8583%2023.7896C28.9883%2023.8633%2028.8583%2023.9827%2028.9005%2024.0951C29.1463%2024.197%2029.4273%2023.8844%2029.624%2024.1373C29.4848%2023.5665%2029.4444%2022.9761%2029.5046%2022.3916Z'%20fill='white'/%3e%3cpath%20d='M21.2823%2018.6824L21.3209%2018.57C23.5488%2016.4831%2026.4546%2015.2696%2029.505%2015.1524L29.4347%2014.9627L29.4066%2013.0414L29.4734%2012.8201C26.3634%2012.9463%2023.3629%2014.0036%2020.8608%2015.8549C20.3726%2016.2062%2019.9405%2016.7014%2019.4558%2016.9929H19.5261C20.1622%2017.5009%2020.7501%2018.0665%2021.2823%2018.6824Z'%20fill='white'/%3e%3cpath%20d='M29.4696%2016.0621C27.2369%2016.1767%2025.0778%2016.8981%2023.2245%2018.1485C22.7257%2018.4997%2022.2726%2018.9388%2021.7598%2019.2444C22.3534%2019.6167%2022.8416%2020.2419%2023.3755%2020.7372L23.4317%2020.8882C24.7669%2019.6402%2026.43%2018.7983%2028.2262%2018.4611C28.6448%2018.3625%2029.0761%2018.3293%2029.5048%2018.3627C29.4387%2017.5976%2029.4269%2016.8288%2029.4696%2016.0621Z'%20fill='white'/%3e%3cpath%20d='M29.3783%2019.2269C27.4075%2019.3916%2025.5403%2020.1789%2024.0464%2021.4748C24.654%2021.8963%2025.195%2022.5742%2025.7499%2023.0625C25.793%2023.0062%2025.8329%2022.9476%2025.8694%2022.8868C26.5962%2022.3183%2027.423%2021.8906%2028.307%2021.6259C28.7039%2021.5872%2029.0973%2021.3976%2029.5118%2021.4889C29.4275%2020.7055%2029.4275%2019.9154%2029.5118%2019.132L29.3783%2019.2269Z'%20fill='white'/%3e%3cpath%20d='M23.8285%2035.5036L23.7969%2035.4474L23.8285%2035.5458V35.5036Z'%20fill='white'/%3e%3cpath%20d='M31.9073%2012.9114C31.3852%2012.8807%2030.8655%2012.8173%2030.3513%2012.7217C30.432%2013.4532%2030.4402%2014.1909%2030.3759%2014.9241C30.3786%2014.8554%2030.4046%2014.7898%2030.4497%2014.7379C30.5621%2014.6712%2030.6534%2014.7695%2030.6991%2014.8468C30.7447%2014.9241%2030.7588%2015.1524%2030.6639%2015.198C30.7588%2015.198%2030.8079%2015.1418%2030.8922%2015.1418C32.6681%2015.2708%2034.3927%2015.7953%2035.9397%2016.6768V16.6381C36.2488%2016.4836%2036.6422%2016.2869%2036.9688%2016.5574C37.3517%2016.4133%2037.4254%2016.884%2037.7345%2016.9402C37.945%2017.0488%2038.1298%2017.2012%2038.2764%2017.3872C38.4231%2017.5733%2038.5281%2017.7885%2038.5846%2018.0185C38.6513%2018.1626%2038.8796%2018.2644%2038.9112%2018.419C39.1676%2017.8745%2039.6769%2017.4882%2040.1195%2017.014L40.39%2016.9016C38.0647%2014.6946%2035.0902%2013.2954%2031.9073%2012.9114ZM33.4458%2014.5447C33.3137%2014.6848%2033.1446%2014.7845%2032.9581%2014.8324C32.7716%2014.8803%2032.5753%2014.8743%2032.3921%2014.8152C31.8652%2014.9205%2031.1276%2015.2226%2030.7061%2014.6817C30.685%2014.6395%2030.6393%2014.5833%2030.685%2014.5447C30.7553%2014.4183%2030.9379%2014.4639%2031.0362%2014.5026L32.1883%2014.0108C32.6485%2014.0495%2033.1613%2014.1057%2033.4353%2014.4885L33.4458%2014.5447ZM37.9664%2016.7646C37.5343%2016.877%2037.4957%2016.3923%2037.162%2016.2693C37.1147%2016.2019%2037.0946%2016.1191%2037.1058%2016.0375C37.2568%2015.8549%2037.4009%2016.1604%2037.5659%2015.9989C37.6438%2016.014%2037.7167%2016.0482%2037.778%2016.0985C37.8393%2016.1487%2037.8871%2016.2135%2037.9172%2016.2869C37.8856%2016.466%2038.0963%2016.6206%2037.9664%2016.7646Z'%20fill='white'/%3e%3c/svg%3e\"","import UndpLogoBlue from '../icons/undp-logo-blue.svg';\r\nimport UndpLogoWhite from '../icons/undp-logo-white.svg';\r\n\r\ninterface Props {\r\n  variant?: 'blue' | 'white';\r\n  width?: number;\r\n  className?: string;\r\n}\r\n\r\nfunction UNDPLogo(props: Props) {\r\n  const { variant, className, width } = props;\r\n  switch (variant) {\r\n    case 'blue':\r\n      return (\r\n        <img width={`${width || 60}px`} src={UndpLogoBlue} alt='UNDP Logo' className={className} />\r\n      );\r\n    case 'white':\r\n      return (\r\n        <img width={`${width || 60}px`} src={UndpLogoWhite} alt='UNDP Logo' className={className} />\r\n      );\r\n    default:\r\n      return (\r\n        <img width={`${width || 60}px`} src={UndpLogoBlue} alt='UNDP Logo' className={className} />\r\n      );\r\n  }\r\n}\r\n\r\nexport { UNDPLogo };\r\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n  const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n  const Slot2 = React.forwardRef((props, forwardedRef) => {\n    const { children, ...slotProps } = props;\n    const childrenArray = React.Children.toArray(children);\n    const slottable = childrenArray.find(isSlottable);\n    if (slottable) {\n      const newElement = slottable.props.children;\n      const newChildren = childrenArray.map((child) => {\n        if (child === slottable) {\n          if (React.Children.count(newElement) > 1) return React.Children.only(null);\n          return React.isValidElement(newElement) ? newElement.props.children : null;\n        } else {\n          return child;\n        }\n      });\n      return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n    }\n    return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n  });\n  Slot2.displayName = `${ownerName}.Slot`;\n  return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n  const SlotClone = React.forwardRef((props, forwardedRef) => {\n    const { children, ...slotProps } = props;\n    if (React.isValidElement(children)) {\n      const childrenRef = getElementRef(children);\n      const props2 = mergeProps(slotProps, children.props);\n      if (children.type !== React.Fragment) {\n        props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n      }\n      return React.cloneElement(children, props2);\n    }\n    return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n  });\n  SlotClone.displayName = `${ownerName}.SlotClone`;\n  return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n  const Slottable2 = ({ children }) => {\n    return /* @__PURE__ */ jsx(Fragment2, { children });\n  };\n  Slottable2.displayName = `${ownerName}.Slottable`;\n  Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n  return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n  return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n  const overrideProps = { ...childProps };\n  for (const propName in childProps) {\n    const slotPropValue = slotProps[propName];\n    const childPropValue = childProps[propName];\n    const isHandler = /^on[A-Z]/.test(propName);\n    if (isHandler) {\n      if (slotPropValue && childPropValue) {\n        overrideProps[propName] = (...args) => {\n          const result = childPropValue(...args);\n          slotPropValue(...args);\n          return result;\n        };\n      } else if (slotPropValue) {\n        overrideProps[propName] = slotPropValue;\n      }\n    } else if (propName === \"style\") {\n      overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n    } else if (propName === \"className\") {\n      overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n    }\n  }\n  return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n  let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\nexport {\n  Slot as Root,\n  Slot,\n  Slottable,\n  createSlot,\n  createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n  \"a\",\n  \"button\",\n  \"div\",\n  \"form\",\n  \"h2\",\n  \"h3\",\n  \"img\",\n  \"input\",\n  \"label\",\n  \"li\",\n  \"nav\",\n  \"ol\",\n  \"p\",\n  \"select\",\n  \"span\",\n  \"svg\",\n  \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n  const Slot = createSlot(`Primitive.${node}`);\n  const Node = React.forwardRef((props, forwardedRef) => {\n    const { asChild, ...primitiveProps } = props;\n    const Comp = asChild ? Slot : node;\n    if (typeof window !== \"undefined\") {\n      window[Symbol.for(\"radix-ui\")] = true;\n    }\n    return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n  });\n  Node.displayName = `Primitive.${node}`;\n  return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n  if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n  Primitive,\n  Root,\n  dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n  // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n  position: \"absolute\",\n  border: 0,\n  width: 1,\n  height: 1,\n  padding: 0,\n  margin: -1,\n  overflow: \"hidden\",\n  clip: \"rect(0, 0, 0, 0)\",\n  whiteSpace: \"nowrap\",\n  wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n  (props, forwardedRef) => {\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...props,\n        ref: forwardedRef,\n        style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n      }\n    );\n  }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n  Root,\n  VISUALLY_HIDDEN_STYLES,\n  VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n  const {\n    __scopeDialog,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = true\n  } = props;\n  const triggerRef = React.useRef(null);\n  const contentRef = React.useRef(null);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: DIALOG_NAME\n  });\n  return /* @__PURE__ */ jsx(\n    DialogProvider,\n    {\n      scope: __scopeDialog,\n      triggerRef,\n      contentRef,\n      contentId: useId(),\n      titleId: useId(),\n      descriptionId: useId(),\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      modal,\n      children\n    }\n  );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...triggerProps } = props;\n    const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n    const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-haspopup\": \"dialog\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.contentId,\n        \"data-state\": getState(context.open),\n        ...triggerProps,\n        ref: composedTriggerRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n  }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar DialogPortal = (props) => {\n  const { __scopeDialog, forceMount, children, container } = props;\n  const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n    const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n    const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n    return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n  }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...overlayProps } = props;\n    const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n    return (\n      // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n      // ie. when `Overlay` and `Content` are siblings\n      /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          \"data-state\": getState(context.open),\n          ...overlayProps,\n          ref: forwardedRef,\n          style: { pointerEvents: \"auto\", ...overlayProps.style }\n        }\n      ) })\n    );\n  }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n  }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n    React.useEffect(() => {\n      const content = contentRef.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      DialogContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: true,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          event.preventDefault();\n          context.triggerRef.current?.focus();\n        }),\n        onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n          const originalEvent = event.detail.originalEvent;\n          const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n          const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n          if (isRightClick) event.preventDefault();\n        }),\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault()\n        )\n      }\n    );\n  }\n);\nvar DialogContentNonModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    const hasInteractedOutsideRef = React.useRef(false);\n    const hasPointerDownOutsideRef = React.useRef(false);\n    return /* @__PURE__ */ jsx(\n      DialogContentImpl,\n      {\n        ...props,\n        ref: forwardedRef,\n        trapFocus: false,\n        disableOutsidePointerEvents: false,\n        onCloseAutoFocus: (event) => {\n          props.onCloseAutoFocus?.(event);\n          if (!event.defaultPrevented) {\n            if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n            event.preventDefault();\n          }\n          hasInteractedOutsideRef.current = false;\n          hasPointerDownOutsideRef.current = false;\n        },\n        onInteractOutside: (event) => {\n          props.onInteractOutside?.(event);\n          if (!event.defaultPrevented) {\n            hasInteractedOutsideRef.current = true;\n            if (event.detail.originalEvent.type === \"pointerdown\") {\n              hasPointerDownOutsideRef.current = true;\n            }\n          }\n          const target = event.target;\n          const targetIsTrigger = context.triggerRef.current?.contains(target);\n          if (targetIsTrigger) event.preventDefault();\n          if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n            event.preventDefault();\n          }\n        }\n      }\n    );\n  }\n);\nvar DialogContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n    const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef);\n    useFocusGuards();\n    return /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ jsx(\n        FocusScope,\n        {\n          asChild: true,\n          loop: true,\n          trapped: trapFocus,\n          onMountAutoFocus: onOpenAutoFocus,\n          onUnmountAutoFocus: onCloseAutoFocus,\n          children: /* @__PURE__ */ jsx(\n            DismissableLayer,\n            {\n              role: \"dialog\",\n              id: context.contentId,\n              \"aria-describedby\": context.descriptionId,\n              \"aria-labelledby\": context.titleId,\n              \"data-state\": getState(context.open),\n              ...contentProps,\n              ref: composedRefs,\n              onDismiss: () => context.onOpenChange(false)\n            }\n          )\n        }\n      ),\n      /* @__PURE__ */ jsxs(Fragment, { children: [\n        /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n        /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n      ] })\n    ] });\n  }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...titleProps } = props;\n    const context = useDialogContext(TITLE_NAME, __scopeDialog);\n    return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n  }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...descriptionProps } = props;\n    const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n    return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n  }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...closeProps } = props;\n    const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        ...closeProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n      }\n    );\n  }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n  contentName: CONTENT_NAME,\n  titleName: TITLE_NAME,\n  docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n  const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n  const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n  React.useEffect(() => {\n    if (titleId) {\n      const hasTitle = document.getElementById(titleId);\n      if (!hasTitle) console.error(MESSAGE);\n    }\n  }, [MESSAGE, titleId]);\n  return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n  const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n  const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n  React.useEffect(() => {\n    const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n    if (descriptionId && describedById) {\n      const hasDescription = document.getElementById(descriptionId);\n      if (!hasDescription) console.warn(MESSAGE);\n    }\n  }, [MESSAGE, contentRef, descriptionId]);\n  return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n  Close,\n  Content,\n  Description,\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n  Overlay,\n  Portal,\n  Root,\n  Title,\n  Trigger,\n  WarningProvider,\n  createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst Dialog = DialogPrimitive.Root;\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger;\r\n\r\nconst DialogPortal = DialogPrimitive.Portal;\r\n\r\nconst DialogClose = DialogPrimitive.Close;\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n  React.ComponentRef<typeof DialogPrimitive.Overlay>,\r\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n  <DialogPrimitive.Overlay\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'fixed inset-0 z-50 backdrop-blur-[18px] bg-[#f7f7f7]/[.9] dark:bg-[#55606E]/[.9] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\r\n\r\nconst DialogContent = React.forwardRef<\r\n  React.ComponentRef<typeof DialogPrimitive.Content>,\r\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\r\n    onOpenChange?: (open: boolean) => void;\r\n  }\r\n>(({ className, children, onOpenChange, ...props }, ref) => (\r\n  <DialogPortal>\r\n    <DialogOverlay onClick={() => onOpenChange?.(false)} />\r\n    <DialogPrimitive.Content\r\n      {...props}\r\n      ref={ref}\r\n      className={cn(\r\n        'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg max-h-[90vh] overflow-auto translate-x-[-50%] translate-y-[-50%] gap-4 border border-primary-gray-200 bg-primary-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </DialogPrimitive.Content>\r\n  </DialogPortal>\r\n));\r\nDialogContent.displayName = DialogPrimitive.Content.displayName;\r\n\r\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n  return (\r\n    <div {...props} className={cn('flex flex-col gap-1.5 text-center sm:text-left', className)} />\r\n  );\r\n}\r\nDialogHeader.displayName = 'DialogHeader';\r\n\r\nfunction DialogFooter({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n  return (\r\n    <div {...props} className={className}>\r\n      {children}\r\n    </div>\r\n  );\r\n}\r\nDialogFooter.displayName = 'DialogFooter';\r\n\r\nconst DialogTitle = React.forwardRef<\r\n  React.ComponentRef<typeof DialogPrimitive.Title>,\r\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n  <DialogPrimitive.Title\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'mb-0 p-0 text-[1.563rem] md:text-[2.188rem] font-normal leading-[1.15] text-primary-black dark:text-primary-white',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\r\n\r\nconst DialogDescription = React.forwardRef<\r\n  React.ComponentRef<typeof DialogPrimitive.Description>,\r\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n  <DialogPrimitive.Description\r\n    {...props}\r\n    ref={ref}\r\n    className={cn('text-sm text-primary-gray-600 dark:text-primary-gray-300 m-0', className)}\r\n  />\r\n));\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\r\n\r\nexport {\r\n  Dialog,\r\n  DialogPortal,\r\n  DialogOverlay,\r\n  DialogTrigger,\r\n  DialogClose,\r\n  DialogContent,\r\n  DialogHeader,\r\n  DialogFooter,\r\n  DialogTitle,\r\n  DialogDescription,\r\n};\r\n","import React from 'react';\r\nimport { X } from 'lucide-react';\r\nimport { VisuallyHidden } from '@radix-ui/react-visually-hidden';\r\n\r\nimport {\r\n  Dialog,\r\n  DialogContent,\r\n  DialogDescription,\r\n  DialogHeader,\r\n  DialogTitle,\r\n  DialogFooter,\r\n} from '@/components/ui/dialog';\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface ModalProps {\r\n  title?: string;\r\n  description?: string;\r\n  children?: React.ReactNode;\r\n  footer?: React.ReactNode;\r\n  open?: boolean;\r\n  onClose?: () => void;\r\n  className?: string;\r\n  showCloseButton?: boolean;\r\n  titleClassName?: string;\r\n  footerClassName?: string;\r\n  descriptionClassName?: string;\r\n}\r\n\r\nfunction Modal(props: ModalProps) {\r\n  const {\r\n    title,\r\n    description,\r\n    children,\r\n    footer,\r\n    open,\r\n    onClose,\r\n    className,\r\n    titleClassName,\r\n    footerClassName,\r\n    descriptionClassName,\r\n    showCloseButton = true,\r\n  } = props;\r\n  const descriptionId = React.useId();\r\n  const titleId = React.useId();\r\n  return (\r\n    <Dialog\r\n      open={open}\r\n      onOpenChange={state => {\r\n        if (!state) onClose?.();\r\n      }}\r\n    >\r\n      <DialogContent\r\n        className={cn(\r\n          'rounded-none p-16 max-w-(--breakpoint-xl) undp-scrollbar',\r\n          'data-[state=open]:animate-in data-[state=closed]:animate-out',\r\n          'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\r\n          'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\r\n          'data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%]',\r\n          className,\r\n        )}\r\n        onOpenChange={state => {\r\n          if (!state) onClose?.();\r\n        }}\r\n        aria-describedby={description ? descriptionId : undefined}\r\n        aria-labelledby={title ? titleId : undefined}\r\n      >\r\n        {showCloseButton && (\r\n          <button\r\n            type='button'\r\n            onClick={() => {\r\n              onClose?.();\r\n            }}\r\n            className='absolute right-6 top-6 p-2 bg-primary-gray-200 dark:bg-primary-gray-600 rounded-full ring-offset-background transition-opacity hover:bg-primary-gray-300 dark:hover:bg-primary-gray-500 disabled:pointer-events-none data-[state=open]:bg-primary-gray-200 dark:data-[state=open]:bg-primary-gray-600 data-[state=open]:text-primary-gray-600'\r\n          >\r\n            <X className='h-6 w-6 stroke-primary-black dark:stroke-primary-gray-100' />\r\n          </button>\r\n        )}\r\n\r\n        {title || description ? (\r\n          <DialogHeader>\r\n            {title && (\r\n              <DialogTitle id={titleId} className={titleClassName}>\r\n                {title}\r\n              </DialogTitle>\r\n            )}\r\n            {description && (\r\n              <DialogDescription className={descriptionClassName} id={descriptionId}>\r\n                {description}\r\n              </DialogDescription>\r\n            )}\r\n          </DialogHeader>\r\n        ) : (\r\n          <VisuallyHidden>\r\n            <DialogTitle>This a modal</DialogTitle>\r\n          </VisuallyHidden>\r\n        )}\r\n\r\n        {children}\r\n\r\n        {footer && <DialogFooter className={footerClassName}>{footer}</DialogFooter>}\r\n      </DialogContent>\r\n    </Dialog>\r\n  );\r\n}\r\n\r\nexport { Modal };\r\n","/**\n * @typedef Options\n *   Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n *   Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n *   Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n *   Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n *   Comma-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  /** @type {Array<string>} */\n  const tokens = []\n  const input = String(value || '')\n  let index = input.indexOf(',')\n  let start = 0\n  /** @type {boolean} */\n  let end = false\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    const token = input.slice(start, index).trim()\n\n    if (token || !end) {\n      tokens.push(token)\n    }\n\n    start = index + 1\n    index = input.indexOf(',', start)\n  }\n\n  return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @param {Options} [options]\n *   Configuration for `stringify` (optional).\n * @returns {string}\n *   Comma-separated tokens.\n */\nexport function stringify(values, options) {\n  const settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n  return input\n    .join(\n      (settings.padRight ? ' ' : '') +\n        ',' +\n        (settings.padLeft === false ? '' : ' ')\n    )\n    .trim()\n}\n","/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n *   Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n *   Code point to check.\n * @returns {boolean}\n *   Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n  return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n *   Code point to check.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {boolean}\n *   Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n  const settings = options || emptyOptions\n  const re = settings.jsx ? contReJsx : contRe\n  return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n *   Identifier to check.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {boolean}\n *   Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n  const settings = options || emptyOptions\n  const re = settings.jsx ? nameReJsx : nameRe\n  return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n *   Thing to check (`Node` or `string`).\n * @returns {boolean}\n *   Whether the `value` is inter-element whitespace (`boolean`): consisting of\n *   zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n *   (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n *   whose `value` field is checked.\n */\nexport function whitespace(thing) {\n  return typeof thing === 'object'\n    ? thing.type === 'text'\n      ? empty(thing.value)\n      : false\n    : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n  return value.replace(re, '') === ''\n}\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n  /**\n   * @param {SchemaType['property']} property\n   *   Property.\n   * @param {SchemaType['normal']} normal\n   *   Normal.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Schema.\n   */\n  constructor(property, normal, space) {\n    this.normal = normal\n    this.property = property\n\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n *   Definitions.\n * @param {Space | undefined} [space]\n *   Space.\n * @returns {Schema}\n *   Schema.\n */\nexport function merge(definitions, space) {\n  /** @type {Record<string, Info>} */\n  const property = {}\n  /** @type {Record<string, string>} */\n  const normal = {}\n\n  for (const definition of definitions) {\n    Object.assign(property, definition.property)\n    Object.assign(normal, definition.normal)\n  }\n\n  return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n *   An attribute-like or property-like name.\n * @returns {string}\n *   Value that can be used to look up the properly cased property on a\n *   `Schema`.\n */\nexport function normalize(value) {\n  return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n  /**\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute) {\n    this.attribute = attribute\n    this.property = property\n  }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n  Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n  /**\n   * @constructor\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @param {number | null | undefined} [mask]\n   *   Mask.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & types[check]) === types[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n *   Key type.\n * @param {DefinedInfo} values\n *   Info.\n * @param {Key} key\n *   Key.\n * @param {DefinedInfo[Key]} value\n *   Value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction mark(values, key, value) {\n  if (value) {\n    values[key] = value\n  }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n *   Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n *   Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n *   Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n *   Property names to their types.\n * @property {Space | undefined} [space]\n *   Space.\n * @property {Transform} transform\n *   Transform a property name.\n */\n\n/**\n * @callback Transform\n *   Transform.\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n *   Definition.\n * @returns {Schema}\n *   Schema.\n */\nexport function create(definition) {\n  /** @type {Record<string, Info>} */\n  const properties = {}\n  /** @type {Record<string, string>} */\n  const normals = {}\n\n  for (const [property, value] of Object.entries(definition.properties)) {\n    const info = new DefinedInfo(\n      property,\n      definition.transform(definition.attributes || {}, property),\n      value,\n      definition.space\n    )\n\n    if (\n      definition.mustUseProperty &&\n      definition.mustUseProperty.includes(property)\n    ) {\n      info.mustUseProperty = true\n    }\n\n    properties[property] = info\n\n    normals[normalize(property)] = property\n    normals[normalize(info.attribute)] = property\n  }\n\n  return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  },\n  transform(_, property) {\n    return property === 'role'\n      ? property\n      : 'aria-' + property.slice(4).toLowerCase()\n  }\n})\n","/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} attribute\n *   Attribute.\n * @returns {string}\n *   Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n  booleanish,\n  boolean,\n  commaSeparated,\n  number,\n  overloadedBoolean,\n  spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    blocking: spaceSeparated,\n    capture: null,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    fetchPriority: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: overloadedBoolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inert: boolean,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeToggle: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onScrollEnd: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    popover: null,\n    popoverTarget: null,\n    popoverTargetAction: null,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shadowRootClonable: boolean,\n    shadowRootDelegatesFocus: boolean,\n    shadowRootMode: null,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n    writingSuggestions: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  },\n  space: 'html',\n  transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n  boolean,\n  commaOrSpaceSeparated,\n  commaSeparated,\n  number,\n  spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    transformOrigin: 'transform-origin',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    transformOrigin: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  },\n  space: 'svg',\n  transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  },\n  space: 'xlink',\n  transform(_, property) {\n    return 'xlink:' + property.slice(5).toLowerCase()\n  }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  properties: {xmlnsXLink: null, xmlns: null},\n  space: 'xmlns',\n  transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n  properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n  space: 'xml',\n  transform(_, property) {\n    return 'xml:' + property.slice(3).toLowerCase()\n  }\n})\n","/**\n * Special cases for React (`Record<string, string>`).\n *\n * `hast` is close to `React` but differs in a couple of cases.\n * To get a React property from a hast property,\n * check if it is in `hastToReact`.\n * If it is, use the corresponding value;\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n  classId: 'classID',\n  dataType: 'datatype',\n  itemId: 'itemID',\n  strokeDashArray: 'strokeDasharray',\n  strokeDashOffset: 'strokeDashoffset',\n  strokeLineCap: 'strokeLinecap',\n  strokeLineJoin: 'strokeLinejoin',\n  strokeMiterLimit: 'strokeMiterlimit',\n  typeOf: 'typeof',\n  xLinkActuate: 'xlinkActuate',\n  xLinkArcRole: 'xlinkArcrole',\n  xLinkHref: 'xlinkHref',\n  xLinkRole: 'xlinkRole',\n  xLinkShow: 'xlinkShow',\n  xLinkTitle: 'xlinkTitle',\n  xLinkType: 'xlinkType',\n  xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n *   Schema;\n *   either the `html` or `svg` export.\n * @param {string} value\n *   An attribute-like or property-like name;\n *   it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n *   Info.\n */\nexport function find(schema, value) {\n  const normal = normalize(value)\n  let property = value\n  let Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Kebab.\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Camel.\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n *   Space-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  const input = String(value || '').trim()\n  return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @returns {string}\n *   Space-separated tokens.\n */\nexport function stringify(values) {\n  return values.join(' ').trim()\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n  if (typeof style !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (!style) return [];\n\n  options = options || {};\n\n  /**\n   * Positional.\n   */\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   *\n   * @param {String} str\n   */\n  function updatePosition(str) {\n    var lines = str.match(NEWLINE_REGEX);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(NEWLINE);\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   *\n   * @return {Function}\n   */\n  function position() {\n    var start = { line: lineno, column: column };\n    return function (node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node.\n   *\n   * @constructor\n   * @property {Object} start\n   * @property {Object} end\n   * @property {undefined|String} source\n   */\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string.\n   */\n  Position.prototype.content = style;\n\n  var errorsList = [];\n\n  /**\n   * Error `msg`.\n   *\n   * @param {String} msg\n   * @throws {Error}\n   */\n  function error(msg) {\n    var err = new Error(\n      options.source + ':' + lineno + ':' + column + ': ' + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = style;\n\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n\n  /**\n   * Match `re` and return captures.\n   *\n   * @param {RegExp} re\n   * @return {undefined|Array}\n   */\n  function match(re) {\n    var m = re.exec(style);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    style = style.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n  function whitespace() {\n    match(WHITESPACE_REGEX);\n  }\n\n  /**\n   * Parse comments.\n   *\n   * @param {Object[]} [rules]\n   * @return {Object[]}\n   */\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function comment() {\n    var pos = position();\n    if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n    var i = 2;\n    while (\n      EMPTY_STRING != style.charAt(i) &&\n      (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n    ) {\n      ++i;\n    }\n    i += 2;\n\n    if (EMPTY_STRING === style.charAt(i - 1)) {\n      return error('End of comment missing');\n    }\n\n    var str = style.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    style = style.slice(i);\n    column += 2;\n\n    return pos({\n      type: TYPE_COMMENT,\n      comment: str\n    });\n  }\n\n  /**\n   * Parse declaration.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(PROPERTY_REGEX);\n    if (!prop) return;\n    comment();\n\n    // :\n    if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(VALUE_REGEX);\n\n    var ret = pos({\n      type: TYPE_DECLARATION,\n      property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n      value: val\n        ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n        : EMPTY_STRING\n    });\n\n    // ;\n    match(SEMICOLON_REGEX);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   *\n   * @return {Object[]}\n   */\n  function declarations() {\n    var decls = [];\n\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    return decls;\n  }\n\n  whitespace();\n  return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n  return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = StyleToObject;\nvar inline_style_parser_1 = __importDefault(require(\"inline-style-parser\"));\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nfunction StyleToObject(style, iterator) {\n    var styleObject = null;\n    if (!style || typeof style !== 'string') {\n        return styleObject;\n    }\n    var declarations = (0, inline_style_parser_1.default)(style);\n    var hasIterator = typeof iterator === 'function';\n    declarations.forEach(function (declaration) {\n        if (declaration.type !== 'declaration') {\n            return;\n        }\n        var property = declaration.property, value = declaration.value;\n        if (hasIterator) {\n            iterator(property, value, declaration);\n        }\n        else if (value) {\n            styleObject = styleObject || {};\n            styleObject[property] = value;\n        }\n    });\n    return styleObject;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.camelCase = void 0;\nvar CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/;\nvar HYPHEN_REGEX = /-([a-z])/g;\nvar NO_HYPHEN_REGEX = /^[^-]+$/;\nvar VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;\nvar MS_VENDOR_PREFIX_REGEX = /^-(ms)-/;\n/**\n * Checks whether to skip camelCase.\n */\nvar skipCamelCase = function (property) {\n    return !property ||\n        NO_HYPHEN_REGEX.test(property) ||\n        CUSTOM_PROPERTY_REGEX.test(property);\n};\n/**\n * Replacer that capitalizes first character.\n */\nvar capitalize = function (match, character) {\n    return character.toUpperCase();\n};\n/**\n * Replacer that removes beginning hyphen of vendor prefix property.\n */\nvar trimHyphen = function (match, prefix) { return \"\".concat(prefix, \"-\"); };\n/**\n * CamelCases a CSS property.\n */\nvar camelCase = function (property, options) {\n    if (options === void 0) { options = {}; }\n    if (skipCamelCase(property)) {\n        return property;\n    }\n    property = property.toLowerCase();\n    if (options.reactCompat) {\n        // `-ms` vendor prefix should not be capitalized\n        property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen);\n    }\n    else {\n        // for non-React, remove first hyphen so vendor prefix is not capitalized\n        property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);\n    }\n    return property.replace(HYPHEN_REGEX, capitalize);\n};\nexports.camelCase = camelCase;\n//# sourceMappingURL=utilities.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar style_to_object_1 = __importDefault(require(\"style-to-object\"));\nvar utilities_1 = require(\"./utilities\");\n/**\n * Parses CSS inline style to JavaScript object (camelCased).\n */\nfunction StyleToJS(style, options) {\n    var output = {};\n    if (!style || typeof style !== 'string') {\n        return output;\n    }\n    (0, style_to_object_1.default)(style, function (property, value) {\n        // skip CSS comment\n        if (property && value) {\n            output[(0, utilities_1.camelCase)(property, options)] = value;\n        }\n    });\n    return output;\n}\nStyleToJS.default = StyleToJS;\nmodule.exports = StyleToJS;\n//# sourceMappingURL=index.js.map","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n *   Side.\n * @returns\n *   Getter.\n */\nfunction point(type) {\n  return point\n\n  /**\n   * Get the point info of `node` at a bound side.\n   *\n   * @param {Node | NodeLike | null | undefined} [node]\n   * @returns {Point | undefined}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    if (\n      typeof point.line === 'number' &&\n      point.line > 0 &&\n      typeof point.column === 'number' &&\n      point.column > 0\n    ) {\n      return {\n        line: point.line,\n        column: point.column,\n        offset:\n          typeof point.offset === 'number' && point.offset > -1\n            ? point.offset\n            : undefined\n      }\n    }\n  }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n *   Node.\n * @returns {Position | undefined}\n *   Position.\n */\nexport function position(node) {\n  const start = pointStart(node)\n  const end = pointEnd(node)\n\n  if (start && end) {\n    return {start, end}\n  }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n *   Node, position, or point.\n * @returns {string}\n *   Pretty printed positional info of a node (`string`).\n *\n *   In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n *   or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n *   column, `s` for `start`, and `e` for end.\n *   An empty string (`''`) is returned if the given value is neither `node`,\n *   `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if ('position' in value || 'type' in value) {\n    return position(value.position)\n  }\n\n  // Position.\n  if ('start' in value || 'end' in value) {\n    return position(value)\n  }\n\n  // Point.\n  if ('line' in value || 'column' in value) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n  return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n  return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n *   Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n *   Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n *   Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n *   Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n *   Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n *   Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n  /**\n   * Create a message for `reason`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Options | null | undefined} [options]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns\n   *   Instance of `VFileMessage`.\n   */\n  // eslint-disable-next-line complexity\n  constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n    super()\n\n    if (typeof optionsOrParentOrPlace === 'string') {\n      origin = optionsOrParentOrPlace\n      optionsOrParentOrPlace = undefined\n    }\n\n    /** @type {string} */\n    let reason = ''\n    /** @type {Options} */\n    let options = {}\n    let legacyCause = false\n\n    if (optionsOrParentOrPlace) {\n      // Point.\n      if (\n        'line' in optionsOrParentOrPlace &&\n        'column' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Position.\n      else if (\n        'start' in optionsOrParentOrPlace &&\n        'end' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Node.\n      else if ('type' in optionsOrParentOrPlace) {\n        options = {\n          ancestors: [optionsOrParentOrPlace],\n          place: optionsOrParentOrPlace.position\n        }\n      }\n      // Options.\n      else {\n        options = {...optionsOrParentOrPlace}\n      }\n    }\n\n    if (typeof causeOrReason === 'string') {\n      reason = causeOrReason\n    }\n    // Error.\n    else if (!options.cause && causeOrReason) {\n      legacyCause = true\n      reason = causeOrReason.message\n      options.cause = causeOrReason\n    }\n\n    if (!options.ruleId && !options.source && typeof origin === 'string') {\n      const index = origin.indexOf(':')\n\n      if (index === -1) {\n        options.ruleId = origin\n      } else {\n        options.source = origin.slice(0, index)\n        options.ruleId = origin.slice(index + 1)\n      }\n    }\n\n    if (!options.place && options.ancestors && options.ancestors) {\n      const parent = options.ancestors[options.ancestors.length - 1]\n\n      if (parent) {\n        options.place = parent.position\n      }\n    }\n\n    const start =\n      options.place && 'start' in options.place\n        ? options.place.start\n        : options.place\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * Stack of ancestor nodes surrounding the message.\n     *\n     * @type {Array<Node> | undefined}\n     */\n    this.ancestors = options.ancestors || undefined\n\n    /**\n     * Original error cause of the message.\n     *\n     * @type {Error | undefined}\n     */\n    this.cause = options.cause || undefined\n\n    /**\n     * Starting column of message.\n     *\n     * @type {number | undefined}\n     */\n    this.column = start ? start.column : undefined\n\n    /**\n     * State of problem.\n     *\n     * * `true` — error, file not usable\n     * * `false` — warning, change may be needed\n     * * `undefined` — change likely not needed\n     *\n     * @type {boolean | null | undefined}\n     */\n    this.fatal = undefined\n\n    /**\n     * Path of a file (used throughout the `VFile` ecosystem).\n     *\n     * @type {string | undefined}\n     */\n    this.file\n\n    // Field from `Error`.\n    /**\n     * Reason for message.\n     *\n     * @type {string}\n     */\n    this.message = reason\n\n    /**\n     * Starting line of error.\n     *\n     * @type {number | undefined}\n     */\n    this.line = start ? start.line : undefined\n\n    // Field from `Error`.\n    /**\n     * Serialized positional info of message.\n     *\n     * On normal errors, this would be something like `ParseError`, buit in\n     * `VFile` messages we use this space to show where an error happened.\n     */\n    this.name = stringifyPosition(options.place) || '1:1'\n\n    /**\n     * Place of message.\n     *\n     * @type {Point | Position | undefined}\n     */\n    this.place = options.place || undefined\n\n    /**\n     * Reason for message, should use markdown.\n     *\n     * @type {string}\n     */\n    this.reason = this.message\n\n    /**\n     * Category of message (example: `'my-rule'`).\n     *\n     * @type {string | undefined}\n     */\n    this.ruleId = options.ruleId || undefined\n\n    /**\n     * Namespace of message (example: `'my-package'`).\n     *\n     * @type {string | undefined}\n     */\n    this.source = options.source || undefined\n\n    // Field from `Error`.\n    /**\n     * Stack of message.\n     *\n     * This is used by normal errors to show where something happened in\n     * programming code, irrelevant for `VFile` messages,\n     *\n     * @type {string}\n     */\n    this.stack =\n      legacyCause && options.cause && typeof options.cause.stack === 'string'\n        ? options.cause.stack\n        : ''\n\n    // The following fields are “well known”.\n    // Not standard.\n    // Feel free to add other non-standard fields to your messages.\n\n    /**\n     * Specify the source value that’s being reported, which is deemed\n     * incorrect.\n     *\n     * @type {string | undefined}\n     */\n    this.actual\n\n    /**\n     * Suggest acceptable values that can be used instead of `actual`.\n     *\n     * @type {Array<string> | undefined}\n     */\n    this.expected\n\n    /**\n     * Long form description of the message (you should use markdown).\n     *\n     * @type {string | undefined}\n     */\n    this.note\n\n    /**\n     * Link to docs for the message.\n     *\n     * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n     * > to `new URL(x)`.\n     *\n     * @type {string | undefined}\n     */\n    this.url\n    /* eslint-enable no-unused-expressions */\n  }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","/**\n * @import {Identifier, Literal, MemberExpression} from 'estree'\n * @import {Jsx, JsxDev, Options, Props} from 'hast-util-to-jsx-runtime'\n * @import {Element, Nodes, Parents, Root, Text} from 'hast'\n * @import {MdxFlowExpressionHast, MdxTextExpressionHast} from 'mdast-util-mdx-expression'\n * @import {MdxJsxFlowElementHast, MdxJsxTextElementHast} from 'mdast-util-mdx-jsx'\n * @import {MdxjsEsmHast} from 'mdast-util-mdxjs-esm'\n * @import {Position} from 'unist'\n * @import {Child, Create, Field, JsxElement, State, Style} from './types.js'\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {ok as assert} from 'devlop'\nimport {name as isIdentifierName} from 'estree-util-is-identifier-name'\nimport {whitespace} from 'hast-util-whitespace'\nimport {find, hastToReact, html, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport styleToJs from 'style-to-js'\nimport {pointStart} from 'unist-util-position'\nimport {VFileMessage} from 'vfile-message'\n\n// To do: next major: `Object.hasOwn`.\nconst own = {}.hasOwnProperty\n\n/** @type {Map<string, number>} */\nconst emptyMap = new Map()\n\nconst cap = /[A-Z]/g\n\n// `react-dom` triggers a warning for *any* white space in tables.\n// To follow GFM, `mdast-util-to-hast` injects line endings between elements.\n// Other tools might do so too, but they don’t do here, so we remove all of\n// that.\n\n// See: <https://github.com/facebook/react/pull/7081>.\n// See: <https://github.com/facebook/react/pull/7515>.\n// See: <https://github.com/remarkjs/remark-react/issues/64>.\n// See: <https://github.com/rehypejs/rehype-react/pull/29>.\n// See: <https://github.com/rehypejs/rehype-react/pull/32>.\n// See: <https://github.com/rehypejs/rehype-react/pull/45>.\nconst tableElements = new Set(['table', 'tbody', 'thead', 'tfoot', 'tr'])\n\nconst tableCellElement = new Set(['td', 'th'])\n\nconst docs = 'https://github.com/syntax-tree/hast-util-to-jsx-runtime'\n\n/**\n * Transform a hast tree to preact, react, solid, svelte, vue, etc.,\n * with an automatic JSX runtime.\n *\n * @param {Nodes} tree\n *   Tree to transform.\n * @param {Options} options\n *   Configuration (required).\n * @returns {JsxElement}\n *   JSX element.\n */\n\nexport function toJsxRuntime(tree, options) {\n  if (!options || options.Fragment === undefined) {\n    throw new TypeError('Expected `Fragment` in options')\n  }\n\n  const filePath = options.filePath || undefined\n  /** @type {Create} */\n  let create\n\n  if (options.development) {\n    if (typeof options.jsxDEV !== 'function') {\n      throw new TypeError(\n        'Expected `jsxDEV` in options when `development: true`'\n      )\n    }\n\n    create = developmentCreate(filePath, options.jsxDEV)\n  } else {\n    if (typeof options.jsx !== 'function') {\n      throw new TypeError('Expected `jsx` in production options')\n    }\n\n    if (typeof options.jsxs !== 'function') {\n      throw new TypeError('Expected `jsxs` in production options')\n    }\n\n    create = productionCreate(filePath, options.jsx, options.jsxs)\n  }\n\n  /** @type {State} */\n  const state = {\n    Fragment: options.Fragment,\n    ancestors: [],\n    components: options.components || {},\n    create,\n    elementAttributeNameCase: options.elementAttributeNameCase || 'react',\n    evaluater: options.createEvaluater ? options.createEvaluater() : undefined,\n    filePath,\n    ignoreInvalidStyle: options.ignoreInvalidStyle || false,\n    passKeys: options.passKeys !== false,\n    passNode: options.passNode || false,\n    schema: options.space === 'svg' ? svg : html,\n    stylePropertyNameCase: options.stylePropertyNameCase || 'dom',\n    tableCellAlignToStyle: options.tableCellAlignToStyle !== false\n  }\n\n  const result = one(state, tree, undefined)\n\n  // JSX element.\n  if (result && typeof result !== 'string') {\n    return result\n  }\n\n  // Text node or something that turned into nothing.\n  return state.create(\n    tree,\n    state.Fragment,\n    {children: result || undefined},\n    undefined\n  )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Nodes} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction one(state, node, key) {\n  if (node.type === 'element') {\n    return element(state, node, key)\n  }\n\n  if (node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression') {\n    return mdxExpression(state, node)\n  }\n\n  if (node.type === 'mdxJsxFlowElement' || node.type === 'mdxJsxTextElement') {\n    return mdxJsxElement(state, node, key)\n  }\n\n  if (node.type === 'mdxjsEsm') {\n    return mdxEsm(state, node)\n  }\n\n  if (node.type === 'root') {\n    return root(state, node, key)\n  }\n\n  if (node.type === 'text') {\n    return text(state, node)\n  }\n}\n\n/**\n * Handle element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Element} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction element(state, node, key) {\n  const parentSchema = state.schema\n  let schema = parentSchema\n\n  if (node.tagName.toLowerCase() === 'svg' && parentSchema.space === 'html') {\n    schema = svg\n    state.schema = schema\n  }\n\n  state.ancestors.push(node)\n\n  const type = findComponentFromName(state, node.tagName, false)\n  const props = createElementProps(state, node)\n  let children = createChildren(state, node)\n\n  if (tableElements.has(node.tagName)) {\n    children = children.filter(function (child) {\n      return typeof child === 'string' ? !whitespace(child) : true\n    })\n  }\n\n  addNode(state, props, type, node)\n  addChildren(props, children)\n\n  // Restore.\n  state.ancestors.pop()\n  state.schema = parentSchema\n\n  return state.create(node, type, props, key)\n}\n\n/**\n * Handle MDX expression.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxFlowExpressionHast | MdxTextExpressionHast} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxExpression(state, node) {\n  if (node.data && node.data.estree && state.evaluater) {\n    const program = node.data.estree\n    const expression = program.body[0]\n    assert(expression.type === 'ExpressionStatement')\n\n    // Assume result is a child.\n    return /** @type {Child | undefined} */ (\n      state.evaluater.evaluateExpression(expression.expression)\n    )\n  }\n\n  crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX ESM.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxjsEsmHast} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxEsm(state, node) {\n  if (node.data && node.data.estree && state.evaluater) {\n    // Assume result is a child.\n    return /** @type {Child | undefined} */ (\n      state.evaluater.evaluateProgram(node.data.estree)\n    )\n  }\n\n  crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX JSX.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxJsxElement(state, node, key) {\n  const parentSchema = state.schema\n  let schema = parentSchema\n\n  if (node.name === 'svg' && parentSchema.space === 'html') {\n    schema = svg\n    state.schema = schema\n  }\n\n  state.ancestors.push(node)\n\n  const type =\n    node.name === null\n      ? state.Fragment\n      : findComponentFromName(state, node.name, true)\n  const props = createJsxElementProps(state, node)\n  const children = createChildren(state, node)\n\n  addNode(state, props, type, node)\n  addChildren(props, children)\n\n  // Restore.\n  state.ancestors.pop()\n  state.schema = parentSchema\n\n  return state.create(node, type, props, key)\n}\n\n/**\n * Handle root.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Root} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction root(state, node, key) {\n  /** @type {Props} */\n  const props = {}\n\n  addChildren(props, createChildren(state, node))\n\n  return state.create(node, state.Fragment, props, key)\n}\n\n/**\n * Handle text.\n *\n * @param {State} _\n *   Info passed around.\n * @param {Text} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction text(_, node) {\n  return node.value\n}\n\n/**\n * Add `node` to props.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Props} props\n *   Props.\n * @param {unknown} type\n *   Type.\n * @param {Element | MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Node.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addNode(state, props, type, node) {\n  // If this is swapped out for a component:\n  if (typeof type !== 'string' && type !== state.Fragment && state.passNode) {\n    props.node = node\n  }\n}\n\n/**\n * Add children to props.\n *\n * @param {Props} props\n *   Props.\n * @param {Array<Child>} children\n *   Children.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addChildren(props, children) {\n  if (children.length > 0) {\n    const value = children.length > 1 ? children : children[0]\n\n    if (value) {\n      props.children = value\n    }\n  }\n}\n\n/**\n * @param {string | undefined} _\n *   Path to file.\n * @param {Jsx} jsx\n *   Dynamic.\n * @param {Jsx} jsxs\n *   Static.\n * @returns {Create}\n *   Create a production element.\n */\nfunction productionCreate(_, jsx, jsxs) {\n  return create\n  /** @type {Create} */\n  function create(_, type, props, key) {\n    // Only an array when there are 2 or more children.\n    const isStaticChildren = Array.isArray(props.children)\n    const fn = isStaticChildren ? jsxs : jsx\n    return key ? fn(type, props, key) : fn(type, props)\n  }\n}\n\n/**\n * @param {string | undefined} filePath\n *   Path to file.\n * @param {JsxDev} jsxDEV\n *   Development.\n * @returns {Create}\n *   Create a development element.\n */\nfunction developmentCreate(filePath, jsxDEV) {\n  return create\n  /** @type {Create} */\n  function create(node, type, props, key) {\n    // Only an array when there are 2 or more children.\n    const isStaticChildren = Array.isArray(props.children)\n    const point = pointStart(node)\n    return jsxDEV(\n      type,\n      props,\n      key,\n      isStaticChildren,\n      {\n        columnNumber: point ? point.column - 1 : undefined,\n        fileName: filePath,\n        lineNumber: point ? point.line : undefined\n      },\n      undefined\n    )\n  }\n}\n\n/**\n * Create props from an element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Element} node\n *   Current element.\n * @returns {Props}\n *   Props.\n */\nfunction createElementProps(state, node) {\n  /** @type {Props} */\n  const props = {}\n  /** @type {string | undefined} */\n  let alignValue\n  /** @type {string} */\n  let prop\n\n  for (prop in node.properties) {\n    if (prop !== 'children' && own.call(node.properties, prop)) {\n      const result = createProperty(state, prop, node.properties[prop])\n\n      if (result) {\n        const [key, value] = result\n\n        if (\n          state.tableCellAlignToStyle &&\n          key === 'align' &&\n          typeof value === 'string' &&\n          tableCellElement.has(node.tagName)\n        ) {\n          alignValue = value\n        } else {\n          props[key] = value\n        }\n      }\n    }\n  }\n\n  if (alignValue) {\n    // Assume style is an object.\n    const style = /** @type {Style} */ (props.style || (props.style = {}))\n    style[state.stylePropertyNameCase === 'css' ? 'text-align' : 'textAlign'] =\n      alignValue\n  }\n\n  return props\n}\n\n/**\n * Create props from a JSX element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Current JSX element.\n * @returns {Props}\n *   Props.\n */\nfunction createJsxElementProps(state, node) {\n  /** @type {Props} */\n  const props = {}\n\n  for (const attribute of node.attributes) {\n    if (attribute.type === 'mdxJsxExpressionAttribute') {\n      if (attribute.data && attribute.data.estree && state.evaluater) {\n        const program = attribute.data.estree\n        const expression = program.body[0]\n        assert(expression.type === 'ExpressionStatement')\n        const objectExpression = expression.expression\n        assert(objectExpression.type === 'ObjectExpression')\n        const property = objectExpression.properties[0]\n        assert(property.type === 'SpreadElement')\n\n        Object.assign(\n          props,\n          state.evaluater.evaluateExpression(property.argument)\n        )\n      } else {\n        crashEstree(state, node.position)\n      }\n    } else {\n      // For JSX, the author is responsible of passing in the correct values.\n      const name = attribute.name\n      /** @type {unknown} */\n      let value\n\n      if (attribute.value && typeof attribute.value === 'object') {\n        if (\n          attribute.value.data &&\n          attribute.value.data.estree &&\n          state.evaluater\n        ) {\n          const program = attribute.value.data.estree\n          const expression = program.body[0]\n          assert(expression.type === 'ExpressionStatement')\n          value = state.evaluater.evaluateExpression(expression.expression)\n        } else {\n          crashEstree(state, node.position)\n        }\n      } else {\n        value = attribute.value === null ? true : attribute.value\n      }\n\n      // Assume a prop.\n      props[name] = /** @type {Props[keyof Props]} */ (value)\n    }\n  }\n\n  return props\n}\n\n/**\n * Create children.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Parents} node\n *   Current element.\n * @returns {Array<Child>}\n *   Children.\n */\nfunction createChildren(state, node) {\n  /** @type {Array<Child>} */\n  const children = []\n  let index = -1\n  /** @type {Map<string, number>} */\n  // Note: test this when Solid doesn’t want to merge my upcoming PR.\n  /* c8 ignore next */\n  const countsByName = state.passKeys ? new Map() : emptyMap\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n    /** @type {string | undefined} */\n    let key\n\n    if (state.passKeys) {\n      const name =\n        child.type === 'element'\n          ? child.tagName\n          : child.type === 'mdxJsxFlowElement' ||\n              child.type === 'mdxJsxTextElement'\n            ? child.name\n            : undefined\n\n      if (name) {\n        const count = countsByName.get(name) || 0\n        key = name + '-' + count\n        countsByName.set(name, count + 1)\n      }\n    }\n\n    const result = one(state, child, key)\n    if (result !== undefined) children.push(result)\n  }\n\n  return children\n}\n\n/**\n * Handle a property.\n *\n * @param {State} state\n *   Info passed around.\n * @param {string} prop\n *   Key.\n * @param {Array<number | string> | boolean | number | string | null | undefined} value\n *   hast property value.\n * @returns {Field | undefined}\n *   Field for runtime, optional.\n */\nfunction createProperty(state, prop, value) {\n  const info = find(state.schema, prop)\n\n  // Ignore nullish and `NaN` values.\n  if (\n    value === null ||\n    value === undefined ||\n    (typeof value === 'number' && Number.isNaN(value))\n  ) {\n    return\n  }\n\n  if (Array.isArray(value)) {\n    // Accept `array`.\n    // Most props are space-separated.\n    value = info.commaSeparated ? commas(value) : spaces(value)\n  }\n\n  // React only accepts `style` as object.\n  if (info.property === 'style') {\n    let styleObject =\n      typeof value === 'object' ? value : parseStyle(state, String(value))\n\n    if (state.stylePropertyNameCase === 'css') {\n      styleObject = transformStylesToCssCasing(styleObject)\n    }\n\n    return ['style', styleObject]\n  }\n\n  return [\n    state.elementAttributeNameCase === 'react' && info.space\n      ? hastToReact[info.property] || info.property\n      : info.attribute,\n    value\n  ]\n}\n\n/**\n * Parse a CSS declaration to an object.\n *\n * @param {State} state\n *   Info passed around.\n * @param {string} value\n *   CSS declarations.\n * @returns {Style}\n *   Properties.\n * @throws\n *   Throws `VFileMessage` when CSS cannot be parsed.\n */\nfunction parseStyle(state, value) {\n  try {\n    return styleToJs(value, {reactCompat: true})\n  } catch (error) {\n    if (state.ignoreInvalidStyle) {\n      return {}\n    }\n\n    const cause = /** @type {Error} */ (error)\n    const message = new VFileMessage('Cannot parse `style` attribute', {\n      ancestors: state.ancestors,\n      cause,\n      ruleId: 'style',\n      source: 'hast-util-to-jsx-runtime'\n    })\n    message.file = state.filePath || undefined\n    message.url = docs + '#cannot-parse-style-attribute'\n\n    throw message\n  }\n}\n\n/**\n * Create a JSX name from a string.\n *\n * @param {State} state\n *   To do.\n * @param {string} name\n *   Name.\n * @param {boolean} allowExpression\n *   Allow member expressions and identifiers.\n * @returns {unknown}\n *   To do.\n */\nfunction findComponentFromName(state, name, allowExpression) {\n  /** @type {Identifier | Literal | MemberExpression} */\n  let result\n\n  if (!allowExpression) {\n    result = {type: 'Literal', value: name}\n  } else if (name.includes('.')) {\n    const identifiers = name.split('.')\n    let index = -1\n    /** @type {Identifier | Literal | MemberExpression | undefined} */\n    let node\n\n    while (++index < identifiers.length) {\n      /** @type {Identifier | Literal} */\n      const prop = isIdentifierName(identifiers[index])\n        ? {type: 'Identifier', name: identifiers[index]}\n        : {type: 'Literal', value: identifiers[index]}\n      node = node\n        ? {\n            type: 'MemberExpression',\n            object: node,\n            property: prop,\n            computed: Boolean(index && prop.type === 'Literal'),\n            optional: false\n          }\n        : prop\n    }\n\n    assert(node, 'always a result')\n    result = node\n  } else {\n    result =\n      isIdentifierName(name) && !/^[a-z]/.test(name)\n        ? {type: 'Identifier', name}\n        : {type: 'Literal', value: name}\n  }\n\n  // Only literals can be passed in `components` currently.\n  // No identifiers / member expressions.\n  if (result.type === 'Literal') {\n    const name = /** @type {string | number} */ (result.value)\n    return own.call(state.components, name) ? state.components[name] : name\n  }\n\n  // Assume component.\n  if (state.evaluater) {\n    return state.evaluater.evaluateExpression(result)\n  }\n\n  crashEstree(state)\n}\n\n/**\n * @param {State} state\n * @param {Position | undefined} [place]\n * @returns {never}\n */\nfunction crashEstree(state, place) {\n  const message = new VFileMessage(\n    'Cannot handle MDX estrees without `createEvaluater`',\n    {\n      ancestors: state.ancestors,\n      place,\n      ruleId: 'mdx-estree',\n      source: 'hast-util-to-jsx-runtime'\n    }\n  )\n  message.file = state.filePath || undefined\n  message.url = docs + '#cannot-handle-mdx-estrees-without-createevaluater'\n\n  throw message\n}\n\n/**\n * Transform a DOM casing style object to a CSS casing style object.\n *\n * @param {Style} domCasing\n * @returns {Style}\n */\nfunction transformStylesToCssCasing(domCasing) {\n  /** @type {Style} */\n  const cssCasing = {}\n  /** @type {string} */\n  let from\n\n  for (from in domCasing) {\n    if (own.call(domCasing, from)) {\n      cssCasing[transformStyleToCssCasing(from)] = domCasing[from]\n    }\n  }\n\n  return cssCasing\n}\n\n/**\n * Transform a DOM casing style field to a CSS casing style field.\n *\n * @param {string} from\n * @returns {string}\n */\nfunction transformStyleToCssCasing(from) {\n  let to = from.replace(cap, toDash)\n  // Handle `ms-xxx` -> `-ms-xxx`.\n  if (to.slice(0, 3) === 'ms-') to = '-' + to\n  return to\n}\n\n/**\n * Make `$0` dash cased.\n *\n * @param {string} $0\n *   Capitalized ASCII leter.\n * @returns {string}\n *   Dash and lower letter.\n */\nfunction toDash($0) {\n  return '-' + $0.toLowerCase()\n}\n","/**\n * HTML URL properties.\n *\n * Each key is a property name and each value is a list of tag names it applies\n * to or `null` if it applies to all elements.\n *\n * @type {Record<string, Array<string> | null>}\n */\nexport const urlAttributes = {\n  action: ['form'],\n  cite: ['blockquote', 'del', 'ins', 'q'],\n  data: ['object'],\n  formAction: ['button', 'input'],\n  href: ['a', 'area', 'base', 'link'],\n  icon: ['menuitem'],\n  itemId: null,\n  manifest: ['html'],\n  ping: ['a', 'area'],\n  poster: ['video'],\n  src: [\n    'audio',\n    'embed',\n    'iframe',\n    'img',\n    'input',\n    'script',\n    'source',\n    'track',\n    'video'\n  ]\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n *   Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n *   Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n *   Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized `value`.\n */\nexport function toString(value, options) {\n  const settings = options || emptyOptions\n  const includeImageAlt =\n    typeof settings.includeImageAlt === 'boolean'\n      ? settings.includeImageAlt\n      : true\n  const includeHtml =\n    typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n  return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n  if (node(value)) {\n    if ('value' in value) {\n      return value.type === 'html' && !includeHtml ? '' : value.value\n    }\n\n    if (includeImageAlt && 'alt' in value && value.alt) {\n      return value.alt\n    }\n\n    if ('children' in value) {\n      return all(value.children, includeImageAlt, includeHtml)\n    }\n  }\n\n  if (Array.isArray(value)) {\n    return all(value, includeImageAlt, includeHtml)\n  }\n\n  return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt, includeHtml)\n  }\n\n  return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n *   Thing.\n * @returns {value is Nodes}\n *   Whether `value` is a node.\n */\nfunction node(value) {\n  return Boolean(value && typeof value === 'object')\n}\n","/// <reference lib=\"dom\" />\n\n/* global document */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string | false}\n */\nexport function decodeNamedCharacterReference(value) {\n  const characterReference = '&' + value + ';'\n  element.innerHTML = characterReference\n  const character = element.textContent\n\n  // Some named character references do not require the closing semicolon\n  // (`&not`, for instance), which leads to situations where parsing the assumed\n  // named reference of `&notit;` will result in the string `¬it;`.\n  // When we encounter a trailing semicolon after parsing, and the character\n  // reference to decode was not a semicolon (`&semi;`), we can assume that the\n  // matching was not complete.\n  if (\n    // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n    // yield `null`.\n    character.charCodeAt(character.length - 1) === 59 /* `;` */ &&\n    value !== 'semi'\n  ) {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the character reference was\n  // not valid.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  return character === characterReference ? false : character\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {number} start\n *   Index to remove/insert at (can be negative).\n * @param {number} remove\n *   Number of items to remove.\n * @param {Array<T>} items\n *   Items to inject into `list`.\n * @returns {undefined}\n *   Nothing.\n */\nexport function splice(list, start, remove, items) {\n  const end = list.length;\n  let chunkStart = 0;\n  /** @type {Array<unknown>} */\n  let parameters;\n\n  // Make start between zero and `end` (included).\n  if (start < 0) {\n    start = -start > end ? 0 : end + start;\n  } else {\n    start = start > end ? end : start;\n  }\n  remove = remove > 0 ? remove : 0;\n\n  // No need to chunk the items if there’s only a couple (10k) items.\n  if (items.length < 10000) {\n    parameters = Array.from(items);\n    parameters.unshift(start, remove);\n    // @ts-expect-error Hush, it’s fine.\n    list.splice(...parameters);\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) list.splice(start, remove);\n\n    // Insert the items in chunks to not cause stack overflows.\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000);\n      parameters.unshift(start, 0);\n      // @ts-expect-error Hush, it’s fine.\n      list.splice(...parameters);\n      chunkStart += 10000;\n      start += 10000;\n    }\n  }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {Array<T>} items\n *   Items to add to `list`.\n * @returns {Array<T>}\n *   Either `list` or `items`.\n */\nexport function push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items);\n    return list;\n  }\n  return items;\n}","/**\n * @import {\n *   Extension,\n *   Handles,\n *   HtmlExtension,\n *   NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n *   List of syntax extensions.\n * @returns {NormalizedExtension}\n *   A single combined extension.\n */\nexport function combineExtensions(extensions) {\n  /** @type {NormalizedExtension} */\n  const all = {}\n  let index = -1\n\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index])\n  }\n\n  return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n *   Extension to merge into.\n * @param {Extension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {keyof Extension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    /** @type {Record<string, unknown>} */\n    const left = maybe || (all[hook] = {})\n    /** @type {Record<string, unknown> | undefined} */\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    if (right) {\n      for (code in right) {\n        if (!hasOwnProperty.call(left, code)) left[code] = []\n        const value = right[code]\n        constructs(\n          // @ts-expect-error Looks like a list.\n          left[code],\n          Array.isArray(value) ? value : value ? [value] : []\n        )\n      }\n    }\n  }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n *   List of constructs to merge into.\n * @param {Array<unknown>} list\n *   List of constructs to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {Array<unknown>} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n *   List of HTML extensions.\n * @returns {HtmlExtension}\n *   Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n  /** @type {HtmlExtension} */\n  const handlers = {}\n  let index = -1\n\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index])\n  }\n\n  return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n *   Extension to merge into.\n * @param {HtmlExtension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction htmlExtension(all, extension) {\n  /** @type {keyof HtmlExtension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {keyof Handles} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        // @ts-expect-error assume document vs regular handler are managed correctly.\n        left[type] = right[type]\n      }\n    }\n  }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n *   Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base);\n  if (\n  // C0 except for HT, LF, FF, CR, space.\n  code < 9 || code === 11 || code > 13 && code < 32 ||\n  // Control character (DEL) of C0, and C1 controls.\n  code > 126 && code < 160 ||\n  // Lone high surrogates and low surrogates.\n  code > 55_295 && code < 57_344 ||\n  // Noncharacters.\n  code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n  (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n  // Out of range\n  code > 1_114_111) {\n    return \"\\uFFFD\";\n  }\n  return String.fromCodePoint(code);\n}","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n *   Identifier to normalize.\n * @returns {string}\n *   Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n  return value\n  // Collapse markdown whitespace.\n  .replace(/[\\t\\n\\r ]+/g, \" \")\n  // Trim.\n  .replace(/^ | $/g, '')\n  // Some characters are considered “uppercase”, but if their lowercase\n  // counterpart is uppercased will result in a different uppercase\n  // character.\n  // Hence, to get that form, we perform both lower- and uppercase.\n  // Upper case makes sure keys will not interact with default prototypal\n  // methods: no method is uppercase.\n  .toLowerCase().toUpperCase();\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code !== null && (code < 32 || code === 127)\n  );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEnding(code) {\n  return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n  return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n *   Expression.\n * @returns {(code: Code) => boolean}\n *   Check.\n */\nfunction regexCheck(regex) {\n  return check;\n\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code\n   *   Character code.\n   * @returns {boolean}\n   *   Whether the character code matches the bound regex.\n   */\n  function check(code) {\n    return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n  }\n}","import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n *   URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n *   Allowed protocols.\n * @returns {string}\n *   Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n  const value = encode(normalizeUri(url || ''));\n  if (!protocol) {\n    return value;\n  }\n  const colon = value.indexOf(':');\n  const questionMark = value.indexOf('?');\n  const numberSign = value.indexOf('#');\n  const slash = value.indexOf('/');\n  if (\n  // If there is no protocol, it’s relative.\n  colon < 0 ||\n  // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n  slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n  // It is a protocol, it should be allowed.\n  protocol.test(value.slice(0, colon))) {\n    return value;\n  }\n  return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n *   URI to normalize.\n * @returns {string}\n *   Normalized URI.\n */\nexport function normalizeUri(value) {\n  /** @type {Array<string>} */\n  const result = [];\n  let index = -1;\n  let start = 0;\n  let skip = 0;\n  while (++index < value.length) {\n    const code = value.charCodeAt(index);\n    /** @type {string} */\n    let replace = '';\n\n    // A correct percent encoded value.\n    if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n      skip = 2;\n    }\n    // ASCII.\n    else if (code < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n        replace = String.fromCharCode(code);\n      }\n    }\n    // Astral.\n    else if (code > 55_295 && code < 57_344) {\n      const next = value.charCodeAt(index + 1);\n\n      // A correct surrogate pair.\n      if (code < 56_320 && next > 56_319 && next < 57_344) {\n        replace = String.fromCharCode(code, next);\n        skip = 1;\n      }\n      // Lone surrogate.\n      else {\n        replace = \"\\uFFFD\";\n      }\n    }\n    // Unicode.\n    else {\n      replace = String.fromCharCode(code);\n    }\n    if (replace) {\n      result.push(value.slice(start, index), encodeURIComponent(replace));\n      start = index + skip + 1;\n      replace = '';\n    }\n    if (skip) {\n      index += skip;\n      skip = 0;\n    }\n  }\n  return result.join('') + value.slice(start);\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   spaces in markdown are often optional, in which case this factory can be\n *     used and `ok` will be switched to whether spaces were found or not\n * *   one line ending or space can be detected with `markdownSpace(code)` right\n *     before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {TokenType} type\n *   Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n *   Max (exclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type);\n      return prefix(code);\n    }\n    return ok(code);\n  }\n\n  /** @type {State} */\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code);\n      return prefix;\n    }\n    effects.exit(type);\n    return ok(code);\n  }\n}","/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n  tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Initializer}\n *   Content.\n */\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n  /** @type {Token} */\n  let previous;\n  return contentStart;\n\n  /** @type {State} */\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, contentStart, \"linePrefix\");\n  }\n\n  /** @type {State} */\n  function paragraphInitial(code) {\n    effects.enter(\"paragraph\");\n    return lineStart(code);\n  }\n\n  /** @type {State} */\n  function lineStart(code) {\n    const token = effects.enter(\"chunkText\", {\n      contentType: \"text\",\n      previous\n    });\n    if (previous) {\n      previous.next = token;\n    }\n    previous = token;\n    return data(code);\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (code === null) {\n      effects.exit(\"chunkText\");\n      effects.exit(\"paragraph\");\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      effects.exit(\"chunkText\");\n      return lineStart;\n    }\n\n    // Data.\n    effects.consume(code);\n    return data;\n  }\n}","/**\n * @import {\n *   Construct,\n *   ContainerState,\n *   InitialConstruct,\n *   Initializer,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n *   Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n  tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeDocument(effects) {\n  const self = this;\n  /** @type {Array<StackItem>} */\n  const stack = [];\n  let continued = 0;\n  /** @type {TokenizeContext | undefined} */\n  let childFlow;\n  /** @type {Token | undefined} */\n  let childToken;\n  /** @type {number} */\n  let lineStartOffset;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    // First we iterate through the open blocks, starting with the root\n    // document, and descending through last children down to the last open\n    // block.\n    // Each block imposes a condition that the line must satisfy if the block is\n    // to remain open.\n    // For example, a block quote requires a `>` character.\n    // A paragraph requires a non-blank line.\n    // In this phase we may match all or just some of the open blocks.\n    // But we cannot close unmatched blocks yet, because we may have a lazy\n    // continuation line.\n    if (continued < stack.length) {\n      const item = stack[continued];\n      self.containerState = item[1];\n      return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n    }\n\n    // Done.\n    return checkNewContainers(code);\n  }\n\n  /** @type {State} */\n  function documentContinue(code) {\n    continued++;\n\n    // Note: this field is called `_closeFlow` but it also closes containers.\n    // Perhaps a good idea to rename it but it’s already used in the wild by\n    // extensions.\n    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined;\n      if (childFlow) {\n        closeFlow();\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the flow chunk.\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          point = self.events[indexBeforeFlow][1].end;\n          break;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      let index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n      // Discard the duplicate exits.\n      self.events.length = index;\n      return checkNewContainers(code);\n    }\n    return start(code);\n  }\n\n  /** @type {State} */\n  function checkNewContainers(code) {\n    // Next, after consuming the continuation markers for existing blocks, we\n    // look for new block starts (e.g. `>` for a block quote).\n    // If we encounter a new block start, we close any blocks unmatched in\n    // step 1 before creating the new block as a child of the last matched\n    // block.\n    if (continued === stack.length) {\n      // No need to `check` whether there’s a container, of `exitContainers`\n      // would be moot.\n      // We can instead immediately `attempt` to parse one.\n      if (!childFlow) {\n        return documentContinued(code);\n      }\n\n      // If we have concrete content, such as block HTML or fenced code,\n      // we can’t have containers “pierce” into them, so we can immediately\n      // start.\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code);\n      }\n\n      // If we do have flow, it could still be a blank line,\n      // but we’d be interrupting it w/ a new container if there’s a current\n      // construct.\n      // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n      // needed in micromark-extension-gfm-table@1.0.6).\n      self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n    }\n\n    // Check if there is a new container.\n    self.containerState = {};\n    return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n  }\n\n  /** @type {State} */\n  function thereIsANewContainer(code) {\n    if (childFlow) closeFlow();\n    exitContainers(continued);\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function thereIsNoNewContainer(code) {\n    self.parser.lazy[self.now().line] = continued !== stack.length;\n    lineStartOffset = self.now().offset;\n    return flowStart(code);\n  }\n\n  /** @type {State} */\n  function documentContinued(code) {\n    // Try new containers.\n    self.containerState = {};\n    return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n  }\n\n  /** @type {State} */\n  function containerContinue(code) {\n    continued++;\n    stack.push([self.currentConstruct, self.containerState]);\n    // Try another.\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function flowStart(code) {\n    if (code === null) {\n      if (childFlow) closeFlow();\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    childFlow = childFlow || self.parser.flow(self.now());\n    effects.enter(\"chunkFlow\", {\n      _tokenizer: childFlow,\n      contentType: \"flow\",\n      previous: childToken\n    });\n    return flowContinue(code);\n  }\n\n  /** @type {State} */\n  function flowContinue(code) {\n    if (code === null) {\n      writeToChild(effects.exit(\"chunkFlow\"), true);\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      writeToChild(effects.exit(\"chunkFlow\"));\n      // Get ready for the next line.\n      continued = 0;\n      self.interrupt = undefined;\n      return start;\n    }\n    effects.consume(code);\n    return flowContinue;\n  }\n\n  /**\n   * @param {Token} token\n   *   Token.\n   * @param {boolean | undefined} [endOfFile]\n   *   Whether the token is at the end of the file (default: `false`).\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function writeToChild(token, endOfFile) {\n    const stream = self.sliceStream(token);\n    if (endOfFile) stream.push(null);\n    token.previous = childToken;\n    if (childToken) childToken.next = token;\n    childToken = token;\n    childFlow.defineSkip(token.start);\n    childFlow.write(stream);\n\n    // Alright, so we just added a lazy line:\n    //\n    // ```markdown\n    // > a\n    // b.\n    //\n    // Or:\n    //\n    // > ~~~c\n    // d\n    //\n    // Or:\n    //\n    // > | e |\n    // f\n    // ```\n    //\n    // The construct in the second example (fenced code) does not accept lazy\n    // lines, so it marked itself as done at the end of its first line, and\n    // then the content construct parses `d`.\n    // Most constructs in markdown match on the first line: if the first line\n    // forms a construct, a non-lazy line can’t “unmake” it.\n    //\n    // The construct in the third example is potentially a GFM table, and\n    // those are *weird*.\n    // It *could* be a table, from the first line, if the following line\n    // matches a condition.\n    // In this case, that second line is lazy, which “unmakes” the first line\n    // and turns the whole into one content block.\n    //\n    // We’ve now parsed the non-lazy and the lazy line, and can figure out\n    // whether the lazy line started a new flow block.\n    // If it did, we exit the current containers between the two flow blocks.\n    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length;\n      while (index--) {\n        if (\n        // The token starts before the line ending…\n        childFlow.events[index][1].start.offset < lineStartOffset && (\n        // …and either is not ended yet…\n        !childFlow.events[index][1].end ||\n        // …or ends after it.\n        childFlow.events[index][1].end.offset > lineStartOffset)) {\n          // Exit: there’s still something open, which means it’s a lazy line\n          // part of something.\n          return;\n        }\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {boolean | undefined} */\n      let seen;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the previous chunk (the one before the lazy line).\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          if (seen) {\n            point = self.events[indexBeforeFlow][1].end;\n            break;\n          }\n          seen = true;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n      // Discard the duplicate exits.\n      self.events.length = index;\n    }\n  }\n\n  /**\n   * @param {number} size\n   *   Size.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function exitContainers(size) {\n    let index = stack.length;\n\n    // Exit open containers.\n    while (index-- > size) {\n      const entry = stack[index];\n      self.containerState = entry[1];\n      entry[0].exit.call(self, effects);\n    }\n    stack.length = size;\n  }\n  function closeFlow() {\n    childFlow.write([null]);\n    childToken = undefined;\n    childFlow = undefined;\n    self.containerState._closeFlow = undefined;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n *   Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n  // Always populated by defaults.\n\n  return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n *   Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n *   Group.\n */\nexport function classifyCharacter(code) {\n  if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n    return 1;\n  }\n  if (unicodePunctuation(code)) {\n    return 2;\n  }\n}","/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n *   List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n *   List of events.\n * @param {TokenizeContext} context\n *   Context used by `tokenize`.\n * @returns {Array<Event>}\n *   Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n  /** @type {Array<Resolver>} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n","/**\n * @import {\n *   Code,\n *   Construct,\n *   Event,\n *   Point,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n  name: 'attention',\n  resolveAll: resolveAllAttention,\n  tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n  let index = -1;\n  /** @type {number} */\n  let open;\n  /** @type {Token} */\n  let group;\n  /** @type {Token} */\n  let text;\n  /** @type {Token} */\n  let openingSequence;\n  /** @type {Token} */\n  let closingSequence;\n  /** @type {number} */\n  let use;\n  /** @type {Array<Event>} */\n  let nextEvents;\n  /** @type {number} */\n  let offset;\n\n  // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it’s\n  // a bottleneck for malicious stuff.\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n      open = index;\n\n      // Now walk back to find an opener.\n      while (open--) {\n        // Find a token that can open the closer.\n        if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n        // If the markers are the same:\n        context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don’t match.\n          if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n            continue;\n          }\n\n          // Number of markers to use from the sequence.\n          use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n          const start = {\n            ...events[open][1].end\n          };\n          const end = {\n            ...events[index][1].start\n          };\n          movePoint(start, -use);\n          movePoint(end, use);\n          openingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start,\n            end: {\n              ...events[open][1].end\n            }\n          };\n          closingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start: {\n              ...events[index][1].start\n            },\n            end\n          };\n          text = {\n            type: use > 1 ? \"strongText\" : \"emphasisText\",\n            start: {\n              ...events[open][1].end\n            },\n            end: {\n              ...events[index][1].start\n            }\n          };\n          group = {\n            type: use > 1 ? \"strong\" : \"emphasis\",\n            start: {\n              ...openingSequence.start\n            },\n            end: {\n              ...closingSequence.end\n            }\n          };\n          events[open][1].end = {\n            ...openingSequence.start\n          };\n          events[index][1].start = {\n            ...closingSequence.end\n          };\n          nextEvents = [];\n\n          // If there are more markers in the opening, add them before.\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n          }\n\n          // Opening.\n          nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n          // Always populated by defaults.\n\n          // Between.\n          nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n          // Closing.\n          nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n          // If there are more markers in the closing, add them after.\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2;\n            nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n          } else {\n            offset = 0;\n          }\n          splice(events, open - 1, index - open + 3, nextEvents);\n          index = open + nextEvents.length - offset - 2;\n          break;\n        }\n      }\n    }\n  }\n\n  // Remove remaining sequences.\n  index = -1;\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data';\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n  const previous = this.previous;\n  const before = classifyCharacter(previous);\n\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Before a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    marker = code;\n    effects.enter('attentionSequence');\n    return inside(code);\n  }\n\n  /**\n   * In a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    const token = effects.exit('attentionSequence');\n\n    // To do: next major: move this to resolver, just like `markdown-rs`.\n    const after = classifyCharacter(code);\n\n    // Always populated by defaults.\n\n    const open = !after || after === 2 && before || attentionMarkers.includes(code);\n    const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n    token._open = Boolean(marker === 42 ? open : open && (before || !close));\n    token._close = Boolean(marker === 42 ? close : close && (after || !open));\n    return ok(code);\n  }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n *   Point.\n * @param {number} offset\n *   Amount to move.\n * @returns {undefined}\n *   Nothing.\n */\nfunction movePoint(point, offset) {\n  point.column += offset;\n  point.offset += offset;\n  point._bufferIndex += offset;\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of an autolink.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *      ^\n   * > | a<user@example.com>b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"autolink\");\n    effects.enter(\"autolinkMarker\");\n    effects.consume(code);\n    effects.exit(\"autolinkMarker\");\n    effects.enter(\"autolinkProtocol\");\n    return open;\n  }\n\n  /**\n   * After `<`, at protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *       ^\n   * > | a<user@example.com>b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return schemeOrEmailAtext;\n    }\n    if (code === 64) {\n      return nok(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * At second byte of protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeOrEmailAtext(code) {\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n      // Count the previous alphabetical from `open` too.\n      size = 1;\n      return schemeInsideOrEmailAtext(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * In ambiguous protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code);\n      size = 0;\n      return urlInside;\n    }\n\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n      effects.consume(code);\n      return schemeInsideOrEmailAtext;\n    }\n    size = 0;\n    return emailAtext(code);\n  }\n\n  /**\n   * After protocol, in URL.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit(\"autolinkProtocol\");\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n\n    // ASCII control, space, or `<`.\n    if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return urlInside;\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code);\n      return emailAtSignOrDot;\n    }\n    if (asciiAtext(code)) {\n      effects.consume(code);\n      return emailAtext;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In label, after at-sign or dot.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                 ^       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are allowed.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code);\n      size = 0;\n      return emailAtSignOrDot;\n    }\n    if (code === 62) {\n      // Exit, then change the token type.\n      effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n    return emailValue(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are *not* allowed.\n   *\n   * Though, this is also used in `emailLabel` to parse other values.\n   *\n   * ```markdown\n   * > | a<user.name@ex-ample.com>b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailValue(code) {\n    // ASCII alphanumeric or `-`.\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      const next = code === 45 ? emailValue : emailLabel;\n      effects.consume(code);\n      return next;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n  partial: true,\n  tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of blank line.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *     ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n  }\n\n  /**\n   * At eof/eol, after optional whitespace.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *       ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit,\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of block quote.\n   *\n   * ```markdown\n   * > | > a\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 62) {\n      const state = self.containerState;\n      if (!state.open) {\n        effects.enter(\"blockQuote\", {\n          _container: true\n        });\n        state.open = true;\n      }\n      effects.enter(\"blockQuotePrefix\");\n      effects.enter(\"blockQuoteMarker\");\n      effects.consume(code);\n      effects.exit(\"blockQuoteMarker\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>`, before optional whitespace.\n   *\n   * ```markdown\n   * > | > a\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"blockQuotePrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"blockQuotePrefixWhitespace\");\n      effects.exit(\"blockQuotePrefix\");\n      return ok;\n    }\n    effects.exit(\"blockQuotePrefix\");\n    return ok(code);\n  }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n *   | > a\n * > | > b\n *     ^\n * ```\n *\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  const self = this;\n  return contStart;\n\n  /**\n   * Start of block quote continuation.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contStart(code) {\n    if (markdownSpace(code)) {\n      // Always populated by defaults.\n\n      return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n    }\n    return contBefore(code);\n  }\n\n  /**\n   * At `>`, after optional whitespace.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contBefore(code) {\n    return effects.attempt(blockQuote, ok, nok)(code);\n  }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n  effects.exit(\"blockQuote\");\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of character escape.\n   *\n   * ```markdown\n   * > | a\\*b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterEscape\");\n    effects.enter(\"escapeMarker\");\n    effects.consume(code);\n    effects.exit(\"escapeMarker\");\n    return inside;\n  }\n\n  /**\n   * After `\\`, at punctuation.\n   *\n   * ```markdown\n   * > | a\\*b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // ASCII punctuation.\n    if (asciiPunctuation(code)) {\n      effects.enter(\"characterEscapeValue\");\n      effects.consume(code);\n      effects.exit(\"characterEscapeValue\");\n      effects.exit(\"characterEscape\");\n      return ok;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this;\n  let size = 0;\n  /** @type {number} */\n  let max;\n  /** @type {(code: Code) => boolean} */\n  let test;\n  return start;\n\n  /**\n   * Start of character reference.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *      ^\n   * > | a&#123;b\n   *      ^\n   * > | a&#x9;b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterReference\");\n    effects.enter(\"characterReferenceMarker\");\n    effects.consume(code);\n    effects.exit(\"characterReferenceMarker\");\n    return open;\n  }\n\n  /**\n   * After `&`, at `#` for numeric references or alphanumeric for named\n   * references.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^\n   * > | a&#123;b\n   *       ^\n   * > | a&#x9;b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 35) {\n      effects.enter(\"characterReferenceMarkerNumeric\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerNumeric\");\n      return numeric;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 31;\n    test = asciiAlphanumeric;\n    return value(code);\n  }\n\n  /**\n   * After `#`, at `x` for hexadecimals or digit for decimals.\n   *\n   * ```markdown\n   * > | a&#123;b\n   *        ^\n   * > | a&#x9;b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter(\"characterReferenceMarkerHexadecimal\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerHexadecimal\");\n      effects.enter(\"characterReferenceValue\");\n      max = 6;\n      test = asciiHexDigit;\n      return value;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 7;\n    test = asciiDigit;\n    return value(code);\n  }\n\n  /**\n   * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n   *\n   * The character reference kind defines what and how many characters are\n   * allowed.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^^^\n   * > | a&#123;b\n   *        ^^^\n   * > | a&#x9;b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function value(code) {\n    if (code === 59 && size) {\n      const token = effects.exit(\"characterReferenceValue\");\n      if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n        return nok(code);\n      }\n\n      // To do: `markdown-rs` uses a different name:\n      // `CharacterReferenceMarkerSemi`.\n      effects.enter(\"characterReferenceMarker\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarker\");\n      effects.exit(\"characterReference\");\n      return ok;\n    }\n    if (test(code) && size++ < max) {\n      effects.consume(code);\n      return value;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n  concrete: true,\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this;\n  /** @type {Construct} */\n  const closeStart = {\n    partial: true,\n    tokenize: tokenizeCloseStart\n  };\n  let initialPrefix = 0;\n  let sizeOpen = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of code.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse whitespace like `markdown-rs`.\n    return beforeSequenceOpen(code);\n  }\n\n  /**\n   * In opening fence, after prefix, at sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeSequenceOpen(code) {\n    const tail = self.events[self.events.length - 1];\n    initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n    marker = code;\n    effects.enter(\"codeFenced\");\n    effects.enter(\"codeFencedFence\");\n    effects.enter(\"codeFencedFenceSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening fence sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *      ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === marker) {\n      sizeOpen++;\n      effects.consume(code);\n      return sequenceOpen;\n    }\n    if (sizeOpen < 3) {\n      return nok(code);\n    }\n    effects.exit(\"codeFencedFenceSequence\");\n    return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n  }\n\n  /**\n   * In opening fence, after the sequence (and optional whitespace), before info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function infoBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFencedFence\");\n      return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFencedFenceInfo\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return info(code);\n  }\n\n  /**\n   * In info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function info(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return infoBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return factorySpace(effects, metaBefore, \"whitespace\")(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return info;\n  }\n\n  /**\n   * In opening fence, after info and whitespace, before meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function metaBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return infoBefore(code);\n    }\n    effects.enter(\"codeFencedFenceMeta\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return meta(code);\n  }\n\n  /**\n   * In meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceMeta\");\n      return infoBefore(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return meta;\n  }\n\n  /**\n   * At eol/eof in code, before a non-lazy closing fence or content.\n   *\n   * ```markdown\n   * > | ~~~js\n   *          ^\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function atNonLazyBreak(code) {\n    return effects.attempt(closeStart, after, contentBefore)(code);\n  }\n\n  /**\n   * Before code content, not a closing fence, at eol.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentBefore(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return contentStart;\n  }\n\n  /**\n   * Before code content, not a closing fence.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentStart(code) {\n    return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n  }\n\n  /**\n   * Before code content, after optional prefix.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeContentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return contentChunk(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^^^^^^^^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return beforeContentChunk(code);\n    }\n    effects.consume(code);\n    return contentChunk;\n  }\n\n  /**\n   * After code.\n   *\n   * ```markdown\n   *   | ~~~js\n   *   | alert(1)\n   * > | ~~~\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    effects.exit(\"codeFenced\");\n    return ok(code);\n  }\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Tokenizer}\n   */\n  function tokenizeCloseStart(effects, ok, nok) {\n    let size = 0;\n    return startBefore;\n\n    /**\n     *\n     *\n     * @type {State}\n     */\n    function startBefore(code) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return start;\n    }\n\n    /**\n     * Before closing fence, at optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // Always populated by defaults.\n\n      // To do: `enter` here or in next state?\n      effects.enter(\"codeFencedFence\");\n      return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n    }\n\n    /**\n     * In closing fence, after optional whitespace, at sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function beforeSequenceClose(code) {\n      if (code === marker) {\n        effects.enter(\"codeFencedFenceSequence\");\n        return sequenceClose(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * In closing fence sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceClose(code) {\n      if (code === marker) {\n        size++;\n        effects.consume(code);\n        return sequenceClose;\n      }\n      if (size >= sizeOpen) {\n        effects.exit(\"codeFencedFenceSequence\");\n        return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * After closing fence sequence, after optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceCloseAfter(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit(\"codeFencedFence\");\n        return ok(code);\n      }\n      return nok(code);\n    }\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineStart;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function lineStart(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n  partial: true,\n  tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of code (indented).\n   *\n   * > **Parsing note**: it is not needed to check if this first line is a\n   * > filled line (that it has a non-whitespace character), because blank lines\n   * > are parsed already, so we never run into that.\n   *\n   * ```markdown\n   * > |     aaa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: manually check if interrupting like `markdown-rs`.\n\n    effects.enter(\"codeIndented\");\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n  }\n\n  /**\n   * At a break.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === null) {\n      return after(code);\n    }\n    if (markdownLineEnding(code)) {\n      return effects.attempt(furtherStart, atBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return inside(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return inside;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    effects.exit(\"codeIndented\");\n    // To do: allow interrupting like `markdown-rs`.\n    // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n  const self = this;\n  return furtherStart;\n\n  /**\n   * At eol, trying to parse another indent.\n   *\n   * ```markdown\n   * > |     aaa\n   *            ^\n   *   |     bbb\n   * ```\n   *\n   * @type {State}\n   */\n  function furtherStart(code) {\n    // To do: improve `lazy` / `pierce` handling.\n    // If this is a lazy line, it can’t be code.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return furtherStart;\n    }\n\n    // To do: the code here in `micromark-js` is a bit different from\n    // `markdown-rs` because there it can attempt spaces.\n    // We can’t yet.\n    //\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Previous,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n  name: 'codeText',\n  previous,\n  resolve: resolveCodeText,\n  tokenize: tokenizeCodeText\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4;\n  let headEnterIndex = 3;\n  /** @type {number} */\n  let index;\n  /** @type {number | undefined} */\n  let enter;\n\n  // If we start and end with an EOL or a space.\n  if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n    index = headEnterIndex;\n\n    // And we have data.\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === \"codeTextData\") {\n        // Then we have padding.\n        events[headEnterIndex][1].type = \"codeTextPadding\";\n        events[tailExitIndex][1].type = \"codeTextPadding\";\n        headEnterIndex += 2;\n        tailExitIndex -= 2;\n        break;\n      }\n    }\n  }\n\n  // Merge adjacent spaces and data.\n  index = headEnterIndex - 1;\n  tailExitIndex++;\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n        enter = index;\n      }\n    } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n      events[enter][1].type = \"codeTextData\";\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end;\n        events.splice(enter + 2, index - enter - 2);\n        tailExitIndex -= index - enter - 2;\n        index = enter + 2;\n      }\n      enter = undefined;\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Previous}\n */\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this;\n  let sizeOpen = 0;\n  /** @type {number} */\n  let size;\n  /** @type {Token} */\n  let token;\n  return start;\n\n  /**\n   * Start of code (text).\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * > | \\`a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"codeText\");\n    effects.enter(\"codeTextSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 96) {\n      effects.consume(code);\n      sizeOpen++;\n      return sequenceOpen;\n    }\n    effects.exit(\"codeTextSequence\");\n    return between(code);\n  }\n\n  /**\n   * Between something and something else.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function between(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code);\n    }\n\n    // To do: next major: don’t do spaces in resolve, but when compiling,\n    // like `markdown-rs`.\n    // Tabs don’t work, and virtual spaces don’t make sense.\n    if (code === 32) {\n      effects.enter('space');\n      effects.consume(code);\n      effects.exit('space');\n      return between;\n    }\n\n    // Closing fence? Could also be data.\n    if (code === 96) {\n      token = effects.enter(\"codeTextSequence\");\n      size = 0;\n      return sequenceClose(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return between;\n    }\n\n    // Data.\n    effects.enter(\"codeTextData\");\n    return data(code);\n  }\n\n  /**\n   * In data.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n      effects.exit(\"codeTextData\");\n      return between(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n\n  /**\n   * In closing sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceClose(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code);\n      size++;\n      return sequenceClose;\n    }\n\n    // Done!\n    if (size === sizeOpen) {\n      effects.exit(\"codeTextSequence\");\n      effects.exit(\"codeText\");\n      return ok(code);\n    }\n\n    // More or less accents: mark as data.\n    token.type = \"codeTextData\";\n    return data(code);\n  }\n}","/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n *  - Array-length modifications at the high end of an array (push/pop) are\n *    expected to be common and are implemented in (amortized) time\n *    proportional to the number of elements added or removed, whereas\n *    other operations (shift/unshift and splice) are much less efficient.\n *  - Function arguments are passed on the stack, so adding tens of thousands\n *    of elements to an array with `arr.push(...newElements)` will frequently\n *    cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n *   Item type.\n */\nexport class SpliceBuffer {\n  /**\n   * @param {ReadonlyArray<T> | null | undefined} [initial]\n   *   Initial items (optional).\n   * @returns\n   *   Splice buffer.\n   */\n  constructor(initial) {\n    /** @type {Array<T>} */\n    this.left = initial ? [...initial] : [];\n    /** @type {Array<T>} */\n    this.right = [];\n  }\n\n  /**\n   * Array access;\n   * does not move the cursor.\n   *\n   * @param {number} index\n   *   Index.\n   * @return {T}\n   *   Item.\n   */\n  get(index) {\n    if (index < 0 || index >= this.left.length + this.right.length) {\n      throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n    }\n    if (index < this.left.length) return this.left[index];\n    return this.right[this.right.length - index + this.left.length - 1];\n  }\n\n  /**\n   * The length of the splice buffer, one greater than the largest index in the\n   * array.\n   */\n  get length() {\n    return this.left.length + this.right.length;\n  }\n\n  /**\n   * Remove and return `list[0]`;\n   * moves the cursor to `0`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  shift() {\n    this.setCursor(0);\n    return this.right.pop();\n  }\n\n  /**\n   * Slice the buffer to get an array;\n   * does not move the cursor.\n   *\n   * @param {number} start\n   *   Start.\n   * @param {number | null | undefined} [end]\n   *   End (optional).\n   * @returns {Array<T>}\n   *   Array of items.\n   */\n  slice(start, end) {\n    /** @type {number} */\n    const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n    if (stop < this.left.length) {\n      return this.left.slice(start, stop);\n    }\n    if (start > this.left.length) {\n      return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n    }\n    return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n  }\n\n  /**\n   * Mimics the behavior of Array.prototype.splice() except for the change of\n   * interface necessary to avoid segfaults when patching in very large arrays.\n   *\n   * This operation moves cursor is moved to `start` and results in the cursor\n   * placed after any inserted items.\n   *\n   * @param {number} start\n   *   Start;\n   *   zero-based index at which to start changing the array;\n   *   negative numbers count backwards from the end of the array and values\n   *   that are out-of bounds are clamped to the appropriate end of the array.\n   * @param {number | null | undefined} [deleteCount=0]\n   *   Delete count (default: `0`);\n   *   maximum number of elements to delete, starting from start.\n   * @param {Array<T> | null | undefined} [items=[]]\n   *   Items to include in place of the deleted items (default: `[]`).\n   * @return {Array<T>}\n   *   Any removed items.\n   */\n  splice(start, deleteCount, items) {\n    /** @type {number} */\n    const count = deleteCount || 0;\n    this.setCursor(Math.trunc(start));\n    const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n    if (items) chunkedPush(this.left, items);\n    return removed.reverse();\n  }\n\n  /**\n   * Remove and return the highest-numbered item in the array, so\n   * `list[list.length - 1]`;\n   * Moves the cursor to `length`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  pop() {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    return this.left.pop();\n  }\n\n  /**\n   * Inserts a single item to the high-numbered side of the array;\n   * moves the cursor to `length`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  push(item) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    this.left.push(item);\n  }\n\n  /**\n   * Inserts many items to the high-numbered side of the array.\n   * Moves the cursor to `length`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  pushMany(items) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    chunkedPush(this.left, items);\n  }\n\n  /**\n   * Inserts a single item to the low-numbered side of the array;\n   * Moves the cursor to `0`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshift(item) {\n    this.setCursor(0);\n    this.right.push(item);\n  }\n\n  /**\n   * Inserts many items to the low-numbered side of the array;\n   * moves the cursor to `0`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshiftMany(items) {\n    this.setCursor(0);\n    chunkedPush(this.right, items.reverse());\n  }\n\n  /**\n   * Move the cursor to a specific position in the array. Requires\n   * time proportional to the distance moved.\n   *\n   * If `n < 0`, the cursor will end up at the beginning.\n   * If `n > length`, the cursor will end up at the end.\n   *\n   * @param {number} n\n   *   Position.\n   * @return {undefined}\n   *   Nothing.\n   */\n  setCursor(n) {\n    if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n    if (n < this.left.length) {\n      // Move cursor to the this.left\n      const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.right, removed.reverse());\n    } else {\n      // Move cursor to the this.right\n      const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.left, removed.reverse());\n    }\n  }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n *   Item type.\n * @param {Array<T>} list\n *   List to inject into.\n * @param {ReadonlyArray<T>} right\n *   Items to inject.\n * @return {undefined}\n *   Nothing.\n */\nfunction chunkedPush(list, right) {\n  /** @type {number} */\n  let chunkStart = 0;\n  if (right.length < 10000) {\n    list.push(...right);\n  } else {\n    while (chunkStart < right.length) {\n      list.push(...right.slice(chunkStart, chunkStart + 10000));\n      chunkStart += 10000;\n    }\n  }\n}","/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n *   List of events.\n * @returns {boolean}\n *   Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n  /** @type {Record<string, number>} */\n  const jumps = {};\n  let index = -1;\n  /** @type {Event} */\n  let event;\n  /** @type {number | undefined} */\n  let lineIndex;\n  /** @type {number} */\n  let otherIndex;\n  /** @type {Event} */\n  let otherEvent;\n  /** @type {Array<Event>} */\n  let parameters;\n  /** @type {Array<Event>} */\n  let subevents;\n  /** @type {boolean | undefined} */\n  let more;\n  const events = new SpliceBuffer(eventsArray);\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index];\n    }\n    event = events.get(index);\n\n    // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n    if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n      subevents = event[1]._tokenizer.events;\n      otherIndex = 0;\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n        otherIndex += 2;\n      }\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === \"content\") {\n            break;\n          }\n          if (subevents[otherIndex][1].type === \"chunkText\") {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n            otherIndex++;\n          }\n        }\n      }\n    }\n\n    // Enter.\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index));\n        index = jumps[index];\n        more = true;\n      }\n    }\n    // Exit.\n    else if (event[1]._container) {\n      otherIndex = index;\n      lineIndex = undefined;\n      while (otherIndex--) {\n        otherEvent = events.get(otherIndex);\n        if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events.get(lineIndex)[1].type = \"lineEndingBlank\";\n            }\n            otherEvent[1].type = \"lineEnding\";\n            lineIndex = otherIndex;\n          }\n        } else if (otherEvent[1].type === \"linePrefix\" || otherEvent[1].type === \"listItemIndent\") {\n          // Move past.\n        } else {\n          break;\n        }\n      }\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = {\n          ...events.get(lineIndex)[1].start\n        };\n\n        // Switch container exit w/ line endings.\n        parameters = events.slice(lineIndex, index);\n        parameters.unshift(event);\n        events.splice(lineIndex, index - lineIndex + 1, parameters);\n      }\n    }\n  }\n\n  // The changes to the `events` buffer must be copied back into the eventsArray\n  splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n  return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n *   Events.\n * @param {number} eventIndex\n *   Index.\n * @returns {Record<string, number>}\n *   Gaps.\n */\nfunction subcontent(events, eventIndex) {\n  const token = events.get(eventIndex)[1];\n  const context = events.get(eventIndex)[2];\n  let startPosition = eventIndex - 1;\n  /** @type {Array<number>} */\n  const startPositions = [];\n  let tokenizer = token._tokenizer;\n  if (!tokenizer) {\n    tokenizer = context.parser[token.contentType](token.start);\n    if (token._contentTypeTextTrailing) {\n      tokenizer._contentTypeTextTrailing = true;\n    }\n  }\n  const childEvents = tokenizer.events;\n  /** @type {Array<[number, number]>} */\n  const jumps = [];\n  /** @type {Record<string, number>} */\n  const gaps = {};\n  /** @type {Array<Chunk>} */\n  let stream;\n  /** @type {Token | undefined} */\n  let previous;\n  let index = -1;\n  /** @type {Token | undefined} */\n  let current = token;\n  let adjust = 0;\n  let start = 0;\n  const breaks = [start];\n\n  // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n  while (current) {\n    // Find the position of the event for this token.\n    while (events.get(++startPosition)[1] !== current) {\n      // Empty.\n    }\n    startPositions.push(startPosition);\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current);\n      if (!current.next) {\n        stream.push(null);\n      }\n      if (previous) {\n        tokenizer.defineSkip(current.start);\n      }\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true;\n      }\n      tokenizer.write(stream);\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n      }\n    }\n\n    // Unravel the next token.\n    previous = current;\n    current = current.next;\n  }\n\n  // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n  current = token;\n  while (++index < childEvents.length) {\n    if (\n    // Find a void token that includes a break.\n    childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n      start = index + 1;\n      breaks.push(start);\n      // Help GC.\n      current._tokenizer = undefined;\n      current.previous = undefined;\n      current = current.next;\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = [];\n\n  // If there’s one more token (which is the cases for lines that end in an\n  // EOF), that’s perfect: the last point we found starts it.\n  // If there isn’t then make sure any remaining content is added to it.\n  if (current) {\n    // Help GC.\n    current._tokenizer = undefined;\n    current.previous = undefined;\n  } else {\n    breaks.pop();\n  }\n\n  // Now splice the events from the subtokenizer into the current events,\n  // moving back to front so that splice indices aren’t affected.\n  index = breaks.length;\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n    const start = startPositions.pop();\n    jumps.push([start, start + slice.length - 1]);\n    events.splice(start, 2, slice);\n  }\n  jumps.reverse();\n  index = -1;\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n    adjust += jumps[index][1] - jumps[index][0] - 1;\n  }\n  return gaps;\n}","/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n  resolve: resolveContent,\n  tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n  partial: true,\n  tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n  subtokenize(events);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token | undefined} */\n  let previous;\n  return chunkStart;\n\n  /**\n   * Before a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkStart(code) {\n    effects.enter(\"content\");\n    previous = effects.enter(\"chunkContent\", {\n      contentType: \"content\"\n    });\n    return chunkInside(code);\n  }\n\n  /**\n   * In a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkInside(code) {\n    if (code === null) {\n      return contentEnd(code);\n    }\n\n    // To do: in `markdown-rs`, each line is parsed on its own, and everything\n    // is stitched together resolving.\n    if (markdownLineEnding(code)) {\n      return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n    }\n\n    // Data.\n    effects.consume(code);\n    return chunkInside;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentEnd(code) {\n    effects.exit(\"chunkContent\");\n    effects.exit(\"content\");\n    return ok(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentContinue(code) {\n    effects.consume(code);\n    effects.exit(\"chunkContent\");\n    previous.next = effects.enter(\"chunkContent\", {\n      contentType: \"content\",\n      previous\n    });\n    previous = previous.next;\n    return chunkInside;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this;\n  return startLookahead;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function startLookahead(code) {\n    effects.exit(\"chunkContent\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, prefixed, \"linePrefix\");\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n\n    // Always populated by defaults.\n\n    const tail = self.events[self.events.length - 1];\n    if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n      return ok(code);\n    }\n    return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n  }\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n *   Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n *   Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n *   Type when not enclosed (`b`).\n * @param {TokenType} stringType\n *   Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n *   Depth of nested parens (inclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n  const limit = max || Number.POSITIVE_INFINITY;\n  let balance = 0;\n  return start;\n\n  /**\n   * Start of destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *     ^\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type);\n      effects.enter(literalType);\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      return enclosedBefore;\n    }\n\n    // ASCII control, space, closing paren.\n    if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.enter(type);\n    effects.enter(rawType);\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return raw(code);\n  }\n\n  /**\n   * After `<`, at an enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      effects.exit(literalType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return enclosed(code);\n  }\n\n  /**\n   * In enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosed(code) {\n    if (code === 62) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      return enclosedBefore(code);\n    }\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? enclosedEscape : enclosed;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | <a\\*a>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code);\n      return enclosed;\n    }\n    return enclosed(code);\n  }\n\n  /**\n   * In raw destination.\n   *\n   * ```markdown\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function raw(code) {\n    if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      effects.exit(rawType);\n      effects.exit(type);\n      return ok(code);\n    }\n    if (balance < limit && code === 40) {\n      effects.consume(code);\n      balance++;\n      return raw;\n    }\n    if (code === 41) {\n      effects.consume(code);\n      balance--;\n      return raw;\n    }\n\n    // ASCII control (but *not* `\\0`) and space and `(`.\n    // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n    // doesn’t.\n    if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? rawEscape : raw;\n  }\n\n  /**\n   * After `\\`, at special character.\n   *\n   * ```markdown\n   * > | a\\*a\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function rawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code);\n      return raw;\n    }\n    return raw(code);\n  }\n}","/**\n * @import {\n *   Effects,\n *   State,\n *   TokenizeContext,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n *   Tokenize context.\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n *   Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n *   Type for the identifier (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self = this;\n  let size = 0;\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /**\n   * Start of label.\n   *\n   * ```markdown\n   * > | [a]\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(type);\n    effects.enter(markerType);\n    effects.consume(code);\n    effects.exit(markerType);\n    effects.enter(stringType);\n    return atBreak;\n  }\n\n  /**\n   * In label, at something, before something else.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n    // To do: remove in the future once we’ve switched from\n    // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n    // which doesn’t need this.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit(stringType);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n\n    // To do: indent? Link chunks and EOLs together?\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return atBreak;\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return labelInside(code);\n  }\n\n  /**\n   * In label, in text.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    if (!seen) seen = !markdownSpace(code);\n    return code === 92 ? labelEscape : labelInside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | [a\\*a]\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Effects,\n *   State,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n *     b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n *   Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n *   Type for the value (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of title.\n   *\n   * ```markdown\n   * > | \"a\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      effects.enter(type);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      marker = code === 40 ? 41 : code;\n      return begin;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After opening marker.\n   *\n   * This is also used at the closing marker.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function begin(code) {\n    if (code === marker) {\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    return atBreak(code);\n  }\n\n  /**\n   * At something, before something else.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType);\n      return begin(marker);\n    }\n    if (code === null) {\n      return nok(code);\n    }\n\n    // Note: blank lines can’t exist in content.\n    if (markdownLineEnding(code)) {\n      // To do: use `space_or_tab_eol_with_options`, connect.\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return factorySpace(effects, atBreak, \"linePrefix\");\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return inside(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? escape : inside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | \"a\\*b\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function escape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code);\n      return inside;\n    }\n    return inside(code);\n  }\n}","/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   line endings or spaces in markdown are often optional, in which case this\n *     factory can be used and `ok` will be switched to whether spaces were found\n *     or not\n * *   one line ending or space can be detected with\n *     `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @returns {State}\n *   Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      seen = true;\n      return start;\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n    }\n    return ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n  partial: true,\n  tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this;\n  /** @type {string} */\n  let identifier;\n  return start;\n\n  /**\n   * At start of a definition.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Do not interrupt paragraphs (but do follow definitions).\n    // To do: do `interrupt` the way `markdown-rs` does.\n    // To do: parse whitespace the way `markdown-rs` does.\n    effects.enter(\"definition\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `[`.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    // To do: parse whitespace the way `markdown-rs` does.\n\n    return factoryLabel.call(self, effects, labelAfter,\n    // Note: we don’t need to reset the way `markdown-rs` does.\n    nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n  }\n\n  /**\n   * After label.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n    if (code === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code);\n      effects.exit(\"definitionMarker\");\n      return markerAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After marker.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function markerAfter(code) {\n    // Note: whitespace is optional.\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n  }\n\n  /**\n   * Before destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationBefore(code) {\n    return factoryDestination(effects, destinationAfter,\n    // Note: we don’t need to reset the way `markdown-rs` does.\n    nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n  }\n\n  /**\n   * After destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationAfter(code) {\n    return effects.attempt(titleBefore, after, after)(code);\n  }\n\n  /**\n   * After definition.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n  }\n\n  /**\n   * After definition, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterWhitespace(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"definition\");\n\n      // Note: we don’t care about uniqueness.\n      // It’s likely that that doesn’t happen very frequently.\n      // It is more likely that it wastes precious time.\n      self.parser.defined.push(identifier);\n\n      // To do: `markdown-rs` interrupt.\n      // // You’d be interrupting.\n      // tokenizer.interrupt = true\n      return ok(code);\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n  return titleBefore;\n\n  /**\n   * After destination, at whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n  }\n\n  /**\n   * At title.\n   *\n   * ```markdown\n   *   | [a]: b\n   * > | \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeMarker(code) {\n    return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n  }\n\n  /**\n   * After title.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfter(code) {\n    return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n  }\n\n  /**\n   * After title, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfterOptionalWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of a hard break (escape).\n   *\n   * ```markdown\n   * > | a\\\n   *      ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"hardBreakEscape\");\n    effects.consume(code);\n    return after;\n  }\n\n  /**\n   * After `\\`, at eol.\n   *\n   * ```markdown\n   * > | a\\\n   *       ^\n   *   | b\n   * ```\n   *\n   *  @type {State}\n   */\n  function after(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit(\"hardBreakEscape\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n  name: 'headingAtx',\n  resolve: resolveHeadingAtx,\n  tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2;\n  let contentStart = 3;\n  /** @type {Token} */\n  let content;\n  /** @type {Token} */\n  let text;\n\n  // Prefix whitespace, part of the opening.\n  if (events[contentStart][1].type === \"whitespace\") {\n    contentStart += 2;\n  }\n\n  // Suffix whitespace, part of the closing.\n  if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n    contentEnd -= 2;\n  }\n  if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n  }\n  if (contentEnd > contentStart) {\n    content = {\n      type: \"atxHeadingText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    };\n    text = {\n      type: \"chunkText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: \"text\"\n    };\n    splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of a heading (atx).\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    effects.enter(\"atxHeading\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `#`.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"atxHeadingSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code);\n      return sequenceOpen;\n    }\n\n    // Always at least one `#`.\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingSequence\");\n      return atBreak(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ## aa\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === 35) {\n      effects.enter(\"atxHeadingSequence\");\n      return sequenceFurther(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"atxHeading\");\n      // To do: interrupt like `markdown-rs`.\n      // // Feel free to interrupt.\n      // tokenizer.interrupt = false\n      return ok(code);\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, \"whitespace\")(code);\n    }\n\n    // To do: generate `data` tokens, add the `text` token later.\n    // Needs edit map, see: `markdown.rs`.\n    effects.enter(\"atxHeadingText\");\n    return data(code);\n  }\n\n  /**\n   * In further sequence (after whitespace).\n   *\n   * Could be normal “visible” hashes in the heading or a final sequence.\n   *\n   * ```markdown\n   * > | ## aa ##\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceFurther(code) {\n    if (code === 35) {\n      effects.consume(code);\n      return sequenceFurther;\n    }\n    effects.exit(\"atxHeadingSequence\");\n    return atBreak(code);\n  }\n\n  /**\n   * In text.\n   *\n   * ```markdown\n   * > | ## aa\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingText\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n}","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'search',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n  concrete: true,\n  name: 'htmlFlow',\n  resolveTo: resolveToHtmlFlow,\n  tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n  partial: true,\n  tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n      break;\n    }\n  }\n  if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start;\n    // Add the prefix start to the HTML line token.\n    events[index + 1][1].start = events[index - 2][1].start;\n    // Remove the line prefix.\n    events.splice(index - 2, 2);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this;\n  /** @type {number} */\n  let marker;\n  /** @type {boolean} */\n  let closingTag;\n  /** @type {string} */\n  let buffer;\n  /** @type {number} */\n  let index;\n  /** @type {Code} */\n  let markerB;\n  return start;\n\n  /**\n   * Start of HTML (flow).\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * At `<`, after optional whitespace.\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"htmlFlow\");\n    effects.enter(\"htmlFlowData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | <x />\n   *      ^\n   * > | <!doctype>\n   *      ^\n   * > | <!--xxx-->\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      closingTag = true;\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      marker = 3;\n      // To do:\n      // tokenizer.concrete = true\n      // To do: use `markdown-rs` style interrupt.\n      // While we’re in an instruction instead of a declaration, we’re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *       ^\n   * > | <!--xxx-->\n   *       ^\n   * > | <![CDATA[>&<]]>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      marker = 2;\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      marker = 5;\n      index = 0;\n      return cdataOpenInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      marker = 4;\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!-`, inside a comment, at another `-`.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<![`, inside CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *        ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      if (index === value.length) {\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok : continuation;\n      }\n      return cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | </x>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In tag name.\n   *\n   * ```markdown\n   * > | <ab>\n   *      ^^\n   * > | </ab>\n   *       ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagName(code) {\n    if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      const slash = code === 47;\n      const name = buffer.toLowerCase();\n      if (!slash && !closingTag && htmlRawNames.includes(name)) {\n        marker = 1;\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        marker = 6;\n        if (slash) {\n          effects.consume(code);\n          return basicSelfClosing;\n        }\n\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      marker = 7;\n      // Do not support complete HTML when interrupting.\n      return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n    }\n\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a basic tag name.\n   *\n   * ```markdown\n   * > | <div/>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuation;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a complete tag name.\n   *\n   * ```markdown\n   * > | <x/>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeClosingTagAfter;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * At an attribute name.\n   *\n   * At first, this state is used after a complete tag name, after whitespace,\n   * where it expects optional attributes or the end of the tag.\n   * It is also reused after attributes, when expecting more optional\n   * attributes.\n   *\n   * ```markdown\n   * > | <a />\n   *        ^\n   * > | <a :b>\n   *        ^\n   * > | <a _b>\n   *        ^\n   * > | <a b>\n   *        ^\n   * > | <a >\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return completeEnd;\n    }\n\n    // ASCII alphanumerical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameBefore;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | <a :b>\n   *         ^\n   * > | <a _b>\n   *         ^\n   * > | <a b>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeName(code) {\n    // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    return completeAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, at an optional initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b>\n   *         ^\n   * > | <a b=c>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameAfter;\n    }\n    return completeAttributeNameBefore(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * > | <a b=\"c\">\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      markerB = code;\n      return completeAttributeValueQuoted;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    return completeAttributeValueUnquoted(code);\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *           ^\n   * > | <a b='c'>\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuoted(code) {\n    if (code === markerB) {\n      effects.consume(code);\n      markerB = null;\n      return completeAttributeValueQuotedAfter;\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n      return completeAttributeNameAfter(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the\n   * end of the tag.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a complete tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>` in a complete tag.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return continuation(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In continuation of any HTML kind.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuation(code) {\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationCommentInside;\n    }\n    if (code === 60 && marker === 1) {\n      effects.consume(code);\n      return continuationRawTagOpen;\n    }\n    if (code === 62 && marker === 4) {\n      effects.consume(code);\n      return continuationClose;\n    }\n    if (code === 63 && marker === 3) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    if (code === 93 && marker === 5) {\n      effects.consume(code);\n      return continuationCdataInside;\n    }\n    if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n      effects.exit(\"htmlFlowData\");\n      return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationStart(code);\n    }\n    effects.consume(code);\n    return continuation;\n  }\n\n  /**\n   * In continuation, at eol.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStart(code) {\n    return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n  }\n\n  /**\n   * In continuation, at eol, before non-lazy content.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStartNonLazy(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return continuationBefore;\n  }\n\n  /**\n   * In continuation, before non-lazy content.\n   *\n   * ```markdown\n   *   | <x>\n   * > | asd\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return continuationStart(code);\n    }\n    effects.enter(\"htmlFlowData\");\n    return continuation(code);\n  }\n\n  /**\n   * In comment continuation, after one `-`, expecting another.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `<`, at `/`.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code);\n      buffer = '';\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `</`, in a raw tag name.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                             ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawEndTag(code) {\n    if (code === 62) {\n      const name = buffer.toLowerCase();\n      if (htmlRawNames.includes(name)) {\n        effects.consume(code);\n        return continuationClose;\n      }\n      return continuation(code);\n    }\n    if (asciiAlpha(code) && buffer.length < 8) {\n      // Always the case.\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In cdata continuation, after `]`, expecting `]>`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *                  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCdataInside(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In declaration or instruction continuation, at `>`.\n   *\n   * ```markdown\n   * > | <!-->\n   *         ^\n   * > | <?>\n   *       ^\n   * > | <!q>\n   *        ^\n   * > | <!--ab-->\n   *             ^\n   * > | <![CDATA[>&<]]>\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return continuationClose;\n    }\n\n    // More dashes.\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In closed continuation: everything we get until the eol/eof is part of it.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationAfter(code);\n    }\n    effects.consume(code);\n    return continuationClose;\n  }\n\n  /**\n   * Done.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationAfter(code) {\n    effects.exit(\"htmlFlow\");\n    // // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    // // No longer concrete.\n    // tokenizer.concrete = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * At eol, before continuation.\n   *\n   * ```markdown\n   * > | * ```js\n   *            ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * A continuation.\n   *\n   * ```markdown\n   *   | * ```js\n   * > | b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n  return start;\n\n  /**\n   * Before eol, expecting blank line.\n   *\n   * ```markdown\n   * > | <div>\n   *          ^\n   *   |\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return effects.attempt(blankLine, ok, nok);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code> | undefined} */\n  let marker;\n  /** @type {number} */\n  let index;\n  /** @type {State} */\n  let returnState;\n  return start;\n\n  /**\n   * Start of HTML (text).\n   *\n   * ```markdown\n   * > | a <b> c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"htmlText\");\n    effects.enter(\"htmlTextData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | a <b> c\n   *        ^\n   * > | a <!doctype> c\n   *        ^\n   * > | a <!--b--> c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instruction;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | a <!doctype> c\n   *         ^\n   * > | a <!--b--> c\n   *         ^\n   * > | a <![CDATA[>&<]]> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      index = 0;\n      return cdataOpenInside;\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return declaration;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In a comment, after `<!-`, at another `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In comment.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function comment(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 45) {\n      effects.consume(code);\n      return commentClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = comment;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return comment;\n  }\n\n  /**\n   * In comment, after `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return comment(code);\n  }\n\n  /**\n   * In comment, after `--`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentEnd(code) {\n    return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n  }\n\n  /**\n   * After `<![`, in CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *          ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      return index === value.length ? cdata : cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In CDATA.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdata(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = cdata;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return cdata;\n  }\n\n  /**\n   * In CDATA, after `]`, at another `]`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In CDATA, after `]]`, at `>`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In declaration.\n   *\n   * ```markdown\n   * > | a <!b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = declaration;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return declaration;\n  }\n\n  /**\n   * In instruction.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instruction(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instructionClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = instruction;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return instruction;\n  }\n\n  /**\n   * In instruction, after `?`, at `>`.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</x`, in a tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagClose(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return tagCloseBetween(code);\n  }\n\n  /**\n   * In closing tag, after tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagCloseBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * After `<x`, in opening tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpen(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In opening tag, after tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return end;\n    }\n\n    // ASCII alphabetical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeName(code) {\n    // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    return tagOpenAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, before initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeNameAfter;\n    }\n    return tagOpenBetween(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      marker = code;\n      return tagOpenAttributeValueQuoted;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code);\n      marker = undefined;\n      return tagOpenAttributeValueQuotedAfter;\n    }\n    if (code === null) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n      return nok(code);\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the end\n   * of the tag.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code);\n      effects.exit(\"htmlTextData\");\n      effects.exit(\"htmlText\");\n      return ok;\n    }\n    return nok(code);\n  }\n\n  /**\n   * At eol.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   * > | a <!--a\n   *            ^\n   *   | b-->\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingBefore(code) {\n    effects.exit(\"htmlTextData\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineEndingAfter;\n  }\n\n  /**\n   * After eol, at optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfter(code) {\n    // Always populated by defaults.\n\n    return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n  }\n\n  /**\n   * After eol, after optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfterPrefix(code) {\n    effects.enter(\"htmlTextData\");\n    return returnState(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Event,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n  name: 'labelEnd',\n  resolveAll: resolveAllLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n  tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n  tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n  let index = -1;\n  /** @type {Array<Event>} */\n  const newEvents = [];\n  while (++index < events.length) {\n    const token = events[index][1];\n    newEvents.push(events[index]);\n    if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n      // Remove the marker.\n      const offset = token.type === \"labelImage\" ? 4 : 2;\n      token.type = \"data\";\n      index += offset;\n    }\n  }\n\n  // If the events are equal, we don't have to copy newEvents to events\n  if (events.length !== newEvents.length) {\n    splice(events, 0, events.length, newEvents);\n  }\n  return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length;\n  let offset = 0;\n  /** @type {Token} */\n  let token;\n  /** @type {number | undefined} */\n  let open;\n  /** @type {number | undefined} */\n  let close;\n  /** @type {Array<Event>} */\n  let media;\n\n  // Find an opening.\n  while (index--) {\n    token = events[index][1];\n    if (open) {\n      // If we see another link, or inactive link label, we’ve been here before.\n      if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n        break;\n      }\n\n      // Mark other link openings as inactive, as we can’t have links in\n      // links.\n      if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n        token._inactive = true;\n      }\n    } else if (close) {\n      if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n        open = index;\n        if (token.type !== \"labelLink\") {\n          offset = 2;\n          break;\n        }\n      }\n    } else if (token.type === \"labelEnd\") {\n      close = index;\n    }\n  }\n  const group = {\n    type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n  const label = {\n    type: \"label\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[close][1].end\n    }\n  };\n  const text = {\n    type: \"labelText\",\n    start: {\n      ...events[open + offset + 2][1].end\n    },\n    end: {\n      ...events[close - 2][1].start\n    }\n  };\n  media = [['enter', group, context], ['enter', label, context]];\n\n  // Opening marker.\n  media = push(media, events.slice(open + 1, open + offset + 3));\n\n  // Text open.\n  media = push(media, [['enter', text, context]]);\n\n  // Always populated by defaults.\n\n  // Between.\n  media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n  // Text close, marker close, label close.\n  media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n  // Reference, resource, or so.\n  media = push(media, events.slice(close + 1));\n\n  // Media close.\n  media = push(media, [['exit', group, context]]);\n  splice(events, open, events.length, media);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this;\n  let index = self.events.length;\n  /** @type {Token} */\n  let labelStart;\n  /** @type {boolean} */\n  let defined;\n\n  // Find an opening.\n  while (index--) {\n    if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n      labelStart = self.events[index][1];\n      break;\n    }\n  }\n  return start;\n\n  /**\n   * Start of label end.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // If there is not an okay opening.\n    if (!labelStart) {\n      return nok(code);\n    }\n\n    // If the corresponding label (link) start is marked as inactive,\n    // it means we’d be wrapping a link, like this:\n    //\n    // ```markdown\n    // > | a [b [c](d) e](f) g.\n    //                  ^\n    // ```\n    //\n    // We can’t have that, so it’s just balanced brackets.\n    if (labelStart._inactive) {\n      return labelEndNok(code);\n    }\n    defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n      start: labelStart.end,\n      end: self.now()\n    })));\n    effects.enter(\"labelEnd\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelEnd\");\n    return after;\n  }\n\n  /**\n   * After `]`.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n    // an extension.\n\n    // Resource (`[asd](fgh)`)?\n    if (code === 40) {\n      return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n    }\n\n    // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n    if (code === 91) {\n      return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n    }\n\n    // Shortcut (`[asd]`) reference?\n    return defined ? labelEndOk(code) : labelEndNok(code);\n  }\n\n  /**\n   * After `]`, at `[`, but not at a full reference.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] b\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceNotFull(code) {\n    return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n  }\n\n  /**\n   * Done, we found something.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *           ^\n   * > | [a][b] c\n   *           ^\n   * > | [a][] b\n   *          ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndOk(code) {\n    // Note: `markdown-rs` does a bunch of stuff here.\n    return ok(code);\n  }\n\n  /**\n   * Done, it’s nothing.\n   *\n   * There was an okay opening, but we didn’t match anything.\n   *\n   * ```markdown\n   * > | [a](b c\n   *        ^\n   * > | [a][b c\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndNok(code) {\n    labelStart._balanced = true;\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n  return resourceStart;\n\n  /**\n   * At a resource.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceStart(code) {\n    effects.enter(\"resource\");\n    effects.enter(\"resourceMarker\");\n    effects.consume(code);\n    effects.exit(\"resourceMarker\");\n    return resourceBefore;\n  }\n\n  /**\n   * In resource, after `(`, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n  }\n\n  /**\n   * In resource, after optional whitespace, at `)` or a destination.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceOpen(code) {\n    if (code === 41) {\n      return resourceEnd(code);\n    }\n    return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n  }\n\n  /**\n   * In resource, after destination, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n  }\n\n  /**\n   * At invalid destination.\n   *\n   * ```markdown\n   * > | [a](<<) b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationMissing(code) {\n    return nok(code);\n  }\n\n  /**\n   * In resource, after destination and whitespace, at `(` or title.\n   *\n   * ```markdown\n   * > | [a](b ) c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBetween(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n    }\n    return resourceEnd(code);\n  }\n\n  /**\n   * In resource, after title, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b \"c\") d\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceTitleAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n  }\n\n  /**\n   * In resource, at `)`.\n   *\n   * ```markdown\n   * > | [a](b) d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceEnd(code) {\n    if (code === 41) {\n      effects.enter(\"resourceMarker\");\n      effects.consume(code);\n      effects.exit(\"resourceMarker\");\n      effects.exit(\"resource\");\n      return ok;\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n  const self = this;\n  return referenceFull;\n\n  /**\n   * In a reference (full), at the `[`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFull(code) {\n    return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n  }\n\n  /**\n   * In a reference (full), after `]`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullAfter(code) {\n    return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n  }\n\n  /**\n   * In reference (full) that was missing.\n   *\n   * ```markdown\n   * > | [a][b d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullMissing(code) {\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n  return referenceCollapsedStart;\n\n  /**\n   * In reference (collapsed), at `[`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceCollapsedStart(code) {\n    // We only attempt a collapsed label if there’s a `[`.\n\n    effects.enter(\"reference\");\n    effects.enter(\"referenceMarker\");\n    effects.consume(code);\n    effects.exit(\"referenceMarker\");\n    return referenceCollapsedOpen;\n  }\n\n  /**\n   * In reference (collapsed), at `]`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *         ^\n   * ```\n   *\n   *  @type {State}\n   */\n  function referenceCollapsedOpen(code) {\n    if (code === 93) {\n      effects.enter(\"referenceMarker\");\n      effects.consume(code);\n      effects.exit(\"referenceMarker\");\n      effects.exit(\"reference\");\n      return ok;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n  name: 'labelStartImage',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of label (image) start.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelImage\");\n    effects.enter(\"labelImageMarker\");\n    effects.consume(code);\n    effects.exit(\"labelImageMarker\");\n    return open;\n  }\n\n  /**\n   * After `!`, at `[`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 91) {\n      effects.enter(\"labelMarker\");\n      effects.consume(code);\n      effects.exit(\"labelMarker\");\n      effects.exit(\"labelImage\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `![`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *         ^\n   * ```\n   *\n   * This is needed in because, when GFM footnotes are enabled, images never\n   * form when started with a `^`.\n   * Instead, links form:\n   *\n   * ```markdown\n   * ![^a](b)\n   *\n   * ![^a][b]\n   *\n   * [b]: c\n   * ```\n   *\n   * ```html\n   * <p>!<a href=\\\"b\\\">^a</a></p>\n   * <p>!<a href=\\\"c\\\">^a</a></p>\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // To do: use a new field to do this, this is still needed for\n    // `micromark-extension-gfm-footnote`, but the `label-start-link`\n    // behavior isn’t.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n  name: 'labelStartLink',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of label (link) start.\n   *\n   * ```markdown\n   * > | a [b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelLink\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelLink\");\n    return after;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n    // remove.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, ok, \"linePrefix\");\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of thematic break.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"thematicBreak\");\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at marker.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    marker = code;\n    return atBreak(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter(\"thematicBreakSequence\");\n      return sequence(code);\n    }\n    if (size >= 3 && (code === null || markdownLineEnding(code))) {\n      effects.exit(\"thematicBreak\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code);\n      size++;\n      return sequence;\n    }\n    effects.exit(\"thematicBreakSequence\");\n    return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd,\n  name: 'list',\n  tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n  partial: true,\n  tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n  partial: true,\n  tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n  const self = this;\n  const tail = self.events[self.events.length - 1];\n  let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n    if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind;\n        effects.enter(kind, {\n          _container: true\n        });\n      }\n      if (kind === \"listUnordered\") {\n        effects.enter(\"listItemPrefix\");\n        return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n      }\n      if (!self.interrupt || code === 49) {\n        effects.enter(\"listItemPrefix\");\n        effects.enter(\"listItemValue\");\n        return inside(code);\n      }\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code);\n      return inside;\n    }\n    if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n      effects.exit(\"listItemValue\");\n      return atMarker(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * @type {State}\n   **/\n  function atMarker(code) {\n    effects.enter(\"listItemMarker\");\n    effects.consume(code);\n    effects.exit(\"listItemMarker\");\n    self.containerState.marker = self.containerState.marker || code;\n    return effects.check(blankLine,\n    // Can’t be empty when interrupting.\n    self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n  }\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true;\n    initialSize++;\n    return endOfPrefix(code);\n  }\n\n  /** @type {State} */\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"listItemPrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"listItemPrefixWhitespace\");\n      return endOfPrefix;\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function endOfPrefix(code) {\n    self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this;\n  self.containerState._closeFlow = undefined;\n  return effects.check(blankLine, onBlank, notBlank);\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n    // We have a blank line.\n    // Still, try to consume at most the items size.\n    return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n  }\n\n  /** @type {State} */\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = undefined;\n      self.containerState.initialBlankLine = undefined;\n      return notInCurrentItem(code);\n    }\n    self.containerState.furtherBlankLines = undefined;\n    self.containerState.initialBlankLine = undefined;\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n  }\n\n  /** @type {State} */\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true;\n    // As we’re closing flow, we’re no longer interrupting.\n    self.interrupt = undefined;\n    // Always populated by defaults.\n\n    return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this;\n  return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this;\n\n  // Always populated by defaults.\n\n  return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n  name: 'setextUnderline',\n  resolveTo: resolveToSetextUnderline,\n  tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n  // To do: resolve like `markdown-rs`.\n  let index = events.length;\n  /** @type {number | undefined} */\n  let content;\n  /** @type {number | undefined} */\n  let text;\n  /** @type {number | undefined} */\n  let definition;\n\n  // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === \"content\") {\n        content = index;\n        break;\n      }\n      if (events[index][1].type === \"paragraph\") {\n        text = index;\n      }\n    }\n    // Exit\n    else {\n      if (events[index][1].type === \"content\") {\n        // Remove the content end (if needed we’ll add it later)\n        events.splice(index, 1);\n      }\n      if (!definition && events[index][1].type === \"definition\") {\n        definition = index;\n      }\n    }\n  }\n  const heading = {\n    type: \"setextHeading\",\n    start: {\n      ...events[content][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n\n  // Change the paragraph to setext heading text.\n  events[text][1].type = \"setextHeadingText\";\n\n  // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context]);\n    events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n    events[content][1].end = {\n      ...events[definition][1].end\n    };\n  } else {\n    events[content][1] = heading;\n  }\n\n  // Add the heading exit at the end.\n  events.push(['exit', heading, context]);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * At start of heading (setext) underline.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length;\n    /** @type {boolean | undefined} */\n    let paragraph;\n    // Find an opening.\n    while (index--) {\n      // Skip enter/exit of line ending, line prefix, and content.\n      // We can now either have a definition or a paragraph.\n      if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n        paragraph = self.events[index][1].type === \"paragraph\";\n        break;\n      }\n    }\n\n    // To do: handle lazy/pierce like `markdown-rs`.\n    // To do: parse indent like `markdown-rs`.\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter(\"setextHeadingLine\");\n      marker = code;\n      return before(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After optional whitespace, at `-` or `=`.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"setextHeadingLineSequence\");\n    return inside(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    effects.exit(\"setextHeadingLineSequence\");\n    return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n  }\n\n  /**\n   * After sequence, after optional whitespace.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"setextHeadingLine\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n  tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeFlow(effects) {\n  const self = this;\n  const initial = effects.attempt(\n  // Try to parse a blank line.\n  blankLine, atBlankEnding,\n  // Try to parse initial flow (essentially, only code).\n  effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n  return initial;\n\n  /** @type {State} */\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEndingBlank\");\n    effects.consume(code);\n    effects.exit(\"lineEndingBlank\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n\n  /** @type {State} */\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n}","/**\n * @import {\n *   Code,\n *   InitialConstruct,\n *   Initializer,\n *   Resolver,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n  resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n *   Field.\n * @returns {InitialConstruct}\n *   Construct.\n */\nfunction initializeFactory(field) {\n  return {\n    resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n    tokenize: initializeText\n  };\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Initializer}\n   */\n  function initializeText(effects) {\n    const self = this;\n    const constructs = this.parser.constructs[field];\n    const text = effects.attempt(constructs, start, notText);\n    return start;\n\n    /** @type {State} */\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code);\n    }\n\n    /** @type {State} */\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code);\n        return;\n      }\n      effects.enter(\"data\");\n      effects.consume(code);\n      return data;\n    }\n\n    /** @type {State} */\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit(\"data\");\n        return text(code);\n      }\n\n      // Data.\n      effects.consume(code);\n      return data;\n    }\n\n    /**\n     * @param {Code} code\n     *   Code.\n     * @returns {boolean}\n     *   Whether the code is a break.\n     */\n    function atBreak(code) {\n      if (code === null) {\n        return true;\n      }\n      const list = constructs[code];\n      let index = -1;\n      if (list) {\n        // Always populated by defaults.\n\n        while (++index < list.length) {\n          const item = list[index];\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n  }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n *   Resolver.\n * @returns {Resolver}\n *   Resolver.\n */\nfunction createResolver(extraResolver) {\n  return resolveAllText;\n\n  /** @type {Resolver} */\n  function resolveAllText(events, context) {\n    let index = -1;\n    /** @type {number | undefined} */\n    let enter;\n\n    // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === \"data\") {\n          enter = index;\n          index++;\n        }\n      } else if (!events[index] || events[index][1].type !== \"data\") {\n        // Don’t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end;\n          events.splice(enter + 2, index - enter - 2);\n          index = enter + 2;\n        }\n        enter = undefined;\n      }\n    }\n    return extraResolver ? extraResolver(events, context) : events;\n  }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0; // Skip first.\n\n  while (++eventIndex <= events.length) {\n    if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n      const data = events[eventIndex - 1][1];\n      const chunks = context.sliceStream(data);\n      let index = chunks.length;\n      let bufferIndex = -1;\n      let size = 0;\n      /** @type {boolean | undefined} */\n      let tabs;\n      while (index--) {\n        const chunk = chunks[index];\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length;\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++;\n            bufferIndex--;\n          }\n          if (bufferIndex) break;\n          bufferIndex = -1;\n        }\n        // Number\n        else if (chunk === -2) {\n          tabs = true;\n          size++;\n        } else if (chunk === -1) {\n          // Empty\n        } else {\n          // Replacement character, exit.\n          index++;\n          break;\n        }\n      }\n\n      // Allow final trailing whitespace.\n      if (context._contentTypeTextTrailing && eventIndex === events.length) {\n        size = 0;\n      }\n      if (size) {\n        const token = {\n          type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n          start: {\n            _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n            _index: data.start._index + index,\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size\n          },\n          end: {\n            ...data.end\n          }\n        };\n        data.end = {\n          ...token.start\n        };\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token);\n        } else {\n          events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n          eventIndex += 2;\n        }\n      }\n      eventIndex++;\n    }\n  }\n  return events;\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n  [42]: list,\n  [43]: list,\n  [45]: list,\n  [48]: list,\n  [49]: list,\n  [50]: list,\n  [51]: list,\n  [52]: list,\n  [53]: list,\n  [54]: list,\n  [55]: list,\n  [56]: list,\n  [57]: list,\n  [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n  [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n  [38]: characterReference,\n  [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n  null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n  null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n  null: []\n};","/**\n * @import {\n *   Chunk,\n *   Code,\n *   ConstructRecord,\n *   Construct,\n *   Effects,\n *   InitialConstruct,\n *   ParseContext,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n *   Restore the state.\n * @returns {undefined}\n *   Nothing.\n *\n * @typedef Info\n *   Info.\n * @property {Restore} restore\n *   Restore.\n * @property {number} from\n *   From.\n *\n * @callback ReturnHandle\n *   Handle a successful run.\n * @param {Construct} construct\n *   Construct.\n * @param {Info} info\n *   Info.\n * @returns {undefined}\n *   Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n *   Parser.\n * @param {InitialConstruct} initialize\n *   Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n *   Point (optional).\n * @returns {TokenizeContext}\n *   Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n  /** @type {Point} */\n  let point = {\n    _bufferIndex: -1,\n    _index: 0,\n    line: from && from.line || 1,\n    column: from && from.column || 1,\n    offset: from && from.offset || 0\n  };\n  /** @type {Record<string, number>} */\n  const columnStart = {};\n  /** @type {Array<Construct>} */\n  const resolveAllConstructs = [];\n  /** @type {Array<Chunk>} */\n  let chunks = [];\n  /** @type {Array<Token>} */\n  let stack = [];\n  /** @type {boolean | undefined} */\n  let consumed = true;\n\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\n   */\n  const effects = {\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    consume,\n    enter,\n    exit,\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  };\n\n  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\n   */\n  const context = {\n    code: null,\n    containerState: {},\n    defineSkip,\n    events: [],\n    now,\n    parser,\n    previous: null,\n    sliceSerialize,\n    sliceStream,\n    write\n  };\n\n  /**\n   * The state function.\n   *\n   * @type {State | undefined}\n   */\n  let state = initialize.tokenize.call(context, effects);\n\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n  let expectedCode;\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize);\n  }\n  return context;\n\n  /** @type {TokenizeContext['write']} */\n  function write(slice) {\n    chunks = push(chunks, slice);\n    main();\n\n    // Exit if we’re not done, resolve might change stuff.\n    if (chunks[chunks.length - 1] !== null) {\n      return [];\n    }\n    addResult(initialize, 0);\n\n    // Otherwise, resolve, and exit.\n    context.events = resolveAll(resolveAllConstructs, context.events, context);\n    return context.events;\n  }\n\n  //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs);\n  }\n\n  /** @type {TokenizeContext['sliceStream']} */\n  function sliceStream(token) {\n    return sliceChunks(chunks, token);\n  }\n\n  /** @type {TokenizeContext['now']} */\n  function now() {\n    // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n    const {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    } = point;\n    return {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    };\n  }\n\n  /** @type {TokenizeContext['defineSkip']} */\n  function defineSkip(value) {\n    columnStart[value.line] = value.column;\n    accountForPotentialSkip();\n  }\n\n  //\n  // State management.\n  //\n\n  /**\n   * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n   * `consume`).\n   * Here is where we walk through the chunks, which either include strings of\n   * several characters, or numerical character codes.\n   * The reason to do this in a loop instead of a call is so the stack can\n   * drain.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function main() {\n    /** @type {number} */\n    let chunkIndex;\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index];\n\n      // If we’re in a buffer chunk, loop through it.\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index;\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0;\n        }\n        while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n          go(chunk.charCodeAt(point._bufferIndex));\n        }\n      } else {\n        go(chunk);\n      }\n    }\n  }\n\n  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   *   Code.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function go(code) {\n    consumed = undefined;\n    expectedCode = code;\n    state = state(code);\n  }\n\n  /** @type {Effects['consume']} */\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++;\n      point.column = 1;\n      point.offset += code === -3 ? 2 : 1;\n      accountForPotentialSkip();\n    } else if (code !== -1) {\n      point.column++;\n      point.offset++;\n    }\n\n    // Not in a string chunk.\n    if (point._bufferIndex < 0) {\n      point._index++;\n    } else {\n      point._bufferIndex++;\n\n      // At end of string chunk.\n      if (point._bufferIndex ===\n      // Points w/ non-negative `_bufferIndex` reference\n      // strings.\n      /** @type {string} */\n      chunks[point._index].length) {\n        point._bufferIndex = -1;\n        point._index++;\n      }\n    }\n\n    // Expose the previous character.\n    context.previous = code;\n\n    // Mark as consumed.\n    consumed = true;\n  }\n\n  /** @type {Effects['enter']} */\n  function enter(type, fields) {\n    /** @type {Token} */\n    // @ts-expect-error Patch instead of assign required fields to help GC.\n    const token = fields || {};\n    token.type = type;\n    token.start = now();\n    context.events.push(['enter', token, context]);\n    stack.push(token);\n    return token;\n  }\n\n  /** @type {Effects['exit']} */\n  function exit(type) {\n    const token = stack.pop();\n    token.end = now();\n    context.events.push(['exit', token, context]);\n    return token;\n  }\n\n  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from);\n  }\n\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulcheck(_, info) {\n    info.restore();\n  }\n\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   *   Callback.\n   * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n   *   Fields.\n   */\n  function constructFactory(onreturn, fields) {\n    return hook;\n\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Array<Construct> | ConstructRecord | Construct} constructs\n     *   Constructs.\n     * @param {State} returnState\n     *   State.\n     * @param {State | undefined} [bogusState]\n     *   State.\n     * @returns {State}\n     *   State.\n     */\n    function hook(constructs, returnState, bogusState) {\n      /** @type {ReadonlyArray<Construct>} */\n      let listOfConstructs;\n      /** @type {number} */\n      let constructIndex;\n      /** @type {Construct} */\n      let currentConstruct;\n      /** @type {Info} */\n      let info;\n      return Array.isArray(constructs) ? /* c8 ignore next 1 */\n      handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n      // Looks like a construct.\n      handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleMapOfConstructs(map) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          const left = code !== null && map[code];\n          const all = code !== null && map.null;\n          const list = [\n          // To do: add more extension tests.\n          /* c8 ignore next 2 */\n          ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n          return handleListOfConstructs(list)(code);\n        }\n      }\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ReadonlyArray<Construct>} list\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleListOfConstructs(list) {\n        listOfConstructs = list;\n        constructIndex = 0;\n        if (list.length === 0) {\n          return bogusState;\n        }\n        return handleConstruct(list[constructIndex]);\n      }\n\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       *   Construct.\n       * @returns {State}\n       *   State.\n       */\n      function handleConstruct(construct) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          // To do: not needed to store if there is no bogus state, probably?\n          // Currently doesn’t work because `inspect` in document does a check\n          // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n          // by not storing.\n          info = store();\n          currentConstruct = construct;\n          if (!construct.partial) {\n            context.currentConstruct = construct;\n          }\n\n          // Always populated by defaults.\n\n          if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n            return nok(code);\n          }\n          return construct.tokenize.call(\n          // If we do have fields, create an object w/ `context` as its\n          // prototype.\n          // This allows a “live binding”, which is needed for `interrupt`.\n          fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n        }\n      }\n\n      /** @type {State} */\n      function ok(code) {\n        consumed = true;\n        onreturn(currentConstruct, info);\n        return returnState;\n      }\n\n      /** @type {State} */\n      function nok(code) {\n        consumed = true;\n        info.restore();\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex]);\n        }\n        return bogusState;\n      }\n    }\n  }\n\n  /**\n   * @param {Construct} construct\n   *   Construct.\n   * @param {number} from\n   *   From.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct);\n    }\n    if (construct.resolve) {\n      splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n    }\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context);\n    }\n  }\n\n  /**\n   * Store state.\n   *\n   * @returns {Info}\n   *   Info.\n   */\n  function store() {\n    const startPoint = now();\n    const startPrevious = context.previous;\n    const startCurrentConstruct = context.currentConstruct;\n    const startEventsIndex = context.events.length;\n    const startStack = Array.from(stack);\n    return {\n      from: startEventsIndex,\n      restore\n    };\n\n    /**\n     * Restore state.\n     *\n     * @returns {undefined}\n     *   Nothing.\n     */\n    function restore() {\n      point = startPoint;\n      context.previous = startPrevious;\n      context.currentConstruct = startCurrentConstruct;\n      context.events.length = startEventsIndex;\n      stack = startStack;\n      accountForPotentialSkip();\n    }\n  }\n\n  /**\n   * Move the current point a bit forward in the line when it’s on a column\n   * skip.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line];\n      point.offset += columnStart[point.line] - 1;\n    }\n  }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n *   Token.\n * @returns {Array<Chunk>}\n *   Chunks.\n */\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index;\n  const startBufferIndex = token.start._bufferIndex;\n  const endIndex = token.end._index;\n  const endBufferIndex = token.end._bufferIndex;\n  /** @type {Array<Chunk>} */\n  let view;\n  if (startIndex === endIndex) {\n    // @ts-expect-error `_bufferIndex` is used on string chunks.\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n  } else {\n    view = chunks.slice(startIndex, endIndex);\n    if (startBufferIndex > -1) {\n      const head = view[0];\n      if (typeof head === 'string') {\n        view[0] = head.slice(startBufferIndex);\n        /* c8 ignore next 4 -- used to be used, no longer */\n      } else {\n        view.shift();\n      }\n    }\n    if (endBufferIndex > 0) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view.push(chunks[endIndex].slice(0, endBufferIndex));\n    }\n  }\n  return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n *   Whether to expand tabs (default: `false`).\n * @returns {string}\n *   Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1;\n  /** @type {Array<string>} */\n  const result = [];\n  /** @type {boolean | undefined} */\n  let atTab;\n  while (++index < chunks.length) {\n    const chunk = chunks[index];\n    /** @type {string} */\n    let value;\n    if (typeof chunk === 'string') {\n      value = chunk;\n    } else switch (chunk) {\n      case -5:\n        {\n          value = \"\\r\";\n          break;\n        }\n      case -4:\n        {\n          value = \"\\n\";\n          break;\n        }\n      case -3:\n        {\n          value = \"\\r\" + \"\\n\";\n          break;\n        }\n      case -2:\n        {\n          value = expandTabs ? \" \" : \"\\t\";\n          break;\n        }\n      case -1:\n        {\n          if (!expandTabs && atTab) continue;\n          value = \" \";\n          break;\n        }\n      default:\n        {\n          // Currently only replacement character.\n          value = String.fromCharCode(chunk);\n        }\n    }\n    atTab = chunk === -2;\n    result.push(value);\n  }\n  return result.join('');\n}","/**\n * @import {\n *   Create,\n *   FullNormalizedExtension,\n *   InitialConstruct,\n *   ParseContext,\n *   ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ParseContext}\n *   Parser.\n */\nexport function parse(options) {\n  const settings = options || {};\n  const constructs = /** @type {FullNormalizedExtension} */\n  combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n  /** @type {ParseContext} */\n  const parser = {\n    constructs,\n    content: create(content),\n    defined: [],\n    document: create(document),\n    flow: create(flow),\n    lazy: {},\n    string: create(string),\n    text: create(text)\n  };\n  return parser;\n\n  /**\n   * @param {InitialConstruct} initial\n   *   Construct to start with.\n   * @returns {Create}\n   *   Create a tokenizer.\n   */\n  function create(initial) {\n    return creator;\n    /** @type {Create} */\n    function creator(from) {\n      return createTokenizer(parser, initial, from);\n    }\n  }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n *   Events.\n * @returns {Array<Event>}\n *   Events.\n */\nexport function postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n  return events;\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n *   Preprocess a value.\n * @param {Value} value\n *   Value.\n * @param {Encoding | null | undefined} [encoding]\n *   Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n *   Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n *   Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n *   Preprocess a value.\n */\nexport function preprocess() {\n  let column = 1;\n  let buffer = '';\n  /** @type {boolean | undefined} */\n  let start = true;\n  /** @type {boolean | undefined} */\n  let atCarriageReturn;\n  return preprocessor;\n\n  /** @type {Preprocessor} */\n  // eslint-disable-next-line complexity\n  function preprocessor(value, encoding, end) {\n    /** @type {Array<Chunk>} */\n    const chunks = [];\n    /** @type {RegExpMatchArray | null} */\n    let match;\n    /** @type {number} */\n    let next;\n    /** @type {number} */\n    let startPosition;\n    /** @type {number} */\n    let endPosition;\n    /** @type {Code} */\n    let code;\n    value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n    startPosition = 0;\n    buffer = '';\n    if (start) {\n      // To do: `markdown-rs` actually parses BOMs (byte order mark).\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++;\n      }\n      start = undefined;\n    }\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition;\n      match = search.exec(value);\n      endPosition = match && match.index !== undefined ? match.index : value.length;\n      code = value.charCodeAt(endPosition);\n      if (!match) {\n        buffer = value.slice(startPosition);\n        break;\n      }\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3);\n        atCarriageReturn = undefined;\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5);\n          atCarriageReturn = undefined;\n        }\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition));\n          column += endPosition - startPosition;\n        }\n        switch (code) {\n          case 0:\n            {\n              chunks.push(65533);\n              column++;\n              break;\n            }\n          case 9:\n            {\n              next = Math.ceil(column / 4) * 4;\n              chunks.push(-2);\n              while (column++ < next) chunks.push(-1);\n              break;\n            }\n          case 10:\n            {\n              chunks.push(-4);\n              column = 1;\n              break;\n            }\n          default:\n            {\n              atCarriageReturn = true;\n              column = 1;\n            }\n        }\n      }\n      startPosition = endPosition + 1;\n    }\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5);\n      if (buffer) chunks.push(buffer);\n      chunks.push(null);\n    }\n    return chunks;\n  }\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n *   Value to decode.\n * @returns {string}\n *   Decoded value.\n */\nexport function decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n *   Match.\n * @param {string} $1\n *   Character escape.\n * @param {string} $2\n *   Character reference.\n * @returns {string}\n *   Decoded value\n */\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1;\n  }\n\n  // Reference.\n  const head = $2.charCodeAt(0);\n  if (head === 35) {\n    const head = $2.charCodeAt(1);\n    const hex = head === 120 || head === 88;\n    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n  }\n  return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @import {\n *   Break,\n *   Blockquote,\n *   Code,\n *   Definition,\n *   Emphasis,\n *   Heading,\n *   Html,\n *   Image,\n *   InlineCode,\n *   Link,\n *   ListItem,\n *   List,\n *   Nodes,\n *   Paragraph,\n *   PhrasingContent,\n *   ReferenceType,\n *   Root,\n *   Strong,\n *   Text,\n *   ThematicBreak\n * } from 'mdast'\n * @import {\n *   Encoding,\n *   Event,\n *   Token,\n *   Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n *   CompileContext,\n *   CompileData,\n *   Config,\n *   Extension,\n *   Handle,\n *   OnEnterError,\n *   Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n *   Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n *   Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {Root}\n *   mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n  if (typeof encoding !== 'string') {\n    options = encoding;\n    encoding = undefined;\n  }\n  return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n  /** @type {Config} */\n  const config = {\n    transforms: [],\n    canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n    enter: {\n      autolink: opener(link),\n      autolinkProtocol: onenterdata,\n      autolinkEmail: onenterdata,\n      atxHeading: opener(heading),\n      blockQuote: opener(blockQuote),\n      characterEscape: onenterdata,\n      characterReference: onenterdata,\n      codeFenced: opener(codeFlow),\n      codeFencedFenceInfo: buffer,\n      codeFencedFenceMeta: buffer,\n      codeIndented: opener(codeFlow, buffer),\n      codeText: opener(codeText, buffer),\n      codeTextData: onenterdata,\n      data: onenterdata,\n      codeFlowValue: onenterdata,\n      definition: opener(definition),\n      definitionDestinationString: buffer,\n      definitionLabelString: buffer,\n      definitionTitleString: buffer,\n      emphasis: opener(emphasis),\n      hardBreakEscape: opener(hardBreak),\n      hardBreakTrailing: opener(hardBreak),\n      htmlFlow: opener(html, buffer),\n      htmlFlowData: onenterdata,\n      htmlText: opener(html, buffer),\n      htmlTextData: onenterdata,\n      image: opener(image),\n      label: buffer,\n      link: opener(link),\n      listItem: opener(listItem),\n      listItemValue: onenterlistitemvalue,\n      listOrdered: opener(list, onenterlistordered),\n      listUnordered: opener(list),\n      paragraph: opener(paragraph),\n      reference: onenterreference,\n      referenceString: buffer,\n      resourceDestinationString: buffer,\n      resourceTitleString: buffer,\n      setextHeading: opener(heading),\n      strong: opener(strong),\n      thematicBreak: opener(thematicBreak)\n    },\n    exit: {\n      atxHeading: closer(),\n      atxHeadingSequence: onexitatxheadingsequence,\n      autolink: closer(),\n      autolinkEmail: onexitautolinkemail,\n      autolinkProtocol: onexitautolinkprotocol,\n      blockQuote: closer(),\n      characterEscapeValue: onexitdata,\n      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n      characterReferenceValue: onexitcharacterreferencevalue,\n      characterReference: onexitcharacterreference,\n      codeFenced: closer(onexitcodefenced),\n      codeFencedFence: onexitcodefencedfence,\n      codeFencedFenceInfo: onexitcodefencedfenceinfo,\n      codeFencedFenceMeta: onexitcodefencedfencemeta,\n      codeFlowValue: onexitdata,\n      codeIndented: closer(onexitcodeindented),\n      codeText: closer(onexitcodetext),\n      codeTextData: onexitdata,\n      data: onexitdata,\n      definition: closer(),\n      definitionDestinationString: onexitdefinitiondestinationstring,\n      definitionLabelString: onexitdefinitionlabelstring,\n      definitionTitleString: onexitdefinitiontitlestring,\n      emphasis: closer(),\n      hardBreakEscape: closer(onexithardbreak),\n      hardBreakTrailing: closer(onexithardbreak),\n      htmlFlow: closer(onexithtmlflow),\n      htmlFlowData: onexitdata,\n      htmlText: closer(onexithtmltext),\n      htmlTextData: onexitdata,\n      image: closer(onexitimage),\n      label: onexitlabel,\n      labelText: onexitlabeltext,\n      lineEnding: onexitlineending,\n      link: closer(onexitlink),\n      listItem: closer(),\n      listOrdered: closer(),\n      listUnordered: closer(),\n      paragraph: closer(),\n      referenceString: onexitreferencestring,\n      resourceDestinationString: onexitresourcedestinationstring,\n      resourceTitleString: onexitresourcetitlestring,\n      resource: onexitresource,\n      setextHeading: closer(onexitsetextheading),\n      setextHeadingLineSequence: onexitsetextheadinglinesequence,\n      setextHeadingText: onexitsetextheadingtext,\n      strong: closer(),\n      thematicBreak: closer()\n    }\n  };\n  configure(config, (options || {}).mdastExtensions || []);\n\n  /** @type {CompileData} */\n  const data = {};\n  return compile;\n\n  /**\n   * Turn micromark events into an mdast tree.\n   *\n   * @param {Array<Event>} events\n   *   Events.\n   * @returns {Root}\n   *   mdast tree.\n   */\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {\n      type: 'root',\n      children: []\n    };\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n    const context = {\n      stack: [tree],\n      tokenStack: [],\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      data\n    };\n    /** @type {Array<number>} */\n    const listStack = [];\n    let index = -1;\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n        if (events[index][0] === 'enter') {\n          listStack.push(index);\n        } else {\n          const tail = listStack.pop();\n          index = prepareList(events, tail, index);\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      const handler = config[events[index][0]];\n      if (own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(Object.assign({\n          sliceSerialize: events[index][2].sliceSerialize\n        }, context), events[index][1]);\n      }\n    }\n\n    // Handle tokens still being open.\n    if (context.tokenStack.length > 0) {\n      const tail = context.tokenStack[context.tokenStack.length - 1];\n      const handler = tail[1] || defaultOnError;\n      handler.call(context, undefined, tail[0]);\n    }\n\n    // Figure out `root` position.\n    tree.position = {\n      start: point(events.length > 0 ? events[0][1].start : {\n        line: 1,\n        column: 1,\n        offset: 0\n      }),\n      end: point(events.length > 0 ? events[events.length - 2][1].end : {\n        line: 1,\n        column: 1,\n        offset: 0\n      })\n    };\n\n    // Call transforms.\n    index = -1;\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree;\n    }\n    return tree;\n  }\n\n  /**\n   * @param {Array<Event>} events\n   * @param {number} start\n   * @param {number} length\n   * @returns {number}\n   */\n  function prepareList(events, start, length) {\n    let index = start - 1;\n    let containerBalance = -1;\n    let listSpread = false;\n    /** @type {Token | undefined} */\n    let listItem;\n    /** @type {number | undefined} */\n    let lineIndex;\n    /** @type {number | undefined} */\n    let firstBlankLineIndex;\n    /** @type {boolean | undefined} */\n    let atMarker;\n    while (++index <= length) {\n      const event = events[index];\n      switch (event[1].type) {\n        case \"listUnordered\":\n        case \"listOrdered\":\n        case \"blockQuote\":\n          {\n            if (event[0] === 'enter') {\n              containerBalance++;\n            } else {\n              containerBalance--;\n            }\n            atMarker = undefined;\n            break;\n          }\n        case \"lineEndingBlank\":\n          {\n            if (event[0] === 'enter') {\n              if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n                firstBlankLineIndex = index;\n              }\n              atMarker = undefined;\n            }\n            break;\n          }\n        case \"linePrefix\":\n        case \"listItemValue\":\n        case \"listItemMarker\":\n        case \"listItemPrefix\":\n        case \"listItemPrefixWhitespace\":\n          {\n            // Empty.\n\n            break;\n          }\n        default:\n          {\n            atMarker = undefined;\n          }\n      }\n      if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n        if (listItem) {\n          let tailIndex = index;\n          lineIndex = undefined;\n          while (tailIndex--) {\n            const tailEvent = events[tailIndex];\n            if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n              if (tailEvent[0] === 'exit') continue;\n              if (lineIndex) {\n                events[lineIndex][1].type = \"lineEndingBlank\";\n                listSpread = true;\n              }\n              tailEvent[1].type = \"lineEnding\";\n              lineIndex = tailIndex;\n            } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n              // Empty\n            } else {\n              break;\n            }\n          }\n          if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n            listItem._spread = true;\n          }\n\n          // Fix position.\n          listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n          index++;\n          length++;\n        }\n\n        // Create a new list item.\n        if (event[1].type === \"listItemPrefix\") {\n          /** @type {Token} */\n          const item = {\n            type: 'listItem',\n            _spread: false,\n            start: Object.assign({}, event[1].start),\n            // @ts-expect-error: we’ll add `end` in a second.\n            end: undefined\n          };\n          listItem = item;\n          events.splice(index, 0, ['enter', item, event[2]]);\n          index++;\n          length++;\n          firstBlankLineIndex = undefined;\n          atMarker = true;\n        }\n      }\n    }\n    events[start][1]._spread = listSpread;\n    return length;\n  }\n\n  /**\n   * Create an opener handle.\n   *\n   * @param {(token: Token) => Nodes} create\n   *   Create a node.\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function opener(create, and) {\n    return open;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function open(token) {\n      enter.call(this, create(token), token);\n      if (and) and.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['buffer']}\n   */\n  function buffer() {\n    this.stack.push({\n      type: 'fragment',\n      children: []\n    });\n  }\n\n  /**\n   * @type {CompileContext['enter']}\n   */\n  function enter(node, token, errorHandler) {\n    const parent = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children;\n    siblings.push(node);\n    this.stack.push(node);\n    this.tokenStack.push([token, errorHandler || undefined]);\n    node.position = {\n      start: point(token.start),\n      // @ts-expect-error: `end` will be patched later.\n      end: undefined\n    };\n  }\n\n  /**\n   * Create a closer handle.\n   *\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function closer(and) {\n    return close;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function close(token) {\n      if (and) and.call(this, token);\n      exit.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['exit']}\n   */\n  function exit(token, onExitError) {\n    const node = this.stack.pop();\n    const open = this.tokenStack.pop();\n    if (!open) {\n      throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n        start: token.start,\n        end: token.end\n      }) + '): it’s not open');\n    } else if (open[0].type !== token.type) {\n      if (onExitError) {\n        onExitError.call(this, token, open[0]);\n      } else {\n        const handler = open[1] || defaultOnError;\n        handler.call(this, token, open[0]);\n      }\n    }\n    node.position.end = point(token.end);\n  }\n\n  /**\n   * @type {CompileContext['resume']}\n   */\n  function resume() {\n    return toString(this.stack.pop());\n  }\n\n  //\n  // Handlers.\n  //\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistordered() {\n    this.data.expectingFirstListItemValue = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistitemvalue(token) {\n    if (this.data.expectingFirstListItemValue) {\n      const ancestor = this.stack[this.stack.length - 2];\n      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n      this.data.expectingFirstListItemValue = undefined;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.lang = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfencemeta() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.meta = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (this.data.flowCodeInside) return;\n    this.buffer();\n    this.data.flowCodeInside = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefenced() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n    this.data.flowCodeInside = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodeindented() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitionlabelstring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.label = label;\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiontitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitatxheadingsequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length;\n      node.depth = depth;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadingtext() {\n    this.data.setextHeadingSlurpLineEnding = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadinglinesequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheading() {\n    this.data.setextHeadingSlurpLineEnding = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterdata(token) {\n    const node = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = node.children;\n    let tail = siblings[siblings.length - 1];\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text();\n      tail.position = {\n        start: point(token.start),\n        // @ts-expect-error: we’ll add `end` later.\n        end: undefined\n      };\n      siblings.push(tail);\n    }\n    this.stack.push(tail);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitdata(token) {\n    const tail = this.stack.pop();\n    tail.value += this.sliceSerialize(token);\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1];\n    // If we’re at a hard break, include the line ending in there.\n    if (this.data.atHardBreak) {\n      const tail = context.children[context.children.length - 1];\n      tail.position.end = point(token.end);\n      this.data.atHardBreak = undefined;\n      return;\n    }\n    if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n      onenterdata.call(this, token);\n      onexitdata.call(this, token);\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithardbreak() {\n    this.data.atHardBreak = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmlflow() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmltext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcodetext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlink() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitimage() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabeltext(token) {\n    const string = this.sliceSerialize(token);\n    const ancestor = this.stack[this.stack.length - 2];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    ancestor.label = decodeString(string);\n    // @ts-expect-error: same as above.\n    ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabel() {\n    const fragment = this.stack[this.stack.length - 1];\n    const value = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // Assume a reference.\n    this.data.inReference = true;\n    if (node.type === 'link') {\n      /** @type {Array<PhrasingContent>} */\n      const children = fragment.children;\n      node.children = children;\n    } else {\n      node.alt = value;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresource() {\n    this.data.inReference = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterreference() {\n    this.data.referenceType = 'collapsed';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitreferencestring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    node.label = label;\n    // @ts-expect-error: same as above.\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n    this.data.referenceType = 'full';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcharacterreferencemarker(token) {\n    this.data.characterReferenceType = token.type;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token);\n    const type = this.data.characterReferenceType;\n    /** @type {string} */\n    let value;\n    if (type) {\n      value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n      this.data.characterReferenceType = undefined;\n    } else {\n      const result = decodeNamedCharacterReference(data);\n      value = result;\n    }\n    const tail = this.stack[this.stack.length - 1];\n    tail.value += value;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreference(token) {\n    const tail = this.stack.pop();\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = this.sliceSerialize(token);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = 'mailto:' + this.sliceSerialize(token);\n  }\n\n  //\n  // Creaters.\n  //\n\n  /** @returns {Blockquote} */\n  function blockQuote() {\n    return {\n      type: 'blockquote',\n      children: []\n    };\n  }\n\n  /** @returns {Code} */\n  function codeFlow() {\n    return {\n      type: 'code',\n      lang: null,\n      meta: null,\n      value: ''\n    };\n  }\n\n  /** @returns {InlineCode} */\n  function codeText() {\n    return {\n      type: 'inlineCode',\n      value: ''\n    };\n  }\n\n  /** @returns {Definition} */\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    };\n  }\n\n  /** @returns {Emphasis} */\n  function emphasis() {\n    return {\n      type: 'emphasis',\n      children: []\n    };\n  }\n\n  /** @returns {Heading} */\n  function heading() {\n    return {\n      type: 'heading',\n      // @ts-expect-error `depth` will be set later.\n      depth: 0,\n      children: []\n    };\n  }\n\n  /** @returns {Break} */\n  function hardBreak() {\n    return {\n      type: 'break'\n    };\n  }\n\n  /** @returns {Html} */\n  function html() {\n    return {\n      type: 'html',\n      value: ''\n    };\n  }\n\n  /** @returns {Image} */\n  function image() {\n    return {\n      type: 'image',\n      title: null,\n      url: '',\n      alt: null\n    };\n  }\n\n  /** @returns {Link} */\n  function link() {\n    return {\n      type: 'link',\n      title: null,\n      url: '',\n      children: []\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      spread: token._spread,\n      children: []\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      spread: token._spread,\n      checked: null,\n      children: []\n    };\n  }\n\n  /** @returns {Paragraph} */\n  function paragraph() {\n    return {\n      type: 'paragraph',\n      children: []\n    };\n  }\n\n  /** @returns {Strong} */\n  function strong() {\n    return {\n      type: 'strong',\n      children: []\n    };\n  }\n\n  /** @returns {Text} */\n  function text() {\n    return {\n      type: 'text',\n      value: ''\n    };\n  }\n\n  /** @returns {ThematicBreak} */\n  function thematicBreak() {\n    return {\n      type: 'thematicBreak'\n    };\n  }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n *   Point-like value.\n * @returns {Point}\n *   unist point.\n */\nfunction point(d) {\n  return {\n    line: d.line,\n    column: d.column,\n    offset: d.offset\n  };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n  let index = -1;\n  while (++index < extensions.length) {\n    const value = extensions[index];\n    if (Array.isArray(value)) {\n      configure(combined, value);\n    } else {\n      extension(combined, value);\n    }\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n  /** @type {keyof Extension} */\n  let key;\n  for (key in extension) {\n    if (own.call(extension, key)) {\n      switch (key) {\n        case 'canContainEols':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'transforms':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'enter':\n        case 'exit':\n          {\n            const right = extension[key];\n            if (right) {\n              Object.assign(combined[key], right);\n            }\n            break;\n          }\n        // No default\n      }\n    }\n  }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n  if (left) {\n    throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n      start: left.start,\n      end: left.end\n    }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is open');\n  } else {\n    throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is still open');\n  }\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkParse(options) {\n  /** @type {Processor} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n\n  self.parser = parser\n\n  /**\n   * @type {Parser}\n   */\n  function parser(doc) {\n    return fromMarkdown(doc, {\n      ...self.data('settings'),\n      ...options,\n      // Note: these options are not in the readme.\n      // The goal is for them to be set by plugins on `data` instead of being\n      // passed by users.\n      extensions: self.data('micromarkExtensions') || [],\n      mdastExtensions: self.data('fromMarkdownExtensions') || []\n    })\n  }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Blockquote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function blockquote(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'blockquote',\n    properties: {},\n    children: state.wrap(state.all(node), true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Break} node\n *   mdast node.\n * @returns {Array<Element | Text>}\n *   hast element content.\n */\nexport function hardBreak(state, node) {\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n  state.patch(node, result)\n  return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Code} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function code(state, node) {\n  const value = node.value ? node.value + '\\n' : ''\n  /** @type {Properties} */\n  const properties = {}\n\n  if (node.lang) {\n    properties.className = ['language-' + node.lang]\n  }\n\n  // Create `<code>`.\n  /** @type {Element} */\n  let result = {\n    type: 'element',\n    tagName: 'code',\n    properties,\n    children: [{type: 'text', value}]\n  }\n\n  if (node.meta) {\n    result.data = {meta: node.meta}\n  }\n\n  state.patch(node, result)\n  result = state.applyData(node, result)\n\n  // Create `<pre>`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Extract<Nodes, Reference>} node\n *   Reference node (image, link).\n * @returns {Array<ElementContent>}\n *   hast content.\n */\nexport function revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return [{type: 'text', value: '![' + node.alt + suffix}]\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(definition.url || '')}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array<ElementContent>} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === null || spread === undefined\n    ? node.children.length > 1\n    : spread\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array<Element>} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array<ElementContent>} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nexport function trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n  blockquote,\n  break: hardBreak,\n  code,\n  delete: strikethrough,\n  emphasis,\n  footnoteReference,\n  heading,\n  html,\n  imageReference,\n  image,\n  inlineCode,\n  linkReference,\n  link,\n  listItem,\n  list,\n  paragraph,\n  // @ts-expect-error: root is different, but hard to type.\n  root,\n  strong,\n  table,\n  tableCell,\n  tableRow,\n  text,\n  thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  return undefined\n}\n","export const VOID       = -1;\nexport const PRIMITIVE  = 0;\nexport const ARRAY      = 1;\nexport const OBJECT     = 2;\nexport const DATE       = 3;\nexport const REGEXP     = 4;\nexport const MAP        = 5;\nexport const SET        = 6;\nexport const ERROR      = 7;\nexport const BIGINT     = 8;\n// export const SYMBOL = 9;\n","import {\n  VOID, PRIMITIVE,\n  ARRAY, OBJECT,\n  DATE, REGEXP, MAP, SET,\n  ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n  const as = (out, index) => {\n    $.set(index, out);\n    return out;\n  };\n\n  const unpair = index => {\n    if ($.has(index))\n      return $.get(index);\n\n    const [type, value] = _[index];\n    switch (type) {\n      case PRIMITIVE:\n      case VOID:\n        return as(value, index);\n      case ARRAY: {\n        const arr = as([], index);\n        for (const index of value)\n          arr.push(unpair(index));\n        return arr;\n      }\n      case OBJECT: {\n        const object = as({}, index);\n        for (const [key, index] of value)\n          object[unpair(key)] = unpair(index);\n        return object;\n      }\n      case DATE:\n        return as(new Date(value), index);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as(new RegExp(source, flags), index);\n      }\n      case MAP: {\n        const map = as(new Map, index);\n        for (const [key, index] of value)\n          map.set(unpair(key), unpair(index));\n        return map;\n      }\n      case SET: {\n        const set = as(new Set, index);\n        for (const index of value)\n          set.add(unpair(index));\n        return set;\n      }\n      case ERROR: {\n        const {name, message} = value;\n        return as(new env[name](message), index);\n      }\n      case BIGINT:\n        return as(BigInt(value), index);\n      case 'BigInt':\n        return as(Object(BigInt(value)), index);\n      case 'ArrayBuffer':\n        return as(new Uint8Array(value).buffer, value);\n      case 'DataView': {\n        const { buffer } = new Uint8Array(value);\n        return as(new DataView(buffer), value);\n      }\n    }\n    return as(new env[type](value), index);\n  };\n\n  return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n  VOID, PRIMITIVE,\n  ARRAY, OBJECT,\n  DATE, REGEXP, MAP, SET,\n  ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n  const type = typeof value;\n  if (type !== 'object' || !value)\n    return [PRIMITIVE, type];\n\n  const asString = toString.call(value).slice(8, -1);\n  switch (asString) {\n    case 'Array':\n      return [ARRAY, EMPTY];\n    case 'Object':\n      return [OBJECT, EMPTY];\n    case 'Date':\n      return [DATE, EMPTY];\n    case 'RegExp':\n      return [REGEXP, EMPTY];\n    case 'Map':\n      return [MAP, EMPTY];\n    case 'Set':\n      return [SET, EMPTY];\n    case 'DataView':\n      return [ARRAY, asString];\n  }\n\n  if (asString.includes('Array'))\n    return [ARRAY, asString];\n\n  if (asString.includes('Error'))\n    return [ERROR, asString];\n\n  return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n  TYPE === PRIMITIVE &&\n  (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n  const as = (out, value) => {\n    const index = _.push(out) - 1;\n    $.set(value, index);\n    return index;\n  };\n\n  const pair = value => {\n    if ($.has(value))\n      return $.get(value);\n\n    let [TYPE, type] = typeOf(value);\n    switch (TYPE) {\n      case PRIMITIVE: {\n        let entry = value;\n        switch (type) {\n          case 'bigint':\n            TYPE = BIGINT;\n            entry = value.toString();\n            break;\n          case 'function':\n          case 'symbol':\n            if (strict)\n              throw new TypeError('unable to serialize ' + type);\n            entry = null;\n            break;\n          case 'undefined':\n            return as([VOID], value);\n        }\n        return as([TYPE, entry], value);\n      }\n      case ARRAY: {\n        if (type) {\n          let spread = value;\n          if (type === 'DataView') {\n            spread = new Uint8Array(value.buffer);\n          }\n          else if (type === 'ArrayBuffer') {\n            spread = new Uint8Array(value);\n          }\n          return as([type, [...spread]], value);\n        }\n\n        const arr = [];\n        const index = as([TYPE, arr], value);\n        for (const entry of value)\n          arr.push(pair(entry));\n        return index;\n      }\n      case OBJECT: {\n        if (type) {\n          switch (type) {\n            case 'BigInt':\n              return as([type, value.toString()], value);\n            case 'Boolean':\n            case 'Number':\n            case 'String':\n              return as([type, value.valueOf()], value);\n          }\n        }\n\n        if (json && ('toJSON' in value))\n          return pair(value.toJSON());\n\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const key of keys(value)) {\n          if (strict || !shouldSkip(typeOf(value[key])))\n            entries.push([pair(key), pair(value[key])]);\n        }\n        return index;\n      }\n      case DATE:\n        return as([TYPE, value.toISOString()], value);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as([TYPE, {source, flags}], value);\n      }\n      case MAP: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const [key, entry] of value) {\n          if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n            entries.push([pair(key), pair(entry)]);\n        }\n        return index;\n      }\n      case SET: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const entry of value) {\n          if (strict || !shouldSkip(typeOf(entry)))\n            entries.push(pair(entry));\n        }\n        return index;\n      }\n    }\n\n    const {message} = value;\n    return as([TYPE, {name: type, message}], value);\n  };\n\n  return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n *  if `true`, will not throw errors on incompatible types, and behave more\n *  like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n  const _ = [];\n  return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n  /* c8 ignore start */\n  (any, options) => (\n    options && ('json' in options || 'lossy' in options) ?\n      deserialize(serialize(any, options)) : structuredClone(any)\n  ) :\n  (any, options) => deserialize(serialize(any, options));\n  /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n *   Generate content for the backreference dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent> | ElementContent | string}\n *   Content for the backreference when linking back from definitions to their\n *   reference.\n *\n * @callback FootnoteBackLabelTemplate\n *   Generate a back label dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent>}\n *   Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n  /** @type {Array<ElementContent>} */\n  const result = [{type: 'text', value: '↩'}]\n\n  if (rereferenceIndex > 1) {\n    result.push({\n      type: 'element',\n      tagName: 'sup',\n      properties: {},\n      children: [{type: 'text', value: String(rereferenceIndex)}]\n    })\n  }\n\n  return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n  return (\n    'Back to reference ' +\n    (referenceIndex + 1) +\n    (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n  )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const footnoteBackContent =\n    state.options.footnoteBackContent || defaultFootnoteBackContent\n  const footnoteBackLabel =\n    state.options.footnoteBackLabel || defaultFootnoteBackLabel\n  const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n  const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n  const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  /** @type {Array<ElementContent>} */\n  const listItems = []\n  let referenceIndex = -1\n\n  while (++referenceIndex < state.footnoteOrder.length) {\n    const definition = state.footnoteById.get(\n      state.footnoteOrder[referenceIndex]\n    )\n\n    if (!definition) {\n      continue\n    }\n\n    const content = state.all(definition)\n    const id = String(definition.identifier).toUpperCase()\n    const safeId = normalizeUri(id.toLowerCase())\n    let rereferenceIndex = 0\n    /** @type {Array<ElementContent>} */\n    const backReferences = []\n    const counts = state.footnoteCounts.get(id)\n\n    // eslint-disable-next-line no-unmodified-loop-condition\n    while (counts !== undefined && ++rereferenceIndex <= counts) {\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      let children =\n        typeof footnoteBackContent === 'string'\n          ? footnoteBackContent\n          : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n      if (typeof children === 'string') {\n        children = {type: 'text', value: children}\n      }\n\n      backReferences.push({\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            clobberPrefix +\n            'fnref-' +\n            safeId +\n            (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n          dataFootnoteBackref: '',\n          ariaLabel:\n            typeof footnoteBackLabel === 'string'\n              ? footnoteBackLabel\n              : footnoteBackLabel(referenceIndex, rereferenceIndex),\n          className: ['data-footnote-backref']\n        },\n        children: Array.isArray(children) ? children : [children]\n      })\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(definition, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: footnoteLabelTagName,\n        properties: {\n          ...structuredClone(footnoteLabelProperties),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is a node.\n * @param {unknown} this\n *   The given context.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n *   Object to check for equivalence.\n *\n *   Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary node.\n *\n * @callback TestFunction\n *   Check if a node passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean | undefined | void}\n *   Whether this node passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n *   Thing to check, typically `Node`.\n * @param {Test} test\n *   A check for a specific node.\n * @param {number | null | undefined} index\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n *   The node’s parent.\n * @param {unknown} context\n *   Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n *   Whether `node` is a node and passes a test.\n */\nexport const is =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((node?: null | undefined) => false) &\n   *   ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      return looksLikeANode(node)\n        ? check.call(context, node, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n *   An assertion.\n */\nexport const convert =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return ok\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<Check>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n  const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n      /** @type {unknown} */ (node)\n    )\n\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeANode(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n  return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends Array<any>\n *   ? MatchesOne<Value, Check[keyof Check]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn’t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array<VisitedParents>} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Tree type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} test\n *   `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n *   Handle each node.\n * @param {boolean | null | undefined} [reverse]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n  /** @type {Test} */\n  let check\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    // @ts-expect-error no visitor given, so `visitor` is test.\n    visitor = test\n  } else {\n    // @ts-expect-error visitor given, so `test` isn’t a visitor.\n    check = test\n  }\n\n  const is = convert(check)\n  const step = reverse ? -1 : 1\n\n  factory(tree, undefined, [])()\n\n  /**\n   * @param {UnistNode} node\n   * @param {number | undefined} index\n   * @param {Array<UnistParent>} parents\n   */\n  function factory(node, index, parents) {\n    const value = /** @type {Record<string, unknown>} */ (\n      node && typeof node === 'object' ? node : {}\n    )\n\n    if (typeof value.type === 'string') {\n      const name =\n        // `hast`\n        typeof value.tagName === 'string'\n          ? value.tagName\n          : // `xast`\n          typeof value.name === 'string'\n          ? value.name\n          : undefined\n\n      Object.defineProperty(visit, 'name', {\n        value:\n          'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n      })\n    }\n\n    return visit\n\n    function visit() {\n      /** @type {Readonly<ActionTuple>} */\n      let result = empty\n      /** @type {Readonly<ActionTuple>} */\n      let subresult\n      /** @type {number} */\n      let offset\n      /** @type {Array<UnistParent>} */\n      let grandparents\n\n      if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n        // @ts-expect-error: `visitor` is now a visitor.\n        result = toResult(visitor(node, parents))\n\n        if (result[0] === EXIT) {\n          return result\n        }\n      }\n\n      if ('children' in node && node.children) {\n        const nodeAsParent = /** @type {UnistParent} */ (node)\n\n        if (nodeAsParent.children && result[0] !== SKIP) {\n          offset = (reverse ? nodeAsParent.children.length : -1) + step\n          grandparents = parents.concat(nodeAsParent)\n\n          while (offset > -1 && offset < nodeAsParent.children.length) {\n            const child = nodeAsParent.children[offset]\n\n            subresult = factory(child, offset, grandparents)()\n\n            if (subresult[0] === EXIT) {\n              return subresult\n            }\n\n            offset =\n              typeof subresult[1] === 'number' ? subresult[1] : offset + step\n          }\n        }\n      }\n\n      return result\n    }\n  }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n *   Clean result.\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends Array<any>\n *   ? MatchesOne<Value, Check[keyof Check]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn’t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n *   Build a typed `Visitor` function from a node and all possible parents.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n *   Node type.\n * @template {UnistParent} Ancestor\n *   Parent type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     Matches<Descendant, Check>,\n *     Extract<Descendant, UnistParent>\n *   >\n * )} BuildVisitorFromDescendants\n *   Build a typed `Visitor` function from a list of descendants and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Node type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n *   `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n *   Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n  /** @type {boolean | null | undefined} */\n  let reverse\n  /** @type {Test} */\n  let test\n  /** @type {Visitor} */\n  let visitor\n\n  if (\n    typeof testOrVisitor === 'function' &&\n    typeof visitorOrReverse !== 'function'\n  ) {\n    test = undefined\n    visitor = testOrVisitor\n    reverse = visitorOrReverse\n  } else {\n    // @ts-expect-error: assume the overload with test was given.\n    test = testOrVisitor\n    // @ts-expect-error: assume the overload with test was given.\n    visitor = visitorOrReverse\n    reverse = maybeReverse\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  /**\n   * @param {UnistNode} node\n   * @param {Array<UnistParent>} parents\n   */\n  function overload(node, parents) {\n    const parent = parents[parents.length - 1]\n    const index = parent ? parent.children.indexOf(node) : undefined\n    return visitor(node, index, parent)\n  }\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial<Record<MdastNodes['type'], Handler>>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   <p id=\"x\"></p>\n *   <script>alert(x) // `x` now refers to the `p#x` DOM element</script>\n *   ```\n *\n *   The above example shows that elements are made available by browsers, by\n *   their ID, on the `window` object.\n *   This is a security risk because you might be expecting some other variable\n *   at that place.\n *   It can also break polyfills.\n *   Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n *   Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n *   Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n *   The default value is:\n *\n *   ```js\n *   function defaultFootnoteBackContent(_, rereferenceIndex) {\n *     const result = [{type: 'text', value: '↩'}]\n *\n *     if (rereferenceIndex > 1) {\n *       result.push({\n *         type: 'element',\n *         tagName: 'sup',\n *         properties: {},\n *         children: [{type: 'text', value: String(rereferenceIndex)}]\n *       })\n *     }\n *\n *     return result\n *   }\n *   ```\n *\n *   This content is used in the `a` element of each backreference (the `↩`\n *   links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n *   Label to describe the backreference back to references (default:\n *   `defaultFootnoteBackLabel`).\n *\n *   The default value is:\n *\n *   ```js\n *   function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n *    return (\n *      'Back to reference ' +\n *      (referenceIndex + 1) +\n *      (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n *    )\n *   }\n *   ```\n *\n *   Change it when the markdown is not in English.\n *\n *   This label is used in the `ariaLabel` property on each backreference\n *   (the `↩` links).\n *   It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n *   Change it when the markdown is not in English.\n *\n *   This label is typically hidden visually (assuming a `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (default: `{className:\n *   ['sr-only']}`).\n *\n *   Change it to show the label and add other properties.\n *\n *   This label is typically hidden visually (assuming an `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass an empty string.\n *   You can also add different properties.\n *\n *   > **Note**: `id: 'footnote-label'` is always added, because footnote\n *   > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n *   Change it to match your document structure.\n *\n *   This label is typically hidden visually (assuming a `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes (optional).\n * @property {Array<MdastNodes['type']> | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed)\n *   (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes (optional).\n *\n * @typedef State\n *   Info passed around.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n *   Transform the children of an mdast parent to hast.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => HastElement | Type} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map<string, MdastDefinition>} definitionById\n *   Definitions by their identifier.\n * @property {Map<string, MdastFootnoteDefinition>} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Map<string, number>} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Array<string>} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array<HastElementContent> | HastElementContent | undefined} one\n *   Transform an mdast node to hast.\n * @property {Options} options\n *   Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n *   Copy a node’s positional info.\n * @property {<Type extends HastRootContent>(nodes: Array<Type>, loose?: boolean | undefined) => Array<HastText | Type>} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || emptyOptions\n  /** @type {Map<string, MdastDefinition>} */\n  const definitionById = new Map()\n  /** @type {Map<string, MdastFootnoteDefinition>} */\n  const footnoteById = new Map()\n  /** @type {Map<string, number>} */\n  const footnoteCounts = new Map()\n  /** @type {Handlers} */\n  // @ts-expect-error: the root handler returns a root.\n  // Hard to type.\n  const handlers = {...defaultHandlers, ...settings.handlers}\n\n  /** @type {State} */\n  const state = {\n    all,\n    applyData,\n    definitionById,\n    footnoteById,\n    footnoteCounts,\n    footnoteOrder: [],\n    handlers,\n    one,\n    options: settings,\n    patch,\n    wrap\n  }\n\n  visit(tree, function (node) {\n    if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n      const map = node.type === 'definition' ? definitionById : footnoteById\n      const id = String(node.identifier).toUpperCase()\n\n      // Mimick CM behavior of link definitions.\n      // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/9032189/lib/index.js#L20-L21>.\n      if (!map.has(id)) {\n        // @ts-expect-error: node type matches map.\n        map.set(id, node)\n      }\n    }\n  })\n\n  return state\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {Array<HastElementContent> | HastElementContent | undefined}\n   *   Resulting hast node.\n   */\n  function one(node, parent) {\n    const type = node.type\n    const handle = state.handlers[type]\n\n    if (own.call(state.handlers, type) && handle) {\n      return handle(state, node, parent)\n    }\n\n    if (state.options.passThrough && state.options.passThrough.includes(type)) {\n      if ('children' in node) {\n        const {children, ...shallow} = node\n        const result = structuredClone(shallow)\n        // @ts-expect-error: TS doesn’t understand…\n        result.children = state.all(node)\n        // @ts-expect-error: TS doesn’t understand…\n        return result\n      }\n\n      // @ts-expect-error: it’s custom.\n      return structuredClone(node)\n    }\n\n    const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n    return unknown(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array<HastElementContent>}\n   *   Resulting hast nodes.\n   */\n  function all(parent) {\n    /** @type {Array<HastElementContent>} */\n    const values = []\n\n    if ('children' in parent) {\n      const nodes = parent.children\n      let index = -1\n      while (++index < nodes.length) {\n        const result = state.one(nodes[index], parent)\n\n        // To do: see if we van clean this? Can we merge texts?\n        if (result) {\n          if (index && nodes[index - 1].type === 'break') {\n            if (!Array.isArray(result) && result.type === 'text') {\n              result.value = trimMarkdownSpaceStart(result.value)\n            }\n\n            if (!Array.isArray(result) && result.type === 'element') {\n              const head = result.children[0]\n\n              if (head && head.type === 'text') {\n                head.value = trimMarkdownSpaceStart(head.value)\n              }\n            }\n          }\n\n          if (Array.isArray(result)) {\n            values.push(...result)\n          } else {\n            values.push(result)\n          }\n        }\n      }\n    }\n\n    return values\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {undefined}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {HastElement | Type}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {HastElement | Type} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent of `hName` is to create an element, but likely also to keep\n      // the content around (otherwise: pass `hChildren`).\n      else {\n        /** @type {Array<HastElementContent>} */\n        // @ts-expect-error: assume no doctypes in `root`.\n        const children = 'children' in result ? result.children : [result]\n        result = {type: 'element', tagName: hName, properties: {}, children}\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      Object.assign(result.properties, structuredClone(hProperties))\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastElement | HastText}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastElement | HastText} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: state.all(node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n *   Node type.\n * @param {Array<Type>} nodes\n *   List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n *   Whether to add line endings at start and end (default: `false`).\n * @returns {Array<HastText | Type>}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array<HastText | Type>} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n  let index = 0\n  let code = value.charCodeAt(index)\n\n  while (code === 9 || code === 32) {\n    index++\n    code = value.charCodeAt(index)\n  }\n\n  return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * *   when the node has a `value` (and doesn’t have `data.hName`,\n *     `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n *     node\n * *   otherwise, create a `<div>` element (which could be changed with\n *     `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n *   mdast tree.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {HastNodes}\n *   hast tree.\n */\nexport function toHast(tree, options) {\n  const state = createState(tree, options)\n  const node = state.one(tree, undefined)\n  const foot = footer(state)\n  /** @type {HastNodes} */\n  const result = Array.isArray(node)\n    ? {type: 'root', children: node}\n    : node || {type: 'root', children: []}\n\n  if (foot) {\n    // If there’s a footer, there were definitions, meaning block\n    // content.\n    // So `result` is a parent node.\n    assert('children' in result)\n    result.children.push({type: 'text', value: '\\n'}, foot)\n  }\n\n  return result\n}\n","/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit<ToHastOptions, 'file'>} Options\n *\n * @callback TransformBridge\n *   Bridge-mode.\n *\n *   Runs the destination with the new hast tree.\n *   Discards result.\n * @param {MdastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {Promise<undefined>}\n *   Nothing.\n *\n * @callback TransformMutate\n *  Mutate-mode.\n *\n *  Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {HastRoot}\n *   Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given,\n *   runs the (rehype) plugins used on it with a hast tree,\n *   then discards the result (*bridge mode*)\n * * otherwise,\n *   returns a hast tree,\n *   the plugins used after `remarkRehype` are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**:\n * > It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n *   output the raw HTML.\n *   This is typically discouraged as noted by the option name but is useful if\n *   you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n *   into standard hast nodes (`element`, `text`, etc);\n *   this is a heavy task as it needs a full HTML parser,\n *   but it is the only way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark,\n * which we follow by default.\n * They are supported by GitHub,\n * so footnotes can be enabled in markdown with `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes,\n * which is hidden for sighted users but shown to assistive technology.\n * When your page is not in English,\n * you must define translated values.\n *\n * Back references use ARIA attributes,\n * but the section label itself uses a heading that is hidden with an\n * `sr-only` class.\n * To show it to sighted users,\n * define different attributes in `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem,\n * as it links footnote calls to footnote definitions on the page through `id`\n * attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value`\n *   (and doesn’t have `data.hName`, `data.hProperties`, or `data.hChildren`,\n *   see later),\n *   create a hast `text` node\n * * otherwise,\n *   create a `<div>` element (which could be changed with `data.hName`),\n *   with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @overload\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge | TransformMutate}\n *\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n *   Processor or configuration (optional).\n * @param {Readonly<Options> | null | undefined} [options]\n *   When a processor was given,\n *   configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n *   Transform.\n */\nexport default function remarkRehype(destination, options) {\n  if (destination && 'run' in destination) {\n    /**\n     * @type {TransformBridge}\n     */\n    return async function (tree, file) {\n      // Cast because root in -> root out.\n      const hastTree = /** @type {HastRoot} */ (\n        toHast(tree, {file, ...options})\n      )\n      await destination.run(hastTree, file)\n    }\n  }\n\n  /**\n   * @type {TransformMutate}\n   */\n  return function (tree, file) {\n    // Cast because root in -> root out.\n    // To do: in the future, disallow ` || options` fallback.\n    // With `unified-engine`, `destination` can be `undefined` but\n    // `options` will be the file set.\n    // We should not pass that as `options`.\n    return /** @type {HastRoot} */ (\n      toHast(tree, {file, ...(destination || options)})\n    )\n  }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n *   Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n  if (error) {\n    throw error\n  }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n *   Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n *   Ware.\n *\n * @typedef Pipeline\n *   Pipeline.\n * @property {Run} run\n *   Run the pipeline.\n * @property {Use} use\n *   Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n *\n *   Calls `done` on completion with either an error or the output of the\n *   last middleware.\n *\n *   > 👉 **Note**: as the length of input defines whether async functions get a\n *   > `next` function,\n *   > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n *   Pipeline.\n */\nexport function trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we’re done.\n     *\n     * @param {Error | null | undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n *   returns a promise that is rejected,\n *   or calls the given `done` function with an error,\n *   `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n *   that value is the main output value\n * * if `middleware` calls `done`,\n *   all non-nullish values except for the first one (the error) overwrite the\n *   output values\n *\n * @param {Middleware} middleware\n *   Function to wrap.\n * @param {Callback} callback\n *   Callback called with the output of `middleware`.\n * @returns {Run}\n *   Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result && result.then && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   *\n   * @type {Callback}\n   */\n  function done(error, ...output) {\n    if (!called) {\n      called = true\n      callback(error, ...output)\n    }\n  }\n\n  /**\n   * Call `done` with one value.\n   *\n   * @param {any} [value]\n   */\n  function then(value) {\n    done(null, value)\n  }\n}\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n *   File path.\n * @param {string | null | undefined} [extname]\n *   Extension to strip.\n * @returns {string}\n *   Stem or basename.\n */\nfunction basename(path, extname) {\n  if (extname !== undefined && typeof extname !== 'string') {\n    throw new TypeError('\"ext\" argument must be a string')\n  }\n\n  assertPath(path)\n  let start = 0\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let seenNonSlash\n\n  if (\n    extname === undefined ||\n    extname.length === 0 ||\n    extname.length > path.length\n  ) {\n    while (index--) {\n      if (path.codePointAt(index) === 47 /* `/` */) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now.\n        if (seenNonSlash) {\n          start = index + 1\n          break\n        }\n      } else if (end < 0) {\n        // We saw the first non-path separator, mark this as the end of our\n        // path component.\n        seenNonSlash = true\n        end = index + 1\n      }\n    }\n\n    return end < 0 ? '' : path.slice(start, end)\n  }\n\n  if (extname === path) {\n    return ''\n  }\n\n  let firstNonSlashEnd = -1\n  let extnameIndex = extname.length - 1\n\n  while (index--) {\n    if (path.codePointAt(index) === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (seenNonSlash) {\n        start = index + 1\n        break\n      }\n    } else {\n      if (firstNonSlashEnd < 0) {\n        // We saw the first non-path separator, remember this index in case\n        // we need it if the extension ends up not matching.\n        seenNonSlash = true\n        firstNonSlashEnd = index + 1\n      }\n\n      if (extnameIndex > -1) {\n        // Try to match the explicit extension.\n        if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n          if (extnameIndex < 0) {\n            // We matched the extension, so mark this as the end of our path\n            // component\n            end = index\n          }\n        } else {\n          // Extension does not match, so our result is the entire path\n          // component\n          extnameIndex = -1\n          end = firstNonSlashEnd\n        }\n      }\n    }\n  }\n\n  if (start === end) {\n    end = firstNonSlashEnd\n  } else if (end < 0) {\n    end = path.length\n  }\n\n  return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\nfunction dirname(path) {\n  assertPath(path)\n\n  if (path.length === 0) {\n    return '.'\n  }\n\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  // Prefix `--` is important to not run on `0`.\n  while (--index) {\n    if (path.codePointAt(index) === 47 /* `/` */) {\n      if (unmatchedSlash) {\n        end = index\n        break\n      }\n    } else if (!unmatchedSlash) {\n      // We saw the first non-path separator\n      unmatchedSlash = true\n    }\n  }\n\n  return end < 0\n    ? path.codePointAt(0) === 47 /* `/` */\n      ? '/'\n      : '.'\n    : end === 1 && path.codePointAt(0) === 47 /* `/` */\n      ? '//'\n      : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   Extname.\n */\nfunction extname(path) {\n  assertPath(path)\n\n  let index = path.length\n\n  let end = -1\n  let startPart = 0\n  let startDot = -1\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find.\n  let preDotState = 0\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  while (index--) {\n    const code = path.codePointAt(index)\n\n    if (code === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (unmatchedSlash) {\n        startPart = index + 1\n        break\n      }\n\n      continue\n    }\n\n    if (end < 0) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension.\n      unmatchedSlash = true\n      end = index + 1\n    }\n\n    if (code === 46 /* `.` */) {\n      // If this is our first dot, mark it as the start of our extension.\n      if (startDot < 0) {\n        startDot = index\n      } else if (preDotState !== 1) {\n        preDotState = 1\n      }\n    } else if (startDot > -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension.\n      preDotState = -1\n    }\n  }\n\n  if (\n    startDot < 0 ||\n    end < 0 ||\n    // We saw a non-dot character immediately before the dot.\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly `..`.\n    (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n  ) {\n    return ''\n  }\n\n  return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n *   Path segments.\n * @returns {string}\n *   File path.\n */\nfunction join(...segments) {\n  let index = -1\n  /** @type {string | undefined} */\n  let joined\n\n  while (++index < segments.length) {\n    assertPath(segments[index])\n\n    if (segments[index]) {\n      joined =\n        joined === undefined ? segments[index] : joined + '/' + segments[index]\n    }\n  }\n\n  return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n  assertPath(path)\n\n  const absolute = path.codePointAt(0) === 47 /* `/` */\n\n  // Normalize the path according to POSIX rules.\n  let value = normalizeString(path, !absolute)\n\n  if (value.length === 0 && !absolute) {\n    value = '.'\n  }\n\n  if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n    value += '/'\n  }\n\n  return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n *   File path.\n * @param {boolean} allowAboveRoot\n *   Whether `..` can move above root.\n * @returns {string}\n *   File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n  let result = ''\n  let lastSegmentLength = 0\n  let lastSlash = -1\n  let dots = 0\n  let index = -1\n  /** @type {number | undefined} */\n  let code\n  /** @type {number} */\n  let lastSlashIndex\n\n  while (++index <= path.length) {\n    if (index < path.length) {\n      code = path.codePointAt(index)\n    } else if (code === 47 /* `/` */) {\n      break\n    } else {\n      code = 47 /* `/` */\n    }\n\n    if (code === 47 /* `/` */) {\n      if (lastSlash === index - 1 || dots === 1) {\n        // Empty.\n      } else if (lastSlash !== index - 1 && dots === 2) {\n        if (\n          result.length < 2 ||\n          lastSegmentLength !== 2 ||\n          result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n          result.codePointAt(result.length - 2) !== 46 /* `.` */\n        ) {\n          if (result.length > 2) {\n            lastSlashIndex = result.lastIndexOf('/')\n\n            if (lastSlashIndex !== result.length - 1) {\n              if (lastSlashIndex < 0) {\n                result = ''\n                lastSegmentLength = 0\n              } else {\n                result = result.slice(0, lastSlashIndex)\n                lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n              }\n\n              lastSlash = index\n              dots = 0\n              continue\n            }\n          } else if (result.length > 0) {\n            result = ''\n            lastSegmentLength = 0\n            lastSlash = index\n            dots = 0\n            continue\n          }\n        }\n\n        if (allowAboveRoot) {\n          result = result.length > 0 ? result + '/..' : '..'\n          lastSegmentLength = 2\n        }\n      } else {\n        if (result.length > 0) {\n          result += '/' + path.slice(lastSlash + 1, index)\n        } else {\n          result = path.slice(lastSlash + 1, index)\n        }\n\n        lastSegmentLength = index - lastSlash - 1\n      }\n\n      lastSlash = index\n      dots = 0\n    } else if (code === 46 /* `.` */ && dots > -1) {\n      dots++\n    } else {\n      dots = -1\n    }\n  }\n\n  return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n *   File path.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError(\n      'Path must be a string. Received ' + JSON.stringify(path)\n    )\n  }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const minproc = {cwd}\n\nfunction cwd() {\n  return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n *   File path or URL.\n * @returns {fileUrlOrPath is URL}\n *   Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n  return Boolean(\n    fileUrlOrPath !== null &&\n      typeof fileUrlOrPath === 'object' &&\n      'href' in fileUrlOrPath &&\n      fileUrlOrPath.href &&\n      'protocol' in fileUrlOrPath &&\n      fileUrlOrPath.protocol &&\n      // @ts-expect-error: indexing is fine.\n      fileUrlOrPath.auth === undefined\n  )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n *   File URL.\n * @returns {string}\n *   File URL.\n */\nexport function urlToPath(path) {\n  if (typeof path === 'string') {\n    path = new URL(path)\n  } else if (!isUrl(path)) {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'The \"path\" argument must be of type string or an instance of URL. Received `' +\n        path +\n        '`'\n    )\n    error.code = 'ERR_INVALID_ARG_TYPE'\n    throw error\n  }\n\n  if (path.protocol !== 'file:') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError('The URL must be of scheme file')\n    error.code = 'ERR_INVALID_URL_SCHEME'\n    throw error\n  }\n\n  return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n *   URL.\n * @returns {string}\n *   File path.\n */\nfunction getPathFromURLPosix(url) {\n  if (url.hostname !== '') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'File URL host must be \"localhost\" or empty on darwin'\n    )\n    error.code = 'ERR_INVALID_FILE_URL_HOST'\n    throw error\n  }\n\n  const pathname = url.pathname\n  let index = -1\n\n  while (++index < pathname.length) {\n    if (\n      pathname.codePointAt(index) === 37 /* `%` */ &&\n      pathname.codePointAt(index + 1) === 50 /* `2` */\n    ) {\n      const third = pathname.codePointAt(index + 2)\n      if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n        /** @type {NodeJS.ErrnoException} */\n        const error = new TypeError(\n          'File URL path must not include encoded / characters'\n        )\n        error.code = 'ERR_INVALID_FILE_URL_PATH'\n        throw error\n      }\n    }\n  }\n\n  return decodeURIComponent(pathname)\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n  'history',\n  'path',\n  'basename',\n  'stem',\n  'extname',\n  'dirname'\n])\n\nexport class VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * `options` is treated as:\n   *\n   * *   `string` or `Uint8Array` — `{value: options}`\n   * *   `URL` — `{path: options}`\n   * *   `VFile` — shallow copies its data over to the new file\n   * *   `object` — all fields are shallow copied over to the new file\n   *\n   * Path related fields are set in the following order (least specific to\n   * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n   * `dirname`.\n   *\n   * You cannot set `dirname` or `extname` without setting either `history`,\n   * `path`, `basename`, or `stem` too.\n   *\n   * @param {Compatible | null | undefined} [value]\n   *   File value.\n   * @returns\n   *   New instance.\n   */\n  constructor(value) {\n    /** @type {Options | VFile} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (isUrl(value)) {\n      options = {path: value}\n    } else if (typeof value === 'string' || isUint8Array(value)) {\n      options = {value}\n    } else {\n      options = value\n    }\n\n    /* eslint-disable no-unused-expressions */\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     *\n     * @type {string}\n     */\n    // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n    // the empty string will be overridden in the next block.\n    this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n    /**\n     * Place to store custom info (default: `{}`).\n     *\n     * It’s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     *\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of file paths the file moved between.\n     *\n     * The first is the original path and the last is the current path.\n     *\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * List of messages associated with the file.\n     *\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * Raw value.\n     *\n     * @type {Value}\n     */\n    this.value\n\n    // The below are non-standard, they are “well-known”.\n    // As in, used in several tools.\n    /**\n     * Source map.\n     *\n     * This type is equivalent to the `RawSourceMap` type from the `source-map`\n     * module.\n     *\n     * @type {Map | null | undefined}\n     */\n    this.map\n\n    /**\n     * Custom, non-string, compiled, representation.\n     *\n     * This is used by unified to store non-string results.\n     * One example is when turning markdown into React nodes.\n     *\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Whether a file was saved to disk.\n     *\n     * This is used by vfile reporters.\n     *\n     * @type {boolean}\n     */\n    this.stored\n    /* eslint-enable no-unused-expressions */\n\n    // Set path related properties in the correct order.\n    let index = -1\n\n    while (++index < order.length) {\n      const field = order[index]\n\n      // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n      // `vfile`s too.\n      if (\n        field in options &&\n        options[field] !== undefined &&\n        options[field] !== null\n      ) {\n        // @ts-expect-error: TS doesn’t understand basic reality.\n        this[field] = field === 'history' ? [...options[field]] : options[field]\n      }\n    }\n\n    /** @type {string} */\n    let field\n\n    // Set non-path related properties.\n    for (field in options) {\n      // @ts-expect-error: fine to set other things.\n      if (!order.includes(field)) {\n        // @ts-expect-error: fine to set other things.\n        this[field] = options[field]\n      }\n    }\n  }\n\n  /**\n   * Get the basename (including extname) (example: `'index.min.js'`).\n   *\n   * @returns {string | undefined}\n   *   Basename.\n   */\n  get basename() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path)\n      : undefined\n  }\n\n  /**\n   * Set basename (including extname) (`'index.min.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} basename\n   *   Basename.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set basename(basename) {\n    assertNonEmpty(basename, 'basename')\n    assertPart(basename, 'basename')\n    this.path = minpath.join(this.dirname || '', basename)\n  }\n\n  /**\n   * Get the parent path (example: `'~'`).\n   *\n   * @returns {string | undefined}\n   *   Dirname.\n   */\n  get dirname() {\n    return typeof this.path === 'string'\n      ? minpath.dirname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the parent path (example: `'~'`).\n   *\n   * Cannot be set if there’s no `path` yet.\n   *\n   * @param {string | undefined} dirname\n   *   Dirname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set dirname(dirname) {\n    assertPath(this.basename, 'dirname')\n    this.path = minpath.join(dirname || '', this.basename)\n  }\n\n  /**\n   * Get the extname (including dot) (example: `'.js'`).\n   *\n   * @returns {string | undefined}\n   *   Extname.\n   */\n  get extname() {\n    return typeof this.path === 'string'\n      ? minpath.extname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the extname (including dot) (example: `'.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be set if there’s no `path` yet.\n   *\n   * @param {string | undefined} extname\n   *   Extname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set extname(extname) {\n    assertPart(extname, 'extname')\n    assertPath(this.dirname, 'extname')\n\n    if (extname) {\n      if (extname.codePointAt(0) !== 46 /* `.` */) {\n        throw new Error('`extname` must start with `.`')\n      }\n\n      if (extname.includes('.', 1)) {\n        throw new Error('`extname` cannot contain multiple dots')\n      }\n    }\n\n    this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   *\n   * @returns {string}\n   *   Path.\n   */\n  get path() {\n    return this.history[this.history.length - 1]\n  }\n\n  /**\n   * Set the full path (example: `'~/index.min.js'`).\n   *\n   * Cannot be nullified.\n   * You can set a file URL (a `URL` object with a `file:` protocol) which will\n   * be turned into a path with `url.fileURLToPath`.\n   *\n   * @param {URL | string} path\n   *   Path.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set path(path) {\n    if (isUrl(path)) {\n      path = urlToPath(path)\n    }\n\n    assertNonEmpty(path, 'path')\n\n    if (this.path !== path) {\n      this.history.push(path)\n    }\n  }\n\n  /**\n   * Get the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * @returns {string | undefined}\n   *   Stem.\n   */\n  get stem() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path, this.extname)\n      : undefined\n  }\n\n  /**\n   * Set the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} stem\n   *   Stem.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set stem(stem) {\n    assertNonEmpty(stem, 'stem')\n    assertPart(stem, 'stem')\n    this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n  }\n\n  // Normal prototypal methods.\n  /**\n   * Create a fatal message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `true` (error; file not usable)\n   * and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {never}\n   *   Never.\n   * @throws {VFileMessage}\n   *   Message.\n   */\n  fail(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = true\n\n    throw message\n  }\n\n  /**\n   * Create an info message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `undefined` (info; change\n   * likely not needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  info(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = undefined\n\n    return message\n  }\n\n  /**\n   * Create a message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `false` (warning; change may be\n   * needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  message(causeOrReason, optionsOrParentOrPlace, origin) {\n    const message = new VFileMessage(\n      // @ts-expect-error: the overloads are fine.\n      causeOrReason,\n      optionsOrParentOrPlace,\n      origin\n    )\n\n    if (this.path) {\n      message.name = this.path + ':' + message.name\n      message.file = this.path\n    }\n\n    message.fatal = false\n\n    this.messages.push(message)\n\n    return message\n  }\n\n  /**\n   * Serialize the file.\n   *\n   * > **Note**: which encodings are supported depends on the engine.\n   * > For info on Node.js, see:\n   * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n   *\n   * @param {string | null | undefined} [encoding='utf8']\n   *   Character encoding to understand `value` as when it’s a `Uint8Array`\n   *   (default: `'utf-8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    if (this.value === undefined) {\n      return ''\n    }\n\n    if (typeof this.value === 'string') {\n      return this.value\n    }\n\n    const decoder = new TextDecoder(encoding || undefined)\n    return decoder.decode(this.value)\n  }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n *   File path part.\n * @param {string} name\n *   Part name.\n * @returns {undefined}\n *   Nothing.\n */\nfunction assertPart(part, name) {\n  if (part && part.includes(minpath.sep)) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n    )\n  }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n *   Thing.\n * @param {string} name\n *   Part name.\n * @returns {asserts part is string}\n *   Nothing.\n */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n *   Path.\n * @param {string} name\n *   Dependency name.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n","export const CallableInstance =\n  /**\n   * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n   */\n  (\n    /** @type {unknown} */\n    (\n      /**\n       * @this {Function}\n       * @param {string | symbol} property\n       * @returns {(...parameters: Array<unknown>) => unknown}\n       */\n      function (property) {\n        const self = this\n        const constr = self.constructor\n        const proto = /** @type {Record<string | symbol, Function>} */ (\n          // Prototypes do exist.\n          // type-coverage:ignore-next-line\n          constr.prototype\n        )\n        const value = proto[property]\n        /** @type {(...parameters: Array<unknown>) => unknown} */\n        const apply = function () {\n          return value.apply(apply, arguments)\n        }\n\n        Object.setPrototypeOf(apply, proto)\n\n        // Not needed for us in `unified`: we only call this on the `copy`\n        // function,\n        // and we don't need to add its fields (`length`, `name`)\n        // over.\n        // See also: GH-246.\n        // const names = Object.getOwnPropertyNames(value)\n        //\n        // for (const p of names) {\n        //   const descriptor = Object.getOwnPropertyDescriptor(value, p)\n        //   if (descriptor) Object.defineProperty(apply, p, descriptor)\n        // }\n\n        return apply\n      }\n    )\n  )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n *   Acceptable results from compilers.\n *\n *   To register custom results, add them to\n *   {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n *   The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n *   A **compiler** handles the compiling of a syntax tree to something else\n *   (in most cases, text) (TypeScript type).\n *\n *   It is used in the stringify phase and called with a {@linkcode Node}\n *   and {@linkcode VFile} representation of the document to compile.\n *   It should return the textual representation of the given tree (typically\n *   `string`).\n *\n *   > **Note**: unified typically compiles by serializing: most compilers\n *   > return `string` (or `Uint8Array`).\n *   > Some compilers, such as the one configured with\n *   > [`rehype-react`][rehype-react], return other values (in this case, a\n *   > React tree).\n *   > If you’re using a compiler that doesn’t serialize, expect different\n *   > result values.\n *   >\n *   > To register custom results in TypeScript, add them to\n *   > {@linkcode CompileResultMap}.\n *\n *   [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n *   Tree to compile.\n * @param {VFile} file\n *   File associated with `tree`.\n * @returns {Result}\n *   New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n *   something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the parser yields (default: `Node`)\n * @callback Parser\n *   A **parser** handles the parsing of text to a syntax tree.\n *\n *   It is used in the parse phase and is called with a `string` and\n *   {@linkcode VFile} of the document to parse.\n *   It must return the syntax tree representation of the given file\n *   ({@linkcode Node}).\n * @param {string} document\n *   Document to parse.\n * @param {VFile} file\n *   File associated with `document`.\n * @returns {Tree}\n *   Node representing the given file.\n */\n\n/**\n * @typedef {(\n *   Plugin<Array<any>, any, any> |\n *   PluginTuple<Array<any>, any, any> |\n *   Preset\n * )} Pluggable\n *   Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n *   List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n//  <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n *   Value that is expected as input (default: `Node`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=Input]\n *   Value that is yielded as output (default: `Input`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   (this: Processor, ...parameters: PluginParameters) =>\n *     Input extends string ? // Parser.\n *        Output extends Node | undefined ? undefined | void : never :\n *     Output extends CompileResults ? // Compiler.\n *        Input extends Node | undefined ? undefined | void : never :\n *     Transformer<\n *       Input extends Node ? Input : Node,\n *       Output extends Node ? Output : Node\n *     > | undefined | void\n * )} Plugin\n *   Single plugin.\n *\n *   Plugins configure the processors they are applied on in the following\n *   ways:\n *\n *   *   they change the processor, such as the parser, the compiler, or by\n *       configuring data\n *   *   they specify how to handle trees and files\n *\n *   In practice, they are functions that can receive options and configure the\n *   processor (`this`).\n *\n *   > **Note**: plugins are called when the processor is *frozen*, not when\n *   > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n *   Value that is expected as input (optional).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=undefined] (optional).\n *   Value that is yielded as output.\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   [\n *     plugin: Plugin<TupleParameters, Input, Output>,\n *     ...parameters: TupleParameters\n *   ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n *   Sharable configuration.\n *\n *   They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n *   List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n *   Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n *   The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n *   Callback called when the process is done.\n *\n *   Called with either an error or a result.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {File | undefined} [file]\n *   Processed file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n *   Callback called when transformers are done.\n *\n *   Called with either an error or results.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {Tree | undefined} [tree]\n *   Transformed tree (optional).\n * @param {VFile | undefined} [file]\n *   File (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n *   Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n *   Callback passed to transforms.\n *\n *   If the signature of a `transformer` accepts a third argument, the\n *   transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n *   Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n *   New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n *   New, changed, file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n *   Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n *   Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n *   Transformers handle syntax trees and files.\n *\n *   They are functions that are called each time a syntax tree and file are\n *   passed through the run phase.\n *   When an error occurs in them (either because it’s thrown, returned,\n *   rejected, or passed to `next`), the process stops.\n *\n *   The run phase is handled by [`trough`][trough], see its documentation for\n *   the exact semantics of these functions.\n *\n *   > **Note**: you should likely ignore `next`: don’t accept it.\n *   > it supports callback-style async work.\n *   > But promises are likely easier to reason about.\n *\n *   [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n *   Tree to handle.\n * @param {VFile} file\n *   File to handle.\n * @param {TransformCallback<Output>} next\n *   Callback.\n * @returns {(\n *   Promise<Output | undefined | void> |\n *   Promise<never> | // For some reason this is needed separately.\n *   Output |\n *   Error |\n *   undefined |\n *   void\n * )}\n *   If you accept `next`, nothing.\n *   Otherwise:\n *\n *   *   `Error` — fatal error to stop the process\n *   *   `Promise<undefined>` or `undefined` — the next transformer keeps using\n *       same tree\n *   *   `Promise<Node>` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n *   Output of `parse`.\n * @template {Node | undefined} HeadTree\n *   Input for `run`.\n * @template {Node | undefined} TailTree\n *   Output for `run`.\n * @template {Node | undefined} CompileTree\n *   Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n *   Output of `stringify`.\n * @template {Node | string | undefined} Input\n *   Input of plugin.\n * @template Output\n *   Output of plugin (optional).\n * @typedef {(\n *   Input extends string\n *     ? Output extends Node | undefined\n *       ? // Parser.\n *         Processor<\n *           Output extends undefined ? ParseTree : Output,\n *           HeadTree,\n *           TailTree,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Output extends CompileResults\n *     ? Input extends Node | undefined\n *       ? // Compiler.\n *         Processor<\n *           ParseTree,\n *           HeadTree,\n *           TailTree,\n *           Input extends undefined ? CompileTree : Input,\n *           Output extends undefined ? CompileResult : Output\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Input extends Node | undefined\n *     ? Output extends Node | undefined\n *       ? // Transform.\n *         Processor<\n *           ParseTree,\n *           HeadTree extends undefined ? Input : HeadTree,\n *           Output extends undefined ? TailTree : Output,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : // Unknown.\n *       Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n *   Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n *   Node type that the transformer yields.\n * @typedef {(\n *   Result extends Value | undefined ?\n *     VFile :\n *     VFile & {result: Result}\n *   )} VFileWithOutput\n *   Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n *   If a result that is not acceptable on a `VFile` is used, that will\n *   be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n *   Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n *   Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n *   Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n *   Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n *   Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n  /**\n   * Create a processor.\n   */\n  constructor() {\n    // If `Processor()` is called (w/o new), `copy` is called instead.\n    super('copy')\n\n    /**\n     * Compiler to use (deprecated).\n     *\n     * @deprecated\n     *   Use `compiler` instead.\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.Compiler = undefined\n\n    /**\n     * Parser to use (deprecated).\n     *\n     * @deprecated\n     *   Use `parser` instead.\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.Parser = undefined\n\n    // Note: the following fields are considered private.\n    // However, they are needed for tests, and TSC generates an untyped\n    // `private freezeIndex` field for, which trips `type-coverage` up.\n    // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n    /**\n     * Internal list of configured plugins.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Array<PluginTuple<Array<unknown>>>}\n     */\n    this.attachers = []\n\n    /**\n     * Compiler to use.\n     *\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.compiler = undefined\n\n    /**\n     * Internal state to track where we are while freezing.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {number}\n     */\n    this.freezeIndex = -1\n\n    /**\n     * Internal state to track whether we’re frozen.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {boolean | undefined}\n     */\n    this.frozen = undefined\n\n    /**\n     * Internal state.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Data}\n     */\n    this.namespace = {}\n\n    /**\n     * Parser to use.\n     *\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.parser = undefined\n\n    /**\n     * Internal list of configured transformers.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Pipeline}\n     */\n    this.transformers = trough()\n  }\n\n  /**\n   * Copy a processor.\n   *\n   * @deprecated\n   *   This is a private internal method and should not be used.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   New *unfrozen* processor ({@linkcode Processor}) that is\n   *   configured to work the same as its ancestor.\n   *   When the descendant processor is configured in the future it does not\n   *   affect the ancestral processor.\n   */\n  copy() {\n    // Cast as the type parameters will be the same after attaching.\n    const destination =\n      /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n        new Processor()\n      )\n    let index = -1\n\n    while (++index < this.attachers.length) {\n      const attacher = this.attachers[index]\n      destination.use(...attacher)\n    }\n\n    destination.data(extend(true, {}, this.namespace))\n\n    return destination\n  }\n\n  /**\n   * Configure the processor with info available to all plugins.\n   * Information is stored in an object.\n   *\n   * Typically, options can be given to a specific plugin, but sometimes it\n   * makes sense to have information shared with several plugins.\n   * For example, a list of HTML elements that are self-closing, which is\n   * needed during all phases.\n   *\n   * > **Note**: setting information cannot occur on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * > **Note**: to register custom data in TypeScript, augment the\n   * > {@linkcode Data} interface.\n   *\n   * @example\n   *   This example show how to get and set info:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   const processor = unified().data('alpha', 'bravo')\n   *\n   *   processor.data('alpha') // => 'bravo'\n   *\n   *   processor.data() // => {alpha: 'bravo'}\n   *\n   *   processor.data({charlie: 'delta'})\n   *\n   *   processor.data() // => {charlie: 'delta'}\n   *   ```\n   *\n   * @template {keyof Data} Key\n   *\n   * @overload\n   * @returns {Data}\n   *\n   * @overload\n   * @param {Data} dataset\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Key} key\n   * @returns {Data[Key]}\n   *\n   * @overload\n   * @param {Key} key\n   * @param {Data[Key]} value\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @param {Data | Key} [key]\n   *   Key to get or set, or entire dataset to set, or nothing to get the\n   *   entire dataset (optional).\n   * @param {Data[Key]} [value]\n   *   Value to set (optional).\n   * @returns {unknown}\n   *   The current processor when setting, the value at `key` when getting, or\n   *   the entire dataset when getting without key.\n   */\n  data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', this.frozen)\n        this.namespace[key] = value\n        return this\n      }\n\n      // Get `key`.\n      return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', this.frozen)\n      this.namespace = key\n      return this\n    }\n\n    // Get space.\n    return this.namespace\n  }\n\n  /**\n   * Freeze a processor.\n   *\n   * Frozen processors are meant to be extended and not to be configured\n   * directly.\n   *\n   * When a processor is frozen it cannot be unfrozen.\n   * New processors working the same way can be created by calling the\n   * processor.\n   *\n   * It’s possible to freeze processors explicitly by calling `.freeze()`.\n   * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n   * `.stringify()`, `.process()`, or `.processSync()` are called.\n   *\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   The current processor.\n   */\n  freeze() {\n    if (this.frozen) {\n      return this\n    }\n\n    // Cast so that we can type plugins easier.\n    // Plugins are supposed to be usable on different processors, not just on\n    // this exact processor.\n    const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n    while (++this.freezeIndex < this.attachers.length) {\n      const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      const transformer = attacher.call(self, ...options)\n\n      if (typeof transformer === 'function') {\n        this.transformers.use(transformer)\n      }\n    }\n\n    this.frozen = true\n    this.freezeIndex = Number.POSITIVE_INFINITY\n\n    return this\n  }\n\n  /**\n   * Parse text to a syntax tree.\n   *\n   * > **Note**: `parse` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `parse` performs the parse phase, not the run phase or other\n   * > phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   file to parse (optional); typically `string` or `VFile`; any value\n   *   accepted as `x` in `new VFile(x)`.\n   * @returns {ParseTree extends undefined ? Node : ParseTree}\n   *   Syntax tree representing `file`.\n   */\n  parse(file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const parser = this.parser || this.Parser\n    assertParser('parse', parser)\n    return parser(String(realFile), realFile)\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * > **Note**: `process` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `process` performs the parse, run, and stringify phases.\n   *\n   * @overload\n   * @param {Compatible | undefined} file\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<VFileWithOutput<CompileResult>>}\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`]; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n   *   Callback (optional).\n   * @returns {Promise<VFile> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise a promise, rejected with a fatal error or resolved with the\n   *   processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  process(file, done) {\n    const self = this\n\n    this.freeze()\n    assertParser('process', this.parser || this.Parser)\n    assertCompiler('process', this.compiler || this.Compiler)\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n     * @param {(error: Error | undefined) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      const realFile = vfile(file)\n      // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n      // input of the first transform).\n      const parseTree =\n        /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n          /** @type {unknown} */ (self.parse(realFile))\n        )\n\n      self.run(parseTree, realFile, function (error, tree, file) {\n        if (error || !tree || !file) {\n          return realDone(error)\n        }\n\n        // Assume `TailTree` (the output of the last transform) matches\n        // `CompileTree` (the input of the compiler).\n        const compileTree =\n          /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n            /** @type {unknown} */ (tree)\n          )\n\n        const compileResult = self.stringify(compileTree, file)\n\n        if (looksLikeAValue(compileResult)) {\n          file.value = compileResult\n        } else {\n          file.result = compileResult\n        }\n\n        realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n      })\n\n      /**\n       * @param {Error | undefined} error\n       * @param {VFileWithOutput<CompileResult> | undefined} [file]\n       * @returns {undefined}\n       */\n      function realDone(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `processSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `processSync` performs the parse, run, and stringify phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @returns {VFileWithOutput<CompileResult>}\n   *   The processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  processSync(file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {VFileWithOutput<CompileResult> | undefined} */\n    let result\n\n    this.freeze()\n    assertParser('processSync', this.parser || this.Parser)\n    assertCompiler('processSync', this.compiler || this.Compiler)\n\n    this.process(file, realDone)\n    assertDone('processSync', 'process', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n\n    return result\n\n    /**\n     * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n     */\n    function realDone(error, file) {\n      complete = true\n      bail(error)\n      result = file\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * > **Note**: `run` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `run` performs the run phase, not other phases.\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} file\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {(\n   *   RunCallback<TailTree extends undefined ? Node : TailTree> |\n   *   Compatible\n   * )} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n   *   Callback (optional).\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise, a promise rejected with a fatal error or resolved with the\n   *   transformed tree.\n   */\n  run(tree, file, done) {\n    assertNode(tree)\n    this.freeze()\n\n    const transformers = this.transformers\n\n    if (!done && typeof file === 'function') {\n      done = file\n      file = undefined\n    }\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {(\n     *   ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n     *   undefined\n     * )} resolve\n     * @param {(error: Error) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      assert(\n        typeof file !== 'function',\n        '`file` can’t be a `done` anymore, we checked'\n      )\n      const realFile = vfile(file)\n      transformers.run(tree, realFile, realDone)\n\n      /**\n       * @param {Error | undefined} error\n       * @param {Node} outputTree\n       * @param {VFile} file\n       * @returns {undefined}\n       */\n      function realDone(error, outputTree, file) {\n        const resultingTree =\n          /** @type {TailTree extends undefined ? Node : TailTree} */ (\n            outputTree || tree\n          )\n\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(resultingTree)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, resultingTree, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `runSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `runSync` performs the run phase, not other phases.\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {TailTree extends undefined ? Node : TailTree}\n   *   Transformed tree.\n   */\n  runSync(tree, file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n    let result\n\n    this.run(tree, file, realDone)\n\n    assertDone('runSync', 'run', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n    return result\n\n    /**\n     * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n     */\n    function realDone(error, tree) {\n      bail(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * Compile a syntax tree.\n   *\n   * > **Note**: `stringify` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `stringify` performs the stringify phase, not the run phase\n   * > or other phases.\n   *\n   * @param {CompileTree extends undefined ? Node : CompileTree} tree\n   *   Tree to compile.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {CompileResult extends undefined ? Value : CompileResult}\n   *   Textual representation of the tree (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most compilers\n   *   > return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  stringify(tree, file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const compiler = this.compiler || this.Compiler\n    assertCompiler('stringify', compiler)\n    assertNode(tree)\n\n    return compiler(tree, realFile)\n  }\n\n  /**\n   * Configure the processor to use a plugin, a list of usable values, or a\n   * preset.\n   *\n   * If the processor is already using a plugin, the previous plugin\n   * configuration is changed based on the options that are passed in.\n   * In other words, the plugin is not added a second time.\n   *\n   * > **Note**: `use` cannot be called on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * @example\n   *   There are many ways to pass plugins to `.use()`.\n   *   This example gives an overview:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   unified()\n   *     // Plugin with options:\n   *     .use(pluginA, {x: true, y: true})\n   *     // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n   *     .use(pluginA, {y: false, z: true})\n   *     // Plugins:\n   *     .use([pluginB, pluginC])\n   *     // Two plugins, the second with options:\n   *     .use([pluginD, [pluginE, {}]])\n   *     // Preset with plugins and settings:\n   *     .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n   *     // Settings only:\n   *     .use({settings: {position: false}})\n   *   ```\n   *\n   * @template {Array<unknown>} [Parameters=[]]\n   * @template {Node | string | undefined} [Input=undefined]\n   * @template [Output=Input]\n   *\n   * @overload\n   * @param {Preset | null | undefined} [preset]\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {PluggableList} list\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Plugin<Parameters, Input, Output>} plugin\n   * @param {...(Parameters | [boolean])} parameters\n   * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n   *\n   * @param {PluggableList | Plugin | Preset | null | undefined} value\n   *   Usable value.\n   * @param {...unknown} parameters\n   *   Parameters, when a plugin is given as a usable value.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   Current processor.\n   */\n  use(value, ...parameters) {\n    const attachers = this.attachers\n    const namespace = this.namespace\n\n    assertUnfrozen('use', this.frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, parameters)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    return this\n\n    /**\n     * @param {Pluggable} value\n     * @returns {undefined}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value, [])\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...parameters] =\n            /** @type {PluginTuple<Array<unknown>>} */ (value)\n          addPlugin(plugin, parameters)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {undefined}\n     */\n    function addPreset(result) {\n      if (!('plugins' in result) && !('settings' in result)) {\n        throw new Error(\n          'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n        )\n      }\n\n      addList(result.plugins)\n\n      if (result.settings) {\n        namespace.settings = extend(true, namespace.settings, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList | null | undefined} plugins\n     * @returns {undefined}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {Array<unknown>} parameters\n     * @returns {undefined}\n     */\n    function addPlugin(plugin, parameters) {\n      let index = -1\n      let entryIndex = -1\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entryIndex = index\n          break\n        }\n      }\n\n      if (entryIndex === -1) {\n        attachers.push([plugin, ...parameters])\n      }\n      // Only set if there was at least a `primary` value, otherwise we’d change\n      // `arguments.length`.\n      else if (parameters.length > 0) {\n        let [primary, ...rest] = parameters\n        const currentPrimary = attachers[entryIndex][1]\n        if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n          primary = extend(true, currentPrimary, primary)\n        }\n\n        attachers[entryIndex] = [plugin, primary, ...rest]\n      }\n    }\n  }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n *   This example shows how a new processor can be created (from `remark`) and linked\n *   to **stdin**(4) and **stdout**(4).\n *\n *   ```js\n *   import process from 'node:process'\n *   import concatStream from 'concat-stream'\n *   import {remark} from 'remark'\n *\n *   process.stdin.pipe(\n *     concatStream(function (buf) {\n *       process.stdout.write(String(remark().processSync(buf)))\n *     })\n *   )\n *   ```\n *\n * @returns\n *   New *unfrozen* processor (`processor`).\n *\n *   This processor is configured to work the same as its ancestor.\n *   When the descendant processor is configured in the future it does not\n *   affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!isPlainObj(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n  return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n","/**\n * @import {Element, Nodes, Parents, Root} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {ComponentType, JSX, ReactElement, ReactNode} from 'react'\n * @import {Options as RemarkRehypeOptions} from 'remark-rehype'\n * @import {BuildVisitor} from 'unist-util-visit'\n * @import {PluggableList, Processor} from 'unified'\n */\n\n/**\n * @callback AllowElement\n *   Filter elements.\n * @param {Readonly<Element>} element\n *   Element to check.\n * @param {number} index\n *   Index of `element` in `parent`.\n * @param {Readonly<Parents> | undefined} parent\n *   Parent of `element`.\n * @returns {boolean | null | undefined}\n *   Whether to allow `element` (default: `false`).\n */\n\n/**\n * @typedef ExtraProps\n *   Extra fields we pass.\n * @property {Element | undefined} [node]\n *   passed when `passNode` is on.\n */\n\n/**\n * @typedef {{\n *   [Key in keyof JSX.IntrinsicElements]?: ComponentType<JSX.IntrinsicElements[Key] & ExtraProps> | keyof JSX.IntrinsicElements\n * }} Components\n *   Map tag names to components.\n */\n\n/**\n * @typedef Deprecation\n *   Deprecation.\n * @property {string} from\n *   Old field.\n * @property {string} id\n *   ID in readme.\n * @property {keyof Options} [to]\n *   New field.\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n *   Filter elements (optional);\n *   `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray<string> | null | undefined} [allowedElements]\n *   Tag names to allow (default: all tag names);\n *   cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n *   Markdown.\n * @property {Components | null | undefined} [components]\n *   Map tag names to components.\n * @property {ReadonlyArray<string> | null | undefined} [disallowedElements]\n *   Tag names to disallow (default: `[]`);\n *   cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n *   List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n *   List of remark plugins to use.\n * @property {Readonly<RemarkRehypeOptions> | null | undefined} [remarkRehypeOptions]\n *   Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n *   Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n *   Extract (unwrap) what’s in disallowed elements (default: `false`);\n *   normally when say `strong` is not allowed, it and it’s children are dropped,\n *   with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n *   Change URLs (default: `defaultUrlTransform`)\n */\n\n/**\n * @typedef HooksOptionsOnly\n *   Configuration specifically for {@linkcode MarkdownHooks}.\n * @property {ReactNode | null | undefined} [fallback]\n *   Content to render while the processor processing the markdown (optional).\n */\n\n/**\n * @typedef {Options & HooksOptionsOnly} HooksOptions\n *   Configuration for {@linkcode MarkdownHooks};\n *   extends the regular {@linkcode Options} with a `fallback` prop.\n */\n\n/**\n * @callback UrlTransform\n *   Transform all URLs.\n * @param {string} url\n *   URL.\n * @param {string} key\n *   Property name (example: `'href'`).\n * @param {Readonly<Element>} node\n *   Node.\n * @returns {string | null | undefined}\n *   Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport {useEffect, useState} from 'react'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n  'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly<RemarkRehypeOptions>} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray<Readonly<Deprecation>>} */\nconst deprecations = [\n  {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n  {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n  {\n    from: 'allowNode',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'allowElement'\n  },\n  {\n    from: 'allowedTypes',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'allowedElements'\n  },\n  {from: 'className', id: 'remove-classname'},\n  {\n    from: 'disallowedTypes',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'disallowedElements'\n  },\n  {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n  {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n  {\n    from: 'includeNodeIndex',\n    id: 'change-includenodeindex-to-includeelementindex'\n  },\n  {from: 'linkTarget', id: 'remove-linktarget'},\n  {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n  {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n  {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n  {from: 'source', id: 'change-source-to-children', to: 'children'},\n  {from: 'sourcePos', id: '#remove-sourcepos'},\n  {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n  {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * This is a synchronous component.\n * When using async plugins,\n * see {@linkcode MarkdownAsync} or {@linkcode MarkdownHooks}.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {ReactElement}\n *   React element.\n */\nexport function Markdown(options) {\n  const processor = createProcessor(options)\n  const file = createFile(options)\n  return post(processor.runSync(processor.parse(file), file), options)\n}\n\n/**\n * Component to render markdown with support for async plugins\n * through async/await.\n *\n * Components returning promises are supported on the server.\n * For async support on the client,\n * see {@linkcode MarkdownHooks}.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {Promise<ReactElement>}\n *   Promise to a React element.\n */\nexport async function MarkdownAsync(options) {\n  const processor = createProcessor(options)\n  const file = createFile(options)\n  const tree = await processor.run(processor.parse(file), file)\n  return post(tree, options)\n}\n\n/**\n * Component to render markdown with support for async plugins through hooks.\n *\n * This uses `useEffect` and `useState` hooks.\n * Hooks run on the client and do not immediately render something.\n * For async support on the server,\n * see {@linkcode MarkdownAsync}.\n *\n * @param {Readonly<HooksOptions>} options\n *   Props.\n * @returns {ReactNode}\n *   React node.\n */\nexport function MarkdownHooks(options) {\n  const processor = createProcessor(options)\n  const [error, setError] = useState(\n    /** @type {Error | undefined} */ (undefined)\n  )\n  const [tree, setTree] = useState(/** @type {Root | undefined} */ (undefined))\n\n  useEffect(\n    function () {\n      let cancelled = false\n      const file = createFile(options)\n\n      processor.run(processor.parse(file), file, function (error, tree) {\n        if (!cancelled) {\n          setError(error)\n          setTree(tree)\n        }\n      })\n\n      /**\n       * @returns {undefined}\n       *   Nothing.\n       */\n      return function () {\n        cancelled = true\n      }\n    },\n    [\n      options.children,\n      options.rehypePlugins,\n      options.remarkPlugins,\n      options.remarkRehypeOptions\n    ]\n  )\n\n  if (error) throw error\n\n  return tree ? post(tree, options) : options.fallback\n}\n\n/**\n * Set up the `unified` processor.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {Processor<MdastRoot, MdastRoot, Root, undefined, undefined>}\n *   Result.\n */\nfunction createProcessor(options) {\n  const rehypePlugins = options.rehypePlugins || emptyPlugins\n  const remarkPlugins = options.remarkPlugins || emptyPlugins\n  const remarkRehypeOptions = options.remarkRehypeOptions\n    ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n    : emptyRemarkRehypeOptions\n\n  const processor = unified()\n    .use(remarkParse)\n    .use(remarkPlugins)\n    .use(remarkRehype, remarkRehypeOptions)\n    .use(rehypePlugins)\n\n  return processor\n}\n\n/**\n * Set up the virtual file.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {VFile}\n *   Result.\n */\nfunction createFile(options) {\n  const children = options.children || ''\n  const file = new VFile()\n\n  if (typeof children === 'string') {\n    file.value = children\n  } else {\n    unreachable(\n      'Unexpected value `' +\n        children +\n        '` for `children` prop, expected `string`'\n    )\n  }\n\n  return file\n}\n\n/**\n * Process the result from unified some more.\n *\n * @param {Nodes} tree\n *   Tree.\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {ReactElement}\n *   React element.\n */\nfunction post(tree, options) {\n  const allowedElements = options.allowedElements\n  const allowElement = options.allowElement\n  const components = options.components\n  const disallowedElements = options.disallowedElements\n  const skipHtml = options.skipHtml\n  const unwrapDisallowed = options.unwrapDisallowed\n  const urlTransform = options.urlTransform || defaultUrlTransform\n\n  for (const deprecation of deprecations) {\n    if (Object.hasOwn(options, deprecation.from)) {\n      unreachable(\n        'Unexpected `' +\n          deprecation.from +\n          '` prop, ' +\n          (deprecation.to\n            ? 'use `' + deprecation.to + '` instead'\n            : 'remove it') +\n          ' (see <' +\n          changelog +\n          '#' +\n          deprecation.id +\n          '> for more info)'\n      )\n    }\n  }\n\n  if (allowedElements && disallowedElements) {\n    unreachable(\n      'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n    )\n  }\n\n  visit(tree, transform)\n\n  return toJsxRuntime(tree, {\n    Fragment,\n    components,\n    ignoreInvalidStyle: true,\n    jsx,\n    jsxs,\n    passKeys: true,\n    passNode: true\n  })\n\n  /** @type {BuildVisitor<Root>} */\n  function transform(node, index, parent) {\n    if (node.type === 'raw' && parent && typeof index === 'number') {\n      if (skipHtml) {\n        parent.children.splice(index, 1)\n      } else {\n        parent.children[index] = {type: 'text', value: node.value}\n      }\n\n      return index\n    }\n\n    if (node.type === 'element') {\n      /** @type {string} */\n      let key\n\n      for (key in urlAttributes) {\n        if (\n          Object.hasOwn(urlAttributes, key) &&\n          Object.hasOwn(node.properties, key)\n        ) {\n          const value = node.properties[key]\n          const test = urlAttributes[key]\n          if (test === null || test.includes(node.tagName)) {\n            node.properties[key] = urlTransform(String(value || ''), key, node)\n          }\n        }\n      }\n    }\n\n    if (node.type === 'element') {\n      let remove = allowedElements\n        ? !allowedElements.includes(node.tagName)\n        : disallowedElements\n          ? disallowedElements.includes(node.tagName)\n          : false\n\n      if (!remove && allowElement && typeof index === 'number') {\n        remove = !allowElement(node, index, parent)\n      }\n\n      if (remove && parent && typeof index === 'number') {\n        if (unwrapDisallowed && node.children) {\n          parent.children.splice(index, 1, ...node.children)\n        } else {\n          parent.children.splice(index, 1)\n        }\n\n        return index\n      }\n    }\n  }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n *   URL.\n * @returns {string}\n *   Safe URL.\n */\nexport function defaultUrlTransform(value) {\n  // Same as:\n  // <https://github.com/micromark/micromark/blob/929275e/packages/micromark-util-sanitize-uri/dev/index.js#L34>\n  // But without the `encode` part.\n  const colon = value.indexOf(':')\n  const questionMark = value.indexOf('?')\n  const numberSign = value.indexOf('#')\n  const slash = value.indexOf('/')\n\n  if (\n    // If there is no protocol, it’s relative.\n    colon === -1 ||\n    // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n    (slash !== -1 && colon > slash) ||\n    (questionMark !== -1 && colon > questionMark) ||\n    (numberSign !== -1 && colon > numberSign) ||\n    // It is a protocol, it should be allowed.\n    safeProtocol.test(value.slice(0, colon))\n  ) {\n    return value\n  }\n\n  return ''\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n *   Value to search in.\n * @param {string} character\n *   Character (or substring) to look for.\n * @return {number}\n *   Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n  const source = String(value)\n\n  if (typeof character !== 'string') {\n    throw new TypeError('Expected character')\n  }\n\n  let count = 0\n  let index = source.indexOf(character)\n\n  while (index !== -1) {\n    count++\n    index = source.indexOf(character, index + character.length)\n  }\n\n  return count\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'\n * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef RegExpMatchObject\n *   Info on the match.\n * @property {number} index\n *   The index of the search at which the result was found.\n * @property {string} input\n *   A copy of the search string in the text node.\n * @property {[...Array<Parents>, Text]} stack\n *   All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n *   Pattern to find.\n *\n *   Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n *   Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n *   Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n *   Thing to replace with.\n *\n * @callback ReplaceFunction\n *   Callback called when a search matches.\n * @param {...any} parameters\n *   The parameters are the result of corresponding search expression:\n *\n *   * `value` (`string`) — whole match\n *   * `...capture` (`Array<string>`) — matches from regex capture groups\n *   * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | null | undefined}\n *   Thing to replace with.\n *\n *   * when `null`, `undefined`, `''`, remove the match\n *   * …or when `false`, do not replace at all\n *   * …or when `string`, replace with a text node of that value\n *   * …or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n *   Normalized find and replace.\n *\n * @typedef {Array<Pair>} Pairs\n *   All find and replaced.\n *\n * @typedef Options\n *   Configuration.\n * @property {Test | null | undefined} [ignore]\n *   Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n *   Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n *   Patterns to find.\n * @param {Options | null | undefined} [options]\n *   Configuration (when `find` is not `Find`).\n * @returns {undefined}\n *   Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n  const settings = options || {}\n  const ignored = convert(settings.ignore || [])\n  const pairs = toPairs(list)\n  let pairIndex = -1\n\n  while (++pairIndex < pairs.length) {\n    visitParents(tree, 'text', visitor)\n  }\n\n  /** @type {BuildVisitor<Root, 'text'>} */\n  function visitor(node, parents) {\n    let index = -1\n    /** @type {Parents | undefined} */\n    let grandparent\n\n    while (++index < parents.length) {\n      const parent = parents[index]\n      /** @type {Array<Nodes> | undefined} */\n      const siblings = grandparent ? grandparent.children : undefined\n\n      if (\n        ignored(\n          parent,\n          siblings ? siblings.indexOf(parent) : undefined,\n          grandparent\n        )\n      ) {\n        return\n      }\n\n      grandparent = parent\n    }\n\n    if (grandparent) {\n      return handler(node, parents)\n    }\n  }\n\n  /**\n   * Handle a text node which is not in an ignored parent.\n   *\n   * @param {Text} node\n   *   Text node.\n   * @param {Array<Parents>} parents\n   *   Parents.\n   * @returns {VisitorResult}\n   *   Result.\n   */\n  function handler(node, parents) {\n    const parent = parents[parents.length - 1]\n    const find = pairs[pairIndex][0]\n    const replace = pairs[pairIndex][1]\n    let start = 0\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children\n    const index = siblings.indexOf(node)\n    let change = false\n    /** @type {Array<PhrasingContent>} */\n    let nodes = []\n\n    find.lastIndex = 0\n\n    let match = find.exec(node.value)\n\n    while (match) {\n      const position = match.index\n      /** @type {RegExpMatchObject} */\n      const matchObject = {\n        index: match.index,\n        input: match.input,\n        stack: [...parents, node]\n      }\n      let value = replace(...match, matchObject)\n\n      if (typeof value === 'string') {\n        value = value.length > 0 ? {type: 'text', value} : undefined\n      }\n\n      // It wasn’t a match after all.\n      if (value === false) {\n        // False acts as if there was no match.\n        // So we need to reset `lastIndex`, which currently being at the end of\n        // the current match, to the beginning.\n        find.lastIndex = position + 1\n      } else {\n        if (start !== position) {\n          nodes.push({\n            type: 'text',\n            value: node.value.slice(start, position)\n          })\n        }\n\n        if (Array.isArray(value)) {\n          nodes.push(...value)\n        } else if (value) {\n          nodes.push(value)\n        }\n\n        start = position + match[0].length\n        change = true\n      }\n\n      if (!find.global) {\n        break\n      }\n\n      match = find.exec(node.value)\n    }\n\n    if (change) {\n      if (start < node.value.length) {\n        nodes.push({type: 'text', value: node.value.slice(start)})\n      }\n\n      parent.children.splice(index, 1, ...nodes)\n    } else {\n      nodes = [node]\n    }\n\n    return index + nodes.length\n  }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n *   Schema.\n * @returns {Pairs}\n *   Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n  /** @type {Pairs} */\n  const result = []\n\n  if (!Array.isArray(tupleOrList)) {\n    throw new TypeError('Expected find and replace tuple or list of tuples')\n  }\n\n  /** @type {FindAndReplaceList} */\n  // @ts-expect-error: correct.\n  const list =\n    !tupleOrList[0] || Array.isArray(tupleOrList[0])\n      ? tupleOrList\n      : [tupleOrList]\n\n  let index = -1\n\n  while (++index < list.length) {\n    const tuple = list[index]\n    result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n  }\n\n  return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n *   Find.\n * @returns {RegExp}\n *   Expression.\n */\nfunction toExpression(find) {\n  return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n *   Replace.\n * @returns {ReplaceFunction}\n *   Function.\n */\nfunction toFunction(replace) {\n  return typeof replace === 'function'\n    ? replace\n    : function () {\n        return replace\n      }\n}\n","/**\n * @import {RegExpMatchObject, ReplaceFunction} from 'mdast-util-find-and-replace'\n * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, Transform as FromMarkdownTransform} from 'mdast-util-from-markdown'\n * @import {ConstructName, Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n * @import {Link, PhrasingContent} from 'mdast'\n */\n\nimport {ccount} from 'ccount'\nimport {ok as assert} from 'devlop'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array<ConstructName>} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralFromMarkdown() {\n  return {\n    transforms: [transformGfmAutolinkLiterals],\n    enter: {\n      literalAutolink: enterLiteralAutolink,\n      literalAutolinkEmail: enterLiteralAutolinkValue,\n      literalAutolinkHttp: enterLiteralAutolinkValue,\n      literalAutolinkWww: enterLiteralAutolinkValue\n    },\n    exit: {\n      literalAutolink: exitLiteralAutolink,\n      literalAutolinkEmail: exitLiteralAutolinkEmail,\n      literalAutolinkHttp: exitLiteralAutolinkHttp,\n      literalAutolinkWww: exitLiteralAutolinkWww\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: '@',\n        before: '[+\\\\-.\\\\w]',\n        after: '[\\\\-.\\\\w]',\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: '.',\n        before: '[Ww]',\n        after: '[\\\\-.\\\\w]',\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: ':',\n        before: '[ps]',\n        after: '\\\\/',\n        inConstruct,\n        notInConstruct\n      }\n    ]\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n  this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n  this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n  this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n  this.config.exit.data.call(this, token)\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'link')\n  node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n  this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n  this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n  findAndReplace(\n    tree,\n    [\n      [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n      [/(?<=^|\\s|\\p{P}|\\p{S})([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/gu, findEmail]\n    ],\n    {ignore: ['link', 'linkReference']}\n  )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array<PhrasingContent> | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n  let prefix = ''\n\n  // Not an expected previous character.\n  if (!previous(match)) {\n    return false\n  }\n\n  // Treat `www` as part of the domain.\n  if (/^w/i.test(protocol)) {\n    domain = protocol + domain\n    protocol = ''\n    prefix = 'http://'\n  }\n\n  if (!isCorrectDomain(domain)) {\n    return false\n  }\n\n  const parts = splitUrl(domain + path)\n\n  if (!parts[0]) return false\n\n  /** @type {Link} */\n  const result = {\n    type: 'link',\n    title: null,\n    url: prefix + protocol + parts[0],\n    children: [{type: 'text', value: protocol + parts[0]}]\n  }\n\n  if (parts[1]) {\n    return [result, {type: 'text', value: parts[1]}]\n  }\n\n  return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n  if (\n    // Not an expected previous character.\n    !previous(match, true) ||\n    // Label ends in not allowed character.\n    /[-\\d_]$/.test(label)\n  ) {\n    return false\n  }\n\n  return {\n    type: 'link',\n    title: null,\n    url: 'mailto:' + atext + '@' + label,\n    children: [{type: 'text', value: atext + '@' + label}]\n  }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n  const parts = domain.split('.')\n\n  if (\n    parts.length < 2 ||\n    (parts[parts.length - 1] &&\n      (/_/.test(parts[parts.length - 1]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n    (parts[parts.length - 2] &&\n      (/_/.test(parts[parts.length - 2]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n  ) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n  const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n  if (!trailExec) {\n    return [url, undefined]\n  }\n\n  url = url.slice(0, trailExec.index)\n\n  let trail = trailExec[0]\n  let closingParenIndex = trail.indexOf(')')\n  const openingParens = ccount(url, '(')\n  let closingParens = ccount(url, ')')\n\n  while (closingParenIndex !== -1 && openingParens > closingParens) {\n    url += trail.slice(0, closingParenIndex + 1)\n    trail = trail.slice(closingParenIndex + 1)\n    closingParenIndex = trail.indexOf(')')\n    closingParens++\n  }\n\n  return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n  const code = match.input.charCodeAt(match.index - 1)\n\n  return (\n    (match.index === 0 ||\n      unicodeWhitespace(code) ||\n      unicodePunctuation(code)) &&\n    // If it’s an email, the previous character should not be a slash.\n    (!email || code !== 47)\n  )\n}\n","/**\n * @import {\n *   CompileContext,\n *   Extension as FromMarkdownExtension,\n *   Handle as FromMarkdownHandle\n * } from 'mdast-util-from-markdown'\n * @import {ToMarkdownOptions} from 'mdast-util-gfm-footnote'\n * @import {\n *   Handle as ToMarkdownHandle,\n *   Map,\n *   Options as ToMarkdownExtension\n * } from 'mdast-util-to-markdown'\n * @import {FootnoteDefinition, FootnoteReference} from 'mdast'\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n  this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n  this.enter(\n    {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n    token\n  )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n  const label = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'footnoteReference')\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n  node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n  const label = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'footnoteDefinition')\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n  node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n  this.exit(token)\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n  return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[^')\n  const exit = state.enter('footnoteReference')\n  const subexit = state.enter('reference')\n  value += tracker.move(\n    state.safe(state.associationId(node), {after: ']', before: value})\n  )\n  subexit()\n  exit()\n  value += tracker.move(']')\n  return value\n}\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n  return {\n    enter: {\n      gfmFootnoteCallString: enterFootnoteCallString,\n      gfmFootnoteCall: enterFootnoteCall,\n      gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n      gfmFootnoteDefinition: enterFootnoteDefinition\n    },\n    exit: {\n      gfmFootnoteCallString: exitFootnoteCallString,\n      gfmFootnoteCall: exitFootnoteCall,\n      gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n      gfmFootnoteDefinition: exitFootnoteDefinition\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @param {ToMarkdownOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown(options) {\n  // To do: next major: change default.\n  let firstLineBlank = false\n\n  if (options && options.firstLineBlank) {\n    firstLineBlank = true\n  }\n\n  return {\n    handlers: {footnoteDefinition, footnoteReference},\n    // This is on by default already.\n    unsafe: [{character: '[', inConstruct: ['label', 'phrasing', 'reference']}]\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {FootnoteDefinition} node\n   */\n  function footnoteDefinition(node, _, state, info) {\n    const tracker = state.createTracker(info)\n    let value = tracker.move('[^')\n    const exit = state.enter('footnoteDefinition')\n    const subexit = state.enter('label')\n    value += tracker.move(\n      state.safe(state.associationId(node), {before: value, after: ']'})\n    )\n    subexit()\n\n    value += tracker.move(']:')\n\n    if (node.children && node.children.length > 0) {\n      tracker.shift(4)\n\n      value += tracker.move(\n        (firstLineBlank ? '\\n' : ' ') +\n          state.indentLines(\n            state.containerFlow(node, tracker.current()),\n            firstLineBlank ? mapAll : mapExceptFirst\n          )\n      )\n    }\n\n    exit()\n\n    return value\n  }\n}\n\n/** @type {Map} */\nfunction mapExceptFirst(line, index, blank) {\n  return index === 0 ? line : mapAll(line, index, blank)\n}\n\n/** @type {Map} */\nfunction mapAll(line, index, blank) {\n  return (blank ? '' : '    ') + line\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\n */\nconst constructsWithoutStrikethrough = [\n  'autolink',\n  'destinationLiteral',\n  'destinationRaw',\n  'reference',\n  'titleQuote',\n  'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughFromMarkdown() {\n  return {\n    canContainEols: ['delete'],\n    enter: {strikethrough: enterStrikethrough},\n    exit: {strikethrough: exitStrikethrough}\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: '~',\n        inConstruct: 'phrasing',\n        notInConstruct: constructsWithoutStrikethrough\n      }\n    ],\n    handlers: {delete: handleDelete}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n  this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, state, info) {\n  const tracker = state.createTracker(info)\n  const exit = state.enter('strikethrough')\n  let value = tracker.move('~~')\n  value += state.containerPhrasing(node, {\n    ...tracker.current(),\n    before: value,\n    after: '~'\n  })\n  value += tracker.move('~~')\n  exit()\n  return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n  return '~'\n}\n","// To do: next major: remove.\n/**\n * @typedef {Options} MarkdownTableOptions\n *   Configuration.\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [alignDelimiters=true]\n *   Whether to align the delimiters (default: `true`);\n *   they are aligned by default:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   Pass `false` to make them staggered:\n *\n *   ```markdown\n *   | Alpha | B |\n *   | - | - |\n *   | C | Delta |\n *   ```\n * @property {ReadonlyArray<string | null | undefined> | string | null | undefined} [align]\n *   How to align columns (default: `''`);\n *   one style for all columns or styles for their respective columns;\n *   each style is either `'l'` (left), `'r'` (right), or `'c'` (center);\n *   other values are treated as `''`, which doesn’t place the colon in the\n *   alignment row but does align left;\n *   *only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean | null | undefined} [delimiterEnd=true]\n *   Whether to end each row with the delimiter (default: `true`).\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B\n *   | ----- | -----\n *   | C     | Delta\n *   ```\n * @property {boolean | null | undefined} [delimiterStart=true]\n *   Whether to begin each row with the delimiter (default: `true`).\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are starting delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no starting delimiters:\n *\n *   ```markdown\n *   Alpha | B     |\n *   ----- | ----- |\n *   C     | Delta |\n *   ```\n * @property {boolean | null | undefined} [padding=true]\n *   Whether to add a space of padding between delimiters and cells\n *   (default: `true`).\n *\n *   When `true`, there is padding:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there is no padding:\n *\n *   ```markdown\n *   |Alpha|B    |\n *   |-----|-----|\n *   |C    |Delta|\n *   ```\n * @property {((value: string) => number) | null | undefined} [stringLength]\n *   Function to detect the length of table cell content (optional);\n *   this is used when aligning the delimiters (`|`) between table cells;\n *   full-width characters and emoji mess up delimiter alignment when viewing\n *   the markdown source;\n *   to fix this, you can pass this function,\n *   which receives the cell content and returns its “visible” size;\n *   note that what is and isn’t visible depends on where the text is displayed.\n *\n *   Without such a function, the following:\n *\n *   ```js\n *   markdownTable([\n *     ['Alpha', 'Bravo'],\n *     ['中文', 'Charlie'],\n *     ['👩‍❤️‍👩', 'Delta']\n *   ])\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo |\n *   | - | - |\n *   | 中文 | Charlie |\n *   | 👩‍❤️‍👩 | Delta |\n *   ```\n *\n *   With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n *   ```js\n *   import stringWidth from 'string-width'\n *\n *   markdownTable(\n *     [\n *       ['Alpha', 'Bravo'],\n *       ['中文', 'Charlie'],\n *       ['👩‍❤️‍👩', 'Delta']\n *     ],\n *     {stringLength: stringWidth}\n *   )\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo   |\n *   | ----- | ------- |\n *   | 中文  | Charlie |\n *   | 👩‍❤️‍👩    | Delta   |\n *   ```\n */\n\n/**\n * @param {string} value\n *   Cell value.\n * @returns {number}\n *   Cell size.\n */\nfunction defaultStringLength(value) {\n  return value.length\n}\n\n/**\n * Generate a markdown\n * ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables))\n * table.\n *\n * @param {ReadonlyArray<ReadonlyArray<string | null | undefined>>} table\n *   Table data (matrix of strings).\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Result.\n */\nexport function markdownTable(table, options) {\n  const settings = options || {}\n  // To do: next major: change to spread.\n  const align = (settings.align || []).concat()\n  const stringLength = settings.stringLength || defaultStringLength\n  /** @type {Array<number>} Character codes as symbols for alignment per column. */\n  const alignments = []\n  /** @type {Array<Array<string>>} Cells per row. */\n  const cellMatrix = []\n  /** @type {Array<Array<number>>} Sizes of each cell per row. */\n  const sizeMatrix = []\n  /** @type {Array<number>} */\n  const longestCellByColumn = []\n  let mostCellsPerRow = 0\n  let rowIndex = -1\n\n  // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n  // do superfluous work when aligning, so optimize for aligning.\n  while (++rowIndex < table.length) {\n    /** @type {Array<string>} */\n    const row = []\n    /** @type {Array<number>} */\n    const sizes = []\n    let columnIndex = -1\n\n    if (table[rowIndex].length > mostCellsPerRow) {\n      mostCellsPerRow = table[rowIndex].length\n    }\n\n    while (++columnIndex < table[rowIndex].length) {\n      const cell = serialize(table[rowIndex][columnIndex])\n\n      if (settings.alignDelimiters !== false) {\n        const size = stringLength(cell)\n        sizes[columnIndex] = size\n\n        if (\n          longestCellByColumn[columnIndex] === undefined ||\n          size > longestCellByColumn[columnIndex]\n        ) {\n          longestCellByColumn[columnIndex] = size\n        }\n      }\n\n      row.push(cell)\n    }\n\n    cellMatrix[rowIndex] = row\n    sizeMatrix[rowIndex] = sizes\n  }\n\n  // Figure out which alignments to use.\n  let columnIndex = -1\n\n  if (typeof align === 'object' && 'length' in align) {\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = toAlignment(align[columnIndex])\n    }\n  } else {\n    const code = toAlignment(align)\n\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = code\n    }\n  }\n\n  // Inject the alignment row.\n  columnIndex = -1\n  /** @type {Array<string>} */\n  const row = []\n  /** @type {Array<number>} */\n  const sizes = []\n\n  while (++columnIndex < mostCellsPerRow) {\n    const code = alignments[columnIndex]\n    let before = ''\n    let after = ''\n\n    if (code === 99 /* `c` */) {\n      before = ':'\n      after = ':'\n    } else if (code === 108 /* `l` */) {\n      before = ':'\n    } else if (code === 114 /* `r` */) {\n      after = ':'\n    }\n\n    // There *must* be at least one hyphen-minus in each alignment cell.\n    let size =\n      settings.alignDelimiters === false\n        ? 1\n        : Math.max(\n            1,\n            longestCellByColumn[columnIndex] - before.length - after.length\n          )\n\n    const cell = before + '-'.repeat(size) + after\n\n    if (settings.alignDelimiters !== false) {\n      size = before.length + size + after.length\n\n      if (size > longestCellByColumn[columnIndex]) {\n        longestCellByColumn[columnIndex] = size\n      }\n\n      sizes[columnIndex] = size\n    }\n\n    row[columnIndex] = cell\n  }\n\n  // Inject the alignment row.\n  cellMatrix.splice(1, 0, row)\n  sizeMatrix.splice(1, 0, sizes)\n\n  rowIndex = -1\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (++rowIndex < cellMatrix.length) {\n    const row = cellMatrix[rowIndex]\n    const sizes = sizeMatrix[rowIndex]\n    columnIndex = -1\n    /** @type {Array<string>} */\n    const line = []\n\n    while (++columnIndex < mostCellsPerRow) {\n      const cell = row[columnIndex] || ''\n      let before = ''\n      let after = ''\n\n      if (settings.alignDelimiters !== false) {\n        const size =\n          longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n        const code = alignments[columnIndex]\n\n        if (code === 114 /* `r` */) {\n          before = ' '.repeat(size)\n        } else if (code === 99 /* `c` */) {\n          if (size % 2) {\n            before = ' '.repeat(size / 2 + 0.5)\n            after = ' '.repeat(size / 2 - 0.5)\n          } else {\n            before = ' '.repeat(size / 2)\n            after = before\n          }\n        } else {\n          after = ' '.repeat(size)\n        }\n      }\n\n      if (settings.delimiterStart !== false && !columnIndex) {\n        line.push('|')\n      }\n\n      if (\n        settings.padding !== false &&\n        // Don’t add the opening space if we’re not aligning and the cell is\n        // empty: there will be a closing space.\n        !(settings.alignDelimiters === false && cell === '') &&\n        (settings.delimiterStart !== false || columnIndex)\n      ) {\n        line.push(' ')\n      }\n\n      if (settings.alignDelimiters !== false) {\n        line.push(before)\n      }\n\n      line.push(cell)\n\n      if (settings.alignDelimiters !== false) {\n        line.push(after)\n      }\n\n      if (settings.padding !== false) {\n        line.push(' ')\n      }\n\n      if (\n        settings.delimiterEnd !== false ||\n        columnIndex !== mostCellsPerRow - 1\n      ) {\n        line.push('|')\n      }\n    }\n\n    lines.push(\n      settings.delimiterEnd === false\n        ? line.join('').replace(/ +$/, '')\n        : line.join('')\n    )\n  }\n\n  return lines.join('\\n')\n}\n\n/**\n * @param {string | null | undefined} [value]\n *   Value to serialize.\n * @returns {string}\n *   Result.\n */\nfunction serialize(value) {\n  return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string | null | undefined} value\n *   Value.\n * @returns {number}\n *   Alignment.\n */\nfunction toAlignment(value) {\n  const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n  return code === 67 /* `C` */ || code === 99 /* `c` */\n    ? 99 /* `c` */\n    : code === 76 /* `L` */ || code === 108 /* `l` */\n      ? 108 /* `l` */\n      : code === 82 /* `R` */ || code === 114 /* `r` */\n        ? 114 /* `r` */\n        : 0\n}\n","/**\n * @import {Blockquote, Parents} from 'mdast'\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Blockquote} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function blockquote(node, _, state, info) {\n  const exit = state.enter('blockquote')\n  const tracker = state.createTracker(info)\n  tracker.move('> ')\n  tracker.shift(2)\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n  return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n  return '>' + (blank ? '' : ' ') + line\n}\n","/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n  return (\n    listInScope(stack, pattern.inConstruct, true) &&\n    !listInScope(stack, pattern.notInConstruct, false)\n  )\n}\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n  if (typeof list === 'string') {\n    list = [list]\n  }\n\n  if (!list || list.length === 0) {\n    return none\n  }\n\n  let index = -1\n\n  while (++index < list.length) {\n    if (stack.includes(list[index])) {\n      return true\n    }\n  }\n\n  return false\n}\n","/**\n * @import {Break, Parents} from 'mdast'\n * @import {Info, State} from 'mdast-util-to-markdown'\n */\n\nimport {patternInScope} from '../util/pattern-in-scope.js'\n\n/**\n * @param {Break} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function hardBreak(_, _1, state, info) {\n  let index = -1\n\n  while (++index < state.unsafe.length) {\n    // If we can’t put eols in this construct (setext headings, tables), use a\n    // space instead.\n    if (\n      state.unsafe[index].character === '\\n' &&\n      patternInScope(state.stack, state.unsafe[index])\n    ) {\n      return /[ \\t]/.test(info.before) ? '' : ' '\n    }\n  }\n\n  return '\\\\\\n'\n}\n","/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n *   Content to search in.\n * @param {string} substring\n *   Substring to look for, typically one character.\n * @returns {number}\n *   Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n  const source = String(value)\n  let index = source.indexOf(substring)\n  let expected = index\n  let count = 0\n  let max = 0\n\n  if (typeof substring !== 'string') {\n    throw new TypeError('Expected substring')\n  }\n\n  while (index !== -1) {\n    if (index === expected) {\n      if (++count > max) {\n        max = count\n      }\n    } else {\n      count = 1\n    }\n\n    expected = index + substring.length\n    index = source.indexOf(substring, expected)\n  }\n\n  return max\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Code} from 'mdast'\n */\n\n/**\n * @param {Code} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatCodeAsIndented(node, state) {\n  return Boolean(\n    state.options.fences === false &&\n      node.value &&\n      // If there’s no info…\n      !node.lang &&\n      // And there’s a non-whitespace character…\n      /[^ \\r\\n]/.test(node.value) &&\n      // And the value doesn’t start or end in a blank…\n      !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n  )\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['fence'], null | undefined>}\n */\nexport function checkFence(state) {\n  const marker = state.options.fence || '`'\n\n  if (marker !== '`' && marker !== '~') {\n    throw new Error(\n      'Cannot serialize code with `' +\n        marker +\n        '` for `options.fence`, expected `` ` `` or `~`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {Code, Parents} from 'mdast'\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {formatCodeAsIndented} from '../util/format-code-as-indented.js'\nimport {checkFence} from '../util/check-fence.js'\n\n/**\n * @param {Code} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function code(node, _, state, info) {\n  const marker = checkFence(state)\n  const raw = node.value || ''\n  const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n\n  if (formatCodeAsIndented(node, state)) {\n    const exit = state.enter('codeIndented')\n    const value = state.indentLines(raw, map)\n    exit()\n    return value\n  }\n\n  const tracker = state.createTracker(info)\n  const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n  const exit = state.enter('codeFenced')\n  let value = tracker.move(sequence)\n\n  if (node.lang) {\n    const subexit = state.enter(`codeFencedLang${suffix}`)\n    value += tracker.move(\n      state.safe(node.lang, {\n        before: value,\n        after: ' ',\n        encode: ['`'],\n        ...tracker.current()\n      })\n    )\n    subexit()\n  }\n\n  if (node.lang && node.meta) {\n    const subexit = state.enter(`codeFencedMeta${suffix}`)\n    value += tracker.move(' ')\n    value += tracker.move(\n      state.safe(node.meta, {\n        before: value,\n        after: '\\n',\n        encode: ['`'],\n        ...tracker.current()\n      })\n    )\n    subexit()\n  }\n\n  value += tracker.move('\\n')\n\n  if (raw) {\n    value += tracker.move(raw + '\\n')\n  }\n\n  value += tracker.move(sequence)\n  exit()\n  return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n  return (blank ? '' : '    ') + line\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['quote'], null | undefined>}\n */\nexport function checkQuote(state) {\n  const marker = state.options.quote || '\"'\n\n  if (marker !== '\"' && marker !== \"'\") {\n    throw new Error(\n      'Cannot serialize title with `' +\n        marker +\n        '` for `options.quote`, expected `\"`, or `\\'`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Definition, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\n/**\n * @param {Definition} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function definition(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const exit = state.enter('definition')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[')\n  value += tracker.move(\n    state.safe(state.associationId(node), {\n      before: value,\n      after: ']',\n      ...tracker.current()\n    })\n  )\n  value += tracker.move(']: ')\n\n  subexit()\n\n  if (\n    // If there’s no url, or…\n    !node.url ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : '\\n',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  exit()\n\n  return value\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['emphasis'], null | undefined>}\n */\nexport function checkEmphasis(state) {\n  const marker = state.options.emphasis || '*'\n\n  if (marker !== '*' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize emphasis with `' +\n        marker +\n        '` for `options.emphasis`, expected `*`, or `_`'\n    )\n  }\n\n  return marker\n}\n","/**\n * Encode a code point as a character reference.\n *\n * @param {number} code\n *   Code point to encode.\n * @returns {string}\n *   Encoded character reference.\n */\nexport function encodeCharacterReference(code) {\n  return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n","/**\n * @import {EncodeSides} from '../types.js'\n */\n\nimport {classifyCharacter} from 'micromark-util-classify-character'\n\n/**\n * Check whether to encode (as a character reference) the characters\n * surrounding an attention run.\n *\n * Which characters are around an attention run influence whether it works or\n * not.\n *\n * See <https://github.com/orgs/syntax-tree/discussions/60> for more info.\n * See this markdown in a particular renderer to see what works:\n *\n * ```markdown\n * |                         | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) |\n * | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ |\n * | 1 (letter outside)      | x*y*z             | x*.*z                  | x* *z                 | x**z               |\n * | 2 (punctuation outside) | .*y*.             | .*.*.                  | .* *.                 | .**.               |\n * | 3 (whitespace outside)  | x *y* z           | x *.* z                | x * * z               | x ** z             |\n * | 4 (nothing outside)     | *x*               | *.*                    | * *                   | **                 |\n * ```\n *\n * @param {number} outside\n *   Code point on the outer side of the run.\n * @param {number} inside\n *   Code point on the inner side of the run.\n * @param {'*' | '_'} marker\n *   Marker of the run.\n *   Underscores are handled more strictly (they form less often) than\n *   asterisks.\n * @returns {EncodeSides}\n *   Whether to encode characters.\n */\n// Important: punctuation must never be encoded.\n// Punctuation is solely used by markdown constructs.\n// And by encoding itself.\n// Encoding them will break constructs or double encode things.\nexport function encodeInfo(outside, inside, marker) {\n  const outsideKind = classifyCharacter(outside)\n  const insideKind = classifyCharacter(inside)\n\n  // Letter outside:\n  if (outsideKind === undefined) {\n    return insideKind === undefined\n      ? // Letter inside:\n        // we have to encode *both* letters for `_` as it is looser.\n        // it already forms for `*` (and GFMs `~`).\n        marker === '_'\n        ? {inside: true, outside: true}\n        : {inside: false, outside: false}\n      : insideKind === 1\n        ? // Whitespace inside: encode both (letter, whitespace).\n          {inside: true, outside: true}\n        : // Punctuation inside: encode outer (letter)\n          {inside: false, outside: true}\n  }\n\n  // Whitespace outside:\n  if (outsideKind === 1) {\n    return insideKind === undefined\n      ? // Letter inside: already forms.\n        {inside: false, outside: false}\n      : insideKind === 1\n        ? // Whitespace inside: encode both (whitespace).\n          {inside: true, outside: true}\n        : // Punctuation inside: already forms.\n          {inside: false, outside: false}\n  }\n\n  // Punctuation outside:\n  return insideKind === undefined\n    ? // Letter inside: already forms.\n      {inside: false, outside: false}\n    : insideKind === 1\n      ? // Whitespace inside: encode inner (whitespace).\n        {inside: true, outside: false}\n      : // Punctuation inside: already forms.\n        {inside: false, outside: false}\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Emphasis, Parents} from 'mdast'\n */\n\nimport {checkEmphasis} from '../util/check-emphasis.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nemphasis.peek = emphasisPeek\n\n/**\n * @param {Emphasis} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function emphasis(node, _, state, info) {\n  const marker = checkEmphasis(state)\n  const exit = state.enter('emphasis')\n  const tracker = state.createTracker(info)\n  const before = tracker.move(marker)\n\n  let between = tracker.move(\n    state.containerPhrasing(node, {\n      after: marker,\n      before,\n      ...tracker.current()\n    })\n  )\n  const betweenHead = between.charCodeAt(0)\n  const open = encodeInfo(\n    info.before.charCodeAt(info.before.length - 1),\n    betweenHead,\n    marker\n  )\n\n  if (open.inside) {\n    between = encodeCharacterReference(betweenHead) + between.slice(1)\n  }\n\n  const betweenTail = between.charCodeAt(between.length - 1)\n  const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n  if (close.inside) {\n    between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n  }\n\n  const after = tracker.move(marker)\n\n  exit()\n\n  state.attentionEncodeSurroundingInfo = {\n    after: close.outside,\n    before: open.outside\n  }\n  return before + between + after\n}\n\n/**\n * @param {Emphasis} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction emphasisPeek(_, _1, state) {\n  return state.options.emphasis || '*'\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Heading} from 'mdast'\n */\n\nimport {EXIT, visit} from 'unist-util-visit'\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Heading} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatHeadingAsSetext(node, state) {\n  let literalWithBreak = false\n\n  // Look for literals with a line break.\n  // Note that this also\n  visit(node, function (node) {\n    if (\n      ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n      node.type === 'break'\n    ) {\n      literalWithBreak = true\n      return EXIT\n    }\n  })\n\n  return Boolean(\n    (!node.depth || node.depth < 3) &&\n      toString(node) &&\n      (state.options.setext || literalWithBreak)\n  )\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Heading, Parents} from 'mdast'\n */\n\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'\n\n/**\n * @param {Heading} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function heading(node, _, state, info) {\n  const rank = Math.max(Math.min(6, node.depth || 1), 1)\n  const tracker = state.createTracker(info)\n\n  if (formatHeadingAsSetext(node, state)) {\n    const exit = state.enter('headingSetext')\n    const subexit = state.enter('phrasing')\n    const value = state.containerPhrasing(node, {\n      ...tracker.current(),\n      before: '\\n',\n      after: '\\n'\n    })\n    subexit()\n    exit()\n\n    return (\n      value +\n      '\\n' +\n      (rank === 1 ? '=' : '-').repeat(\n        // The whole size…\n        value.length -\n          // Minus the position of the character after the last EOL (or\n          // 0 if there is none)…\n          (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n      )\n    )\n  }\n\n  const sequence = '#'.repeat(rank)\n  const exit = state.enter('headingAtx')\n  const subexit = state.enter('phrasing')\n\n  // Note: for proper tracking, we should reset the output positions when there\n  // is no content returned, because then the space is not output.\n  // Practically, in that case, there is no content, so it doesn’t matter that\n  // we’ve tracked one too many characters.\n  tracker.move(sequence + ' ')\n\n  let value = state.containerPhrasing(node, {\n    before: '# ',\n    after: '\\n',\n    ...tracker.current()\n  })\n\n  if (/^[\\t ]/.test(value)) {\n    // To do: what effect has the character reference on tracking?\n    value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1)\n  }\n\n  value = value ? sequence + ' ' + value : sequence\n\n  if (state.options.closeAtx) {\n    value += ' ' + sequence\n  }\n\n  subexit()\n  exit()\n\n  return value\n}\n","/**\n * @import {Html} from 'mdast'\n */\n\nhtml.peek = htmlPeek\n\n/**\n * @param {Html} node\n * @returns {string}\n */\nexport function html(node) {\n  return node.value || ''\n}\n\n/**\n * @returns {string}\n */\nfunction htmlPeek() {\n  return '<'\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Image, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\nimage.peek = imagePeek\n\n/**\n * @param {Image} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function image(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const exit = state.enter('image')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('![')\n  value += tracker.move(\n    state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n  )\n  value += tracker.move('](')\n\n  subexit()\n\n  if (\n    // If there’s no url but there is a title…\n    (!node.url && node.title) ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : ')',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  value += tracker.move(')')\n  exit()\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction imagePeek() {\n  return '!'\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {ImageReference, Parents} from 'mdast'\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * @param {ImageReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function imageReference(node, _, state, info) {\n  const type = node.referenceType\n  const exit = state.enter('imageReference')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('![')\n  const alt = state.safe(node.alt, {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  value += tracker.move(alt + '][')\n\n  subexit()\n  // Hide the fact that we’re in phrasing, because escapes don’t work.\n  const stack = state.stack\n  state.stack = []\n  subexit = state.enter('reference')\n  // Note: for proper tracking, we should reset the output positions when we end\n  // up making a `shortcut` reference, because then there is no brace output.\n  // Practically, in that case, there is no content, so it doesn’t matter that\n  // we’ve tracked one too many characters.\n  const reference = state.safe(state.associationId(node), {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  subexit()\n  state.stack = stack\n  exit()\n\n  if (type === 'full' || !alt || alt !== reference) {\n    value += tracker.move(reference + ']')\n  } else if (type === 'shortcut') {\n    // Remove the unwanted `[`.\n    value = value.slice(0, -1)\n  } else {\n    value += tracker.move(']')\n  }\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction imageReferencePeek() {\n  return '!'\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {InlineCode, Parents} from 'mdast'\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n  let value = node.value || ''\n  let sequence = '`'\n  let index = -1\n\n  // If there is a single grave accent on its own in the code, use a fence of\n  // two.\n  // If there are two in a row, use one.\n  while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n    sequence += '`'\n  }\n\n  // If this is not just spaces or eols (tabs don’t count), and either the\n  // first or last character are a space, eol, or tick, then pad with spaces.\n  if (\n    /[^ \\r\\n]/.test(value) &&\n    ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n  ) {\n    value = ' ' + value + ' '\n  }\n\n  // We have a potential problem: certain characters after eols could result in\n  // blocks being seen.\n  // For example, if someone injected the string `'\\n# b'`, then that would\n  // result in an ATX heading.\n  // We can’t escape characters in `inlineCode`, but because eols are\n  // transformed to spaces when going from markdown to HTML anyway, we can swap\n  // them out.\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n    const expression = state.compilePattern(pattern)\n    /** @type {RegExpExecArray | null} */\n    let match\n\n    // Only look for `atBreak`s.\n    // Btw: note that `atBreak` patterns will always start the regex at LF or\n    // CR.\n    if (!pattern.atBreak) continue\n\n    while ((match = expression.exec(value))) {\n      let position = match.index\n\n      // Support CRLF (patterns only look for one of the characters).\n      if (\n        value.charCodeAt(position) === 10 /* `\\n` */ &&\n        value.charCodeAt(position - 1) === 13 /* `\\r` */\n      ) {\n        position--\n      }\n\n      value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n    }\n  }\n\n  return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n  return '`'\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Link} from 'mdast'\n */\n\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Link} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatLinkAsAutolink(node, state) {\n  const raw = toString(node)\n\n  return Boolean(\n    !state.options.resourceLink &&\n      // If there’s a url…\n      node.url &&\n      // And there’s a no title…\n      !node.title &&\n      // And the content of `node` is a single text node…\n      node.children &&\n      node.children.length === 1 &&\n      node.children[0].type === 'text' &&\n      // And if the url is the same as the content…\n      (raw === node.url || 'mailto:' + raw === node.url) &&\n      // And that starts w/ a protocol…\n      /^[a-z][a-z+.-]+:/i.test(node.url) &&\n      // And that doesn’t contain ASCII control codes (character escapes and\n      // references don’t work), space, or angle brackets…\n      !/[\\0- <>\\u007F]/.test(node.url)\n  )\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Link, Parents} from 'mdast'\n * @import {Exit} from '../types.js'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\nimport {formatLinkAsAutolink} from '../util/format-link-as-autolink.js'\n\nlink.peek = linkPeek\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function link(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const tracker = state.createTracker(info)\n  /** @type {Exit} */\n  let exit\n  /** @type {Exit} */\n  let subexit\n\n  if (formatLinkAsAutolink(node, state)) {\n    // Hide the fact that we’re in phrasing, because escapes don’t work.\n    const stack = state.stack\n    state.stack = []\n    exit = state.enter('autolink')\n    let value = tracker.move('<')\n    value += tracker.move(\n      state.containerPhrasing(node, {\n        before: value,\n        after: '>',\n        ...tracker.current()\n      })\n    )\n    value += tracker.move('>')\n    exit()\n    state.stack = stack\n    return value\n  }\n\n  exit = state.enter('link')\n  subexit = state.enter('label')\n  let value = tracker.move('[')\n  value += tracker.move(\n    state.containerPhrasing(node, {\n      before: value,\n      after: '](',\n      ...tracker.current()\n    })\n  )\n  value += tracker.move('](')\n  subexit()\n\n  if (\n    // If there’s no url but there is a title…\n    (!node.url && node.title) ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : ')',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  value += tracker.move(')')\n\n  exit()\n  return value\n}\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction linkPeek(node, _, state) {\n  return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {LinkReference, Parents} from 'mdast'\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * @param {LinkReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function linkReference(node, _, state, info) {\n  const type = node.referenceType\n  const exit = state.enter('linkReference')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[')\n  const text = state.containerPhrasing(node, {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  value += tracker.move(text + '][')\n\n  subexit()\n  // Hide the fact that we’re in phrasing, because escapes don’t work.\n  const stack = state.stack\n  state.stack = []\n  subexit = state.enter('reference')\n  // Note: for proper tracking, we should reset the output positions when we end\n  // up making a `shortcut` reference, because then there is no brace output.\n  // Practically, in that case, there is no content, so it doesn’t matter that\n  // we’ve tracked one too many characters.\n  const reference = state.safe(state.associationId(node), {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  subexit()\n  state.stack = stack\n  exit()\n\n  if (type === 'full' || !text || text !== reference) {\n    value += tracker.move(reference + ']')\n  } else if (type === 'shortcut') {\n    // Remove the unwanted `[`.\n    value = value.slice(0, -1)\n  } else {\n    value += tracker.move(']')\n  }\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction linkReferencePeek() {\n  return '['\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBullet(state) {\n  const marker = state.options.bullet || '*'\n\n  if (marker !== '*' && marker !== '+' && marker !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bullet`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\nimport {checkBullet} from './check-bullet.js'\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBulletOther(state) {\n  const bullet = checkBullet(state)\n  const bulletOther = state.options.bulletOther\n\n  if (!bulletOther) {\n    return bullet === '*' ? '-' : '*'\n  }\n\n  if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        bulletOther +\n        '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  if (bulletOther === bullet) {\n    throw new Error(\n      'Expected `bullet` (`' +\n        bullet +\n        '`) and `bulletOther` (`' +\n        bulletOther +\n        '`) to be different'\n    )\n  }\n\n  return bulletOther\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bulletOrdered'], null | undefined>}\n */\nexport function checkBulletOrdered(state) {\n  const marker = state.options.bulletOrdered || '.'\n\n  if (marker !== '.' && marker !== ')') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bulletOrdered`, expected `.` or `)`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['rule'], null | undefined>}\n */\nexport function checkRule(state) {\n  const marker = state.options.rule || '*'\n\n  if (marker !== '*' && marker !== '-' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize rules with `' +\n        marker +\n        '` for `options.rule`, expected `*`, `-`, or `_`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {List, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkBulletOther} from '../util/check-bullet-other.js'\nimport {checkBulletOrdered} from '../util/check-bullet-ordered.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {List} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function list(node, parent, state, info) {\n  const exit = state.enter('list')\n  const bulletCurrent = state.bulletCurrent\n  /** @type {string} */\n  let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n  /** @type {string} */\n  const bulletOther = node.ordered\n    ? bullet === '.'\n      ? ')'\n      : '.'\n    : checkBulletOther(state)\n  let useDifferentMarker =\n    parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n  if (!node.ordered) {\n    const firstListItem = node.children ? node.children[0] : undefined\n\n    // If there’s an empty first list item directly in two list items,\n    // we have to use a different bullet:\n    //\n    // ```markdown\n    // * - *\n    // ```\n    //\n    // …because otherwise it would become one big thematic break.\n    if (\n      // Bullet could be used as a thematic break marker:\n      (bullet === '*' || bullet === '-') &&\n      // Empty first list item:\n      firstListItem &&\n      (!firstListItem.children || !firstListItem.children[0]) &&\n      // Directly in two other list items:\n      state.stack[state.stack.length - 1] === 'list' &&\n      state.stack[state.stack.length - 2] === 'listItem' &&\n      state.stack[state.stack.length - 3] === 'list' &&\n      state.stack[state.stack.length - 4] === 'listItem' &&\n      // That are each the first child.\n      state.indexStack[state.indexStack.length - 1] === 0 &&\n      state.indexStack[state.indexStack.length - 2] === 0 &&\n      state.indexStack[state.indexStack.length - 3] === 0\n    ) {\n      useDifferentMarker = true\n    }\n\n    // If there’s a thematic break at the start of the first list item,\n    // we have to use a different bullet:\n    //\n    // ```markdown\n    // * ---\n    // ```\n    //\n    // …because otherwise it would become one big thematic break.\n    if (checkRule(state) === bullet && firstListItem) {\n      let index = -1\n\n      while (++index < node.children.length) {\n        const item = node.children[index]\n\n        if (\n          item &&\n          item.type === 'listItem' &&\n          item.children &&\n          item.children[0] &&\n          item.children[0].type === 'thematicBreak'\n        ) {\n          useDifferentMarker = true\n          break\n        }\n      }\n    }\n  }\n\n  if (useDifferentMarker) {\n    bullet = bulletOther\n  }\n\n  state.bulletCurrent = bullet\n  const value = state.containerFlow(node, info)\n  state.bulletLastUsed = bullet\n  state.bulletCurrent = bulletCurrent\n  exit()\n  return value\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['listItemIndent'], null | undefined>}\n */\nexport function checkListItemIndent(state) {\n  const style = state.options.listItemIndent || 'one'\n\n  if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        style +\n        '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n    )\n  }\n\n  return style\n}\n","/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {ListItem, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n  const listItemIndent = checkListItemIndent(state)\n  let bullet = state.bulletCurrent || checkBullet(state)\n\n  // Add the marker value for ordered lists.\n  if (parent && parent.type === 'list' && parent.ordered) {\n    bullet =\n      (typeof parent.start === 'number' && parent.start > -1\n        ? parent.start\n        : 1) +\n      (state.options.incrementListMarker === false\n        ? 0\n        : parent.children.indexOf(node)) +\n      bullet\n  }\n\n  let size = bullet.length + 1\n\n  if (\n    listItemIndent === 'tab' ||\n    (listItemIndent === 'mixed' &&\n      ((parent && parent.type === 'list' && parent.spread) || node.spread))\n  ) {\n    size = Math.ceil(size / 4) * 4\n  }\n\n  const tracker = state.createTracker(info)\n  tracker.move(bullet + ' '.repeat(size - bullet.length))\n  tracker.shift(size)\n  const exit = state.enter('listItem')\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n\n  return value\n\n  /** @type {Map} */\n  function map(line, index, blank) {\n    if (index) {\n      return (blank ? '' : ' '.repeat(size)) + line\n    }\n\n    return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n  }\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Paragraph, Parents} from 'mdast'\n */\n\n/**\n * @param {Paragraph} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function paragraph(node, _, state, info) {\n  const exit = state.enter('paragraph')\n  const subexit = state.enter('phrasing')\n  const value = state.containerPhrasing(node, info)\n  subexit()\n  exit()\n  return value\n}\n","/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > 👉 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n *   Thing to check, typically `Node`.\n * @returns\n *   Whether `value` is phrasing content.\n */\n\nexport const phrasing =\n  /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n  (\n    convert([\n      'break',\n      'delete',\n      'emphasis',\n      // To do: next major: removed since footnotes were added to GFM.\n      'footnote',\n      'footnoteReference',\n      'image',\n      'imageReference',\n      'inlineCode',\n      // Enabled by `mdast-util-math`:\n      'inlineMath',\n      'link',\n      'linkReference',\n      // Enabled by `mdast-util-mdx`:\n      'mdxJsxTextElement',\n      // Enabled by `mdast-util-mdx`:\n      'mdxTextExpression',\n      'strong',\n      'text',\n      // Enabled by `mdast-util-directive`:\n      'textDirective'\n    ])\n  )\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Root} from 'mdast'\n */\n\nimport {phrasing} from 'mdast-util-phrasing'\n\n/**\n * @param {Root} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function root(node, _, state, info) {\n  // Note: `html` nodes are ambiguous.\n  const hasPhrasing = node.children.some(function (d) {\n    return phrasing(d)\n  })\n\n  const container = hasPhrasing ? state.containerPhrasing : state.containerFlow\n  return container.call(state, node, info)\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['strong'], null | undefined>}\n */\nexport function checkStrong(state) {\n  const marker = state.options.strong || '*'\n\n  if (marker !== '*' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize strong with `' +\n        marker +\n        '` for `options.strong`, expected `*`, or `_`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Strong} from 'mdast'\n */\n\nimport {checkStrong} from '../util/check-strong.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nstrong.peek = strongPeek\n\n/**\n * @param {Strong} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function strong(node, _, state, info) {\n  const marker = checkStrong(state)\n  const exit = state.enter('strong')\n  const tracker = state.createTracker(info)\n  const before = tracker.move(marker + marker)\n\n  let between = tracker.move(\n    state.containerPhrasing(node, {\n      after: marker,\n      before,\n      ...tracker.current()\n    })\n  )\n  const betweenHead = between.charCodeAt(0)\n  const open = encodeInfo(\n    info.before.charCodeAt(info.before.length - 1),\n    betweenHead,\n    marker\n  )\n\n  if (open.inside) {\n    between = encodeCharacterReference(betweenHead) + between.slice(1)\n  }\n\n  const betweenTail = between.charCodeAt(between.length - 1)\n  const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n  if (close.inside) {\n    between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n  }\n\n  const after = tracker.move(marker + marker)\n\n  exit()\n\n  state.attentionEncodeSurroundingInfo = {\n    after: close.outside,\n    before: open.outside\n  }\n  return before + between + after\n}\n\n/**\n * @param {Strong} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction strongPeek(_, _1, state) {\n  return state.options.strong || '*'\n}\n","/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Text} from 'mdast'\n */\n\n/**\n * @param {Text} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function text(node, _, state, info) {\n  return state.safe(node.value, info)\n}\n","/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['ruleRepetition'], null | undefined>}\n */\nexport function checkRuleRepetition(state) {\n  const repetition = state.options.ruleRepetition || 3\n\n  if (repetition < 3) {\n    throw new Error(\n      'Cannot serialize rules with repetition `' +\n        repetition +\n        '` for `options.ruleRepetition`, expected `3` or more'\n    )\n  }\n\n  return repetition\n}\n","/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Parents, ThematicBreak} from 'mdast'\n */\n\nimport {checkRuleRepetition} from '../util/check-rule-repetition.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {ThematicBreak} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nexport function thematicBreak(_, _1, state) {\n  const value = (\n    checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n  ).repeat(checkRuleRepetition(state))\n\n  return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {definition} from './definition.js'\nimport {emphasis} from './emphasis.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {image} from './image.js'\nimport {imageReference} from './image-reference.js'\nimport {inlineCode} from './inline-code.js'\nimport {link} from './link.js'\nimport {linkReference} from './link-reference.js'\nimport {list} from './list.js'\nimport {listItem} from './list-item.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default (CommonMark) handlers.\n */\nexport const handle = {\n  blockquote,\n  break: hardBreak,\n  code,\n  definition,\n  emphasis,\n  hardBreak,\n  heading,\n  html,\n  image,\n  imageReference,\n  inlineCode,\n  link,\n  linkReference,\n  list,\n  listItem,\n  paragraph,\n  root,\n  strong,\n  text,\n  thematicBreak\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n *   Whether to add a space of padding between delimiters and cells (default:\n *   `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n *   Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n *   Function to detect the length of table cell content, used when aligning\n *   the delimiters between cells (optional).\n */\n\nimport {ok as assert} from 'devlop'\nimport {markdownTable} from 'markdown-table'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nexport function gfmTableFromMarkdown() {\n  return {\n    enter: {\n      table: enterTable,\n      tableData: enterCell,\n      tableHeader: enterCell,\n      tableRow: enterRow\n    },\n    exit: {\n      codeText: exitCodeText,\n      table: exitTable,\n      tableData: exit,\n      tableHeader: exit,\n      tableRow: exit\n    }\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n  const align = token._align\n  assert(align, 'expected `_align` on table')\n  this.enter(\n    {\n      type: 'table',\n      align: align.map(function (d) {\n        return d === 'none' ? null : d\n      }),\n      children: []\n    },\n    token\n  )\n  this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n  this.exit(token)\n  this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n  this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n  this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n  let value = this.resume()\n\n  if (this.data.inTable) {\n    value = value.replace(/\\\\([\\\\|])/g, replace)\n  }\n\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'inlineCode')\n  node.value = value\n  this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n  // Pipes work, backslashes don’t (but can’t escape pipes).\n  return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n  const settings = options || {}\n  const padding = settings.tableCellPadding\n  const alignDelimiters = settings.tablePipeAlign\n  const stringLength = settings.stringLength\n  const around = padding ? ' ' : '|'\n\n  return {\n    unsafe: [\n      {character: '\\r', inConstruct: 'tableCell'},\n      {character: '\\n', inConstruct: 'tableCell'},\n      // A pipe, when followed by a tab or space (padding), or a dash or colon\n      // (unpadded delimiter row), could result in a table.\n      {atBreak: true, character: '|', after: '[\\t :-]'},\n      // A pipe in a cell must be encoded.\n      {character: '|', inConstruct: 'tableCell'},\n      // A colon must be followed by a dash, in which case it could start a\n      // delimiter row.\n      {atBreak: true, character: ':', after: '-'},\n      // A delimiter row can also start with a dash, when followed by more\n      // dashes, a colon, or a pipe.\n      // This is a stricter version than the built in check for lists, thematic\n      // breaks, and setex heading underlines though:\n      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n      {atBreak: true, character: '-', after: '[:|-]'}\n    ],\n    handlers: {\n      inlineCode: inlineCodeWithTable,\n      table: handleTable,\n      tableCell: handleTableCell,\n      tableRow: handleTableRow\n    }\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {Table} node\n   */\n  function handleTable(node, _, state, info) {\n    return serializeData(handleTableAsData(node, state, info), node.align)\n  }\n\n  /**\n   * This function isn’t really used normally, because we handle rows at the\n   * table level.\n   * But, if someone passes in a table row, this ensures we make somewhat sense.\n   *\n   * @type {ToMarkdownHandle}\n   * @param {TableRow} node\n   */\n  function handleTableRow(node, _, state, info) {\n    const row = handleTableRowAsData(node, state, info)\n    const value = serializeData([row])\n    // `markdown-table` will always add an align row\n    return value.slice(0, value.indexOf('\\n'))\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {TableCell} node\n   */\n  function handleTableCell(node, _, state, info) {\n    const exit = state.enter('tableCell')\n    const subexit = state.enter('phrasing')\n    const value = state.containerPhrasing(node, {\n      ...info,\n      before: around,\n      after: around\n    })\n    subexit()\n    exit()\n    return value\n  }\n\n  /**\n   * @param {Array<Array<string>>} matrix\n   * @param {Array<string | null | undefined> | null | undefined} [align]\n   */\n  function serializeData(matrix, align) {\n    return markdownTable(matrix, {\n      align,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      alignDelimiters,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      padding,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      stringLength\n    })\n  }\n\n  /**\n   * @param {Table} node\n   * @param {State} state\n   * @param {Info} info\n   */\n  function handleTableAsData(node, state, info) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<Array<string>>} */\n    const result = []\n    const subexit = state.enter('table')\n\n    while (++index < children.length) {\n      result[index] = handleTableRowAsData(children[index], state, info)\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @param {TableRow} node\n   * @param {State} state\n   * @param {Info} info\n   */\n  function handleTableRowAsData(node, state, info) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<string>} */\n    const result = []\n    const subexit = state.enter('tableRow')\n\n    while (++index < children.length) {\n      // Note: the positional info as used here is incorrect.\n      // Making it correct would be impossible due to aligning cells?\n      // And it would need copy/pasting `markdown-table` into this project.\n      result[index] = handleTableCell(children[index], node, state, info)\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {InlineCode} node\n   */\n  function inlineCodeWithTable(node, parent, state) {\n    let value = defaultHandlers.inlineCode(node, parent, state)\n\n    if (state.stack.includes('tableCell')) {\n      value = value.replace(/\\|/g, '\\\\$&')\n    }\n\n    return value\n  }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {ok as assert} from 'devlop'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemFromMarkdown() {\n  return {\n    exit: {\n      taskListCheckValueChecked: exitCheck,\n      taskListCheckValueUnchecked: exitCheck,\n      paragraph: exitParagraphWithTaskListItem\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemToMarkdown() {\n  return {\n    unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n    handlers: {listItem: listItemWithTaskListItem}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n  // We’re always in a paragraph, in a list item.\n  const node = this.stack[this.stack.length - 2]\n  assert(node.type === 'listItem')\n  node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n  const parent = this.stack[this.stack.length - 2]\n\n  if (\n    parent &&\n    parent.type === 'listItem' &&\n    typeof parent.checked === 'boolean'\n  ) {\n    const node = this.stack[this.stack.length - 1]\n    assert(node.type === 'paragraph')\n    const head = node.children[0]\n\n    if (head && head.type === 'text') {\n      const siblings = parent.children\n      let index = -1\n      /** @type {Paragraph | undefined} */\n      let firstParaghraph\n\n      while (++index < siblings.length) {\n        const sibling = siblings[index]\n        if (sibling.type === 'paragraph') {\n          firstParaghraph = sibling\n          break\n        }\n      }\n\n      if (firstParaghraph === node) {\n        // Must start with a space or a tab.\n        head.value = head.value.slice(1)\n\n        if (head.value.length === 0) {\n          node.children.shift()\n        } else if (\n          node.position &&\n          head.position &&\n          typeof head.position.start.offset === 'number'\n        ) {\n          head.position.start.column++\n          head.position.start.offset++\n          node.position.start = Object.assign({}, head.position.start)\n        }\n      }\n    }\n  }\n\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n  const head = node.children[0]\n  const checkable =\n    typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n  const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n  const tracker = state.createTracker(info)\n\n  if (checkable) {\n    tracker.move(checkbox)\n  }\n\n  let value = defaultHandlers.listItem(node, parent, state, {\n    ...info,\n    ...tracker.current()\n  })\n\n  if (checkable) {\n    value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n  }\n\n  return value\n\n  /**\n   * @param {string} $0\n   * @returns {string}\n   */\n  function check($0) {\n    return $0 + checkbox\n  }\n}\n","/**\n * @import {Extension as FromMarkdownExtension} from 'mdast-util-from-markdown'\n * @import {Options} from 'mdast-util-gfm'\n * @import {Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n */\n\nimport {\n  gfmAutolinkLiteralFromMarkdown,\n  gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n  gfmFootnoteFromMarkdown,\n  gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n  gfmStrikethroughFromMarkdown,\n  gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n  gfmTaskListItemFromMarkdown,\n  gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array<FromMarkdownExtension>}\n *   Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n  return [\n    gfmAutolinkLiteralFromMarkdown(),\n    gfmFootnoteFromMarkdown(),\n    gfmStrikethroughFromMarkdown(),\n    gfmTableFromMarkdown(),\n    gfmTaskListItemFromMarkdown()\n  ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n  return {\n    extensions: [\n      gfmAutolinkLiteralToMarkdown(),\n      gfmFootnoteToMarkdown(options),\n      gfmStrikethroughToMarkdown(),\n      gfmTableToMarkdown(options),\n      gfmTaskListItemToMarkdown()\n    ]\n  }\n}\n","/**\n * @import {Code, ConstructRecord, Event, Extension, Previous, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiControl, markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\nconst wwwPrefix = {\n  tokenize: tokenizeWwwPrefix,\n  partial: true\n};\nconst domain = {\n  tokenize: tokenizeDomain,\n  partial: true\n};\nconst path = {\n  tokenize: tokenizePath,\n  partial: true\n};\nconst trail = {\n  tokenize: tokenizeTrail,\n  partial: true\n};\nconst emailDomainDotTrail = {\n  tokenize: tokenizeEmailDomainDotTrail,\n  partial: true\n};\nconst wwwAutolink = {\n  name: 'wwwAutolink',\n  tokenize: tokenizeWwwAutolink,\n  previous: previousWww\n};\nconst protocolAutolink = {\n  name: 'protocolAutolink',\n  tokenize: tokenizeProtocolAutolink,\n  previous: previousProtocol\n};\nconst emailAutolink = {\n  name: 'emailAutolink',\n  tokenize: tokenizeEmailAutolink,\n  previous: previousEmail\n};\n\n/** @type {ConstructRecord} */\nconst text = {};\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   autolink literal syntax.\n */\nexport function gfmAutolinkLiteral() {\n  return {\n    text\n  };\n}\n\n/** @type {Code} */\nlet code = 48;\n\n// Add alphanumerics.\nwhile (code < 123) {\n  text[code] = emailAutolink;\n  code++;\n  if (code === 58) code = 65;else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n  const self = this;\n  /** @type {boolean | undefined} */\n  let dot;\n  /** @type {boolean} */\n  let data;\n  return start;\n\n  /**\n   * Start of email autolink literal.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (!gfmAtext(code) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n      return nok(code);\n    }\n    effects.enter('literalAutolink');\n    effects.enter('literalAutolinkEmail');\n    return atext(code);\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atext(code) {\n    if (gfmAtext(code)) {\n      effects.consume(code);\n      return atext;\n    }\n    if (code === 64) {\n      effects.consume(code);\n      return emailDomain;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In email domain.\n   *\n   * The reference code is a bit overly complex as it handles the `@`, of which\n   * there may be just one.\n   * Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L318>\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomain(code) {\n    // Dot followed by alphanumerical (not `-` or `_`).\n    if (code === 46) {\n      return effects.check(emailDomainDotTrail, emailDomainAfter, emailDomainDot)(code);\n    }\n\n    // Alphanumerical, `-`, and `_`.\n    if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n      data = true;\n      effects.consume(code);\n      return emailDomain;\n    }\n\n    // To do: `/` if xmpp.\n\n    // Note: normally we’d truncate trailing punctuation from the link.\n    // However, email autolink literals cannot contain any of those markers,\n    // except for `.`, but that can only occur if it isn’t trailing.\n    // So we can ignore truncating!\n    return emailDomainAfter(code);\n  }\n\n  /**\n   * In email domain, on dot that is not a trail.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainDot(code) {\n    effects.consume(code);\n    dot = true;\n    return emailDomain;\n  }\n\n  /**\n   * After email domain.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainAfter(code) {\n    // Domain must not be empty, must include a dot, and must end in alphabetical.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L332>.\n    if (data && dot && asciiAlpha(self.previous)) {\n      effects.exit('literalAutolinkEmail');\n      effects.exit('literalAutolink');\n      return ok(code);\n    }\n    return nok(code);\n  }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n  const self = this;\n  return wwwStart;\n\n  /**\n   * Start of www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwStart(code) {\n    if (code !== 87 && code !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n      return nok(code);\n    }\n    effects.enter('literalAutolink');\n    effects.enter('literalAutolinkWww');\n    // Note: we *check*, so we can discard the `www.` we parsed.\n    // If it worked, we consider it as a part of the domain.\n    return effects.check(wwwPrefix, effects.attempt(domain, effects.attempt(path, wwwAfter), nok), nok)(code);\n  }\n\n  /**\n   * After a www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwAfter(code) {\n    effects.exit('literalAutolinkWww');\n    effects.exit('literalAutolink');\n    return ok(code);\n  }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n  const self = this;\n  let buffer = '';\n  let seen = false;\n  return protocolStart;\n\n  /**\n   * Start of protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolStart(code) {\n    if ((code === 72 || code === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n      effects.enter('literalAutolink');\n      effects.enter('literalAutolinkHttp');\n      buffer += String.fromCodePoint(code);\n      effects.consume(code);\n      return protocolPrefixInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In protocol.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolPrefixInside(code) {\n    // `5` is size of `https`\n    if (asciiAlpha(code) && buffer.length < 5) {\n      // @ts-expect-error: definitely number.\n      buffer += String.fromCodePoint(code);\n      effects.consume(code);\n      return protocolPrefixInside;\n    }\n    if (code === 58) {\n      const protocol = buffer.toLowerCase();\n      if (protocol === 'http' || protocol === 'https') {\n        effects.consume(code);\n        return protocolSlashesInside;\n      }\n    }\n    return nok(code);\n  }\n\n  /**\n   * In slashes.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *           ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolSlashesInside(code) {\n    if (code === 47) {\n      effects.consume(code);\n      if (seen) {\n        return afterProtocol;\n      }\n      seen = true;\n      return protocolSlashesInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After protocol, before domain.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterProtocol(code) {\n    // To do: this is different from `markdown-rs`:\n    // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n    return code === null || asciiControl(code) || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || unicodePunctuation(code) ? nok(code) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code);\n  }\n\n  /**\n   * After a protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *                              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolAfter(code) {\n    effects.exit('literalAutolinkHttp');\n    effects.exit('literalAutolink');\n    return ok(code);\n  }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n  let size = 0;\n  return wwwPrefixInside;\n\n  /**\n   * In www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *     ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixInside(code) {\n    if ((code === 87 || code === 119) && size < 3) {\n      size++;\n      effects.consume(code);\n      return wwwPrefixInside;\n    }\n    if (code === 46 && size === 3) {\n      effects.consume(code);\n      return wwwPrefixAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixAfter(code) {\n    // If there is *anything*, we can link.\n    return code === null ? nok(code) : ok(code);\n  }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n *               ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n  /** @type {boolean | undefined} */\n  let underscoreInLastSegment;\n  /** @type {boolean | undefined} */\n  let underscoreInLastLastSegment;\n  /** @type {boolean | undefined} */\n  let seen;\n  return domainInside;\n\n  /**\n   * In domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *             ^^^^^^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainInside(code) {\n    // Check whether this marker, which is a trailing punctuation\n    // marker, optionally followed by more trailing markers, and then\n    // followed by an end.\n    if (code === 46 || code === 95) {\n      return effects.check(trail, domainAfter, domainAtPunctuation)(code);\n    }\n\n    // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n    // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n    // so that’s Unicode.\n    // Instead of some new production for Unicode alphanumerics, markdown\n    // already has that for Unicode punctuation and whitespace, so use those.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.\n    if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || code !== 45 && unicodePunctuation(code)) {\n      return domainAfter(code);\n    }\n    seen = true;\n    effects.consume(code);\n    return domainInside;\n  }\n\n  /**\n   * In domain, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainAtPunctuation(code) {\n    // There is an underscore in the last segment of the domain\n    if (code === 95) {\n      underscoreInLastSegment = true;\n    }\n    // Otherwise, it’s a `.`: save the last segment underscore in the\n    // penultimate segment slot.\n    else {\n      underscoreInLastLastSegment = underscoreInLastSegment;\n      underscoreInLastSegment = undefined;\n    }\n    effects.consume(code);\n    return domainInside;\n  }\n\n  /**\n   * After domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^\n   * ```\n   *\n   * @type {State} */\n  function domainAfter(code) {\n    // Note: that’s GH says a dot is needed, but it’s not true:\n    // <https://github.com/github/cmark-gfm/issues/279>\n    if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n      return nok(code);\n    }\n    return ok(code);\n  }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n *                          ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n  let sizeOpen = 0;\n  let sizeClose = 0;\n  return pathInside;\n\n  /**\n   * In path.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathInside(code) {\n    if (code === 40) {\n      sizeOpen++;\n      effects.consume(code);\n      return pathInside;\n    }\n\n    // To do: `markdown-rs` also needs this.\n    // If this is a paren, and there are less closings than openings,\n    // we don’t check for a trail.\n    if (code === 41 && sizeClose < sizeOpen) {\n      return pathAtPunctuation(code);\n    }\n\n    // Check whether this trailing punctuation marker is optionally\n    // followed by more trailing markers, and then followed\n    // by an end.\n    if (code === 33 || code === 34 || code === 38 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 60 || code === 63 || code === 93 || code === 95 || code === 126) {\n      return effects.check(trail, ok, pathAtPunctuation)(code);\n    }\n    if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    effects.consume(code);\n    return pathInside;\n  }\n\n  /**\n   * In path, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com/a\"b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathAtPunctuation(code) {\n    // Count closing parens.\n    if (code === 41) {\n      sizeClose++;\n    }\n    effects.consume(code);\n    return pathInside;\n  }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n *                        ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n  return trail;\n\n  /**\n   * In trail of domain or path.\n   *\n   * ```markdown\n   * > | https://example.com\").\n   *                        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trail(code) {\n    // Regular trailing punctuation.\n    if (code === 33 || code === 34 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 63 || code === 95 || code === 126) {\n      effects.consume(code);\n      return trail;\n    }\n\n    // `&` followed by one or more alphabeticals and then a `;`, is\n    // as a whole considered as trailing punctuation.\n    // In all other cases, it is considered as continuation of the URL.\n    if (code === 38) {\n      effects.consume(code);\n      return trailCharacterReferenceStart;\n    }\n\n    // Needed because we allow literals after `[`, as we fix:\n    // <https://github.com/github/cmark-gfm/issues/278>.\n    // Check that it is not followed by `(` or `[`.\n    if (code === 93) {\n      effects.consume(code);\n      return trailBracketAfter;\n    }\n    if (\n    // `<` is an end.\n    code === 60 ||\n    // So is whitespace.\n    code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In trail, after `]`.\n   *\n   * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n   * > See end of <https://github.com/github/cmark-gfm/issues/278> for more.\n   *\n   * ```markdown\n   * > | https://example.com](\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailBracketAfter(code) {\n    // Whitespace or something that could start a resource or reference is the end.\n    // Switch back to trail otherwise.\n    if (code === null || code === 40 || code === 91 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    return trail(code);\n  }\n\n  /**\n   * In character-reference like trail, after `&`.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharacterReferenceStart(code) {\n    // When non-alpha, it’s not a trail.\n    return asciiAlpha(code) ? trailCharacterReferenceInside(code) : nok(code);\n  }\n\n  /**\n   * In character-reference like trail.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharacterReferenceInside(code) {\n    // Switch back to trail if this is well-formed.\n    if (code === 59) {\n      effects.consume(code);\n      return trail;\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return trailCharacterReferenceInside;\n    }\n\n    // It’s not a trail.\n    return nok(code);\n  }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n *                        ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n  return start;\n\n  /**\n   * Dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                    ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Must be dot.\n    effects.consume(code);\n    return after;\n  }\n\n  /**\n   * After dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                     ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Not a trail if alphanumeric.\n    return asciiAlphanumeric(code) ? nok(code) : ok(code);\n  }\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L156>.\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n  return code === null || code === 40 || code === 42 || code === 95 || code === 91 || code === 93 || code === 126 || markdownLineEndingOrSpace(code);\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L214>.\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n  return !asciiAlpha(code);\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n  // Do not allow a slash “inside” atext.\n  // The reference code is a bit weird, but that’s what it results in.\n  // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L307>.\n  // Other than slash, every preceding character is allowed.\n  return !(code === 47 || gfmAtext(code));\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n  return code === 43 || code === 45 || code === 46 || code === 95 || asciiAlphanumeric(code);\n}\n\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n  let index = events.length;\n  let result = false;\n  while (index--) {\n    const token = events[index][1];\n    if ((token.type === 'labelLink' || token.type === 'labelImage') && !token._balanced) {\n      result = true;\n      break;\n    }\n\n    // If we’ve seen this token, and it was marked as not having any unbalanced\n    // bracket before it, we can exit.\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false;\n      break;\n    }\n  }\n  if (events.length > 0 && !result) {\n    // Mark the last token as “walked into” w/o finding\n    // anything.\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n  }\n  return result;\n}","/**\n * @import {Event, Exiter, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { blankLine } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nconst indent = {\n  tokenize: tokenizeIndent,\n  partial: true\n};\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to\n *   enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n  /** @type {Extension} */\n  return {\n    document: {\n      [91]: {\n        name: 'gfmFootnoteDefinition',\n        tokenize: tokenizeDefinitionStart,\n        continuation: {\n          tokenize: tokenizeDefinitionContinuation\n        },\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [91]: {\n        name: 'gfmFootnoteCall',\n        tokenize: tokenizeGfmFootnoteCall\n      },\n      [93]: {\n        name: 'gfmPotentialFootnoteCall',\n        add: 'after',\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  };\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n  const self = this;\n  let index = self.events.length;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  /** @type {Token} */\n  let labelStart;\n\n  // Find an opening.\n  while (index--) {\n    const token = self.events[index][1];\n    if (token.type === \"labelImage\") {\n      labelStart = token;\n      break;\n    }\n\n    // Exit if we’ve walked far enough.\n    if (token.type === 'gfmFootnoteCall' || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n      break;\n    }\n  }\n  return start;\n\n  /**\n   * @type {State}\n   */\n  function start(code) {\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code);\n    }\n    const id = normalizeIdentifier(self.sliceSerialize({\n      start: labelStart.end,\n      end: self.now()\n    }));\n    if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n      return nok(code);\n    }\n    effects.enter('gfmFootnoteCallLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallLabelMarker');\n    return ok(code);\n  }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length;\n  /** @type {Token | undefined} */\n  let labelStart;\n\n  // Find an opening.\n  while (index--) {\n    if (events[index][1].type === \"labelImage\" && events[index][0] === 'enter') {\n      labelStart = events[index][1];\n      break;\n    }\n  }\n  // Change the `labelImageMarker` to a `data`.\n  events[index + 1][1].type = \"data\";\n  events[index + 3][1].type = 'gfmFootnoteCallLabelMarker';\n\n  // The whole (without `!`):\n  /** @type {Token} */\n  const call = {\n    type: 'gfmFootnoteCall',\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  // The `^` marker\n  /** @type {Token} */\n  const marker = {\n    type: 'gfmFootnoteCallMarker',\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  };\n  // Increment the end 1 character.\n  marker.end.column++;\n  marker.end.offset++;\n  marker.end._bufferIndex++;\n  /** @type {Token} */\n  const string = {\n    type: 'gfmFootnoteCallString',\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  };\n  /** @type {Token} */\n  const chunk = {\n    type: \"chunkString\",\n    contentType: 'string',\n    start: Object.assign({}, string.start),\n    end: Object.assign({}, string.end)\n  };\n\n  /** @type {Array<Event>} */\n  const replacement = [\n  // Take the `labelImageMarker` (now `data`, the `!`)\n  events[index + 1], events[index + 2], ['enter', call, context],\n  // The `[`\n  events[index + 3], events[index + 4],\n  // The `^`.\n  ['enter', marker, context], ['exit', marker, context],\n  // Everything in between.\n  ['enter', string, context], ['enter', chunk, context], ['exit', chunk, context], ['exit', string, context],\n  // The ending (`]`, properly parsed and labelled).\n  events[events.length - 2], events[events.length - 1], ['exit', call, context]];\n  events.splice(index, events.length - index + 1, ...replacement);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n  const self = this;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  let size = 0;\n  /** @type {boolean} */\n  let data;\n\n  // Note: the implementation of `markdown-rs` is different, because it houses\n  // core *and* extensions in one project.\n  // Therefore, it can include footnote logic inside `label-end`.\n  // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n  // needed for labels.\n  return start;\n\n  /**\n   * Start of footnote label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteCall');\n    effects.enter('gfmFootnoteCallLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallLabelMarker');\n    return callStart;\n  }\n\n  /**\n   * After `[`, at `^`.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callStart(code) {\n    if (code !== 94) return nok(code);\n    effects.enter('gfmFootnoteCallMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallMarker');\n    effects.enter('gfmFootnoteCallString');\n    effects.enter('chunkString').contentType = 'string';\n    return callData;\n  }\n\n  /**\n   * In label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callData(code) {\n    if (\n    // Too long.\n    size > 999 ||\n    // Closing brace with nothing.\n    code === 93 && !data ||\n    // Space or tab is not supported by GFM for some reason.\n    // `\\n` and `[` not being supported makes sense.\n    code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit('chunkString');\n      const token = effects.exit('gfmFootnoteCallString');\n      if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n        return nok(code);\n      }\n      effects.enter('gfmFootnoteCallLabelMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteCallLabelMarker');\n      effects.exit('gfmFootnoteCall');\n      return ok;\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true;\n    }\n    size++;\n    effects.consume(code);\n    return code === 92 ? callEscape : callData;\n  }\n\n  /**\n   * On character after escape.\n   *\n   * ```markdown\n   * > | a [^b\\c] d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return callData;\n    }\n    return callData(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n  const self = this;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  /** @type {string} */\n  let identifier;\n  let size = 0;\n  /** @type {boolean | undefined} */\n  let data;\n  return start;\n\n  /**\n   * Start of GFM footnote definition.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteDefinition')._container = true;\n    effects.enter('gfmFootnoteDefinitionLabel');\n    effects.enter('gfmFootnoteDefinitionLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteDefinitionLabelMarker');\n    return labelAtMarker;\n  }\n\n  /**\n   * In label, at caret.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAtMarker(code) {\n    if (code === 94) {\n      effects.enter('gfmFootnoteDefinitionMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteDefinitionMarker');\n      effects.enter('gfmFootnoteDefinitionLabelString');\n      effects.enter('chunkString').contentType = 'string';\n      return labelInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In label.\n   *\n   * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n   * > definition labels.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (\n    // Too long.\n    size > 999 ||\n    // Closing brace with nothing.\n    code === 93 && !data ||\n    // Space or tab is not supported by GFM for some reason.\n    // `\\n` and `[` not being supported makes sense.\n    code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit('chunkString');\n      const token = effects.exit('gfmFootnoteDefinitionLabelString');\n      identifier = normalizeIdentifier(self.sliceSerialize(token));\n      effects.enter('gfmFootnoteDefinitionLabelMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteDefinitionLabelMarker');\n      effects.exit('gfmFootnoteDefinitionLabel');\n      return labelAfter;\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true;\n    }\n    size++;\n    effects.consume(code);\n    return code === 92 ? labelEscape : labelInside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n   * > <https://github.com/github/cmark-gfm/issues/240>\n   *\n   * ```markdown\n   * > | [^a\\*b]: c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code);\n  }\n\n  /**\n   * After definition label.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    if (code === 58) {\n      effects.enter('definitionMarker');\n      effects.consume(code);\n      effects.exit('definitionMarker');\n      if (!defined.includes(identifier)) {\n        defined.push(identifier);\n      }\n\n      // Any whitespace after the marker is eaten, forming indented code\n      // is not possible.\n      // No space is also fine, just like a block quote marker.\n      return factorySpace(effects, whitespaceAfter, 'gfmFootnoteDefinitionWhitespace');\n    }\n    return nok(code);\n  }\n\n  /**\n   * After definition prefix.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function whitespaceAfter(code) {\n    // `markdown-rs` has a wrapping token for the prefix that is closed here.\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n  /// Start of footnote definition continuation.\n  ///\n  /// ```markdown\n  ///   | [^a]: b\n  /// > |     c\n  ///     ^\n  /// ```\n  //\n  // Either a blank line, which is okay, or an indented thing.\n  return effects.check(blankLine, ok, effects.attempt(indent, ok, nok));\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit('gfmFootnoteDefinition');\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this;\n  return factorySpace(effects, afterPrefix, 'gfmFootnoteDefinitionIndent', 4 + 1);\n\n  /**\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === 'gfmFootnoteDefinitionIndent' && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code) : nok(code);\n  }\n}","/**\n * @import {Options} from 'micromark-extension-gfm-strikethrough'\n * @import {Event, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n *   Configuration.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions`, to\n *   enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n  const options_ = options || {};\n  let single = options_.singleTilde;\n  const tokenizer = {\n    name: 'strikethrough',\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  };\n  if (single === null || single === undefined) {\n    single = true;\n  }\n  return {\n    text: {\n      [126]: tokenizer\n    },\n    insideSpan: {\n      null: [tokenizer]\n    },\n    attentionMarkers: {\n      null: [126]\n    }\n  };\n\n  /**\n   * Take events and resolve strikethrough.\n   *\n   * @type {Resolver}\n   */\n  function resolveAllStrikethrough(events, context) {\n    let index = -1;\n\n    // Walk through all events.\n    while (++index < events.length) {\n      // Find a token that can close.\n      if (events[index][0] === 'enter' && events[index][1].type === 'strikethroughSequenceTemporary' && events[index][1]._close) {\n        let open = index;\n\n        // Now walk back to find an opener.\n        while (open--) {\n          // Find a token that can open the closer.\n          if (events[open][0] === 'exit' && events[open][1].type === 'strikethroughSequenceTemporary' && events[open][1]._open &&\n          // If the sizes are the same:\n          events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n            events[index][1].type = 'strikethroughSequence';\n            events[open][1].type = 'strikethroughSequence';\n\n            /** @type {Token} */\n            const strikethrough = {\n              type: 'strikethrough',\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            };\n\n            /** @type {Token} */\n            const text = {\n              type: 'strikethroughText',\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            };\n\n            // Opening.\n            /** @type {Array<Event>} */\n            const nextEvents = [['enter', strikethrough, context], ['enter', events[open][1], context], ['exit', events[open][1], context], ['enter', text, context]];\n            const insideSpan = context.parser.constructs.insideSpan.null;\n            if (insideSpan) {\n              // Between.\n              splice(nextEvents, nextEvents.length, 0, resolveAll(insideSpan, events.slice(open + 1, index), context));\n            }\n\n            // Closing.\n            splice(nextEvents, nextEvents.length, 0, [['exit', text, context], ['enter', events[index][1], context], ['exit', events[index][1], context], ['exit', strikethrough, context]]);\n            splice(events, open - 1, index - open + 3, nextEvents);\n            index = open + nextEvents.length - 2;\n            break;\n          }\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      if (events[index][1].type === 'strikethroughSequenceTemporary') {\n        events[index][1].type = \"data\";\n      }\n    }\n    return events;\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeStrikethrough(effects, ok, nok) {\n    const previous = this.previous;\n    const events = this.events;\n    let size = 0;\n    return start;\n\n    /** @type {State} */\n    function start(code) {\n      if (previous === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n        return nok(code);\n      }\n      effects.enter('strikethroughSequenceTemporary');\n      return more(code);\n    }\n\n    /** @type {State} */\n    function more(code) {\n      const before = classifyCharacter(previous);\n      if (code === 126) {\n        // If this is the third marker, exit.\n        if (size > 1) return nok(code);\n        effects.consume(code);\n        size++;\n        return more;\n      }\n      if (size < 2 && !single) return nok(code);\n      const token = effects.exit('strikethroughSequenceTemporary');\n      const after = classifyCharacter(code);\n      token._open = !after || after === 2 && Boolean(before);\n      token._close = !before || before === 2 && Boolean(after);\n      return ok(code);\n    }\n  }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array<Event>]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n  /**\n   * Create a new edit map.\n   */\n  constructor() {\n    /**\n     * Record of changes.\n     *\n     * @type {Array<Change>}\n     */\n    this.map = [];\n  }\n\n  /**\n   * Create an edit: a remove and/or add at a certain place.\n   *\n   * @param {number} index\n   * @param {number} remove\n   * @param {Array<Event>} add\n   * @returns {undefined}\n   */\n  add(index, remove, add) {\n    addImplementation(this, index, remove, add);\n  }\n\n  // To do: add this when moving to `micromark`.\n  // /**\n  //  * Create an edit: but insert `add` before existing additions.\n  //  *\n  //  * @param {number} index\n  //  * @param {number} remove\n  //  * @param {Array<Event>} add\n  //  * @returns {undefined}\n  //  */\n  // addBefore(index, remove, add) {\n  //   addImplementation(this, index, remove, add, true)\n  // }\n\n  /**\n   * Done, change the events.\n   *\n   * @param {Array<Event>} events\n   * @returns {undefined}\n   */\n  consume(events) {\n    this.map.sort(function (a, b) {\n      return a[0] - b[0];\n    });\n\n    /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n    if (this.map.length === 0) {\n      return;\n    }\n\n    // To do: if links are added in events, like they are in `markdown-rs`,\n    // this is needed.\n    // // Calculate jumps: where items in the current list move to.\n    // /** @type {Array<Jump>} */\n    // const jumps = []\n    // let index = 0\n    // let addAcc = 0\n    // let removeAcc = 0\n    // while (index < this.map.length) {\n    //   const [at, remove, add] = this.map[index]\n    //   removeAcc += remove\n    //   addAcc += add.length\n    //   jumps.push([at, removeAcc, addAcc])\n    //   index += 1\n    // }\n    //\n    // . shiftLinks(events, jumps)\n\n    let index = this.map.length;\n    /** @type {Array<Array<Event>>} */\n    const vecs = [];\n    while (index > 0) {\n      index -= 1;\n      vecs.push(events.slice(this.map[index][0] + this.map[index][1]), this.map[index][2]);\n\n      // Truncate rest.\n      events.length = this.map[index][0];\n    }\n    vecs.push(events.slice());\n    events.length = 0;\n    let slice = vecs.pop();\n    while (slice) {\n      for (const element of slice) {\n        events.push(element);\n      }\n      slice = vecs.pop();\n    }\n\n    // Truncate everything.\n    this.map.length = 0;\n  }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\nfunction addImplementation(editMap, at, remove, add) {\n  let index = 0;\n\n  /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n  if (remove === 0 && add.length === 0) {\n    return;\n  }\n  while (index < editMap.map.length) {\n    if (editMap.map[index][0] === at) {\n      editMap.map[index][1] += remove;\n\n      // To do: before not used by tables, use when moving to micromark.\n      // if (before) {\n      //   add.push(...editMap.map[index][2])\n      //   editMap.map[index][2] = add\n      // } else {\n      editMap.map[index][2].push(...add);\n      // }\n\n      return;\n    }\n    index += 1;\n  }\n  editMap.map.push([at, remove, add]);\n}\n\n// /**\n//  * Shift `previous` and `next` links according to `jumps`.\n//  *\n//  * This fixes links in case there are events removed or added between them.\n//  *\n//  * @param {Array<Event>} events\n//  * @param {Array<Jump>} jumps\n//  */\n// function shiftLinks(events, jumps) {\n//   let jumpIndex = 0\n//   let index = 0\n//   let add = 0\n//   let rm = 0\n\n//   while (index < events.length) {\n//     const rmCurr = rm\n\n//     while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n//       add = jumps[jumpIndex][2]\n//       rm = jumps[jumpIndex][1]\n//       jumpIndex += 1\n//     }\n\n//     // Ignore items that will be removed.\n//     if (rm > rmCurr) {\n//       index += rm - rmCurr\n//     } else {\n//       // ?\n//       // if let Some(link) = &events[index].link {\n//       //     if let Some(next) = link.next {\n//       //         events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n//       //         while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n//       //             add = jumps[jumpIndex].2;\n//       //             rm = jumps[jumpIndex].1;\n//       //             jumpIndex += 1;\n//       //         }\n//       //         events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n//       //         index = next;\n//       //         continue;\n//       //     }\n//       // }\n//       index += 1\n//     }\n//   }\n// }","/**\n * @import {Event} from 'micromark-util-types'\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly<Array<Event>>} events\n *   List of events.\n * @param {number} index\n *   Table enter event.\n * @returns {Array<Align>}\n *   List of aligns.\n */\nexport function gfmTableAlign(events, index) {\n  let inDelimiterRow = false;\n  /** @type {Array<Align>} */\n  const align = [];\n  while (index < events.length) {\n    const event = events[index];\n    if (inDelimiterRow) {\n      if (event[0] === 'enter') {\n        // Start of alignment value: set a new column.\n        // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n        if (event[1].type === 'tableContent') {\n          align.push(events[index + 1][1].type === 'tableDelimiterMarker' ? 'left' : 'none');\n        }\n      }\n      // Exits:\n      // End of alignment value: change the column.\n      // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n      else if (event[1].type === 'tableContent') {\n        if (events[index - 1][1].type === 'tableDelimiterMarker') {\n          const alignIndex = align.length - 1;\n          align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right';\n        }\n      }\n      // Done!\n      else if (event[1].type === 'tableDelimiterRow') {\n        break;\n      }\n    } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n      inDelimiterRow = true;\n    }\n    index += 1;\n  }\n  return align;\n}","/**\n * @import {Event, Extension, Point, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n *   Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n *   Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nimport { EditMap } from './edit-map.js';\nimport { gfmTableAlign } from './infer.js';\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   table syntax.\n */\nexport function gfmTable() {\n  return {\n    flow: {\n      null: {\n        name: 'table',\n        tokenize: tokenizeTable,\n        resolveAll: resolveTable\n      }\n    }\n  };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n  const self = this;\n  let size = 0;\n  let sizeB = 0;\n  /** @type {boolean | undefined} */\n  let seen;\n  return start;\n\n  /**\n   * Start of a GFM table.\n   *\n   * If there is a valid table row or table head before, then we try to parse\n   * another row.\n   * Otherwise, we try to parse a head.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length - 1;\n    while (index > -1) {\n      const type = self.events[index][1].type;\n      if (type === \"lineEnding\" ||\n      // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n      type === \"linePrefix\") index--;else break;\n    }\n    const tail = index > -1 ? self.events[index][1].type : null;\n    const next = tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore;\n\n    // Don’t allow lazy body rows.\n    if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    return next(code);\n  }\n\n  /**\n   * Before table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBefore(code) {\n    effects.enter('tableHead');\n    effects.enter('tableRow');\n    return headRowStart(code);\n  }\n\n  /**\n   * Before table head row, after whitespace.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowStart(code) {\n    if (code === 124) {\n      return headRowBreak(code);\n    }\n\n    // To do: micromark-js should let us parse our own whitespace in extensions,\n    // like `markdown-rs`:\n    //\n    // ```js\n    // // 4+ spaces.\n    // if (markdownSpace(code)) {\n    //   return nok(code)\n    // }\n    // ```\n\n    seen = true;\n    // Count the first character, that isn’t a pipe, double.\n    sizeB += 1;\n    return headRowBreak(code);\n  }\n\n  /**\n   * At break in table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *       ^\n   *         ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBreak(code) {\n    if (code === null) {\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n      if (sizeB > 1) {\n        sizeB = 0;\n        // To do: check if this works.\n        // Feel free to interrupt:\n        self.interrupt = true;\n        effects.exit('tableRow');\n        effects.enter(\"lineEnding\");\n        effects.consume(code);\n        effects.exit(\"lineEnding\");\n        return headDelimiterStart;\n      }\n\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n      return nok(code);\n    }\n    if (markdownSpace(code)) {\n      // To do: check if this is fine.\n      // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n      // State::Retry(space_or_tab(tokenizer))\n      return factorySpace(effects, headRowBreak, \"whitespace\")(code);\n    }\n    sizeB += 1;\n    if (seen) {\n      seen = false;\n      // Header cell count.\n      size += 1;\n    }\n    if (code === 124) {\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      // Whether a delimiter was seen.\n      seen = true;\n      return headRowBreak;\n    }\n\n    // Anything else is cell data.\n    effects.enter(\"data\");\n    return headRowData(code);\n  }\n\n  /**\n   * In table head row data.\n   *\n   * ```markdown\n   * > | | a |\n   *       ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"data\");\n      return headRowBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? headRowEscape : headRowData;\n  }\n\n  /**\n   * In table head row escape.\n   *\n   * ```markdown\n   * > | | a\\-b |\n   *         ^\n   *   | | ---- |\n   *   | | c    |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code);\n      return headRowData;\n    }\n    return headRowData(code);\n  }\n\n  /**\n   * Before delimiter row.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterStart(code) {\n    // Reset `interrupt`.\n    self.interrupt = false;\n\n    // Note: in `markdown-rs`, we need to handle piercing here too.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    effects.enter('tableDelimiterRow');\n    // Track if we’ve seen a `:` or `|`.\n    seen = false;\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n    }\n    return headDelimiterBefore(code);\n  }\n\n  /**\n   * Before delimiter row, after optional whitespace.\n   *\n   * Reused when a `|` is found later, to parse another cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterBefore(code) {\n    if (code === 45 || code === 58) {\n      return headDelimiterValueBefore(code);\n    }\n    if (code === 124) {\n      seen = true;\n      // If we start with a pipe, we open a cell marker.\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      return headDelimiterCellBefore;\n    }\n\n    // More whitespace / empty row not allowed at start.\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * After `|`, before delimiter cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellBefore(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code);\n    }\n    return headDelimiterValueBefore(code);\n  }\n\n  /**\n   * Before delimiter cell value.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterValueBefore(code) {\n    // Align: left.\n    if (code === 58) {\n      sizeB += 1;\n      seen = true;\n      effects.enter('tableDelimiterMarker');\n      effects.consume(code);\n      effects.exit('tableDelimiterMarker');\n      return headDelimiterLeftAlignmentAfter;\n    }\n\n    // Align: none.\n    if (code === 45) {\n      sizeB += 1;\n      // To do: seems weird that this *isn’t* left aligned, but that state is used?\n      return headDelimiterLeftAlignmentAfter(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return headDelimiterCellAfter(code);\n    }\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * After delimiter cell left alignment marker.\n   *\n   * ```markdown\n   *   | | a  |\n   * > | | :- |\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterLeftAlignmentAfter(code) {\n    if (code === 45) {\n      effects.enter('tableDelimiterFiller');\n      return headDelimiterFiller(code);\n    }\n\n    // Anything else is not ok after the left-align colon.\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * In delimiter cell filler.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterFiller(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return headDelimiterFiller;\n    }\n\n    // Align is `center` if it was `left`, `right` otherwise.\n    if (code === 58) {\n      seen = true;\n      effects.exit('tableDelimiterFiller');\n      effects.enter('tableDelimiterMarker');\n      effects.consume(code);\n      effects.exit('tableDelimiterMarker');\n      return headDelimiterRightAlignmentAfter;\n    }\n    effects.exit('tableDelimiterFiller');\n    return headDelimiterRightAlignmentAfter(code);\n  }\n\n  /**\n   * After delimiter cell right alignment marker.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterRightAlignmentAfter(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code);\n    }\n    return headDelimiterCellAfter(code);\n  }\n\n  /**\n   * After delimiter cell.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellAfter(code) {\n    if (code === 124) {\n      return headDelimiterBefore(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      // Exit when:\n      // * there was no `:` or `|` at all (it’s a thematic break or setext\n      //   underline instead)\n      // * the header cell count is not the delimiter cell count\n      if (!seen || size !== sizeB) {\n        return headDelimiterNok(code);\n      }\n\n      // Note: in markdown-rs`, a reset is needed here.\n      effects.exit('tableDelimiterRow');\n      effects.exit('tableHead');\n      // To do: in `markdown-rs`, resolvers need to be registered manually.\n      // effects.register_resolver(ResolveName::GfmTable)\n      return ok(code);\n    }\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * In delimiter row, at a disallowed byte.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | x |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterNok(code) {\n    // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n    return nok(code);\n  }\n\n  /**\n   * Before table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowStart(code) {\n    // Note: in `markdown-rs` we need to manually take care of a prefix,\n    // but in `micromark-js` that is done for us, so if we’re here, we’re\n    // never at whitespace.\n    effects.enter('tableRow');\n    return bodyRowBreak(code);\n  }\n\n  /**\n   * At break in table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   *       ^\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowBreak(code) {\n    if (code === 124) {\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      return bodyRowBreak;\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('tableRow');\n      return ok(code);\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, bodyRowBreak, \"whitespace\")(code);\n    }\n\n    // Anything else is cell content.\n    effects.enter(\"data\");\n    return bodyRowData(code);\n  }\n\n  /**\n   * In table body row data.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"data\");\n      return bodyRowBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? bodyRowEscape : bodyRowData;\n  }\n\n  /**\n   * In table body row escape.\n   *\n   * ```markdown\n   *   | | a    |\n   *   | | ---- |\n   * > | | b\\-c |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code);\n      return bodyRowData;\n    }\n    return bodyRowData(code);\n  }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n  let index = -1;\n  let inFirstCellAwaitingPipe = true;\n  /** @type {RowKind} */\n  let rowKind = 0;\n  /** @type {Range} */\n  let lastCell = [0, 0, 0, 0];\n  /** @type {Range} */\n  let cell = [0, 0, 0, 0];\n  let afterHeadAwaitingFirstBodyRow = false;\n  let lastTableEnd = 0;\n  /** @type {Token | undefined} */\n  let currentTable;\n  /** @type {Token | undefined} */\n  let currentBody;\n  /** @type {Token | undefined} */\n  let currentCell;\n  const map = new EditMap();\n  while (++index < events.length) {\n    const event = events[index];\n    const token = event[1];\n    if (event[0] === 'enter') {\n      // Start of head.\n      if (token.type === 'tableHead') {\n        afterHeadAwaitingFirstBodyRow = false;\n\n        // Inject previous (body end and) table end.\n        if (lastTableEnd !== 0) {\n          flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n          currentBody = undefined;\n          lastTableEnd = 0;\n        }\n\n        // Inject table start.\n        currentTable = {\n          type: 'table',\n          start: Object.assign({}, token.start),\n          // Note: correct end is set later.\n          end: Object.assign({}, token.end)\n        };\n        map.add(index, 0, [['enter', currentTable, context]]);\n      } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n        inFirstCellAwaitingPipe = true;\n        currentCell = undefined;\n        lastCell = [0, 0, 0, 0];\n        cell = [0, index + 1, 0, 0];\n\n        // Inject table body start.\n        if (afterHeadAwaitingFirstBodyRow) {\n          afterHeadAwaitingFirstBodyRow = false;\n          currentBody = {\n            type: 'tableBody',\n            start: Object.assign({}, token.start),\n            // Note: correct end is set later.\n            end: Object.assign({}, token.end)\n          };\n          map.add(index, 0, [['enter', currentBody, context]]);\n        }\n        rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1;\n      }\n      // Cell data.\n      else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n        inFirstCellAwaitingPipe = false;\n\n        // First value in cell.\n        if (cell[2] === 0) {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n            lastCell = [0, 0, 0, 0];\n          }\n          cell[2] = index;\n        }\n      } else if (token.type === 'tableCellDivider') {\n        if (inFirstCellAwaitingPipe) {\n          inFirstCellAwaitingPipe = false;\n        } else {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n          }\n          lastCell = cell;\n          cell = [lastCell[1], index, 0, 0];\n        }\n      }\n    }\n    // Exit events.\n    else if (token.type === 'tableHead') {\n      afterHeadAwaitingFirstBodyRow = true;\n      lastTableEnd = index;\n    } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n      lastTableEnd = index;\n      if (lastCell[1] !== 0) {\n        cell[0] = cell[1];\n        currentCell = flushCell(map, context, lastCell, rowKind, index, currentCell);\n      } else if (cell[1] !== 0) {\n        currentCell = flushCell(map, context, cell, rowKind, index, currentCell);\n      }\n      rowKind = 0;\n    } else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n      cell[3] = index;\n    }\n  }\n  if (lastTableEnd !== 0) {\n    flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n  }\n  map.consume(context.events);\n\n  // To do: move this into `html`, when events are exposed there.\n  // That’s what `markdown-rs` does.\n  // That needs updates to `mdast-util-gfm-table`.\n  index = -1;\n  while (++index < context.events.length) {\n    const event = context.events[index];\n    if (event[0] === 'enter' && event[1].type === 'table') {\n      event[1]._align = gfmTableAlign(context.events, index);\n    }\n  }\n  return events;\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n * @param {Readonly<TokenizeContext>} context\n * @param {Readonly<Range>} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n  const groupName = rowKind === 1 ? 'tableHeader' : rowKind === 2 ? 'tableDelimiter' : 'tableData';\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n  const valueName = 'tableContent';\n\n  // Insert an exit for the previous cell, if there is one.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //          ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[0] !== 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n    map.add(range[0], 0, [['exit', previousCell, context]]);\n  }\n\n  // Insert enter of this cell.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //           ^-- enter\n  //           ^^^^-- this cell\n  // ```\n  const now = getPoint(context.events, range[1]);\n  previousCell = {\n    type: groupName,\n    start: Object.assign({}, now),\n    // Note: correct end is set later.\n    end: Object.assign({}, now)\n  };\n  map.add(range[1], 0, [['enter', previousCell, context]]);\n\n  // Insert text start at first data start and end at last data end, and\n  // remove events between.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //            ^-- enter\n  //             ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[2] !== 0) {\n    const relatedStart = getPoint(context.events, range[2]);\n    const relatedEnd = getPoint(context.events, range[3]);\n    /** @type {Token} */\n    const valueToken = {\n      type: valueName,\n      start: Object.assign({}, relatedStart),\n      end: Object.assign({}, relatedEnd)\n    };\n    map.add(range[2], 0, [['enter', valueToken, context]]);\n    if (rowKind !== 2) {\n      // Fix positional info on remaining events\n      const start = context.events[range[2]];\n      const end = context.events[range[3]];\n      start[1].end = Object.assign({}, end[1].end);\n      start[1].type = \"chunkText\";\n      start[1].contentType = \"text\";\n\n      // Remove if needed.\n      if (range[3] > range[2] + 1) {\n        const a = range[2] + 1;\n        const b = range[3] - range[2] - 1;\n        map.add(a, b, []);\n      }\n    }\n    map.add(range[3] + 1, 0, [['exit', valueToken, context]]);\n  }\n\n  // Insert an exit for the last cell, if at the row end.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //                    ^-- exit\n  //               ^^^^^^-- this cell (the last one contains two “between” parts)\n  // ```\n  if (rowEnd !== undefined) {\n    previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n    map.add(rowEnd, 0, [['exit', previousCell, context]]);\n    previousCell = undefined;\n  }\n  return previousCell;\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly<EditMap>} map\n * @param {Readonly<TokenizeContext>} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n  /** @type {Array<Event>} */\n  const exits = [];\n  const related = getPoint(context.events, index);\n  if (tableBody) {\n    tableBody.end = Object.assign({}, related);\n    exits.push(['exit', tableBody, context]);\n  }\n  table.end = Object.assign({}, related);\n  exits.push(['exit', table, context]);\n  map.add(index + 1, 0, exits);\n}\n\n/**\n * @param {Readonly<Array<Event>>} events\n * @param {number} index\n * @returns {Readonly<Point>}\n */\nfunction getPoint(events, index) {\n  const event = events[index];\n  const side = event[0] === 'enter' ? 'start' : 'end';\n  return event[1][side];\n}","/**\n * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nconst tasklistCheck = {\n  name: 'tasklistCheck',\n  tokenize: tokenizeTasklistCheck\n};\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM task list items when serializing to HTML.\n */\nexport function gfmTaskListItem() {\n  return {\n    text: {\n      [91]: tasklistCheck\n    }\n  };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n  const self = this;\n  return open;\n\n  /**\n   * At start of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (\n    // Exit if there’s stuff before.\n    self.previous !== null ||\n    // Exit if not in the first content that is the first child of a list\n    // item.\n    !self._gfmTasklistFirstContentOfListItem) {\n      return nok(code);\n    }\n    effects.enter('taskListCheck');\n    effects.enter('taskListCheckMarker');\n    effects.consume(code);\n    effects.exit('taskListCheckMarker');\n    return inside;\n  }\n\n  /**\n   * In task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // Currently we match how GH works in files.\n    // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n    // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n    if (markdownLineEndingOrSpace(code)) {\n      effects.enter('taskListCheckValueUnchecked');\n      effects.consume(code);\n      effects.exit('taskListCheckValueUnchecked');\n      return close;\n    }\n    if (code === 88 || code === 120) {\n      effects.enter('taskListCheckValueChecked');\n      effects.consume(code);\n      effects.exit('taskListCheckValueChecked');\n      return close;\n    }\n    return nok(code);\n  }\n\n  /**\n   * At close of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function close(code) {\n    if (code === 93) {\n      effects.enter('taskListCheckMarker');\n      effects.consume(code);\n      effects.exit('taskListCheckMarker');\n      effects.exit('taskListCheck');\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * @type {State}\n   */\n  function after(code) {\n    // EOL in paragraph means there must be something else after it.\n    if (markdownLineEnding(code)) {\n      return ok(code);\n    }\n\n    // Space or tab?\n    // Check what comes after.\n    if (markdownSpace(code)) {\n      return effects.check({\n        tokenize: spaceThenNonSpace\n      }, ok, nok)(code);\n    }\n\n    // EOF, or non-whitespace, both wrong.\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n  return factorySpace(effects, after, \"whitespace\");\n\n  /**\n   * After whitespace, after task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // EOF means there was nothing, so bad.\n    // EOL means there’s content after it, so good.\n    // Impossible to have more spaces.\n    // Anything else is good.\n    return code === null ? nok(code) : ok(code);\n  }\n}","/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n  combineExtensions,\n  combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n  gfmAutolinkLiteral,\n  gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n  gfmStrikethrough,\n  gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n  gfmTaskListItem,\n  gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   syntax.\n */\nexport function gfm(options) {\n  return combineExtensions([\n    gfmAutolinkLiteral(),\n    gfmFootnote(),\n    gfmStrikethrough(options),\n    gfmTable(),\n    gfmTaskListItem()\n  ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n  return combineHtmlExtensions([\n    gfmAutolinkLiteralHtml(),\n    gfmFootnoteHtml(options),\n    gfmStrikethroughHtml(),\n    gfmTableHtml(),\n    gfmTagfilterHtml(),\n    gfmTaskListItemHtml()\n  ])\n}\n","/**\n * @import {Root} from 'mdast'\n * @import {Options} from 'remark-gfm'\n * @import {} from 'remark-parse'\n * @import {} from 'remark-stringify'\n * @import {Processor} from 'unified'\n */\n\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\nimport {gfm} from 'micromark-extension-gfm'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkGfm(options) {\n  // @ts-expect-error: TS is wrong about `this`.\n  // eslint-disable-next-line unicorn/no-this-assignment\n  const self = /** @type {Processor<Root>} */ (this)\n  const settings = options || emptyOptions\n  const data = self.data()\n\n  const micromarkExtensions =\n    data.micromarkExtensions || (data.micromarkExtensions = [])\n  const fromMarkdownExtensions =\n    data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n  const toMarkdownExtensions =\n    data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n  micromarkExtensions.push(gfm(settings))\n  fromMarkdownExtensions.push(gfmFromMarkdown())\n  toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n","import ReactMarkdown, { Components } from 'react-markdown';\r\nimport remarkGfm from 'remark-gfm';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface Props {\r\n  classNames?: {\r\n    h1?: string;\r\n    h2?: string;\r\n    h3?: string;\r\n    h4?: string;\r\n    h5?: string;\r\n    h6?: string;\r\n    cite?: string;\r\n    code?: string;\r\n    blockquote?: string;\r\n    p?: string;\r\n    a?: string;\r\n    ul?: string;\r\n    ol?: string;\r\n    li?: string;\r\n    hr?: string;\r\n    pre?: string;\r\n    table?: string;\r\n    thead?: string;\r\n    td?: string;\r\n    tr?: string;\r\n    tbody?: string;\r\n    th?: string;\r\n  };\r\n  components?: Components;\r\n  text?: string;\r\n}\r\n\r\nfunction MarkdownRenderer({ classNames, text, components }: Props) {\r\n  return (\r\n    <ReactMarkdown\r\n      remarkPlugins={[remarkGfm]}\r\n      components={{\r\n        ...{\r\n          h1: props => (\r\n            <h1\r\n              className={cn(\r\n                'mt-0 ml-0 mr-0 p-0 font-bold uppercase mb-3 md:mb-4 text-[2.938rem] md:text-[5.125rem] lg:text-[6.25rem] tracking-[0.06rem] leading-[1.08]',\r\n                classNames?.h1,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          h2: props => (\r\n            <h2\r\n              className={cn(\r\n                'mt-0 ml-0 mr-0 p-0 mb-3 md:mb-4 text-[2.5rem] md:text-[2.813rem] lg:text-[3.438rem] font-bold leading-[1.1]',\r\n                classNames?.h2,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          h3: props => (\r\n            <h3\r\n              className={cn(\r\n                'mt-0 ml-0 mr-0 p-0 mb-3 md:mb-4 text-[1.875rem] md:text-[2.188rem] font-semibold leading-[1.15]',\r\n                classNames?.h3,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          h4: props => (\r\n            <h4\r\n              className={cn(\r\n                'mt-0 ml-0 mr-0 p-0 mb-3 md:mb-4 text-[1.563rem] md:text-[2.188rem] font-normal leading-[1.15]',\r\n                classNames?.h4,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          h5: props => (\r\n            <h5\r\n              className={cn(\r\n                'mt-0 ml-0 mr-0 p-0 mb-3 md:mb-4 text-[1.25rem] md:text-[1.563rem] font-normal leading-[1.15]',\r\n                classNames?.h5,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          h6: props => (\r\n            <h6\r\n              className={cn(\r\n                'mt-0 ml-0 mr-0 p-0 mb-3 md:mb-4 text-base font-bold leading-[1.15] uppercase tracking-[0.48px]',\r\n                classNames?.h6,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          cite: props => (\r\n            <cite\r\n              className={cn(\r\n                'mt-0 ml-0 mr-0 p-0 mb-3 md:mb-4 text-xl md:text-2xl leading-[1.1] block font-normal',\r\n                classNames?.cite,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          code: props => (\r\n            <code\r\n              className={cn(\r\n                'mt-0 ml-0 mr-0 p-0 mb-3 md:mb-4 font-mono mt-0 text-base bg-primary-gray-200 dark:bg-primary-gray-600 px-2 pb-2 text-primary-black dark:text-primary-white',\r\n                classNames?.code,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          blockquote: props => (\r\n            <blockquote\r\n              className={cn(\r\n                'mt-0 ml-0 mr-0 p-0 mb-3 md:mb-4 text-[1.625rem] md:text-[2.188rem] font-semibold leading-[1.1] md:leading-[1.25]',\r\n                classNames?.blockquote,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          p: props => (\r\n            <p\r\n              className={cn(\r\n                'mt-0 ml-0 mr-0 text-base md:text-xl leading-[1.4] mb-5',\r\n                classNames?.p,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          a: props => (\r\n            <a\r\n              className={cn(\r\n                'undp-link light text-primary-black dark:text-primary-white dark:text-primary-white bg-double-red dark:bg-double-white',\r\n                'cursor-pointer no-underline focus-visible:outline-hidden focus-visible:shadow-[0_0_0_#0468b1]',\r\n                classNames?.a,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          ul: props => <ul className={cn('pl-6 rtl:pr-6 rtl:pl-0', classNames?.ul)} {...props} />,\r\n          ol: props => <ol className={cn('pl-6 rtl:pr-6 rtl:pl-0', classNames?.ol)} {...props} />,\r\n          li: props => (\r\n            <li\r\n              className={cn('mb-6 pl-3 text-base md:text-xl rtl:pr-3 rtl:pl-0', classNames?.li)}\r\n              {...props}\r\n            />\r\n          ),\r\n          hr: props => (\r\n            <hr\r\n              className={cn(\r\n                'border-0 h-[1px] w-full bg-primary-gray-600 dark:bg-primary-gray-200 mb-4',\r\n                classNames?.hr,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          pre: props => (\r\n            <pre\r\n              className={cn(\r\n                'p-4 mb-3 md:mb-4 bg-primary-gray-200 dark:bg-primary-gray-600',\r\n                classNames?.pre,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          table: props => (\r\n            <table className={cn('w-full caption-bottom mb-4', classNames?.table)} {...props} />\r\n          ),\r\n          thead: props => <thead className={classNames?.thead} {...props} />,\r\n          th: props => (\r\n            <th\r\n              className={cn(\r\n                'bg-primary-gray-300 text-xl leading-[1.4] dark:bg-primary-gray-600 py-3 pl-3 pr-10 rtl:pr-3 rtl:pl-10 text-left rtl:text-right align-middle font-semibold whitespace-nowrap',\r\n                classNames?.th,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n          tbody: props => <tbody className={classNames?.tbody} {...props} />,\r\n          tr: props => (\r\n            <tr className={cn('border-b border-primary-gray-400', classNames?.tr)} {...props} />\r\n          ),\r\n          td: props => (\r\n            <td\r\n              className={cn(\r\n                'align-middle py-3 pl-3 pr-10 rtl:pr-3 text-xl rtl:pl-10 whitespace-nowrap',\r\n                classNames?.td,\r\n              )}\r\n              {...props}\r\n            />\r\n          ),\r\n        },\r\n        ...(components || {}),\r\n      }}\r\n    >\r\n      {text}\r\n    </ReactMarkdown>\r\n  );\r\n}\r\n\r\nexport { MarkdownRenderer };\r\n","import React from 'react';\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nfunction PaginationUnit({ className, ...props }: React.ComponentProps<'nav'>) {\r\n  return (\r\n    <nav\r\n      {...props}\r\n      role='navigation'\r\n      aria-label='pagination'\r\n      className={cn('mx-auto flex w-full justify-center', className)}\r\n    />\r\n  );\r\n}\r\nPaginationUnit.displayName = 'PaginationUnit';\r\n\r\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\r\n  ({ className, ...props }, ref) => (\r\n    <ul\r\n      {...props}\r\n      ref={ref}\r\n      className={cn('flex flex-row items-center gap-1 list-none', className)}\r\n    />\r\n  ),\r\n);\r\nPaginationContent.displayName = 'PaginationContent';\r\n\r\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\r\n  ({ className, ...props }, ref) => (\r\n    <li {...props} ref={ref} className={cn('mr-2 last:mr-0', className)} />\r\n  ),\r\n);\r\nPaginationItem.displayName = 'PaginationItem';\r\n\r\nfunction PaginationLink({\r\n  className,\r\n  children,\r\n  ...props\r\n}: React.ButtonHTMLAttributes<HTMLButtonElement>) {\r\n  return (\r\n    <button\r\n      {...props}\r\n      type='button'\r\n      className={cn(\r\n        'p-4 text-base text-primary-black dark:text-primary-gray-100 dark:hover:bg-primary-gray-600',\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </button>\r\n  );\r\n}\r\nPaginationLink.displayName = 'PaginationLink';\r\n\r\nfunction PaginationPrevious({ className, ...props }: React.ComponentProps<typeof PaginationLink>) {\r\n  return (\r\n    <PaginationLink\r\n      {...props}\r\n      aria-label='Go to previous page'\r\n      className={cn(\r\n        'p-2 bg-primary-gray-300 dark:bg-primary-gray-600 rtl:scale-x-[-1] rounded-full hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550',\r\n        className,\r\n      )}\r\n    >\r\n      <ChevronLeft className='h-6 w-6 stroke-primary-gray-700 dark:stroke-primary-gray-100' />\r\n    </PaginationLink>\r\n  );\r\n}\r\nPaginationPrevious.displayName = 'PaginationPrevious';\r\n\r\nfunction PaginationNext({ className, ...props }: React.ComponentProps<typeof PaginationLink>) {\r\n  return (\r\n    <PaginationLink\r\n      {...props}\r\n      aria-label='Go to next page'\r\n      className={cn(\r\n        'p-2 bg-primary-gray-300 dark:bg-primary-gray-600 rtl:scale-x-[-1] rounded-full hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550',\r\n        className,\r\n      )}\r\n    >\r\n      <ChevronRight className='h-6 w-6 stroke-primary-gray-700 dark:stroke-primary-gray-100' />\r\n    </PaginationLink>\r\n  );\r\n}\r\nPaginationNext.displayName = 'PaginationNext';\r\n\r\nfunction PaginationEllipsis({ className, ...props }: React.ComponentProps<'span'>) {\r\n  return (\r\n    <span\r\n      {...props}\r\n      aria-hidden\r\n      className={cn('flex h-9 w-9 items-center justify-center', className)}\r\n    >\r\n      <MoreHorizontal className='h-4 w-4 text-primary-gray-700 dark:text-primary-gray-100' />\r\n      <span className='sr-only'>More pages</span>\r\n    </span>\r\n  );\r\n}\r\nPaginationEllipsis.displayName = 'PaginationEllipsis';\r\n\r\nexport {\r\n  PaginationUnit,\r\n  PaginationContent,\r\n  PaginationLink,\r\n  PaginationItem,\r\n  PaginationPrevious,\r\n  PaginationNext,\r\n  PaginationEllipsis,\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\n\r\nimport {\r\n  PaginationUnit,\r\n  PaginationContent,\r\n  PaginationEllipsis,\r\n  PaginationItem,\r\n  PaginationLink,\r\n  PaginationNext,\r\n  PaginationPrevious,\r\n} from './pagination';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface PaginationProps {\r\n  defaultPage?: number;\r\n  total: number;\r\n  pageSize: number;\r\n  onChange: (page: number) => void;\r\n  className?: string;\r\n}\r\n\r\nconst getPageNumbers = (currentPageNo: number, totalPages: number) => {\r\n  const pages: (number | 'ellipsis')[] = [];\r\n\r\n  if (totalPages <= 7) {\r\n    return Array.from({ length: totalPages }, (_, i) => i + 1);\r\n  }\r\n\r\n  // Always show first page\r\n  pages.push(1);\r\n\r\n  if (currentPageNo <= 3) {\r\n    pages.push(2, 3, 4, 'ellipsis');\r\n  } else if (currentPageNo >= totalPages - 2) {\r\n    pages.push('ellipsis', totalPages - 3, totalPages - 2, totalPages - 1);\r\n  } else {\r\n    pages.push('ellipsis', currentPageNo - 1, currentPageNo, currentPageNo + 1, 'ellipsis');\r\n  }\r\n\r\n  // Always show last page\r\n  pages.push(totalPages);\r\n\r\n  return pages;\r\n};\r\n\r\nfunction Pagination(props: PaginationProps) {\r\n  const { defaultPage = 1, total, pageSize, onChange, className } = props;\r\n  const totalPages = Math.ceil(total / pageSize);\r\n  const [currentPage, setCurrentPage] = useState(defaultPage);\r\n  const [pageNumbers, setPageNumbers] = useState<(number | 'ellipsis')[]>(\r\n    getPageNumbers(defaultPage, totalPages),\r\n  );\r\n\r\n  useEffect(() => {\r\n    setPageNumbers(getPageNumbers(currentPage, totalPages));\r\n  }, [currentPage, totalPages]);\r\n  return (\r\n    <PaginationUnit className={cn('select-none', className)}>\r\n      <PaginationContent>\r\n        <PaginationItem>\r\n          <PaginationPrevious\r\n            onClick={() => {\r\n              if (currentPage > 1) {\r\n                onChange(currentPage - 1);\r\n                setCurrentPage(currentPage - 1);\r\n              }\r\n            }}\r\n            className={cn(\r\n              'cursor-pointer',\r\n              currentPage <= 1 && 'cursor-not-allowed pointer-events-none opacity-35',\r\n            )}\r\n          />\r\n        </PaginationItem>\r\n\r\n        {pageNumbers.map((page, index) => (\r\n          <PaginationItem key={index}>\r\n            {page === 'ellipsis' ? (\r\n              <PaginationEllipsis />\r\n            ) : (\r\n              <PaginationLink\r\n                onClick={() => {\r\n                  setCurrentPage(page);\r\n                  onChange(page);\r\n                }}\r\n                className={cn(\r\n                  'cursor-pointer w-[32px] h-[32px] flex items-center justify-center rounded-full hover:bg-primary-gray-300',\r\n                  page === currentPage &&\r\n                    'bg-primary-blue-600 hover:bg-primary-blue-700 dark:bg-primary-blue-500 dark:hover:bg-primary-blue-400 hover:text-primary-wite text-primary-white',\r\n                )}\r\n              >\r\n                {page}\r\n              </PaginationLink>\r\n            )}\r\n          </PaginationItem>\r\n        ))}\r\n\r\n        <PaginationItem>\r\n          <PaginationNext\r\n            onClick={() => {\r\n              if (currentPage < totalPages) {\r\n                onChange(currentPage + 1);\r\n                setCurrentPage(currentPage + 1);\r\n              }\r\n            }}\r\n            className={cn(\r\n              'cursor-pointer',\r\n              currentPage >= totalPages && 'cursor-not-allowed pointer-events-none opacity-35',\r\n            )}\r\n          />\r\n        </PaginationItem>\r\n      </PaginationContent>\r\n    </PaginationUnit>\r\n  );\r\n}\r\n\r\nexport { Pagination };\r\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n  createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n  const {\n    __scopePopover,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = false\n  } = props;\n  const popperScope = usePopperScope(__scopePopover);\n  const triggerRef = React.useRef(null);\n  const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: POPOVER_NAME\n  });\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    PopoverProvider,\n    {\n      scope: __scopePopover,\n      contentId: useId(),\n      triggerRef,\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      hasCustomAnchor,\n      onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n      onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n      modal,\n      children\n    }\n  ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...anchorProps } = props;\n    const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n    const popperScope = usePopperScope(__scopePopover);\n    const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n    React.useEffect(() => {\n      onCustomAnchorAdd();\n      return () => onCustomAnchorRemove();\n    }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n  }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...triggerProps } = props;\n    const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n    const popperScope = usePopperScope(__scopePopover);\n    const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n    const trigger = /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-haspopup\": \"dialog\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.contentId,\n        \"data-state\": getState(context.open),\n        ...triggerProps,\n        ref: composedTriggerRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n    return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n  }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n  const { __scopePopover, forceMount, children, container } = props;\n  const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n  }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef);\n    const isRightClickOutsideRef = React.useRef(false);\n    React.useEffect(() => {\n      const content = contentRef.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n      PopoverContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: true,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          event.preventDefault();\n          if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n        }),\n        onPointerDownOutside: composeEventHandlers(\n          props.onPointerDownOutside,\n          (event) => {\n            const originalEvent = event.detail.originalEvent;\n            const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n            const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n            isRightClickOutsideRef.current = isRightClick;\n          },\n          { checkForDefaultPrevented: false }\n        ),\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault(),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }\n);\nvar PopoverContentNonModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n    const hasInteractedOutsideRef = React.useRef(false);\n    const hasPointerDownOutsideRef = React.useRef(false);\n    return /* @__PURE__ */ jsx(\n      PopoverContentImpl,\n      {\n        ...props,\n        ref: forwardedRef,\n        trapFocus: false,\n        disableOutsidePointerEvents: false,\n        onCloseAutoFocus: (event) => {\n          props.onCloseAutoFocus?.(event);\n          if (!event.defaultPrevented) {\n            if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n            event.preventDefault();\n          }\n          hasInteractedOutsideRef.current = false;\n          hasPointerDownOutsideRef.current = false;\n        },\n        onInteractOutside: (event) => {\n          props.onInteractOutside?.(event);\n          if (!event.defaultPrevented) {\n            hasInteractedOutsideRef.current = true;\n            if (event.detail.originalEvent.type === \"pointerdown\") {\n              hasPointerDownOutsideRef.current = true;\n            }\n          }\n          const target = event.target;\n          const targetIsTrigger = context.triggerRef.current?.contains(target);\n          if (targetIsTrigger) event.preventDefault();\n          if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n            event.preventDefault();\n          }\n        }\n      }\n    );\n  }\n);\nvar PopoverContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopePopover,\n      trapFocus,\n      onOpenAutoFocus,\n      onCloseAutoFocus,\n      disableOutsidePointerEvents,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      ...contentProps\n    } = props;\n    const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n    const popperScope = usePopperScope(__scopePopover);\n    useFocusGuards();\n    return /* @__PURE__ */ jsx(\n      FocusScope,\n      {\n        asChild: true,\n        loop: true,\n        trapped: trapFocus,\n        onMountAutoFocus: onOpenAutoFocus,\n        onUnmountAutoFocus: onCloseAutoFocus,\n        children: /* @__PURE__ */ jsx(\n          DismissableLayer,\n          {\n            asChild: true,\n            disableOutsidePointerEvents,\n            onInteractOutside,\n            onEscapeKeyDown,\n            onPointerDownOutside,\n            onFocusOutside,\n            onDismiss: () => context.onOpenChange(false),\n            children: /* @__PURE__ */ jsx(\n              PopperPrimitive.Content,\n              {\n                \"data-state\": getState(context.open),\n                role: \"dialog\",\n                id: context.contentId,\n                ...popperScope,\n                ...contentProps,\n                ref: forwardedRef,\n                style: {\n                  ...contentProps.style,\n                  // re-namespace exposed content custom properties\n                  ...{\n                    \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n                    \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n                    \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n                    \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n                    \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n                  }\n                }\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...closeProps } = props;\n    const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        ...closeProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n      }\n    );\n  }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopePopover);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n  Anchor2 as Anchor,\n  Arrow2 as Arrow,\n  Close,\n  Content2 as Content,\n  Popover,\n  PopoverAnchor,\n  PopoverArrow,\n  PopoverClose,\n  PopoverContent,\n  PopoverPortal,\n  PopoverTrigger,\n  Portal,\n  Root2 as Root,\n  Trigger,\n  createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst Popover = PopoverPrimitive.Root;\r\n\r\nconst PopoverTrigger = PopoverPrimitive.Trigger;\r\n\r\nconst PopoverAnchor = PopoverPrimitive.Anchor;\r\n\r\nconst PopoverContent = React.forwardRef<\r\n  React.ComponentRef<typeof PopoverPrimitive.Content>,\r\n  React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\r\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\r\n  <PopoverPrimitive.Portal>\r\n    <PopoverPrimitive.Content\r\n      {...props}\r\n      ref={ref}\r\n      align={align}\r\n      sideOffset={sideOffset}\r\n      className={cn(\r\n        'h-auto z-50 w-72 border border-primary-gray-300 dark:border-primary-gray-550 text-sm bg-primary-gray-100 dark:bg-primary-gray-650 p-3 text-primary-black dark:text-primary-white outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\r\n        className,\r\n      )}\r\n    />\r\n  </PopoverPrimitive.Portal>\r\n));\r\n\r\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\r\n\r\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\r\n","\"use client\";\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeRadio,\n      name,\n      checked = false,\n      required,\n      disabled,\n      value = \"on\",\n      onCheck,\n      form,\n      ...radioProps\n    } = props;\n    const [button, setButton] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n    const hasConsumerStoppedPropagationRef = React.useRef(false);\n    const isFormControl = button ? form || !!button.closest(\"form\") : true;\n    return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n      /* @__PURE__ */ jsx(\n        Primitive.button,\n        {\n          type: \"button\",\n          role: \"radio\",\n          \"aria-checked\": checked,\n          \"data-state\": getState(checked),\n          \"data-disabled\": disabled ? \"\" : void 0,\n          disabled,\n          value,\n          ...radioProps,\n          ref: composedRefs,\n          onClick: composeEventHandlers(props.onClick, (event) => {\n            if (!checked) onCheck?.();\n            if (isFormControl) {\n              hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n              if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n            }\n          })\n        }\n      ),\n      isFormControl && /* @__PURE__ */ jsx(\n        RadioBubbleInput,\n        {\n          control: button,\n          bubbles: !hasConsumerStoppedPropagationRef.current,\n          name,\n          value,\n          checked,\n          required,\n          disabled,\n          form,\n          style: { transform: \"translateX(-100%)\" }\n        }\n      )\n    ] });\n  }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeRadio, forceMount, ...indicatorProps } = props;\n    const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        \"data-state\": getState(context.checked),\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        ...indicatorProps,\n        ref: forwardedRef\n      }\n    ) });\n  }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = React.forwardRef(\n  ({\n    __scopeRadio,\n    control,\n    checked,\n    bubbles = true,\n    ...props\n  }, forwardedRef) => {\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(ref, forwardedRef);\n    const prevChecked = usePrevious(checked);\n    const controlSize = useSize(control);\n    React.useEffect(() => {\n      const input = ref.current;\n      if (!input) return;\n      const inputProto = window.HTMLInputElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        inputProto,\n        \"checked\"\n      );\n      const setChecked = descriptor.set;\n      if (prevChecked !== checked && setChecked) {\n        const event = new Event(\"click\", { bubbles });\n        setChecked.call(input, checked);\n        input.dispatchEvent(event);\n      }\n    }, [prevChecked, checked, bubbles]);\n    return /* @__PURE__ */ jsx(\n      Primitive.input,\n      {\n        type: \"radio\",\n        \"aria-hidden\": true,\n        defaultChecked: checked,\n        ...props,\n        tabIndex: -1,\n        ref: composedRefs,\n        style: {\n          ...props.style,\n          ...controlSize,\n          position: \"absolute\",\n          pointerEvents: \"none\",\n          opacity: 0,\n          margin: 0\n        }\n      }\n    );\n  }\n);\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n  return checked ? \"checked\" : \"unchecked\";\n}\n\n// src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n  createRovingFocusGroupScope,\n  createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeRadioGroup,\n      name,\n      defaultValue,\n      value: valueProp,\n      required = false,\n      disabled = false,\n      orientation,\n      dir,\n      loop = true,\n      onValueChange,\n      ...groupProps\n    } = props;\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n    const direction = useDirection(dir);\n    const [value, setValue] = useControllableState({\n      prop: valueProp,\n      defaultProp: defaultValue ?? null,\n      onChange: onValueChange,\n      caller: RADIO_GROUP_NAME\n    });\n    return /* @__PURE__ */ jsx2(\n      RadioGroupProvider,\n      {\n        scope: __scopeRadioGroup,\n        name,\n        required,\n        disabled,\n        value,\n        onValueChange: setValue,\n        children: /* @__PURE__ */ jsx2(\n          RovingFocusGroup.Root,\n          {\n            asChild: true,\n            ...rovingFocusGroupScope,\n            orientation,\n            dir: direction,\n            loop,\n            children: /* @__PURE__ */ jsx2(\n              Primitive2.div,\n              {\n                role: \"radiogroup\",\n                \"aria-required\": required,\n                \"aria-orientation\": orientation,\n                \"data-disabled\": disabled ? \"\" : void 0,\n                dir: direction,\n                ...groupProps,\n                ref: forwardedRef\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeRadioGroup, disabled, ...itemProps } = props;\n    const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n    const isDisabled = context.disabled || disabled;\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n    const radioScope = useRadioScope(__scopeRadioGroup);\n    const ref = React2.useRef(null);\n    const composedRefs = useComposedRefs2(forwardedRef, ref);\n    const checked = context.value === itemProps.value;\n    const isArrowKeyPressedRef = React2.useRef(false);\n    React2.useEffect(() => {\n      const handleKeyDown = (event) => {\n        if (ARROW_KEYS.includes(event.key)) {\n          isArrowKeyPressedRef.current = true;\n        }\n      };\n      const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n      document.addEventListener(\"keydown\", handleKeyDown);\n      document.addEventListener(\"keyup\", handleKeyUp);\n      return () => {\n        document.removeEventListener(\"keydown\", handleKeyDown);\n        document.removeEventListener(\"keyup\", handleKeyUp);\n      };\n    }, []);\n    return /* @__PURE__ */ jsx2(\n      RovingFocusGroup.Item,\n      {\n        asChild: true,\n        ...rovingFocusGroupScope,\n        focusable: !isDisabled,\n        active: checked,\n        children: /* @__PURE__ */ jsx2(\n          Radio,\n          {\n            disabled: isDisabled,\n            required: context.required,\n            checked,\n            ...radioScope,\n            ...itemProps,\n            name: context.name,\n            ref: composedRefs,\n            onCheck: () => context.onValueChange(itemProps.value),\n            onKeyDown: composeEventHandlers2((event) => {\n              if (event.key === \"Enter\") event.preventDefault();\n            }),\n            onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n              if (isArrowKeyPressedRef.current) ref.current?.click();\n            })\n          }\n        )\n      }\n    );\n  }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeRadioGroup, ...indicatorProps } = props;\n    const radioScope = useRadioScope(__scopeRadioGroup);\n    return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n  }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n  Indicator,\n  Item2 as Item,\n  RadioGroup,\n  RadioGroupIndicator,\n  RadioGroupItem,\n  Root2 as Root,\n  createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\r\nimport { Circle } from 'lucide-react';\r\nimport { cva } from 'class-variance-authority';\r\n\r\nimport { Label } from './label';\r\n\r\nimport { cn, generateRandomId } from '@/lib/utils';\r\n\r\nconst radioVariants = cva(\r\n  'aspect-square h-4 w-4 bg-primary-white dark:bg-primary-gray-650 rounded-full text-primary-gray-700 dark:text-primary-white shadow-sm focus:outline-hidden focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50',\r\n  {\r\n    variants: {\r\n      color: {\r\n        blue: 'border-primary-blue-600 hover:bg-primary-blue-100 dark:border-primary-blue-400 dark:hover:bg-primary-blue-200',\r\n        red: 'border-accent-dark-red hover:bg-accent-light-red dark:border-accent-red dark:hover:bg-accent-light-red',\r\n        black:\r\n          'border-primary-gray-700 hover:bg-primary-gray-400 dark:border-primary-gray-100 dark:hover:bg-primary-gray-550',\r\n        custom:\r\n          'border-custom-color-600 hover:bg-custom-color-100 dark:border-custom-color-400 dark:hover:bg-custom-color-200',\r\n      },\r\n      variant: {\r\n        light: 'border',\r\n        normal: 'border-2',\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      color: 'red',\r\n      variant: 'normal',\r\n    },\r\n  },\r\n);\r\n\r\nconst radioCheckVariants = cva('stroke-0', {\r\n  variants: {\r\n    color: {\r\n      blue: 'fill-primary-blue-600 dark:fill-primary-blue-400',\r\n      red: 'fill-accent-dark-red dark:fill-accent-red',\r\n      black: 'fill-primary-gray-700 dark:fill-primary-gray-100',\r\n      custom: 'fill-custom-color-600 dark:fill-custom-color-400',\r\n    },\r\n    variant: {\r\n      light: 'h-1.5 w-1.5',\r\n      normal: 'h-2.5 w-2.5',\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    color: 'red',\r\n    variant: 'normal',\r\n  },\r\n});\r\n\r\nconst RadioGroupContext = React.createContext<{\r\n  color?: 'blue' | 'red' | 'black' | 'custom' | null | undefined;\r\n  variant?: 'light' | 'normal' | null | undefined;\r\n}>({\r\n  color: null,\r\n  variant: null,\r\n});\r\n\r\nconst RadioGroup = React.forwardRef<\r\n  React.ComponentRef<typeof RadioGroupPrimitive.Root>,\r\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> & {\r\n    color?: 'blue' | 'red' | 'black' | 'custom' | null | undefined;\r\n    variant?: 'light' | 'normal' | null | undefined;\r\n  }\r\n>(({ className, color, variant, ...props }, ref) => {\r\n  const contextValue = React.useMemo(\r\n    () => ({\r\n      color,\r\n      variant,\r\n    }),\r\n    [color, variant],\r\n  );\r\n  return (\r\n    <RadioGroupContext.Provider value={contextValue}>\r\n      <RadioGroupPrimitive.Root\r\n        {...props}\r\n        className={cn('flex gap-x-4 gap-y-2 flex-row flex-wrap rtl:[direction:rtl]', className)}\r\n        ref={ref}\r\n      />\r\n    </RadioGroupContext.Provider>\r\n  );\r\n});\r\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\r\n\r\nconst RadioGroupItem = React.forwardRef<\r\n  React.ComponentRef<typeof RadioGroupPrimitive.Item>,\r\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> & {\r\n    label: string;\r\n    radioClassName?: string;\r\n    labelClassName?: string;\r\n  }\r\n>(({ className, radioClassName, labelClassName, label, ...props }, ref) => {\r\n  const id = props.id || generateRandomId();\r\n  const { color, variant } = React.useContext(RadioGroupContext);\r\n  return (\r\n    <div className={cn('flex flex-row gap-2 items-center', className)}>\r\n      <RadioGroupPrimitive.Item\r\n        {...props}\r\n        ref={ref}\r\n        className={cn(radioVariants({ color, variant }), radioClassName)}\r\n        id={id}\r\n      >\r\n        <RadioGroupPrimitive.Indicator className='flex items-center justify-center'>\r\n          <Circle className={radioCheckVariants({ color, variant })} />\r\n        </RadioGroupPrimitive.Indicator>\r\n      </RadioGroupPrimitive.Item>\r\n      <Label className={cn('mt-0.5 text-base!', labelClassName)} htmlFor={id}>\r\n        {label}\r\n      </Label>\r\n    </div>\r\n  );\r\n});\r\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\r\n\r\nexport { RadioGroup, RadioGroupItem };\r\n","import React from 'react';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\r\n  sdgList?: number[];\r\n  barClassName?: string;\r\n}\r\n\r\nfunction SdgBorder({ sdgList, barClassName, ...props }: Props) {\r\n  return (\r\n    <div {...props} className={cn('flex gap-0 w-full flex-nowrap', props.className)}>\r\n      {(sdgList || [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]).map((d, i) => {\r\n        return (\r\n          <div\r\n            key={i}\r\n            style={{ backgroundColor: `var(--sdg-${d})` }}\r\n            className={cn('h-4 grow', barClassName)}\r\n          />\r\n        );\r\n      })}\r\n    </div>\r\n  );\r\n}\r\n\r\nexport { SdgBorder };\r\n","import {\r\n  SDG1,\r\n  SDG10,\r\n  SDG11,\r\n  SDG12,\r\n  SDG13,\r\n  SDG14,\r\n  SDG15,\r\n  SDG16,\r\n  SDG17,\r\n  SDG2,\r\n  SDG3,\r\n  SDG4,\r\n  SDG5,\r\n  SDG6,\r\n  SDG7,\r\n  SDG8,\r\n  SDG9,\r\n} from '../icons/icons';\r\n\r\ninterface Props {\r\n  sdg:\r\n    | '1'\r\n    | '2'\r\n    | '3'\r\n    | '4'\r\n    | '5'\r\n    | '6'\r\n    | '7'\r\n    | '8'\r\n    | '9'\r\n    | '10'\r\n    | '11'\r\n    | '12'\r\n    | '13'\r\n    | '14'\r\n    | '15'\r\n    | '16'\r\n    | '17'\r\n    | 1\r\n    | 2\r\n    | 3\r\n    | 4\r\n    | 5\r\n    | 6\r\n    | 7\r\n    | 8\r\n    | 9\r\n    | 10\r\n    | 11\r\n    | 12\r\n    | 13\r\n    | 14\r\n    | 15\r\n    | 16\r\n    | 17;\r\n  size?: number;\r\n  background: boolean;\r\n}\r\n\r\nfunction SDGIcons(props: Props) {\r\n  const { sdg, size, background } = props;\r\n  switch (`${sdg}`) {\r\n    case '1':\r\n      return <SDG1 size={size} background={background} />;\r\n    case '2':\r\n      return <SDG2 size={size} background={background} />;\r\n    case '3':\r\n      return <SDG3 size={size} background={background} />;\r\n    case '4':\r\n      return <SDG4 size={size} background={background} />;\r\n    case '5':\r\n      return <SDG5 size={size} background={background} />;\r\n    case '6':\r\n      return <SDG6 size={size} background={background} />;\r\n    case '7':\r\n      return <SDG7 size={size} background={background} />;\r\n    case '8':\r\n      return <SDG8 size={size} background={background} />;\r\n    case '9':\r\n      return <SDG9 size={size} background={background} />;\r\n    case '10':\r\n      return <SDG10 size={size} background={background} />;\r\n    case '11':\r\n      return <SDG11 size={size} background={background} />;\r\n    case '12':\r\n      return <SDG12 size={size} background={background} />;\r\n    case '13':\r\n      return <SDG13 size={size} background={background} />;\r\n    case '14':\r\n      return <SDG14 size={size} background={background} />;\r\n    case '15':\r\n      return <SDG15 size={size} background={background} />;\r\n    case '16':\r\n      return <SDG16 size={size} background={background} />;\r\n    case '17':\r\n      return <SDG17 size={size} background={background} />;\r\n    default:\r\n      return <div />;\r\n  }\r\n}\r\n\r\nexport { SDGIcons };\r\n","import { useEffect, useState } from 'react';\r\nimport { cva } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface OptionDataType {\r\n  label: React.ReactNode;\r\n  value: string;\r\n}\r\nconst segmentedButtonVariants = cva(\r\n  'inline-flex bg-primary-gray-300 dark:bg-primary-gray-600 rounded-none',\r\n  {\r\n    variants: {\r\n      variant: {\r\n        normal: 'border border-primary-gray-300 dark:border-primary-gray-600',\r\n        light: 'border-0 border-primary-black dark:border-primary-gray-300',\r\n      },\r\n      size: {\r\n        sm: 'p-[3px]',\r\n        base: 'p-[5px]',\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      size: 'base',\r\n      variant: 'normal',\r\n    },\r\n  },\r\n);\r\n\r\nconst buttonSelectedVariants = cva('bg-primary-white dark:bg-primary-gray-550 shadow-xs', {\r\n  variants: {\r\n    color: {\r\n      blue: 'text-primary-blue-600 dark:text-primary-white',\r\n      red: 'text-accent-dark-red dark:text-primary-white',\r\n      black: 'text-primary-gray-700 dark:text-primary-white',\r\n      custom: 'text-custom-color-600 dark:text-primary-white',\r\n    },\r\n  },\r\n  defaultVariants: { color: 'red' },\r\n});\r\n\r\nconst buttonUnselectedVariants = cva(\r\n  'text-primary-black dark:text-primary-gray-200 hover:bg-primary-gray-400 dark:hover:bg-primary-gray-650',\r\n  {\r\n    variants: {\r\n      color: {\r\n        blue: 'hover:text-primary-blue-600 dark:hover:text-primary-white',\r\n        red: 'hover:text-accent-dark-red dark:hover:text-primary-white',\r\n        black: 'hover:text-primary-gray-600 dark:hover:text-primary-white',\r\n        custom: 'hover:text-custom-color-600 dark:hover:text-primary-white',\r\n      },\r\n    },\r\n    defaultVariants: { color: 'red' },\r\n  },\r\n);\r\n\r\ninterface Props {\r\n  options: OptionDataType[];\r\n  defaultValue?: string;\r\n  value?: string;\r\n  onValueChange?: (d: string) => void;\r\n  className?: string;\r\n  buttonClassName?: string;\r\n  activeButtonClassName?: string;\r\n  size?: 'sm' | 'base';\r\n  variant?: 'light' | 'normal';\r\n  color?: 'blue' | 'red' | 'black' | 'custom';\r\n}\r\n\r\nfunction SegmentedControl(props: Props) {\r\n  const {\r\n    options,\r\n    defaultValue,\r\n    onValueChange,\r\n    className,\r\n    buttonClassName,\r\n    activeButtonClassName,\r\n    size,\r\n    variant,\r\n    color,\r\n    value,\r\n  } = props;\r\n  const [selected, setSelected] = useState(value || defaultValue || options[0].value);\r\n\r\n  const handleSelect = (value: string) => {\r\n    setSelected(value);\r\n    onValueChange?.(value);\r\n  };\r\n\r\n  useEffect(() => {\r\n    setSelected(value || defaultValue || options[0].value);\r\n  }, [defaultValue, options, value]);\r\n\r\n  return (\r\n    <div className={cn(segmentedButtonVariants({ size, variant }), className)}>\r\n      {options.map(option => (\r\n        <button\r\n          type='button'\r\n          key={option.value}\r\n          onClick={() => handleSelect(option.value)}\r\n          className={cn(\r\n            'px-4 py-2 text-sm rounded-sm transition-all duration-200',\r\n            selected === option.value\r\n              ? buttonSelectedVariants({ color })\r\n              : buttonUnselectedVariants({ color }),\r\n            buttonClassName,\r\n            selected === option.value ? activeButtonClassName : '',\r\n          )}\r\n        >\r\n          {option.label}\r\n        </button>\r\n      ))}\r\n    </div>\r\n  );\r\n}\r\n\r\nexport { SegmentedControl };\r\n","// src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n  const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n  const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n  const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n  const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n  return /* @__PURE__ */ jsx(\n    Primitive.div,\n    {\n      \"data-orientation\": orientation,\n      ...semanticProps,\n      ...domProps,\n      ref: forwardedRef\n    }\n  );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n  return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n  Root,\n  Separator\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst Separator = React.forwardRef<\r\n  React.ComponentRef<typeof SeparatorPrimitive.Root>,\r\n  React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> & {\r\n    variant?: 'dark' | 'light';\r\n  }\r\n>(({ className, variant = 'dark', orientation = 'horizontal', ...props }, ref) => (\r\n  <SeparatorPrimitive.Root\r\n    {...props}\r\n    ref={ref}\r\n    orientation={orientation}\r\n    className={cn(\r\n      orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\r\n      variant === 'dark'\r\n        ? 'bg-primary-gray-600 dark:bg-primary-gray-200'\r\n        : 'bg-primary-gray-400 dark:bg-primary-gray-550',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\r\n\r\nexport { Separator };\r\n","import React, { useEffect } from 'react';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst sidebarVariants = cva('w-full sm:w-1/2 md:w-1/3 xl:w-1/4 2xl:w-1/5', {\r\n  variants: {\r\n    variant: {\r\n      noEffect: '',\r\n      background: 'bg-primary-gray-100 dark:bg-primary-gray-650',\r\n      border: 'border-r border-r-primary-gray-300 dark:border-r-primary-gray-600',\r\n    },\r\n  },\r\n  defaultVariants: { variant: 'background' },\r\n});\r\ninterface SidebarProps\r\n  extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>,\r\n    VariantProps<typeof sidebarVariants> {\r\n  defaultValue?: string;\r\n  activeValue?: string;\r\n  activeItemClass?: string;\r\n  hoverItemClass?: string;\r\n  onValueChange?: (value: string) => void;\r\n}\r\n\r\nconst SidebarContext = React.createContext<{\r\n  selectedValue?: string;\r\n  activeItemClass?: string;\r\n  activeValue?: string;\r\n  hoverItemClass?: string;\r\n  onValueChange: (value: string) => void;\r\n}>({\r\n  selectedValue: undefined,\r\n  hoverItemClass: undefined,\r\n  activeValue: undefined,\r\n  activeItemClass: undefined,\r\n  onValueChange: () => {},\r\n});\r\n\r\nconst Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>(\r\n  (\r\n    {\r\n      className,\r\n      children,\r\n      variant,\r\n      defaultValue,\r\n      activeValue,\r\n      activeItemClass,\r\n      hoverItemClass,\r\n      onValueChange,\r\n      ...props\r\n    },\r\n    ref,\r\n  ) => {\r\n    // Internal state for uncontrolled usage\r\n    const [selectedValue, setSelectedValue] = React.useState<string>(\r\n      activeValue || defaultValue || '',\r\n    );\r\n\r\n    // Handler for checkbox changes\r\n    const handleValueChange = React.useCallback(\r\n      (itemValue: string) => {\r\n        setSelectedValue(activeValue || itemValue);\r\n\r\n        // Call onChange handler if provided\r\n        onValueChange?.(itemValue);\r\n      },\r\n      [onValueChange, activeValue],\r\n    );\r\n\r\n    useEffect(() => {\r\n      if (activeValue) setSelectedValue(activeValue);\r\n    }, [activeValue]);\r\n\r\n    // Context to pass down the handler and selected values\r\n    const contextValue = React.useMemo(\r\n      () => ({\r\n        activeItemClass,\r\n        activeValue,\r\n        selectedValue,\r\n        hoverItemClass,\r\n        onValueChange: handleValueChange,\r\n      }),\r\n      [activeItemClass, activeValue, selectedValue, hoverItemClass, handleValueChange],\r\n    );\r\n\r\n    return (\r\n      <SidebarContext.Provider value={contextValue}>\r\n        <div className={cn(sidebarVariants({ variant }), className)} ref={ref} {...props}>\r\n          {children}\r\n        </div>\r\n      </SidebarContext.Provider>\r\n    );\r\n  },\r\n);\r\nSidebar.displayName = 'Sidebar';\r\n\r\ninterface SidebarItemProps extends React.HTMLAttributes<HTMLDivElement> {\r\n  value?: string;\r\n}\r\n\r\nconst SidebarItem = React.forwardRef<HTMLDivElement, SidebarItemProps>(\r\n  ({ className, children, value, ...props }, ref) => {\r\n    const { selectedValue, activeItemClass, hoverItemClass, onValueChange } =\r\n      React.useContext(SidebarContext);\r\n    return (\r\n      <div\r\n        {...props}\r\n        ref={ref}\r\n        className={cn(\r\n          'text-primary-black dark:text-primary-white text-base bg-transparent p-4 flex gap-2 items-center cursor-pointer',\r\n          selectedValue === value\r\n            ? activeItemClass || 'bg-primary-gray-300 font-bold dark:bg-primary-gray-600'\r\n            : '',\r\n          hoverItemClass\r\n            ? `hover:${hoverItemClass} dark:hover:${hoverItemClass}`\r\n            : 'hover:bg-primary-gray-300 dark:hover:bg-primary-gray-600',\r\n          className,\r\n        )}\r\n        onClick={() => {\r\n          if (value) {\r\n            onValueChange(value);\r\n          }\r\n        }}\r\n      >\r\n        {children}\r\n      </div>\r\n    );\r\n  },\r\n);\r\nSidebarItem.displayName = 'SidebarItem';\r\n\r\nexport { Sidebar, SidebarItem };\r\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import * as React from 'react';\nexport default function useEvent(callback) {\n  var fnRef = React.useRef();\n  fnRef.current = callback;\n  var memoFn = React.useCallback(function () {\n    var _fnRef$current;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n  }, []);\n  return memoFn;\n}","export default function canUseDom() {\n  return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n  var firstMountRef = React.useRef(true);\n  useInternalLayoutEffect(function () {\n    return callback(firstMountRef.current);\n  }, deps);\n\n  // We tell react that first mount has passed\n  useInternalLayoutEffect(function () {\n    firstMountRef.current = false;\n    return function () {\n      firstMountRef.current = true;\n    };\n  }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n  useLayoutEffect(function (firstMount) {\n    if (!firstMount) {\n      return callback();\n    }\n  }, deps);\n};\nexport default useLayoutEffect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n  var destroyRef = React.useRef(false);\n  var _React$useState = React.useState(defaultValue),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    value = _React$useState2[0],\n    setValue = _React$useState2[1];\n  React.useEffect(function () {\n    destroyRef.current = false;\n    return function () {\n      destroyRef.current = true;\n    };\n  }, []);\n  function safeSetState(updater, ignoreDestroy) {\n    if (ignoreDestroy && destroyRef.current) {\n      return;\n    }\n    setValue(updater);\n  }\n  return [value, safeSetState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n  return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n  var _ref = option || {},\n    defaultValue = _ref.defaultValue,\n    value = _ref.value,\n    onChange = _ref.onChange,\n    postState = _ref.postState;\n\n  // ======================= Init =======================\n  var _useState = useState(function () {\n      if (hasValue(value)) {\n        return value;\n      } else if (hasValue(defaultValue)) {\n        return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n      } else {\n        return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n      }\n    }),\n    _useState2 = _slicedToArray(_useState, 2),\n    innerValue = _useState2[0],\n    setInnerValue = _useState2[1];\n  var mergedValue = value !== undefined ? value : innerValue;\n  var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n  // ====================== Change ======================\n  var onChangeFn = useEvent(onChange);\n  var _useState3 = useState([mergedValue]),\n    _useState4 = _slicedToArray(_useState3, 2),\n    prevValue = _useState4[0],\n    setPrevValue = _useState4[1];\n  useLayoutUpdateEffect(function () {\n    var prev = prevValue[0];\n    if (innerValue !== prev) {\n      onChangeFn(innerValue, prev);\n    }\n  }, [prevValue]);\n\n  // Sync value back to `undefined` when it from control to un-control\n  useLayoutUpdateEffect(function () {\n    if (!hasValue(value)) {\n      setInnerValue(value);\n    }\n  }, [value]);\n\n  // ====================== Update ======================\n  var triggerChange = useEvent(function (updater, ignoreDestroy) {\n    setInnerValue(updater, ignoreDestroy);\n    setPrevValue([mergedValue], ignoreDestroy);\n  });\n  return [postMergedValue, triggerChange];\n}","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n  preWarningFns.push(fn);\n};\n\n/**\n * Warning if condition not match.\n * @param valid Condition\n * @param message Warning message\n * @example\n * ```js\n * warning(false, 'some error'); // print some error\n * warning(true, 'some error'); // print nothing\n * warning(1 === 2, 'some error'); // print some error\n * ```\n */\nexport function warning(valid, message) {\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n      return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n    }, message);\n    if (finalMessage) {\n      console.error(\"Warning: \".concat(finalMessage));\n    }\n  }\n}\n\n/** @see Similar to {@link warning} */\nexport function note(valid, message) {\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n      return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n    }, message);\n    if (finalMessage) {\n      console.warn(\"Note: \".concat(finalMessage));\n    }\n  }\n}\nexport function resetWarned() {\n  warned = {};\n}\nexport function call(method, valid, message) {\n  if (!valid && !warned[message]) {\n    method(false, message);\n    warned[message] = true;\n  }\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function warningOnce(valid, message) {\n  call(warning, valid, message);\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function noteOnce(valid, message) {\n  call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"./warning\";\n\n/**\n * Deeply compares two object literals.\n * @param obj1 object 1\n * @param obj2 object 2\n * @param shallow shallow compare\n * @returns\n */\nfunction isEqual(obj1, obj2) {\n  var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f\n  var refSet = new Set();\n  function deepEqual(a, b) {\n    var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n    var circular = refSet.has(a);\n    warning(!circular, 'Warning: There may be circular references');\n    if (circular) {\n      return false;\n    }\n    if (a === b) {\n      return true;\n    }\n    if (shallow && level > 1) {\n      return false;\n    }\n    refSet.add(a);\n    var newLevel = level + 1;\n    if (Array.isArray(a)) {\n      if (!Array.isArray(b) || a.length !== b.length) {\n        return false;\n      }\n      for (var i = 0; i < a.length; i++) {\n        if (!deepEqual(a[i], b[i], newLevel)) {\n          return false;\n        }\n      }\n      return true;\n    }\n    if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n      var keys = Object.keys(a);\n      if (keys.length !== Object.keys(b).length) {\n        return false;\n      }\n      return keys.every(function (key) {\n        return deepEqual(a[key], b[key], newLevel);\n      });\n    }\n    // other\n    return false;\n  }\n  return deepEqual(obj1, obj2);\n}\nexport default isEqual;","export function getOffset(value, min, max) {\n  return (value - min) / (max - min);\n}\nexport function getDirectionStyle(direction, value, min, max) {\n  var offset = getOffset(value, min, max);\n  var positionStyle = {};\n  switch (direction) {\n    case 'rtl':\n      positionStyle.right = \"\".concat(offset * 100, \"%\");\n      positionStyle.transform = 'translateX(50%)';\n      break;\n    case 'btt':\n      positionStyle.bottom = \"\".concat(offset * 100, \"%\");\n      positionStyle.transform = 'translateY(50%)';\n      break;\n    case 'ttb':\n      positionStyle.top = \"\".concat(offset * 100, \"%\");\n      positionStyle.transform = 'translateY(-50%)';\n      break;\n    default:\n      positionStyle.left = \"\".concat(offset * 100, \"%\");\n      positionStyle.transform = 'translateX(-50%)';\n      break;\n  }\n  return positionStyle;\n}\n\n/** Return index value if is list or return value directly */\nexport function getIndex(value, index) {\n  return Array.isArray(value) ? value[index] : value;\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n  /**\n   * MAC_ENTER\n   */\n  MAC_ENTER: 3,\n  /**\n   * BACKSPACE\n   */\n  BACKSPACE: 8,\n  /**\n   * TAB\n   */\n  TAB: 9,\n  /**\n   * NUMLOCK on FF/Safari Mac\n   */\n  NUM_CENTER: 12,\n  // NUMLOCK on FF/Safari Mac\n  /**\n   * ENTER\n   */\n  ENTER: 13,\n  /**\n   * SHIFT\n   */\n  SHIFT: 16,\n  /**\n   * CTRL\n   */\n  CTRL: 17,\n  /**\n   * ALT\n   */\n  ALT: 18,\n  /**\n   * PAUSE\n   */\n  PAUSE: 19,\n  /**\n   * CAPS_LOCK\n   */\n  CAPS_LOCK: 20,\n  /**\n   * ESC\n   */\n  ESC: 27,\n  /**\n   * SPACE\n   */\n  SPACE: 32,\n  /**\n   * PAGE_UP\n   */\n  PAGE_UP: 33,\n  // also NUM_NORTH_EAST\n  /**\n   * PAGE_DOWN\n   */\n  PAGE_DOWN: 34,\n  // also NUM_SOUTH_EAST\n  /**\n   * END\n   */\n  END: 35,\n  // also NUM_SOUTH_WEST\n  /**\n   * HOME\n   */\n  HOME: 36,\n  // also NUM_NORTH_WEST\n  /**\n   * LEFT\n   */\n  LEFT: 37,\n  // also NUM_WEST\n  /**\n   * UP\n   */\n  UP: 38,\n  // also NUM_NORTH\n  /**\n   * RIGHT\n   */\n  RIGHT: 39,\n  // also NUM_EAST\n  /**\n   * DOWN\n   */\n  DOWN: 40,\n  // also NUM_SOUTH\n  /**\n   * PRINT_SCREEN\n   */\n  PRINT_SCREEN: 44,\n  /**\n   * INSERT\n   */\n  INSERT: 45,\n  // also NUM_INSERT\n  /**\n   * DELETE\n   */\n  DELETE: 46,\n  // also NUM_DELETE\n  /**\n   * ZERO\n   */\n  ZERO: 48,\n  /**\n   * ONE\n   */\n  ONE: 49,\n  /**\n   * TWO\n   */\n  TWO: 50,\n  /**\n   * THREE\n   */\n  THREE: 51,\n  /**\n   * FOUR\n   */\n  FOUR: 52,\n  /**\n   * FIVE\n   */\n  FIVE: 53,\n  /**\n   * SIX\n   */\n  SIX: 54,\n  /**\n   * SEVEN\n   */\n  SEVEN: 55,\n  /**\n   * EIGHT\n   */\n  EIGHT: 56,\n  /**\n   * NINE\n   */\n  NINE: 57,\n  /**\n   * QUESTION_MARK\n   */\n  QUESTION_MARK: 63,\n  // needs localization\n  /**\n   * A\n   */\n  A: 65,\n  /**\n   * B\n   */\n  B: 66,\n  /**\n   * C\n   */\n  C: 67,\n  /**\n   * D\n   */\n  D: 68,\n  /**\n   * E\n   */\n  E: 69,\n  /**\n   * F\n   */\n  F: 70,\n  /**\n   * G\n   */\n  G: 71,\n  /**\n   * H\n   */\n  H: 72,\n  /**\n   * I\n   */\n  I: 73,\n  /**\n   * J\n   */\n  J: 74,\n  /**\n   * K\n   */\n  K: 75,\n  /**\n   * L\n   */\n  L: 76,\n  /**\n   * M\n   */\n  M: 77,\n  /**\n   * N\n   */\n  N: 78,\n  /**\n   * O\n   */\n  O: 79,\n  /**\n   * P\n   */\n  P: 80,\n  /**\n   * Q\n   */\n  Q: 81,\n  /**\n   * R\n   */\n  R: 82,\n  /**\n   * S\n   */\n  S: 83,\n  /**\n   * T\n   */\n  T: 84,\n  /**\n   * U\n   */\n  U: 85,\n  /**\n   * V\n   */\n  V: 86,\n  /**\n   * W\n   */\n  W: 87,\n  /**\n   * X\n   */\n  X: 88,\n  /**\n   * Y\n   */\n  Y: 89,\n  /**\n   * Z\n   */\n  Z: 90,\n  /**\n   * META\n   */\n  META: 91,\n  // WIN_KEY_LEFT\n  /**\n   * WIN_KEY_RIGHT\n   */\n  WIN_KEY_RIGHT: 92,\n  /**\n   * CONTEXT_MENU\n   */\n  CONTEXT_MENU: 93,\n  /**\n   * NUM_ZERO\n   */\n  NUM_ZERO: 96,\n  /**\n   * NUM_ONE\n   */\n  NUM_ONE: 97,\n  /**\n   * NUM_TWO\n   */\n  NUM_TWO: 98,\n  /**\n   * NUM_THREE\n   */\n  NUM_THREE: 99,\n  /**\n   * NUM_FOUR\n   */\n  NUM_FOUR: 100,\n  /**\n   * NUM_FIVE\n   */\n  NUM_FIVE: 101,\n  /**\n   * NUM_SIX\n   */\n  NUM_SIX: 102,\n  /**\n   * NUM_SEVEN\n   */\n  NUM_SEVEN: 103,\n  /**\n   * NUM_EIGHT\n   */\n  NUM_EIGHT: 104,\n  /**\n   * NUM_NINE\n   */\n  NUM_NINE: 105,\n  /**\n   * NUM_MULTIPLY\n   */\n  NUM_MULTIPLY: 106,\n  /**\n   * NUM_PLUS\n   */\n  NUM_PLUS: 107,\n  /**\n   * NUM_MINUS\n   */\n  NUM_MINUS: 109,\n  /**\n   * NUM_PERIOD\n   */\n  NUM_PERIOD: 110,\n  /**\n   * NUM_DIVISION\n   */\n  NUM_DIVISION: 111,\n  /**\n   * F1\n   */\n  F1: 112,\n  /**\n   * F2\n   */\n  F2: 113,\n  /**\n   * F3\n   */\n  F3: 114,\n  /**\n   * F4\n   */\n  F4: 115,\n  /**\n   * F5\n   */\n  F5: 116,\n  /**\n   * F6\n   */\n  F6: 117,\n  /**\n   * F7\n   */\n  F7: 118,\n  /**\n   * F8\n   */\n  F8: 119,\n  /**\n   * F9\n   */\n  F9: 120,\n  /**\n   * F10\n   */\n  F10: 121,\n  /**\n   * F11\n   */\n  F11: 122,\n  /**\n   * F12\n   */\n  F12: 123,\n  /**\n   * NUMLOCK\n   */\n  NUMLOCK: 144,\n  /**\n   * SEMICOLON\n   */\n  SEMICOLON: 186,\n  // needs localization\n  /**\n   * DASH\n   */\n  DASH: 189,\n  // needs localization\n  /**\n   * EQUALS\n   */\n  EQUALS: 187,\n  // needs localization\n  /**\n   * COMMA\n   */\n  COMMA: 188,\n  // needs localization\n  /**\n   * PERIOD\n   */\n  PERIOD: 190,\n  // needs localization\n  /**\n   * SLASH\n   */\n  SLASH: 191,\n  // needs localization\n  /**\n   * APOSTROPHE\n   */\n  APOSTROPHE: 192,\n  // needs localization\n  /**\n   * SINGLE_QUOTE\n   */\n  SINGLE_QUOTE: 222,\n  // needs localization\n  /**\n   * OPEN_SQUARE_BRACKET\n   */\n  OPEN_SQUARE_BRACKET: 219,\n  // needs localization\n  /**\n   * BACKSLASH\n   */\n  BACKSLASH: 220,\n  // needs localization\n  /**\n   * CLOSE_SQUARE_BRACKET\n   */\n  CLOSE_SQUARE_BRACKET: 221,\n  // needs localization\n  /**\n   * WIN_KEY\n   */\n  WIN_KEY: 224,\n  /**\n   * MAC_FF_META\n   */\n  MAC_FF_META: 224,\n  // Firefox (Gecko) fires this for the meta key instead of 91\n  /**\n   * WIN_IME\n   */\n  WIN_IME: 229,\n  // ======================== Function ========================\n  /**\n   * whether text and modified key is entered at the same time.\n   */\n  isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n    var keyCode = e.keyCode;\n    if (e.altKey && !e.ctrlKey || e.metaKey ||\n    // Function keys don't generate text\n    keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n      return false;\n    }\n\n    // The following keys are quite harmless, even in combination with\n    // CTRL, ALT or SHIFT.\n    switch (keyCode) {\n      case KeyCode.ALT:\n      case KeyCode.CAPS_LOCK:\n      case KeyCode.CONTEXT_MENU:\n      case KeyCode.CTRL:\n      case KeyCode.DOWN:\n      case KeyCode.END:\n      case KeyCode.ESC:\n      case KeyCode.HOME:\n      case KeyCode.INSERT:\n      case KeyCode.LEFT:\n      case KeyCode.MAC_FF_META:\n      case KeyCode.META:\n      case KeyCode.NUMLOCK:\n      case KeyCode.NUM_CENTER:\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAUSE:\n      case KeyCode.PRINT_SCREEN:\n      case KeyCode.RIGHT:\n      case KeyCode.SHIFT:\n      case KeyCode.UP:\n      case KeyCode.WIN_KEY:\n      case KeyCode.WIN_KEY_RIGHT:\n        return false;\n      default:\n        return true;\n    }\n  },\n  /**\n   * whether character is entered.\n   */\n  isCharacterKey: function isCharacterKey(keyCode) {\n    if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n      return true;\n    }\n    if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n      return true;\n    }\n    if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n      return true;\n    }\n\n    // Safari sends zero key code for non-latin characters.\n    if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n      return true;\n    }\n    switch (keyCode) {\n      case KeyCode.SPACE:\n      case KeyCode.QUESTION_MARK:\n      case KeyCode.NUM_PLUS:\n      case KeyCode.NUM_MINUS:\n      case KeyCode.NUM_PERIOD:\n      case KeyCode.NUM_DIVISION:\n      case KeyCode.SEMICOLON:\n      case KeyCode.DASH:\n      case KeyCode.EQUALS:\n      case KeyCode.COMMA:\n      case KeyCode.PERIOD:\n      case KeyCode.SLASH:\n      case KeyCode.APOSTROPHE:\n      case KeyCode.SINGLE_QUOTE:\n      case KeyCode.OPEN_SQUARE_BRACKET:\n      case KeyCode.BACKSLASH:\n      case KeyCode.CLOSE_SQUARE_BRACKET:\n        return true;\n      default:\n        return false;\n    }\n  }\n};\nexport default KeyCode;","import * as React from 'react';\nvar SliderContext = /*#__PURE__*/React.createContext({\n  min: 0,\n  max: 0,\n  direction: 'ltr',\n  step: 1,\n  includedStart: 0,\n  includedEnd: 0,\n  tabIndex: 0,\n  keyboard: true,\n  styles: {},\n  classNames: {}\n});\nexport default SliderContext;\n/** @private NOT PROMISE AVAILABLE. DO NOT USE IN PRODUCTION. */\nexport var UnstableContext = /*#__PURE__*/React.createContext({});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"value\", \"valueIndex\", \"onStartMove\", \"onDelete\", \"style\", \"render\", \"dragging\", \"draggingDelete\", \"onOffsetChange\", \"onChangeComplete\", \"onFocus\", \"onMouseEnter\"];\nimport cls from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle, getIndex } from \"../util\";\nvar Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    value = props.value,\n    valueIndex = props.valueIndex,\n    onStartMove = props.onStartMove,\n    onDelete = props.onDelete,\n    style = props.style,\n    render = props.render,\n    dragging = props.dragging,\n    draggingDelete = props.draggingDelete,\n    onOffsetChange = props.onOffsetChange,\n    onChangeComplete = props.onChangeComplete,\n    onFocus = props.onFocus,\n    onMouseEnter = props.onMouseEnter,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var _React$useContext = React.useContext(SliderContext),\n    min = _React$useContext.min,\n    max = _React$useContext.max,\n    direction = _React$useContext.direction,\n    disabled = _React$useContext.disabled,\n    keyboard = _React$useContext.keyboard,\n    range = _React$useContext.range,\n    tabIndex = _React$useContext.tabIndex,\n    ariaLabelForHandle = _React$useContext.ariaLabelForHandle,\n    ariaLabelledByForHandle = _React$useContext.ariaLabelledByForHandle,\n    ariaRequired = _React$useContext.ariaRequired,\n    ariaValueTextFormatterForHandle = _React$useContext.ariaValueTextFormatterForHandle,\n    styles = _React$useContext.styles,\n    classNames = _React$useContext.classNames;\n  var handlePrefixCls = \"\".concat(prefixCls, \"-handle\");\n\n  // ============================ Events ============================\n  var onInternalStartMove = function onInternalStartMove(e) {\n    if (!disabled) {\n      onStartMove(e, valueIndex);\n    }\n  };\n  var onInternalFocus = function onInternalFocus(e) {\n    onFocus === null || onFocus === void 0 || onFocus(e, valueIndex);\n  };\n  var onInternalMouseEnter = function onInternalMouseEnter(e) {\n    onMouseEnter(e, valueIndex);\n  };\n\n  // =========================== Keyboard ===========================\n  var onKeyDown = function onKeyDown(e) {\n    if (!disabled && keyboard) {\n      var offset = null;\n\n      // Change the value\n      switch (e.which || e.keyCode) {\n        case KeyCode.LEFT:\n          offset = direction === 'ltr' || direction === 'btt' ? -1 : 1;\n          break;\n        case KeyCode.RIGHT:\n          offset = direction === 'ltr' || direction === 'btt' ? 1 : -1;\n          break;\n\n        // Up is plus\n        case KeyCode.UP:\n          offset = direction !== 'ttb' ? 1 : -1;\n          break;\n\n        // Down is minus\n        case KeyCode.DOWN:\n          offset = direction !== 'ttb' ? -1 : 1;\n          break;\n        case KeyCode.HOME:\n          offset = 'min';\n          break;\n        case KeyCode.END:\n          offset = 'max';\n          break;\n        case KeyCode.PAGE_UP:\n          offset = 2;\n          break;\n        case KeyCode.PAGE_DOWN:\n          offset = -2;\n          break;\n        case KeyCode.BACKSPACE:\n        case KeyCode.DELETE:\n          onDelete(valueIndex);\n          break;\n      }\n      if (offset !== null) {\n        e.preventDefault();\n        onOffsetChange(offset, valueIndex);\n      }\n    }\n  };\n  var handleKeyUp = function handleKeyUp(e) {\n    switch (e.which || e.keyCode) {\n      case KeyCode.LEFT:\n      case KeyCode.RIGHT:\n      case KeyCode.UP:\n      case KeyCode.DOWN:\n      case KeyCode.HOME:\n      case KeyCode.END:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAGE_DOWN:\n        onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete();\n        break;\n    }\n  };\n\n  // ============================ Offset ============================\n  var positionStyle = getDirectionStyle(direction, value, min, max);\n\n  // ============================ Render ============================\n  var divProps = {};\n  if (valueIndex !== null) {\n    var _getIndex;\n    divProps = {\n      tabIndex: disabled ? null : getIndex(tabIndex, valueIndex),\n      role: 'slider',\n      'aria-valuemin': min,\n      'aria-valuemax': max,\n      'aria-valuenow': value,\n      'aria-disabled': disabled,\n      'aria-label': getIndex(ariaLabelForHandle, valueIndex),\n      'aria-labelledby': getIndex(ariaLabelledByForHandle, valueIndex),\n      'aria-required': getIndex(ariaRequired, valueIndex),\n      'aria-valuetext': (_getIndex = getIndex(ariaValueTextFormatterForHandle, valueIndex)) === null || _getIndex === void 0 ? void 0 : _getIndex(value),\n      'aria-orientation': direction === 'ltr' || direction === 'rtl' ? 'horizontal' : 'vertical',\n      onMouseDown: onInternalStartMove,\n      onTouchStart: onInternalStartMove,\n      onFocus: onInternalFocus,\n      onMouseEnter: onInternalMouseEnter,\n      onKeyDown: onKeyDown,\n      onKeyUp: handleKeyUp\n    };\n  }\n  var handleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref,\n    className: cls(handlePrefixCls, _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(handlePrefixCls, \"-\").concat(valueIndex + 1), valueIndex !== null && range), \"\".concat(handlePrefixCls, \"-dragging\"), dragging), \"\".concat(handlePrefixCls, \"-dragging-delete\"), draggingDelete), classNames.handle),\n    style: _objectSpread(_objectSpread(_objectSpread({}, positionStyle), style), styles.handle)\n  }, divProps, restProps));\n\n  // Customize\n  if (render) {\n    handleNode = render(handleNode, {\n      index: valueIndex,\n      prefixCls: prefixCls,\n      value: value,\n      dragging: dragging,\n      draggingDelete: draggingDelete\n    });\n  }\n  return handleNode;\n});\nif (process.env.NODE_ENV !== 'production') {\n  Handle.displayName = 'Handle';\n}\nexport default Handle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"style\", \"onStartMove\", \"onOffsetChange\", \"values\", \"handleRender\", \"activeHandleRender\", \"draggingIndex\", \"draggingDelete\", \"onFocus\"];\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport { getIndex } from \"../util\";\nimport Handle from \"./Handle\";\nvar Handles = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    onStartMove = props.onStartMove,\n    onOffsetChange = props.onOffsetChange,\n    values = props.values,\n    handleRender = props.handleRender,\n    activeHandleRender = props.activeHandleRender,\n    draggingIndex = props.draggingIndex,\n    draggingDelete = props.draggingDelete,\n    onFocus = props.onFocus,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var handlesRef = React.useRef({});\n\n  // =========================== Active ===========================\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    activeVisible = _React$useState2[0],\n    setActiveVisible = _React$useState2[1];\n  var _React$useState3 = React.useState(-1),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    activeIndex = _React$useState4[0],\n    setActiveIndex = _React$useState4[1];\n  var onActive = function onActive(index) {\n    setActiveIndex(index);\n    setActiveVisible(true);\n  };\n  var onHandleFocus = function onHandleFocus(e, index) {\n    onActive(index);\n    onFocus === null || onFocus === void 0 || onFocus(e);\n  };\n  var onHandleMouseEnter = function onHandleMouseEnter(e, index) {\n    onActive(index);\n  };\n\n  // =========================== Render ===========================\n  React.useImperativeHandle(ref, function () {\n    return {\n      focus: function focus(index) {\n        var _handlesRef$current$i;\n        (_handlesRef$current$i = handlesRef.current[index]) === null || _handlesRef$current$i === void 0 || _handlesRef$current$i.focus();\n      },\n      hideHelp: function hideHelp() {\n        flushSync(function () {\n          setActiveVisible(false);\n        });\n      }\n    };\n  });\n\n  // =========================== Render ===========================\n  // Handle Props\n  var handleProps = _objectSpread({\n    prefixCls: prefixCls,\n    onStartMove: onStartMove,\n    onOffsetChange: onOffsetChange,\n    render: handleRender,\n    onFocus: onHandleFocus,\n    onMouseEnter: onHandleMouseEnter\n  }, restProps);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, values.map(function (value, index) {\n    var dragging = draggingIndex === index;\n    return /*#__PURE__*/React.createElement(Handle, _extends({\n      ref: function ref(node) {\n        if (!node) {\n          delete handlesRef.current[index];\n        } else {\n          handlesRef.current[index] = node;\n        }\n      },\n      dragging: dragging,\n      draggingDelete: dragging && draggingDelete,\n      style: getIndex(style, index),\n      key: index,\n      value: value,\n      valueIndex: index\n    }, handleProps));\n  }), activeHandleRender && activeVisible && /*#__PURE__*/React.createElement(Handle, _extends({\n    key: \"a11y\"\n  }, handleProps, {\n    value: values[activeIndex],\n    valueIndex: null,\n    dragging: draggingIndex !== -1,\n    draggingDelete: draggingDelete,\n    render: activeHandleRender,\n    style: {\n      pointerEvents: 'none'\n    },\n    tabIndex: null,\n    \"aria-hidden\": true\n  })));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Handles.displayName = 'Handles';\n}\nexport default Handles;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle } from \"../util\";\nvar Mark = function Mark(props) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    children = props.children,\n    value = props.value,\n    _onClick = props.onClick;\n  var _React$useContext = React.useContext(SliderContext),\n    min = _React$useContext.min,\n    max = _React$useContext.max,\n    direction = _React$useContext.direction,\n    includedStart = _React$useContext.includedStart,\n    includedEnd = _React$useContext.includedEnd,\n    included = _React$useContext.included;\n  var textCls = \"\".concat(prefixCls, \"-text\");\n\n  // ============================ Offset ============================\n  var positionStyle = getDirectionStyle(direction, value, min, max);\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(textCls, _defineProperty({}, \"\".concat(textCls, \"-active\"), included && includedStart <= value && value <= includedEnd)),\n    style: _objectSpread(_objectSpread({}, positionStyle), style),\n    onMouseDown: function onMouseDown(e) {\n      e.stopPropagation();\n    },\n    onClick: function onClick() {\n      _onClick(value);\n    }\n  }, children);\n};\nexport default Mark;","import * as React from 'react';\nimport Mark from \"./Mark\";\nvar Marks = function Marks(props) {\n  var prefixCls = props.prefixCls,\n    marks = props.marks,\n    onClick = props.onClick;\n  var markPrefixCls = \"\".concat(prefixCls, \"-mark\");\n\n  // Not render mark if empty\n  if (!marks.length) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: markPrefixCls\n  }, marks.map(function (_ref) {\n    var value = _ref.value,\n      style = _ref.style,\n      label = _ref.label;\n    return /*#__PURE__*/React.createElement(Mark, {\n      key: value,\n      prefixCls: markPrefixCls,\n      style: style,\n      value: value,\n      onClick: onClick\n    }, label);\n  }));\n};\nexport default Marks;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getDirectionStyle } from \"../util\";\nvar Dot = function Dot(props) {\n  var prefixCls = props.prefixCls,\n    value = props.value,\n    style = props.style,\n    activeStyle = props.activeStyle;\n  var _React$useContext = React.useContext(SliderContext),\n    min = _React$useContext.min,\n    max = _React$useContext.max,\n    direction = _React$useContext.direction,\n    included = _React$useContext.included,\n    includedStart = _React$useContext.includedStart,\n    includedEnd = _React$useContext.includedEnd;\n  var dotClassName = \"\".concat(prefixCls, \"-dot\");\n  var active = included && includedStart <= value && value <= includedEnd;\n\n  // ============================ Offset ============================\n  var mergedStyle = _objectSpread(_objectSpread({}, getDirectionStyle(direction, value, min, max)), typeof style === 'function' ? style(value) : style);\n  if (active) {\n    mergedStyle = _objectSpread(_objectSpread({}, mergedStyle), typeof activeStyle === 'function' ? activeStyle(value) : activeStyle);\n  }\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(dotClassName, _defineProperty({}, \"\".concat(dotClassName, \"-active\"), active)),\n    style: mergedStyle\n  });\n};\nexport default Dot;","import * as React from 'react';\nimport SliderContext from \"../context\";\nimport Dot from \"./Dot\";\nvar Steps = function Steps(props) {\n  var prefixCls = props.prefixCls,\n    marks = props.marks,\n    dots = props.dots,\n    style = props.style,\n    activeStyle = props.activeStyle;\n  var _React$useContext = React.useContext(SliderContext),\n    min = _React$useContext.min,\n    max = _React$useContext.max,\n    step = _React$useContext.step;\n  var stepDots = React.useMemo(function () {\n    var dotSet = new Set();\n\n    // Add marks\n    marks.forEach(function (mark) {\n      dotSet.add(mark.value);\n    });\n\n    // Fill dots\n    if (dots && step !== null) {\n      var current = min;\n      while (current <= max) {\n        dotSet.add(current);\n        current += step;\n      }\n    }\n    return Array.from(dotSet);\n  }, [min, max, step, dots, marks]);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-step\")\n  }, stepDots.map(function (dotValue) {\n    return /*#__PURE__*/React.createElement(Dot, {\n      prefixCls: prefixCls,\n      key: dotValue,\n      value: dotValue,\n      style: style,\n      activeStyle: activeStyle\n    });\n  }));\n};\nexport default Steps;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport cls from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getOffset } from \"../util\";\nvar Track = function Track(props) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    start = props.start,\n    end = props.end,\n    index = props.index,\n    onStartMove = props.onStartMove,\n    replaceCls = props.replaceCls;\n  var _React$useContext = React.useContext(SliderContext),\n    direction = _React$useContext.direction,\n    min = _React$useContext.min,\n    max = _React$useContext.max,\n    disabled = _React$useContext.disabled,\n    range = _React$useContext.range,\n    classNames = _React$useContext.classNames;\n  var trackPrefixCls = \"\".concat(prefixCls, \"-track\");\n  var offsetStart = getOffset(start, min, max);\n  var offsetEnd = getOffset(end, min, max);\n\n  // ============================ Events ============================\n  var onInternalStartMove = function onInternalStartMove(e) {\n    if (!disabled && onStartMove) {\n      onStartMove(e, -1);\n    }\n  };\n\n  // ============================ Render ============================\n  var positionStyle = {};\n  switch (direction) {\n    case 'rtl':\n      positionStyle.right = \"\".concat(offsetStart * 100, \"%\");\n      positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n      break;\n    case 'btt':\n      positionStyle.bottom = \"\".concat(offsetStart * 100, \"%\");\n      positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n      break;\n    case 'ttb':\n      positionStyle.top = \"\".concat(offsetStart * 100, \"%\");\n      positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n      break;\n    default:\n      positionStyle.left = \"\".concat(offsetStart * 100, \"%\");\n      positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n  }\n  var className = replaceCls || cls(trackPrefixCls, _defineProperty(_defineProperty({}, \"\".concat(trackPrefixCls, \"-\").concat(index + 1), index !== null && range), \"\".concat(prefixCls, \"-track-draggable\"), onStartMove), classNames.track);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: className,\n    style: _objectSpread(_objectSpread({}, positionStyle), style),\n    onMouseDown: onInternalStartMove,\n    onTouchStart: onInternalStartMove\n  });\n};\nexport default Track;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport cls from 'classnames';\nimport * as React from 'react';\nimport SliderContext from \"../context\";\nimport { getIndex } from \"../util\";\nimport Track from \"./Track\";\nvar Tracks = function Tracks(props) {\n  var prefixCls = props.prefixCls,\n    style = props.style,\n    values = props.values,\n    startPoint = props.startPoint,\n    onStartMove = props.onStartMove;\n  var _React$useContext = React.useContext(SliderContext),\n    included = _React$useContext.included,\n    range = _React$useContext.range,\n    min = _React$useContext.min,\n    styles = _React$useContext.styles,\n    classNames = _React$useContext.classNames;\n\n  // =========================== List ===========================\n  var trackList = React.useMemo(function () {\n    if (!range) {\n      // null value do not have track\n      if (values.length === 0) {\n        return [];\n      }\n      var startValue = startPoint !== null && startPoint !== void 0 ? startPoint : min;\n      var endValue = values[0];\n      return [{\n        start: Math.min(startValue, endValue),\n        end: Math.max(startValue, endValue)\n      }];\n    }\n\n    // Multiple\n    var list = [];\n    for (var i = 0; i < values.length - 1; i += 1) {\n      list.push({\n        start: values[i],\n        end: values[i + 1]\n      });\n    }\n    return list;\n  }, [values, range, startPoint, min]);\n  if (!included) {\n    return null;\n  }\n\n  // ========================== Render ==========================\n  var tracksNode = trackList !== null && trackList !== void 0 && trackList.length && (classNames.tracks || styles.tracks) ? /*#__PURE__*/React.createElement(Track, {\n    index: null,\n    prefixCls: prefixCls,\n    start: trackList[0].start,\n    end: trackList[trackList.length - 1].end,\n    replaceCls: cls(classNames.tracks, \"\".concat(prefixCls, \"-tracks\")),\n    style: styles.tracks\n  }) : null;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, tracksNode, trackList.map(function (_ref, index) {\n    var start = _ref.start,\n      end = _ref.end;\n    return /*#__PURE__*/React.createElement(Track, {\n      index: index,\n      prefixCls: prefixCls,\n      style: _objectSpread(_objectSpread({}, getIndex(style, index)), styles.track),\n      start: start,\n      end: end,\n      key: index,\n      onStartMove: onStartMove\n    });\n  }));\n};\nexport default Tracks;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { UnstableContext } from \"../context\";\n/** Drag to delete offset. It's a user experience number for dragging out */\nvar REMOVE_DIST = 130;\nfunction getPosition(e) {\n  var obj = 'targetTouches' in e ? e.targetTouches[0] : e;\n  return {\n    pageX: obj.pageX,\n    pageY: obj.pageY\n  };\n}\nfunction useDrag(containerRef, direction, rawValues, min, max, formatValue, triggerChange, finishChange, offsetValues, editable, minCount) {\n  var _React$useState = React.useState(null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    draggingValue = _React$useState2[0],\n    setDraggingValue = _React$useState2[1];\n  var _React$useState3 = React.useState(-1),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    draggingIndex = _React$useState4[0],\n    setDraggingIndex = _React$useState4[1];\n  var _React$useState5 = React.useState(false),\n    _React$useState6 = _slicedToArray(_React$useState5, 2),\n    draggingDelete = _React$useState6[0],\n    setDraggingDelete = _React$useState6[1];\n  var _React$useState7 = React.useState(rawValues),\n    _React$useState8 = _slicedToArray(_React$useState7, 2),\n    cacheValues = _React$useState8[0],\n    setCacheValues = _React$useState8[1];\n  var _React$useState9 = React.useState(rawValues),\n    _React$useState10 = _slicedToArray(_React$useState9, 2),\n    originValues = _React$useState10[0],\n    setOriginValues = _React$useState10[1];\n  var mouseMoveEventRef = React.useRef(null);\n  var mouseUpEventRef = React.useRef(null);\n  var touchEventTargetRef = React.useRef(null);\n  var _React$useContext = React.useContext(UnstableContext),\n    onDragStart = _React$useContext.onDragStart,\n    onDragChange = _React$useContext.onDragChange;\n  useLayoutEffect(function () {\n    if (draggingIndex === -1) {\n      setCacheValues(rawValues);\n    }\n  }, [rawValues, draggingIndex]);\n\n  // Clean up event\n  React.useEffect(function () {\n    return function () {\n      document.removeEventListener('mousemove', mouseMoveEventRef.current);\n      document.removeEventListener('mouseup', mouseUpEventRef.current);\n      if (touchEventTargetRef.current) {\n        touchEventTargetRef.current.removeEventListener('touchmove', mouseMoveEventRef.current);\n        touchEventTargetRef.current.removeEventListener('touchend', mouseUpEventRef.current);\n      }\n    };\n  }, []);\n  var flushValues = function flushValues(nextValues, nextValue, deleteMark) {\n    // Perf: Only update state when value changed\n    if (nextValue !== undefined) {\n      setDraggingValue(nextValue);\n    }\n    setCacheValues(nextValues);\n    var changeValues = nextValues;\n    if (deleteMark) {\n      changeValues = nextValues.filter(function (_, i) {\n        return i !== draggingIndex;\n      });\n    }\n    triggerChange(changeValues);\n    if (onDragChange) {\n      onDragChange({\n        rawValues: nextValues,\n        deleteIndex: deleteMark ? draggingIndex : -1,\n        draggingIndex: draggingIndex,\n        draggingValue: nextValue\n      });\n    }\n  };\n  var updateCacheValue = useEvent(function (valueIndex, offsetPercent, deleteMark) {\n    if (valueIndex === -1) {\n      // >>>> Dragging on the track\n      var startValue = originValues[0];\n      var endValue = originValues[originValues.length - 1];\n      var maxStartOffset = min - startValue;\n      var maxEndOffset = max - endValue;\n\n      // Get valid offset\n      var offset = offsetPercent * (max - min);\n      offset = Math.max(offset, maxStartOffset);\n      offset = Math.min(offset, maxEndOffset);\n\n      // Use first value to revert back of valid offset (like steps marks)\n      var formatStartValue = formatValue(startValue + offset);\n      offset = formatStartValue - startValue;\n      var cloneCacheValues = originValues.map(function (val) {\n        return val + offset;\n      });\n      flushValues(cloneCacheValues);\n    } else {\n      // >>>> Dragging on the handle\n      var offsetDist = (max - min) * offsetPercent;\n\n      // Always start with the valueIndex origin value\n      var cloneValues = _toConsumableArray(cacheValues);\n      cloneValues[valueIndex] = originValues[valueIndex];\n      var next = offsetValues(cloneValues, offsetDist, valueIndex, 'dist');\n      flushValues(next.values, next.value, deleteMark);\n    }\n  });\n  var onStartMove = function onStartMove(e, valueIndex, startValues) {\n    e.stopPropagation();\n\n    // 如果是点击 track 触发的，需要传入变化后的初始值，而不能直接用 rawValues\n    var initialValues = startValues || rawValues;\n    var originValue = initialValues[valueIndex];\n    setDraggingIndex(valueIndex);\n    setDraggingValue(originValue);\n    setOriginValues(initialValues);\n    setCacheValues(initialValues);\n    setDraggingDelete(false);\n    var _getPosition = getPosition(e),\n      startX = _getPosition.pageX,\n      startY = _getPosition.pageY;\n\n    // We declare it here since closure can't get outer latest value\n    var deleteMark = false;\n\n    // Internal trigger event\n    if (onDragStart) {\n      onDragStart({\n        rawValues: initialValues,\n        draggingIndex: valueIndex,\n        draggingValue: originValue\n      });\n    }\n\n    // Moving\n    var onMouseMove = function onMouseMove(event) {\n      event.preventDefault();\n      var _getPosition2 = getPosition(event),\n        moveX = _getPosition2.pageX,\n        moveY = _getPosition2.pageY;\n      var offsetX = moveX - startX;\n      var offsetY = moveY - startY;\n      var _containerRef$current = containerRef.current.getBoundingClientRect(),\n        width = _containerRef$current.width,\n        height = _containerRef$current.height;\n      var offSetPercent;\n      var removeDist;\n      switch (direction) {\n        case 'btt':\n          offSetPercent = -offsetY / height;\n          removeDist = offsetX;\n          break;\n        case 'ttb':\n          offSetPercent = offsetY / height;\n          removeDist = offsetX;\n          break;\n        case 'rtl':\n          offSetPercent = -offsetX / width;\n          removeDist = offsetY;\n          break;\n        default:\n          offSetPercent = offsetX / width;\n          removeDist = offsetY;\n      }\n\n      // Check if need mark remove\n      deleteMark = editable ? Math.abs(removeDist) > REMOVE_DIST && minCount < cacheValues.length : false;\n      setDraggingDelete(deleteMark);\n      updateCacheValue(valueIndex, offSetPercent, deleteMark);\n    };\n\n    // End\n    var onMouseUp = function onMouseUp(event) {\n      event.preventDefault();\n      document.removeEventListener('mouseup', onMouseUp);\n      document.removeEventListener('mousemove', onMouseMove);\n      if (touchEventTargetRef.current) {\n        touchEventTargetRef.current.removeEventListener('touchmove', mouseMoveEventRef.current);\n        touchEventTargetRef.current.removeEventListener('touchend', mouseUpEventRef.current);\n      }\n      mouseMoveEventRef.current = null;\n      mouseUpEventRef.current = null;\n      touchEventTargetRef.current = null;\n      finishChange(deleteMark);\n      setDraggingIndex(-1);\n      setDraggingDelete(false);\n    };\n    document.addEventListener('mouseup', onMouseUp);\n    document.addEventListener('mousemove', onMouseMove);\n    e.currentTarget.addEventListener('touchend', onMouseUp);\n    e.currentTarget.addEventListener('touchmove', onMouseMove);\n    mouseMoveEventRef.current = onMouseMove;\n    mouseUpEventRef.current = onMouseUp;\n    touchEventTargetRef.current = e.currentTarget;\n  };\n\n  // Only return cache value when it mapping with rawValues\n  var returnValues = React.useMemo(function () {\n    var sourceValues = _toConsumableArray(rawValues).sort(function (a, b) {\n      return a - b;\n    });\n    var targetValues = _toConsumableArray(cacheValues).sort(function (a, b) {\n      return a - b;\n    });\n    var counts = {};\n    targetValues.forEach(function (val) {\n      counts[val] = (counts[val] || 0) + 1;\n    });\n    sourceValues.forEach(function (val) {\n      counts[val] = (counts[val] || 0) - 1;\n    });\n    var maxDiffCount = editable ? 1 : 0;\n    var diffCount = Object.values(counts).reduce(function (prev, next) {\n      return prev + Math.abs(next);\n    }, 0);\n    return diffCount <= maxDiffCount ? cacheValues : rawValues;\n  }, [rawValues, cacheValues, editable]);\n  return [draggingIndex, draggingValue, draggingDelete, returnValues, onStartMove];\n}\nexport default useDrag;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\n\n/** Format the value in the range of [min, max] */\n\n/** Format value align with step */\n\n/** Format value align with step & marks */\n\nexport default function useOffset(min, max, step, markList, allowCross, pushable) {\n  var formatRangeValue = React.useCallback(function (val) {\n    return Math.max(min, Math.min(max, val));\n  }, [min, max]);\n  var formatStepValue = React.useCallback(function (val) {\n    if (step !== null) {\n      var stepValue = min + Math.round((formatRangeValue(val) - min) / step) * step;\n\n      // Cut number in case to be like 0.30000000000000004\n      var getDecimal = function getDecimal(num) {\n        return (String(num).split('.')[1] || '').length;\n      };\n      var maxDecimal = Math.max(getDecimal(step), getDecimal(max), getDecimal(min));\n      var fixedValue = Number(stepValue.toFixed(maxDecimal));\n      return min <= fixedValue && fixedValue <= max ? fixedValue : null;\n    }\n    return null;\n  }, [step, min, max, formatRangeValue]);\n  var formatValue = React.useCallback(function (val) {\n    var formatNextValue = formatRangeValue(val);\n\n    // List align values\n    var alignValues = markList.map(function (mark) {\n      return mark.value;\n    });\n    if (step !== null) {\n      alignValues.push(formatStepValue(val));\n    }\n\n    // min & max\n    alignValues.push(min, max);\n\n    // Align with marks\n    var closeValue = alignValues[0];\n    var closeDist = max - min;\n    alignValues.forEach(function (alignValue) {\n      var dist = Math.abs(formatNextValue - alignValue);\n      if (dist <= closeDist) {\n        closeValue = alignValue;\n        closeDist = dist;\n      }\n    });\n    return closeValue;\n  }, [min, max, markList, step, formatRangeValue, formatStepValue]);\n\n  // ========================== Offset ==========================\n  // Single Value\n  var offsetValue = function offsetValue(values, offset, valueIndex) {\n    var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n    if (typeof offset === 'number') {\n      var nextValue;\n      var originValue = values[valueIndex];\n\n      // Only used for `dist` mode\n      var targetDistValue = originValue + offset;\n\n      // Compare next step value & mark value which is best match\n      var potentialValues = [];\n      markList.forEach(function (mark) {\n        potentialValues.push(mark.value);\n      });\n\n      // Min & Max\n      potentialValues.push(min, max);\n\n      // In case origin value is align with mark but not with step\n      potentialValues.push(formatStepValue(originValue));\n\n      // Put offset step value also\n      var sign = offset > 0 ? 1 : -1;\n      if (mode === 'unit') {\n        potentialValues.push(formatStepValue(originValue + sign * step));\n      } else {\n        potentialValues.push(formatStepValue(targetDistValue));\n      }\n\n      // Find close one\n      potentialValues = potentialValues.filter(function (val) {\n        return val !== null;\n      })\n      // Remove reverse value\n      .filter(function (val) {\n        return offset < 0 ? val <= originValue : val >= originValue;\n      });\n      if (mode === 'unit') {\n        // `unit` mode can not contain itself\n        potentialValues = potentialValues.filter(function (val) {\n          return val !== originValue;\n        });\n      }\n      var compareValue = mode === 'unit' ? originValue : targetDistValue;\n      nextValue = potentialValues[0];\n      var valueDist = Math.abs(nextValue - compareValue);\n      potentialValues.forEach(function (potentialValue) {\n        var dist = Math.abs(potentialValue - compareValue);\n        if (dist < valueDist) {\n          nextValue = potentialValue;\n          valueDist = dist;\n        }\n      });\n\n      // Out of range will back to range\n      if (nextValue === undefined) {\n        return offset < 0 ? min : max;\n      }\n\n      // `dist` mode\n      if (mode === 'dist') {\n        return nextValue;\n      }\n\n      // `unit` mode may need another round\n      if (Math.abs(offset) > 1) {\n        var cloneValues = _toConsumableArray(values);\n        cloneValues[valueIndex] = nextValue;\n        return offsetValue(cloneValues, offset - sign, valueIndex, mode);\n      }\n      return nextValue;\n    } else if (offset === 'min') {\n      return min;\n    } else if (offset === 'max') {\n      return max;\n    }\n  };\n\n  /** Same as `offsetValue` but return `changed` mark to tell value changed */\n  var offsetChangedValue = function offsetChangedValue(values, offset, valueIndex) {\n    var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n    var originValue = values[valueIndex];\n    var nextValue = offsetValue(values, offset, valueIndex, mode);\n    return {\n      value: nextValue,\n      changed: nextValue !== originValue\n    };\n  };\n  var needPush = function needPush(dist) {\n    return pushable === null && dist === 0 || typeof pushable === 'number' && dist < pushable;\n  };\n\n  // Values\n  var offsetValues = function offsetValues(values, offset, valueIndex) {\n    var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n    var nextValues = values.map(formatValue);\n    var originValue = nextValues[valueIndex];\n    var nextValue = offsetValue(nextValues, offset, valueIndex, mode);\n    nextValues[valueIndex] = nextValue;\n    if (allowCross === false) {\n      // >>>>> Allow Cross\n      var pushNum = pushable || 0;\n\n      // ============ AllowCross ===============\n      if (valueIndex > 0 && nextValues[valueIndex - 1] !== originValue) {\n        nextValues[valueIndex] = Math.max(nextValues[valueIndex], nextValues[valueIndex - 1] + pushNum);\n      }\n      if (valueIndex < nextValues.length - 1 && nextValues[valueIndex + 1] !== originValue) {\n        nextValues[valueIndex] = Math.min(nextValues[valueIndex], nextValues[valueIndex + 1] - pushNum);\n      }\n    } else if (typeof pushable === 'number' || pushable === null) {\n      // >>>>> Pushable\n      // =============== Push ==================\n\n      // >>>>>> Basic push\n      // End values\n      for (var i = valueIndex + 1; i < nextValues.length; i += 1) {\n        var changed = true;\n        while (needPush(nextValues[i] - nextValues[i - 1]) && changed) {\n          var _offsetChangedValue = offsetChangedValue(nextValues, 1, i);\n          nextValues[i] = _offsetChangedValue.value;\n          changed = _offsetChangedValue.changed;\n        }\n      }\n\n      // Start values\n      for (var _i = valueIndex; _i > 0; _i -= 1) {\n        var _changed = true;\n        while (needPush(nextValues[_i] - nextValues[_i - 1]) && _changed) {\n          var _offsetChangedValue2 = offsetChangedValue(nextValues, -1, _i - 1);\n          nextValues[_i - 1] = _offsetChangedValue2.value;\n          _changed = _offsetChangedValue2.changed;\n        }\n      }\n\n      // >>>>> Revert back to safe push range\n      // End to Start\n      for (var _i2 = nextValues.length - 1; _i2 > 0; _i2 -= 1) {\n        var _changed2 = true;\n        while (needPush(nextValues[_i2] - nextValues[_i2 - 1]) && _changed2) {\n          var _offsetChangedValue3 = offsetChangedValue(nextValues, -1, _i2 - 1);\n          nextValues[_i2 - 1] = _offsetChangedValue3.value;\n          _changed2 = _offsetChangedValue3.changed;\n        }\n      }\n\n      // Start to End\n      for (var _i3 = 0; _i3 < nextValues.length - 1; _i3 += 1) {\n        var _changed3 = true;\n        while (needPush(nextValues[_i3 + 1] - nextValues[_i3]) && _changed3) {\n          var _offsetChangedValue4 = offsetChangedValue(nextValues, 1, _i3 + 1);\n          nextValues[_i3 + 1] = _offsetChangedValue4.value;\n          _changed3 = _offsetChangedValue4.changed;\n        }\n      }\n    }\n    return {\n      value: nextValues[valueIndex],\n      values: nextValues\n    };\n  };\n  return [formatValue, offsetValues];\n}","import { warning } from \"rc-util/es/warning\";\nimport { useMemo } from 'react';\nexport default function useRange(range) {\n  return useMemo(function () {\n    if (range === true || !range) {\n      return [!!range, false, false, 0];\n    }\n    var editable = range.editable,\n      draggableTrack = range.draggableTrack,\n      minCount = range.minCount,\n      maxCount = range.maxCount;\n    if (process.env.NODE_ENV !== 'production') {\n      warning(!editable || !draggableTrack, '`editable` can not work with `draggableTrack`.');\n    }\n    return [true, editable, !editable && draggableTrack, minCount || 0, maxCount];\n  }, [range]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport cls from 'classnames';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isEqual from \"rc-util/es/isEqual\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport Handles from \"./Handles\";\nimport Marks from \"./Marks\";\nimport Steps from \"./Steps\";\nimport Tracks from \"./Tracks\";\nimport SliderContext from \"./context\";\nimport useDrag from \"./hooks/useDrag\";\nimport useOffset from \"./hooks/useOffset\";\nimport useRange from \"./hooks/useRange\";\n\n/**\n * New:\n * - click mark to update range value\n * - handleRender\n * - Fix handle with count not correct\n * - Fix pushable not work in some case\n * - No more FindDOMNode\n * - Move all position related style into inline style\n * - Key: up is plus, down is minus\n * - fix Key with step = null not align with marks\n * - Change range should not trigger onChange\n * - keyboard support pushable\n */\n\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-slider' : _props$prefixCls,\n    className = props.className,\n    style = props.style,\n    classNames = props.classNames,\n    styles = props.styles,\n    id = props.id,\n    _props$disabled = props.disabled,\n    disabled = _props$disabled === void 0 ? false : _props$disabled,\n    _props$keyboard = props.keyboard,\n    keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n    autoFocus = props.autoFocus,\n    onFocus = props.onFocus,\n    onBlur = props.onBlur,\n    _props$min = props.min,\n    min = _props$min === void 0 ? 0 : _props$min,\n    _props$max = props.max,\n    max = _props$max === void 0 ? 100 : _props$max,\n    _props$step = props.step,\n    step = _props$step === void 0 ? 1 : _props$step,\n    value = props.value,\n    defaultValue = props.defaultValue,\n    range = props.range,\n    count = props.count,\n    onChange = props.onChange,\n    onBeforeChange = props.onBeforeChange,\n    onAfterChange = props.onAfterChange,\n    onChangeComplete = props.onChangeComplete,\n    _props$allowCross = props.allowCross,\n    allowCross = _props$allowCross === void 0 ? true : _props$allowCross,\n    _props$pushable = props.pushable,\n    pushable = _props$pushable === void 0 ? false : _props$pushable,\n    reverse = props.reverse,\n    vertical = props.vertical,\n    _props$included = props.included,\n    included = _props$included === void 0 ? true : _props$included,\n    startPoint = props.startPoint,\n    trackStyle = props.trackStyle,\n    handleStyle = props.handleStyle,\n    railStyle = props.railStyle,\n    dotStyle = props.dotStyle,\n    activeDotStyle = props.activeDotStyle,\n    marks = props.marks,\n    dots = props.dots,\n    handleRender = props.handleRender,\n    activeHandleRender = props.activeHandleRender,\n    track = props.track,\n    _props$tabIndex = props.tabIndex,\n    tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n    ariaLabelForHandle = props.ariaLabelForHandle,\n    ariaLabelledByForHandle = props.ariaLabelledByForHandle,\n    ariaRequired = props.ariaRequired,\n    ariaValueTextFormatterForHandle = props.ariaValueTextFormatterForHandle;\n  var handlesRef = React.useRef(null);\n  var containerRef = React.useRef(null);\n  var direction = React.useMemo(function () {\n    if (vertical) {\n      return reverse ? 'ttb' : 'btt';\n    }\n    return reverse ? 'rtl' : 'ltr';\n  }, [reverse, vertical]);\n\n  // ============================ Range =============================\n  var _useRange = useRange(range),\n    _useRange2 = _slicedToArray(_useRange, 5),\n    rangeEnabled = _useRange2[0],\n    rangeEditable = _useRange2[1],\n    rangeDraggableTrack = _useRange2[2],\n    minCount = _useRange2[3],\n    maxCount = _useRange2[4];\n  var mergedMin = React.useMemo(function () {\n    return isFinite(min) ? min : 0;\n  }, [min]);\n  var mergedMax = React.useMemo(function () {\n    return isFinite(max) ? max : 100;\n  }, [max]);\n\n  // ============================= Step =============================\n  var mergedStep = React.useMemo(function () {\n    return step !== null && step <= 0 ? 1 : step;\n  }, [step]);\n\n  // ============================= Push =============================\n  var mergedPush = React.useMemo(function () {\n    if (typeof pushable === 'boolean') {\n      return pushable ? mergedStep : false;\n    }\n    return pushable >= 0 ? pushable : false;\n  }, [pushable, mergedStep]);\n\n  // ============================ Marks =============================\n  var markList = React.useMemo(function () {\n    return Object.keys(marks || {}).map(function (key) {\n      var mark = marks[key];\n      var markObj = {\n        value: Number(key)\n      };\n      if (mark && _typeof(mark) === 'object' && ! /*#__PURE__*/React.isValidElement(mark) && ('label' in mark || 'style' in mark)) {\n        markObj.style = mark.style;\n        markObj.label = mark.label;\n      } else {\n        markObj.label = mark;\n      }\n      return markObj;\n    }).filter(function (_ref) {\n      var label = _ref.label;\n      return label || typeof label === 'number';\n    }).sort(function (a, b) {\n      return a.value - b.value;\n    });\n  }, [marks]);\n\n  // ============================ Format ============================\n  var _useOffset = useOffset(mergedMin, mergedMax, mergedStep, markList, allowCross, mergedPush),\n    _useOffset2 = _slicedToArray(_useOffset, 2),\n    formatValue = _useOffset2[0],\n    offsetValues = _useOffset2[1];\n\n  // ============================ Values ============================\n  var _useMergedState = useMergedState(defaultValue, {\n      value: value\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedValue = _useMergedState2[0],\n    setValue = _useMergedState2[1];\n  var rawValues = React.useMemo(function () {\n    var valueList = mergedValue === null || mergedValue === undefined ? [] : Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n    var _valueList = _slicedToArray(valueList, 1),\n      _valueList$ = _valueList[0],\n      val0 = _valueList$ === void 0 ? mergedMin : _valueList$;\n    var returnValues = mergedValue === null ? [] : [val0];\n\n    // Format as range\n    if (rangeEnabled) {\n      returnValues = _toConsumableArray(valueList);\n\n      // When count provided or value is `undefined`, we fill values\n      if (count || mergedValue === undefined) {\n        var pointCount = count >= 0 ? count + 1 : 2;\n        returnValues = returnValues.slice(0, pointCount);\n\n        // Fill with count\n        while (returnValues.length < pointCount) {\n          var _returnValues;\n          returnValues.push((_returnValues = returnValues[returnValues.length - 1]) !== null && _returnValues !== void 0 ? _returnValues : mergedMin);\n        }\n      }\n      returnValues.sort(function (a, b) {\n        return a - b;\n      });\n    }\n\n    // Align in range\n    returnValues.forEach(function (val, index) {\n      returnValues[index] = formatValue(val);\n    });\n    return returnValues;\n  }, [mergedValue, rangeEnabled, mergedMin, count, formatValue]);\n\n  // =========================== onChange ===========================\n  var getTriggerValue = function getTriggerValue(triggerValues) {\n    return rangeEnabled ? triggerValues : triggerValues[0];\n  };\n  var triggerChange = useEvent(function (nextValues) {\n    // Order first\n    var cloneNextValues = _toConsumableArray(nextValues).sort(function (a, b) {\n      return a - b;\n    });\n\n    // Trigger event if needed\n    if (onChange && !isEqual(cloneNextValues, rawValues, true)) {\n      onChange(getTriggerValue(cloneNextValues));\n    }\n\n    // We set this later since it will re-render component immediately\n    setValue(cloneNextValues);\n  });\n  var finishChange = useEvent(function (draggingDelete) {\n    // Trigger from `useDrag` will tell if it's a delete action\n    if (draggingDelete) {\n      handlesRef.current.hideHelp();\n    }\n    var finishValue = getTriggerValue(rawValues);\n    onAfterChange === null || onAfterChange === void 0 || onAfterChange(finishValue);\n    warning(!onAfterChange, '[rc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.');\n    onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete(finishValue);\n  });\n  var onDelete = function onDelete(index) {\n    if (disabled || !rangeEditable || rawValues.length <= minCount) {\n      return;\n    }\n    var cloneNextValues = _toConsumableArray(rawValues);\n    cloneNextValues.splice(index, 1);\n    onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(cloneNextValues));\n    triggerChange(cloneNextValues);\n    var nextFocusIndex = Math.max(0, index - 1);\n    handlesRef.current.hideHelp();\n    handlesRef.current.focus(nextFocusIndex);\n  };\n  var _useDrag = useDrag(containerRef, direction, rawValues, mergedMin, mergedMax, formatValue, triggerChange, finishChange, offsetValues, rangeEditable, minCount),\n    _useDrag2 = _slicedToArray(_useDrag, 5),\n    draggingIndex = _useDrag2[0],\n    draggingValue = _useDrag2[1],\n    draggingDelete = _useDrag2[2],\n    cacheValues = _useDrag2[3],\n    onStartDrag = _useDrag2[4];\n\n  /**\n   * When `rangeEditable` will insert a new value in the values array.\n   * Else it will replace the value in the values array.\n   */\n  var changeToCloseValue = function changeToCloseValue(newValue, e) {\n    if (!disabled) {\n      // Create new values\n      var cloneNextValues = _toConsumableArray(rawValues);\n      var valueIndex = 0;\n      var valueBeforeIndex = 0; // Record the index which value < newValue\n      var valueDist = mergedMax - mergedMin;\n      rawValues.forEach(function (val, index) {\n        var dist = Math.abs(newValue - val);\n        if (dist <= valueDist) {\n          valueDist = dist;\n          valueIndex = index;\n        }\n        if (val < newValue) {\n          valueBeforeIndex = index;\n        }\n      });\n      var focusIndex = valueIndex;\n      if (rangeEditable && valueDist !== 0 && (!maxCount || rawValues.length < maxCount)) {\n        cloneNextValues.splice(valueBeforeIndex + 1, 0, newValue);\n        focusIndex = valueBeforeIndex + 1;\n      } else {\n        cloneNextValues[valueIndex] = newValue;\n      }\n\n      // Fill value to match default 2 (only when `rawValues` is empty)\n      if (rangeEnabled && !rawValues.length && count === undefined) {\n        cloneNextValues.push(newValue);\n      }\n      var nextValue = getTriggerValue(cloneNextValues);\n      onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(nextValue);\n      triggerChange(cloneNextValues);\n      if (e) {\n        var _document$activeEleme, _document$activeEleme2;\n        (_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 || (_document$activeEleme2 = _document$activeEleme.blur) === null || _document$activeEleme2 === void 0 || _document$activeEleme2.call(_document$activeEleme);\n        handlesRef.current.focus(focusIndex);\n        onStartDrag(e, focusIndex, cloneNextValues);\n      } else {\n        // https://github.com/ant-design/ant-design/issues/49997\n        onAfterChange === null || onAfterChange === void 0 || onAfterChange(nextValue);\n        warning(!onAfterChange, '[rc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.');\n        onChangeComplete === null || onChangeComplete === void 0 || onChangeComplete(nextValue);\n      }\n    }\n  };\n\n  // ============================ Click =============================\n  var onSliderMouseDown = function onSliderMouseDown(e) {\n    e.preventDefault();\n    var _containerRef$current = containerRef.current.getBoundingClientRect(),\n      width = _containerRef$current.width,\n      height = _containerRef$current.height,\n      left = _containerRef$current.left,\n      top = _containerRef$current.top,\n      bottom = _containerRef$current.bottom,\n      right = _containerRef$current.right;\n    var clientX = e.clientX,\n      clientY = e.clientY;\n    var percent;\n    switch (direction) {\n      case 'btt':\n        percent = (bottom - clientY) / height;\n        break;\n      case 'ttb':\n        percent = (clientY - top) / height;\n        break;\n      case 'rtl':\n        percent = (right - clientX) / width;\n        break;\n      default:\n        percent = (clientX - left) / width;\n    }\n    var nextValue = mergedMin + percent * (mergedMax - mergedMin);\n    changeToCloseValue(formatValue(nextValue), e);\n  };\n\n  // =========================== Keyboard ===========================\n  var _React$useState = React.useState(null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    keyboardValue = _React$useState2[0],\n    setKeyboardValue = _React$useState2[1];\n  var onHandleOffsetChange = function onHandleOffsetChange(offset, valueIndex) {\n    if (!disabled) {\n      var next = offsetValues(rawValues, offset, valueIndex);\n      onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(rawValues));\n      triggerChange(next.values);\n      setKeyboardValue(next.value);\n    }\n  };\n  React.useEffect(function () {\n    if (keyboardValue !== null) {\n      var valueIndex = rawValues.indexOf(keyboardValue);\n      if (valueIndex >= 0) {\n        handlesRef.current.focus(valueIndex);\n      }\n    }\n    setKeyboardValue(null);\n  }, [keyboardValue]);\n\n  // ============================= Drag =============================\n  var mergedDraggableTrack = React.useMemo(function () {\n    if (rangeDraggableTrack && mergedStep === null) {\n      if (process.env.NODE_ENV !== 'production') {\n        warning(false, '`draggableTrack` is not supported when `step` is `null`.');\n      }\n      return false;\n    }\n    return rangeDraggableTrack;\n  }, [rangeDraggableTrack, mergedStep]);\n  var onStartMove = useEvent(function (e, valueIndex) {\n    onStartDrag(e, valueIndex);\n    onBeforeChange === null || onBeforeChange === void 0 || onBeforeChange(getTriggerValue(rawValues));\n  });\n\n  // Auto focus for updated handle\n  var dragging = draggingIndex !== -1;\n  React.useEffect(function () {\n    if (!dragging) {\n      var valueIndex = rawValues.lastIndexOf(draggingValue);\n      handlesRef.current.focus(valueIndex);\n    }\n  }, [dragging]);\n\n  // =========================== Included ===========================\n  var sortedCacheValues = React.useMemo(function () {\n    return _toConsumableArray(cacheValues).sort(function (a, b) {\n      return a - b;\n    });\n  }, [cacheValues]);\n\n  // Provide a range values with included [min, max]\n  // Used for Track, Mark & Dot\n  var _React$useMemo = React.useMemo(function () {\n      if (!rangeEnabled) {\n        return [mergedMin, sortedCacheValues[0]];\n      }\n      return [sortedCacheValues[0], sortedCacheValues[sortedCacheValues.length - 1]];\n    }, [sortedCacheValues, rangeEnabled, mergedMin]),\n    _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n    includedStart = _React$useMemo2[0],\n    includedEnd = _React$useMemo2[1];\n\n  // ============================= Refs =============================\n  React.useImperativeHandle(ref, function () {\n    return {\n      focus: function focus() {\n        handlesRef.current.focus(0);\n      },\n      blur: function blur() {\n        var _containerRef$current2;\n        var _document = document,\n          activeElement = _document.activeElement;\n        if ((_containerRef$current2 = containerRef.current) !== null && _containerRef$current2 !== void 0 && _containerRef$current2.contains(activeElement)) {\n          activeElement === null || activeElement === void 0 || activeElement.blur();\n        }\n      }\n    };\n  });\n\n  // ========================== Auto Focus ==========================\n  React.useEffect(function () {\n    if (autoFocus) {\n      handlesRef.current.focus(0);\n    }\n  }, []);\n\n  // =========================== Context ============================\n  var context = React.useMemo(function () {\n    return {\n      min: mergedMin,\n      max: mergedMax,\n      direction: direction,\n      disabled: disabled,\n      keyboard: keyboard,\n      step: mergedStep,\n      included: included,\n      includedStart: includedStart,\n      includedEnd: includedEnd,\n      range: rangeEnabled,\n      tabIndex: tabIndex,\n      ariaLabelForHandle: ariaLabelForHandle,\n      ariaLabelledByForHandle: ariaLabelledByForHandle,\n      ariaRequired: ariaRequired,\n      ariaValueTextFormatterForHandle: ariaValueTextFormatterForHandle,\n      styles: styles || {},\n      classNames: classNames || {}\n    };\n  }, [mergedMin, mergedMax, direction, disabled, keyboard, mergedStep, included, includedStart, includedEnd, rangeEnabled, tabIndex, ariaLabelForHandle, ariaLabelledByForHandle, ariaRequired, ariaValueTextFormatterForHandle, styles, classNames]);\n\n  // ============================ Render ============================\n  return /*#__PURE__*/React.createElement(SliderContext.Provider, {\n    value: context\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: containerRef,\n    className: cls(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), \"\".concat(prefixCls, \"-vertical\"), vertical), \"\".concat(prefixCls, \"-horizontal\"), !vertical), \"\".concat(prefixCls, \"-with-marks\"), markList.length)),\n    style: style,\n    onMouseDown: onSliderMouseDown,\n    id: id\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: cls(\"\".concat(prefixCls, \"-rail\"), classNames === null || classNames === void 0 ? void 0 : classNames.rail),\n    style: _objectSpread(_objectSpread({}, railStyle), styles === null || styles === void 0 ? void 0 : styles.rail)\n  }), track !== false && /*#__PURE__*/React.createElement(Tracks, {\n    prefixCls: prefixCls,\n    style: trackStyle,\n    values: rawValues,\n    startPoint: startPoint,\n    onStartMove: mergedDraggableTrack ? onStartMove : undefined\n  }), /*#__PURE__*/React.createElement(Steps, {\n    prefixCls: prefixCls,\n    marks: markList,\n    dots: dots,\n    style: dotStyle,\n    activeStyle: activeDotStyle\n  }), /*#__PURE__*/React.createElement(Handles, {\n    ref: handlesRef,\n    prefixCls: prefixCls,\n    style: handleStyle,\n    values: cacheValues,\n    draggingIndex: draggingIndex,\n    draggingDelete: draggingDelete,\n    onStartMove: onStartMove,\n    onOffsetChange: onHandleOffsetChange,\n    onFocus: onFocus,\n    onBlur: onBlur,\n    handleRender: handleRender,\n    activeHandleRender: activeHandleRender,\n    onChangeComplete: finishChange,\n    onDelete: rangeEditable ? onDelete : undefined\n  }), /*#__PURE__*/React.createElement(Marks, {\n    prefixCls: prefixCls,\n    marks: markList,\n    onClick: changeToCloseValue\n  })));\n});\nif (process.env.NODE_ENV !== 'production') {\n  Slider.displayName = 'Slider';\n}\nexport default Slider;","import React from 'react';\r\nimport Slider from 'rc-slider';\r\nimport 'rc-slider/assets/index.css';\r\nimport { cva } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface SliderProps extends React.ComponentPropsWithoutRef<typeof Slider> {\r\n  trackClassName?: string;\r\n  className?: string;\r\n  sliderClassName?: string;\r\n  railClassName?: string;\r\n  handleClassName?: string;\r\n  showHandleValue?: boolean;\r\n  variant?: 'blue' | 'red' | 'black' | 'custom' | null | undefined;\r\n}\r\n\r\nconst trackVariants = cva('h-1', {\r\n  variants: {\r\n    variant: {\r\n      red: 'bg-accent-red!',\r\n      blue: 'bg-primary-blue-400!',\r\n      black: 'bg-primary-gray-600! dark:bg-primary-gray-200!',\r\n      custom: 'bg-custom-color-400!',\r\n    },\r\n  },\r\n  defaultVariants: { variant: 'red' },\r\n});\r\n\r\nconst handleVariants = cva('rounded-full border-2 opacity-100!', {\r\n  variants: {\r\n    variant: {\r\n      red: 'border-accent-red! bg-accent-red!',\r\n      blue: 'border-primary-blue-600! bg-primary-blue-600!',\r\n      black:\r\n        'border-primary-gray-600! bg-primary-gray-600! dark:border-primary-gray-200! dark:bg-primary-gray-200!',\r\n      custom: 'bg-custom-color-600! border-custom-color-600!',\r\n    },\r\n  },\r\n  defaultVariants: { variant: 'red' },\r\n});\r\n\r\nfunction SliderUI(sliderProps: SliderProps) {\r\n  const {\r\n    min = 0,\r\n    max = 100,\r\n    disabled,\r\n    trackClassName,\r\n    className,\r\n    railClassName,\r\n    sliderClassName,\r\n    handleClassName,\r\n    variant,\r\n    showHandleValue = false,\r\n  } = sliderProps;\r\n  return (\r\n    <div className={cn('w-full py-6 px-4', className)}>\r\n      <Slider\r\n        {...sliderProps}\r\n        min={min}\r\n        max={max}\r\n        handleRender={(node, handleProps) => {\r\n          return (\r\n            <div>\r\n              {node}\r\n              {showHandleValue ? (\r\n                <div\r\n                  className='px-1 bg-primary-gray-200 text-primary-black dark:text-primary-white dark:bg-primary-gray-650 border border-primary-gray-200 dark:border-primary-gray-600 text-sm mb-4'\r\n                  style={{\r\n                    left: node.props.style?.left,\r\n                    position: 'absolute',\r\n                    textAlign: 'center',\r\n                    transform: 'translateX(-50%) translateY(calc(-100% - 12px))',\r\n                  }}\r\n                >\r\n                  {handleProps.value}\r\n                </div>\r\n              ) : null}\r\n            </div>\r\n          );\r\n        }}\r\n        className={cn(\r\n          'h-2',\r\n          disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer',\r\n          sliderClassName,\r\n        )}\r\n        classNames={{\r\n          rail: cn('bg-primary-gray-300! h-1 dark:bg-primary-gray-550!', railClassName),\r\n          track: cn(trackVariants({ variant }), trackClassName),\r\n          handle: cn(handleVariants({ variant }), handleClassName),\r\n        }}\r\n        dotStyle={{ borderColor: 'var(--gray-400)' }}\r\n        activeDotStyle={{\r\n          borderColor:\r\n            variant === 'blue'\r\n              ? 'var(--blue-400)'\r\n              : variant === 'black'\r\n                ? 'var(--gray-550)'\r\n                : 'var(--red)',\r\n        }}\r\n      />\r\n    </div>\r\n  );\r\n}\r\n\r\nexport { SliderUI };\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst spacerVariants = cva('h-0 w-full', {\r\n  variants: {\r\n    size: {\r\n      xs: 'py-px',\r\n      sm: 'py-[2px]',\r\n      base: 'py-1',\r\n      lg: 'py-1.5',\r\n      xl: 'py-2',\r\n      '2xl': 'py-3',\r\n      '3xl': 'py-4',\r\n      '4xl': 'py-5',\r\n      '5xl': 'py-6',\r\n      '6xl': 'py-8',\r\n      '7xl': 'py-10',\r\n      '8xl': 'py-12',\r\n      '9xl': 'py-20',\r\n    },\r\n  },\r\n  defaultVariants: { size: 'base' },\r\n});\r\n\r\nconst Spacer = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof spacerVariants>\r\n>(({ className, size, ...props }, ref) => {\r\n  return <div {...props} className={cn(spacerVariants({ size }), className)} ref={ref} />;\r\n});\r\nSpacer.displayName = 'Spacer';\r\n\r\nexport { Spacer };\r\n","import React from 'react';\r\nimport { VariantProps, cva } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst loaderVariants = cva('animate-spin border-[5px] rounded-full inline-block box-border', {\r\n  variants: {\r\n    variant: {\r\n      red: 'border-accent-dark-red dark:border-accent-red border-b-primary-gray-300 dark:border-b-primary-gray-550',\r\n      blue: 'border-primary-blue-600 dark:border-primary-blue-500 border-b-primary-gray-300 dark:border-b-primary-gray-550',\r\n      black:\r\n        'border-primary-gray-600 dark:border-primary-gray-200 border-b-primary-gray-300 dark:border-b-primary-gray-550',\r\n      custom: 'border-custom-color-600 border-b-primary-gray-300 dark:border-b-primary-gray-550',\r\n    },\r\n    size: {\r\n      sm: 'border-[2px] h-6 w-6',\r\n      base: 'border-[4px] h-8 w-8',\r\n      lg: 'border-[6px] h-12 w-12',\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    size: 'base',\r\n    variant: 'blue',\r\n  },\r\n});\r\n\r\ninterface SpinnerContentProps extends VariantProps<typeof loaderVariants> {\r\n  show?: boolean;\r\n  className?: string;\r\n  variant?: 'blue' | 'red' | 'black' | 'custom' | null | undefined;\r\n  size?: 'sm' | 'base' | 'lg';\r\n  children?: React.ReactNode;\r\n}\r\n\r\nexport function Spinner({ size, variant, show = true, children, className }: SpinnerContentProps) {\r\n  return (\r\n    <span className={cn('flex-col items-center justify-center', show ? 'flex' : 'hidden')}>\r\n      <div className={cn(loaderVariants({ variant, size }), className)} />\r\n      {children}\r\n    </span>\r\n  );\r\n}\r\n","import React from 'react';\r\nimport { CheckIcon } from 'lucide-react';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface StepperProps extends React.HTMLAttributes<HTMLOListElement> {\r\n  className?: string;\r\n  unfinishedStepsClassName?: string;\r\n  finishedStepsClassName?: string;\r\n  activeStepsClassName?: string;\r\n  steps: {\r\n    title: string;\r\n    description?: string;\r\n  }[];\r\n  currentStep?: number;\r\n}\r\n\r\nfunction Stepper({\r\n  className,\r\n  steps,\r\n  currentStep = 0,\r\n  unfinishedStepsClassName,\r\n  finishedStepsClassName,\r\n  activeStepsClassName,\r\n  ...props\r\n}: StepperProps) {\r\n  return (\r\n    <ol\r\n      {...props}\r\n      className={cn(\r\n        'flex items-center list-none w-full text-base text-center text-primary-gray-700 dark:text-primary-white justify-between gap-3',\r\n        className,\r\n      )}\r\n    >\r\n      {steps.map((d, i) => (\r\n        <li\r\n          key={i}\r\n          className={cn(\r\n            'flex items-center grow',\r\n            i === steps.length - 1 ? 'grow-0' : 'grow',\r\n            i + 1 < currentStep\r\n              ? finishedStepsClassName\r\n              : i + 1 === currentStep\r\n                ? activeStepsClassName\r\n                : unfinishedStepsClassName,\r\n          )}\r\n        >\r\n          <div className='flex items-center gap-3 grow'>\r\n            <div\r\n              className={cn(\r\n                'w-8 h-8 rounded-full flex items-center justify-center shrink-0',\r\n                i + 1 < currentStep\r\n                  ? 'bg-primary-blue-600 dark:bg-primary-blue-300'\r\n                  : i + 1 === currentStep\r\n                    ? 'bg-primary-gray-600 dark:bg-primary-gray-550'\r\n                    : 'bg-primary-gray-300 dark:bg-primary-gray-650',\r\n              )}\r\n            >\r\n              {i + 1 < currentStep ? (\r\n                <CheckIcon className='h-4 w-4 shrink-0 stroke-primary-white dark:stroke-primary-gray-700' />\r\n              ) : (\r\n                <div\r\n                  className={\r\n                    i + 1 === currentStep\r\n                      ? 'text-sm text-primary-white'\r\n                      : 'text-sm text-primary-gray-700 dark:text-primary-white'\r\n                  }\r\n                >\r\n                  {i + 1}\r\n                </div>\r\n              )}\r\n            </div>\r\n            <div className='flex flex-col shrink-0'>\r\n              <div\r\n                className={cn(\r\n                  'text-base text-left rtl:text-right font-normal',\r\n                  i + 1 < currentStep\r\n                    ? 'text-primary-blue-600 dark:text-primary-blue-300'\r\n                    : 'text-primary-gray-700 dark:text-primary-white',\r\n                )}\r\n              >\r\n                {d.title}\r\n              </div>\r\n              {d.description ? (\r\n                <div\r\n                  className={cn(\r\n                    'text-sm text-primary-gray-500 text-left rtl:text-right dark:text-primary-gray-400',\r\n                  )}\r\n                >\r\n                  {d.description}\r\n                </div>\r\n              ) : null}\r\n            </div>\r\n            {i === steps.length - 1 ? null : (\r\n              <div className='h-px bg-primary-gray-400 grow w-full dark:bg-primary-gray-550' />\r\n            )}\r\n          </div>\r\n        </li>\r\n      ))}\r\n    </ol>\r\n  );\r\n}\r\n\r\nexport { Stepper };\r\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeSwitch,\n      name,\n      checked: checkedProp,\n      defaultChecked,\n      required,\n      disabled,\n      value = \"on\",\n      onCheckedChange,\n      form,\n      ...switchProps\n    } = props;\n    const [button, setButton] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n    const hasConsumerStoppedPropagationRef = React.useRef(false);\n    const isFormControl = button ? form || !!button.closest(\"form\") : true;\n    const [checked, setChecked] = useControllableState({\n      prop: checkedProp,\n      defaultProp: defaultChecked ?? false,\n      onChange: onCheckedChange,\n      caller: SWITCH_NAME\n    });\n    return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n      /* @__PURE__ */ jsx(\n        Primitive.button,\n        {\n          type: \"button\",\n          role: \"switch\",\n          \"aria-checked\": checked,\n          \"aria-required\": required,\n          \"data-state\": getState(checked),\n          \"data-disabled\": disabled ? \"\" : void 0,\n          disabled,\n          value,\n          ...switchProps,\n          ref: composedRefs,\n          onClick: composeEventHandlers(props.onClick, (event) => {\n            setChecked((prevChecked) => !prevChecked);\n            if (isFormControl) {\n              hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n              if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n            }\n          })\n        }\n      ),\n      isFormControl && /* @__PURE__ */ jsx(\n        SwitchBubbleInput,\n        {\n          control: button,\n          bubbles: !hasConsumerStoppedPropagationRef.current,\n          name,\n          value,\n          checked,\n          required,\n          disabled,\n          form,\n          style: { transform: \"translateX(-100%)\" }\n        }\n      )\n    ] });\n  }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSwitch, ...thumbProps } = props;\n    const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        \"data-state\": getState(context.checked),\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        ...thumbProps,\n        ref: forwardedRef\n      }\n    );\n  }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n  ({\n    __scopeSwitch,\n    control,\n    checked,\n    bubbles = true,\n    ...props\n  }, forwardedRef) => {\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(ref, forwardedRef);\n    const prevChecked = usePrevious(checked);\n    const controlSize = useSize(control);\n    React.useEffect(() => {\n      const input = ref.current;\n      if (!input) return;\n      const inputProto = window.HTMLInputElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        inputProto,\n        \"checked\"\n      );\n      const setChecked = descriptor.set;\n      if (prevChecked !== checked && setChecked) {\n        const event = new Event(\"click\", { bubbles });\n        setChecked.call(input, checked);\n        input.dispatchEvent(event);\n      }\n    }, [prevChecked, checked, bubbles]);\n    return /* @__PURE__ */ jsx(\n      \"input\",\n      {\n        type: \"checkbox\",\n        \"aria-hidden\": true,\n        defaultChecked: checked,\n        ...props,\n        tabIndex: -1,\n        ref: composedRefs,\n        style: {\n          ...props.style,\n          ...controlSize,\n          position: \"absolute\",\n          pointerEvents: \"none\",\n          opacity: 0,\n          margin: 0\n        }\n      }\n    );\n  }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n  return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n  Root,\n  Switch,\n  SwitchThumb,\n  Thumb,\n  createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { useState } from 'react';\r\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\nimport { Check, X } from 'lucide-react';\r\n\r\nimport { P } from './typography';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst switchVariants = cva(\r\n  'peer inline-flex h-[30px] w-[60px] shrink-0 cursor-pointer items-center rounded-full transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-offset-primary-blue-100 disabled:cursor-not-allowed disabled:opacity-50',\r\n  {\r\n    variants: {\r\n      color: {\r\n        blue: 'bg-primary-gray-400 data-[state=checked]:bg-primary-blue-600 dark:bg-primary-gray-550 dark:data-[state=checked]:bg-primary-blue-400',\r\n        red: 'bg-primary-gray-400 data-[state=checked]:bg-accent-dark-red dark:bg-primary-gray-550 dark:data-[state=checked]:bg-accent-red',\r\n        black:\r\n          'bg-primary-gray-400 data-[state=checked]:bg-primary-gray-600 dark:bg-primary-gray-550 dark:data-[state=checked]:bg-primary-gray-300',\r\n        custom: 'bg-primary-gray-400 data-[state=checked]:bg-custom-color-600',\r\n      },\r\n      size: {\r\n        small: 'h-[20px] w-[40px]',\r\n        normal: 'h-[30px] w-[60px]',\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      color: 'blue',\r\n      size: 'normal',\r\n    },\r\n  },\r\n);\r\n\r\nconst thumbVariant = cva(\r\n  'bg-primary-white pointer-events-none block rounded-full shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-[4px] data-[state=unchecked]:rtl:translate-x-[-2px]',\r\n  {\r\n    variants: {\r\n      size: {\r\n        small: 'h-[14px] w-[14px] ',\r\n        normal: 'h-[22px] w-[22px] ',\r\n      },\r\n      showIconWithSize: {\r\n        yes_with_small:\r\n          'data-[state=checked]:translate-x-[8px] data-[state=checked]:rtl:translate-x-[-8px]',\r\n        no_with_small:\r\n          'data-[state=checked]:translate-x-[22px] data-[state=checked]:rtl:translate-x-[-22px]',\r\n        yes_with_normal:\r\n          'data-[state=checked]:translate-x-[12px] data-[state=checked]:rtl:translate-x-[-12px]',\r\n        no_with_normal:\r\n          'data-[state=checked]:translate-x-[32px] data-[state=checked]:rtl:translate-x-[-32px]',\r\n      },\r\n    },\r\n    defaultVariants: { size: 'normal', showIconWithSize: 'no_with_normal' },\r\n  },\r\n);\r\n\r\nconst Switch = React.forwardRef<\r\n  React.ComponentRef<typeof SwitchPrimitives.Root>,\r\n  React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> &\r\n    VariantProps<typeof switchVariants> & {\r\n      showValue?: boolean;\r\n      showIcon?: boolean;\r\n      values?: [string, string];\r\n    }\r\n>(\r\n  (\r\n    {\r\n      className,\r\n      showValue = false,\r\n      showIcon = true,\r\n      values = ['On', 'Off'],\r\n      onCheckedChange,\r\n      color,\r\n      size = 'normal',\r\n      ...props\r\n    },\r\n    ref,\r\n  ) => {\r\n    const [value, setValue] = useState(props.defaultChecked || false);\r\n    return (\r\n      <div className='flex gap-2 items-center'>\r\n        <SwitchPrimitives.Root\r\n          {...props}\r\n          className={cn(switchVariants({ color, size }), className)}\r\n          ref={ref}\r\n          onCheckedChange={d => {\r\n            setValue(d);\r\n            onCheckedChange?.(d);\r\n          }}\r\n        >\r\n          {showIcon && value ? (\r\n            <Check\r\n              size={size === 'normal' ? 14 : 10}\r\n              className={\r\n                size === 'normal'\r\n                  ? 'ml-2 rtl:mr-2 rtl:ml-0 text-primary-white'\r\n                  : 'ml-1 rtl:mr-1 rtl:ml-0 text-primary-white'\r\n              }\r\n            />\r\n          ) : null}\r\n          <SwitchPrimitives.Thumb\r\n            className={cn(\r\n              thumbVariant({\r\n                size,\r\n                showIconWithSize: showIcon\r\n                  ? `yes_with_${size as 'small' | 'normal'}`\r\n                  : `no_with_${size as 'small' | 'normal'}`,\r\n              }),\r\n            )}\r\n          />\r\n          {showIcon && !value ? (\r\n            <X\r\n              size={size === 'normal' ? 14 : 10}\r\n              className={size === 'normal' ? 'ml-3 rtl:mr-3 rtl:ml-0' : 'ml-2 rtl:mr-2 rtl:ml-0'}\r\n            />\r\n          ) : null}\r\n        </SwitchPrimitives.Root>\r\n        {showValue ? (\r\n          <P size='base' marginBottom='none' leading='none'>\r\n            {value ? values[0] : values[1]}\r\n          </P>\r\n        ) : null}\r\n      </div>\r\n    );\r\n  },\r\n);\r\nSwitch.displayName = SwitchPrimitives.Root.displayName;\r\n\r\nexport { Switch };\r\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Table({ className, ...props }: React.ComponentProps<'table'>) {\n  return (\n    <div data-slot='table-container' className='relative w-full overflow-x-auto'>\n      <table data-slot='table' className={cn('w-full caption-bottom', className)} {...props} />\n    </div>\n  );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n  return (\n    <thead data-slot='table-header' className={cn('[&>tr]:border-b-0', className)} {...props} />\n  );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n  return (\n    <tbody\n      data-slot='table-body'\n      className={cn('[&>tr]:border-b [&>tr]:border-primary-gray-400', className)}\n      {...props}\n    />\n  );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n  return (\n    <tfoot\n      data-slot='table-footer'\n      className={cn('font-medium border-b border-primary-gray-400', className)}\n      {...props}\n    />\n  );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n  return <tr data-slot='table-row' className={className} {...props} />;\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n  return (\n    <th\n      data-slot='table-head'\n      className={cn(\n        'bg-primary-gray-300 text-xl leading-[1.4] dark:bg-primary-gray-600 py-3 pl-3 pr-10 rtl:pr-3 rtl:pl-10 text-left rtl:text-right align-middle font-semibold whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n  return (\n    <td\n      data-slot='table-cell'\n      className={cn(\n        'align-middle py-3 pl-3 pr-10 rtl:pr-3 text-xl rtl:pl-10 whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {\n  return (\n    <caption\n      data-slot='table-caption'\n      className={cn('text-muted-foreground mt-4 text-sm', className)}\n      {...props}\n    />\n  );\n}\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n  createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeTabs,\n      value: valueProp,\n      onValueChange,\n      defaultValue,\n      orientation = \"horizontal\",\n      dir,\n      activationMode = \"automatic\",\n      ...tabsProps\n    } = props;\n    const direction = useDirection(dir);\n    const [value, setValue] = useControllableState({\n      prop: valueProp,\n      onChange: onValueChange,\n      defaultProp: defaultValue ?? \"\",\n      caller: TABS_NAME\n    });\n    return /* @__PURE__ */ jsx(\n      TabsProvider,\n      {\n        scope: __scopeTabs,\n        baseId: useId(),\n        value,\n        onValueChange: setValue,\n        orientation,\n        dir: direction,\n        activationMode,\n        children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            dir: direction,\n            \"data-orientation\": orientation,\n            ...tabsProps,\n            ref: forwardedRef\n          }\n        )\n      }\n    );\n  }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTabs, loop = true, ...listProps } = props;\n    const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n    return /* @__PURE__ */ jsx(\n      RovingFocusGroup.Root,\n      {\n        asChild: true,\n        ...rovingFocusGroupScope,\n        orientation: context.orientation,\n        dir: context.dir,\n        loop,\n        children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            role: \"tablist\",\n            \"aria-orientation\": context.orientation,\n            ...listProps,\n            ref: forwardedRef\n          }\n        )\n      }\n    );\n  }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n    const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n    const triggerId = makeTriggerId(context.baseId, value);\n    const contentId = makeContentId(context.baseId, value);\n    const isSelected = value === context.value;\n    return /* @__PURE__ */ jsx(\n      RovingFocusGroup.Item,\n      {\n        asChild: true,\n        ...rovingFocusGroupScope,\n        focusable: !disabled,\n        active: isSelected,\n        children: /* @__PURE__ */ jsx(\n          Primitive.button,\n          {\n            type: \"button\",\n            role: \"tab\",\n            \"aria-selected\": isSelected,\n            \"aria-controls\": contentId,\n            \"data-state\": isSelected ? \"active\" : \"inactive\",\n            \"data-disabled\": disabled ? \"\" : void 0,\n            disabled,\n            id: triggerId,\n            ...triggerProps,\n            ref: forwardedRef,\n            onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n              if (!disabled && event.button === 0 && event.ctrlKey === false) {\n                context.onValueChange(value);\n              } else {\n                event.preventDefault();\n              }\n            }),\n            onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n              if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n            }),\n            onFocus: composeEventHandlers(props.onFocus, () => {\n              const isAutomaticActivation = context.activationMode !== \"manual\";\n              if (!isSelected && !disabled && isAutomaticActivation) {\n                context.onValueChange(value);\n              }\n            })\n          }\n        )\n      }\n    );\n  }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n    const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n    const triggerId = makeTriggerId(context.baseId, value);\n    const contentId = makeContentId(context.baseId, value);\n    const isSelected = value === context.value;\n    const isMountAnimationPreventedRef = React.useRef(isSelected);\n    React.useEffect(() => {\n      const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n      return () => cancelAnimationFrame(rAF);\n    }, []);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        \"data-state\": isSelected ? \"active\" : \"inactive\",\n        \"data-orientation\": context.orientation,\n        role: \"tabpanel\",\n        \"aria-labelledby\": triggerId,\n        hidden: !present,\n        id: contentId,\n        tabIndex: 0,\n        ...contentProps,\n        ref: forwardedRef,\n        style: {\n          ...props.style,\n          animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n        },\n        children: present && children\n      }\n    ) });\n  }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n  return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n  return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n  Content,\n  List,\n  Root2 as Root,\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n  Trigger,\n  createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\r\nimport { cva } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst tabVariants = cva(\r\n  'inline-flex text-base rtl:[direction:rtl] uppercase font-bold justify-center whitespace-nowrap border-b-2 border-primary-gray-300 dark:border-primary-gray-650 dark:text-primary-white p-0 pb-2 mt-3 mr-6 -mb-0.5 transition-all focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-offset-primary-blue-100 disabled:pointer-events-none disabled:opacity-50',\r\n  {\r\n    variants: {\r\n      color: {\r\n        red: 'data-[state=active]:border-accent-dark-red  dark:data-[state=active]:border-accent-red',\r\n        blue: 'data-[state=active]:border-primary-blue-600 dark:data-[state=active]:border-primary-blue-300',\r\n        black:\r\n          'data-[state=active]:border-primary-gray-700 dark:data-[state=active]:border-primary-gray-100',\r\n        custom: 'data-[state=active]:border-custom-color-600',\r\n      },\r\n    },\r\n    defaultVariants: { color: 'red' },\r\n  },\r\n);\r\n\r\nconst TabContext = React.createContext<{\r\n  color?: 'blue' | 'red' | 'black' | 'custom' | undefined;\r\n}>({ color: undefined });\r\n\r\nconst Tabs = React.forwardRef<\r\n  React.ComponentRef<typeof TabsPrimitive.Root>,\r\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & {\r\n    color: 'blue' | 'red' | 'black' | 'custom' | undefined;\r\n  }\r\n>(({ color, className, ...props }, ref) => {\r\n  const contextValue = React.useMemo(() => ({ color }), [color]);\r\n  return (\r\n    <TabContext.Provider value={contextValue}>\r\n      <TabsPrimitive.Root className={cn('rtl:[direction:rtl]', className)} {...props} ref={ref} />\r\n    </TabContext.Provider>\r\n  );\r\n});\r\nTabs.displayName = TabsPrimitive.Root.displayName;\r\n\r\nconst TabsList = React.forwardRef<\r\n  React.ComponentRef<typeof TabsPrimitive.List>,\r\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n  <TabsPrimitive.List\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'pl-12 rtl:[direction:rtl] inline-flex items-center border-b-2 border-primary-gray-300 mb-10 w-full dark:border-primary-gray-650',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nTabsList.displayName = TabsPrimitive.List.displayName;\r\n\r\nconst TabsTrigger = React.forwardRef<\r\n  React.ComponentRef<typeof TabsPrimitive.Trigger>,\r\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => {\r\n  const { color } = React.useContext(TabContext);\r\n  return (\r\n    <TabsPrimitive.Trigger {...props} ref={ref} className={cn(tabVariants({ color }), className)} />\r\n  );\r\n});\r\n\r\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\r\n\r\nconst TabsContent = React.forwardRef<\r\n  React.ComponentRef<typeof TabsPrimitive.Content>,\r\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n  <TabsPrimitive.Content\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'mt-2 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-1 dark:text-primary-white',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nTabsContent.displayName = TabsPrimitive.Content.displayName;\r\n\r\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\r\n","import React from 'react';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst inputVariants = cva(\r\n  'flex w-full min-h-[60px] text-normal text-base bg-primary-white dark:bg-primary-gray-650 text-primary-black dark:text-primary-white bg-transparent p-2.5 text-base transition-colors file:border-0 file:bg-transparent file:font-medium file:text-primary-gray-700 dark:file:text-primary-white focus-visible:outline-hidden focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 placeholder:text-primary-gray-550 dark:placeholder:text-primary-gray-400',\r\n  {\r\n    variants: {\r\n      variant: {\r\n        light: 'border border-primary-gray-400 dark:border-primary-gray-500',\r\n        normal: 'border-2 border-primary-black dark:border-primary-gray-300',\r\n      },\r\n    },\r\n    defaultVariants: { variant: 'normal' },\r\n  },\r\n);\r\nconst Textarea = React.forwardRef<\r\n  HTMLTextAreaElement,\r\n  React.TextareaHTMLAttributes<HTMLTextAreaElement> & VariantProps<typeof inputVariants>\r\n>(({ className, variant, placeholder, ...props }, ref) => {\r\n  return (\r\n    <textarea\r\n      {...props}\r\n      placeholder={placeholder || 'Text here...'}\r\n      className={cn(inputVariants({ variant }), className)}\r\n      ref={ref}\r\n    />\r\n  );\r\n});\r\nTextarea.displayName = 'Textarea';\r\n\r\nexport { Textarea };\r\n","import React from 'react';\r\n\r\nimport type { ToastActionElement, ToastProps } from '@/components/ui/toast';\r\n\r\nconst TOAST_LIMIT = 1;\r\nconst TOAST_REMOVE_DELAY = 1000000;\r\n\r\ntype ToasterToast = ToastProps & {\r\n  id: string;\r\n  title?: React.ReactNode;\r\n  description?: React.ReactNode;\r\n  action?: ToastActionElement;\r\n};\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nconst actionTypes = {\r\n  ADD_TOAST: 'ADD_TOAST',\r\n  UPDATE_TOAST: 'UPDATE_TOAST',\r\n  DISMISS_TOAST: 'DISMISS_TOAST',\r\n  REMOVE_TOAST: 'REMOVE_TOAST',\r\n} as const;\r\n\r\nlet count = 0;\r\n\r\nfunction genId() {\r\n  count = (count + 1) % Number.MAX_SAFE_INTEGER;\r\n  return count.toString();\r\n}\r\n\r\ntype ActionType = typeof actionTypes;\r\n\r\ntype Action =\r\n  | {\r\n      type: ActionType['ADD_TOAST'];\r\n      toast: ToasterToast;\r\n    }\r\n  | {\r\n      type: ActionType['UPDATE_TOAST'];\r\n      toast: Partial<ToasterToast>;\r\n    }\r\n  | {\r\n      type: ActionType['DISMISS_TOAST'];\r\n      toastId?: ToasterToast['id'];\r\n    }\r\n  | {\r\n      type: ActionType['REMOVE_TOAST'];\r\n      toastId?: ToasterToast['id'];\r\n    };\r\n\r\ninterface State {\r\n  toasts: ToasterToast[];\r\n}\r\n\r\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\nconst addToRemoveQueue = (toastId: string) => {\r\n  if (toastTimeouts.has(toastId)) {\r\n    return;\r\n  }\r\n\r\n  const timeout = setTimeout(() => {\r\n    toastTimeouts.delete(toastId);\r\n\r\n    dispatch({\r\n      type: 'REMOVE_TOAST',\r\n      toastId,\r\n    });\r\n  }, TOAST_REMOVE_DELAY);\r\n\r\n  toastTimeouts.set(toastId, timeout);\r\n};\r\n\r\nexport const reducer = (state: State, action: Action): State => {\r\n  switch (action.type) {\r\n    case 'ADD_TOAST':\r\n      return {\r\n        ...state,\r\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\r\n      };\r\n\r\n    case 'UPDATE_TOAST':\r\n      return {\r\n        ...state,\r\n        toasts: state.toasts.map(t => (t.id === action.toast.id ? { ...t, ...action.toast } : t)),\r\n      };\r\n\r\n    case 'DISMISS_TOAST': {\r\n      const { toastId } = action;\r\n\r\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\r\n      // but I'll keep it here for simplicity\r\n      if (toastId) {\r\n        addToRemoveQueue(toastId);\r\n      } else {\r\n        state.toasts.forEach(toast => {\r\n          addToRemoveQueue(toast.id);\r\n        });\r\n      }\r\n\r\n      return {\r\n        ...state,\r\n        toasts: state.toasts.map(t =>\r\n          t.id === toastId || toastId === undefined\r\n            ? {\r\n                ...t,\r\n                open: false,\r\n              }\r\n            : t,\r\n        ),\r\n      };\r\n    }\r\n    case 'REMOVE_TOAST':\r\n      if (action.toastId === undefined) {\r\n        return {\r\n          ...state,\r\n          toasts: [],\r\n        };\r\n      }\r\n      return {\r\n        ...state,\r\n        toasts: state.toasts.filter(t => t.id !== action.toastId),\r\n      };\r\n    default:\r\n      return { ...state };\r\n  }\r\n};\r\n\r\nconst listeners: Array<(state: State) => void> = [];\r\n\r\nlet memoryState: State = { toasts: [] };\r\n\r\nfunction dispatch(action: Action) {\r\n  memoryState = reducer(memoryState, action);\r\n  listeners.forEach(listener => {\r\n    listener(memoryState);\r\n  });\r\n}\r\n\r\ntype Toast = Omit<ToasterToast, 'id'>;\r\n\r\nfunction toast({ ...props }: Toast) {\r\n  const id = genId();\r\n\r\n  const update = (props: ToasterToast) =>\r\n    dispatch({\r\n      type: 'UPDATE_TOAST',\r\n      toast: { ...props, id },\r\n    });\r\n  const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id });\r\n\r\n  dispatch({\r\n    type: 'ADD_TOAST',\r\n    toast: {\r\n      ...props,\r\n      id,\r\n      open: true,\r\n      onOpenChange: open => {\r\n        if (!open) dismiss();\r\n      },\r\n    },\r\n  });\r\n\r\n  return {\r\n    id,\r\n    dismiss,\r\n    update,\r\n  };\r\n}\r\n\r\nfunction useToast() {\r\n  const [state, setState] = React.useState<State>(memoryState);\r\n\r\n  React.useEffect(() => {\r\n    listeners.push(setState);\r\n    return () => {\r\n      const index = listeners.indexOf(setState);\r\n      if (index > -1) {\r\n        listeners.splice(index, 1);\r\n      }\r\n    };\r\n  }, [state]);\r\n\r\n  return {\r\n    ...state,\r\n    toast,\r\n    dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\r\n  };\r\n}\r\n\r\nexport { useToast, toast };\r\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n  // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n  position: \"absolute\",\n  border: 0,\n  width: 1,\n  height: 1,\n  padding: 0,\n  margin: -1,\n  overflow: \"hidden\",\n  clip: \"rect(0, 0, 0, 0)\",\n  whiteSpace: \"nowrap\",\n  wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n  (props, forwardedRef) => {\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...props,\n        ref: forwardedRef,\n        style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n      }\n    );\n  }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n  Root,\n  VISUALLY_HIDDEN_STYLES,\n  VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/toast.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport * as DismissableLayer from \"@radix-ui/react-dismissable-layer\";\nimport { Portal } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar PROVIDER_NAME = \"ToastProvider\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(\"Toast\");\nvar [createToastContext, createToastScope] = createContextScope(\"Toast\", [createCollectionScope]);\nvar [ToastProviderProvider, useToastProviderContext] = createToastContext(PROVIDER_NAME);\nvar ToastProvider = (props) => {\n  const {\n    __scopeToast,\n    label = \"Notification\",\n    duration = 5e3,\n    swipeDirection = \"right\",\n    swipeThreshold = 50,\n    children\n  } = props;\n  const [viewport, setViewport] = React.useState(null);\n  const [toastCount, setToastCount] = React.useState(0);\n  const isFocusedToastEscapeKeyDownRef = React.useRef(false);\n  const isClosePausedRef = React.useRef(false);\n  if (!label.trim()) {\n    console.error(\n      `Invalid prop \\`label\\` supplied to \\`${PROVIDER_NAME}\\`. Expected non-empty \\`string\\`.`\n    );\n  }\n  return /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeToast, children: /* @__PURE__ */ jsx(\n    ToastProviderProvider,\n    {\n      scope: __scopeToast,\n      label,\n      duration,\n      swipeDirection,\n      swipeThreshold,\n      toastCount,\n      viewport,\n      onViewportChange: setViewport,\n      onToastAdd: React.useCallback(() => setToastCount((prevCount) => prevCount + 1), []),\n      onToastRemove: React.useCallback(() => setToastCount((prevCount) => prevCount - 1), []),\n      isFocusedToastEscapeKeyDownRef,\n      isClosePausedRef,\n      children\n    }\n  ) });\n};\nToastProvider.displayName = PROVIDER_NAME;\nvar VIEWPORT_NAME = \"ToastViewport\";\nvar VIEWPORT_DEFAULT_HOTKEY = [\"F8\"];\nvar VIEWPORT_PAUSE = \"toast.viewportPause\";\nvar VIEWPORT_RESUME = \"toast.viewportResume\";\nvar ToastViewport = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeToast,\n      hotkey = VIEWPORT_DEFAULT_HOTKEY,\n      label = \"Notifications ({hotkey})\",\n      ...viewportProps\n    } = props;\n    const context = useToastProviderContext(VIEWPORT_NAME, __scopeToast);\n    const getItems = useCollection(__scopeToast);\n    const wrapperRef = React.useRef(null);\n    const headFocusProxyRef = React.useRef(null);\n    const tailFocusProxyRef = React.useRef(null);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n    const hotkeyLabel = hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\");\n    const hasToasts = context.toastCount > 0;\n    React.useEffect(() => {\n      const handleKeyDown = (event) => {\n        const isHotkeyPressed = hotkey.length !== 0 && hotkey.every((key) => event[key] || event.code === key);\n        if (isHotkeyPressed) ref.current?.focus();\n      };\n      document.addEventListener(\"keydown\", handleKeyDown);\n      return () => document.removeEventListener(\"keydown\", handleKeyDown);\n    }, [hotkey]);\n    React.useEffect(() => {\n      const wrapper = wrapperRef.current;\n      const viewport = ref.current;\n      if (hasToasts && wrapper && viewport) {\n        const handlePause = () => {\n          if (!context.isClosePausedRef.current) {\n            const pauseEvent = new CustomEvent(VIEWPORT_PAUSE);\n            viewport.dispatchEvent(pauseEvent);\n            context.isClosePausedRef.current = true;\n          }\n        };\n        const handleResume = () => {\n          if (context.isClosePausedRef.current) {\n            const resumeEvent = new CustomEvent(VIEWPORT_RESUME);\n            viewport.dispatchEvent(resumeEvent);\n            context.isClosePausedRef.current = false;\n          }\n        };\n        const handleFocusOutResume = (event) => {\n          const isFocusMovingOutside = !wrapper.contains(event.relatedTarget);\n          if (isFocusMovingOutside) handleResume();\n        };\n        const handlePointerLeaveResume = () => {\n          const isFocusInside = wrapper.contains(document.activeElement);\n          if (!isFocusInside) handleResume();\n        };\n        wrapper.addEventListener(\"focusin\", handlePause);\n        wrapper.addEventListener(\"focusout\", handleFocusOutResume);\n        wrapper.addEventListener(\"pointermove\", handlePause);\n        wrapper.addEventListener(\"pointerleave\", handlePointerLeaveResume);\n        window.addEventListener(\"blur\", handlePause);\n        window.addEventListener(\"focus\", handleResume);\n        return () => {\n          wrapper.removeEventListener(\"focusin\", handlePause);\n          wrapper.removeEventListener(\"focusout\", handleFocusOutResume);\n          wrapper.removeEventListener(\"pointermove\", handlePause);\n          wrapper.removeEventListener(\"pointerleave\", handlePointerLeaveResume);\n          window.removeEventListener(\"blur\", handlePause);\n          window.removeEventListener(\"focus\", handleResume);\n        };\n      }\n    }, [hasToasts, context.isClosePausedRef]);\n    const getSortedTabbableCandidates = React.useCallback(\n      ({ tabbingDirection }) => {\n        const toastItems = getItems();\n        const tabbableCandidates = toastItems.map((toastItem) => {\n          const toastNode = toastItem.ref.current;\n          const toastTabbableCandidates = [toastNode, ...getTabbableCandidates(toastNode)];\n          return tabbingDirection === \"forwards\" ? toastTabbableCandidates : toastTabbableCandidates.reverse();\n        });\n        return (tabbingDirection === \"forwards\" ? tabbableCandidates.reverse() : tabbableCandidates).flat();\n      },\n      [getItems]\n    );\n    React.useEffect(() => {\n      const viewport = ref.current;\n      if (viewport) {\n        const handleKeyDown = (event) => {\n          const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;\n          const isTabKey = event.key === \"Tab\" && !isMetaKey;\n          if (isTabKey) {\n            const focusedElement = document.activeElement;\n            const isTabbingBackwards = event.shiftKey;\n            const targetIsViewport = event.target === viewport;\n            if (targetIsViewport && isTabbingBackwards) {\n              headFocusProxyRef.current?.focus();\n              return;\n            }\n            const tabbingDirection = isTabbingBackwards ? \"backwards\" : \"forwards\";\n            const sortedCandidates = getSortedTabbableCandidates({ tabbingDirection });\n            const index = sortedCandidates.findIndex((candidate) => candidate === focusedElement);\n            if (focusFirst(sortedCandidates.slice(index + 1))) {\n              event.preventDefault();\n            } else {\n              isTabbingBackwards ? headFocusProxyRef.current?.focus() : tailFocusProxyRef.current?.focus();\n            }\n          }\n        };\n        viewport.addEventListener(\"keydown\", handleKeyDown);\n        return () => viewport.removeEventListener(\"keydown\", handleKeyDown);\n      }\n    }, [getItems, getSortedTabbableCandidates]);\n    return /* @__PURE__ */ jsxs(\n      DismissableLayer.Branch,\n      {\n        ref: wrapperRef,\n        role: \"region\",\n        \"aria-label\": label.replace(\"{hotkey}\", hotkeyLabel),\n        tabIndex: -1,\n        style: { pointerEvents: hasToasts ? void 0 : \"none\" },\n        children: [\n          hasToasts && /* @__PURE__ */ jsx(\n            FocusProxy,\n            {\n              ref: headFocusProxyRef,\n              onFocusFromOutsideViewport: () => {\n                const tabbableCandidates = getSortedTabbableCandidates({\n                  tabbingDirection: \"forwards\"\n                });\n                focusFirst(tabbableCandidates);\n              }\n            }\n          ),\n          /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(Primitive.ol, { tabIndex: -1, ...viewportProps, ref: composedRefs }) }),\n          hasToasts && /* @__PURE__ */ jsx(\n            FocusProxy,\n            {\n              ref: tailFocusProxyRef,\n              onFocusFromOutsideViewport: () => {\n                const tabbableCandidates = getSortedTabbableCandidates({\n                  tabbingDirection: \"backwards\"\n                });\n                focusFirst(tabbableCandidates);\n              }\n            }\n          )\n        ]\n      }\n    );\n  }\n);\nToastViewport.displayName = VIEWPORT_NAME;\nvar FOCUS_PROXY_NAME = \"ToastFocusProxy\";\nvar FocusProxy = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeToast, onFocusFromOutsideViewport, ...proxyProps } = props;\n    const context = useToastProviderContext(FOCUS_PROXY_NAME, __scopeToast);\n    return /* @__PURE__ */ jsx(\n      VisuallyHidden,\n      {\n        \"aria-hidden\": true,\n        tabIndex: 0,\n        ...proxyProps,\n        ref: forwardedRef,\n        style: { position: \"fixed\" },\n        onFocus: (event) => {\n          const prevFocusedElement = event.relatedTarget;\n          const isFocusFromOutsideViewport = !context.viewport?.contains(prevFocusedElement);\n          if (isFocusFromOutsideViewport) onFocusFromOutsideViewport();\n        }\n      }\n    );\n  }\n);\nFocusProxy.displayName = FOCUS_PROXY_NAME;\nvar TOAST_NAME = \"Toast\";\nvar TOAST_SWIPE_START = \"toast.swipeStart\";\nvar TOAST_SWIPE_MOVE = \"toast.swipeMove\";\nvar TOAST_SWIPE_CANCEL = \"toast.swipeCancel\";\nvar TOAST_SWIPE_END = \"toast.swipeEnd\";\nvar Toast = React.forwardRef(\n  (props, forwardedRef) => {\n    const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props;\n    const [open, setOpen] = useControllableState({\n      prop: openProp,\n      defaultProp: defaultOpen ?? true,\n      onChange: onOpenChange,\n      caller: TOAST_NAME\n    });\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(\n      ToastImpl,\n      {\n        open,\n        ...toastProps,\n        ref: forwardedRef,\n        onClose: () => setOpen(false),\n        onPause: useCallbackRef(props.onPause),\n        onResume: useCallbackRef(props.onResume),\n        onSwipeStart: composeEventHandlers(props.onSwipeStart, (event) => {\n          event.currentTarget.setAttribute(\"data-swipe\", \"start\");\n        }),\n        onSwipeMove: composeEventHandlers(props.onSwipeMove, (event) => {\n          const { x, y } = event.detail.delta;\n          event.currentTarget.setAttribute(\"data-swipe\", \"move\");\n          event.currentTarget.style.setProperty(\"--radix-toast-swipe-move-x\", `${x}px`);\n          event.currentTarget.style.setProperty(\"--radix-toast-swipe-move-y\", `${y}px`);\n        }),\n        onSwipeCancel: composeEventHandlers(props.onSwipeCancel, (event) => {\n          event.currentTarget.setAttribute(\"data-swipe\", \"cancel\");\n          event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-x\");\n          event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-y\");\n          event.currentTarget.style.removeProperty(\"--radix-toast-swipe-end-x\");\n          event.currentTarget.style.removeProperty(\"--radix-toast-swipe-end-y\");\n        }),\n        onSwipeEnd: composeEventHandlers(props.onSwipeEnd, (event) => {\n          const { x, y } = event.detail.delta;\n          event.currentTarget.setAttribute(\"data-swipe\", \"end\");\n          event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-x\");\n          event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-y\");\n          event.currentTarget.style.setProperty(\"--radix-toast-swipe-end-x\", `${x}px`);\n          event.currentTarget.style.setProperty(\"--radix-toast-swipe-end-y\", `${y}px`);\n          setOpen(false);\n        })\n      }\n    ) });\n  }\n);\nToast.displayName = TOAST_NAME;\nvar [ToastInteractiveProvider, useToastInteractiveContext] = createToastContext(TOAST_NAME, {\n  onClose() {\n  }\n});\nvar ToastImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeToast,\n      type = \"foreground\",\n      duration: durationProp,\n      open,\n      onClose,\n      onEscapeKeyDown,\n      onPause,\n      onResume,\n      onSwipeStart,\n      onSwipeMove,\n      onSwipeCancel,\n      onSwipeEnd,\n      ...toastProps\n    } = props;\n    const context = useToastProviderContext(TOAST_NAME, __scopeToast);\n    const [node, setNode] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n    const pointerStartRef = React.useRef(null);\n    const swipeDeltaRef = React.useRef(null);\n    const duration = durationProp || context.duration;\n    const closeTimerStartTimeRef = React.useRef(0);\n    const closeTimerRemainingTimeRef = React.useRef(duration);\n    const closeTimerRef = React.useRef(0);\n    const { onToastAdd, onToastRemove } = context;\n    const handleClose = useCallbackRef(() => {\n      const isFocusInToast = node?.contains(document.activeElement);\n      if (isFocusInToast) context.viewport?.focus();\n      onClose();\n    });\n    const startTimer = React.useCallback(\n      (duration2) => {\n        if (!duration2 || duration2 === Infinity) return;\n        window.clearTimeout(closeTimerRef.current);\n        closeTimerStartTimeRef.current = (/* @__PURE__ */ new Date()).getTime();\n        closeTimerRef.current = window.setTimeout(handleClose, duration2);\n      },\n      [handleClose]\n    );\n    React.useEffect(() => {\n      const viewport = context.viewport;\n      if (viewport) {\n        const handleResume = () => {\n          startTimer(closeTimerRemainingTimeRef.current);\n          onResume?.();\n        };\n        const handlePause = () => {\n          const elapsedTime = (/* @__PURE__ */ new Date()).getTime() - closeTimerStartTimeRef.current;\n          closeTimerRemainingTimeRef.current = closeTimerRemainingTimeRef.current - elapsedTime;\n          window.clearTimeout(closeTimerRef.current);\n          onPause?.();\n        };\n        viewport.addEventListener(VIEWPORT_PAUSE, handlePause);\n        viewport.addEventListener(VIEWPORT_RESUME, handleResume);\n        return () => {\n          viewport.removeEventListener(VIEWPORT_PAUSE, handlePause);\n          viewport.removeEventListener(VIEWPORT_RESUME, handleResume);\n        };\n      }\n    }, [context.viewport, duration, onPause, onResume, startTimer]);\n    React.useEffect(() => {\n      if (open && !context.isClosePausedRef.current) startTimer(duration);\n    }, [open, duration, context.isClosePausedRef, startTimer]);\n    React.useEffect(() => {\n      onToastAdd();\n      return () => onToastRemove();\n    }, [onToastAdd, onToastRemove]);\n    const announceTextContent = React.useMemo(() => {\n      return node ? getAnnounceTextContent(node) : null;\n    }, [node]);\n    if (!context.viewport) return null;\n    return /* @__PURE__ */ jsxs(Fragment, { children: [\n      announceTextContent && /* @__PURE__ */ jsx(\n        ToastAnnounce,\n        {\n          __scopeToast,\n          role: \"status\",\n          \"aria-live\": type === \"foreground\" ? \"assertive\" : \"polite\",\n          \"aria-atomic\": true,\n          children: announceTextContent\n        }\n      ),\n      /* @__PURE__ */ jsx(ToastInteractiveProvider, { scope: __scopeToast, onClose: handleClose, children: ReactDOM.createPortal(\n        /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(\n          DismissableLayer.Root,\n          {\n            asChild: true,\n            onEscapeKeyDown: composeEventHandlers(onEscapeKeyDown, () => {\n              if (!context.isFocusedToastEscapeKeyDownRef.current) handleClose();\n              context.isFocusedToastEscapeKeyDownRef.current = false;\n            }),\n            children: /* @__PURE__ */ jsx(\n              Primitive.li,\n              {\n                role: \"status\",\n                \"aria-live\": \"off\",\n                \"aria-atomic\": true,\n                tabIndex: 0,\n                \"data-state\": open ? \"open\" : \"closed\",\n                \"data-swipe-direction\": context.swipeDirection,\n                ...toastProps,\n                ref: composedRefs,\n                style: { userSelect: \"none\", touchAction: \"none\", ...props.style },\n                onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n                  if (event.key !== \"Escape\") return;\n                  onEscapeKeyDown?.(event.nativeEvent);\n                  if (!event.nativeEvent.defaultPrevented) {\n                    context.isFocusedToastEscapeKeyDownRef.current = true;\n                    handleClose();\n                  }\n                }),\n                onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n                  if (event.button !== 0) return;\n                  pointerStartRef.current = { x: event.clientX, y: event.clientY };\n                }),\n                onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n                  if (!pointerStartRef.current) return;\n                  const x = event.clientX - pointerStartRef.current.x;\n                  const y = event.clientY - pointerStartRef.current.y;\n                  const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);\n                  const isHorizontalSwipe = [\"left\", \"right\"].includes(context.swipeDirection);\n                  const clamp = [\"left\", \"up\"].includes(context.swipeDirection) ? Math.min : Math.max;\n                  const clampedX = isHorizontalSwipe ? clamp(0, x) : 0;\n                  const clampedY = !isHorizontalSwipe ? clamp(0, y) : 0;\n                  const moveStartBuffer = event.pointerType === \"touch\" ? 10 : 2;\n                  const delta = { x: clampedX, y: clampedY };\n                  const eventDetail = { originalEvent: event, delta };\n                  if (hasSwipeMoveStarted) {\n                    swipeDeltaRef.current = delta;\n                    handleAndDispatchCustomEvent(TOAST_SWIPE_MOVE, onSwipeMove, eventDetail, {\n                      discrete: false\n                    });\n                  } else if (isDeltaInDirection(delta, context.swipeDirection, moveStartBuffer)) {\n                    swipeDeltaRef.current = delta;\n                    handleAndDispatchCustomEvent(TOAST_SWIPE_START, onSwipeStart, eventDetail, {\n                      discrete: false\n                    });\n                    event.target.setPointerCapture(event.pointerId);\n                  } else if (Math.abs(x) > moveStartBuffer || Math.abs(y) > moveStartBuffer) {\n                    pointerStartRef.current = null;\n                  }\n                }),\n                onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n                  const delta = swipeDeltaRef.current;\n                  const target = event.target;\n                  if (target.hasPointerCapture(event.pointerId)) {\n                    target.releasePointerCapture(event.pointerId);\n                  }\n                  swipeDeltaRef.current = null;\n                  pointerStartRef.current = null;\n                  if (delta) {\n                    const toast = event.currentTarget;\n                    const eventDetail = { originalEvent: event, delta };\n                    if (isDeltaInDirection(delta, context.swipeDirection, context.swipeThreshold)) {\n                      handleAndDispatchCustomEvent(TOAST_SWIPE_END, onSwipeEnd, eventDetail, {\n                        discrete: true\n                      });\n                    } else {\n                      handleAndDispatchCustomEvent(\n                        TOAST_SWIPE_CANCEL,\n                        onSwipeCancel,\n                        eventDetail,\n                        {\n                          discrete: true\n                        }\n                      );\n                    }\n                    toast.addEventListener(\"click\", (event2) => event2.preventDefault(), {\n                      once: true\n                    });\n                  }\n                })\n              }\n            )\n          }\n        ) }),\n        context.viewport\n      ) })\n    ] });\n  }\n);\nvar ToastAnnounce = (props) => {\n  const { __scopeToast, children, ...announceProps } = props;\n  const context = useToastProviderContext(TOAST_NAME, __scopeToast);\n  const [renderAnnounceText, setRenderAnnounceText] = React.useState(false);\n  const [isAnnounced, setIsAnnounced] = React.useState(false);\n  useNextFrame(() => setRenderAnnounceText(true));\n  React.useEffect(() => {\n    const timer = window.setTimeout(() => setIsAnnounced(true), 1e3);\n    return () => window.clearTimeout(timer);\n  }, []);\n  return isAnnounced ? null : /* @__PURE__ */ jsx(Portal, { asChild: true, children: /* @__PURE__ */ jsx(VisuallyHidden, { ...announceProps, children: renderAnnounceText && /* @__PURE__ */ jsxs(Fragment, { children: [\n    context.label,\n    \" \",\n    children\n  ] }) }) });\n};\nvar TITLE_NAME = \"ToastTitle\";\nvar ToastTitle = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeToast, ...titleProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { ...titleProps, ref: forwardedRef });\n  }\n);\nToastTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"ToastDescription\";\nvar ToastDescription = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeToast, ...descriptionProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { ...descriptionProps, ref: forwardedRef });\n  }\n);\nToastDescription.displayName = DESCRIPTION_NAME;\nvar ACTION_NAME = \"ToastAction\";\nvar ToastAction = React.forwardRef(\n  (props, forwardedRef) => {\n    const { altText, ...actionProps } = props;\n    if (!altText.trim()) {\n      console.error(\n        `Invalid prop \\`altText\\` supplied to \\`${ACTION_NAME}\\`. Expected non-empty \\`string\\`.`\n      );\n      return null;\n    }\n    return /* @__PURE__ */ jsx(ToastAnnounceExclude, { altText, asChild: true, children: /* @__PURE__ */ jsx(ToastClose, { ...actionProps, ref: forwardedRef }) });\n  }\n);\nToastAction.displayName = ACTION_NAME;\nvar CLOSE_NAME = \"ToastClose\";\nvar ToastClose = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeToast, ...closeProps } = props;\n    const interactiveContext = useToastInteractiveContext(CLOSE_NAME, __scopeToast);\n    return /* @__PURE__ */ jsx(ToastAnnounceExclude, { asChild: true, children: /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        ...closeProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, interactiveContext.onClose)\n      }\n    ) });\n  }\n);\nToastClose.displayName = CLOSE_NAME;\nvar ToastAnnounceExclude = React.forwardRef((props, forwardedRef) => {\n  const { __scopeToast, altText, ...announceExcludeProps } = props;\n  return /* @__PURE__ */ jsx(\n    Primitive.div,\n    {\n      \"data-radix-toast-announce-exclude\": \"\",\n      \"data-radix-toast-announce-alt\": altText || void 0,\n      ...announceExcludeProps,\n      ref: forwardedRef\n    }\n  );\n});\nfunction getAnnounceTextContent(container) {\n  const textContent = [];\n  const childNodes = Array.from(container.childNodes);\n  childNodes.forEach((node) => {\n    if (node.nodeType === node.TEXT_NODE && node.textContent) textContent.push(node.textContent);\n    if (isHTMLElement(node)) {\n      const isHidden = node.ariaHidden || node.hidden || node.style.display === \"none\";\n      const isExcluded = node.dataset.radixToastAnnounceExclude === \"\";\n      if (!isHidden) {\n        if (isExcluded) {\n          const altText = node.dataset.radixToastAnnounceAlt;\n          if (altText) textContent.push(altText);\n        } else {\n          textContent.push(...getAnnounceTextContent(node));\n        }\n      }\n    }\n  });\n  return textContent;\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n  const currentTarget = detail.originalEvent.currentTarget;\n  const event = new CustomEvent(name, { bubbles: true, cancelable: true, detail });\n  if (handler) currentTarget.addEventListener(name, handler, { once: true });\n  if (discrete) {\n    dispatchDiscreteCustomEvent(currentTarget, event);\n  } else {\n    currentTarget.dispatchEvent(event);\n  }\n}\nvar isDeltaInDirection = (delta, direction, threshold = 0) => {\n  const deltaX = Math.abs(delta.x);\n  const deltaY = Math.abs(delta.y);\n  const isDeltaX = deltaX > deltaY;\n  if (direction === \"left\" || direction === \"right\") {\n    return isDeltaX && deltaX > threshold;\n  } else {\n    return !isDeltaX && deltaY > threshold;\n  }\n};\nfunction useNextFrame(callback = () => {\n}) {\n  const fn = useCallbackRef(callback);\n  useLayoutEffect(() => {\n    let raf1 = 0;\n    let raf2 = 0;\n    raf1 = window.requestAnimationFrame(() => raf2 = window.requestAnimationFrame(fn));\n    return () => {\n      window.cancelAnimationFrame(raf1);\n      window.cancelAnimationFrame(raf2);\n    };\n  }, [fn]);\n}\nfunction isHTMLElement(node) {\n  return node.nodeType === node.ELEMENT_NODE;\n}\nfunction getTabbableCandidates(container) {\n  const nodes = [];\n  const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n    acceptNode: (node) => {\n      const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n      if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n      return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n    }\n  });\n  while (walker.nextNode()) nodes.push(walker.currentNode);\n  return nodes;\n}\nfunction focusFirst(candidates) {\n  const previouslyFocusedElement = document.activeElement;\n  return candidates.some((candidate) => {\n    if (candidate === previouslyFocusedElement) return true;\n    candidate.focus();\n    return document.activeElement !== previouslyFocusedElement;\n  });\n}\nvar Provider = ToastProvider;\nvar Viewport = ToastViewport;\nvar Root2 = Toast;\nvar Title = ToastTitle;\nvar Description = ToastDescription;\nvar Action = ToastAction;\nvar Close = ToastClose;\nexport {\n  Action,\n  Close,\n  Description,\n  Provider,\n  Root2 as Root,\n  Title,\n  Toast,\n  ToastAction,\n  ToastClose,\n  ToastDescription,\n  ToastProvider,\n  ToastTitle,\n  ToastViewport,\n  Viewport,\n  createToastScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\nimport * as ToastPrimitives from '@radix-ui/react-toast';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { CircleCheckBig, CircleX, TriangleAlert, X } from 'lucide-react';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst ToastProvider = ToastPrimitives.Provider;\r\n\r\nconst ToastContext = React.createContext<{\r\n  variant: 'default' | 'success' | 'warning' | 'destructive' | null | undefined;\r\n} | null>(null);\r\n\r\nconst ToastViewport = React.forwardRef<\r\n  React.ComponentRef<typeof ToastPrimitives.Viewport>,\r\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\r\n>(({ className, ...props }, ref) => (\r\n  <ToastPrimitives.Viewport\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'fixed top-0 z-100 flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\r\n\r\nconst toastVariants = cva(\r\n  'group pointer-events-auto relative shadow-xs bg-primary-white dark:bg-primary-gray-650 flex w-full text-primary-black dark:text-primary-white items-center justify-between flex gap-2 overflow-hidden rounded-sm border border-primary-gray-400 p-2 pr-6 transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full sm:data-[state=open]:slide-in-from-bottom-full',\r\n  {\r\n    variants: {\r\n      variant: {\r\n        default: 'border border-primary-gray-400 dark:border-0',\r\n        success:\r\n          'border-t-4 border-accent-dark-green dark:border-b-0 dark:border-l-0 dark:border-r-0',\r\n        warning:\r\n          'border-t-4 border-accent-dark-yellow dark:border-b-0 dark:border-l-0 dark:border-r-0',\r\n        destructive:\r\n          'border-t-4 border-accent-dark-red dark:border-b-0 dark:border-l-0 dark:border-r-0',\r\n      },\r\n    },\r\n    defaultVariants: { variant: 'default' },\r\n  },\r\n);\r\n\r\nconst toastTitleVariants = cva('', {\r\n  variants: {\r\n    variant: {\r\n      default: 'text-primary-black dark:text-primary-white',\r\n      success: 'text-accent-dark-green',\r\n      warning: 'text-accent-dark-yellow',\r\n      destructive: 'text-accent-dark-red',\r\n    },\r\n  },\r\n  defaultVariants: { variant: 'default' },\r\n});\r\n\r\nconst Toast = React.forwardRef<\r\n  React.ComponentRef<typeof ToastPrimitives.Root>,\r\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> & VariantProps<typeof toastVariants>\r\n>(({ className, variant, ...props }, ref) => {\r\n  return (\r\n    <ToastContext.Provider value={{ variant }}>\r\n      <ToastPrimitives.Root\r\n        {...props}\r\n        ref={ref}\r\n        className={cn(toastVariants({ variant }), className)}\r\n      />\r\n    </ToastContext.Provider>\r\n  );\r\n});\r\nToast.displayName = ToastPrimitives.Root.displayName;\r\n\r\nconst ToastAction = React.forwardRef<\r\n  React.ComponentRef<typeof ToastPrimitives.Action>,\r\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\r\n>(({ className, ...props }, ref) => (\r\n  <ToastPrimitives.Action\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'inline-flex h-8 shrink-0 items-center text-primary-gray-700 dark:text-primary-gray-100 justify-center rounded-none bg-transparent px-3 text-sm font-medium transition-colors hover:bg-primary-gray-200 dark:hover:bg-primary-gray-600 focus:outline-hidden focus:ring-1 disabled:pointer-events-none disabled:opacity-50',\r\n      className,\r\n    )}\r\n  />\r\n));\r\nToastAction.displayName = ToastPrimitives.Action.displayName;\r\n\r\nconst ToastClose = React.forwardRef<\r\n  React.ComponentRef<typeof ToastPrimitives.Close>,\r\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\r\n>(({ className, ...props }, ref) => (\r\n  <ToastPrimitives.Close\r\n    {...props}\r\n    ref={ref}\r\n    className={cn(\r\n      'absolute right-1 top-1 rounded-md p-1 text-primary-gray-700/50 dark:text-primary-gray-100/50 opacity-0 transition-opacity hover:text-primary-gray-700 dark:hover:text-primary-gray-100 focus:opacity-100 focus:outline-hidden focus:ring-1 group-hover:opacity-100',\r\n      className,\r\n    )}\r\n    toast-close=''\r\n  >\r\n    <X className='h-4 w-4' />\r\n  </ToastPrimitives.Close>\r\n));\r\nToastClose.displayName = ToastPrimitives.Close.displayName;\r\n\r\nconst ToastTitle = React.forwardRef<\r\n  React.ComponentRef<typeof ToastPrimitives.Title>,\r\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\r\n>(({ className, ...props }, ref) => {\r\n  const context = React.useContext(ToastContext);\r\n\r\n  const combinedClasses = cn(\r\n    toastTitleVariants({ variant: context?.variant }),\r\n    'text-lg font-bold [&+div]:text-xs',\r\n    className,\r\n  );\r\n  let icon: React.ReactNode = null;\r\n  switch (context?.variant) {\r\n    case 'destructive':\r\n      icon = <CircleX className='h-4 w-4 stroke-accent-dark-red' strokeWidth={2} />;\r\n      break;\r\n    case 'success':\r\n      icon = <CircleCheckBig className='h-4 w-4 stroke-accent-dark-green' strokeWidth={2} />;\r\n      break;\r\n    case 'warning':\r\n      icon = <TriangleAlert className='h-4 w-4 stroke-accent-dark-yellow' strokeWidth={2} />;\r\n      break;\r\n    default:\r\n      icon = null;\r\n      break;\r\n  }\r\n  return (\r\n    <div className='flex gap-x-1 items-center'>\r\n      {icon}\r\n      <ToastPrimitives.Title {...props} ref={ref} className={combinedClasses} />\r\n    </div>\r\n  );\r\n});\r\nToastTitle.displayName = ToastPrimitives.Title.displayName;\r\n\r\nconst ToastDescription = React.forwardRef<\r\n  React.ComponentRef<typeof ToastPrimitives.Description>,\r\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\r\n>(({ className, ...props }, ref) => (\r\n  <ToastPrimitives.Description\r\n    {...props}\r\n    ref={ref}\r\n    className={cn('text-base opacity-90 dark:text-primary-white', className)}\r\n  />\r\n));\r\nToastDescription.displayName = ToastPrimitives.Description.displayName;\r\n\r\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\r\n\r\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\r\n\r\nexport {\r\n  type ToastProps,\r\n  type ToastActionElement,\r\n  ToastProvider,\r\n  ToastViewport,\r\n  Toast,\r\n  ToastTitle,\r\n  ToastDescription,\r\n  ToastClose,\r\n  ToastAction,\r\n};\r\n","import { useToast } from '@/hooks/use-toast';\r\nimport {\r\n  Toast,\r\n  ToastClose,\r\n  ToastDescription,\r\n  ToastProvider,\r\n  ToastTitle,\r\n  ToastViewport,\r\n} from '@/components/ui/toast';\r\n\r\nexport function Toaster() {\r\n  const { toasts } = useToast();\r\n\r\n  return (\r\n    <ToastProvider>\r\n      {toasts.map(({ id, title, description, action, ...props }) => {\r\n        return (\r\n          <Toast {...props} key={id}>\r\n            <div className='grid gap-1'>\r\n              {title && <ToastTitle>{title}</ToastTitle>}\r\n              {description && <ToastDescription>{description}</ToastDescription>}\r\n            </div>\r\n            {action}\r\n            <ToastClose />\r\n          </Toast>\r\n        );\r\n      })}\r\n      <ToastViewport />\r\n    </ToastProvider>\r\n  );\r\n}\r\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n  // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n  position: \"absolute\",\n  border: 0,\n  width: 1,\n  height: 1,\n  padding: 0,\n  margin: -1,\n  overflow: \"hidden\",\n  clip: \"rect(0, 0, 0, 0)\",\n  whiteSpace: \"nowrap\",\n  wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n  (props, forwardedRef) => {\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...props,\n        ref: forwardedRef,\n        style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n      }\n    );\n  }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n  Root,\n  VISUALLY_HIDDEN_STYLES,\n  VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n  createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n  const {\n    __scopeTooltip,\n    delayDuration = DEFAULT_DELAY_DURATION,\n    skipDelayDuration = 300,\n    disableHoverableContent = false,\n    children\n  } = props;\n  const isOpenDelayedRef = React.useRef(true);\n  const isPointerInTransitRef = React.useRef(false);\n  const skipDelayTimerRef = React.useRef(0);\n  React.useEffect(() => {\n    const skipDelayTimer = skipDelayTimerRef.current;\n    return () => window.clearTimeout(skipDelayTimer);\n  }, []);\n  return /* @__PURE__ */ jsx(\n    TooltipProviderContextProvider,\n    {\n      scope: __scopeTooltip,\n      isOpenDelayedRef,\n      delayDuration,\n      onOpen: React.useCallback(() => {\n        window.clearTimeout(skipDelayTimerRef.current);\n        isOpenDelayedRef.current = false;\n      }, []),\n      onClose: React.useCallback(() => {\n        window.clearTimeout(skipDelayTimerRef.current);\n        skipDelayTimerRef.current = window.setTimeout(\n          () => isOpenDelayedRef.current = true,\n          skipDelayDuration\n        );\n      }, [skipDelayDuration]),\n      isPointerInTransitRef,\n      onPointerInTransitChange: React.useCallback((inTransit) => {\n        isPointerInTransitRef.current = inTransit;\n      }, []),\n      disableHoverableContent,\n      children\n    }\n  );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n  const {\n    __scopeTooltip,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    disableHoverableContent: disableHoverableContentProp,\n    delayDuration: delayDurationProp\n  } = props;\n  const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n  const popperScope = usePopperScope(__scopeTooltip);\n  const [trigger, setTrigger] = React.useState(null);\n  const contentId = useId();\n  const openTimerRef = React.useRef(0);\n  const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n  const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n  const wasOpenDelayedRef = React.useRef(false);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: (open2) => {\n      if (open2) {\n        providerContext.onOpen();\n        document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n      } else {\n        providerContext.onClose();\n      }\n      onOpenChange?.(open2);\n    },\n    caller: TOOLTIP_NAME\n  });\n  const stateAttribute = React.useMemo(() => {\n    return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n  }, [open]);\n  const handleOpen = React.useCallback(() => {\n    window.clearTimeout(openTimerRef.current);\n    openTimerRef.current = 0;\n    wasOpenDelayedRef.current = false;\n    setOpen(true);\n  }, [setOpen]);\n  const handleClose = React.useCallback(() => {\n    window.clearTimeout(openTimerRef.current);\n    openTimerRef.current = 0;\n    setOpen(false);\n  }, [setOpen]);\n  const handleDelayedOpen = React.useCallback(() => {\n    window.clearTimeout(openTimerRef.current);\n    openTimerRef.current = window.setTimeout(() => {\n      wasOpenDelayedRef.current = true;\n      setOpen(true);\n      openTimerRef.current = 0;\n    }, delayDuration);\n  }, [delayDuration, setOpen]);\n  React.useEffect(() => {\n    return () => {\n      if (openTimerRef.current) {\n        window.clearTimeout(openTimerRef.current);\n        openTimerRef.current = 0;\n      }\n    };\n  }, []);\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    TooltipContextProvider,\n    {\n      scope: __scopeTooltip,\n      contentId,\n      open,\n      stateAttribute,\n      trigger,\n      onTriggerChange: setTrigger,\n      onTriggerEnter: React.useCallback(() => {\n        if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n        else handleOpen();\n      }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n      onTriggerLeave: React.useCallback(() => {\n        if (disableHoverableContent) {\n          handleClose();\n        } else {\n          window.clearTimeout(openTimerRef.current);\n          openTimerRef.current = 0;\n        }\n      }, [handleClose, disableHoverableContent]),\n      onOpen: handleOpen,\n      onClose: handleClose,\n      disableHoverableContent,\n      children\n    }\n  ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTooltip, ...triggerProps } = props;\n    const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n    const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n    const popperScope = usePopperScope(__scopeTooltip);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n    const isPointerDownRef = React.useRef(false);\n    const hasPointerMoveOpenedRef = React.useRef(false);\n    const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n    React.useEffect(() => {\n      return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n    }, [handlePointerUp]);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        \"aria-describedby\": context.open ? context.contentId : void 0,\n        \"data-state\": context.stateAttribute,\n        ...triggerProps,\n        ref: composedRefs,\n        onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n          if (event.pointerType === \"touch\") return;\n          if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n            context.onTriggerEnter();\n            hasPointerMoveOpenedRef.current = true;\n          }\n        }),\n        onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n          context.onTriggerLeave();\n          hasPointerMoveOpenedRef.current = false;\n        }),\n        onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n          if (context.open) {\n            context.onClose();\n          }\n          isPointerDownRef.current = true;\n          document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n        }),\n        onFocus: composeEventHandlers(props.onFocus, () => {\n          if (!isPointerDownRef.current) context.onOpen();\n        }),\n        onBlur: composeEventHandlers(props.onBlur, context.onClose),\n        onClick: composeEventHandlers(props.onClick, context.onClose)\n      }\n    ) });\n  }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n  const { __scopeTooltip, forceMount, children, container } = props;\n  const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n    const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n    const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n  }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n  const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n  const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n  const { trigger, onClose } = context;\n  const content = ref.current;\n  const { onPointerInTransitChange } = providerContext;\n  const handleRemoveGraceArea = React.useCallback(() => {\n    setPointerGraceArea(null);\n    onPointerInTransitChange(false);\n  }, [onPointerInTransitChange]);\n  const handleCreateGraceArea = React.useCallback(\n    (event, hoverTarget) => {\n      const currentTarget = event.currentTarget;\n      const exitPoint = { x: event.clientX, y: event.clientY };\n      const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n      const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n      const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n      const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n      setPointerGraceArea(graceArea);\n      onPointerInTransitChange(true);\n    },\n    [onPointerInTransitChange]\n  );\n  React.useEffect(() => {\n    return () => handleRemoveGraceArea();\n  }, [handleRemoveGraceArea]);\n  React.useEffect(() => {\n    if (trigger && content) {\n      const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n      const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n      trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n      content.addEventListener(\"pointerleave\", handleContentLeave);\n      return () => {\n        trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n        content.removeEventListener(\"pointerleave\", handleContentLeave);\n      };\n    }\n  }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n  React.useEffect(() => {\n    if (pointerGraceArea) {\n      const handleTrackPointerGrace = (event) => {\n        const target = event.target;\n        const pointerPosition = { x: event.clientX, y: event.clientY };\n        const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n        const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n        if (hasEnteredTarget) {\n          handleRemoveGraceArea();\n        } else if (isPointerOutsideGraceArea) {\n          handleRemoveGraceArea();\n          onClose();\n        }\n      };\n      document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n      return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n    }\n  }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n  return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeTooltip,\n      children,\n      \"aria-label\": ariaLabel,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      ...contentProps\n    } = props;\n    const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n    const popperScope = usePopperScope(__scopeTooltip);\n    const { onClose } = context;\n    React.useEffect(() => {\n      document.addEventListener(TOOLTIP_OPEN, onClose);\n      return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n    }, [onClose]);\n    React.useEffect(() => {\n      if (context.trigger) {\n        const handleScroll = (event) => {\n          const target = event.target;\n          if (target?.contains(context.trigger)) onClose();\n        };\n        window.addEventListener(\"scroll\", handleScroll, { capture: true });\n        return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n      }\n    }, [context.trigger, onClose]);\n    return /* @__PURE__ */ jsx(\n      DismissableLayer,\n      {\n        asChild: true,\n        disableOutsidePointerEvents: false,\n        onEscapeKeyDown,\n        onPointerDownOutside,\n        onFocusOutside: (event) => event.preventDefault(),\n        onDismiss: onClose,\n        children: /* @__PURE__ */ jsxs(\n          PopperPrimitive.Content,\n          {\n            \"data-state\": context.stateAttribute,\n            ...popperScope,\n            ...contentProps,\n            ref: forwardedRef,\n            style: {\n              ...contentProps.style,\n              // re-namespace exposed content custom properties\n              ...{\n                \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n                \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n                \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n                \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n                \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n              }\n            },\n            children: [\n              /* @__PURE__ */ jsx(Slottable, { children }),\n              /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n            ]\n          }\n        )\n      }\n    );\n  }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTooltip, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeTooltip);\n    const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n      ARROW_NAME,\n      __scopeTooltip\n    );\n    return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n  const top = Math.abs(rect.top - point.y);\n  const bottom = Math.abs(rect.bottom - point.y);\n  const right = Math.abs(rect.right - point.x);\n  const left = Math.abs(rect.left - point.x);\n  switch (Math.min(top, bottom, right, left)) {\n    case left:\n      return \"left\";\n    case right:\n      return \"right\";\n    case top:\n      return \"top\";\n    case bottom:\n      return \"bottom\";\n    default:\n      throw new Error(\"unreachable\");\n  }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n  const paddedExitPoints = [];\n  switch (exitSide) {\n    case \"top\":\n      paddedExitPoints.push(\n        { x: exitPoint.x - padding, y: exitPoint.y + padding },\n        { x: exitPoint.x + padding, y: exitPoint.y + padding }\n      );\n      break;\n    case \"bottom\":\n      paddedExitPoints.push(\n        { x: exitPoint.x - padding, y: exitPoint.y - padding },\n        { x: exitPoint.x + padding, y: exitPoint.y - padding }\n      );\n      break;\n    case \"left\":\n      paddedExitPoints.push(\n        { x: exitPoint.x + padding, y: exitPoint.y - padding },\n        { x: exitPoint.x + padding, y: exitPoint.y + padding }\n      );\n      break;\n    case \"right\":\n      paddedExitPoints.push(\n        { x: exitPoint.x - padding, y: exitPoint.y - padding },\n        { x: exitPoint.x - padding, y: exitPoint.y + padding }\n      );\n      break;\n  }\n  return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n  const { top, right, bottom, left } = rect;\n  return [\n    { x: left, y: top },\n    { x: right, y: top },\n    { x: right, y: bottom },\n    { x: left, y: bottom }\n  ];\n}\nfunction isPointInPolygon(point, polygon) {\n  const { x, y } = point;\n  let inside = false;\n  for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n    const ii = polygon[i];\n    const jj = polygon[j];\n    const xi = ii.x;\n    const yi = ii.y;\n    const xj = jj.x;\n    const yj = jj.y;\n    const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect) inside = !inside;\n  }\n  return inside;\n}\nfunction getHull(points) {\n  const newPoints = points.slice();\n  newPoints.sort((a, b) => {\n    if (a.x < b.x) return -1;\n    else if (a.x > b.x) return 1;\n    else if (a.y < b.y) return -1;\n    else if (a.y > b.y) return 1;\n    else return 0;\n  });\n  return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n  if (points.length <= 1) return points.slice();\n  const upperHull = [];\n  for (let i = 0; i < points.length; i++) {\n    const p = points[i];\n    while (upperHull.length >= 2) {\n      const q = upperHull[upperHull.length - 1];\n      const r = upperHull[upperHull.length - 2];\n      if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n      else break;\n    }\n    upperHull.push(p);\n  }\n  upperHull.pop();\n  const lowerHull = [];\n  for (let i = points.length - 1; i >= 0; i--) {\n    const p = points[i];\n    while (lowerHull.length >= 2) {\n      const q = lowerHull[lowerHull.length - 1];\n      const r = lowerHull[lowerHull.length - 2];\n      if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n      else break;\n    }\n    lowerHull.push(p);\n  }\n  lowerHull.pop();\n  if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n    return upperHull;\n  } else {\n    return upperHull.concat(lowerHull);\n  }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n  Arrow2 as Arrow,\n  Content2 as Content,\n  Portal,\n  Provider,\n  Root3 as Root,\n  Tooltip,\n  TooltipArrow,\n  TooltipContent,\n  TooltipPortal,\n  TooltipProvider,\n  TooltipTrigger,\n  Trigger,\n  createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React from 'react';\r\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst TooltipProvider = TooltipPrimitive.Provider;\r\n\r\nconst Tooltip = TooltipPrimitive.Root;\r\n\r\nconst TooltipTrigger = TooltipPrimitive.Trigger;\r\n\r\nconst TooltipContent = React.forwardRef<\r\n  React.ComponentRef<typeof TooltipPrimitive.Content>,\r\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n  <TooltipPrimitive.Portal>\r\n    <TooltipPrimitive.Content\r\n      {...props}\r\n      ref={ref}\r\n      sideOffset={sideOffset}\r\n      className={cn(\r\n        'z-50 overflow-hidden border border-primary-gray-300 dark:border-primary-gray-550 text-sm! bg-primary-gray-300 dark:bg-primary-gray-550 p-2 text-primary-black dark:text-primary-white animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\r\n        className,\r\n      )}\r\n    />\r\n  </TooltipPrimitive.Portal>\r\n));\r\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\r\n","import React, { ReactNode, useState } from 'react';\r\nimport { cva, VariantProps } from 'class-variance-authority';\r\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\r\n\r\nimport { P } from './typography';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst cardVariants = cva('flex box-border justify-between', {\r\n  variants: {\r\n    vizWidth: {\r\n      xs: 'w-3/4 flex-col pr-0 sm:pr-2 rtl:pr-0 sm:rtl:pl-2 rtl:pl-0 gap-4 min-w-80 grow pb-4',\r\n      sm: 'w-2/3 flex-col pr-0 sm:pr-2 rtl:pr-0 sm:rtl:pl-2 rtl:pl-0 gap-4 min-w-80 grow pb-4',\r\n      base: 'w-1/2 flex-col pr-0 sm:pr-2 rtl:pr-0 sm:rtl:pl-2 rtl:pl-0 gap-4 min-w-80 grow pb-4',\r\n      lg: 'w-1/3 flex-col pr-0 sm:pr-2 rtl:pr-0 sm:rtl:pl-2 rtl:pl-0 gap-4 min-w-80 grow pb-4',\r\n      xl: 'w-1/4 flex-col pr-0 sm:pr-2 rtl:pr-0 sm:rtl:pl-2 rtl:pl-0 gap-4 min-w-80 grow pb-4',\r\n      full: 'w-full shrink-0 items-start gap-x-8 gap-y-4 mb-4 flex-wrap sm:flex-nowrap',\r\n    },\r\n  },\r\n  defaultVariants: { vizWidth: 'base' },\r\n});\r\n\r\nconst vizContainerVariants = cva('flex box-border grow shrink-0', {\r\n  variants: {\r\n    vizWidth: {\r\n      xs: 'w-1/4 pl-0 sm:pl-2 rtl:pr-0 rtl:pl-0 sm:rtl:pr-2 min-w-80 pb-4',\r\n      sm: 'w-1/3 pl-0 sm:pl-2 rtl:pr-0 rtl:pl-0 sm:rtl:pr-2 min-w-80 pb-4',\r\n      base: 'w-1/2 pl-0 sm:pl-2 rtl:pr-0 rtl:pl-0 sm:rtl:pr-2 min-w-80 pb-4',\r\n      lg: 'w-2/3 pl-0 sm:pl-2 rtl:pr-0 rtl:pl-0 sm:rtl:pr-2 min-w-80 pb-4',\r\n      xl: 'w-3/4 pl-0 sm:pl-2 rtl:pr-0 rtl:pl-0 sm:rtl:pr-2 min-w-80 pb-4',\r\n      full: 'w-full',\r\n    },\r\n  },\r\n  defaultVariants: { vizWidth: 'base' },\r\n});\r\n\r\ninterface CardProps\r\n  extends React.HTMLAttributes<HTMLDivElement>,\r\n    VariantProps<typeof cardVariants> {\r\n  vizStyle?: React.CSSProperties;\r\n  slides: {\r\n    content: ReactNode;\r\n    viz: ReactNode;\r\n  }[];\r\n  contentStyle?: React.CSSProperties;\r\n  contentClassName?: string;\r\n  vizClassName?: string;\r\n  slideNo?: boolean;\r\n}\r\n\r\nconst VizCarousel = React.forwardRef<HTMLDivElement, CardProps>(\r\n  (\r\n    {\r\n      className,\r\n      vizWidth,\r\n      slides,\r\n      vizStyle,\r\n      contentStyle,\r\n      contentClassName,\r\n      vizClassName,\r\n      slideNo = true,\r\n      ...props\r\n    },\r\n    ref,\r\n  ) => {\r\n    const WrapperRef = React.useRef<HTMLDivElement>(null);\r\n    const slideRefs = React.useRef<(HTMLDivElement | null)[]>([]);\r\n    const [slide, setSlide] = useState(1);\r\n\r\n    React.useEffect(() => {\r\n      const observer = new IntersectionObserver(\r\n        entries => {\r\n          const visible = entries\r\n            .filter(entry => entry.isIntersecting)\r\n            .sort((a, b) => b.intersectionRatio - a.intersectionRatio);\r\n\r\n          if (visible.length > 0) {\r\n            const index = slideRefs.current.findIndex(ref => ref === visible[0].target);\r\n            if (index !== -1) setSlide(index + 1);\r\n          }\r\n        },\r\n        {\r\n          root: WrapperRef.current,\r\n          threshold: 1,\r\n        },\r\n      );\r\n\r\n      slideRefs.current.forEach(ref => {\r\n        if (ref) observer.observe(ref);\r\n      });\r\n\r\n      return () => {\r\n        // eslint-disable-next-line react-hooks/exhaustive-deps\r\n        slideRefs.current.forEach(ref => {\r\n          if (ref) observer.unobserve(ref);\r\n        });\r\n      };\r\n    }, []);\r\n\r\n    return (\r\n      <div ref={ref}>\r\n        <div\r\n          ref={WrapperRef}\r\n          className={cn(\r\n            'mr-auto ml-auto mb-0 undp-scrollbar w-full pb-4 gap-6 flex snap-x snap-mandatory scroll-p-0 scroll-pl-0 overflow-x-auto',\r\n            className,\r\n          )}\r\n          {...props}\r\n        >\r\n          {slides.map((d, i) => (\r\n            <div\r\n              key={i}\r\n              ref={el => {\r\n                slideRefs.current[i] = el;\r\n              }}\r\n              className={`flex box-border flex-wrap w-full shrink-0 snap-start ${vizWidth === 'full' ? 'flex-col items-start' : 'flex-row items-stretch'}`}\r\n            >\r\n              <div\r\n                style={contentStyle}\r\n                className={cn(cardVariants({ vizWidth }), contentClassName)}\r\n              >\r\n                <div className='min-w-80 grow sm:grow-0'>{d.content}</div>\r\n                <div className={`flex ${slideNo ? 'gap-2' : 'gap-3'} items-center shrink-0`}>\r\n                  <div\r\n                    className={`rounded-full pr-1 w-9 h-9 md:w-12 md:h-12 border-0 flex items-center justify-center rtl:rotate-180 ${slide === 1 ? 'bg-primary-gray-400 dark:bg-primary-gray-550 cursor-not-allowed' : 'cursor-pointer bg-primary-gray-700 dark:bg-primary-gray-100 hover:bg-primary-gray-600 dark:hover:bg-primary-gray-200'}`}\r\n                    onClick={() => {\r\n                      if (WrapperRef.current && slide !== 1) {\r\n                        const parentWithDir = WrapperRef.current.closest('[dir]');\r\n                        const scrollBy = parentWithDir?.getAttribute('dir') === 'rtl' ? 280 : -280;\r\n                        setSlide(slide - 1);\r\n                        WrapperRef.current.scrollBy(scrollBy, 0);\r\n                      }\r\n                    }}\r\n                  >\r\n                    <ChevronLeft className='w-6 h-6 text-primary-white dark:text-primary-gray-700' />\r\n                  </div>\r\n                  {slideNo ? (\r\n                    <P marginBottom='none' className='px-2! shrink-0'>\r\n                      {slide} / {slides.length}\r\n                    </P>\r\n                  ) : null}\r\n                  <div\r\n                    className={`rounded-full pl-1 w-9 h-9 md:w-12 md:h-12 border-0 flex items-center justify-center rtl:rotate-180 ${slide === slides.length ? 'bg-primary-gray-400 dark:bg-primary-gray-550 cursor-not-allowed' : 'cursor-pointer bg-primary-gray-700 dark:bg-primary-gray-100 hover:bg-primary-gray-600 dark:hover:bg-primary-gray-200'}`}\r\n                    onClick={() => {\r\n                      if (WrapperRef.current && slide !== slides.length) {\r\n                        const parentWithDir = WrapperRef.current.closest('[dir]');\r\n                        const scrollBy = parentWithDir?.getAttribute('dir') === 'rtl' ? -280 : 280;\r\n                        setSlide(slide + 1);\r\n                        WrapperRef.current.scrollBy(scrollBy, 0);\r\n                      }\r\n                    }}\r\n                  >\r\n                    <ChevronRight className='w-6 h-6 text-primary-white dark:text-primary-gray-700' />\r\n                  </div>\r\n                </div>\r\n              </div>\r\n              <div\r\n                style={vizStyle}\r\n                className={cn(vizContainerVariants({ vizWidth }), vizClassName)}\r\n              >\r\n                {d.viz}\r\n              </div>\r\n            </div>\r\n          ))}\r\n        </div>\r\n      </div>\r\n    );\r\n  },\r\n);\r\nVizCarousel.displayName = 'VizCarousel';\r\n\r\nexport { VizCarousel };\r\n","import React from 'react';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\nconst VisualizationWidget = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n  ({ className, children, ...props }, ref) => {\r\n    return (\r\n      <div\r\n        className={cn(\r\n          'border border-primary-gray-300 dark:border-primary-gray-600 w-full',\r\n          className,\r\n        )}\r\n        ref={ref}\r\n        {...props}\r\n      >\r\n        {children}\r\n      </div>\r\n    );\r\n  },\r\n);\r\nVisualizationWidget.displayName = 'VisualizationWidget';\r\n\r\nconst VisualizationWidgetHeaderContext = React.createContext<{\r\n  selectedValue?: string;\r\n  activeItemClass?: string;\r\n  hoverItemClass?: string;\r\n  onValueChange: (value: string) => void;\r\n}>({\r\n  selectedValue: undefined,\r\n  hoverItemClass: undefined,\r\n  activeItemClass: undefined,\r\n  onValueChange: () => {},\r\n});\r\n\r\ninterface VisualizationWidgetHeaderProps\r\n  extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\r\n  defaultValue?: string;\r\n  activeItemClass?: string;\r\n  hoverItemClass?: string;\r\n  onChange?: (value: string) => void;\r\n}\r\n\r\nconst VisualizationWidgetHeader = React.forwardRef<HTMLDivElement, VisualizationWidgetHeaderProps>(\r\n  (\r\n    { className, children, defaultValue, activeItemClass, hoverItemClass, onChange, ...props },\r\n    ref,\r\n  ) => {\r\n    const [selectedValue, setSelectedValue] = React.useState<string>(defaultValue || '');\r\n\r\n    // Handler for checkbox changes\r\n    const handleValueChange = React.useCallback(\r\n      (itemValue: string) => {\r\n        setSelectedValue(itemValue);\r\n\r\n        // Call onChange handler if provided\r\n        onChange?.(itemValue);\r\n      },\r\n      [onChange],\r\n    );\r\n    const contextValue = React.useMemo(\r\n      () => ({\r\n        activeItemClass,\r\n        selectedValue,\r\n        hoverItemClass,\r\n        onValueChange: handleValueChange,\r\n      }),\r\n      [selectedValue, activeItemClass, hoverItemClass, handleValueChange],\r\n    );\r\n    return (\r\n      <VisualizationWidgetHeaderContext.Provider value={contextValue}>\r\n        <div\r\n          className={cn(\r\n            'flex gap-0 w-full bg-primary-gray-300 dark:bg-primary-gray-600',\r\n            className,\r\n          )}\r\n          ref={ref}\r\n          {...props}\r\n        >\r\n          {children}\r\n        </div>\r\n      </VisualizationWidgetHeaderContext.Provider>\r\n    );\r\n  },\r\n);\r\nVisualizationWidgetHeader.displayName = 'VisualizationWidgetHeader';\r\n\r\ninterface VisualizationWidgetHeaderItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n  value: string;\r\n}\r\n\r\nconst VisualizationWidgetHeaderItem = React.forwardRef<\r\n  HTMLButtonElement,\r\n  VisualizationWidgetHeaderItemProps\r\n>(({ className, children, value, ...props }, ref) => {\r\n  const { selectedValue, activeItemClass, hoverItemClass, onValueChange } = React.useContext(\r\n    VisualizationWidgetHeaderContext,\r\n  );\r\n  return (\r\n    <button\r\n      ref={ref}\r\n      type='button'\r\n      {...props}\r\n      onClick={() => onValueChange(value)}\r\n      className={cn(\r\n        'flex border-0 flex-col grow gap-1 items-center justify-center p-3 font-medium bg-primary-gray-100 dark:bg-primary-gray-650 text-primary-gray-500 dark:text-primary-white text-sm font-medium border-r border-r-primary-gray-400 dark:border-r-primary-gray-550 last:border-r-0',\r\n        selectedValue === value\r\n          ? activeItemClass || 'bg-primary-white text-primary-blue-600 dark:bg-primary-gray-700'\r\n          : '',\r\n        hoverItemClass\r\n          ? `hover:${hoverItemClass} dark:hover:${hoverItemClass}`\r\n          : 'hover:bg-primary-white dark:hover:bg-primary-gray-700',\r\n        className,\r\n      )}\r\n    >\r\n      {children}\r\n    </button>\r\n  );\r\n});\r\nVisualizationWidgetHeaderItem.displayName = 'VisualizationWidgetHeaderItem';\r\n\r\nconst VisualizationWidgetBody = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, children, ...props }, ref) => {\r\n  return (\r\n    <div\r\n      className={cn(\r\n        'flex gap-0 flex-wrap items-stretch max-h-none flex-col md:max-h-[80vh] md:flex-row',\r\n        className,\r\n      )}\r\n      ref={ref}\r\n      {...props}\r\n    >\r\n      {children}\r\n    </div>\r\n  );\r\n});\r\nVisualizationWidgetBody.displayName = 'VisualizationWidgetBody';\r\n\r\nconst VisualizationWidgetBodySidebar = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, children, ...props }, ref) => {\r\n  return (\r\n    <div\r\n      className={cn(\r\n        'flex flex-wrap undp-scrollbar max-h-none md:max-h-[80vh] w-full md:w-1/3 xl:w-1/4 2xl:w-1/5 bg-primary-gray-100 dark:bg-primary-gray-650 border-r border-r-primary-gray-400 dark:border-r-primary-gray-600 p-4',\r\n        className,\r\n      )}\r\n      ref={ref}\r\n      {...props}\r\n    >\r\n      {children}\r\n    </div>\r\n  );\r\n});\r\nVisualizationWidgetBodySidebar.displayName = 'VisualizationWidgetBodySidebar';\r\n\r\nconst VisualizationWidgetBodyContent = React.forwardRef<\r\n  HTMLDivElement,\r\n  React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, children, ...props }, ref) => {\r\n  return (\r\n    <div\r\n      className={cn(\r\n        'flex flex-wrap undp-scrollbar flex-1 bg-primary-white dark:bg-primary-gray-700 max-h-none md:max-h-[80vh]',\r\n        className,\r\n      )}\r\n      ref={ref}\r\n      {...props}\r\n    >\r\n      {children}\r\n    </div>\r\n  );\r\n});\r\nVisualizationWidgetBodyContent.displayName = 'VisualizationWidgetBodyContent';\r\n\r\nexport {\r\n  VisualizationWidget,\r\n  VisualizationWidgetHeader,\r\n  VisualizationWidgetHeaderItem,\r\n  VisualizationWidgetBody,\r\n  VisualizationWidgetBodySidebar,\r\n  VisualizationWidgetBodyContent,\r\n};\r\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","self","source","owner","debugStack","debugTask","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","createContext2","rootComponentName","defaultContext","Context","Provider","context","jsx","useContext2","consumerName","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","BaseContext","index","scope","_a","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","setRef","ref","composeRefs","refs","hasCleanup","cleanups","cleanup","i","useComposedRefs","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","createSlottable","Slottable2","Fragment2","childProps","overrideProps","slotPropValue","childPropValue","args","result","element","mayWarn","_b","createCollection","PROVIDER_NAME","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","itemMap","COLLECTION_SLOT_NAME","CollectionSlotImpl","CollectionSlot","composedRefs","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlotImpl","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","a","b","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event","useLayoutEffect2","useInsertionEffect","useLayoutEffect","useControllableState","prop","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","NODES","Primitive","primitive","Slot","Node","asChild","primitiveProps","Comp","dispatchDiscreteCustomEvent","target","ReactDOM","useStateMachine","initialState","machine","state","Presence","present","presence","usePresence","React2","setNode","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","timeoutId","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","node2","useReactId","count","useId","deterministicId","id","setId","reactId","COLLAPSIBLE_NAME","createCollapsibleContext","createCollapsibleScope","CollapsibleProvider","useCollapsibleContext","Collapsible","__scopeCollapsible","openProp","defaultOpen","disabled","onOpenChange","collapsibleProps","open","setOpen","prevOpen","getState","TRIGGER_NAME","CollapsibleTrigger","triggerProps","CONTENT_NAME","CollapsibleContent","forceMount","contentProps","CollapsibleContentImpl","isPresent","setIsPresent","heightRef","height","widthRef","width","isOpen","isMountAnimationPreventedRef","originalStylesRef","rAF","rect","Root","Trigger","Content","DirectionContext","useDirection","localDir","globalDir","ACCORDION_NAME","ACCORDION_KEYS","Collection","createAccordionContext","createAccordionScope","useCollapsibleScope","Accordion","accordionProps","singleProps","multipleProps","AccordionImplMultiple","AccordionImplSingle","AccordionValueProvider","useAccordionValueContext","AccordionCollapsibleProvider","useAccordionCollapsibleContext","valueProp","defaultValue","onValueChange","collapsible","accordionSingleProps","AccordionImpl","accordionMultipleProps","handleItemOpen","itemValue","prevValue","handleItemClose","AccordionImplProvider","useAccordionContext","__scopeAccordion","dir","orientation","accordionRef","getItems","isDirectionLTR","handleKeyDown","triggerCollection","item","triggerIndex","triggerCount","nextIndex","homeIndex","endIndex","moveNext","movePrev","clampedIndex","ITEM_NAME","AccordionItemProvider","useAccordionItemContext","AccordionItem","accordionItemProps","accordionContext","valueContext","collapsibleScope","triggerId","CollapsiblePrimitive.Root","open2","HEADER_NAME","AccordionHeader","headerProps","itemContext","AccordionTrigger","collapsibleContext","CollapsiblePrimitive.Trigger","AccordionContent","CollapsiblePrimitive.Content","Root2","Item","Header","Trigger2","Content2","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","array","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","iconNode","rest","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","Check","ChevronDown","ChevronLeft","ChevronRight","ChevronUp","CircleCheckBig","CircleX","Circle","Ellipsis","Menu","Search","Trash2","TriangleAlert","Upload","X","r","f","n","clsx","falsyToString","cx","cva","base","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","CLASS_PART_SEPARATOR","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","classGroups","processClassesRecursively","classGroup","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","path","currentClassPartObject","pathPart","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","createSortModifiers","orderSensitiveModifiers","modifier","sortedModifiers","unsortedModifiers","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","isExternal","variantModifier","modifierId","classId","conflictGroups","group","twJoin","argument","resolvedValue","toValue","mix","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","generateRandomId","accordionVariants","accordionTitleVariants","accordionContentVariants","AccordionContext","AccordionPrimitive.Root","combinedClasses","AccordionPrimitive.Item","AccordionPrimitive.Header","AccordionPrimitive.Trigger","jsxs","Fragment","AccordionPrimitive.Content","badgeVariants","Badge","rounded","bannerVariants","bodyVariants","sidebarVariants","BannerContext","Banner","backgroundColor","sidebarWidth","bodyGap","bodyMaxWidth","padding","contextValue","BannerBody","BannerBodySidebar","BannerBodyContent","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis","MoreHorizontal","buttonVariants","Button","cardVariants","Card","border","CardHeader","CardFooter","CardTag","CardTitle","CardDescription","CardImage","PageWideCard","imageWidth","PageWideCardContent","PageWideCardHeader","PageWideCardContainer","PageWideCardFooter","PageWideCardTag","PageWideCardTitle","PageWideCardDescription","PageWideCardImage","PageHeader","style","backgroundImage","minHeight","contentMode","PageHeaderHead","PageHeaderContent","Carousel","WrapperRef","cursor","setCursor","e","CarouselCard","usePrevious","useSize","setSize","resizeObserver","entries","entry","borderSizeEntry","borderSize","CHECKBOX_NAME","createCheckboxContext","createCheckboxScope","CheckboxProviderImpl","useCheckboxContext","CheckboxProvider","__scopeCheckbox","checkedProp","defaultChecked","form","onCheckedChange","required","internal_do_not_use_render","checked","setChecked","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","isIndeterminate","CheckboxTrigger","onKeyDown","onClick","checkboxProps","initialCheckedStateRef","reset","prevChecked","Checkbox","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","indicatorProps","BUBBLE_INPUT_NAME","controlSize","input","inputProto","bubbles","defaultCheckedRef","NAME","Label","LabelPrimitive.Root","checkBoxVariants","checkVariants","labelClassName","checkBoxClassName","checkIconClassName","CheckboxPrimitive.Root","CheckboxPrimitive.Indicator","CheckboxGroupContext","CheckboxGroup","internalValue","setInternalValue","selectedValues","handleValueChange","newValue","CheckboxGroupItem","containerVariants","Container","layout","gap","useCallbackRef","callback","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","force","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","handler","detail","discrete","Branch","useFocusGuards","edgeGuards","createFocusGuard","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutation","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","updatedArray","items","sides","min","max","round","floor","createCoords","v","oppositeSideMap","oppositeAlignmentMap","clamp","start","end","evaluate","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","side","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","direction","list","expandPaddingObject","getPaddingObject","rectToClientRect","x","y","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","fn","nextX","nextY","data","detectOverflow","options","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextPlacement","_overflowsData$","ignoreCrossAxisOverflow","hasInitialMainAxisOverflow","resetPlacement","d","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","offsets","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","selector","isContainingBlock","elementOrCss","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","ignoreScrollbarX","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","getViewportRect","visualViewport","visualViewportBased","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","io","root","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","ratio","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","mergedOptions","platformWithCache","computePosition$1","useEffect","deepEqual","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","initialStyles","isRef","arrow$2","deps","Arrow","arrowProps","POPPER_NAME","createPopperContext","createPopperScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","PopperContentProvider","useContentContext","PopperContent","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","content","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","arrowX","arrowY","cannotCenterArrow","_c","contentZIndex","setContentZIndex","_d","_e","_f","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","Anchor","PORTAL_NAME","Portal","containerProp","portalProps","mounted","setMounted","ENTRY_FOCUS","GROUP_NAME","createRovingFocusGroupContext","createRovingFocusGroupScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","RovingFocusGroupImpl","__scopeRovingFocusGroup","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","currentTabStopId","setCurrentTabStopId","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","tabStopId","prevCount","isKeyboardFocus","entryFocusEvent","activeItem","currentItem","candidateNodes","RovingFocusGroupItem","focusable","active","itemProps","autoId","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","startIndex","_","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","parent","targets","correctedTarget","applyAttributeToOthers","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","__assign","s","p","__rest","t","__spreadArray","to","from","pack","l","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","initialValue","useState","useIsomorphicLayoutEffect","currentValues","useMergeRefs","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","innerCreateMedium","defaults","buffer","assigned","medium","cb","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","SideCar","sideCar","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","removeScrollBar","enabled","shards","noIsolation","inert","allowPinchZoom","gapMode","containerRef","containerProps","getNonce","makeStyleTag","nonce","injectStyles","insertStyleTag","head","stylesheetSingleton","counter","stylesheet","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","right","getGapWidth","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noRelative","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","current","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","position","scroll_1","capacity","elementScroll","getTouchXY","getDeltaXY","extractRef","deltaCompare","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","SELECTION_KEYS","FIRST_KEYS","LAST_KEYS","FIRST_LAST_KEYS","SUB_OPEN_KEYS","SUB_CLOSE_KEYS","MENU_NAME","createMenuContext","createMenuScope","usePopperScope","useRovingFocusGroupScope","MenuProvider","useMenuContext","MenuRootProvider","useMenuRootContext","__scopeMenu","modal","popperScope","isUsingKeyboardRef","handleOpenChange","handlePointer","PopperPrimitive.Root","MenuAnchor","PopperPrimitive.Anchor","PortalProvider","usePortalContext","MenuPortal","PortalPrimitive","MenuContentProvider","useMenuContentContext","MenuContent","portalContext","rootContext","MenuRootContentModal","MenuRootContentNonModal","MenuContentImpl","trapFocus","onOpenAutoFocus","onCloseAutoFocus","disableOutsideScroll","rovingFocusGroupScope","currentItemId","setCurrentItemId","contentRef","timerRef","searchRef","pointerGraceTimerRef","pointerGraceIntentRef","pointerDirRef","lastPointerXRef","ScrollLockWrapper","scrollLockWrapperProps","handleTypeaheadSearch","search","currentMatch","values","nextMatch","getNextMatch","newItem","updateSearch","isPointerMovingToSubmenu","isPointerInGraceArea","intent","RovingFocusGroup.Root","PopperPrimitive.Content","getOpenState","isKeyDownInside","isModifierKey","isCharacterKey","whenMouse","pointerXHasChanged","newDir","MenuGroup","LABEL_NAME","MenuLabel","labelProps","ITEM_SELECT","MenuItem","onSelect","isPointerDownRef","handleSelect","menuItem","itemSelectEvent","MenuItemImpl","isTypingAhead","textValue","isFocused","setIsFocused","textContent","setTextContent","RovingFocusGroup.Item","CHECKBOX_ITEM_NAME","MenuCheckboxItem","checkboxItemProps","ItemIndicatorProvider","getCheckedState","RADIO_GROUP_NAME","RadioGroupProvider","useRadioGroupContext","MenuRadioGroup","RADIO_ITEM_NAME","MenuRadioItem","radioItemProps","ITEM_INDICATOR_NAME","useItemIndicatorContext","MenuItemIndicator","itemIndicatorProps","indicatorContext","SEPARATOR_NAME","MenuSeparator","separatorProps","MenuArrow","PopperPrimitive.Arrow","SUB_NAME","MenuSubProvider","useMenuSubContext","MenuSub","parentMenuContext","trigger","setTrigger","SUB_TRIGGER_NAME","MenuSubTrigger","subContext","openTimerRef","onPointerGraceIntentChange","clearOpenTimer","pointerGraceTimer","contentRect","rightSide","bleed","contentNearEdge","contentFarEdge","SUB_CONTENT_NAME","MenuSubContent","subContentProps","isCloseKey","normalizedSearch","char","currentMatchIndex","wrappedValues","isPointInPolygon","point","polygon","inside","j","ii","jj","xi","yi","xj","yj","area","cursorPos","Root3","Anchor2","Group","Item2","CheckboxItem","RadioGroup","RadioItem","ItemIndicator","Separator","Arrow2","Sub","SubTrigger","SubContent","DROPDOWN_MENU_NAME","createDropdownMenuContext","createDropdownMenuScope","useMenuScope","DropdownMenuProvider","useDropdownMenuContext","DropdownMenu","__scopeDropdownMenu","menuScope","triggerRef","MenuPrimitive.Root","DropdownMenuTrigger","MenuPrimitive.Anchor","DropdownMenuPortal","MenuPrimitive.Portal","DropdownMenuContent","hasInteractedOutsideRef","MenuPrimitive.Content","originalEvent","ctrlLeftClick","isRightClick","DropdownMenuGroup","MenuPrimitive.Group","DropdownMenuLabel","MenuPrimitive.Label","DropdownMenuItem","MenuPrimitive.Item","DropdownMenuCheckboxItem","MenuPrimitive.CheckboxItem","DropdownMenuRadioGroup","radioGroupProps","MenuPrimitive.RadioGroup","DropdownMenuRadioItem","MenuPrimitive.RadioItem","DropdownMenuItemIndicator","MenuPrimitive.ItemIndicator","DropdownMenuSeparator","MenuPrimitive.Separator","DropdownMenuArrow","MenuPrimitive.Arrow","DropdownMenuSub","MenuPrimitive.Sub","DropdownMenuSubTrigger","subTriggerProps","MenuPrimitive.SubTrigger","DropdownMenuSubContent","MenuPrimitive.SubContent","Portal2","Group2","Label2","Separator2","Sub2","SubTrigger2","SubContent2","DropdownMenuPrimitive.Root","DropdownMenuPrimitive.Trigger","DropdownMenuPrimitive.Group","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.Sub","inset","DropdownMenuPrimitive.SubTrigger","DropdownMenuPrimitive.SubContent","DropdownMenuPrimitive.Content","DropdownMenuPrimitive.Item","DropdownMenuPrimitive.Label","DropdownMenuPrimitive.Separator","_typeof","o","toPrimitive","toPropertyKey","_defineProperty","ownKeys","_objectSpread2","defineProperty","_arrayWithHoles","_iterableToArrayLimit","u","_arrayLikeToArray","_unsupportedIterableToArray","arrayLikeToArray","_nonIterableRest","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_objectWithoutPropertiesLoose","_objectWithoutProperties","objectWithoutPropertiesLoose","_excluded","useStateManager","_ref$defaultInputValu","defaultInputValue","_ref$defaultMenuIsOpe","defaultMenuIsOpen","_ref$defaultValue","propsInputValue","propsMenuIsOpen","propsOnChange","propsOnInputChange","propsOnMenuClose","propsOnMenuOpen","propsValue","restSelectProps","_useState","_useState2","stateInputValue","setStateInputValue","_useState3","_useState4","stateMenuIsOpen","setStateMenuIsOpen","_useState5","_useState6","stateValue","setStateValue","useCallback","actionMeta","onInputChange","onMenuOpen","onMenuClose","inputValue","menuIsOpen","_objectSpread","_extends","_classCallCheck","_defineProperties","_createClass","_setPrototypeOf","_inherits","setPrototypeOf","_getPrototypeOf","_isNativeReflectConstruct","_assertThisInitialized","_possibleConstructorReturn","assertThisInitialized","_createSuper","isNativeReflectConstruct","getPrototypeOf","possibleConstructorReturn","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_toConsumableArray","arrayWithoutHoles","iterableToArray","nonIterableSpread","sheetForTag","createStyleElement","StyleSheet","_this","before","_proto","rule","_tag$parentNode","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","IMPORT","KEYFRAMES","LAYER","abs","assign","hash","charat","trim","pattern","replace","replacement","indexof","substr","begin","strlen","sizeof","append","combine","line","column","character","characters","copy","prev","next","peek","caret","slice","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","commenter","identifier","compile","rules","rulesets","pseudo","points","declarations","atrule","previous","variable","scanning","ampersand","comment","declaration","ruleset","post","z","serialize","output","stringify","collection","rulesheet","memoize","arg","identifierWithPointTracking","toRules","parsed","getRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","prefixer","defaultStylisPlugins","createCache","ssrStyles","dataEmotionAttribute","stylisPlugins","inserted","nodesToHydrate","attrib","_insert","omnipresentPlugins","currentSheet","finalizingPlugins","serializer","stylis","serialized","shouldCache","c","g","h","m","q","w","A","reactIs_production_min","hasSymbol","REACT_PROVIDER_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","typeOf","object","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","reactIs","REACT_STATICS","KNOWN_STATICS","FORWARD_REF_STATICS","MEMO_STATICS","TYPE_STATICS","getStatics","component","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","hoistNonReactStatics_cjs","isBrowser","getRegisteredStyles","registered","registeredStyles","rawClassName","registerStyles","isStringTag","insertStyles","murmur2","str","unitlessKeys","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","unitless","handleInterpolation","mergedProps","interpolation","componentSelector","keyframes","serializedStyles","createStringFromObject","previousCursor","asString","obj","_i","interpolated","labelPattern","serializeStyles","stringMode","strings","asTemplateStringsArr","templateStringsArr","identifierName","hashString","syncFallback","create","useInsertionEffectAlwaysWithSyncFallback","EmotionCacheContext","withEmotionCache","useContext","ThemeContext","hasOwn","typePropName","createEmotionProps","newProps","_key","Insertion","Emotion","cssProp","WrappedComponent","_key2","Emotion$1","argsLength","createElementArgArray","_jsx","JSX","_len","insertable","_taggedTemplateLiteral","_excluded$4","noop","applyPrefixToName","classNameList","arr","cleanValue","isArray","cleanCommonProps","innerProps","getStyleProps","classNamesState","getClassNames","isDocumentElement","normalizedHeight","getScrollTop","scrollTo","getScrollParent","excludeStaticParent","overflowRx","easeOutCubic","animatedScrollTo","duration","change","increment","currentTime","animateScroll","val","scrollIntoView","menuEl","focusedEl","menuRect","focusedRect","overScroll","getBoundingClientObj","isTouchCapable","isMobileDevice","passiveOptionAccessed","supportsPassiveEvents","notNullish","valueTernary","isMulti","multiValue","singleValue","removeProps","propsObj","_len2","properties","propsMap","_ref2","_ref3","_ref4","_excluded$3","_excluded2$1","getMenuPlacement","preferredMaxHeight","preferredPlacement","shouldScroll","isFixedPosition","controlHeight","scrollParent","defaultState","_scrollParent$getBoun","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","_menuEl$offsetParent$","containerTop","viewHeight","marginBottom","marginTop","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","scrollDuration","constrainedHeight","_constrainedHeight","spaceAbove","_constrainedHeight2","alignToControl","placementToCSSProp","coercePlacement","menuCSS","unstyled","_ref2$theme","borderRadius","spacing","colors","PortalPlacementContext","createContext","MenuPlacer","minMenuHeight","maxMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","setPortalPlacement","useRef","maxHeight","setMaxHeight","setPlacement","innerRef","Menu$1","menuListCSS","baseUnit","MenuList","noticeCSS","_ref5","_ref5$theme","noOptionsMessageCSS","loadingMessageCSS","NoOptionsMessage","_ref6","_ref6$children","restProps","LoadingMessage","_ref7","_ref7$children","menuPortalCSS","_ref8","appendTo","controlElement","menuPortalRef","cleanupRef","portalPlacementContext","useMemo","_useState7","_useState8","computedPosition","setComputedPosition","updateComputedPosition","scrollDistance","runAutoUpdate","setMenuPortalElement","menuPortalElement","menuWrapper","createPortal","containerCSS","isDisabled","isRtl","SelectContainer","valueContainerCSS","hasValue","controlShouldRenderValue","ValueContainer","indicatorsContainerCSS","IndicatorsContainer","_templateObject","_excluded$2","_excluded2","_EMOTION_STRINGIFIED_CSS_ERROR__","Svg","CrossIcon","DownChevron","baseCSS","_ref3$theme","dropdownIndicatorCSS","DropdownIndicator","clearIndicatorCSS","ClearIndicator","indicatorSeparatorCSS","_ref4$theme","IndicatorSeparator","loadingDotAnimations","loadingIndicatorCSS","LoadingDot","delay","css$2","LoadingIndicator","_ref7$size","css$1","_ref$theme","Control","Control$1","_excluded$1","groupCSS","Heading","headingProps","selectProps","groupHeadingCSS","GroupHeading","_cleanCommonProps","Group$1","inputCSS","containerStyle","spacingStyle","inputStyle","Input","inputClassName","Input$1","multiValueCSS","multiValueLabelCSS","cropWithEllipsis","multiValueRemoveCSS","MultiValueGeneric","MultiValueContainer","MultiValueLabel","MultiValueRemove","MultiValue","components","Remove","MultiValue$1","optionCSS","isSelected","Option","Option$1","placeholderCSS","Placeholder","Placeholder$1","SingleValue","SingleValue$1","defaultComponents","safeIsNaN","isEqual","second","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","memoized","newArgs","lastResult","_EMOTION_STRINGIFIED_CSS_ERROR__$2","A11yText","A11yText$1","defaultAriaLiveMessages","isSearchable","tabSelectsValue","isInitialFocus","action","_props$label","labels","focused","_props$label2","selectValue","isAppleDevice","getArrayIndex","status","resultsMessage","LiveRegion","ariaSelection","focusedOption","focusedValue","focusableOptions","ariaLiveMessages","getOptionLabel","isOptionDisabled","screenReaderStatus","isLoading","ariaLabel","ariaLive","messages","ariaSelected","message","option","selectedOptions","removedValue","removedValues","asOption","selected","multiSelected","onChangeProps","ariaFocused","focusMsg","onFocusProps","ariaResults","resultsMsg","ariaGuidance","guidanceMsg","ScreenReaderText","LiveRegion$1","diacritics","anyDiacritic","diacriticToBase","diacritic","stripDiacritics","memoizedStripDiacriticsForInput","trimString","defaultStringify","createFilter","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","matchFrom","DummyInput","filteredProps","cancelScroll","useScrollCapture","isEnabled","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","isBottom","isTop","scrollTarget","handleEventDelta","_scrollTarget$current","onWheel","onTouchStart","onTouchMove","startListening","notPassive","stopListening","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","canUseDOM","activeScrollLocks","listenerOptions","useScrollLock","_ref$accountForScroll","accountForScrollbars","originalStyles","addScrollLock","touchScrollTarget","targetStyle","currentPadding","adjustedPadding","removeScrollLock","_EMOTION_STRINGIFIED_CSS_ERROR__$1","blurSelectInput","_ref2$1","ScrollManager","lockEnabled","_ref$captureEnabled","captureEnabled","setScrollCaptureTarget","setScrollLockTarget","targetRef","RequiredInput","onFocus","RequiredInput$1","testPlatform","re","_window$navigator$use","isIPhone","isMac","isIPad","isIOS","formatGroupLabel","getOptionLabel$1","getOptionValue$1","defaultStyles","menuGutter","defaultTheme","defaultProps","toCategorizedOption","_isOptionDisabled","_isOptionSelected","getOptionValue","buildCategorizedOptions","groupOrOption","groupOrOptionIndex","categorizedOptions","optionIndex","categorizedOption","isFocusable","buildFocusableOptionsFromCategorizedOptions","optionsAccumulator","buildFocusableOptionsWithIds","optionId","buildFocusableOptions","_props$inputValue","shouldHideSelectedOptions","_filterOption","getNextFocusedValue","nextSelectValue","lastSelectValue","lastFocusedIndex","nextFocusedIndex","getNextFocusedOption","lastFocusedOption","getFocusedOptionId","focusableOptionsWithIds","_focusableOptionsWith","focusedOptionId","hideSelectedOptions","instanceId","Select","_Component","_super","_props","_this$props","_this$props2","closeMenuOnSelect","_this$props3","blurInputOnSelect","deselected","newValueArray","lastSelectedValue","custom","_this$props$className","_this$props$className2","openMenuOnClick","_this$props4","touches","moveThreshold","prevInputValue","focusedOptionIndex","_this$props5","backspaceRemovesValue","escapeClearsValue","isClearable","openMenuOnFocus","_this$state","prevProps","_this$props6","focusOption","_this2","_this$state2","openAtIndex","selectedIndex","_this$state3","focusedIndex","lastIndex","nextFocus","pageSize","clearValue","getValue","selectOption","_this$props7","_inputValue","_selectValue","_this$props8","inputId","tabIndex","_this$getComponents","_this$state4","inputIsHidden","commonProps","ariaAttributes","_this3","_this$getComponents2","_this$props9","placeholder","_this$state5","opt","isOptionFocused","_this$getComponents3","_this$props10","_this$getComponents4","_this$props11","_this$getComponents5","_this$getComponents6","_this4","_this$getComponents7","_this$props12","captureMenuScroll","loadingMessage","menuPortalTarget","menuShouldBlockScroll","noOptionsMessage","onMenuScrollToTop","onMenuScrollToBottom","render","onHover","menuUI","_data","groupIndex","groupId","headingId","_message","menuPlacementProps","menuElement","_ref4$placerProps","scrollTargetRef","instance","_this5","_this$props13","_value","_this$state6","_this$getComponents8","_this$props14","clearFocusValueOnUpdate","inputIsHiddenAfterUpdate","prevWasFocused","instancePrefix","newMenuOptionsState","newInputIsHiddenState","newAriaSelection","hasKeptFocus","StateManagedSelect","baseSelectProps","StateManagedSelect$1","maxTagCount","extraCount","selectVariants","CustomDropdownIndicator","customComponents","DropdownSelect","truncateLabel","paragraphVariant","P","leading","heading1Variant","H1","headingVariant","H2","H3","H4","H5","H6","Cite","Code","Blockquote","FileUpload","onFileChange","idForHtml","files","setFiles","handleFileChange","updatedFiles","handleRemoveFile","file","Footer","FooterLogoUnit","link","FooterMainNavUnit","FooterCopyrightUnit","HeaderLogoUnit","siteName","siteSubName","hyperlink","HeaderMainNavUnit","showMenu","setShowMenu","HeaderMenuUnit","HeaderActions","originalBodyUserSelect","HOVERCARD_NAME","createHoverCardContext","createHoverCardScope","HoverCardProvider","useHoverCardContext","HoverCard","__scopeHoverCard","openDelay","closeDelay","closeTimerRef","hasSelectionRef","isPointerDownOnContentRef","handleOpen","handleClose","handleDismiss","HoverCardTrigger","excludeTouch","HoverCardContent","HoverCardContentImpl","containSelection","setContainSelection","handlePointerUp","getTabbableNodes","tabbable","HoverCardArrow","eventHandler","HoverCardPrimitive.Root","HoverCardPrimitive.Trigger","HoverCardPrimitive.Content","inputVariants","inputSize","buttonClassName","onSearch","searchOnlyOnClick","buttonVariant","buttonChildren","showSearchButton","inputVariant","query","setQuery","SearchIcon","VISUALLY_HIDDEN_STYLES","VisuallyHidden","OPEN_KEYS","SELECT_NAME","createSelectContext","createSelectScope","SelectProvider","useSelectContext","SelectNativeOptionsProvider","useSelectNativeOptionsContext","__scopeSelect","autoComplete","valueNode","setValueNode","valueNodeHasChildren","setValueNodeHasChildren","triggerPointerDownPosRef","nativeOptionsSet","setNativeOptionsSet","nativeSelectKey","optionsSet","SelectBubbleInput","SelectTrigger","pointerTypeRef","resetTypeahead","useTypeaheadSearch","enabledItems","nextItem","findNextItem","pointerEvent","shouldShowPlaceholder","VALUE_NAME","SelectValue","valueProps","onValueNodeHasChildrenChange","hasChildren","ICON_NAME","SelectIcon","iconProps","SelectPortal","SelectContent","fragment","setFragment","frag","SelectContentProvider","SelectContentImpl","CONTENT_MARGIN","useSelectContentContext","CONTENT_IMPL_NAME","viewport","setViewport","selectedItem","setSelectedItem","selectedItemText","setSelectedItemText","setIsPositioned","firstValidItemFoundRef","firstItem","restItems","lastItem","focusSelectedItem","pointerMoveDelta","handlePointerMove","close","itemRefCallback","isFirstValidItem","handleItemLeave","itemTextRefCallback","SelectPosition","SelectPopperPosition","SelectItemAlignedPosition","popperContentProps","currentElement","ITEM_ALIGNED_POSITION_NAME","popperProps","contentWrapper","setContentWrapper","shouldExpandOnScrollRef","shouldRepositionRef","triggerRect","valueNodeRect","itemTextRect","itemTextOffset","leftDelta","minContentWidth","contentWidth","rightEdge","clampedLeft","rightDelta","leftEdge","clampedRight","itemsHeight","contentStyles","contentBorderTopWidth","contentPaddingTop","contentBorderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","contentTopToItemMiddle","itemMiddleToContentBottom","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","isFirstItem","handleScrollButtonChange","SelectViewportProvider","POPPER_POSITION_NAME","useSelectViewportContext","VIEWPORT_NAME","SelectViewport","viewportProps","viewportContext","prevScrollTopRef","scrolledBy","cssMinHeight","cssHeight","prevHeight","nextHeight","clampedNextHeight","heightDiff","SelectGroupContextProvider","useSelectGroupContext","SelectGroup","SelectLabel","groupContext","SelectItemContextProvider","useSelectItemContext","SelectItem","textValueProp","setTextValue","textId","prevTextValue","ITEM_TEXT_NAME","SelectItemText","itemTextProps","nativeOptionsContext","itemTextNode","setItemTextNode","nativeOption","onNativeOptionAdd","onNativeOptionRemove","SelectItemIndicator","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","canScrollUp","setCanScrollUp","handleScroll2","canScrollUp2","SelectScrollButtonImpl","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","canScrollDown","setCanScrollDown","maxScroll","canScrollDown2","onAutoScroll","scrollIndicatorProps","autoScrollTimerRef","clearAutoScrollTimer","SelectSeparator","SelectArrow","selectProto","onSearchChange","handleSearchChange","currentItemIndex","wrappedItems","Value","Viewport","ItemText","SDG1","background","SDG2","SDG3","SDG4","SDG5","SDG6","SDG7","SDG8","SDG9","SDG10","SDG11","SDG12","SDG13","SDG14","SDG15","SDG16","SDG17","LanguageSwitcherIcon","LanguageSelect","SelectPrimitive.Root","LanguageSelectValue","SelectPrimitive.Value","LanguageSelectTrigger","SelectPrimitive.Trigger","SelectPrimitive.Icon","LanguageSelectContent","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","LanguageSelectItem","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","SelectPrimitive.ItemText","LanguageSwitcher","Ol","Ul","Li","UndpLogoBlue","UndpLogoWhite","UNDPLogo","DIALOG_NAME","createDialogContext","createDialogScope","DialogProvider","useDialogContext","Dialog","__scopeDialog","DialogTrigger","composedTriggerRef","DialogPortal","OVERLAY_NAME","DialogOverlay","overlayProps","DialogOverlayImpl","DialogContent","DialogContentModal","DialogContentNonModal","DialogContentImpl","hasPointerDownOutsideRef","TitleWarning","DescriptionWarning","TITLE_NAME","DialogTitle","titleProps","DESCRIPTION_NAME","DialogDescription","descriptionProps","CLOSE_NAME","DialogClose","closeProps","TITLE_WARNING_NAME","WarningProvider","useWarningContext","titleId","titleWarningContext","MESSAGE","DESCRIPTION_WARNING_NAME","descriptionId","describedById","Overlay","Title","Description","DialogPrimitive.Root","DialogPrimitive.Portal","DialogPrimitive.Overlay","DialogPrimitive.Content","DialogHeader","DialogFooter","DialogPrimitive.Title","DialogPrimitive.Description","Modal","title","description","footer","onClose","titleClassName","footerClassName","descriptionClassName","showCloseButton","settings","nameRe","nameReJsx","emptyOptions","thing","empty","Schema","normal","space","merge","definitions","definition","normalize","Info","attribute","powers","boolean","booleanish","overloadedBoolean","number","spaceSeparated","commaSeparated","commaOrSpaceSeparated","checks","types","DefinedInfo","mask","mark","check","normals","info","aria","caseSensitiveTransform","attributes","caseInsensitiveTransform","svg","xlink","xmlns","xml","hastToReact","cap","dash","valid","find","schema","Type","camelcase","dashes","kebab","$0","htmlBase","svgBase","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","NEWLINE","FORWARD_SLASH","ASTERISK","EMPTY_STRING","TYPE_COMMENT","TYPE_DECLARATION","inlineStyleParser","lineno","updatePosition","lines","Position","error","msg","err","comments","pos","ret","decls","decl","__importDefault","this","mod","cjs","StyleToObject","inline_style_parser_1","iterator","styleObject","hasIterator","utilities","CUSTOM_PROPERTY_REGEX","HYPHEN_REGEX","NO_HYPHEN_REGEX","VENDOR_PREFIX_REGEX","MS_VENDOR_PREFIX_REGEX","skipCamelCase","capitalize","trimHyphen","style_to_object_1","utilities_1","StyleToJS","pointEnd","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","origin","reason","legacyCause","own","emptyMap","tableElements","tableCellElement","docs","toJsxRuntime","tree","filePath","developmentCreate","productionCreate","one","mdxExpression","mdxJsxElement","mdxEsm","text","parentSchema","findComponentFromName","createElementProps","createChildren","addNode","addChildren","expression","assert","crashEstree","createJsxElementProps","jsxDEV","alignValue","createProperty","objectExpression","countsByName","commas","spaces","parseStyle","transformStylesToCssCasing","styleToJs","cause","allowExpression","identifiers","isIdentifierName","place","domCasing","cssCasing","transformStyleToCssCasing","toDash","urlAttributes","toString","includeImageAlt","includeHtml","all","decodeNamedCharacterReference","characterReference","splice","remove","chunkStart","parameters","push","combineExtensions","extensions","syntaxExtension","extension","hook","code","constructs","existing","decodeNumericCharacterReference","normalizeIdentifier","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","normalizeUri","factorySpace","effects","ok","limit","initializeContent","contentStart","afterContentStartConstruct","paragraphInitial","lineStart","document","initializeDocument","containerConstruct","tokenizeContainer","continued","childFlow","childToken","lineStartOffset","documentContinue","checkNewContainers","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","flowStart","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","endOfFile","stream","seen","nok","classifyCharacter","resolveAll","events","called","resolve","attention","resolveAllAttention","tokenizeAttention","openingSequence","closingSequence","use","nextEvents","movePoint","attentionMarkers","marker","after","autolink","tokenizeAutolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","blankLine","tokenizeBlankLine","blockQuote","tokenizeBlockQuoteContinuation","exit","tokenizeBlockQuoteStart","contStart","contBefore","characterEscape","tokenizeCharacterEscape","tokenizeCharacterReference","test","numeric","nonLazyContinuation","tokenizeNonLazyContinuation","codeFenced","tokenizeCodeFenced","closeStart","tokenizeCloseStart","initialPrefix","sizeOpen","beforeSequenceOpen","tail","sequenceOpen","infoBefore","atNonLazyBreak","metaBefore","meta","contentBefore","beforeContentChunk","contentChunk","startBefore","beforeSequenceClose","sequenceClose","sequenceCloseAfter","codeIndented","tokenizeCodeIndented","furtherStart","tokenizeFurtherStart","afterPrefix","atBreak","codeText","resolveCodeText","tokenizeCodeText","tailExitIndex","headEnterIndex","enter","between","SpliceBuffer","initial","stop","deleteCount","removed","chunkedPush","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","more","subcontent","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","adjust","breaks","resolveContent","tokenizeContent","continuationConstruct","tokenizeContinuation","chunkInside","contentEnd","contentContinue","startLookahead","prefixed","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","escape","factoryWhitespace","tokenizeDefinition","titleBefore","tokenizeTitleBefore","labelAfter","markerAfter","destinationBefore","destinationAfter","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","hardBreakEscape","tokenizeHardBreakEscape","headingAtx","resolveHeadingAtx","tokenizeHeadingAtx","sequenceFurther","htmlBlockNames","htmlRawNames","htmlFlow","resolveToHtmlFlow","tokenizeHtmlFlow","blankLineBefore","tokenizeBlankLineBefore","nonLazyContinuationStart","tokenizeNonLazyContinuationStart","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","tagName","commentOpenInside","cdataOpenInside","continuation","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationAfter","continuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","htmlText","tokenizeHtmlText","returnState","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelEnd","resolveAllLabelEnd","resolveToLabelEnd","tokenizeLabelEnd","resourceConstruct","tokenizeResource","referenceFullConstruct","tokenizeReferenceFull","referenceCollapsedConstruct","tokenizeReferenceCollapsed","newEvents","media","labelStart","defined","labelEndNok","labelEndOk","referenceNotFull","resourceStart","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFull","referenceFullAfter","referenceFullMissing","referenceCollapsedStart","referenceCollapsedOpen","labelStartImage","tokenizeLabelStartImage","labelStartLink","tokenizeLabelStartLink","lineEnding","tokenizeLineEnding","thematicBreak","tokenizeThematicBreak","sequence","tokenizeListContinuation","tokenizeListEnd","tokenizeListStart","listItemPrefixWhitespaceConstruct","tokenizeListItemPrefixWhitespace","indentConstruct","tokenizeIndent","initialSize","kind","atMarker","onBlank","endOfPrefix","otherPrefix","notBlank","notInCurrentItem","setextUnderline","resolveToSetextUnderline","tokenizeSetextUnderline","heading","paragraph","flow","initializeFlow","atBlankEnding","afterConstruct","resolver","createResolver","initializeFactory","field","resolveAllLineSuffixes","initializeText","notText","extraResolver","resolveAllText","chunks","bufferIndex","tabs","chunk","contentInitial","flowInitial","insideSpan","resolveText","disable","createTokenizer","parser","initialize","columnStart","resolveAllConstructs","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","consume","defineSkip","now","sliceSerialize","sliceStream","write","main","addResult","expandTabs","serializeChunks","sliceChunks","_bufferIndex","_index","accountForPotentialSkip","chunkIndex","go","fields","construct","onreturn","bogusState","listOfConstructs","constructIndex","currentConstruct","handleListOfConstructs","handleMapOfConstructs","map","handleConstruct","store","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","restore","startBufferIndex","endBufferIndex","view","atTab","defaultConstructs","creator","postprocess","preprocess","atCarriageReturn","preprocessor","encoding","endPosition","characterEscapeOrReference","decodeString","decode","$1","$2","hex","fromMarkdown","compiler","opener","onenterdata","codeFlow","emphasis","hardBreak","image","listItem","onenterlistitemvalue","onenterlistordered","onenterreference","strong","closer","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","onexitdata","onexitcharacterreferencemarker","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","onexitsetextheadinglinesequence","onexitsetextheadingtext","configure","resume","listStack","prepareList","defaultOnError","containerBalance","listSpread","firstBlankLineIndex","tailIndex","tailEvent","and","errorHandler","onExitError","depth","siblings","referenceType","combined","remarkParse","doc","blockquote","strikethrough","footnoteReference","clobberPrefix","safeId","reuseCounter","sup","revert","subtype","suffix","contents","imageReference","inlineCode","linkReference","results","loose","listLoose","listItemLoose","spread","table","rows","firstRow","tableContent","tableRow","cellIndex","cells","cell","tableCell","tab","trimLines","trimLine","handlers","ignore","VOID","PRIMITIVE","ARRAY","OBJECT","DATE","REGEXP","MAP","SET","ERROR","BIGINT","env","deserializer","as","out","unpair","flags","set","deserialize","EMPTY","shouldSkip","TYPE","strict","json","pair","lossy","structuredClone$1","any","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","tailTail","structuredClone","convert","castFactory","anyFactory","propsFactory","typeFactory","tests","checkAsRecord","nodeAsRecord","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","reverse","is","step","factory","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","overload","createState","definitionById","footnoteById","footnoteCounts","defaultHandlers","applyData","patch","wrap","handle","shallow","defaultUnknownHandler","trimMarkdownSpaceStart","hName","hChildren","hProperties","toHast","foot","remarkRehype","destination","hastTree","bail","toStr","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","extend","src","copyIsArray","clone","prototype","trough","fns","pipeline","run","middlewareIndex","middelware","wrapped","fnExpectsCallback","done","exception","then","minpath","basename","dirname","extname","join","assertPath","seenNonSlash","firstNonSlashEnd","extnameIndex","unmatchedSlash","startPart","startDot","preDotState","segments","joined","absolute","normalizeString","allowAboveRoot","lastSegmentLength","lastSlash","dots","lastSlashIndex","minproc","cwd","isUrl","fileUrlOrPath","urlToPath","getPathFromURLPosix","url","pathname","third","order","VFile","isUint8Array","assertNonEmpty","assertPart","stem","part","CallableInstance","proto","Processor","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","assertCompiler","executor","reject","parseTree","realDone","compileTree","compileResult","looksLikeAValue","complete","assertDone","assertNode","transformers","outputTree","resultingTree","attachers","namespace","addPlugin","addList","addPreset","add","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","frozen","asyncName","looksLikeAVFile","changelog","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","processor","createProcessor","createFile","rehypePlugins","remarkPlugins","remarkRehypeOptions","allowedElements","allowElement","disallowedElements","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","deprecation","colon","questionMark","numberSign","ccount","escapeStringRegexp","findAndReplace","ignored","pairs","toPairs","pairIndex","grandparent","matchObject","tupleOrList","tuple","toExpression","toFunction","inConstruct","notInConstruct","gfmAutolinkLiteralFromMarkdown","transformGfmAutolinkLiterals","enterLiteralAutolink","enterLiteralAutolinkValue","exitLiteralAutolink","exitLiteralAutolinkEmail","exitLiteralAutolinkHttp","exitLiteralAutolinkWww","gfmAutolinkLiteralToMarkdown","findUrl","findEmail","protocol","domain","isCorrectDomain","parts","splitUrl","atext","trailExec","trail","closingParenIndex","openingParens","closingParens","email","footnoteReferencePeek","enterFootnoteCallString","enterFootnoteCall","enterFootnoteDefinitionLabelString","enterFootnoteDefinition","exitFootnoteCallString","exitFootnoteCall","exitFootnoteDefinitionLabelString","exitFootnoteDefinition","tracker","subexit","gfmFootnoteFromMarkdown","gfmFootnoteToMarkdown","firstLineBlank","footnoteDefinition","mapAll","mapExceptFirst","blank","constructsWithoutStrikethrough","handleDelete","peekDelete","gfmStrikethroughFromMarkdown","enterStrikethrough","exitStrikethrough","gfmStrikethroughToMarkdown","defaultStringLength","markdownTable","stringLength","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","row","sizes","columnIndex","toAlignment","patternInScope","listInScope","none","_1","longestStreak","substring","expected","formatCodeAsIndented","checkFence","checkQuote","quote","checkEmphasis","encodeCharacterReference","encodeInfo","outside","outsideKind","insideKind","emphasisPeek","betweenHead","betweenTail","formatHeadingAsSetext","literalWithBreak","rank","htmlPeek","imagePeek","imageReferencePeek","alt","inlineCodePeek","formatLinkAsAutolink","linkPeek","linkReferencePeek","checkBullet","checkBulletOther","bullet","bulletOther","checkBulletOrdered","checkRule","bulletCurrent","useDifferentMarker","firstListItem","checkListItemIndent","listItemIndent","phrasing","checkStrong","strongPeek","checkRuleRepetition","repetition","gfmTableFromMarkdown","enterTable","enterCell","enterRow","exitCodeText","exitTable","gfmTableToMarkdown","alignDelimiters","around","inlineCodeWithTable","handleTable","handleTableCell","handleTableRow","serializeData","handleTableAsData","handleTableRowAsData","matrix","gfmTaskListItemFromMarkdown","exitCheck","exitParagraphWithTaskListItem","gfmTaskListItemToMarkdown","listItemWithTaskListItem","firstParaghraph","sibling","checkable","checkbox","gfmFromMarkdown","gfmToMarkdown","wwwPrefix","tokenizeWwwPrefix","tokenizeDomain","tokenizePath","tokenizeTrail","emailDomainDotTrail","tokenizeEmailDomainDotTrail","wwwAutolink","tokenizeWwwAutolink","previousWww","protocolAutolink","tokenizeProtocolAutolink","previousProtocol","emailAutolink","tokenizeEmailAutolink","previousEmail","gfmAutolinkLiteral","dot","gfmAtext","previousUnbalanced","emailDomain","emailDomainAfter","emailDomainDot","wwwStart","wwwAfter","protocolStart","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharacterReferenceStart","trailBracketAfter","trailCharacterReferenceInside","indent","gfmFootnote","tokenizeDefinitionStart","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","tokenizeGfmFootnoteCall","tokenizePotentialGfmFootnoteCall","resolveToPotentialGfmFootnoteCall","call","callStart","callData","callEscape","labelAtMarker","whitespaceAfter","gfmStrikethrough","single","tokenizeStrikethrough","resolveAllStrikethrough","EditMap","addImplementation","vecs","editMap","at","gfmTableAlign","inDelimiterRow","alignIndex","gfmTable","tokenizeTable","resolveTable","sizeB","bodyRowStart","headRowBefore","headRowStart","headRowBreak","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","currentTable","currentBody","currentCell","flushTableEnd","flushCell","range","rowEnd","previousCell","groupName","valueName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","tasklistCheck","tokenizeTasklistCheck","gfmTaskListItem","spaceThenNonSpace","gfm","remarkGfm","micromarkExtensions","fromMarkdownExtensions","toMarkdownExtensions","MarkdownRenderer","ReactMarkdown","PaginationUnit","PaginationContent","PaginationItem","PaginationLink","PaginationPrevious","PaginationNext","PaginationEllipsis","getPageNumbers","currentPageNo","totalPages","pages","Pagination","defaultPage","total","currentPage","setCurrentPage","pageNumbers","setPageNumbers","page","POPOVER_NAME","createPopoverContext","createPopoverScope","PopoverProvider","usePopoverContext","Popover","__scopePopover","hasCustomAnchor","setHasCustomAnchor","PopoverAnchor","onCustomAnchorAdd","onCustomAnchorRemove","PopoverTrigger","PopoverPortal","PopoverContent","PopoverContentModal","PopoverContentNonModal","isRightClickOutsideRef","PopoverContentImpl","PopoverClose","PopoverArrow","PopoverPrimitive.Root","PopoverPrimitive.Trigger","PopoverPrimitive.Anchor","PopoverPrimitive.Portal","PopoverPrimitive.Content","RADIO_NAME","createRadioContext","createRadioScope","RadioProvider","useRadioContext","Radio","__scopeRadio","onCheck","radioProps","button","setButton","RadioBubbleInput","RadioIndicator","ARROW_KEYS","createRadioGroupContext","createRadioGroupScope","createContextScope2","useRadioScope","__scopeRadioGroup","jsx2","Primitive2","RadioGroupItem","radioScope","useComposedRefs2","isArrowKeyPressedRef","handleKeyUp","composeEventHandlers2","INDICATOR_NAME2","RadioGroupIndicator","Indicator","radioVariants","radioCheckVariants","RadioGroupContext","RadioGroupPrimitive.Root","radioClassName","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator","SdgBorder","sdgList","barClassName","SDGIcons","sdg","segmentedButtonVariants","buttonSelectedVariants","buttonUnselectedVariants","SegmentedControl","activeButtonClassName","setSelected","DEFAULT_ORIENTATION","ORIENTATIONS","decorative","orientationProp","domProps","isValidOrientation","semanticProps","SeparatorPrimitive.Root","SidebarContext","Sidebar","activeValue","activeItemClass","hoverItemClass","selectedValue","setSelectedValue","SidebarItem","appendClass","parseValue","newClass","module","useEvent","fnRef","memoFn","_fnRef$current","canUseDom","useInternalLayoutEffect","firstMountRef","useLayoutUpdateEffect","firstMount","useSafeState","destroyRef","_React$useState","_React$useState2","safeSetState","updater","ignoreDestroy","useMergedState","defaultStateValue","postState","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","setPrevValue","triggerChange","warned","preWarningFns","preMessage","warning","finalMessage","preMessageFn","note","resetWarned","method","warningOnce","noteOnce","obj1","obj2","refSet","level","circular","newLevel","getDirectionStyle","positionStyle","getIndex","KeyCode","SliderContext","UnstableContext","Handle","prefixCls","valueIndex","onStartMove","onDelete","dragging","draggingDelete","onOffsetChange","onChangeComplete","onMouseEnter","_React$useContext","keyboard","ariaLabelForHandle","ariaLabelledByForHandle","ariaRequired","ariaValueTextFormatterForHandle","handlePrefixCls","onInternalStartMove","onInternalFocus","onInternalMouseEnter","divProps","_getIndex","handleNode","cls","Handles","handleRender","activeHandleRender","draggingIndex","handlesRef","activeVisible","setActiveVisible","_React$useState3","_React$useState4","activeIndex","setActiveIndex","onActive","onHandleFocus","onHandleMouseEnter","_handlesRef$current$i","flushSync","handleProps","Mark","_onClick","includedStart","includedEnd","included","textCls","Marks","marks","markPrefixCls","Dot","activeStyle","dotClassName","mergedStyle","Steps","stepDots","dotSet","dotValue","Track","replaceCls","trackPrefixCls","offsetStart","offsetEnd","Tracks","trackList","startValue","endValue","tracksNode","REMOVE_DIST","getPosition","useDrag","rawValues","formatValue","finishChange","offsetValues","editable","minCount","draggingValue","setDraggingValue","setDraggingIndex","_React$useState5","_React$useState6","setDraggingDelete","_React$useState7","_React$useState8","cacheValues","setCacheValues","_React$useState9","_React$useState10","originValues","setOriginValues","mouseMoveEventRef","mouseUpEventRef","touchEventTargetRef","onDragStart","onDragChange","flushValues","nextValues","deleteMark","changeValues","updateCacheValue","offsetPercent","maxStartOffset","maxEndOffset","formatStartValue","cloneCacheValues","offsetDist","cloneValues","startValues","initialValues","originValue","_getPosition","startX","startY","onMouseMove","_getPosition2","moveX","moveY","offsetX","offsetY","_containerRef$current","offSetPercent","removeDist","onMouseUp","returnValues","sourceValues","targetValues","maxDiffCount","diffCount","useOffset","markList","allowCross","pushable","formatRangeValue","formatStepValue","stepValue","getDecimal","num","maxDecimal","fixedValue","formatNextValue","alignValues","closeValue","closeDist","dist","offsetValue","mode","targetDistValue","potentialValues","sign","compareValue","valueDist","potentialValue","offsetChangedValue","needPush","pushNum","changed","_offsetChangedValue","_changed","_offsetChangedValue2","_i2","_changed2","_offsetChangedValue3","_i3","_changed3","_offsetChangedValue4","useRange","draggableTrack","maxCount","Slider","_props$prefixCls","_props$disabled","_props$keyboard","autoFocus","onBlur","_props$min","_props$max","_props$step","onBeforeChange","onAfterChange","_props$allowCross","_props$pushable","vertical","_props$included","trackStyle","handleStyle","railStyle","dotStyle","activeDotStyle","track","_props$tabIndex","_useRange","_useRange2","rangeEnabled","rangeEditable","rangeDraggableTrack","mergedMin","mergedMax","mergedStep","mergedPush","markObj","_useOffset","_useOffset2","_useMergedState","_useMergedState2","valueList","_valueList","_valueList$","val0","pointCount","_returnValues","getTriggerValue","triggerValues","cloneNextValues","finishValue","nextFocusIndex","_useDrag","_useDrag2","onStartDrag","changeToCloseValue","valueBeforeIndex","focusIndex","_document$activeEleme","_document$activeEleme2","onSliderMouseDown","bottom","clientX","clientY","percent","keyboardValue","setKeyboardValue","onHandleOffsetChange","mergedDraggableTrack","sortedCacheValues","_React$useMemo","_React$useMemo2","_containerRef$current2","_document","activeElement","trackVariants","handleVariants","SliderUI","sliderProps","trackClassName","railClassName","sliderClassName","handleClassName","showHandleValue","spacerVariants","Spacer","loaderVariants","Spinner","show","Stepper","steps","currentStep","unfinishedStepsClassName","finishedStepsClassName","activeStepsClassName","CheckIcon","SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProvider","useSwitchContext","Switch","__scopeSwitch","switchProps","SwitchBubbleInput","THUMB_NAME","SwitchThumb","thumbProps","Thumb","switchVariants","thumbVariant","showValue","showIcon","SwitchPrimitives.Root","SwitchPrimitives.Thumb","Table","TableHeader","TableBody","TableRow","TableHead","TableCell","TableCaption","TABS_NAME","createTabsContext","createTabsScope","TabsProvider","useTabsContext","Tabs","__scopeTabs","activationMode","tabsProps","TAB_LIST_NAME","TabsList","listProps","TabsTrigger","makeTriggerId","contentId","makeContentId","isAutomaticActivation","TabsContent","baseId","List","tabVariants","TabContext","TabsPrimitive.Root","TabsPrimitive.List","TabsPrimitive.Trigger","TabsPrimitive.Content","Textarea","TOAST_LIMIT","TOAST_REMOVE_DELAY","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","toast","listeners","memoryState","listener","dismiss","useToast","setState","createToastContext","createToastScope","ToastProviderProvider","useToastProviderContext","ToastProvider","__scopeToast","swipeDirection","swipeThreshold","toastCount","setToastCount","isFocusedToastEscapeKeyDownRef","isClosePausedRef","VIEWPORT_DEFAULT_HOTKEY","VIEWPORT_PAUSE","VIEWPORT_RESUME","ToastViewport","hotkey","wrapperRef","headFocusProxyRef","tailFocusProxyRef","hotkeyLabel","hasToasts","wrapper","handlePause","pauseEvent","handleResume","resumeEvent","handleFocusOutResume","handlePointerLeaveResume","getSortedTabbableCandidates","tabbingDirection","tabbableCandidates","toastItem","toastNode","toastTabbableCandidates","isMetaKey","isTabbingBackwards","sortedCandidates","DismissableLayer.Branch","FocusProxy","FOCUS_PROXY_NAME","onFocusFromOutsideViewport","proxyProps","prevFocusedElement","TOAST_NAME","TOAST_SWIPE_START","TOAST_SWIPE_MOVE","TOAST_SWIPE_CANCEL","TOAST_SWIPE_END","Toast","toastProps","ToastImpl","ToastInteractiveProvider","useToastInteractiveContext","durationProp","onPause","onResume","onSwipeStart","onSwipeMove","onSwipeCancel","onSwipeEnd","pointerStartRef","swipeDeltaRef","closeTimerStartTimeRef","closeTimerRemainingTimeRef","onToastAdd","onToastRemove","startTimer","duration2","elapsedTime","announceTextContent","getAnnounceTextContent","ToastAnnounce","DismissableLayer.Root","hasSwipeMoveStarted","isHorizontalSwipe","clampedX","clampedY","moveStartBuffer","isDeltaInDirection","event2","announceProps","renderAnnounceText","setRenderAnnounceText","isAnnounced","setIsAnnounced","useNextFrame","timer","ToastTitle","ToastDescription","ACTION_NAME","ToastAction","altText","actionProps","ToastAnnounceExclude","ToastClose","interactiveContext","announceExcludeProps","isExcluded","currentTarget","isDeltaX","raf1","raf2","Action","Close","ToastPrimitives.Provider","ToastContext","ToastPrimitives.Viewport","toastVariants","toastTitleVariants","ToastPrimitives.Root","ToastPrimitives.Action","ToastPrimitives.Close","icon","ToastPrimitives.Title","ToastPrimitives.Description","Toaster","toasts","createTooltipContext","createTooltipScope","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider","__scopeTooltip","delayDuration","skipDelayDuration","disableHoverableContent","isOpenDelayedRef","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","Tooltip","disableHoverableContentProp","delayDurationProp","providerContext","wasOpenDelayedRef","stateAttribute","handleDelayedOpen","TooltipTrigger","hasPointerMoveOpenedRef","TooltipPortal","TooltipContent","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","onPointerInTransitChange","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","VisuallyHiddenContentContextProvider","useVisuallyHiddenContentContext","Slottable","VisuallyHiddenPrimitive.Root","TooltipArrow","newPoints","getHullPresorted","upperHull","lowerHull","TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","TooltipPrimitive.Portal","TooltipPrimitive.Content","vizContainerVariants","VizCarousel","vizWidth","slides","vizStyle","contentClassName","vizClassName","slideNo","slideRefs","slide","setSlide","observer","visible","parentWithDir","scrollBy","VisualizationWidget","VisualizationWidgetHeaderContext","VisualizationWidgetHeader","VisualizationWidgetHeaderItem","VisualizationWidgetBody","VisualizationWidgetBodySidebar","VisualizationWidgetBodyContent"],"mappings":"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M,IACN,QAAS,OACX,EAAG,CACD,KAAM,IACN,QAAS,gBACX,EAAG,CACD,KAAM,IACN,QAAS,oBACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,IACN,QAAS,UACX,EAAG,CACD,KAAM,IACN,QAAS,kBACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,IACN,QAAS,6CACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,IACN,QAAS,YACX,EAAG,CACD,KAAM,IACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,mBACX,EAAG,CACD,KAAM,IACN,QAAS,mBACX,EAAG,CACD,KAAM,IACN,QAAS,iBACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,IACN,QAAS,oCACX,EAAG,CACD,KAAM,IACN,QAAS,UACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,IACN,QAAS,YACX,EAAG,CACD,KAAM,IACN,QAAS,OACX,EAAG,CACD,KAAM,IACN,QAAS,iBACX,EAAG,CACD,KAAM,IACN,QAAS,gBACX,EAAG,CACD,KAAM,IACN,QAAS,qCACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,KACN,QAAS,KACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,KACN,QAAS,IACX,EAAG,CACD,KAAM,KACN,QAAS,GACX,EAAG,CACD,KAAM,IACN,QAAS,WACX,EAAG,CACD,KAAM,IACN,QAAS,eACX,EAAG,CACD,KAAM,IACN,QAAS,gBACX,EAAG,CACD,KAAM,KACN,QAAS,IACX,EAAG,CACD,KAAM,IACN,QAAS,iCACX,EAAG,CACD,KAAM,IACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,iBACX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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,48,49,50,51,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,153,157,158,159,167,168,169,170,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,365,367,372,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,402,405,409,410,413,414]}