{"version":3,"sources":["../node_modules/.pnpm/yoga-layout@3.2.1_patch_hash=fcspke77bs3aszvcx6say6fj7q/node_modules/yoga-layout/src/generated/YGEnums.ts","../node_modules/.pnpm/yoga-layout@3.2.1_patch_hash=fcspke77bs3aszvcx6say6fj7q/node_modules/yoga-layout/src/wrapAssembly.ts","../node_modules/.pnpm/yoga-layout@3.2.1_patch_hash=fcspke77bs3aszvcx6say6fj7q/node_modules/yoga-layout/dist/binaries/yoga-wasm-esm.js","../node_modules/.pnpm/yoga-layout@3.2.1_patch_hash=fcspke77bs3aszvcx6say6fj7q/node_modules/yoga-layout/src/load.ts","../src/yoga.external.ts","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/negateValue.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/corePluginList.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/configurePlugins.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/stubs/defaultConfig.stub.js","../src/vendor/twrnc/log.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/public/colors.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/defaults.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/toPath.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/normalizeConfig.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/isPlainObject.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/cloneDeep.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/unesc.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/getProp.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/ensureObject.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/stripComments.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/index.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/node.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/types.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/container.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/root.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/selector.js","../node_modules/.pnpm/cssesc@3.0.0/node_modules/cssesc/cssesc.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/className.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/comment.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/id.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/namespace.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/tag.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/string.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/pseudo.js","../src/vendor/twrnc/deprecate.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/attribute.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/universal.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/combinator.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/nesting.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/sortAscending.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/tokenTypes.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/tokenize.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/parser.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/processor.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/constructors.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/guards.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/index.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/index.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/escapeCommas.js","../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/color.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/withAlphaVariable.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/lib/regex.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/parseBoxShadowValue.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/dataTypes.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/pluginUtils.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/toColorValue.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/resolveConfig.js","../src/vendor/twrnc/picocolors.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/featureFlags.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/getAllConfigs.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/public/resolve-config.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/resolveConfig.js","../src/index.ts","../src/utils.ts","../src/vendor/parse-css-dimension/index.js","../src/yoga.ts","../src/handler/image.ts","../src/handler/preprocess.ts","../src/handler/presets.ts","../src/handler/inheritable.ts","../src/handler/expand.ts","../src/transform-origin.ts","../src/parser/mask.ts","../src/handler/variables.ts","../src/handler/compute.ts","../src/builder/text.ts","../src/builder/transform.ts","../src/builder/shadow.ts","../src/builder/text-decoration.ts","../src/text/characters.ts","../src/text/measurer.ts","../src/text/processor.ts","../src/text/index.ts","../src/builder/gradient/linear.ts","../src/builder/gradient/utils.ts","../src/builder/gradient/radial.ts","../src/builder/background-image.ts","../src/builder/border-radius.ts","../src/builder/border.ts","../src/builder/content-mask.ts","../src/parser/shape.ts","../src/builder/clip-path.ts","../src/builder/overflow.ts","../src/builder/mask-image.ts","../src/builder/rect.ts","../node_modules/.pnpm/emoji-regex-xs@2.0.1/node_modules/emoji-regex-xs/index.mjs","../src/language.ts","../src/layout.ts","../src/font.ts","../src/builder/svg.ts","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/create.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/types.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/helpers.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/styles.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/cache.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/font-size.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/line-height.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/spacing.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/screens.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/font-family.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/color.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/borders.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/inset.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/flex.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/width-height.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/letter-spacing.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/opacity.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/shadow.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/ClassParser.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/parse-inputs.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/plugin.js","../src/handler/tailwind.ts","../src/satori.ts"],"sourcesContent":["/**\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// @generated by enums.py\n\nexport enum Align {\n  Auto = 0,\n  FlexStart = 1,\n  Center = 2,\n  FlexEnd = 3,\n  Stretch = 4,\n  Baseline = 5,\n  SpaceBetween = 6,\n  SpaceAround = 7,\n  SpaceEvenly = 8,\n}\n\nexport enum BoxSizing {\n  BorderBox = 0,\n  ContentBox = 1,\n}\n\nexport enum Dimension {\n  Width = 0,\n  Height = 1,\n}\n\nexport enum Direction {\n  Inherit = 0,\n  LTR = 1,\n  RTL = 2,\n}\n\nexport enum Display {\n  Flex = 0,\n  None = 1,\n  Contents = 2,\n}\n\nexport enum Edge {\n  Left = 0,\n  Top = 1,\n  Right = 2,\n  Bottom = 3,\n  Start = 4,\n  End = 5,\n  Horizontal = 6,\n  Vertical = 7,\n  All = 8,\n}\n\nexport enum Errata {\n  None = 0,\n  StretchFlexBasis = 1,\n  AbsolutePositionWithoutInsetsExcludesPadding = 2,\n  AbsolutePercentAgainstInnerSize = 4,\n  All = 2147483647,\n  Classic = 2147483646,\n}\n\nexport enum ExperimentalFeature {\n  WebFlexBasis = 0,\n}\n\nexport enum FlexDirection {\n  Column = 0,\n  ColumnReverse = 1,\n  Row = 2,\n  RowReverse = 3,\n}\n\nexport enum Gutter {\n  Column = 0,\n  Row = 1,\n  All = 2,\n}\n\nexport enum Justify {\n  FlexStart = 0,\n  Center = 1,\n  FlexEnd = 2,\n  SpaceBetween = 3,\n  SpaceAround = 4,\n  SpaceEvenly = 5,\n}\n\nexport enum LogLevel {\n  Error = 0,\n  Warn = 1,\n  Info = 2,\n  Debug = 3,\n  Verbose = 4,\n  Fatal = 5,\n}\n\nexport enum MeasureMode {\n  Undefined = 0,\n  Exactly = 1,\n  AtMost = 2,\n}\n\nexport enum NodeType {\n  Default = 0,\n  Text = 1,\n}\n\nexport enum Overflow {\n  Visible = 0,\n  Hidden = 1,\n  Scroll = 2,\n}\n\nexport enum PositionType {\n  Static = 0,\n  Relative = 1,\n  Absolute = 2,\n}\n\nexport enum Unit {\n  Undefined = 0,\n  Point = 1,\n  Percent = 2,\n  Auto = 3,\n}\n\nexport enum Wrap {\n  NoWrap = 0,\n  Wrap = 1,\n  WrapReverse = 2,\n}\n\nconst constants = {\n  ALIGN_AUTO: Align.Auto,\n  ALIGN_FLEX_START: Align.FlexStart,\n  ALIGN_CENTER: Align.Center,\n  ALIGN_FLEX_END: Align.FlexEnd,\n  ALIGN_STRETCH: Align.Stretch,\n  ALIGN_BASELINE: Align.Baseline,\n  ALIGN_SPACE_BETWEEN: Align.SpaceBetween,\n  ALIGN_SPACE_AROUND: Align.SpaceAround,\n  ALIGN_SPACE_EVENLY: Align.SpaceEvenly,\n  BOX_SIZING_BORDER_BOX: BoxSizing.BorderBox,\n  BOX_SIZING_CONTENT_BOX: BoxSizing.ContentBox,\n  DIMENSION_WIDTH: Dimension.Width,\n  DIMENSION_HEIGHT: Dimension.Height,\n  DIRECTION_INHERIT: Direction.Inherit,\n  DIRECTION_LTR: Direction.LTR,\n  DIRECTION_RTL: Direction.RTL,\n  DISPLAY_FLEX: Display.Flex,\n  DISPLAY_NONE: Display.None,\n  DISPLAY_CONTENTS: Display.Contents,\n  EDGE_LEFT: Edge.Left,\n  EDGE_TOP: Edge.Top,\n  EDGE_RIGHT: Edge.Right,\n  EDGE_BOTTOM: Edge.Bottom,\n  EDGE_START: Edge.Start,\n  EDGE_END: Edge.End,\n  EDGE_HORIZONTAL: Edge.Horizontal,\n  EDGE_VERTICAL: Edge.Vertical,\n  EDGE_ALL: Edge.All,\n  ERRATA_NONE: Errata.None,\n  ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis,\n  ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING: Errata.AbsolutePositionWithoutInsetsExcludesPadding,\n  ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE: Errata.AbsolutePercentAgainstInnerSize,\n  ERRATA_ALL: Errata.All,\n  ERRATA_CLASSIC: Errata.Classic,\n  EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis,\n  FLEX_DIRECTION_COLUMN: FlexDirection.Column,\n  FLEX_DIRECTION_COLUMN_REVERSE: FlexDirection.ColumnReverse,\n  FLEX_DIRECTION_ROW: FlexDirection.Row,\n  FLEX_DIRECTION_ROW_REVERSE: FlexDirection.RowReverse,\n  GUTTER_COLUMN: Gutter.Column,\n  GUTTER_ROW: Gutter.Row,\n  GUTTER_ALL: Gutter.All,\n  JUSTIFY_FLEX_START: Justify.FlexStart,\n  JUSTIFY_CENTER: Justify.Center,\n  JUSTIFY_FLEX_END: Justify.FlexEnd,\n  JUSTIFY_SPACE_BETWEEN: Justify.SpaceBetween,\n  JUSTIFY_SPACE_AROUND: Justify.SpaceAround,\n  JUSTIFY_SPACE_EVENLY: Justify.SpaceEvenly,\n  LOG_LEVEL_ERROR: LogLevel.Error,\n  LOG_LEVEL_WARN: LogLevel.Warn,\n  LOG_LEVEL_INFO: LogLevel.Info,\n  LOG_LEVEL_DEBUG: LogLevel.Debug,\n  LOG_LEVEL_VERBOSE: LogLevel.Verbose,\n  LOG_LEVEL_FATAL: LogLevel.Fatal,\n  MEASURE_MODE_UNDEFINED: MeasureMode.Undefined,\n  MEASURE_MODE_EXACTLY: MeasureMode.Exactly,\n  MEASURE_MODE_AT_MOST: MeasureMode.AtMost,\n  NODE_TYPE_DEFAULT: NodeType.Default,\n  NODE_TYPE_TEXT: NodeType.Text,\n  OVERFLOW_VISIBLE: Overflow.Visible,\n  OVERFLOW_HIDDEN: Overflow.Hidden,\n  OVERFLOW_SCROLL: Overflow.Scroll,\n  POSITION_TYPE_STATIC: PositionType.Static,\n  POSITION_TYPE_RELATIVE: PositionType.Relative,\n  POSITION_TYPE_ABSOLUTE: PositionType.Absolute,\n  UNIT_UNDEFINED: Unit.Undefined,\n  UNIT_POINT: Unit.Point,\n  UNIT_PERCENT: Unit.Percent,\n  UNIT_AUTO: Unit.Auto,\n  WRAP_NO_WRAP: Wrap.NoWrap,\n  WRAP_WRAP: Wrap.Wrap,\n  WRAP_WRAP_REVERSE: Wrap.WrapReverse,\n}\nexport default constants","/**\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 * @format\n */\n\n// @ts-nocheck\n\nimport {Unit, Direction} from './generated/YGEnums.ts';\nimport YGEnums from './generated/YGEnums.ts';\n\nimport type {\n  Align,\n  BoxSizing,\n  Display,\n  Edge,\n  Errata,\n  ExperimentalFeature,\n  FlexDirection,\n  Gutter,\n  Justify,\n  MeasureMode,\n  Overflow,\n  PositionType,\n  Wrap,\n} from './generated/YGEnums.ts';\n\ntype Layout = {\n  left: number;\n  right: number;\n  top: number;\n  bottom: number;\n  width: number;\n  height: number;\n};\n\ntype Size = {\n  width: number;\n  height: number;\n};\n\ntype Value = {\n  unit: Unit;\n  value: number;\n};\n\nexport type Config = {\n  free(): void;\n  isExperimentalFeatureEnabled(feature: ExperimentalFeature): boolean;\n  setExperimentalFeatureEnabled(\n    feature: ExperimentalFeature,\n    enabled: boolean,\n  ): void;\n  setPointScaleFactor(factor: number): void;\n  getErrata(): Errata;\n  setErrata(errata: Errata): void;\n  useWebDefaults(): boolean;\n  setUseWebDefaults(useWebDefaults: boolean): void;\n};\n\nexport type DirtiedFunction = (node: Node) => void;\n\nexport type MeasureFunction = (\n  width: number,\n  widthMode: MeasureMode,\n  height: number,\n  heightMode: MeasureMode,\n) => Size;\n\nexport type Node = {\n  calculateLayout(\n    width: number | 'auto' | undefined,\n    height: number | 'auto' | undefined,\n    direction?: Direction,\n  ): void;\n  copyStyle(node: Node): void;\n  free(): void;\n  freeRecursive(): void;\n  getAlignContent(): Align;\n  getAlignItems(): Align;\n  getAlignSelf(): Align;\n  getAspectRatio(): number;\n  getBorder(edge: Edge): number;\n  getChild(index: number): Node;\n  getChildCount(): number;\n  getComputedBorder(edge: Edge): number;\n  getComputedBottom(): number;\n  getComputedHeight(): number;\n  getComputedLayout(): Layout;\n  getComputedLeft(): number;\n  getComputedMargin(edge: Edge): number;\n  getComputedPadding(edge: Edge): number;\n  getComputedRight(): number;\n  getComputedTop(): number;\n  getComputedWidth(): number;\n  getDirection(): Direction;\n  getDisplay(): Display;\n  getFlexBasis(): Value;\n  getFlexDirection(): FlexDirection;\n  getFlexGrow(): number;\n  getFlexShrink(): number;\n  getFlexWrap(): Wrap;\n  getHeight(): Value;\n  getJustifyContent(): Justify;\n  getGap(gutter: Gutter): Value;\n  getMargin(edge: Edge): Value;\n  getMaxHeight(): Value;\n  getMaxWidth(): Value;\n  getMinHeight(): Value;\n  getMinWidth(): Value;\n  getOverflow(): Overflow;\n  getPadding(edge: Edge): Value;\n  getParent(): Node | null;\n  getPosition(edge: Edge): Value;\n  getPositionType(): PositionType;\n  getBoxSizing(): BoxSizing;\n  getWidth(): Value;\n  insertChild(child: Node, index: number): void;\n  isDirty(): boolean;\n  isReferenceBaseline(): boolean;\n  markDirty(): void;\n  hasNewLayout(): boolean;\n  markLayoutSeen(): void;\n  removeChild(child: Node): void;\n  reset(): void;\n  setAlignContent(alignContent: Align): void;\n  setAlignItems(alignItems: Align): void;\n  setAlignSelf(alignSelf: Align): void;\n  setAspectRatio(aspectRatio: number | undefined): void;\n  setBorder(edge: Edge, borderWidth: number | undefined): void;\n  setDirection(direction: Direction): void;\n  setDisplay(display: Display): void;\n  setFlex(flex: number | undefined): void;\n  setFlexBasis(flexBasis: number | 'auto' | `${number}%` | undefined): void;\n  setFlexBasisPercent(flexBasis: number | undefined): void;\n  setFlexBasisAuto(): void;\n  setFlexDirection(flexDirection: FlexDirection): void;\n  setFlexGrow(flexGrow: number | undefined): void;\n  setFlexShrink(flexShrink: number | undefined): void;\n  setFlexWrap(flexWrap: Wrap): void;\n  setHeight(height: number | 'auto' | `${number}%` | undefined): void;\n  setIsReferenceBaseline(isReferenceBaseline: boolean): void;\n  setHeightAuto(): void;\n  setHeightPercent(height: number | undefined): void;\n  setJustifyContent(justifyContent: Justify): void;\n  setGap(gutter: Gutter, gapLength: number | `${number}%` | undefined): Value;\n  setGapPercent(gutter: Gutter, gapLength: number | undefined): Value;\n  setMargin(\n    edge: Edge,\n    margin: number | 'auto' | `${number}%` | undefined,\n  ): void;\n  setMarginAuto(edge: Edge): void;\n  setMarginPercent(edge: Edge, margin: number | undefined): void;\n  setMaxHeight(maxHeight: number | `${number}%` | undefined): void;\n  setMaxHeightPercent(maxHeight: number | undefined): void;\n  setMaxWidth(maxWidth: number | `${number}%` | undefined): void;\n  setMaxWidthPercent(maxWidth: number | undefined): void;\n  setDirtiedFunc(dirtiedFunc: DirtiedFunction | null): void;\n  setMeasureFunc(measureFunc: MeasureFunction | null): void;\n  setMinHeight(minHeight: number | `${number}%` | undefined): void;\n  setMinHeightPercent(minHeight: number | undefined): void;\n  setMinWidth(minWidth: number | `${number}%` | undefined): void;\n  setMinWidthPercent(minWidth: number | undefined): void;\n  setOverflow(overflow: Overflow): void;\n  setPadding(edge: Edge, padding: number | `${number}%` | undefined): void;\n  setPaddingPercent(edge: Edge, padding: number | undefined): void;\n  setPosition(edge: Edge, position: number | `${number}%` | undefined): void;\n  setPositionPercent(edge: Edge, position: number | undefined): void;\n  setPositionType(positionType: PositionType): void;\n  setPositionAuto(edge: Edge): void;\n  setBoxSizing(boxSizing: BoxSizing): void;\n  setWidth(width: number | 'auto' | `${number}%` | undefined): void;\n  setWidthAuto(): void;\n  setWidthPercent(width: number | undefined): void;\n  unsetDirtiedFunc(): void;\n  unsetMeasureFunc(): void;\n  setAlwaysFormsContainingBlock(alwaysFormsContainingBlock: boolean): void;\n};\n\nexport type Yoga = {\n  Config: {\n    create(): Config;\n    destroy(config: Config): void;\n  };\n  Node: {\n    create(config?: Config): Node;\n    createDefault(): Node;\n    createWithConfig(config: Config): Node;\n    destroy(node: Node): void;\n  };\n} & typeof YGEnums;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default function wrapAssembly(lib: any): Yoga {\n  function patch(prototype, name, fn) {\n    const original = prototype[name];\n\n    prototype[name] = function (...args) {\n      return fn.call(this, original, ...args);\n    };\n  }\n\n  for (const fnName of [\n    'setPosition',\n    'setMargin',\n    'setFlexBasis',\n    'setWidth',\n    'setHeight',\n    'setMinWidth',\n    'setMinHeight',\n    'setMaxWidth',\n    'setMaxHeight',\n    'setPadding',\n    'setGap',\n  ]) {\n    const methods = {\n      [Unit.Point]: lib.Node.prototype[fnName],\n      [Unit.Percent]: lib.Node.prototype[`${fnName}Percent`],\n      [Unit.Auto]: lib.Node.prototype[`${fnName}Auto`],\n    };\n\n    patch(lib.Node.prototype, fnName, function (original, ...args) {\n      // We patch all these functions to add support for the following calls:\n      // .setWidth(100) / .setWidth(\"100%\") / .setWidth(.getWidth()) / .setWidth(\"auto\")\n\n      const value = args.pop();\n      let unit, asNumber;\n\n      if (value === 'auto') {\n        unit = Unit.Auto;\n        asNumber = undefined;\n      } else if (typeof value === 'object') {\n        unit = value.unit;\n        asNumber = value.valueOf();\n      } else {\n        unit =\n          typeof value === 'string' && value.endsWith('%')\n            ? Unit.Percent\n            : Unit.Point;\n        asNumber = parseFloat(value);\n        if (\n          value !== undefined &&\n          !Number.isNaN(value) &&\n          Number.isNaN(asNumber)\n        ) {\n          throw new Error(`Invalid value ${value} for ${fnName}`);\n        }\n      }\n\n      if (!methods[unit])\n        throw new Error(\n          `Failed to execute \"${fnName}\": Unsupported unit '${value}'`,\n        );\n\n      if (asNumber !== undefined) {\n        return methods[unit].call(this, ...args, asNumber);\n      } else {\n        return methods[unit].call(this, ...args);\n      }\n    });\n  }\n\n  function wrapMeasureFunction(measureFunction) {\n    return lib.MeasureCallback.implement({\n      measure: (...args) => {\n        const {width, height} = measureFunction(...args);\n        return {\n          width: width ?? NaN,\n          height: height ?? NaN,\n        };\n      },\n    });\n  }\n\n  patch(lib.Node.prototype, 'setMeasureFunc', function (original, measureFunc) {\n    // This patch is just a convenience patch, since it helps write more\n    // idiomatic source code (such as .setMeasureFunc(null))\n    if (measureFunc) {\n      return original.call(this, wrapMeasureFunction(measureFunc));\n    } else {\n      return this.unsetMeasureFunc();\n    }\n  });\n\n  function wrapDirtiedFunc(dirtiedFunction) {\n    return lib.DirtiedCallback.implement({dirtied: dirtiedFunction});\n  }\n\n  patch(lib.Node.prototype, 'setDirtiedFunc', function (original, dirtiedFunc) {\n    original.call(this, wrapDirtiedFunc(dirtiedFunc));\n  });\n\n  patch(lib.Config.prototype, 'free', function () {\n    // Since we handle the memory allocation ourselves (via lib.Config.create),\n    // we also need to handle the deallocation\n    lib.Config.destroy(this);\n  });\n\n  patch(lib.Node, 'create', (_, config) => {\n    // We decide the constructor we want to call depending on the parameters\n    return config\n      ? lib.Node.createWithConfig(config)\n      : lib.Node.createDefault();\n  });\n\n  patch(lib.Node.prototype, 'free', function () {\n    // Since we handle the memory allocation ourselves (via lib.Node.create),\n    // we also need to handle the deallocation\n    lib.Node.destroy(this);\n  });\n\n  patch(lib.Node.prototype, 'freeRecursive', function () {\n    for (let t = 0, T = this.getChildCount(); t < T; ++t) {\n      this.getChild(0).freeRecursive();\n    }\n    this.free();\n  });\n\n  patch(\n    lib.Node.prototype,\n    'calculateLayout',\n    function (original, width = NaN, height = NaN, direction = Direction.LTR) {\n      // Just a small patch to add support for the function default parameters\n      return original.call(this, width, height, direction);\n    },\n  );\n\n  return {\n    Config: lib.Config,\n    Node: lib.Node,\n    ...YGEnums,\n  };\n}\n","let _scriptDir = ''\n\nexport default function (loadYoga) {\nloadYoga = loadYoga || {};\n\nvar h;h||(h=typeof loadYoga !== 'undefined' ? loadYoga : {});var aa,ca;h.ready=new Promise(function(a,b){aa=a;ca=b});var da=Object.assign({},h),q=\"\";\"undefined\"!=typeof document&&document.currentScript&&(q=document.currentScript.src);_scriptDir&&(q=_scriptDir);0!==q.indexOf(\"blob:\")?q=q.substr(0,q.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):q=\"\";var ea=h.print||console.log.bind(console),v=h.printErr||console.warn.bind(console);Object.assign(h,da);da=null;var w;h.wasmBinary&&(w=h.wasmBinary);\nvar noExitRuntime=h.noExitRuntime||!0;\"object\"!=typeof WebAssembly&&x(\"no native wasm support detected\");var fa,ha=!1;function z(a,b,c){c=b+c;for(var d=\"\";!(b>=c);){var e=a[b++];if(!e)break;if(e&128){var f=a[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|f);else{var g=a[b++]&63;e=224==(e&240)?(e&15)<<12|f<<6|g:(e&7)<<18|f<<12|g<<6|a[b++]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}\nvar ia,ja,A,C,ka,D,E,la,ma;function na(){var a=fa.buffer;ia=a;h.HEAP8=ja=new Int8Array(a);h.HEAP16=C=new Int16Array(a);h.HEAP32=D=new Int32Array(a);h.HEAPU8=A=new Uint8Array(a);h.HEAPU16=ka=new Uint16Array(a);h.HEAPU32=E=new Uint32Array(a);h.HEAPF32=la=new Float32Array(a);h.HEAPF64=ma=new Float64Array(a)}var oa,pa=[],qa=[],ra=[];function sa(){var a=h.preRun.shift();pa.unshift(a)}var F=0,ta=null,G=null;\nfunction x(a){if(h.onAbort)h.onAbort(a);a=\"Aborted(\"+a+\")\";v(a);ha=!0;a=new WebAssembly.RuntimeError(a+\". Build with -sASSERTIONS for more info.\");ca(a);throw a;}function ua(a){return a.startsWith(\"data:application/octet-stream;base64,\")}var H='';if(!ua(H)){var va=H;H=h.locateFile?h.locateFile(va,q):q+va}\nfunction wa(){var a=H;try{if(a==H&&w)return new Uint8Array(w);if(ua(a))try{var b=xa(a.slice(37)),c=new Uint8Array(b.length);for(a=0;a<b.length;++a)c[a]=b.charCodeAt(a);var d=c}catch(f){throw Error(\"Converting base64 string to bytes failed.\");}else d=void 0;var e=d;if(e)return e;throw\"both async and sync fetching of the wasm failed\";}catch(f){x(f)}}\nfunction ya(){return w||\"function\"!=typeof fetch?Promise.resolve().then(function(){return wa()}):fetch(H,{credentials:\"same-origin\"}).then(function(a){if(!a.ok)throw\"failed to load wasm binary file at '\"+H+\"'\";return a.arrayBuffer()}).catch(function(){return wa()})}function za(a){for(;0<a.length;)a.shift()(h)}function Aa(a){if(void 0===a)return\"_unknown\";a=a.replace(/[^a-zA-Z0-9_]/g,\"$\");var b=a.charCodeAt(0);return 48<=b&&57>=b?\"_\"+a:a}\nfunction Ba(a,b){a=Aa(a);return function(){return b.apply(this,arguments)}}var J=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Ca=[];function Da(a){var b=Error,c=Ba(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+\"\\n\"+d.replace(/^Error(:[^\\n]*)?\\n/,\"\"))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+\": \"+this.message};return c}var K=void 0;\nfunction L(a){throw new K(a);}var M=a=>{a||L(\"Cannot use deleted val. handle = \"+a);return J[a].value},Ea=a=>{switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var b=Ca.length?Ca.pop():J.length;J[b]={ga:1,value:a};return b}},Fa=void 0,Ga=void 0;function N(a){for(var b=\"\";A[a];)b+=Ga[A[a++]];return b}var O=[];function Ha(){for(;O.length;){var a=O.pop();a.M.$=!1;a[\"delete\"]()}}var P=void 0,Q={};\nfunction Ia(a,b){for(void 0===b&&L(\"ptr should not be undefined\");a.R;)b=a.ba(b),a=a.R;return b}var R={};function Ja(a){a=Ka(a);var b=N(a);S(a);return b}function La(a,b){var c=R[a];void 0===c&&L(b+\" has unknown type \"+Ja(a));return c}function Ma(){}var Na=!1;function Oa(a){--a.count.value;0===a.count.value&&(a.T?a.U.W(a.T):a.P.N.W(a.O))}function Pa(a,b,c){if(b===c)return a;if(void 0===c.R)return null;a=Pa(a,b,c.R);return null===a?null:c.na(a)}var Qa={};function Ra(a,b){b=Ia(a,b);return Q[b]}\nvar Sa=void 0;function Ta(a){throw new Sa(a);}function Ua(a,b){b.P&&b.O||Ta(\"makeClassHandle requires ptr and ptrType\");!!b.U!==!!b.T&&Ta(\"Both smartPtrType and smartPtr must be specified\");b.count={value:1};return T(Object.create(a,{M:{value:b}}))}function T(a){if(\"undefined\"===typeof FinalizationRegistry)return T=b=>b,a;Na=new FinalizationRegistry(b=>{Oa(b.M)});T=b=>{var c=b.M;c.T&&Na.register(b,{M:c},b);return b};Ma=b=>{Na.unregister(b)};return T(a)}var Va={};\nfunction Wa(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function Xa(a){return this.fromWireType(D[a>>2])}var U={},Ya={};function V(a,b,c){function d(k){k=c(k);k.length!==a.length&&Ta(\"Mismatched type converter count\");for(var m=0;m<a.length;++m)W(a[m],k[m])}a.forEach(function(k){Ya[k]=b});var e=Array(b.length),f=[],g=0;b.forEach((k,m)=>{R.hasOwnProperty(k)?e[m]=R[k]:(f.push(k),U.hasOwnProperty(k)||(U[k]=[]),U[k].push(()=>{e[m]=R[k];++g;g===f.length&&d(e)}))});0===f.length&&d(e)}\nfunction Za(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+a);}}\nfunction W(a,b,c={}){if(!(\"argPackAdvance\"in b))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");var d=b.name;a||L('type \"'+d+'\" must have a positive integer typeid pointer');if(R.hasOwnProperty(a)){if(c.ua)return;L(\"Cannot register type '\"+d+\"' twice\")}R[a]=b;delete Ya[a];U.hasOwnProperty(a)&&(b=U[a],delete U[a],b.forEach(e=>e()))}function $a(a){L(a.M.P.N.name+\" instance already deleted\")}function X(){}\nfunction ab(a,b,c){if(void 0===a[b].S){var d=a[b];a[b]=function(){a[b].S.hasOwnProperty(arguments.length)||L(\"Function '\"+c+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+a[b].S+\")!\");return a[b].S[arguments.length].apply(this,arguments)};a[b].S=[];a[b].S[d.Z]=d}}\nfunction bb(a,b){h.hasOwnProperty(a)?(L(\"Cannot register public name '\"+a+\"' twice\"),ab(h,a,a),h.hasOwnProperty(void 0)&&L(\"Cannot register multiple overloads of a function with the same number of arguments (undefined)!\"),h[a].S[void 0]=b):h[a]=b}function cb(a,b,c,d,e,f,g,k){this.name=a;this.constructor=b;this.X=c;this.W=d;this.R=e;this.pa=f;this.ba=g;this.na=k;this.ja=[]}\nfunction db(a,b,c){for(;b!==c;)b.ba||L(\"Expected null or instance of \"+c.name+\", got an instance of \"+b.name),a=b.ba(a),b=b.R;return a}function eb(a,b){if(null===b)return this.ea&&L(\"null is not a valid \"+this.name),0;b.M||L('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.M.O||L(\"Cannot pass deleted object as a pointer of type \"+this.name);return db(b.M.O,b.M.P.N,this.N)}\nfunction gb(a,b){if(null===b){this.ea&&L(\"null is not a valid \"+this.name);if(this.da){var c=this.fa();null!==a&&a.push(this.W,c);return c}return 0}b.M||L('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.M.O||L(\"Cannot pass deleted object as a pointer of type \"+this.name);!this.ca&&b.M.P.ca&&L(\"Cannot convert argument of type \"+(b.M.U?b.M.U.name:b.M.P.name)+\" to parameter type \"+this.name);c=db(b.M.O,b.M.P.N,this.N);if(this.da)switch(void 0===b.M.T&&L(\"Passing raw pointer to smart pointer is illegal\"),\nthis.Ba){case 0:b.M.U===this?c=b.M.T:L(\"Cannot convert argument of type \"+(b.M.U?b.M.U.name:b.M.P.name)+\" to parameter type \"+this.name);break;case 1:c=b.M.T;break;case 2:if(b.M.U===this)c=b.M.T;else{var d=b.clone();c=this.xa(c,Ea(function(){d[\"delete\"]()}));null!==a&&a.push(this.W,c)}break;default:L(\"Unsupporting sharing policy\")}return c}\nfunction hb(a,b){if(null===b)return this.ea&&L(\"null is not a valid \"+this.name),0;b.M||L('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.M.O||L(\"Cannot pass deleted object as a pointer of type \"+this.name);b.M.P.ca&&L(\"Cannot convert argument of type \"+b.M.P.name+\" to parameter type \"+this.name);return db(b.M.O,b.M.P.N,this.N)}\nfunction Y(a,b,c,d){this.name=a;this.N=b;this.ea=c;this.ca=d;this.da=!1;this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0;void 0!==b.R?this.toWireType=gb:(this.toWireType=d?eb:hb,this.V=null)}function ib(a,b){h.hasOwnProperty(a)||Ta(\"Replacing nonexistant public symbol\");h[a]=b;h[a].Z=void 0}\nfunction jb(a,b){var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes(\"j\")){var d=h[\"dynCall_\"+a];d=c&&c.length?d.apply(null,[b].concat(c)):d.call(null,b)}else d=oa.get(b).apply(null,c);return d}}function Z(a,b){a=N(a);var c=a.includes(\"j\")?jb(a,b):oa.get(b);\"function\"!=typeof c&&L(\"unknown function pointer with signature \"+a+\": \"+b);return c}var mb=void 0;\nfunction nb(a,b){function c(f){e[f]||R[f]||(Ya[f]?Ya[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new mb(a+\": \"+d.map(Ja).join([\", \"]));}\nfunction ob(a,b,c,d,e){var f=b.length;2>f&&L(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");var g=null!==b[1]&&null!==c,k=!1;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].V){k=!0;break}var m=\"void\"!==b[0].name,l=f-2,n=Array(l),p=[],r=[];return function(){arguments.length!==l&&L(\"function \"+a+\" called with \"+arguments.length+\" arguments, expected \"+l+\" args!\");r.length=0;p.length=g?2:1;p[0]=e;if(g){var u=b[1].toWireType(r,this);p[1]=u}for(var t=0;t<l;++t)n[t]=\nb[t+2].toWireType(r,arguments[t]),p.push(n[t]);t=d.apply(null,p);if(k)Wa(r);else for(var y=g?1:2;y<b.length;y++){var B=1===y?u:n[y-2];null!==b[y].V&&b[y].V(B)}u=m?b[0].fromWireType(t):void 0;return u}}function pb(a,b){for(var c=[],d=0;d<a;d++)c.push(E[b+4*d>>2]);return c}function qb(a){4<a&&0===--J[a].ga&&(J[a]=void 0,Ca.push(a))}function fb(a){if(null===a)return\"null\";var b=typeof a;return\"object\"===b||\"array\"===b||\"function\"===b?a.toString():\"\"+a}\nfunction rb(a,b){switch(b){case 2:return function(c){return this.fromWireType(la[c>>2])};case 3:return function(c){return this.fromWireType(ma[c>>3])};default:throw new TypeError(\"Unknown float type: \"+a);}}\nfunction sb(a,b,c){switch(b){case 0:return c?function(d){return ja[d]}:function(d){return A[d]};case 1:return c?function(d){return C[d>>1]}:function(d){return ka[d>>1]};case 2:return c?function(d){return D[d>>2]}:function(d){return E[d>>2]};default:throw new TypeError(\"Unknown integer type: \"+a);}}function tb(a,b){for(var c=\"\",d=0;!(d>=b/2);++d){var e=C[a+2*d>>1];if(0==e)break;c+=String.fromCharCode(e)}return c}\nfunction ub(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e<c;++e)C[b>>1]=a.charCodeAt(e),b+=2;C[b>>1]=0;return b-d}function vb(a){return 2*a.length}function wb(a,b){for(var c=0,d=\"\";!(c>=b/4);){var e=D[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d}\nfunction xb(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e<a.length;++e){var f=a.charCodeAt(e);if(55296<=f&&57343>=f){var g=a.charCodeAt(++e);f=65536+((f&1023)<<10)|g&1023}D[b>>2]=f;b+=4;if(b+4>c)break}D[b>>2]=0;return b-d}function yb(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&++c;b+=4}return b}var zb={};function Ab(a){var b=zb[a];return void 0===b?N(a):b}var Bb=[];function Cb(a){var b=Bb.length;Bb.push(a);return b}\nfunction Db(a,b){for(var c=Array(a),d=0;d<a;++d)c[d]=La(E[b+4*d>>2],\"parameter \"+d);return c}var Eb=[],Fb=[null,[],[]];K=h.BindingError=Da(\"BindingError\");h.count_emval_handles=function(){for(var a=0,b=5;b<J.length;++b)void 0!==J[b]&&++a;return a};h.get_first_emval=function(){for(var a=5;a<J.length;++a)if(void 0!==J[a])return J[a];return null};Fa=h.PureVirtualError=Da(\"PureVirtualError\");for(var Gb=Array(256),Hb=0;256>Hb;++Hb)Gb[Hb]=String.fromCharCode(Hb);Ga=Gb;h.getInheritedInstanceCount=function(){return Object.keys(Q).length};\nh.getLiveInheritedInstances=function(){var a=[],b;for(b in Q)Q.hasOwnProperty(b)&&a.push(Q[b]);return a};h.flushPendingDeletes=Ha;h.setDelayFunction=function(a){P=a;O.length&&P&&P(Ha)};Sa=h.InternalError=Da(\"InternalError\");X.prototype.isAliasOf=function(a){if(!(this instanceof X&&a instanceof X))return!1;var b=this.M.P.N,c=this.M.O,d=a.M.P.N;for(a=a.M.O;b.R;)c=b.ba(c),b=b.R;for(;d.R;)a=d.ba(a),d=d.R;return b===d&&c===a};\nX.prototype.clone=function(){this.M.O||$a(this);if(this.M.aa)return this.M.count.value+=1,this;var a=T,b=Object,c=b.create,d=Object.getPrototypeOf(this),e=this.M;a=a(c.call(b,d,{M:{value:{count:e.count,$:e.$,aa:e.aa,O:e.O,P:e.P,T:e.T,U:e.U}}}));a.M.count.value+=1;a.M.$=!1;return a};X.prototype[\"delete\"]=function(){this.M.O||$a(this);this.M.$&&!this.M.aa&&L(\"Object already scheduled for deletion\");Ma(this);Oa(this.M);this.M.aa||(this.M.T=void 0,this.M.O=void 0)};X.prototype.isDeleted=function(){return!this.M.O};\nX.prototype.deleteLater=function(){this.M.O||$a(this);this.M.$&&!this.M.aa&&L(\"Object already scheduled for deletion\");O.push(this);1===O.length&&P&&P(Ha);this.M.$=!0;return this};Y.prototype.qa=function(a){this.ka&&(a=this.ka(a));return a};Y.prototype.ha=function(a){this.W&&this.W(a)};Y.prototype.argPackAdvance=8;Y.prototype.readValueFromPointer=Xa;Y.prototype.deleteObject=function(a){if(null!==a)a[\"delete\"]()};\nY.prototype.fromWireType=function(a){function b(){return this.da?Ua(this.N.X,{P:this.wa,O:c,U:this,T:a}):Ua(this.N.X,{P:this,O:a})}var c=this.qa(a);if(!c)return this.ha(a),null;var d=Ra(this.N,c);if(void 0!==d){if(0===d.M.count.value)return d.M.O=c,d.M.T=a,d.clone();d=d.clone();this.ha(a);return d}d=this.N.pa(c);d=Qa[d];if(!d)return b.call(this);d=this.ca?d.la:d.pointerType;var e=Pa(c,this.N,d.N);return null===e?b.call(this):this.da?Ua(d.N.X,{P:d,O:e,U:this,T:a}):Ua(d.N.X,{P:d,O:e})};\nmb=h.UnboundTypeError=Da(\"UnboundTypeError\");\nvar xa=\"function\"==typeof atob?atob:function(a){var b=\"\",c=0;a=a.replace(/[^A-Za-z0-9\\+\\/=]/g,\"\");do{var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var f=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var g=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));d=d<<2|e>>4;\ne=(e&15)<<4|f>>2;var k=(f&3)<<6|g;b+=String.fromCharCode(d);64!==f&&(b+=String.fromCharCode(e));64!==g&&(b+=String.fromCharCode(k))}while(c<a.length);return b},Jb={l:function(a,b,c,d){x(\"Assertion failed: \"+(a?z(A,a):\"\")+\", at: \"+[b?b?z(A,b):\"\":\"unknown filename\",c,d?d?z(A,d):\"\":\"unknown function\"])},q:function(a,b,c){a=N(a);b=La(b,\"wrapper\");c=M(c);var d=[].slice,e=b.N,f=e.X,g=e.R.X,k=e.R.constructor;a=Ba(a,function(){e.R.ja.forEach(function(l){if(this[l]===g[l])throw new Fa(\"Pure virtual function \"+\nl+\" must be implemented in JavaScript\");}.bind(this));Object.defineProperty(this,\"__parent\",{value:f});this.__construct.apply(this,d.call(arguments))});f.__construct=function(){this===f&&L(\"Pass correct 'this' to __construct\");var l=k.implement.apply(void 0,[this].concat(d.call(arguments)));Ma(l);var n=l.M;l.notifyOnDestruction();n.aa=!0;Object.defineProperties(this,{M:{value:n}});T(this);l=n.O;l=Ia(e,l);Q.hasOwnProperty(l)?L(\"Tried to register registered instance: \"+l):Q[l]=this};f.__destruct=function(){this===\nf&&L(\"Pass correct 'this' to __destruct\");Ma(this);var l=this.M.O;l=Ia(e,l);Q.hasOwnProperty(l)?delete Q[l]:L(\"Tried to unregister unregistered instance: \"+l)};a.prototype=Object.create(f);for(var m in c)a.prototype[m]=c[m];return Ea(a)},j:function(a){var b=Va[a];delete Va[a];var c=b.fa,d=b.W,e=b.ia,f=e.map(g=>g.ta).concat(e.map(g=>g.za));V([a],f,g=>{var k={};e.forEach((m,l)=>{var n=g[l],p=m.ra,r=m.sa,u=g[l+e.length],t=m.ya,y=m.Aa;k[m.oa]={read:B=>n.fromWireType(p(r,B)),write:(B,ba)=>{var I=[];t(y,\nB,u.toWireType(I,ba));Wa(I)}}});return[{name:b.name,fromWireType:function(m){var l={},n;for(n in k)l[n]=k[n].read(m);d(m);return l},toWireType:function(m,l){for(var n in k)if(!(n in l))throw new TypeError('Missing field:  \"'+n+'\"');var p=c();for(n in k)k[n].write(p,l[n]);null!==m&&m.push(d,p);return p},argPackAdvance:8,readValueFromPointer:Xa,V:d}]})},v:function(){},B:function(a,b,c,d,e){var f=Za(c);b=N(b);W(a,{name:b,fromWireType:function(g){return!!g},toWireType:function(g,k){return k?d:e},argPackAdvance:8,\nreadValueFromPointer:function(g){if(1===c)var k=ja;else if(2===c)k=C;else if(4===c)k=D;else throw new TypeError(\"Unknown boolean type size: \"+b);return this.fromWireType(k[g>>f])},V:null})},f:function(a,b,c,d,e,f,g,k,m,l,n,p,r){n=N(n);f=Z(e,f);k&&(k=Z(g,k));l&&(l=Z(m,l));r=Z(p,r);var u=Aa(n);bb(u,function(){nb(\"Cannot construct \"+n+\" due to unbound types\",[d])});V([a,b,c],d?[d]:[],function(t){t=t[0];if(d){var y=t.N;var B=y.X}else B=X.prototype;t=Ba(u,function(){if(Object.getPrototypeOf(this)!==ba)throw new K(\"Use 'new' to construct \"+\nn);if(void 0===I.Y)throw new K(n+\" has no accessible constructor\");var kb=I.Y[arguments.length];if(void 0===kb)throw new K(\"Tried to invoke ctor of \"+n+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(I.Y).toString()+\") parameters instead!\");return kb.apply(this,arguments)});var ba=Object.create(B,{constructor:{value:t}});t.prototype=ba;var I=new cb(n,t,ba,r,y,f,k,l);y=new Y(n,I,!0,!1);B=new Y(n+\"*\",I,!1,!1);var lb=new Y(n+\" const*\",I,!1,!0);Qa[a]={pointerType:B,\nla:lb};ib(u,t);return[y,B,lb]})},d:function(a,b,c,d,e,f,g){var k=pb(c,d);b=N(b);f=Z(e,f);V([],[a],function(m){function l(){nb(\"Cannot call \"+n+\" due to unbound types\",k)}m=m[0];var n=m.name+\".\"+b;b.startsWith(\"@@\")&&(b=Symbol[b.substring(2)]);var p=m.N.constructor;void 0===p[b]?(l.Z=c-1,p[b]=l):(ab(p,b,n),p[b].S[c-1]=l);V([],k,function(r){r=ob(n,[r[0],null].concat(r.slice(1)),null,f,g);void 0===p[b].S?(r.Z=c-1,p[b]=r):p[b].S[c-1]=r;return[]});return[]})},p:function(a,b,c,d,e,f){0<b||x();var g=pb(b,\nc);e=Z(d,e);V([],[a],function(k){k=k[0];var m=\"constructor \"+k.name;void 0===k.N.Y&&(k.N.Y=[]);if(void 0!==k.N.Y[b-1])throw new K(\"Cannot register multiple constructors with identical number of parameters (\"+(b-1)+\") for class '\"+k.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\");k.N.Y[b-1]=()=>{nb(\"Cannot construct \"+k.name+\" due to unbound types\",g)};V([],g,function(l){l.splice(1,0,null);k.N.Y[b-1]=ob(m,l,null,e,f);return[]});return[]})},\na:function(a,b,c,d,e,f,g,k){var m=pb(c,d);b=N(b);f=Z(e,f);V([],[a],function(l){function n(){nb(\"Cannot call \"+p+\" due to unbound types\",m)}l=l[0];var p=l.name+\".\"+b;b.startsWith(\"@@\")&&(b=Symbol[b.substring(2)]);k&&l.N.ja.push(b);var r=l.N.X,u=r[b];void 0===u||void 0===u.S&&u.className!==l.name&&u.Z===c-2?(n.Z=c-2,n.className=l.name,r[b]=n):(ab(r,b,p),r[b].S[c-2]=n);V([],m,function(t){t=ob(p,t,l,f,g);void 0===r[b].S?(t.Z=c-2,r[b]=t):r[b].S[c-2]=t;return[]});return[]})},A:function(a,b){b=N(b);W(a,\n{name:b,fromWireType:function(c){var d=M(c);qb(c);return d},toWireType:function(c,d){return Ea(d)},argPackAdvance:8,readValueFromPointer:Xa,V:null})},n:function(a,b,c){c=Za(c);b=N(b);W(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){return e},argPackAdvance:8,readValueFromPointer:rb(b,c),V:null})},e:function(a,b,c,d,e){b=N(b);-1===e&&(e=4294967295);e=Za(c);var f=k=>k;if(0===d){var g=32-8*c;f=k=>k<<g>>>g}c=b.includes(\"unsigned\")?function(k,m){return m>>>0}:function(k,m){return m};\nW(a,{name:b,fromWireType:f,toWireType:c,argPackAdvance:8,readValueFromPointer:sb(b,e,0!==d),V:null})},b:function(a,b,c){function d(f){f>>=2;var g=E;return new e(ia,g[f+1],g[f])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=N(c);W(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ua:!0})},o:function(a,b){b=N(b);var c=\"std::string\"===b;W(a,{name:b,fromWireType:function(d){var e=E[d>>2],f=d+4;if(c)for(var g=f,k=0;k<=e;++k){var m=\nf+k;if(k==e||0==A[m]){g=g?z(A,g,m-g):\"\";if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=m+1}}else{l=Array(e);for(k=0;k<e;++k)l[k]=String.fromCharCode(A[f+k]);l=l.join(\"\")}S(d);return l},toWireType:function(d,e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var f,g=\"string\"==typeof e;g||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int8Array||L(\"Cannot pass non-string to std::string\");if(c&&g){var k=0;for(f=0;f<e.length;++f){var m=e.charCodeAt(f);127>=m?k++:2047>=\nm?k+=2:55296<=m&&57343>=m?(k+=4,++f):k+=3}f=k}else f=e.length;k=Ib(4+f+1);m=k+4;E[k>>2]=f;if(c&&g){if(g=m,m=f+1,f=A,0<m){m=g+m-1;for(var l=0;l<e.length;++l){var n=e.charCodeAt(l);if(55296<=n&&57343>=n){var p=e.charCodeAt(++l);n=65536+((n&1023)<<10)|p&1023}if(127>=n){if(g>=m)break;f[g++]=n}else{if(2047>=n){if(g+1>=m)break;f[g++]=192|n>>6}else{if(65535>=n){if(g+2>=m)break;f[g++]=224|n>>12}else{if(g+3>=m)break;f[g++]=240|n>>18;f[g++]=128|n>>12&63}f[g++]=128|n>>6&63}f[g++]=128|n&63}}f[g]=0}}else if(g)for(g=\n0;g<f;++g)l=e.charCodeAt(g),255<l&&(S(m),L(\"String has UTF-16 code units that do not fit in 8 bits\")),A[m+g]=l;else for(g=0;g<f;++g)A[m+g]=e[g];null!==d&&d.push(S,k);return k},argPackAdvance:8,readValueFromPointer:Xa,V:function(d){S(d)}})},i:function(a,b,c){c=N(c);if(2===b){var d=tb;var e=ub;var f=vb;var g=()=>ka;var k=1}else 4===b&&(d=wb,e=xb,f=yb,g=()=>E,k=2);W(a,{name:c,fromWireType:function(m){for(var l=E[m>>2],n=g(),p,r=m+4,u=0;u<=l;++u){var t=m+4+u*b;if(u==l||0==n[t>>k])r=d(r,t-r),void 0===\np?p=r:(p+=String.fromCharCode(0),p+=r),r=t+b}S(m);return p},toWireType:function(m,l){\"string\"!=typeof l&&L(\"Cannot pass non-string to C++ string type \"+c);var n=f(l),p=Ib(4+n+b);E[p>>2]=n>>k;e(l,p+4,n+b);null!==m&&m.push(S,p);return p},argPackAdvance:8,readValueFromPointer:Xa,V:function(m){S(m)}})},k:function(a,b,c,d,e,f){Va[a]={name:N(b),fa:Z(c,d),W:Z(e,f),ia:[]}},h:function(a,b,c,d,e,f,g,k,m,l){Va[a].ia.push({oa:N(b),ta:c,ra:Z(d,e),sa:f,za:g,ya:Z(k,m),Aa:l})},C:function(a,b){b=N(b);W(a,{va:!0,name:b,\nargPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(a,b,c,d,e){a=Bb[a];b=M(b);c=Ab(c);var f=[];E[d>>2]=Ea(f);return a(b,c,f,e)},t:function(a,b,c,d){a=Bb[a];b=M(b);c=Ab(c);a(b,c,null,d)},g:qb,m:function(a,b){var c=Db(a,b),d=c[0];b=d.name+\"_$\"+c.slice(1).map(function(g){return g.name}).join(\"_\")+\"$\";var e=Eb[b];if(void 0!==e)return e;var f=Array(a-1);e=Cb((g,k,m,l)=>{for(var n=0,p=0;p<a-1;++p)f[p]=c[p+1].readValueFromPointer(l+n),n+=c[p+1].argPackAdvance;g=g[k].apply(g,\nf);for(p=0;p<a-1;++p)c[p+1].ma&&c[p+1].ma(f[p]);if(!d.va)return d.toWireType(m,g)});return Eb[b]=e},D:function(a){4<a&&(J[a].ga+=1)},r:function(a){var b=M(a);Wa(b);qb(a)},c:function(){x(\"\")},x:function(a,b,c){A.copyWithin(a,b,b+c)},w:function(a){var b=A.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);var e=Math;d=Math.max(a,d);e=e.min.call(e,2147483648,d+(65536-d%65536)%65536);a:{try{fa.grow(e-ia.byteLength+65535>>>16);na();var f=1;break a}catch(g){}f=\nvoid 0}if(f)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(a,b,c,d){for(var e=0,f=0;f<c;f++){var g=E[b>>2],k=E[b+4>>2];b+=8;for(var m=0;m<k;m++){var l=A[g+m],n=Fb[a];0===l||10===l?((1===a?ea:v)(z(n,0)),n.length=0):n.push(l)}e+=k}E[d>>2]=e;return 0}};\n(function(){function a(e){h.asm=e.exports;fa=h.asm.E;na();oa=h.asm.J;qa.unshift(h.asm.F);F--;h.monitorRunDependencies&&h.monitorRunDependencies(F);0==F&&(null!==ta&&(clearInterval(ta),ta=null),G&&(e=G,G=null,e()))}function b(e){a(e.instance)}function c(e){return ya().then(function(f){return f instanceof WebAssembly.Instance ? f : WebAssembly.instantiate(f,d)}).then(function(f){return f}).then(e,function(f){v(\"failed to asynchronously prepare wasm: \"+f);x(f)})}var d={a:Jb};F++;h.monitorRunDependencies&&h.monitorRunDependencies(F);if(h.instantiateWasm)try{return h.instantiateWasm(d,\na)}catch(e){v(\"Module.instantiateWasm callback failed with error: \"+e),ca(e)}(function(){return w||\"function\"!=typeof WebAssembly.instantiateStreaming||ua(H)||\"function\"!=typeof fetch?c(b):fetch(H,{credentials:\"same-origin\"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(f){v(\"wasm streaming compile failed: \"+f);v(\"falling back to ArrayBuffer instantiation\");return c(b)})})})().catch(ca);return{}})();\nh.___wasm_call_ctors=function(){return(h.___wasm_call_ctors=h.asm.F).apply(null,arguments)};var Ka=h.___getTypeName=function(){return(Ka=h.___getTypeName=h.asm.G).apply(null,arguments)};h.__embind_initialize_bindings=function(){return(h.__embind_initialize_bindings=h.asm.H).apply(null,arguments)};var Ib=h._malloc=function(){return(Ib=h._malloc=h.asm.I).apply(null,arguments)},S=h._free=function(){return(S=h._free=h.asm.K).apply(null,arguments)};\nh.dynCall_jiji=function(){return(h.dynCall_jiji=h.asm.L).apply(null,arguments)};var Kb;G=function Lb(){Kb||Mb();Kb||(G=Lb)};\nfunction Mb(){function a(){if(!Kb&&(Kb=!0,h.calledRun=!0,!ha)){za(qa);aa(h);if(h.onRuntimeInitialized)h.onRuntimeInitialized();if(h.postRun)for(\"function\"==typeof h.postRun&&(h.postRun=[h.postRun]);h.postRun.length;){var b=h.postRun.shift();ra.unshift(b)}za(ra)}}if(!(0<F)){if(h.preRun)for(\"function\"==typeof h.preRun&&(h.preRun=[h.preRun]);h.preRun.length;)sa();za(pa);0<F||(h.setStatus?(h.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){h.setStatus(\"\")},1);a()},1)):a())}}\nif(h.preInit)for(\"function\"==typeof h.preInit&&(h.preInit=[h.preInit]);0<h.preInit.length;)h.preInit.pop()();Mb();\n\n  return loadYoga.ready\n}\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 * @format\n */\n\n// @ts-ignore untyped from Emscripten\nimport loadYogaImpl from '../binaries/yoga-wasm-base64-esm.js';\nimport wrapAssembly from './wrapAssembly.ts';\n\nexport type {\n  Config,\n  DirtiedFunction,\n  MeasureFunction,\n  Node,\n  Yoga,\n} from './wrapAssembly.ts';\n\nexport async function loadYoga() {\n  return wrapAssembly(await loadYogaImpl());\n}\nexport * from './generated/YGEnums.ts';\n","import { loadYoga as loadYogaUntyped, type Yoga } from 'yoga-layout/load'\n\nconst loadYoga = loadYogaUntyped as (options: {\n  wasmBinary?: ArrayBuffer | ArrayBufferLike\n  instantiateWasm?: (\n    imports: WebAssembly.Imports,\n    successCallback: (instance: WebAssembly.Instance) => void\n  ) => WebAssembly.Exports | false | undefined\n}) => Promise<Yoga>\n\nlet resolveYoga: (yoga: Yoga) => void\nlet rejectYoga: (error: unknown) => void\nconst yogaPromise: Promise<Yoga> = new Promise((resolve, reject) => {\n  resolveYoga = resolve\n  rejectYoga = reject\n})\n\nexport type InitInput =\n  | string\n  | Request\n  | URL\n  | Response\n  | BufferSource\n  | Buffer\n  | WebAssembly.Module\n  | Promise<Response | BufferSource | Buffer | WebAssembly.Module>\n\nasync function loadWasm(\n  input: InitInput,\n  imports: WebAssembly.Imports\n): Promise<WebAssembly.WebAssemblyInstantiatedSource> {\n  let source: Response | BufferSource | Buffer | WebAssembly.Module\n\n  if (\n    typeof input === 'string' ||\n    (typeof Request === 'function' && input instanceof Request) ||\n    (typeof URL === 'function' && input instanceof URL)\n  ) {\n    source = await fetch(input)\n  } else {\n    source = await input\n  }\n\n  if (typeof Response === 'function' && source instanceof Response) {\n    if (typeof WebAssembly.instantiateStreaming === 'function') {\n      try {\n        return await WebAssembly.instantiateStreaming(source, imports)\n      } catch (e) {\n        if (source.headers.get('Content-Type') !== 'application/wasm') {\n          console.warn(\n            '`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n',\n            e\n          )\n        }\n      }\n    }\n\n    const bytes = await source.arrayBuffer()\n    return await WebAssembly.instantiate(bytes, imports)\n  }\n\n  const instantiated = (await WebAssembly.instantiate(\n    'buffer' in source\n      ? source.buffer.slice(\n          source.byteOffset,\n          source.byteOffset + source.byteLength\n        )\n      : source,\n    imports\n  )) as WebAssembly.Instance | WebAssembly.WebAssemblyInstantiatedSource\n\n  if (instantiated instanceof WebAssembly.Instance) {\n    return { instance: instantiated, module: source as WebAssembly.Module }\n  }\n\n  return instantiated\n}\n\nexport function init(input: InitInput) {\n  loadYoga({\n    instantiateWasm(imports, successCallback) {\n      loadWasm(input, imports)\n        .then(({ instance }) => {\n          successCallback(instance)\n        })\n        .catch(rejectYoga)\n\n      return {}\n    },\n  })\n    .then(resolveYoga)\n    .catch(rejectYoga)\n}\n\nexport function getYoga() {\n  return yogaPromise\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>_default\n});\nfunction _default(value) {\n    value = `${value}`;\n    if (value === \"0\") {\n        return \"0\";\n    }\n    // Flip sign of numbers\n    if (/^[+-]?(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?(%|\\w+)?$/.test(value)) {\n        return value.replace(/^[+-]?/, (sign)=>sign === \"-\" ? \"\" : \"-\");\n    }\n    if (value.includes(\"var(\") || value.includes(\"calc(\")) {\n        return `calc(${value} * -1)`;\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>_default\n});\nconst _default = [\n    \"preflight\",\n    \"container\",\n    \"accessibility\",\n    \"pointerEvents\",\n    \"visibility\",\n    \"position\",\n    \"inset\",\n    \"isolation\",\n    \"zIndex\",\n    \"order\",\n    \"gridColumn\",\n    \"gridColumnStart\",\n    \"gridColumnEnd\",\n    \"gridRow\",\n    \"gridRowStart\",\n    \"gridRowEnd\",\n    \"float\",\n    \"clear\",\n    \"margin\",\n    \"boxSizing\",\n    \"display\",\n    \"aspectRatio\",\n    \"height\",\n    \"maxHeight\",\n    \"minHeight\",\n    \"width\",\n    \"minWidth\",\n    \"maxWidth\",\n    \"flex\",\n    \"flexShrink\",\n    \"flexGrow\",\n    \"flexBasis\",\n    \"tableLayout\",\n    \"borderCollapse\",\n    \"borderSpacing\",\n    \"transformOrigin\",\n    \"translate\",\n    \"rotate\",\n    \"skew\",\n    \"scale\",\n    \"transform\",\n    \"animation\",\n    \"cursor\",\n    \"touchAction\",\n    \"userSelect\",\n    \"resize\",\n    \"scrollSnapType\",\n    \"scrollSnapAlign\",\n    \"scrollSnapStop\",\n    \"scrollMargin\",\n    \"scrollPadding\",\n    \"listStylePosition\",\n    \"listStyleType\",\n    \"appearance\",\n    \"columns\",\n    \"breakBefore\",\n    \"breakInside\",\n    \"breakAfter\",\n    \"gridAutoColumns\",\n    \"gridAutoFlow\",\n    \"gridAutoRows\",\n    \"gridTemplateColumns\",\n    \"gridTemplateRows\",\n    \"flexDirection\",\n    \"flexWrap\",\n    \"placeContent\",\n    \"placeItems\",\n    \"alignContent\",\n    \"alignItems\",\n    \"justifyContent\",\n    \"justifyItems\",\n    \"gap\",\n    \"space\",\n    \"divideWidth\",\n    \"divideStyle\",\n    \"divideColor\",\n    \"divideOpacity\",\n    \"placeSelf\",\n    \"alignSelf\",\n    \"justifySelf\",\n    \"overflow\",\n    \"overscrollBehavior\",\n    \"scrollBehavior\",\n    \"textOverflow\",\n    \"whitespace\",\n    \"wordBreak\",\n    \"borderRadius\",\n    \"borderWidth\",\n    \"borderStyle\",\n    \"borderColor\",\n    \"borderOpacity\",\n    \"backgroundColor\",\n    \"backgroundOpacity\",\n    \"backgroundImage\",\n    \"gradientColorStops\",\n    \"boxDecorationBreak\",\n    \"backgroundSize\",\n    \"backgroundAttachment\",\n    \"backgroundClip\",\n    \"backgroundPosition\",\n    \"backgroundRepeat\",\n    \"backgroundOrigin\",\n    \"fill\",\n    \"stroke\",\n    \"strokeWidth\",\n    \"objectFit\",\n    \"objectPosition\",\n    \"padding\",\n    \"textAlign\",\n    \"textIndent\",\n    \"verticalAlign\",\n    \"fontFamily\",\n    \"fontSize\",\n    \"fontWeight\",\n    \"textTransform\",\n    \"fontStyle\",\n    \"fontVariantNumeric\",\n    \"lineHeight\",\n    \"letterSpacing\",\n    \"textColor\",\n    \"textOpacity\",\n    \"textDecoration\",\n    \"textDecorationColor\",\n    \"textDecorationStyle\",\n    \"textDecorationThickness\",\n    \"textUnderlineOffset\",\n    \"fontSmoothing\",\n    \"placeholderColor\",\n    \"placeholderOpacity\",\n    \"caretColor\",\n    \"accentColor\",\n    \"opacity\",\n    \"backgroundBlendMode\",\n    \"mixBlendMode\",\n    \"boxShadow\",\n    \"boxShadowColor\",\n    \"outlineStyle\",\n    \"outlineWidth\",\n    \"outlineOffset\",\n    \"outlineColor\",\n    \"ringWidth\",\n    \"ringColor\",\n    \"ringOpacity\",\n    \"ringOffsetWidth\",\n    \"ringOffsetColor\",\n    \"blur\",\n    \"brightness\",\n    \"contrast\",\n    \"dropShadow\",\n    \"grayscale\",\n    \"hueRotate\",\n    \"invert\",\n    \"saturate\",\n    \"sepia\",\n    \"filter\",\n    \"backdropBlur\",\n    \"backdropBrightness\",\n    \"backdropContrast\",\n    \"backdropGrayscale\",\n    \"backdropHueRotate\",\n    \"backdropInvert\",\n    \"backdropOpacity\",\n    \"backdropSaturate\",\n    \"backdropSepia\",\n    \"backdropFilter\",\n    \"transitionProperty\",\n    \"transitionDelay\",\n    \"transitionDuration\",\n    \"transitionTimingFunction\",\n    \"willChange\",\n    \"content\"\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>_default\n});\nfunction _default(pluginConfig, plugins) {\n    if (pluginConfig === undefined) {\n        return plugins;\n    }\n    const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [\n        ...new Set(plugins.filter((pluginName)=>{\n            return pluginConfig !== false && pluginConfig[pluginName] !== false;\n        }).concat(Object.keys(pluginConfig).filter((pluginName)=>{\n            return pluginConfig[pluginName] !== false;\n        }))), \n    ];\n    return pluginNames;\n}\n","/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: [],\n  presets: [],\n  darkMode: 'media', // or 'class'\n  theme: {\n    screens: {\n      sm: '640px',\n      md: '768px',\n      lg: '1024px',\n      xl: '1280px',\n      '2xl': '1536px',\n    },\n    colors: ({ colors }) => ({\n      inherit: colors.inherit,\n      current: colors.current,\n      transparent: colors.transparent,\n      black: colors.black,\n      white: colors.white,\n      slate: colors.slate,\n      gray: colors.gray,\n      zinc: colors.zinc,\n      neutral: colors.neutral,\n      stone: colors.stone,\n      red: colors.red,\n      orange: colors.orange,\n      amber: colors.amber,\n      yellow: colors.yellow,\n      lime: colors.lime,\n      green: colors.green,\n      emerald: colors.emerald,\n      teal: colors.teal,\n      cyan: colors.cyan,\n      sky: colors.sky,\n      blue: colors.blue,\n      indigo: colors.indigo,\n      violet: colors.violet,\n      purple: colors.purple,\n      fuchsia: colors.fuchsia,\n      pink: colors.pink,\n      rose: colors.rose,\n    }),\n    columns: {\n      auto: 'auto',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n      8: '8',\n      9: '9',\n      10: '10',\n      11: '11',\n      12: '12',\n      '3xs': '16rem',\n      '2xs': '18rem',\n      xs: '20rem',\n      sm: '24rem',\n      md: '28rem',\n      lg: '32rem',\n      xl: '36rem',\n      '2xl': '42rem',\n      '3xl': '48rem',\n      '4xl': '56rem',\n      '5xl': '64rem',\n      '6xl': '72rem',\n      '7xl': '80rem',\n    },\n    spacing: {\n      px: '1px',\n      0: '0px',\n      0.5: '0.125rem',\n      1: '0.25rem',\n      1.5: '0.375rem',\n      2: '0.5rem',\n      2.5: '0.625rem',\n      3: '0.75rem',\n      3.5: '0.875rem',\n      4: '1rem',\n      5: '1.25rem',\n      6: '1.5rem',\n      7: '1.75rem',\n      8: '2rem',\n      9: '2.25rem',\n      10: '2.5rem',\n      11: '2.75rem',\n      12: '3rem',\n      14: '3.5rem',\n      16: '4rem',\n      20: '5rem',\n      24: '6rem',\n      28: '7rem',\n      32: '8rem',\n      36: '9rem',\n      40: '10rem',\n      44: '11rem',\n      48: '12rem',\n      52: '13rem',\n      56: '14rem',\n      60: '15rem',\n      64: '16rem',\n      72: '18rem',\n      80: '20rem',\n      96: '24rem',\n    },\n    animation: {\n      none: 'none',\n      spin: 'spin 1s linear infinite',\n      ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n      pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n      bounce: 'bounce 1s infinite',\n    },\n    aspectRatio: {\n      auto: 'auto',\n      square: '1 / 1',\n      video: '16 / 9',\n    },\n    backdropBlur: ({ theme }) => theme('blur'),\n    backdropBrightness: ({ theme }) => theme('brightness'),\n    backdropContrast: ({ theme }) => theme('contrast'),\n    backdropGrayscale: ({ theme }) => theme('grayscale'),\n    backdropHueRotate: ({ theme }) => theme('hueRotate'),\n    backdropInvert: ({ theme }) => theme('invert'),\n    backdropOpacity: ({ theme }) => theme('opacity'),\n    backdropSaturate: ({ theme }) => theme('saturate'),\n    backdropSepia: ({ theme }) => theme('sepia'),\n    backgroundColor: ({ theme }) => theme('colors'),\n    backgroundImage: {\n      none: 'none',\n      'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n      'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n      'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n      'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n      'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n      'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n      'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n      'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n    },\n    backgroundOpacity: ({ theme }) => theme('opacity'),\n    backgroundPosition: {\n      bottom: 'bottom',\n      center: 'center',\n      left: 'left',\n      'left-bottom': 'left bottom',\n      'left-top': 'left top',\n      right: 'right',\n      'right-bottom': 'right bottom',\n      'right-top': 'right top',\n      top: 'top',\n    },\n    backgroundSize: {\n      auto: 'auto',\n      cover: 'cover',\n      contain: 'contain',\n    },\n    blur: {\n      0: '0',\n      none: '0',\n      sm: '4px',\n      DEFAULT: '8px',\n      md: '12px',\n      lg: '16px',\n      xl: '24px',\n      '2xl': '40px',\n      '3xl': '64px',\n    },\n    brightness: {\n      0: '0',\n      50: '.5',\n      75: '.75',\n      90: '.9',\n      95: '.95',\n      100: '1',\n      105: '1.05',\n      110: '1.1',\n      125: '1.25',\n      150: '1.5',\n      200: '2',\n    },\n    borderColor: ({ theme }) => ({\n      ...theme('colors'),\n      DEFAULT: theme('colors.gray.200', 'currentColor'),\n    }),\n    borderOpacity: ({ theme }) => theme('opacity'),\n    borderRadius: {\n      none: '0px',\n      sm: '0.125rem',\n      DEFAULT: '0.25rem',\n      md: '0.375rem',\n      lg: '0.5rem',\n      xl: '0.75rem',\n      '2xl': '1rem',\n      '3xl': '1.5rem',\n      full: '9999px',\n    },\n    borderSpacing: ({ theme }) => ({\n      ...theme('spacing'),\n    }),\n    borderWidth: {\n      DEFAULT: '1px',\n      0: '0px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    boxShadow: {\n      sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n      DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n      md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n      lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n      xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n      '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n      inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n      none: 'none',\n    },\n    boxShadowColor: ({ theme }) => theme('colors'),\n    caretColor: ({ theme }) => theme('colors'),\n    accentColor: ({ theme }) => ({\n      ...theme('colors'),\n      auto: 'auto',\n    }),\n    contrast: {\n      0: '0',\n      50: '.5',\n      75: '.75',\n      100: '1',\n      125: '1.25',\n      150: '1.5',\n      200: '2',\n    },\n    container: {},\n    content: {\n      none: 'none',\n    },\n    cursor: {\n      auto: 'auto',\n      default: 'default',\n      pointer: 'pointer',\n      wait: 'wait',\n      text: 'text',\n      move: 'move',\n      help: 'help',\n      'not-allowed': 'not-allowed',\n      none: 'none',\n      'context-menu': 'context-menu',\n      progress: 'progress',\n      cell: 'cell',\n      crosshair: 'crosshair',\n      'vertical-text': 'vertical-text',\n      alias: 'alias',\n      copy: 'copy',\n      'no-drop': 'no-drop',\n      grab: 'grab',\n      grabbing: 'grabbing',\n      'all-scroll': 'all-scroll',\n      'col-resize': 'col-resize',\n      'row-resize': 'row-resize',\n      'n-resize': 'n-resize',\n      'e-resize': 'e-resize',\n      's-resize': 's-resize',\n      'w-resize': 'w-resize',\n      'ne-resize': 'ne-resize',\n      'nw-resize': 'nw-resize',\n      'se-resize': 'se-resize',\n      'sw-resize': 'sw-resize',\n      'ew-resize': 'ew-resize',\n      'ns-resize': 'ns-resize',\n      'nesw-resize': 'nesw-resize',\n      'nwse-resize': 'nwse-resize',\n      'zoom-in': 'zoom-in',\n      'zoom-out': 'zoom-out',\n    },\n    divideColor: ({ theme }) => theme('borderColor'),\n    divideOpacity: ({ theme }) => theme('borderOpacity'),\n    divideWidth: ({ theme }) => theme('borderWidth'),\n    dropShadow: {\n      sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n      DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n      md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n      lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n      xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n      '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n      none: '0 0 #0000',\n    },\n    fill: ({ theme }) => theme('colors'),\n    grayscale: {\n      0: '0',\n      DEFAULT: '100%',\n    },\n    hueRotate: {\n      0: '0deg',\n      15: '15deg',\n      30: '30deg',\n      60: '60deg',\n      90: '90deg',\n      180: '180deg',\n    },\n    invert: {\n      0: '0',\n      DEFAULT: '100%',\n    },\n    flex: {\n      1: '1 1 0%',\n      auto: '1 1 auto',\n      initial: '0 1 auto',\n      none: 'none',\n    },\n    flexBasis: ({ theme }) => ({\n      auto: 'auto',\n      ...theme('spacing'),\n      '1/2': '50%',\n      '1/3': '33.333333%',\n      '2/3': '66.666667%',\n      '1/4': '25%',\n      '2/4': '50%',\n      '3/4': '75%',\n      '1/5': '20%',\n      '2/5': '40%',\n      '3/5': '60%',\n      '4/5': '80%',\n      '1/6': '16.666667%',\n      '2/6': '33.333333%',\n      '3/6': '50%',\n      '4/6': '66.666667%',\n      '5/6': '83.333333%',\n      '1/12': '8.333333%',\n      '2/12': '16.666667%',\n      '3/12': '25%',\n      '4/12': '33.333333%',\n      '5/12': '41.666667%',\n      '6/12': '50%',\n      '7/12': '58.333333%',\n      '8/12': '66.666667%',\n      '9/12': '75%',\n      '10/12': '83.333333%',\n      '11/12': '91.666667%',\n      full: '100%',\n    }),\n    flexGrow: {\n      0: '0',\n      DEFAULT: '1',\n    },\n    flexShrink: {\n      0: '0',\n      DEFAULT: '1',\n    },\n    fontFamily: {\n      sans: [\n        'ui-sans-serif',\n        'system-ui',\n        '-apple-system',\n        'BlinkMacSystemFont',\n        '\"Segoe UI\"',\n        'Roboto',\n        '\"Helvetica Neue\"',\n        'Arial',\n        '\"Noto Sans\"',\n        'sans-serif',\n        '\"Apple Color Emoji\"',\n        '\"Segoe UI Emoji\"',\n        '\"Segoe UI Symbol\"',\n        '\"Noto Color Emoji\"',\n      ],\n      serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n      mono: [\n        'ui-monospace',\n        'SFMono-Regular',\n        'Menlo',\n        'Monaco',\n        'Consolas',\n        '\"Liberation Mono\"',\n        '\"Courier New\"',\n        'monospace',\n      ],\n    },\n    fontSize: {\n      xs: ['0.75rem', { lineHeight: '1rem' }],\n      sm: ['0.875rem', { lineHeight: '1.25rem' }],\n      base: ['1rem', { lineHeight: '1.5rem' }],\n      lg: ['1.125rem', { lineHeight: '1.75rem' }],\n      xl: ['1.25rem', { lineHeight: '1.75rem' }],\n      '2xl': ['1.5rem', { lineHeight: '2rem' }],\n      '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n      '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n      '5xl': ['3rem', { lineHeight: '1' }],\n      '6xl': ['3.75rem', { lineHeight: '1' }],\n      '7xl': ['4.5rem', { lineHeight: '1' }],\n      '8xl': ['6rem', { lineHeight: '1' }],\n      '9xl': ['8rem', { lineHeight: '1' }],\n    },\n    fontWeight: {\n      thin: '100',\n      extralight: '200',\n      light: '300',\n      normal: '400',\n      medium: '500',\n      semibold: '600',\n      bold: '700',\n      extrabold: '800',\n      black: '900',\n    },\n    gap: ({ theme }) => theme('spacing'),\n    gradientColorStops: ({ theme }) => theme('colors'),\n    gridAutoColumns: {\n      auto: 'auto',\n      min: 'min-content',\n      max: 'max-content',\n      fr: 'minmax(0, 1fr)',\n    },\n    gridAutoRows: {\n      auto: 'auto',\n      min: 'min-content',\n      max: 'max-content',\n      fr: 'minmax(0, 1fr)',\n    },\n    gridColumn: {\n      auto: 'auto',\n      'span-1': 'span 1 / span 1',\n      'span-2': 'span 2 / span 2',\n      'span-3': 'span 3 / span 3',\n      'span-4': 'span 4 / span 4',\n      'span-5': 'span 5 / span 5',\n      'span-6': 'span 6 / span 6',\n      'span-7': 'span 7 / span 7',\n      'span-8': 'span 8 / span 8',\n      'span-9': 'span 9 / span 9',\n      'span-10': 'span 10 / span 10',\n      'span-11': 'span 11 / span 11',\n      'span-12': 'span 12 / span 12',\n      'span-full': '1 / -1',\n    },\n    gridColumnEnd: {\n      auto: 'auto',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n      8: '8',\n      9: '9',\n      10: '10',\n      11: '11',\n      12: '12',\n      13: '13',\n    },\n    gridColumnStart: {\n      auto: 'auto',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n      8: '8',\n      9: '9',\n      10: '10',\n      11: '11',\n      12: '12',\n      13: '13',\n    },\n    gridRow: {\n      auto: 'auto',\n      'span-1': 'span 1 / span 1',\n      'span-2': 'span 2 / span 2',\n      'span-3': 'span 3 / span 3',\n      'span-4': 'span 4 / span 4',\n      'span-5': 'span 5 / span 5',\n      'span-6': 'span 6 / span 6',\n      'span-full': '1 / -1',\n    },\n    gridRowStart: {\n      auto: 'auto',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n    },\n    gridRowEnd: {\n      auto: 'auto',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n    },\n    gridTemplateColumns: {\n      none: 'none',\n      1: 'repeat(1, minmax(0, 1fr))',\n      2: 'repeat(2, minmax(0, 1fr))',\n      3: 'repeat(3, minmax(0, 1fr))',\n      4: 'repeat(4, minmax(0, 1fr))',\n      5: 'repeat(5, minmax(0, 1fr))',\n      6: 'repeat(6, minmax(0, 1fr))',\n      7: 'repeat(7, minmax(0, 1fr))',\n      8: 'repeat(8, minmax(0, 1fr))',\n      9: 'repeat(9, minmax(0, 1fr))',\n      10: 'repeat(10, minmax(0, 1fr))',\n      11: 'repeat(11, minmax(0, 1fr))',\n      12: 'repeat(12, minmax(0, 1fr))',\n    },\n    gridTemplateRows: {\n      none: 'none',\n      1: 'repeat(1, minmax(0, 1fr))',\n      2: 'repeat(2, minmax(0, 1fr))',\n      3: 'repeat(3, minmax(0, 1fr))',\n      4: 'repeat(4, minmax(0, 1fr))',\n      5: 'repeat(5, minmax(0, 1fr))',\n      6: 'repeat(6, minmax(0, 1fr))',\n    },\n    height: ({ theme }) => ({\n      auto: 'auto',\n      ...theme('spacing'),\n      '1/2': '50%',\n      '1/3': '33.333333%',\n      '2/3': '66.666667%',\n      '1/4': '25%',\n      '2/4': '50%',\n      '3/4': '75%',\n      '1/5': '20%',\n      '2/5': '40%',\n      '3/5': '60%',\n      '4/5': '80%',\n      '1/6': '16.666667%',\n      '2/6': '33.333333%',\n      '3/6': '50%',\n      '4/6': '66.666667%',\n      '5/6': '83.333333%',\n      full: '100%',\n      screen: '100vh',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n    }),\n    inset: ({ theme }) => ({\n      auto: 'auto',\n      ...theme('spacing'),\n      '1/2': '50%',\n      '1/3': '33.333333%',\n      '2/3': '66.666667%',\n      '1/4': '25%',\n      '2/4': '50%',\n      '3/4': '75%',\n      full: '100%',\n    }),\n    keyframes: {\n      spin: {\n        to: {\n          transform: 'rotate(360deg)',\n        },\n      },\n      ping: {\n        '75%, 100%': {\n          transform: 'scale(2)',\n          opacity: '0',\n        },\n      },\n      pulse: {\n        '50%': {\n          opacity: '.5',\n        },\n      },\n      bounce: {\n        '0%, 100%': {\n          transform: 'translateY(-25%)',\n          animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n        },\n        '50%': {\n          transform: 'none',\n          animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n        },\n      },\n    },\n    letterSpacing: {\n      tighter: '-0.05em',\n      tight: '-0.025em',\n      normal: '0em',\n      wide: '0.025em',\n      wider: '0.05em',\n      widest: '0.1em',\n    },\n    lineHeight: {\n      none: '1',\n      tight: '1.25',\n      snug: '1.375',\n      normal: '1.5',\n      relaxed: '1.625',\n      loose: '2',\n      3: '.75rem',\n      4: '1rem',\n      5: '1.25rem',\n      6: '1.5rem',\n      7: '1.75rem',\n      8: '2rem',\n      9: '2.25rem',\n      10: '2.5rem',\n    },\n    listStyleType: {\n      none: 'none',\n      disc: 'disc',\n      decimal: 'decimal',\n    },\n    margin: ({ theme }) => ({\n      auto: 'auto',\n      ...theme('spacing'),\n    }),\n    maxHeight: ({ theme }) => ({\n      ...theme('spacing'),\n      full: '100%',\n      screen: '100vh',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n    }),\n    maxWidth: ({ theme, breakpoints }) => ({\n      none: 'none',\n      0: '0rem',\n      xs: '20rem',\n      sm: '24rem',\n      md: '28rem',\n      lg: '32rem',\n      xl: '36rem',\n      '2xl': '42rem',\n      '3xl': '48rem',\n      '4xl': '56rem',\n      '5xl': '64rem',\n      '6xl': '72rem',\n      '7xl': '80rem',\n      full: '100%',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n      prose: '65ch',\n      ...breakpoints(theme('screens')),\n    }),\n    minHeight: {\n      0: '0px',\n      full: '100%',\n      screen: '100vh',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n    },\n    minWidth: {\n      0: '0px',\n      full: '100%',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n    },\n    objectPosition: {\n      bottom: 'bottom',\n      center: 'center',\n      left: 'left',\n      'left-bottom': 'left bottom',\n      'left-top': 'left top',\n      right: 'right',\n      'right-bottom': 'right bottom',\n      'right-top': 'right top',\n      top: 'top',\n    },\n    opacity: {\n      0: '0',\n      5: '0.05',\n      10: '0.1',\n      20: '0.2',\n      25: '0.25',\n      30: '0.3',\n      40: '0.4',\n      50: '0.5',\n      60: '0.6',\n      70: '0.7',\n      75: '0.75',\n      80: '0.8',\n      90: '0.9',\n      95: '0.95',\n      100: '1',\n    },\n    order: {\n      first: '-9999',\n      last: '9999',\n      none: '0',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n      8: '8',\n      9: '9',\n      10: '10',\n      11: '11',\n      12: '12',\n    },\n    padding: ({ theme }) => theme('spacing'),\n    placeholderColor: ({ theme }) => theme('colors'),\n    placeholderOpacity: ({ theme }) => theme('opacity'),\n    outlineColor: ({ theme }) => theme('colors'),\n    outlineOffset: {\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    outlineWidth: {\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    ringColor: ({ theme }) => ({\n      DEFAULT: theme(`colors.blue.500`, '#3b82f6'),\n      ...theme('colors'),\n    }),\n    ringOffsetColor: ({ theme }) => theme('colors'),\n    ringOffsetWidth: {\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    ringOpacity: ({ theme }) => ({\n      DEFAULT: '0.5',\n      ...theme('opacity'),\n    }),\n    ringWidth: {\n      DEFAULT: '3px',\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    rotate: {\n      0: '0deg',\n      1: '1deg',\n      2: '2deg',\n      3: '3deg',\n      6: '6deg',\n      12: '12deg',\n      45: '45deg',\n      90: '90deg',\n      180: '180deg',\n    },\n    saturate: {\n      0: '0',\n      50: '.5',\n      100: '1',\n      150: '1.5',\n      200: '2',\n    },\n    scale: {\n      0: '0',\n      50: '.5',\n      75: '.75',\n      90: '.9',\n      95: '.95',\n      100: '1',\n      105: '1.05',\n      110: '1.1',\n      125: '1.25',\n      150: '1.5',\n    },\n    scrollMargin: ({ theme }) => ({\n      ...theme('spacing'),\n    }),\n    scrollPadding: ({ theme }) => theme('spacing'),\n    sepia: {\n      0: '0',\n      DEFAULT: '100%',\n    },\n    skew: {\n      0: '0deg',\n      1: '1deg',\n      2: '2deg',\n      3: '3deg',\n      6: '6deg',\n      12: '12deg',\n    },\n    space: ({ theme }) => ({\n      ...theme('spacing'),\n    }),\n    stroke: ({ theme }) => theme('colors'),\n    strokeWidth: {\n      0: '0',\n      1: '1',\n      2: '2',\n    },\n    textColor: ({ theme }) => theme('colors'),\n    textDecorationColor: ({ theme }) => theme('colors'),\n    textDecorationThickness: {\n      auto: 'auto',\n      'from-font': 'from-font',\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    textUnderlineOffset: {\n      auto: 'auto',\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    textIndent: ({ theme }) => ({\n      ...theme('spacing'),\n    }),\n    textOpacity: ({ theme }) => theme('opacity'),\n    transformOrigin: {\n      center: 'center',\n      top: 'top',\n      'top-right': 'top right',\n      right: 'right',\n      'bottom-right': 'bottom right',\n      bottom: 'bottom',\n      'bottom-left': 'bottom left',\n      left: 'left',\n      'top-left': 'top left',\n    },\n    transitionDelay: {\n      75: '75ms',\n      100: '100ms',\n      150: '150ms',\n      200: '200ms',\n      300: '300ms',\n      500: '500ms',\n      700: '700ms',\n      1000: '1000ms',\n    },\n    transitionDuration: {\n      DEFAULT: '150ms',\n      75: '75ms',\n      100: '100ms',\n      150: '150ms',\n      200: '200ms',\n      300: '300ms',\n      500: '500ms',\n      700: '700ms',\n      1000: '1000ms',\n    },\n    transitionProperty: {\n      none: 'none',\n      all: 'all',\n      DEFAULT:\n        'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n      colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n      opacity: 'opacity',\n      shadow: 'box-shadow',\n      transform: 'transform',\n    },\n    transitionTimingFunction: {\n      DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n      linear: 'linear',\n      in: 'cubic-bezier(0.4, 0, 1, 1)',\n      out: 'cubic-bezier(0, 0, 0.2, 1)',\n      'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n    },\n    translate: ({ theme }) => ({\n      ...theme('spacing'),\n      '1/2': '50%',\n      '1/3': '33.333333%',\n      '2/3': '66.666667%',\n      '1/4': '25%',\n      '2/4': '50%',\n      '3/4': '75%',\n      full: '100%',\n    }),\n    width: ({ theme }) => ({\n      auto: 'auto',\n      ...theme('spacing'),\n      '1/2': '50%',\n      '1/3': '33.333333%',\n      '2/3': '66.666667%',\n      '1/4': '25%',\n      '2/4': '50%',\n      '3/4': '75%',\n      '1/5': '20%',\n      '2/5': '40%',\n      '3/5': '60%',\n      '4/5': '80%',\n      '1/6': '16.666667%',\n      '2/6': '33.333333%',\n      '3/6': '50%',\n      '4/6': '66.666667%',\n      '5/6': '83.333333%',\n      '1/12': '8.333333%',\n      '2/12': '16.666667%',\n      '3/12': '25%',\n      '4/12': '33.333333%',\n      '5/12': '41.666667%',\n      '6/12': '50%',\n      '7/12': '58.333333%',\n      '8/12': '66.666667%',\n      '9/12': '75%',\n      '10/12': '83.333333%',\n      '11/12': '91.666667%',\n      full: '100%',\n      screen: '100vw',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n    }),\n    willChange: {\n      auto: 'auto',\n      scroll: 'scroll-position',\n      contents: 'contents',\n      transform: 'transform',\n    },\n    zIndex: {\n      auto: 'auto',\n      0: '0',\n      10: '10',\n      20: '20',\n      30: '30',\n      40: '40',\n      50: '50',\n    },\n  },\n  variantOrder: [\n    'first',\n    'last',\n    'odd',\n    'even',\n    'visited',\n    'checked',\n    'empty',\n    'read-only',\n    'group-hover',\n    'group-focus',\n    'focus-within',\n    'hover',\n    'focus',\n    'focus-visible',\n    'active',\n    'disabled',\n  ],\n  plugins: [],\n}\n","export default {\n  info(key, messages) {\n    console.info(...(Array.isArray(key) ? [key] : [messages, key]))\n  },\n  warn(key, messages) {\n    console.warn(...(Array.isArray(key) ? [key] : [messages, key]))\n  },\n  risk(key, messages) {\n    console.error(...(Array.isArray(key) ? [key] : [messages, key]))\n  },\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>_default\n});\nconst _log = /*#__PURE__*/ _interopRequireDefault(require(\"../util/log\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction warn({ version , from , to  }) {\n    _log.default.warn(`${from}-color-renamed`, [\n        `As of Tailwind CSS ${version}, \\`${from}\\` has been renamed to \\`${to}\\`.`,\n        \"Update your configuration file to silence this warning.\", \n    ]);\n}\nconst _default = {\n    inherit: \"inherit\",\n    current: \"currentColor\",\n    transparent: \"transparent\",\n    black: \"#000\",\n    white: \"#fff\",\n    slate: {\n        50: \"#f8fafc\",\n        100: \"#f1f5f9\",\n        200: \"#e2e8f0\",\n        300: \"#cbd5e1\",\n        400: \"#94a3b8\",\n        500: \"#64748b\",\n        600: \"#475569\",\n        700: \"#334155\",\n        800: \"#1e293b\",\n        900: \"#0f172a\"\n    },\n    gray: {\n        50: \"#f9fafb\",\n        100: \"#f3f4f6\",\n        200: \"#e5e7eb\",\n        300: \"#d1d5db\",\n        400: \"#9ca3af\",\n        500: \"#6b7280\",\n        600: \"#4b5563\",\n        700: \"#374151\",\n        800: \"#1f2937\",\n        900: \"#111827\"\n    },\n    zinc: {\n        50: \"#fafafa\",\n        100: \"#f4f4f5\",\n        200: \"#e4e4e7\",\n        300: \"#d4d4d8\",\n        400: \"#a1a1aa\",\n        500: \"#71717a\",\n        600: \"#52525b\",\n        700: \"#3f3f46\",\n        800: \"#27272a\",\n        900: \"#18181b\"\n    },\n    neutral: {\n        50: \"#fafafa\",\n        100: \"#f5f5f5\",\n        200: \"#e5e5e5\",\n        300: \"#d4d4d4\",\n        400: \"#a3a3a3\",\n        500: \"#737373\",\n        600: \"#525252\",\n        700: \"#404040\",\n        800: \"#262626\",\n        900: \"#171717\"\n    },\n    stone: {\n        50: \"#fafaf9\",\n        100: \"#f5f5f4\",\n        200: \"#e7e5e4\",\n        300: \"#d6d3d1\",\n        400: \"#a8a29e\",\n        500: \"#78716c\",\n        600: \"#57534e\",\n        700: \"#44403c\",\n        800: \"#292524\",\n        900: \"#1c1917\"\n    },\n    red: {\n        50: \"#fef2f2\",\n        100: \"#fee2e2\",\n        200: \"#fecaca\",\n        300: \"#fca5a5\",\n        400: \"#f87171\",\n        500: \"#ef4444\",\n        600: \"#dc2626\",\n        700: \"#b91c1c\",\n        800: \"#991b1b\",\n        900: \"#7f1d1d\"\n    },\n    orange: {\n        50: \"#fff7ed\",\n        100: \"#ffedd5\",\n        200: \"#fed7aa\",\n        300: \"#fdba74\",\n        400: \"#fb923c\",\n        500: \"#f97316\",\n        600: \"#ea580c\",\n        700: \"#c2410c\",\n        800: \"#9a3412\",\n        900: \"#7c2d12\"\n    },\n    amber: {\n        50: \"#fffbeb\",\n        100: \"#fef3c7\",\n        200: \"#fde68a\",\n        300: \"#fcd34d\",\n        400: \"#fbbf24\",\n        500: \"#f59e0b\",\n        600: \"#d97706\",\n        700: \"#b45309\",\n        800: \"#92400e\",\n        900: \"#78350f\"\n    },\n    yellow: {\n        50: \"#fefce8\",\n        100: \"#fef9c3\",\n        200: \"#fef08a\",\n        300: \"#fde047\",\n        400: \"#facc15\",\n        500: \"#eab308\",\n        600: \"#ca8a04\",\n        700: \"#a16207\",\n        800: \"#854d0e\",\n        900: \"#713f12\"\n    },\n    lime: {\n        50: \"#f7fee7\",\n        100: \"#ecfccb\",\n        200: \"#d9f99d\",\n        300: \"#bef264\",\n        400: \"#a3e635\",\n        500: \"#84cc16\",\n        600: \"#65a30d\",\n        700: \"#4d7c0f\",\n        800: \"#3f6212\",\n        900: \"#365314\"\n    },\n    green: {\n        50: \"#f0fdf4\",\n        100: \"#dcfce7\",\n        200: \"#bbf7d0\",\n        300: \"#86efac\",\n        400: \"#4ade80\",\n        500: \"#22c55e\",\n        600: \"#16a34a\",\n        700: \"#15803d\",\n        800: \"#166534\",\n        900: \"#14532d\"\n    },\n    emerald: {\n        50: \"#ecfdf5\",\n        100: \"#d1fae5\",\n        200: \"#a7f3d0\",\n        300: \"#6ee7b7\",\n        400: \"#34d399\",\n        500: \"#10b981\",\n        600: \"#059669\",\n        700: \"#047857\",\n        800: \"#065f46\",\n        900: \"#064e3b\"\n    },\n    teal: {\n        50: \"#f0fdfa\",\n        100: \"#ccfbf1\",\n        200: \"#99f6e4\",\n        300: \"#5eead4\",\n        400: \"#2dd4bf\",\n        500: \"#14b8a6\",\n        600: \"#0d9488\",\n        700: \"#0f766e\",\n        800: \"#115e59\",\n        900: \"#134e4a\"\n    },\n    cyan: {\n        50: \"#ecfeff\",\n        100: \"#cffafe\",\n        200: \"#a5f3fc\",\n        300: \"#67e8f9\",\n        400: \"#22d3ee\",\n        500: \"#06b6d4\",\n        600: \"#0891b2\",\n        700: \"#0e7490\",\n        800: \"#155e75\",\n        900: \"#164e63\"\n    },\n    sky: {\n        50: \"#f0f9ff\",\n        100: \"#e0f2fe\",\n        200: \"#bae6fd\",\n        300: \"#7dd3fc\",\n        400: \"#38bdf8\",\n        500: \"#0ea5e9\",\n        600: \"#0284c7\",\n        700: \"#0369a1\",\n        800: \"#075985\",\n        900: \"#0c4a6e\"\n    },\n    blue: {\n        50: \"#eff6ff\",\n        100: \"#dbeafe\",\n        200: \"#bfdbfe\",\n        300: \"#93c5fd\",\n        400: \"#60a5fa\",\n        500: \"#3b82f6\",\n        600: \"#2563eb\",\n        700: \"#1d4ed8\",\n        800: \"#1e40af\",\n        900: \"#1e3a8a\"\n    },\n    indigo: {\n        50: \"#eef2ff\",\n        100: \"#e0e7ff\",\n        200: \"#c7d2fe\",\n        300: \"#a5b4fc\",\n        400: \"#818cf8\",\n        500: \"#6366f1\",\n        600: \"#4f46e5\",\n        700: \"#4338ca\",\n        800: \"#3730a3\",\n        900: \"#312e81\"\n    },\n    violet: {\n        50: \"#f5f3ff\",\n        100: \"#ede9fe\",\n        200: \"#ddd6fe\",\n        300: \"#c4b5fd\",\n        400: \"#a78bfa\",\n        500: \"#8b5cf6\",\n        600: \"#7c3aed\",\n        700: \"#6d28d9\",\n        800: \"#5b21b6\",\n        900: \"#4c1d95\"\n    },\n    purple: {\n        50: \"#faf5ff\",\n        100: \"#f3e8ff\",\n        200: \"#e9d5ff\",\n        300: \"#d8b4fe\",\n        400: \"#c084fc\",\n        500: \"#a855f7\",\n        600: \"#9333ea\",\n        700: \"#7e22ce\",\n        800: \"#6b21a8\",\n        900: \"#581c87\"\n    },\n    fuchsia: {\n        50: \"#fdf4ff\",\n        100: \"#fae8ff\",\n        200: \"#f5d0fe\",\n        300: \"#f0abfc\",\n        400: \"#e879f9\",\n        500: \"#d946ef\",\n        600: \"#c026d3\",\n        700: \"#a21caf\",\n        800: \"#86198f\",\n        900: \"#701a75\"\n    },\n    pink: {\n        50: \"#fdf2f8\",\n        100: \"#fce7f3\",\n        200: \"#fbcfe8\",\n        300: \"#f9a8d4\",\n        400: \"#f472b6\",\n        500: \"#ec4899\",\n        600: \"#db2777\",\n        700: \"#be185d\",\n        800: \"#9d174d\",\n        900: \"#831843\"\n    },\n    rose: {\n        50: \"#fff1f2\",\n        100: \"#ffe4e6\",\n        200: \"#fecdd3\",\n        300: \"#fda4af\",\n        400: \"#fb7185\",\n        500: \"#f43f5e\",\n        600: \"#e11d48\",\n        700: \"#be123c\",\n        800: \"#9f1239\",\n        900: \"#881337\"\n    },\n    get lightBlue () {\n        warn({\n            version: \"v2.2\",\n            from: \"lightBlue\",\n            to: \"sky\"\n        });\n        return this.sky;\n    },\n    get warmGray () {\n        warn({\n            version: \"v3.0\",\n            from: \"warmGray\",\n            to: \"stone\"\n        });\n        return this.stone;\n    },\n    get trueGray () {\n        warn({\n            version: \"v3.0\",\n            from: \"trueGray\",\n            to: \"neutral\"\n        });\n        return this.neutral;\n    },\n    get coolGray () {\n        warn({\n            version: \"v3.0\",\n            from: \"coolGray\",\n            to: \"gray\"\n        });\n        return this.gray;\n    },\n    get blueGray () {\n        warn({\n            version: \"v3.0\",\n            from: \"blueGray\",\n            to: \"slate\"\n        });\n        return this.slate;\n    }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"defaults\", {\n    enumerable: true,\n    get: ()=>defaults\n});\nfunction defaults(target, ...sources) {\n    for (let source of sources){\n        for(let k in source){\n            var ref;\n            if (!(target === null || target === void 0 ? void 0 : (ref = target.hasOwnProperty) === null || ref === void 0 ? void 0 : ref.call(target, k))) {\n                target[k] = source[k];\n            }\n        }\n        for (let k1 of Object.getOwnPropertySymbols(source)){\n            var ref1;\n            if (!(target === null || target === void 0 ? void 0 : (ref1 = target.hasOwnProperty) === null || ref1 === void 0 ? void 0 : ref1.call(target, k1))) {\n                target[k1] = source[k1];\n            }\n        }\n    }\n    return target;\n}\n","/**\n * Parse a path string into an array of path segments.\n *\n * Square bracket notation `a[b]` may be used to \"escape\" dots that would otherwise be interpreted as path separators.\n *\n * Example:\n * a -> ['a']\n * a.b.c -> ['a', 'b', 'c']\n * a[b].c -> ['a', 'b', 'c']\n * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']\n * a[b][c][d] -> ['a', 'b', 'c', 'd']\n *\n * @param {string|string[]} path\n **/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"toPath\", {\n    enumerable: true,\n    get: ()=>toPath\n});\nfunction toPath(path) {\n    if (Array.isArray(path)) return path;\n    let openBrackets = path.split(\"[\").length - 1;\n    let closedBrackets = path.split(\"]\").length - 1;\n    if (openBrackets !== closedBrackets) {\n        throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);\n    }\n    return path.split(/\\.(?![^\\[]*\\])|[\\[\\]]/g).filter(Boolean);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"normalizeConfig\", {\n    enumerable: true,\n    get: ()=>normalizeConfig\n});\nconst _log = /*#__PURE__*/ _interopRequireWildcard(require(\"./log\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n    if (typeof WeakMap !== \"function\") return null;\n    var cacheBabelInterop = new WeakMap();\n    var cacheNodeInterop = new WeakMap();\n    return (_getRequireWildcardCache = function(nodeInterop) {\n        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n    })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n    if (!nodeInterop && obj && obj.__esModule) {\n        return obj;\n    }\n    if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n        return {\n            default: obj\n        };\n    }\n    var cache = _getRequireWildcardCache(nodeInterop);\n    if (cache && cache.has(obj)) {\n        return cache.get(obj);\n    }\n    var newObj = {};\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n    for(var key in obj){\n        if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n            if (desc && (desc.get || desc.set)) {\n                Object.defineProperty(newObj, key, desc);\n            } else {\n                newObj[key] = obj[key];\n            }\n        }\n    }\n    newObj.default = obj;\n    if (cache) {\n        cache.set(obj, newObj);\n    }\n    return newObj;\n}\nfunction normalizeConfig(config) {\n    // Quick structure validation\n    /**\n   * type FilePath = string\n   * type RawFile = { raw: string, extension?: string }\n   * type ExtractorFn = (content: string) => Array<string>\n   * type TransformerFn = (content: string) => string\n   *\n   * type Content =\n   *   | Array<FilePath | RawFile>\n   *   | {\n   *       files: Array<FilePath | RawFile>,\n   *       extract?: ExtractorFn | { [extension: string]: ExtractorFn }\n   *       transform?: TransformerFn | { [extension: string]: TransformerFn }\n   *   }\n   */ let valid = (()=>{\n        // `config.purge` should not exist anymore\n        if (config.purge) {\n            return false;\n        }\n        // `config.content` should exist\n        if (!config.content) {\n            return false;\n        }\n        // `config.content` should be an object or an array\n        if (!Array.isArray(config.content) && !(typeof config.content === \"object\" && config.content !== null)) {\n            return false;\n        }\n        // When `config.content` is an array, it should consist of FilePaths or RawFiles\n        if (Array.isArray(config.content)) {\n            return config.content.every((path)=>{\n                // `path` can be a string\n                if (typeof path === \"string\") return true;\n                // `path` can be an object { raw: string, extension?: string }\n                // `raw` must be a string\n                if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n                // `extension` (if provided) should also be a string\n                if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n                    return false;\n                }\n                return true;\n            });\n        }\n        // When `config.content` is an object\n        if (typeof config.content === \"object\" && config.content !== null) {\n            // Only `files`, `extract` and `transform` can exist in `config.content`\n            if (Object.keys(config.content).some((key)=>![\n                    \"files\",\n                    \"extract\",\n                    \"transform\"\n                ].includes(key))) {\n                return false;\n            }\n            // `config.content.files` should exist of FilePaths or RawFiles\n            if (Array.isArray(config.content.files)) {\n                if (!config.content.files.every((path)=>{\n                    // `path` can be a string\n                    if (typeof path === \"string\") return true;\n                    // `path` can be an object { raw: string, extension?: string }\n                    // `raw` must be a string\n                    if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n                    // `extension` (if provided) should also be a string\n                    if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n                        return false;\n                    }\n                    return true;\n                })) {\n                    return false;\n                }\n                // `config.content.extract` is optional, and can be a Function or a Record<String, Function>\n                if (typeof config.content.extract === \"object\") {\n                    for (let value of Object.values(config.content.extract)){\n                        if (typeof value !== \"function\") {\n                            return false;\n                        }\n                    }\n                } else if (!(config.content.extract === undefined || typeof config.content.extract === \"function\")) {\n                    return false;\n                }\n                // `config.content.transform` is optional, and can be a Function or a Record<String, Function>\n                if (typeof config.content.transform === \"object\") {\n                    for (let value1 of Object.values(config.content.transform)){\n                        if (typeof value1 !== \"function\") {\n                            return false;\n                        }\n                    }\n                } else if (!(config.content.transform === undefined || typeof config.content.transform === \"function\")) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        return false;\n    })();\n    if (!valid) {\n        _log.default.warn(\"purge-deprecation\", [\n            \"The `purge`/`content` options have changed in Tailwind CSS v3.0.\",\n            \"Update your configuration file to eliminate this warning.\",\n            \"https://tailwindcss.com/docs/upgrade-guide#configure-content-sources\", \n        ]);\n    }\n    // Normalize the `safelist`\n    config.safelist = (()=>{\n        var ref;\n        let { content , purge , safelist  } = config;\n        if (Array.isArray(safelist)) return safelist;\n        if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;\n        if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;\n        if (Array.isArray(purge === null || purge === void 0 ? void 0 : (ref = purge.options) === null || ref === void 0 ? void 0 : ref.safelist)) return purge.options.safelist;\n        return [];\n    })();\n    // Normalize prefix option\n    if (typeof config.prefix === \"function\") {\n        _log.default.warn(\"prefix-function\", [\n            \"As of Tailwind CSS v3.0, `prefix` cannot be a function.\",\n            \"Update `prefix` in your configuration to be a string to eliminate this warning.\",\n            \"https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function\", \n        ]);\n        config.prefix = \"\";\n    } else {\n        var _prefix;\n        config.prefix = (_prefix = config.prefix) !== null && _prefix !== void 0 ? _prefix : \"\";\n    }\n    // Normalize the `content`\n    config.content = {\n        files: (()=>{\n            let { content , purge  } = config;\n            if (Array.isArray(purge)) return purge;\n            if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;\n            if (Array.isArray(content)) return content;\n            if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;\n            if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;\n            return [];\n        })(),\n        extract: (()=>{\n            let extract = (()=>{\n                var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9;\n                if ((ref = config.purge) === null || ref === void 0 ? void 0 : ref.extract) return config.purge.extract;\n                if ((ref1 = config.content) === null || ref1 === void 0 ? void 0 : ref1.extract) return config.content.extract;\n                if ((ref2 = config.purge) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.extract) === null || ref3 === void 0 ? void 0 : ref3.DEFAULT) return config.purge.extract.DEFAULT;\n                if ((ref4 = config.content) === null || ref4 === void 0 ? void 0 : (ref5 = ref4.extract) === null || ref5 === void 0 ? void 0 : ref5.DEFAULT) return config.content.extract.DEFAULT;\n                if ((ref6 = config.purge) === null || ref6 === void 0 ? void 0 : (ref7 = ref6.options) === null || ref7 === void 0 ? void 0 : ref7.extractors) return config.purge.options.extractors;\n                if ((ref8 = config.content) === null || ref8 === void 0 ? void 0 : (ref9 = ref8.options) === null || ref9 === void 0 ? void 0 : ref9.extractors) return config.content.options.extractors;\n                return {};\n            })();\n            let extractors = {};\n            let defaultExtractor = (()=>{\n                var ref, ref1, ref2, ref3;\n                if ((ref = config.purge) === null || ref === void 0 ? void 0 : (ref1 = ref.options) === null || ref1 === void 0 ? void 0 : ref1.defaultExtractor) {\n                    return config.purge.options.defaultExtractor;\n                }\n                if ((ref2 = config.content) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.options) === null || ref3 === void 0 ? void 0 : ref3.defaultExtractor) {\n                    return config.content.options.defaultExtractor;\n                }\n                return undefined;\n            })();\n            if (defaultExtractor !== undefined) {\n                extractors.DEFAULT = defaultExtractor;\n            }\n            // Functions\n            if (typeof extract === \"function\") {\n                extractors.DEFAULT = extract;\n            } else if (Array.isArray(extract)) {\n                for (let { extensions , extractor  } of extract !== null && extract !== void 0 ? extract : []){\n                    for (let extension of extensions){\n                        extractors[extension] = extractor;\n                    }\n                }\n            } else if (typeof extract === \"object\" && extract !== null) {\n                Object.assign(extractors, extract);\n            }\n            return extractors;\n        })(),\n        transform: (()=>{\n            let transform = (()=>{\n                var ref, ref1, ref2, ref3, ref4, ref5;\n                if ((ref = config.purge) === null || ref === void 0 ? void 0 : ref.transform) return config.purge.transform;\n                if ((ref1 = config.content) === null || ref1 === void 0 ? void 0 : ref1.transform) return config.content.transform;\n                if ((ref2 = config.purge) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.transform) === null || ref3 === void 0 ? void 0 : ref3.DEFAULT) return config.purge.transform.DEFAULT;\n                if ((ref4 = config.content) === null || ref4 === void 0 ? void 0 : (ref5 = ref4.transform) === null || ref5 === void 0 ? void 0 : ref5.DEFAULT) return config.content.transform.DEFAULT;\n                return {};\n            })();\n            let transformers = {};\n            if (typeof transform === \"function\") {\n                transformers.DEFAULT = transform;\n            }\n            if (typeof transform === \"object\" && transform !== null) {\n                Object.assign(transformers, transform);\n            }\n            return transformers;\n        })()\n    };\n    // Validate globs to prevent bogus globs.\n    // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`\n    for (let file of config.content.files){\n        if (typeof file === \"string\" && /{([^,]*?)}/g.test(file)) {\n            _log.default.warn(\"invalid-glob-braces\", [\n                `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,\n                `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, \"$1\"))} to silence this warning.`\n            ]);\n            break;\n        }\n    }\n    return config;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>isPlainObject\n});\nfunction isPlainObject(value) {\n    if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n        return false;\n    }\n    const prototype = Object.getPrototypeOf(value);\n    return prototype === null || prototype === Object.prototype;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n    enumerable: true,\n    get: ()=>cloneDeep\n});\nfunction cloneDeep(value) {\n    if (Array.isArray(value)) {\n        return value.map((child)=>cloneDeep(child));\n    }\n    if (typeof value === \"object\" && value !== null) {\n        return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n                k,\n                cloneDeep(v)\n            ]));\n    }\n    return value;\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = unesc;\n\n// Many thanks for this post which made this migration much easier.\n// https://mathiasbynens.be/notes/css-escapes\n\n/**\n * \n * @param {string} str \n * @returns {[string, number]|undefined}\n */\nfunction gobbleHex(str) {\n  var lower = str.toLowerCase();\n  var hex = '';\n  var spaceTerminated = false;\n\n  for (var i = 0; i < 6 && lower[i] !== undefined; i++) {\n    var code = lower.charCodeAt(i); // check to see if we are dealing with a valid hex char [a-f|0-9]\n\n    var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point\n\n    spaceTerminated = code === 32;\n\n    if (!valid) {\n      break;\n    }\n\n    hex += lower[i];\n  }\n\n  if (hex.length === 0) {\n    return undefined;\n  }\n\n  var codePoint = parseInt(hex, 16);\n  var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; // Add special case for\n  // \"If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point\"\n  // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point\n\n  if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) {\n    return [\"\\uFFFD\", hex.length + (spaceTerminated ? 1 : 0)];\n  }\n\n  return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];\n}\n\nvar CONTAINS_ESCAPE = /\\\\/;\n\nfunction unesc(str) {\n  var needToProcess = CONTAINS_ESCAPE.test(str);\n\n  if (!needToProcess) {\n    return str;\n  }\n\n  var ret = \"\";\n\n  for (var i = 0; i < str.length; i++) {\n    if (str[i] === \"\\\\\") {\n      var gobbled = gobbleHex(str.slice(i + 1, i + 7));\n\n      if (gobbled !== undefined) {\n        ret += gobbled[0];\n        i += gobbled[1];\n        continue;\n      } // Retain a pair of \\\\ if double escaped `\\\\\\\\`\n      // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e\n\n\n      if (str[i + 1] === \"\\\\\") {\n        ret += \"\\\\\";\n        i++;\n        continue;\n      } // if \\\\ is at the end of the string retain it\n      // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb\n\n\n      if (str.length === i + 1) {\n        ret += str[i];\n      }\n\n      continue;\n    }\n\n    ret += str[i];\n  }\n\n  return ret;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getProp;\n\nfunction getProp(obj) {\n  for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    props[_key - 1] = arguments[_key];\n  }\n\n  while (props.length > 0) {\n    var prop = props.shift();\n\n    if (!obj[prop]) {\n      return undefined;\n    }\n\n    obj = obj[prop];\n  }\n\n  return obj;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = ensureObject;\n\nfunction ensureObject(obj) {\n  for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    props[_key - 1] = arguments[_key];\n  }\n\n  while (props.length > 0) {\n    var prop = props.shift();\n\n    if (!obj[prop]) {\n      obj[prop] = {};\n    }\n\n    obj = obj[prop];\n  }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stripComments;\n\nfunction stripComments(str) {\n  var s = \"\";\n  var commentStart = str.indexOf(\"/*\");\n  var lastEnd = 0;\n\n  while (commentStart >= 0) {\n    s = s + str.slice(lastEnd, commentStart);\n    var commentEnd = str.indexOf(\"*/\", commentStart + 2);\n\n    if (commentEnd < 0) {\n      return s;\n    }\n\n    lastEnd = commentEnd + 2;\n    commentStart = str.indexOf(\"/*\", lastEnd);\n  }\n\n  s = s + str.slice(lastEnd);\n  return s;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.stripComments = exports.ensureObject = exports.getProp = exports.unesc = void 0;\n\nvar _unesc = _interopRequireDefault(require(\"./unesc\"));\n\nexports.unesc = _unesc[\"default\"];\n\nvar _getProp = _interopRequireDefault(require(\"./getProp\"));\n\nexports.getProp = _getProp[\"default\"];\n\nvar _ensureObject = _interopRequireDefault(require(\"./ensureObject\"));\n\nexports.ensureObject = _ensureObject[\"default\"];\n\nvar _stripComments = _interopRequireDefault(require(\"./stripComments\"));\n\nexports.stripComments = _stripComments[\"default\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _util = require(\"../util\");\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar cloneNode = function cloneNode(obj, parent) {\n  if (typeof obj !== 'object' || obj === null) {\n    return obj;\n  }\n\n  var cloned = new obj.constructor();\n\n  for (var i in obj) {\n    if (!obj.hasOwnProperty(i)) {\n      continue;\n    }\n\n    var value = obj[i];\n    var type = typeof value;\n\n    if (i === 'parent' && type === 'object') {\n      if (parent) {\n        cloned[i] = parent;\n      }\n    } else if (value instanceof Array) {\n      cloned[i] = value.map(function (j) {\n        return cloneNode(j, cloned);\n      });\n    } else {\n      cloned[i] = cloneNode(value, cloned);\n    }\n  }\n\n  return cloned;\n};\n\nvar Node = /*#__PURE__*/function () {\n  function Node(opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    Object.assign(this, opts);\n    this.spaces = this.spaces || {};\n    this.spaces.before = this.spaces.before || '';\n    this.spaces.after = this.spaces.after || '';\n  }\n\n  var _proto = Node.prototype;\n\n  _proto.remove = function remove() {\n    if (this.parent) {\n      this.parent.removeChild(this);\n    }\n\n    this.parent = undefined;\n    return this;\n  };\n\n  _proto.replaceWith = function replaceWith() {\n    if (this.parent) {\n      for (var index in arguments) {\n        this.parent.insertBefore(this, arguments[index]);\n      }\n\n      this.remove();\n    }\n\n    return this;\n  };\n\n  _proto.next = function next() {\n    return this.parent.at(this.parent.index(this) + 1);\n  };\n\n  _proto.prev = function prev() {\n    return this.parent.at(this.parent.index(this) - 1);\n  };\n\n  _proto.clone = function clone(overrides) {\n    if (overrides === void 0) {\n      overrides = {};\n    }\n\n    var cloned = cloneNode(this);\n\n    for (var name in overrides) {\n      cloned[name] = overrides[name];\n    }\n\n    return cloned;\n  }\n  /**\n   * Some non-standard syntax doesn't follow normal escaping rules for css.\n   * This allows non standard syntax to be appended to an existing property\n   * by specifying the escaped value. By specifying the escaped value,\n   * illegal characters are allowed to be directly inserted into css output.\n   * @param {string} name the property to set\n   * @param {any} value the unescaped value of the property\n   * @param {string} valueEscaped optional. the escaped value of the property.\n   */\n  ;\n\n  _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {\n    if (!this.raws) {\n      this.raws = {};\n    }\n\n    var originalValue = this[name];\n    var originalEscaped = this.raws[name];\n    this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.\n\n    if (originalEscaped || valueEscaped !== value) {\n      this.raws[name] = (originalEscaped || originalValue) + valueEscaped;\n    } else {\n      delete this.raws[name]; // delete any escaped value that was created by the setter.\n    }\n  }\n  /**\n   * Some non-standard syntax doesn't follow normal escaping rules for css.\n   * This allows the escaped value to be specified directly, allowing illegal\n   * characters to be directly inserted into css output.\n   * @param {string} name the property to set\n   * @param {any} value the unescaped value of the property\n   * @param {string} valueEscaped the escaped value of the property.\n   */\n  ;\n\n  _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {\n    if (!this.raws) {\n      this.raws = {};\n    }\n\n    this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n    this.raws[name] = valueEscaped;\n  }\n  /**\n   * When you want a value to passed through to CSS directly. This method\n   * deletes the corresponding raw value causing the stringifier to fallback\n   * to the unescaped value.\n   * @param {string} name the property to set.\n   * @param {any} value The value that is both escaped and unescaped.\n   */\n  ;\n\n  _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {\n    this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n    if (this.raws) {\n      delete this.raws[name];\n    }\n  }\n  /**\n   *\n   * @param {number} line The number (starting with 1)\n   * @param {number} column The column number (starting with 1)\n   */\n  ;\n\n  _proto.isAtPosition = function isAtPosition(line, column) {\n    if (this.source && this.source.start && this.source.end) {\n      if (this.source.start.line > line) {\n        return false;\n      }\n\n      if (this.source.end.line < line) {\n        return false;\n      }\n\n      if (this.source.start.line === line && this.source.start.column > column) {\n        return false;\n      }\n\n      if (this.source.end.line === line && this.source.end.column < column) {\n        return false;\n      }\n\n      return true;\n    }\n\n    return undefined;\n  };\n\n  _proto.stringifyProperty = function stringifyProperty(name) {\n    return this.raws && this.raws[name] || this[name];\n  };\n\n  _proto.valueToString = function valueToString() {\n    return String(this.stringifyProperty(\"value\"));\n  };\n\n  _proto.toString = function toString() {\n    return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');\n  };\n\n  _createClass(Node, [{\n    key: \"rawSpaceBefore\",\n    get: function get() {\n      var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;\n\n      if (rawSpace === undefined) {\n        rawSpace = this.spaces && this.spaces.before;\n      }\n\n      return rawSpace || \"\";\n    },\n    set: function set(raw) {\n      (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n      this.raws.spaces.before = raw;\n    }\n  }, {\n    key: \"rawSpaceAfter\",\n    get: function get() {\n      var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;\n\n      if (rawSpace === undefined) {\n        rawSpace = this.spaces.after;\n      }\n\n      return rawSpace || \"\";\n    },\n    set: function set(raw) {\n      (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n      this.raws.spaces.after = raw;\n    }\n  }]);\n\n  return Node;\n}();\n\nexports[\"default\"] = Node;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.UNIVERSAL = exports.ATTRIBUTE = exports.CLASS = exports.COMBINATOR = exports.COMMENT = exports.ID = exports.NESTING = exports.PSEUDO = exports.ROOT = exports.SELECTOR = exports.STRING = exports.TAG = void 0;\nvar TAG = 'tag';\nexports.TAG = TAG;\nvar STRING = 'string';\nexports.STRING = STRING;\nvar SELECTOR = 'selector';\nexports.SELECTOR = SELECTOR;\nvar ROOT = 'root';\nexports.ROOT = ROOT;\nvar PSEUDO = 'pseudo';\nexports.PSEUDO = PSEUDO;\nvar NESTING = 'nesting';\nexports.NESTING = NESTING;\nvar ID = 'id';\nexports.ID = ID;\nvar COMMENT = 'comment';\nexports.COMMENT = COMMENT;\nvar COMBINATOR = 'combinator';\nexports.COMBINATOR = COMBINATOR;\nvar CLASS = 'class';\nexports.CLASS = CLASS;\nvar ATTRIBUTE = 'attribute';\nexports.ATTRIBUTE = ATTRIBUTE;\nvar UNIVERSAL = 'universal';\nexports.UNIVERSAL = UNIVERSAL;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar types = _interopRequireWildcard(require(\"./types\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Container = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Container, _Node);\n\n  function Container(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n\n    if (!_this.nodes) {\n      _this.nodes = [];\n    }\n\n    return _this;\n  }\n\n  var _proto = Container.prototype;\n\n  _proto.append = function append(selector) {\n    selector.parent = this;\n    this.nodes.push(selector);\n    return this;\n  };\n\n  _proto.prepend = function prepend(selector) {\n    selector.parent = this;\n    this.nodes.unshift(selector);\n    return this;\n  };\n\n  _proto.at = function at(index) {\n    return this.nodes[index];\n  };\n\n  _proto.index = function index(child) {\n    if (typeof child === 'number') {\n      return child;\n    }\n\n    return this.nodes.indexOf(child);\n  };\n\n  _proto.removeChild = function removeChild(child) {\n    child = this.index(child);\n    this.at(child).parent = undefined;\n    this.nodes.splice(child, 1);\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (index >= child) {\n        this.indexes[id] = index - 1;\n      }\n    }\n\n    return this;\n  };\n\n  _proto.removeAll = function removeAll() {\n    for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) {\n      var node = _step.value;\n      node.parent = undefined;\n    }\n\n    this.nodes = [];\n    return this;\n  };\n\n  _proto.empty = function empty() {\n    return this.removeAll();\n  };\n\n  _proto.insertAfter = function insertAfter(oldNode, newNode) {\n    newNode.parent = this;\n    var oldIndex = this.index(oldNode);\n    this.nodes.splice(oldIndex + 1, 0, newNode);\n    newNode.parent = this;\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (oldIndex <= index) {\n        this.indexes[id] = index + 1;\n      }\n    }\n\n    return this;\n  };\n\n  _proto.insertBefore = function insertBefore(oldNode, newNode) {\n    newNode.parent = this;\n    var oldIndex = this.index(oldNode);\n    this.nodes.splice(oldIndex, 0, newNode);\n    newNode.parent = this;\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (index <= oldIndex) {\n        this.indexes[id] = index + 1;\n      }\n    }\n\n    return this;\n  };\n\n  _proto._findChildAtPosition = function _findChildAtPosition(line, col) {\n    var found = undefined;\n    this.each(function (node) {\n      if (node.atPosition) {\n        var foundChild = node.atPosition(line, col);\n\n        if (foundChild) {\n          found = foundChild;\n          return false;\n        }\n      } else if (node.isAtPosition(line, col)) {\n        found = node;\n        return false;\n      }\n    });\n    return found;\n  }\n  /**\n   * Return the most specific node at the line and column number given.\n   * The source location is based on the original parsed location, locations aren't\n   * updated as selector nodes are mutated.\n   * \n   * Note that this location is relative to the location of the first character\n   * of the selector, and not the location of the selector in the overall document\n   * when used in conjunction with postcss.\n   *\n   * If not found, returns undefined.\n   * @param {number} line The line number of the node to find. (1-based index)\n   * @param {number} col  The column number of the node to find. (1-based index)\n   */\n  ;\n\n  _proto.atPosition = function atPosition(line, col) {\n    if (this.isAtPosition(line, col)) {\n      return this._findChildAtPosition(line, col) || this;\n    } else {\n      return undefined;\n    }\n  };\n\n  _proto._inferEndPosition = function _inferEndPosition() {\n    if (this.last && this.last.source && this.last.source.end) {\n      this.source = this.source || {};\n      this.source.end = this.source.end || {};\n      Object.assign(this.source.end, this.last.source.end);\n    }\n  };\n\n  _proto.each = function each(callback) {\n    if (!this.lastEach) {\n      this.lastEach = 0;\n    }\n\n    if (!this.indexes) {\n      this.indexes = {};\n    }\n\n    this.lastEach++;\n    var id = this.lastEach;\n    this.indexes[id] = 0;\n\n    if (!this.length) {\n      return undefined;\n    }\n\n    var index, result;\n\n    while (this.indexes[id] < this.length) {\n      index = this.indexes[id];\n      result = callback(this.at(index), index);\n\n      if (result === false) {\n        break;\n      }\n\n      this.indexes[id] += 1;\n    }\n\n    delete this.indexes[id];\n\n    if (result === false) {\n      return false;\n    }\n  };\n\n  _proto.walk = function walk(callback) {\n    return this.each(function (node, i) {\n      var result = callback(node, i);\n\n      if (result !== false && node.length) {\n        result = node.walk(callback);\n      }\n\n      if (result === false) {\n        return false;\n      }\n    });\n  };\n\n  _proto.walkAttributes = function walkAttributes(callback) {\n    var _this2 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.ATTRIBUTE) {\n        return callback.call(_this2, selector);\n      }\n    });\n  };\n\n  _proto.walkClasses = function walkClasses(callback) {\n    var _this3 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.CLASS) {\n        return callback.call(_this3, selector);\n      }\n    });\n  };\n\n  _proto.walkCombinators = function walkCombinators(callback) {\n    var _this4 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.COMBINATOR) {\n        return callback.call(_this4, selector);\n      }\n    });\n  };\n\n  _proto.walkComments = function walkComments(callback) {\n    var _this5 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.COMMENT) {\n        return callback.call(_this5, selector);\n      }\n    });\n  };\n\n  _proto.walkIds = function walkIds(callback) {\n    var _this6 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.ID) {\n        return callback.call(_this6, selector);\n      }\n    });\n  };\n\n  _proto.walkNesting = function walkNesting(callback) {\n    var _this7 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.NESTING) {\n        return callback.call(_this7, selector);\n      }\n    });\n  };\n\n  _proto.walkPseudos = function walkPseudos(callback) {\n    var _this8 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.PSEUDO) {\n        return callback.call(_this8, selector);\n      }\n    });\n  };\n\n  _proto.walkTags = function walkTags(callback) {\n    var _this9 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.TAG) {\n        return callback.call(_this9, selector);\n      }\n    });\n  };\n\n  _proto.walkUniversals = function walkUniversals(callback) {\n    var _this10 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.UNIVERSAL) {\n        return callback.call(_this10, selector);\n      }\n    });\n  };\n\n  _proto.split = function split(callback) {\n    var _this11 = this;\n\n    var current = [];\n    return this.reduce(function (memo, node, index) {\n      var split = callback.call(_this11, node);\n      current.push(node);\n\n      if (split) {\n        memo.push(current);\n        current = [];\n      } else if (index === _this11.length - 1) {\n        memo.push(current);\n      }\n\n      return memo;\n    }, []);\n  };\n\n  _proto.map = function map(callback) {\n    return this.nodes.map(callback);\n  };\n\n  _proto.reduce = function reduce(callback, memo) {\n    return this.nodes.reduce(callback, memo);\n  };\n\n  _proto.every = function every(callback) {\n    return this.nodes.every(callback);\n  };\n\n  _proto.some = function some(callback) {\n    return this.nodes.some(callback);\n  };\n\n  _proto.filter = function filter(callback) {\n    return this.nodes.filter(callback);\n  };\n\n  _proto.sort = function sort(callback) {\n    return this.nodes.sort(callback);\n  };\n\n  _proto.toString = function toString() {\n    return this.map(String).join('');\n  };\n\n  _createClass(Container, [{\n    key: \"first\",\n    get: function get() {\n      return this.at(0);\n    }\n  }, {\n    key: \"last\",\n    get: function get() {\n      return this.at(this.length - 1);\n    }\n  }, {\n    key: \"length\",\n    get: function get() {\n      return this.nodes.length;\n    }\n  }]);\n\n  return Container;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Container;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Root = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(Root, _Container);\n\n  function Root(opts) {\n    var _this;\n\n    _this = _Container.call(this, opts) || this;\n    _this.type = _types.ROOT;\n    return _this;\n  }\n\n  var _proto = Root.prototype;\n\n  _proto.toString = function toString() {\n    var str = this.reduce(function (memo, selector) {\n      memo.push(String(selector));\n      return memo;\n    }, []).join(',');\n    return this.trailingComma ? str + ',' : str;\n  };\n\n  _proto.error = function error(message, options) {\n    if (this._error) {\n      return this._error(message, options);\n    } else {\n      return new Error(message);\n    }\n  };\n\n  _createClass(Root, [{\n    key: \"errorGenerator\",\n    set: function set(handler) {\n      this._error = handler;\n    }\n  }]);\n\n  return Root;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Root;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Selector = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(Selector, _Container);\n\n  function Selector(opts) {\n    var _this;\n\n    _this = _Container.call(this, opts) || this;\n    _this.type = _types.SELECTOR;\n    return _this;\n  }\n\n  return Selector;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Selector;\nmodule.exports = exports.default;","/*! https://mths.be/cssesc v3.0.0 by @mathias */\n'use strict';\n\nvar object = {};\nvar hasOwnProperty = object.hasOwnProperty;\nvar merge = function merge(options, defaults) {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tvar result = {};\n\tfor (var key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];\n\t}\n\treturn result;\n};\n\nvar regexAnySingleEscape = /[ -,\\.\\/:-@\\[-\\^`\\{-~]/;\nvar regexSingleEscape = /[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/;\nvar regexAlwaysEscape = /['\"\\\\]/;\nvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nvar cssesc = function cssesc(string, options) {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\tvar isIdentifier = options.isIdentifier;\n\n\tvar firstChar = string.charAt(0);\n\tvar output = '';\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar character = string.charAt(counter++);\n\t\tvar codePoint = character.charCodeAt();\n\t\tvar value = void 0;\n\t\t// If it’s not a printable ASCII character…\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// It’s a high surrogate, and there is a next character.\n\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// It’s an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (character == '\\\\' || !isIdentifier && (character == '\"' && quote == character || character == '\\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since they’re redundant. Note that this is only possible if the escape\n\t// sequence isn’t preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// It’s not safe to remove the space, so don’t.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '3.0.0';\n\nmodule.exports = cssesc;\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ClassName = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(ClassName, _Node);\n\n  function ClassName(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.CLASS;\n    _this._constructed = true;\n    return _this;\n  }\n\n  var _proto = ClassName.prototype;\n\n  _proto.valueToString = function valueToString() {\n    return '.' + _Node.prototype.valueToString.call(this);\n  };\n\n  _createClass(ClassName, [{\n    key: \"value\",\n    get: function get() {\n      return this._value;\n    },\n    set: function set(v) {\n      if (this._constructed) {\n        var escaped = (0, _cssesc[\"default\"])(v, {\n          isIdentifier: true\n        });\n\n        if (escaped !== v) {\n          (0, _util.ensureObject)(this, \"raws\");\n          this.raws.value = escaped;\n        } else if (this.raws) {\n          delete this.raws.value;\n        }\n      }\n\n      this._value = v;\n    }\n  }]);\n\n  return ClassName;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ClassName;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Comment = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Comment, _Node);\n\n  function Comment(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.COMMENT;\n    return _this;\n  }\n\n  return Comment;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Comment;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ID = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(ID, _Node);\n\n  function ID(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.ID;\n    return _this;\n  }\n\n  var _proto = ID.prototype;\n\n  _proto.valueToString = function valueToString() {\n    return '#' + _Node.prototype.valueToString.call(this);\n  };\n\n  return ID;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ID;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Namespace = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Namespace, _Node);\n\n  function Namespace() {\n    return _Node.apply(this, arguments) || this;\n  }\n\n  var _proto = Namespace.prototype;\n\n  _proto.qualifiedName = function qualifiedName(value) {\n    if (this.namespace) {\n      return this.namespaceString + \"|\" + value;\n    } else {\n      return value;\n    }\n  };\n\n  _proto.valueToString = function valueToString() {\n    return this.qualifiedName(_Node.prototype.valueToString.call(this));\n  };\n\n  _createClass(Namespace, [{\n    key: \"namespace\",\n    get: function get() {\n      return this._namespace;\n    },\n    set: function set(namespace) {\n      if (namespace === true || namespace === \"*\" || namespace === \"&\") {\n        this._namespace = namespace;\n\n        if (this.raws) {\n          delete this.raws.namespace;\n        }\n\n        return;\n      }\n\n      var escaped = (0, _cssesc[\"default\"])(namespace, {\n        isIdentifier: true\n      });\n      this._namespace = namespace;\n\n      if (escaped !== namespace) {\n        (0, _util.ensureObject)(this, \"raws\");\n        this.raws.namespace = escaped;\n      } else if (this.raws) {\n        delete this.raws.namespace;\n      }\n    }\n  }, {\n    key: \"ns\",\n    get: function get() {\n      return this._namespace;\n    },\n    set: function set(namespace) {\n      this.namespace = namespace;\n    }\n  }, {\n    key: \"namespaceString\",\n    get: function get() {\n      if (this.namespace) {\n        var ns = this.stringifyProperty(\"namespace\");\n\n        if (ns === true) {\n          return '';\n        } else {\n          return ns;\n        }\n      } else {\n        return '';\n      }\n    }\n  }]);\n\n  return Namespace;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Namespace;\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Tag = /*#__PURE__*/function (_Namespace) {\n  _inheritsLoose(Tag, _Namespace);\n\n  function Tag(opts) {\n    var _this;\n\n    _this = _Namespace.call(this, opts) || this;\n    _this.type = _types.TAG;\n    return _this;\n  }\n\n  return Tag;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Tag;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar String = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(String, _Node);\n\n  function String(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.STRING;\n    return _this;\n  }\n\n  return String;\n}(_node[\"default\"]);\n\nexports[\"default\"] = String;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Pseudo = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(Pseudo, _Container);\n\n  function Pseudo(opts) {\n    var _this;\n\n    _this = _Container.call(this, opts) || this;\n    _this.type = _types.PSEUDO;\n    return _this;\n  }\n\n  var _proto = Pseudo.prototype;\n\n  _proto.toString = function toString() {\n    var params = this.length ? '(' + this.map(String).join(',') + ')' : '';\n    return [this.rawSpaceBefore, this.stringifyProperty(\"value\"), params, this.rawSpaceAfter].join('');\n  };\n\n  return Pseudo;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Pseudo;\nmodule.exports = exports.default;","module.exports = function deprecate(fn, message) {\n  return function (...args) {\n    console.warn(message)\n    return fn(...args)\n  }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.unescapeValue = unescapeValue;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _unesc = _interopRequireDefault(require(\"../util/unesc\"));\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nvar _CSSESC_QUOTE_OPTIONS;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar deprecate = require(\"util-deprecate\");\n\nvar WRAPPED_IN_QUOTES = /^('|\")([^]*)\\1$/;\nvar warnOfDeprecatedValueAssignment = deprecate(function () {}, \"Assigning an attribute a value containing characters that might need to be escaped is deprecated. \" + \"Call attribute.setValue() instead.\");\nvar warnOfDeprecatedQuotedAssignment = deprecate(function () {}, \"Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead.\");\nvar warnOfDeprecatedConstructor = deprecate(function () {}, \"Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.\");\n\nfunction unescapeValue(value) {\n  var deprecatedUsage = false;\n  var quoteMark = null;\n  var unescaped = value;\n  var m = unescaped.match(WRAPPED_IN_QUOTES);\n\n  if (m) {\n    quoteMark = m[1];\n    unescaped = m[2];\n  }\n\n  unescaped = (0, _unesc[\"default\"])(unescaped);\n\n  if (unescaped !== value) {\n    deprecatedUsage = true;\n  }\n\n  return {\n    deprecatedUsage: deprecatedUsage,\n    unescaped: unescaped,\n    quoteMark: quoteMark\n  };\n}\n\nfunction handleDeprecatedContructorOpts(opts) {\n  if (opts.quoteMark !== undefined) {\n    return opts;\n  }\n\n  if (opts.value === undefined) {\n    return opts;\n  }\n\n  warnOfDeprecatedConstructor();\n\n  var _unescapeValue = unescapeValue(opts.value),\n      quoteMark = _unescapeValue.quoteMark,\n      unescaped = _unescapeValue.unescaped;\n\n  if (!opts.raws) {\n    opts.raws = {};\n  }\n\n  if (opts.raws.value === undefined) {\n    opts.raws.value = opts.value;\n  }\n\n  opts.value = unescaped;\n  opts.quoteMark = quoteMark;\n  return opts;\n}\n\nvar Attribute = /*#__PURE__*/function (_Namespace) {\n  _inheritsLoose(Attribute, _Namespace);\n\n  function Attribute(opts) {\n    var _this;\n\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this;\n    _this.type = _types.ATTRIBUTE;\n    _this.raws = _this.raws || {};\n    Object.defineProperty(_this.raws, 'unquoted', {\n      get: deprecate(function () {\n        return _this.value;\n      }, \"attr.raws.unquoted is deprecated. Call attr.value instead.\"),\n      set: deprecate(function () {\n        return _this.value;\n      }, \"Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.\")\n    });\n    _this._constructed = true;\n    return _this;\n  }\n  /**\n   * Returns the Attribute's value quoted such that it would be legal to use\n   * in the value of a css file. The original value's quotation setting\n   * used for stringification is left unchanged. See `setValue(value, options)`\n   * if you want to control the quote settings of a new value for the attribute.\n   *\n   * You can also change the quotation used for the current value by setting quoteMark.\n   *\n   * Options:\n   *   * quoteMark {'\"' | \"'\" | null} - Use this value to quote the value. If this\n   *     option is not set, the original value for quoteMark will be used. If\n   *     indeterminate, a double quote is used. The legal values are:\n   *     * `null` - the value will be unquoted and characters will be escaped as necessary.\n   *     * `'` - the value will be quoted with a single quote and single quotes are escaped.\n   *     * `\"` - the value will be quoted with a double quote and double quotes are escaped.\n   *   * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark\n   *     over the quoteMark option value.\n   *   * smart {boolean} - if true, will select a quote mark based on the value\n   *     and the other options specified here. See the `smartQuoteMark()`\n   *     method.\n   **/\n\n\n  var _proto = Attribute.prototype;\n\n  _proto.getQuotedValue = function getQuotedValue(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var quoteMark = this._determineQuoteMark(options);\n\n    var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];\n    var escaped = (0, _cssesc[\"default\"])(this._value, cssescopts);\n    return escaped;\n  };\n\n  _proto._determineQuoteMark = function _determineQuoteMark(options) {\n    return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options);\n  }\n  /**\n   * Set the unescaped value with the specified quotation options. The value\n   * provided must not include any wrapping quote marks -- those quotes will\n   * be interpreted as part of the value and escaped accordingly.\n   */\n  ;\n\n  _proto.setValue = function setValue(value, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    this._value = value;\n    this._quoteMark = this._determineQuoteMark(options);\n\n    this._syncRawValue();\n  }\n  /**\n   * Intelligently select a quoteMark value based on the value's contents. If\n   * the value is a legal CSS ident, it will not be quoted. Otherwise a quote\n   * mark will be picked that minimizes the number of escapes.\n   *\n   * If there's no clear winner, the quote mark from these options is used,\n   * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is\n   * true). If the quoteMark is unspecified, a double quote is used.\n   *\n   * @param options This takes the quoteMark and preferCurrentQuoteMark options\n   * from the quoteValue method.\n   */\n  ;\n\n  _proto.smartQuoteMark = function smartQuoteMark(options) {\n    var v = this.value;\n    var numSingleQuotes = v.replace(/[^']/g, '').length;\n    var numDoubleQuotes = v.replace(/[^\"]/g, '').length;\n\n    if (numSingleQuotes + numDoubleQuotes === 0) {\n      var escaped = (0, _cssesc[\"default\"])(v, {\n        isIdentifier: true\n      });\n\n      if (escaped === v) {\n        return Attribute.NO_QUOTE;\n      } else {\n        var pref = this.preferredQuoteMark(options);\n\n        if (pref === Attribute.NO_QUOTE) {\n          // pick a quote mark that isn't none and see if it's smaller\n          var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE;\n          var opts = CSSESC_QUOTE_OPTIONS[quote];\n          var quoteValue = (0, _cssesc[\"default\"])(v, opts);\n\n          if (quoteValue.length < escaped.length) {\n            return quote;\n          }\n        }\n\n        return pref;\n      }\n    } else if (numDoubleQuotes === numSingleQuotes) {\n      return this.preferredQuoteMark(options);\n    } else if (numDoubleQuotes < numSingleQuotes) {\n      return Attribute.DOUBLE_QUOTE;\n    } else {\n      return Attribute.SINGLE_QUOTE;\n    }\n  }\n  /**\n   * Selects the preferred quote mark based on the options and the current quote mark value.\n   * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`\n   * instead.\n   */\n  ;\n\n  _proto.preferredQuoteMark = function preferredQuoteMark(options) {\n    var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark;\n\n    if (quoteMark === undefined) {\n      quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark;\n    }\n\n    if (quoteMark === undefined) {\n      quoteMark = Attribute.DOUBLE_QUOTE;\n    }\n\n    return quoteMark;\n  };\n\n  _proto._syncRawValue = function _syncRawValue() {\n    var rawValue = (0, _cssesc[\"default\"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);\n\n    if (rawValue === this._value) {\n      if (this.raws) {\n        delete this.raws.value;\n      }\n    } else {\n      this.raws.value = rawValue;\n    }\n  };\n\n  _proto._handleEscapes = function _handleEscapes(prop, value) {\n    if (this._constructed) {\n      var escaped = (0, _cssesc[\"default\"])(value, {\n        isIdentifier: true\n      });\n\n      if (escaped !== value) {\n        this.raws[prop] = escaped;\n      } else {\n        delete this.raws[prop];\n      }\n    }\n  };\n\n  _proto._spacesFor = function _spacesFor(name) {\n    var attrSpaces = {\n      before: '',\n      after: ''\n    };\n    var spaces = this.spaces[name] || {};\n    var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};\n    return Object.assign(attrSpaces, spaces, rawSpaces);\n  };\n\n  _proto._stringFor = function _stringFor(name, spaceName, concat) {\n    if (spaceName === void 0) {\n      spaceName = name;\n    }\n\n    if (concat === void 0) {\n      concat = defaultAttrConcat;\n    }\n\n    var attrSpaces = this._spacesFor(spaceName);\n\n    return concat(this.stringifyProperty(name), attrSpaces);\n  }\n  /**\n   * returns the offset of the attribute part specified relative to the\n   * start of the node of the output string.\n   *\n   * * \"ns\" - alias for \"namespace\"\n   * * \"namespace\" - the namespace if it exists.\n   * * \"attribute\" - the attribute name\n   * * \"attributeNS\" - the start of the attribute or its namespace\n   * * \"operator\" - the match operator of the attribute\n   * * \"value\" - The value (string or identifier)\n   * * \"insensitive\" - the case insensitivity flag;\n   * @param part One of the possible values inside an attribute.\n   * @returns -1 if the name is invalid or the value doesn't exist in this attribute.\n   */\n  ;\n\n  _proto.offsetOf = function offsetOf(name) {\n    var count = 1;\n\n    var attributeSpaces = this._spacesFor(\"attribute\");\n\n    count += attributeSpaces.before.length;\n\n    if (name === \"namespace\" || name === \"ns\") {\n      return this.namespace ? count : -1;\n    }\n\n    if (name === \"attributeNS\") {\n      return count;\n    }\n\n    count += this.namespaceString.length;\n\n    if (this.namespace) {\n      count += 1;\n    }\n\n    if (name === \"attribute\") {\n      return count;\n    }\n\n    count += this.stringifyProperty(\"attribute\").length;\n    count += attributeSpaces.after.length;\n\n    var operatorSpaces = this._spacesFor(\"operator\");\n\n    count += operatorSpaces.before.length;\n    var operator = this.stringifyProperty(\"operator\");\n\n    if (name === \"operator\") {\n      return operator ? count : -1;\n    }\n\n    count += operator.length;\n    count += operatorSpaces.after.length;\n\n    var valueSpaces = this._spacesFor(\"value\");\n\n    count += valueSpaces.before.length;\n    var value = this.stringifyProperty(\"value\");\n\n    if (name === \"value\") {\n      return value ? count : -1;\n    }\n\n    count += value.length;\n    count += valueSpaces.after.length;\n\n    var insensitiveSpaces = this._spacesFor(\"insensitive\");\n\n    count += insensitiveSpaces.before.length;\n\n    if (name === \"insensitive\") {\n      return this.insensitive ? count : -1;\n    }\n\n    return -1;\n  };\n\n  _proto.toString = function toString() {\n    var _this2 = this;\n\n    var selector = [this.rawSpaceBefore, '['];\n    selector.push(this._stringFor('qualifiedAttribute', 'attribute'));\n\n    if (this.operator && (this.value || this.value === '')) {\n      selector.push(this._stringFor('operator'));\n      selector.push(this._stringFor('value'));\n      selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) {\n        if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {\n          attrSpaces.before = \" \";\n        }\n\n        return defaultAttrConcat(attrValue, attrSpaces);\n      }));\n    }\n\n    selector.push(']');\n    selector.push(this.rawSpaceAfter);\n    return selector.join('');\n  };\n\n  _createClass(Attribute, [{\n    key: \"quoted\",\n    get: function get() {\n      var qm = this.quoteMark;\n      return qm === \"'\" || qm === '\"';\n    },\n    set: function set(value) {\n      warnOfDeprecatedQuotedAssignment();\n    }\n    /**\n     * returns a single (`'`) or double (`\"`) quote character if the value is quoted.\n     * returns `null` if the value is not quoted.\n     * returns `undefined` if the quotation state is unknown (this can happen when\n     * the attribute is constructed without specifying a quote mark.)\n     */\n\n  }, {\n    key: \"quoteMark\",\n    get: function get() {\n      return this._quoteMark;\n    }\n    /**\n     * Set the quote mark to be used by this attribute's value.\n     * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute\n     * value is updated accordingly.\n     *\n     * @param {\"'\" | '\"' | null} quoteMark The quote mark or `null` if the value should be unquoted.\n     */\n    ,\n    set: function set(quoteMark) {\n      if (!this._constructed) {\n        this._quoteMark = quoteMark;\n        return;\n      }\n\n      if (this._quoteMark !== quoteMark) {\n        this._quoteMark = quoteMark;\n\n        this._syncRawValue();\n      }\n    }\n  }, {\n    key: \"qualifiedAttribute\",\n    get: function get() {\n      return this.qualifiedName(this.raws.attribute || this.attribute);\n    }\n  }, {\n    key: \"insensitiveFlag\",\n    get: function get() {\n      return this.insensitive ? 'i' : '';\n    }\n  }, {\n    key: \"value\",\n    get: function get() {\n      return this._value;\n    }\n    /**\n     * Before 3.0, the value had to be set to an escaped value including any wrapped\n     * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value\n     * is unescaped during parsing and any quote marks are removed.\n     *\n     * Because the ambiguity of this semantic change, if you set `attr.value = newValue`,\n     * a deprecation warning is raised when the new value contains any characters that would\n     * require escaping (including if it contains wrapped quotes).\n     *\n     * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe\n     * how the new value is quoted.\n     */\n    ,\n    set: function set(v) {\n      if (this._constructed) {\n        var _unescapeValue2 = unescapeValue(v),\n            deprecatedUsage = _unescapeValue2.deprecatedUsage,\n            unescaped = _unescapeValue2.unescaped,\n            quoteMark = _unescapeValue2.quoteMark;\n\n        if (deprecatedUsage) {\n          warnOfDeprecatedValueAssignment();\n        }\n\n        if (unescaped === this._value && quoteMark === this._quoteMark) {\n          return;\n        }\n\n        this._value = unescaped;\n        this._quoteMark = quoteMark;\n\n        this._syncRawValue();\n      } else {\n        this._value = v;\n      }\n    }\n  }, {\n    key: \"attribute\",\n    get: function get() {\n      return this._attribute;\n    },\n    set: function set(name) {\n      this._handleEscapes(\"attribute\", name);\n\n      this._attribute = name;\n    }\n  }]);\n\n  return Attribute;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Attribute;\nAttribute.NO_QUOTE = null;\nAttribute.SINGLE_QUOTE = \"'\";\nAttribute.DOUBLE_QUOTE = '\"';\nvar CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = {\n  \"'\": {\n    quotes: 'single',\n    wrap: true\n  },\n  '\"': {\n    quotes: 'double',\n    wrap: true\n  }\n}, _CSSESC_QUOTE_OPTIONS[null] = {\n  isIdentifier: true\n}, _CSSESC_QUOTE_OPTIONS);\n\nfunction defaultAttrConcat(attrValue, attrSpaces) {\n  return \"\" + attrSpaces.before + attrValue + attrSpaces.after;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Universal = /*#__PURE__*/function (_Namespace) {\n  _inheritsLoose(Universal, _Namespace);\n\n  function Universal(opts) {\n    var _this;\n\n    _this = _Namespace.call(this, opts) || this;\n    _this.type = _types.UNIVERSAL;\n    _this.value = '*';\n    return _this;\n  }\n\n  return Universal;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Universal;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Combinator = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Combinator, _Node);\n\n  function Combinator(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.COMBINATOR;\n    return _this;\n  }\n\n  return Combinator;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Combinator;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Nesting = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Nesting, _Node);\n\n  function Nesting(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.NESTING;\n    _this.value = '&';\n    return _this;\n  }\n\n  return Nesting;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Nesting;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = sortAscending;\n\nfunction sortAscending(list) {\n  return list.sort(function (a, b) {\n    return a - b;\n  });\n}\n\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.combinator = exports.word = exports.comment = exports.str = exports.tab = exports.newline = exports.feed = exports.cr = exports.backslash = exports.bang = exports.slash = exports.doubleQuote = exports.singleQuote = exports.space = exports.greaterThan = exports.pipe = exports.equals = exports.plus = exports.caret = exports.tilde = exports.dollar = exports.closeSquare = exports.openSquare = exports.closeParenthesis = exports.openParenthesis = exports.semicolon = exports.colon = exports.comma = exports.at = exports.asterisk = exports.ampersand = void 0;\nvar ampersand = 38; // `&`.charCodeAt(0);\n\nexports.ampersand = ampersand;\nvar asterisk = 42; // `*`.charCodeAt(0);\n\nexports.asterisk = asterisk;\nvar at = 64; // `@`.charCodeAt(0);\n\nexports.at = at;\nvar comma = 44; // `,`.charCodeAt(0);\n\nexports.comma = comma;\nvar colon = 58; // `:`.charCodeAt(0);\n\nexports.colon = colon;\nvar semicolon = 59; // `;`.charCodeAt(0);\n\nexports.semicolon = semicolon;\nvar openParenthesis = 40; // `(`.charCodeAt(0);\n\nexports.openParenthesis = openParenthesis;\nvar closeParenthesis = 41; // `)`.charCodeAt(0);\n\nexports.closeParenthesis = closeParenthesis;\nvar openSquare = 91; // `[`.charCodeAt(0);\n\nexports.openSquare = openSquare;\nvar closeSquare = 93; // `]`.charCodeAt(0);\n\nexports.closeSquare = closeSquare;\nvar dollar = 36; // `$`.charCodeAt(0);\n\nexports.dollar = dollar;\nvar tilde = 126; // `~`.charCodeAt(0);\n\nexports.tilde = tilde;\nvar caret = 94; // `^`.charCodeAt(0);\n\nexports.caret = caret;\nvar plus = 43; // `+`.charCodeAt(0);\n\nexports.plus = plus;\nvar equals = 61; // `=`.charCodeAt(0);\n\nexports.equals = equals;\nvar pipe = 124; // `|`.charCodeAt(0);\n\nexports.pipe = pipe;\nvar greaterThan = 62; // `>`.charCodeAt(0);\n\nexports.greaterThan = greaterThan;\nvar space = 32; // ` `.charCodeAt(0);\n\nexports.space = space;\nvar singleQuote = 39; // `'`.charCodeAt(0);\n\nexports.singleQuote = singleQuote;\nvar doubleQuote = 34; // `\"`.charCodeAt(0);\n\nexports.doubleQuote = doubleQuote;\nvar slash = 47; // `/`.charCodeAt(0);\n\nexports.slash = slash;\nvar bang = 33; // `!`.charCodeAt(0);\n\nexports.bang = bang;\nvar backslash = 92; // '\\\\'.charCodeAt(0);\n\nexports.backslash = backslash;\nvar cr = 13; // '\\r'.charCodeAt(0);\n\nexports.cr = cr;\nvar feed = 12; // '\\f'.charCodeAt(0);\n\nexports.feed = feed;\nvar newline = 10; // '\\n'.charCodeAt(0);\n\nexports.newline = newline;\nvar tab = 9; // '\\t'.charCodeAt(0);\n// Expose aliases primarily for readability.\n\nexports.tab = tab;\nvar str = singleQuote; // No good single character representation!\n\nexports.str = str;\nvar comment = -1;\nexports.comment = comment;\nvar word = -2;\nexports.word = word;\nvar combinator = -3;\nexports.combinator = combinator;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = tokenize;\nexports.FIELDS = void 0;\n\nvar t = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar _unescapable, _wordDelimiters;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);\nvar wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);\nvar hex = {};\nvar hexChars = \"0123456789abcdefABCDEF\";\n\nfor (var i = 0; i < hexChars.length; i++) {\n  hex[hexChars.charCodeAt(i)] = true;\n}\n/**\n *  Returns the last index of the bar css word\n * @param {string} css The string in which the word begins\n * @param {number} start The index into the string where word's first letter occurs\n */\n\n\nfunction consumeWord(css, start) {\n  var next = start;\n  var code;\n\n  do {\n    code = css.charCodeAt(next);\n\n    if (wordDelimiters[code]) {\n      return next - 1;\n    } else if (code === t.backslash) {\n      next = consumeEscape(css, next) + 1;\n    } else {\n      // All other characters are part of the word\n      next++;\n    }\n  } while (next < css.length);\n\n  return next - 1;\n}\n/**\n *  Returns the last index of the escape sequence\n * @param {string} css The string in which the sequence begins\n * @param {number} start The index into the string where escape character (`\\`) occurs.\n */\n\n\nfunction consumeEscape(css, start) {\n  var next = start;\n  var code = css.charCodeAt(next + 1);\n\n  if (unescapable[code]) {// just consume the escape char\n  } else if (hex[code]) {\n    var hexDigits = 0; // consume up to 6 hex chars\n\n    do {\n      next++;\n      hexDigits++;\n      code = css.charCodeAt(next + 1);\n    } while (hex[code] && hexDigits < 6); // if fewer than 6 hex chars, a trailing space ends the escape\n\n\n    if (hexDigits < 6 && code === t.space) {\n      next++;\n    }\n  } else {\n    // the next char is part of the current word\n    next++;\n  }\n\n  return next;\n}\n\nvar FIELDS = {\n  TYPE: 0,\n  START_LINE: 1,\n  START_COL: 2,\n  END_LINE: 3,\n  END_COL: 4,\n  START_POS: 5,\n  END_POS: 6\n};\nexports.FIELDS = FIELDS;\n\nfunction tokenize(input) {\n  var tokens = [];\n  var css = input.css.valueOf();\n  var _css = css,\n      length = _css.length;\n  var offset = -1;\n  var line = 1;\n  var start = 0;\n  var end = 0;\n  var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType;\n\n  function unclosed(what, fix) {\n    if (input.safe) {\n      // fyi: this is never set to true.\n      css += fix;\n      next = css.length - 1;\n    } else {\n      throw input.error('Unclosed ' + what, line, start - offset, start);\n    }\n  }\n\n  while (start < length) {\n    code = css.charCodeAt(start);\n\n    if (code === t.newline) {\n      offset = start;\n      line += 1;\n    }\n\n    switch (code) {\n      case t.space:\n      case t.tab:\n      case t.newline:\n      case t.cr:\n      case t.feed:\n        next = start;\n\n        do {\n          next += 1;\n          code = css.charCodeAt(next);\n\n          if (code === t.newline) {\n            offset = next;\n            line += 1;\n          }\n        } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);\n\n        tokenType = t.space;\n        endLine = line;\n        endColumn = next - offset - 1;\n        end = next;\n        break;\n\n      case t.plus:\n      case t.greaterThan:\n      case t.tilde:\n      case t.pipe:\n        next = start;\n\n        do {\n          next += 1;\n          code = css.charCodeAt(next);\n        } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);\n\n        tokenType = t.combinator;\n        endLine = line;\n        endColumn = start - offset;\n        end = next;\n        break;\n      // Consume these characters as single tokens.\n\n      case t.asterisk:\n      case t.ampersand:\n      case t.bang:\n      case t.comma:\n      case t.equals:\n      case t.dollar:\n      case t.caret:\n      case t.openSquare:\n      case t.closeSquare:\n      case t.colon:\n      case t.semicolon:\n      case t.openParenthesis:\n      case t.closeParenthesis:\n        next = start;\n        tokenType = code;\n        endLine = line;\n        endColumn = start - offset;\n        end = next + 1;\n        break;\n\n      case t.singleQuote:\n      case t.doubleQuote:\n        quote = code === t.singleQuote ? \"'\" : '\"';\n        next = start;\n\n        do {\n          escaped = false;\n          next = css.indexOf(quote, next + 1);\n\n          if (next === -1) {\n            unclosed('quote', quote);\n          }\n\n          escapePos = next;\n\n          while (css.charCodeAt(escapePos - 1) === t.backslash) {\n            escapePos -= 1;\n            escaped = !escaped;\n          }\n        } while (escaped);\n\n        tokenType = t.str;\n        endLine = line;\n        endColumn = start - offset;\n        end = next + 1;\n        break;\n\n      default:\n        if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {\n          next = css.indexOf('*/', start + 2) + 1;\n\n          if (next === 0) {\n            unclosed('comment', '*/');\n          }\n\n          content = css.slice(start, next + 1);\n          lines = content.split('\\n');\n          last = lines.length - 1;\n\n          if (last > 0) {\n            nextLine = line + last;\n            nextOffset = next - lines[last].length;\n          } else {\n            nextLine = line;\n            nextOffset = offset;\n          }\n\n          tokenType = t.comment;\n          line = nextLine;\n          endLine = nextLine;\n          endColumn = next - nextOffset;\n        } else if (code === t.slash) {\n          next = start;\n          tokenType = code;\n          endLine = line;\n          endColumn = start - offset;\n          end = next + 1;\n        } else {\n          next = consumeWord(css, start);\n          tokenType = t.word;\n          endLine = line;\n          endColumn = next - offset;\n        }\n\n        end = next + 1;\n        break;\n    } // Ensure that the token structure remains consistent\n\n\n    tokens.push([tokenType, // [0] Token type\n    line, // [1] Starting line\n    start - offset, // [2] Starting column\n    endLine, // [3] Ending line\n    endColumn, // [4] Ending column\n    start, // [5] Start position / Source index\n    end // [6] End position\n    ]); // Reset offset for the next token\n\n    if (nextOffset) {\n      offset = nextOffset;\n      nextOffset = null;\n    }\n\n    start = end;\n  }\n\n  return tokens;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _root = _interopRequireDefault(require(\"./selectors/root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selectors/selector\"));\n\nvar _className = _interopRequireDefault(require(\"./selectors/className\"));\n\nvar _comment = _interopRequireDefault(require(\"./selectors/comment\"));\n\nvar _id = _interopRequireDefault(require(\"./selectors/id\"));\n\nvar _tag = _interopRequireDefault(require(\"./selectors/tag\"));\n\nvar _string = _interopRequireDefault(require(\"./selectors/string\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./selectors/pseudo\"));\n\nvar _attribute = _interopRequireWildcard(require(\"./selectors/attribute\"));\n\nvar _universal = _interopRequireDefault(require(\"./selectors/universal\"));\n\nvar _combinator = _interopRequireDefault(require(\"./selectors/combinator\"));\n\nvar _nesting = _interopRequireDefault(require(\"./selectors/nesting\"));\n\nvar _sortAscending = _interopRequireDefault(require(\"./sortAscending\"));\n\nvar _tokenize = _interopRequireWildcard(require(\"./tokenize\"));\n\nvar tokens = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar types = _interopRequireWildcard(require(\"./selectors/types\"));\n\nvar _util = require(\"./util\");\n\nvar _WHITESPACE_TOKENS, _Object$assign;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS);\nvar WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign));\n\nfunction tokenStart(token) {\n  return {\n    line: token[_tokenize.FIELDS.START_LINE],\n    column: token[_tokenize.FIELDS.START_COL]\n  };\n}\n\nfunction tokenEnd(token) {\n  return {\n    line: token[_tokenize.FIELDS.END_LINE],\n    column: token[_tokenize.FIELDS.END_COL]\n  };\n}\n\nfunction getSource(startLine, startColumn, endLine, endColumn) {\n  return {\n    start: {\n      line: startLine,\n      column: startColumn\n    },\n    end: {\n      line: endLine,\n      column: endColumn\n    }\n  };\n}\n\nfunction getTokenSource(token) {\n  return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]);\n}\n\nfunction getTokenSourceSpan(startToken, endToken) {\n  if (!startToken) {\n    return undefined;\n  }\n\n  return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]);\n}\n\nfunction unescapeProp(node, prop) {\n  var value = node[prop];\n\n  if (typeof value !== \"string\") {\n    return;\n  }\n\n  if (value.indexOf(\"\\\\\") !== -1) {\n    (0, _util.ensureObject)(node, 'raws');\n    node[prop] = (0, _util.unesc)(value);\n\n    if (node.raws[prop] === undefined) {\n      node.raws[prop] = value;\n    }\n  }\n\n  return node;\n}\n\nfunction indexesOf(array, item) {\n  var i = -1;\n  var indexes = [];\n\n  while ((i = array.indexOf(item, i + 1)) !== -1) {\n    indexes.push(i);\n  }\n\n  return indexes;\n}\n\nfunction uniqs() {\n  var list = Array.prototype.concat.apply([], arguments);\n  return list.filter(function (item, i) {\n    return i === list.indexOf(item);\n  });\n}\n\nvar Parser = /*#__PURE__*/function () {\n  function Parser(rule, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    this.rule = rule;\n    this.options = Object.assign({\n      lossy: false,\n      safe: false\n    }, options);\n    this.position = 0;\n    this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;\n    this.tokens = (0, _tokenize[\"default\"])({\n      css: this.css,\n      error: this._errorGenerator(),\n      safe: this.options.safe\n    });\n    var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);\n    this.root = new _root[\"default\"]({\n      source: rootSource\n    });\n    this.root.errorGenerator = this._errorGenerator();\n    var selector = new _selector[\"default\"]({\n      source: {\n        start: {\n          line: 1,\n          column: 1\n        }\n      }\n    });\n    this.root.append(selector);\n    this.current = selector;\n    this.loop();\n  }\n\n  var _proto = Parser.prototype;\n\n  _proto._errorGenerator = function _errorGenerator() {\n    var _this = this;\n\n    return function (message, errorOptions) {\n      if (typeof _this.rule === 'string') {\n        return new Error(message);\n      }\n\n      return _this.rule.error(message, errorOptions);\n    };\n  };\n\n  _proto.attribute = function attribute() {\n    var attr = [];\n    var startingToken = this.currToken;\n    this.position++;\n\n    while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n      attr.push(this.currToken);\n      this.position++;\n    }\n\n    if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n      return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n    }\n\n    var len = attr.length;\n    var node = {\n      source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),\n      sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n    };\n\n    if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) {\n      return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]);\n    }\n\n    var pos = 0;\n    var spaceBefore = '';\n    var commentBefore = '';\n    var lastAdded = null;\n    var spaceAfterMeaningfulToken = false;\n\n    while (pos < len) {\n      var token = attr[pos];\n      var content = this.content(token);\n      var next = attr[pos + 1];\n\n      switch (token[_tokenize.FIELDS.TYPE]) {\n        case tokens.space:\n          // if (\n          //     len === 1 ||\n          //     pos === 0 && this.content(next) === '|'\n          // ) {\n          //     return this.expected('attribute', token[TOKEN.START_POS], content);\n          // }\n          spaceAfterMeaningfulToken = true;\n\n          if (this.options.lossy) {\n            break;\n          }\n\n          if (lastAdded) {\n            (0, _util.ensureObject)(node, 'spaces', lastAdded);\n            var prevContent = node.spaces[lastAdded].after || '';\n            node.spaces[lastAdded].after = prevContent + content;\n            var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null;\n\n            if (existingComment) {\n              node.raws.spaces[lastAdded].after = existingComment + content;\n            }\n          } else {\n            spaceBefore = spaceBefore + content;\n            commentBefore = commentBefore + content;\n          }\n\n          break;\n\n        case tokens.asterisk:\n          if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n            node.operator = content;\n            lastAdded = 'operator';\n          } else if ((!node.namespace || lastAdded === \"namespace\" && !spaceAfterMeaningfulToken) && next) {\n            if (spaceBefore) {\n              (0, _util.ensureObject)(node, 'spaces', 'attribute');\n              node.spaces.attribute.before = spaceBefore;\n              spaceBefore = '';\n            }\n\n            if (commentBefore) {\n              (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n              node.raws.spaces.attribute.before = spaceBefore;\n              commentBefore = '';\n            }\n\n            node.namespace = (node.namespace || \"\") + content;\n            var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null;\n\n            if (rawValue) {\n              node.raws.namespace += content;\n            }\n\n            lastAdded = 'namespace';\n          }\n\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.dollar:\n          if (lastAdded === \"value\") {\n            var oldRawValue = (0, _util.getProp)(node, 'raws', 'value');\n            node.value += \"$\";\n\n            if (oldRawValue) {\n              node.raws.value = oldRawValue + \"$\";\n            }\n\n            break;\n          }\n\n        // Falls through\n\n        case tokens.caret:\n          if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n            node.operator = content;\n            lastAdded = 'operator';\n          }\n\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.combinator:\n          if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n            node.operator = content;\n            lastAdded = 'operator';\n          }\n\n          if (content !== '|') {\n            spaceAfterMeaningfulToken = false;\n            break;\n          }\n\n          if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n            node.operator = content;\n            lastAdded = 'operator';\n          } else if (!node.namespace && !node.attribute) {\n            node.namespace = true;\n          }\n\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.word:\n          if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.\n          !node.operator && !node.namespace) {\n            node.namespace = content;\n            lastAdded = 'namespace';\n          } else if (!node.attribute || lastAdded === \"attribute\" && !spaceAfterMeaningfulToken) {\n            if (spaceBefore) {\n              (0, _util.ensureObject)(node, 'spaces', 'attribute');\n              node.spaces.attribute.before = spaceBefore;\n              spaceBefore = '';\n            }\n\n            if (commentBefore) {\n              (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n              node.raws.spaces.attribute.before = commentBefore;\n              commentBefore = '';\n            }\n\n            node.attribute = (node.attribute || \"\") + content;\n\n            var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null;\n\n            if (_rawValue) {\n              node.raws.attribute += content;\n            }\n\n            lastAdded = 'attribute';\n          } else if (!node.value && node.value !== \"\" || lastAdded === \"value\" && !spaceAfterMeaningfulToken) {\n            var _unescaped = (0, _util.unesc)(content);\n\n            var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || '';\n\n            var oldValue = node.value || '';\n            node.value = oldValue + _unescaped;\n            node.quoteMark = null;\n\n            if (_unescaped !== content || _oldRawValue) {\n              (0, _util.ensureObject)(node, 'raws');\n              node.raws.value = (_oldRawValue || oldValue) + content;\n            }\n\n            lastAdded = 'value';\n          } else {\n            var insensitive = content === 'i' || content === \"I\";\n\n            if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) {\n              node.insensitive = insensitive;\n\n              if (!insensitive || content === \"I\") {\n                (0, _util.ensureObject)(node, 'raws');\n                node.raws.insensitiveFlag = content;\n              }\n\n              lastAdded = 'insensitive';\n\n              if (spaceBefore) {\n                (0, _util.ensureObject)(node, 'spaces', 'insensitive');\n                node.spaces.insensitive.before = spaceBefore;\n                spaceBefore = '';\n              }\n\n              if (commentBefore) {\n                (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive');\n                node.raws.spaces.insensitive.before = commentBefore;\n                commentBefore = '';\n              }\n            } else if (node.value || node.value === '') {\n              lastAdded = 'value';\n              node.value += content;\n\n              if (node.raws.value) {\n                node.raws.value += content;\n              }\n            }\n          }\n\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.str:\n          if (!node.attribute || !node.operator) {\n            return this.error(\"Expected an attribute followed by an operator preceding the string.\", {\n              index: token[_tokenize.FIELDS.START_POS]\n            });\n          }\n\n          var _unescapeValue = (0, _attribute.unescapeValue)(content),\n              unescaped = _unescapeValue.unescaped,\n              quoteMark = _unescapeValue.quoteMark;\n\n          node.value = unescaped;\n          node.quoteMark = quoteMark;\n          lastAdded = 'value';\n          (0, _util.ensureObject)(node, 'raws');\n          node.raws.value = content;\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.equals:\n          if (!node.attribute) {\n            return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content);\n          }\n\n          if (node.value) {\n            return this.error('Unexpected \"=\" found; an operator was already defined.', {\n              index: token[_tokenize.FIELDS.START_POS]\n            });\n          }\n\n          node.operator = node.operator ? node.operator + content : content;\n          lastAdded = 'operator';\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.comment:\n          if (lastAdded) {\n            if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') {\n              var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || '';\n              var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment;\n              (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded);\n              node.raws.spaces[lastAdded].after = rawLastComment + content;\n            } else {\n              var lastValue = node[lastAdded] || '';\n              var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue;\n              (0, _util.ensureObject)(node, 'raws');\n              node.raws[lastAdded] = rawLastValue + content;\n            }\n          } else {\n            commentBefore = commentBefore + content;\n          }\n\n          break;\n\n        default:\n          return this.error(\"Unexpected \\\"\" + content + \"\\\" found.\", {\n            index: token[_tokenize.FIELDS.START_POS]\n          });\n      }\n\n      pos++;\n    }\n\n    unescapeProp(node, \"attribute\");\n    unescapeProp(node, \"namespace\");\n    this.newNode(new _attribute[\"default\"](node));\n    this.position++;\n  }\n  /**\n   * return a node containing meaningless garbage up to (but not including) the specified token position.\n   * if the token position is negative, all remaining tokens are consumed.\n   *\n   * This returns an array containing a single string node if all whitespace,\n   * otherwise an array of comment nodes with space before and after.\n   *\n   * These tokens are not added to the current selector, the caller can add them or use them to amend\n   * a previous node's space metadata.\n   *\n   * In lossy mode, this returns only comments.\n   */\n  ;\n\n  _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) {\n    if (stopPosition < 0) {\n      stopPosition = this.tokens.length;\n    }\n\n    var startPosition = this.position;\n    var nodes = [];\n    var space = \"\";\n    var lastComment = undefined;\n\n    do {\n      if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {\n        if (!this.options.lossy) {\n          space += this.content();\n        }\n      } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) {\n        var spaces = {};\n\n        if (space) {\n          spaces.before = space;\n          space = \"\";\n        }\n\n        lastComment = new _comment[\"default\"]({\n          value: this.content(),\n          source: getTokenSource(this.currToken),\n          sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n          spaces: spaces\n        });\n        nodes.push(lastComment);\n      }\n    } while (++this.position < stopPosition);\n\n    if (space) {\n      if (lastComment) {\n        lastComment.spaces.after = space;\n      } else if (!this.options.lossy) {\n        var firstToken = this.tokens[startPosition];\n        var lastToken = this.tokens[this.position - 1];\n        nodes.push(new _string[\"default\"]({\n          value: '',\n          source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),\n          sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n          spaces: {\n            before: space,\n            after: ''\n          }\n        }));\n      }\n    }\n\n    return nodes;\n  }\n  /**\n   * \n   * @param {*} nodes \n   */\n  ;\n\n  _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) {\n    var _this2 = this;\n\n    if (requiredSpace === void 0) {\n      requiredSpace = false;\n    }\n\n    var space = \"\";\n    var rawSpace = \"\";\n    nodes.forEach(function (n) {\n      var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace);\n\n      var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace);\n\n      space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0);\n      rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0);\n    });\n\n    if (rawSpace === space) {\n      rawSpace = undefined;\n    }\n\n    var result = {\n      space: space,\n      rawSpace: rawSpace\n    };\n    return result;\n  };\n\n  _proto.isNamedCombinator = function isNamedCombinator(position) {\n    if (position === void 0) {\n      position = this.position;\n    }\n\n    return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash;\n  };\n\n  _proto.namedCombinator = function namedCombinator() {\n    if (this.isNamedCombinator()) {\n      var nameRaw = this.content(this.tokens[this.position + 1]);\n      var name = (0, _util.unesc)(nameRaw).toLowerCase();\n      var raws = {};\n\n      if (name !== nameRaw) {\n        raws.value = \"/\" + nameRaw + \"/\";\n      }\n\n      var node = new _combinator[\"default\"]({\n        value: \"/\" + name + \"/\",\n        source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),\n        sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n        raws: raws\n      });\n      this.position = this.position + 3;\n      return node;\n    } else {\n      this.unexpected();\n    }\n  };\n\n  _proto.combinator = function combinator() {\n    var _this3 = this;\n\n    if (this.content() === '|') {\n      return this.namespace();\n    } // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector.\n\n\n    var nextSigTokenPos = this.locateNextMeaningfulToken(this.position);\n\n    if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma) {\n      var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n\n      if (nodes.length > 0) {\n        var last = this.current.last;\n\n        if (last) {\n          var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes),\n              space = _this$convertWhitespa.space,\n              rawSpace = _this$convertWhitespa.rawSpace;\n\n          if (rawSpace !== undefined) {\n            last.rawSpaceAfter += rawSpace;\n          }\n\n          last.spaces.after += space;\n        } else {\n          nodes.forEach(function (n) {\n            return _this3.newNode(n);\n          });\n        }\n      }\n\n      return;\n    }\n\n    var firstToken = this.currToken;\n    var spaceOrDescendantSelectorNodes = undefined;\n\n    if (nextSigTokenPos > this.position) {\n      spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n    }\n\n    var node;\n\n    if (this.isNamedCombinator()) {\n      node = this.namedCombinator();\n    } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {\n      node = new _combinator[\"default\"]({\n        value: this.content(),\n        source: getTokenSource(this.currToken),\n        sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]\n      });\n      this.position++;\n    } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {// pass\n    } else if (!spaceOrDescendantSelectorNodes) {\n      this.unexpected();\n    }\n\n    if (node) {\n      if (spaceOrDescendantSelectorNodes) {\n        var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes),\n            _space = _this$convertWhitespa2.space,\n            _rawSpace = _this$convertWhitespa2.rawSpace;\n\n        node.spaces.before = _space;\n        node.rawSpaceBefore = _rawSpace;\n      }\n    } else {\n      // descendant combinator\n      var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true),\n          _space2 = _this$convertWhitespa3.space,\n          _rawSpace2 = _this$convertWhitespa3.rawSpace;\n\n      if (!_rawSpace2) {\n        _rawSpace2 = _space2;\n      }\n\n      var spaces = {};\n      var raws = {\n        spaces: {}\n      };\n\n      if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) {\n        spaces.before = _space2.slice(0, _space2.length - 1);\n        raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1);\n      } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) {\n        spaces.after = _space2.slice(1);\n        raws.spaces.after = _rawSpace2.slice(1);\n      } else {\n        raws.value = _rawSpace2;\n      }\n\n      node = new _combinator[\"default\"]({\n        value: ' ',\n        source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),\n        sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n        spaces: spaces,\n        raws: raws\n      });\n    }\n\n    if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) {\n      node.spaces.after = this.optionalSpace(this.content());\n      this.position++;\n    }\n\n    return this.newNode(node);\n  };\n\n  _proto.comma = function comma() {\n    if (this.position === this.tokens.length - 1) {\n      this.root.trailingComma = true;\n      this.position++;\n      return;\n    }\n\n    this.current._inferEndPosition();\n\n    var selector = new _selector[\"default\"]({\n      source: {\n        start: tokenStart(this.tokens[this.position + 1])\n      }\n    });\n    this.current.parent.append(selector);\n    this.current = selector;\n    this.position++;\n  };\n\n  _proto.comment = function comment() {\n    var current = this.currToken;\n    this.newNode(new _comment[\"default\"]({\n      value: this.content(),\n      source: getTokenSource(current),\n      sourceIndex: current[_tokenize.FIELDS.START_POS]\n    }));\n    this.position++;\n  };\n\n  _proto.error = function error(message, opts) {\n    throw this.root.error(message, opts);\n  };\n\n  _proto.missingBackslash = function missingBackslash() {\n    return this.error('Expected a backslash preceding the semicolon.', {\n      index: this.currToken[_tokenize.FIELDS.START_POS]\n    });\n  };\n\n  _proto.missingParenthesis = function missingParenthesis() {\n    return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n  };\n\n  _proto.missingSquareBracket = function missingSquareBracket() {\n    return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n  };\n\n  _proto.unexpected = function unexpected() {\n    return this.error(\"Unexpected '\" + this.content() + \"'. Escaping special characters with \\\\ may help.\", this.currToken[_tokenize.FIELDS.START_POS]);\n  };\n\n  _proto.namespace = function namespace() {\n    var before = this.prevToken && this.content(this.prevToken) || true;\n\n    if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n      this.position++;\n      return this.word(before);\n    } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) {\n      this.position++;\n      return this.universal(before);\n    }\n  };\n\n  _proto.nesting = function nesting() {\n    if (this.nextToken) {\n      var nextContent = this.content(this.nextToken);\n\n      if (nextContent === \"|\") {\n        this.position++;\n        return;\n      }\n    }\n\n    var current = this.currToken;\n    this.newNode(new _nesting[\"default\"]({\n      value: this.content(),\n      source: getTokenSource(current),\n      sourceIndex: current[_tokenize.FIELDS.START_POS]\n    }));\n    this.position++;\n  };\n\n  _proto.parentheses = function parentheses() {\n    var last = this.current.last;\n    var unbalanced = 1;\n    this.position++;\n\n    if (last && last.type === types.PSEUDO) {\n      var selector = new _selector[\"default\"]({\n        source: {\n          start: tokenStart(this.tokens[this.position - 1])\n        }\n      });\n      var cache = this.current;\n      last.append(selector);\n      this.current = selector;\n\n      while (this.position < this.tokens.length && unbalanced) {\n        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n          unbalanced++;\n        }\n\n        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n          unbalanced--;\n        }\n\n        if (unbalanced) {\n          this.parse();\n        } else {\n          this.current.source.end = tokenEnd(this.currToken);\n          this.current.parent.source.end = tokenEnd(this.currToken);\n          this.position++;\n        }\n      }\n\n      this.current = cache;\n    } else {\n      // I think this case should be an error. It's used to implement a basic parse of media queries\n      // but I don't think it's a good idea.\n      var parenStart = this.currToken;\n      var parenValue = \"(\";\n      var parenEnd;\n\n      while (this.position < this.tokens.length && unbalanced) {\n        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n          unbalanced++;\n        }\n\n        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n          unbalanced--;\n        }\n\n        parenEnd = this.currToken;\n        parenValue += this.parseParenthesisToken(this.currToken);\n        this.position++;\n      }\n\n      if (last) {\n        last.appendToPropertyAndEscape(\"value\", parenValue, parenValue);\n      } else {\n        this.newNode(new _string[\"default\"]({\n          value: parenValue,\n          source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),\n          sourceIndex: parenStart[_tokenize.FIELDS.START_POS]\n        }));\n      }\n    }\n\n    if (unbalanced) {\n      return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n    }\n  };\n\n  _proto.pseudo = function pseudo() {\n    var _this4 = this;\n\n    var pseudoStr = '';\n    var startingToken = this.currToken;\n\n    while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) {\n      pseudoStr += this.content();\n      this.position++;\n    }\n\n    if (!this.currToken) {\n      return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1);\n    }\n\n    if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n      this.splitWord(false, function (first, length) {\n        pseudoStr += first;\n\n        _this4.newNode(new _pseudo[\"default\"]({\n          value: pseudoStr,\n          source: getTokenSourceSpan(startingToken, _this4.currToken),\n          sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n        }));\n\n        if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n          _this4.error('Misplaced parenthesis.', {\n            index: _this4.nextToken[_tokenize.FIELDS.START_POS]\n          });\n        }\n      });\n    } else {\n      return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]);\n    }\n  };\n\n  _proto.space = function space() {\n    var content = this.content(); // Handle space before and after the selector\n\n    if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) {\n      return node.type === 'comment';\n    })) {\n      this.spaces = this.optionalSpace(content);\n      this.position++;\n    } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n      this.current.last.spaces.after = this.optionalSpace(content);\n      this.position++;\n    } else {\n      this.combinator();\n    }\n  };\n\n  _proto.string = function string() {\n    var current = this.currToken;\n    this.newNode(new _string[\"default\"]({\n      value: this.content(),\n      source: getTokenSource(current),\n      sourceIndex: current[_tokenize.FIELDS.START_POS]\n    }));\n    this.position++;\n  };\n\n  _proto.universal = function universal(namespace) {\n    var nextToken = this.nextToken;\n\n    if (nextToken && this.content(nextToken) === '|') {\n      this.position++;\n      return this.namespace();\n    }\n\n    var current = this.currToken;\n    this.newNode(new _universal[\"default\"]({\n      value: this.content(),\n      source: getTokenSource(current),\n      sourceIndex: current[_tokenize.FIELDS.START_POS]\n    }), namespace);\n    this.position++;\n  };\n\n  _proto.splitWord = function splitWord(namespace, firstCallback) {\n    var _this5 = this;\n\n    var nextToken = this.nextToken;\n    var word = this.content();\n\n    while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) {\n      this.position++;\n      var current = this.content();\n      word += current;\n\n      if (current.lastIndexOf('\\\\') === current.length - 1) {\n        var next = this.nextToken;\n\n        if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) {\n          word += this.requiredSpace(this.content(next));\n          this.position++;\n        }\n      }\n\n      nextToken = this.nextToken;\n    }\n\n    var hasClass = indexesOf(word, '.').filter(function (i) {\n      // Allow escaped dot within class name\n      var escapedDot = word[i - 1] === '\\\\'; // Allow decimal numbers percent in @keyframes\n\n      var isKeyframesPercent = /^\\d+\\.\\d+%$/.test(word);\n      return !escapedDot && !isKeyframesPercent;\n    });\n    var hasId = indexesOf(word, '#').filter(function (i) {\n      return word[i - 1] !== '\\\\';\n    }); // Eliminate Sass interpolations from the list of id indexes\n\n    var interpolations = indexesOf(word, '#{');\n\n    if (interpolations.length) {\n      hasId = hasId.filter(function (hashIndex) {\n        return !~interpolations.indexOf(hashIndex);\n      });\n    }\n\n    var indices = (0, _sortAscending[\"default\"])(uniqs([0].concat(hasClass, hasId)));\n    indices.forEach(function (ind, i) {\n      var index = indices[i + 1] || word.length;\n      var value = word.slice(ind, index);\n\n      if (i === 0 && firstCallback) {\n        return firstCallback.call(_this5, value, indices.length);\n      }\n\n      var node;\n      var current = _this5.currToken;\n      var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i];\n      var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1));\n\n      if (~hasClass.indexOf(ind)) {\n        var classNameOpts = {\n          value: value.slice(1),\n          source: source,\n          sourceIndex: sourceIndex\n        };\n        node = new _className[\"default\"](unescapeProp(classNameOpts, \"value\"));\n      } else if (~hasId.indexOf(ind)) {\n        var idOpts = {\n          value: value.slice(1),\n          source: source,\n          sourceIndex: sourceIndex\n        };\n        node = new _id[\"default\"](unescapeProp(idOpts, \"value\"));\n      } else {\n        var tagOpts = {\n          value: value,\n          source: source,\n          sourceIndex: sourceIndex\n        };\n        unescapeProp(tagOpts, \"value\");\n        node = new _tag[\"default\"](tagOpts);\n      }\n\n      _this5.newNode(node, namespace); // Ensure that the namespace is used only once\n\n\n      namespace = null;\n    });\n    this.position++;\n  };\n\n  _proto.word = function word(namespace) {\n    var nextToken = this.nextToken;\n\n    if (nextToken && this.content(nextToken) === '|') {\n      this.position++;\n      return this.namespace();\n    }\n\n    return this.splitWord(namespace);\n  };\n\n  _proto.loop = function loop() {\n    while (this.position < this.tokens.length) {\n      this.parse(true);\n    }\n\n    this.current._inferEndPosition();\n\n    return this.root;\n  };\n\n  _proto.parse = function parse(throwOnParenthesis) {\n    switch (this.currToken[_tokenize.FIELDS.TYPE]) {\n      case tokens.space:\n        this.space();\n        break;\n\n      case tokens.comment:\n        this.comment();\n        break;\n\n      case tokens.openParenthesis:\n        this.parentheses();\n        break;\n\n      case tokens.closeParenthesis:\n        if (throwOnParenthesis) {\n          this.missingParenthesis();\n        }\n\n        break;\n\n      case tokens.openSquare:\n        this.attribute();\n        break;\n\n      case tokens.dollar:\n      case tokens.caret:\n      case tokens.equals:\n      case tokens.word:\n        this.word();\n        break;\n\n      case tokens.colon:\n        this.pseudo();\n        break;\n\n      case tokens.comma:\n        this.comma();\n        break;\n\n      case tokens.asterisk:\n        this.universal();\n        break;\n\n      case tokens.ampersand:\n        this.nesting();\n        break;\n\n      case tokens.slash:\n      case tokens.combinator:\n        this.combinator();\n        break;\n\n      case tokens.str:\n        this.string();\n        break;\n      // These cases throw; no break needed.\n\n      case tokens.closeSquare:\n        this.missingSquareBracket();\n\n      case tokens.semicolon:\n        this.missingBackslash();\n\n      default:\n        this.unexpected();\n    }\n  }\n  /**\n   * Helpers\n   */\n  ;\n\n  _proto.expected = function expected(description, index, found) {\n    if (Array.isArray(description)) {\n      var last = description.pop();\n      description = description.join(', ') + \" or \" + last;\n    }\n\n    var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a';\n\n    if (!found) {\n      return this.error(\"Expected \" + an + \" \" + description + \".\", {\n        index: index\n      });\n    }\n\n    return this.error(\"Expected \" + an + \" \" + description + \", found \\\"\" + found + \"\\\" instead.\", {\n      index: index\n    });\n  };\n\n  _proto.requiredSpace = function requiredSpace(space) {\n    return this.options.lossy ? ' ' : space;\n  };\n\n  _proto.optionalSpace = function optionalSpace(space) {\n    return this.options.lossy ? '' : space;\n  };\n\n  _proto.lossySpace = function lossySpace(space, required) {\n    if (this.options.lossy) {\n      return required ? ' ' : '';\n    } else {\n      return space;\n    }\n  };\n\n  _proto.parseParenthesisToken = function parseParenthesisToken(token) {\n    var content = this.content(token);\n\n    if (token[_tokenize.FIELDS.TYPE] === tokens.space) {\n      return this.requiredSpace(content);\n    } else {\n      return content;\n    }\n  };\n\n  _proto.newNode = function newNode(node, namespace) {\n    if (namespace) {\n      if (/^ +$/.test(namespace)) {\n        if (!this.options.lossy) {\n          this.spaces = (this.spaces || '') + namespace;\n        }\n\n        namespace = true;\n      }\n\n      node.namespace = namespace;\n      unescapeProp(node, \"namespace\");\n    }\n\n    if (this.spaces) {\n      node.spaces.before = this.spaces;\n      this.spaces = '';\n    }\n\n    return this.current.append(node);\n  };\n\n  _proto.content = function content(token) {\n    if (token === void 0) {\n      token = this.currToken;\n    }\n\n    return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]);\n  };\n\n  /**\n   * returns the index of the next non-whitespace, non-comment token.\n   * returns -1 if no meaningful token is found.\n   */\n  _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) {\n    if (startPosition === void 0) {\n      startPosition = this.position + 1;\n    }\n\n    var searchPosition = startPosition;\n\n    while (searchPosition < this.tokens.length) {\n      if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) {\n        searchPosition++;\n        continue;\n      } else {\n        return searchPosition;\n      }\n    }\n\n    return -1;\n  };\n\n  _createClass(Parser, [{\n    key: \"currToken\",\n    get: function get() {\n      return this.tokens[this.position];\n    }\n  }, {\n    key: \"nextToken\",\n    get: function get() {\n      return this.tokens[this.position + 1];\n    }\n  }, {\n    key: \"prevToken\",\n    get: function get() {\n      return this.tokens[this.position - 1];\n    }\n  }]);\n\n  return Parser;\n}();\n\nexports[\"default\"] = Parser;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Processor = /*#__PURE__*/function () {\n  function Processor(func, options) {\n    this.func = func || function noop() {};\n\n    this.funcRes = null;\n    this.options = options;\n  }\n\n  var _proto = Processor.prototype;\n\n  _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var merged = Object.assign({}, this.options, options);\n\n    if (merged.updateSelector === false) {\n      return false;\n    } else {\n      return typeof rule !== \"string\";\n    }\n  };\n\n  _proto._isLossy = function _isLossy(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var merged = Object.assign({}, this.options, options);\n\n    if (merged.lossless === false) {\n      return true;\n    } else {\n      return false;\n    }\n  };\n\n  _proto._root = function _root(rule, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var parser = new _parser[\"default\"](rule, this._parseOptions(options));\n    return parser.root;\n  };\n\n  _proto._parseOptions = function _parseOptions(options) {\n    return {\n      lossy: this._isLossy(options)\n    };\n  };\n\n  _proto._run = function _run(rule, options) {\n    var _this = this;\n\n    if (options === void 0) {\n      options = {};\n    }\n\n    return new Promise(function (resolve, reject) {\n      try {\n        var root = _this._root(rule, options);\n\n        Promise.resolve(_this.func(root)).then(function (transform) {\n          var string = undefined;\n\n          if (_this._shouldUpdateSelector(rule, options)) {\n            string = root.toString();\n            rule.selector = string;\n          }\n\n          return {\n            transform: transform,\n            root: root,\n            string: string\n          };\n        }).then(resolve, reject);\n      } catch (e) {\n        reject(e);\n        return;\n      }\n    });\n  };\n\n  _proto._runSync = function _runSync(rule, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var root = this._root(rule, options);\n\n    var transform = this.func(root);\n\n    if (transform && typeof transform.then === \"function\") {\n      throw new Error(\"Selector processor returned a promise to a synchronous call.\");\n    }\n\n    var string = undefined;\n\n    if (options.updateSelector && typeof rule !== \"string\") {\n      string = root.toString();\n      rule.selector = string;\n    }\n\n    return {\n      transform: transform,\n      root: root,\n      string: string\n    };\n  }\n  /**\n   * Process rule into a selector AST.\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {Promise<parser.Root>} The AST of the selector after processing it.\n   */\n  ;\n\n  _proto.ast = function ast(rule, options) {\n    return this._run(rule, options).then(function (result) {\n      return result.root;\n    });\n  }\n  /**\n   * Process rule into a selector AST synchronously.\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {parser.Root} The AST of the selector after processing it.\n   */\n  ;\n\n  _proto.astSync = function astSync(rule, options) {\n    return this._runSync(rule, options).root;\n  }\n  /**\n   * Process a selector into a transformed value asynchronously\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {Promise<any>} The value returned by the processor.\n   */\n  ;\n\n  _proto.transform = function transform(rule, options) {\n    return this._run(rule, options).then(function (result) {\n      return result.transform;\n    });\n  }\n  /**\n   * Process a selector into a transformed value synchronously.\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {any} The value returned by the processor.\n   */\n  ;\n\n  _proto.transformSync = function transformSync(rule, options) {\n    return this._runSync(rule, options).transform;\n  }\n  /**\n   * Process a selector into a new selector string asynchronously.\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {string} the selector after processing.\n   */\n  ;\n\n  _proto.process = function process(rule, options) {\n    return this._run(rule, options).then(function (result) {\n      return result.string || result.root.toString();\n    });\n  }\n  /**\n   * Process a selector into a new selector string synchronously.\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {string} the selector after processing.\n   */\n  ;\n\n  _proto.processSync = function processSync(rule, options) {\n    var result = this._runSync(rule, options);\n\n    return result.string || result.root.toString();\n  };\n\n  return Processor;\n}();\n\nexports[\"default\"] = Processor;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0;\n\nvar _attribute = _interopRequireDefault(require(\"./attribute\"));\n\nvar _className = _interopRequireDefault(require(\"./className\"));\n\nvar _combinator = _interopRequireDefault(require(\"./combinator\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _id = _interopRequireDefault(require(\"./id\"));\n\nvar _nesting = _interopRequireDefault(require(\"./nesting\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./pseudo\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selector\"));\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\nvar _tag = _interopRequireDefault(require(\"./tag\"));\n\nvar _universal = _interopRequireDefault(require(\"./universal\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar attribute = function attribute(opts) {\n  return new _attribute[\"default\"](opts);\n};\n\nexports.attribute = attribute;\n\nvar className = function className(opts) {\n  return new _className[\"default\"](opts);\n};\n\nexports.className = className;\n\nvar combinator = function combinator(opts) {\n  return new _combinator[\"default\"](opts);\n};\n\nexports.combinator = combinator;\n\nvar comment = function comment(opts) {\n  return new _comment[\"default\"](opts);\n};\n\nexports.comment = comment;\n\nvar id = function id(opts) {\n  return new _id[\"default\"](opts);\n};\n\nexports.id = id;\n\nvar nesting = function nesting(opts) {\n  return new _nesting[\"default\"](opts);\n};\n\nexports.nesting = nesting;\n\nvar pseudo = function pseudo(opts) {\n  return new _pseudo[\"default\"](opts);\n};\n\nexports.pseudo = pseudo;\n\nvar root = function root(opts) {\n  return new _root[\"default\"](opts);\n};\n\nexports.root = root;\n\nvar selector = function selector(opts) {\n  return new _selector[\"default\"](opts);\n};\n\nexports.selector = selector;\n\nvar string = function string(opts) {\n  return new _string[\"default\"](opts);\n};\n\nexports.string = string;\n\nvar tag = function tag(opts) {\n  return new _tag[\"default\"](opts);\n};\n\nexports.tag = tag;\n\nvar universal = function universal(opts) {\n  return new _universal[\"default\"](opts);\n};\n\nexports.universal = universal;","\"use strict\";\n\nexports.__esModule = true;\nexports.isNode = isNode;\nexports.isPseudoElement = isPseudoElement;\nexports.isPseudoClass = isPseudoClass;\nexports.isContainer = isContainer;\nexports.isNamespace = isNamespace;\nexports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;\n\nvar _types = require(\"./types\");\n\nvar _IS_TYPE;\n\nvar IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE);\n\nfunction isNode(node) {\n  return typeof node === \"object\" && IS_TYPE[node.type];\n}\n\nfunction isNodeType(type, node) {\n  return isNode(node) && node.type === type;\n}\n\nvar isAttribute = isNodeType.bind(null, _types.ATTRIBUTE);\nexports.isAttribute = isAttribute;\nvar isClassName = isNodeType.bind(null, _types.CLASS);\nexports.isClassName = isClassName;\nvar isCombinator = isNodeType.bind(null, _types.COMBINATOR);\nexports.isCombinator = isCombinator;\nvar isComment = isNodeType.bind(null, _types.COMMENT);\nexports.isComment = isComment;\nvar isIdentifier = isNodeType.bind(null, _types.ID);\nexports.isIdentifier = isIdentifier;\nvar isNesting = isNodeType.bind(null, _types.NESTING);\nexports.isNesting = isNesting;\nvar isPseudo = isNodeType.bind(null, _types.PSEUDO);\nexports.isPseudo = isPseudo;\nvar isRoot = isNodeType.bind(null, _types.ROOT);\nexports.isRoot = isRoot;\nvar isSelector = isNodeType.bind(null, _types.SELECTOR);\nexports.isSelector = isSelector;\nvar isString = isNodeType.bind(null, _types.STRING);\nexports.isString = isString;\nvar isTag = isNodeType.bind(null, _types.TAG);\nexports.isTag = isTag;\nvar isUniversal = isNodeType.bind(null, _types.UNIVERSAL);\nexports.isUniversal = isUniversal;\n\nfunction isPseudoElement(node) {\n  return isPseudo(node) && node.value && (node.value.startsWith(\"::\") || node.value.toLowerCase() === \":before\" || node.value.toLowerCase() === \":after\" || node.value.toLowerCase() === \":first-letter\" || node.value.toLowerCase() === \":first-line\");\n}\n\nfunction isPseudoClass(node) {\n  return isPseudo(node) && !isPseudoElement(node);\n}\n\nfunction isContainer(node) {\n  return !!(isNode(node) && node.walk);\n}\n\nfunction isNamespace(node) {\n  return isAttribute(node) || isTag(node);\n}","\"use strict\";\n\nexports.__esModule = true;\n\nvar _types = require(\"./types\");\n\nObject.keys(_types).forEach(function (key) {\n  if (key === \"default\" || key === \"__esModule\") return;\n  if (key in exports && exports[key] === _types[key]) return;\n  exports[key] = _types[key];\n});\n\nvar _constructors = require(\"./constructors\");\n\nObject.keys(_constructors).forEach(function (key) {\n  if (key === \"default\" || key === \"__esModule\") return;\n  if (key in exports && exports[key] === _constructors[key]) return;\n  exports[key] = _constructors[key];\n});\n\nvar _guards = require(\"./guards\");\n\nObject.keys(_guards).forEach(function (key) {\n  if (key === \"default\" || key === \"__esModule\") return;\n  if (key in exports && exports[key] === _guards[key]) return;\n  exports[key] = _guards[key];\n});","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _processor = _interopRequireDefault(require(\"./processor\"));\n\nvar selectors = _interopRequireWildcard(require(\"./selectors\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar parser = function parser(processor) {\n  return new _processor[\"default\"](processor);\n};\n\nObject.assign(parser, selectors);\ndelete parser.__esModule;\nvar _default = parser;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>escapeCommas\n});\nfunction escapeCommas(className) {\n    return className.replace(/\\\\,/g, \"\\\\2c \");\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    parseColor: ()=>parseColor,\n    formatColor: ()=>formatColor\n});\nconst _colorName = /*#__PURE__*/ _interopRequireDefault(require(\"color-name\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nlet HEX = /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\nlet SHORT_HEX = /^#([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\nlet VALUE = /(?:\\d+|\\d*\\.\\d+)%?/;\nlet SEP = /(?:\\s*,\\s*|\\s+)/;\nlet ALPHA_SEP = /\\s*[,/]\\s*/;\nlet CUSTOM_PROPERTY = /var\\(--(?:[^ )]*?)\\)/;\nlet RGB = new RegExp(`^(rgb)a?\\\\(\\\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nlet HSL = new RegExp(`^(hsl)a?\\\\(\\\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nfunction parseColor(value, { loose =false  } = {}) {\n    var ref, ref1;\n    if (typeof value !== \"string\") {\n        return null;\n    }\n    value = value.trim();\n    if (value === \"transparent\") {\n        return {\n            mode: \"rgb\",\n            color: [\n                \"0\",\n                \"0\",\n                \"0\"\n            ],\n            alpha: \"0\"\n        };\n    }\n    if (value in _colorName.default) {\n        return {\n            mode: \"rgb\",\n            color: _colorName.default[value].map((v)=>v.toString())\n        };\n    }\n    let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[\n            \"#\",\n            r,\n            r,\n            g,\n            g,\n            b,\n            b,\n            a ? a + a : \"\"\n        ].join(\"\")).match(HEX);\n    if (hex !== null) {\n        return {\n            mode: \"rgb\",\n            color: [\n                parseInt(hex[1], 16),\n                parseInt(hex[2], 16),\n                parseInt(hex[3], 16)\n            ].map((v)=>v.toString()),\n            alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined\n        };\n    }\n    var ref2;\n    let match = (ref2 = value.match(RGB)) !== null && ref2 !== void 0 ? ref2 : value.match(HSL);\n    if (match === null) {\n        return null;\n    }\n    let color = [\n        match[2],\n        match[3],\n        match[4]\n    ].filter(Boolean).map((v)=>v.toString());\n    if (!loose && color.length !== 3) {\n        return null;\n    }\n    if (color.length < 3 && !color.some((part)=>/^var\\(.*?\\)$/.test(part))) {\n        return null;\n    }\n    return {\n        mode: match[1],\n        color,\n        alpha: (ref = match[5]) === null || ref === void 0 ? void 0 : (ref1 = ref.toString) === null || ref1 === void 0 ? void 0 : ref1.call(ref)\n    };\n}\nfunction formatColor({ mode , color , alpha  }) {\n    let hasAlpha = alpha !== undefined;\n    return `${mode}(${color.join(\" \")}${hasAlpha ? ` / ${alpha}` : \"\"})`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    withAlphaValue: ()=>withAlphaValue,\n    default: ()=>withAlphaVariable\n});\nconst _color = require(\"./color\");\nfunction withAlphaValue(color, alphaValue, defaultValue) {\n    if (typeof color === \"function\") {\n        return color({\n            opacityValue: alphaValue\n        });\n    }\n    let parsed = (0, _color.parseColor)(color, {\n        loose: true\n    });\n    if (parsed === null) {\n        return defaultValue;\n    }\n    return (0, _color.formatColor)({\n        ...parsed,\n        alpha: alphaValue\n    });\n}\nfunction withAlphaVariable({ color , property , variable  }) {\n    let properties = [].concat(property);\n    if (typeof color === \"function\") {\n        return {\n            [variable]: \"1\",\n            ...Object.fromEntries(properties.map((p)=>{\n                return [\n                    p,\n                    color({\n                        opacityVariable: variable,\n                        opacityValue: `var(${variable})`\n                    })\n                ];\n            }))\n        };\n    }\n    const parsed = (0, _color.parseColor)(color);\n    if (parsed === null) {\n        return Object.fromEntries(properties.map((p)=>[\n                p,\n                color\n            ]));\n    }\n    if (parsed.alpha !== undefined) {\n        // Has an alpha value, return color as-is\n        return Object.fromEntries(properties.map((p)=>[\n                p,\n                color\n            ]));\n    }\n    return {\n        [variable]: \"1\",\n        ...Object.fromEntries(properties.map((p)=>{\n            return [\n                p,\n                (0, _color.formatColor)({\n                    ...parsed,\n                    alpha: `var(${variable})`\n                })\n            ];\n        }))\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    pattern: ()=>pattern,\n    withoutCapturing: ()=>withoutCapturing,\n    any: ()=>any,\n    optional: ()=>optional,\n    zeroOrMore: ()=>zeroOrMore,\n    nestedBrackets: ()=>nestedBrackets,\n    escape: ()=>escape\n});\nconst REGEX_SPECIAL = /[\\\\^$.*+?()[\\]{}|]/g;\nconst REGEX_HAS_SPECIAL = RegExp(REGEX_SPECIAL.source);\n/**\n * @param {string|RegExp|Array<string|RegExp>} source\n */ function toSource(source) {\n    source = Array.isArray(source) ? source : [\n        source\n    ];\n    source = source.map((item)=>item instanceof RegExp ? item.source : item);\n    return source.join(\"\");\n}\nfunction pattern(source) {\n    return new RegExp(toSource(source), \"g\");\n}\nfunction withoutCapturing(source) {\n    return new RegExp(`(?:${toSource(source)})`, \"g\");\n}\nfunction any(sources) {\n    return `(?:${sources.map(toSource).join(\"|\")})`;\n}\nfunction optional(source) {\n    return `(?:${toSource(source)})?`;\n}\nfunction zeroOrMore(source) {\n    return `(?:${toSource(source)})*`;\n}\nfunction nestedBrackets(open, close, depth = 1) {\n    return withoutCapturing([\n        escape(open),\n        /[^\\s]*/,\n        depth === 1 ? `[^${escape(open)}${escape(close)}\\s]*` : any([\n            `[^${escape(open)}${escape(close)}\\s]*`,\n            nestedBrackets(open, close, depth - 1)\n        ]),\n        /[^\\s]*/,\n        escape(close), \n    ]);\n}\nfunction escape(string) {\n    return string && REGEX_HAS_SPECIAL.test(string) ? string.replace(REGEX_SPECIAL, \"\\\\$&\") : string || \"\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"splitAtTopLevelOnly\", {\n    enumerable: true,\n    get: ()=>splitAtTopLevelOnly\n});\nconst _regex = /*#__PURE__*/ _interopRequireWildcard(require(\"../lib/regex\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n    if (typeof WeakMap !== \"function\") return null;\n    var cacheBabelInterop = new WeakMap();\n    var cacheNodeInterop = new WeakMap();\n    return (_getRequireWildcardCache = function(nodeInterop) {\n        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n    })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n    if (!nodeInterop && obj && obj.__esModule) {\n        return obj;\n    }\n    if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n        return {\n            default: obj\n        };\n    }\n    var cache = _getRequireWildcardCache(nodeInterop);\n    if (cache && cache.has(obj)) {\n        return cache.get(obj);\n    }\n    var newObj = {};\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n    for(var key in obj){\n        if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n            if (desc && (desc.get || desc.set)) {\n                Object.defineProperty(newObj, key, desc);\n            } else {\n                newObj[key] = obj[key];\n            }\n        }\n    }\n    newObj.default = obj;\n    if (cache) {\n        cache.set(obj, newObj);\n    }\n    return newObj;\n}\nfunction* splitAtTopLevelOnly(input, separator) {\n    let SPECIALS = new RegExp(`[(){}\\\\[\\\\]${_regex.escape(separator)}]`, \"g\");\n    let depth = 0;\n    let lastIndex = 0;\n    let found = false;\n    let separatorIndex = 0;\n    let separatorStart = 0;\n    let separatorLength = separator.length;\n    // Find all paren-like things & character\n    // And only split on commas if they're top-level\n    for (let match of input.matchAll(SPECIALS)){\n        let matchesSeparator = match[0] === separator[separatorIndex];\n        let atEndOfSeparator = separatorIndex === separatorLength - 1;\n        let matchesFullSeparator = matchesSeparator && atEndOfSeparator;\n        if (match[0] === \"(\") depth++;\n        if (match[0] === \")\") depth--;\n        if (match[0] === \"[\") depth++;\n        if (match[0] === \"]\") depth--;\n        if (match[0] === \"{\") depth++;\n        if (match[0] === \"}\") depth--;\n        if (matchesSeparator && depth === 0) {\n            if (separatorStart === 0) {\n                separatorStart = match.index;\n            }\n            separatorIndex++;\n        }\n        if (matchesFullSeparator && depth === 0) {\n            found = true;\n            yield input.substring(lastIndex, separatorStart);\n            lastIndex = separatorStart + separatorLength;\n        }\n        if (separatorIndex === separatorLength) {\n            separatorIndex = 0;\n            separatorStart = 0;\n        }\n    }\n    // Provide the last segment of the string if available\n    // Otherwise the whole string since no `char`s were found\n    // This mirrors the behavior of string.split()\n    if (found) {\n        yield input.substring(lastIndex);\n    } else {\n        yield input;\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    parseBoxShadowValue: ()=>parseBoxShadowValue,\n    formatBoxShadowValue: ()=>formatBoxShadowValue\n});\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet KEYWORDS = new Set([\n    \"inset\",\n    \"inherit\",\n    \"initial\",\n    \"revert\",\n    \"unset\"\n]);\nlet SPACE = /\\ +(?![^(]*\\))/g // Similar to the one above, but with spaces instead.\n;\nlet LENGTH = /^-?(\\d+|\\.\\d+)(.*?)$/g;\nfunction parseBoxShadowValue(input) {\n    let shadows = Array.from((0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, \",\"));\n    return shadows.map((shadow)=>{\n        let value = shadow.trim();\n        let result = {\n            raw: value\n        };\n        let parts = value.split(SPACE);\n        let seen = new Set();\n        for (let part of parts){\n            // Reset index, since the regex is stateful.\n            LENGTH.lastIndex = 0;\n            // Keyword\n            if (!seen.has(\"KEYWORD\") && KEYWORDS.has(part)) {\n                result.keyword = part;\n                seen.add(\"KEYWORD\");\n            } else if (LENGTH.test(part)) {\n                if (!seen.has(\"X\")) {\n                    result.x = part;\n                    seen.add(\"X\");\n                } else if (!seen.has(\"Y\")) {\n                    result.y = part;\n                    seen.add(\"Y\");\n                } else if (!seen.has(\"BLUR\")) {\n                    result.blur = part;\n                    seen.add(\"BLUR\");\n                } else if (!seen.has(\"SPREAD\")) {\n                    result.spread = part;\n                    seen.add(\"SPREAD\");\n                }\n            } else {\n                if (!result.color) {\n                    result.color = part;\n                } else {\n                    if (!result.unknown) result.unknown = [];\n                    result.unknown.push(part);\n                }\n            }\n        }\n        // Check if valid\n        result.valid = result.x !== undefined && result.y !== undefined;\n        return result;\n    });\n}\nfunction formatBoxShadowValue(shadows) {\n    return shadows.map((shadow)=>{\n        if (!shadow.valid) {\n            return shadow.raw;\n        }\n        return [\n            shadow.keyword,\n            shadow.x,\n            shadow.y,\n            shadow.blur,\n            shadow.spread,\n            shadow.color\n        ].filter(Boolean).join(\" \");\n    }).join(\", \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    normalize: ()=>normalize,\n    url: ()=>url,\n    number: ()=>number,\n    percentage: ()=>percentage,\n    length: ()=>length,\n    lineWidth: ()=>lineWidth,\n    shadow: ()=>shadow,\n    color: ()=>color,\n    image: ()=>image,\n    gradient: ()=>gradient,\n    position: ()=>position,\n    familyName: ()=>familyName,\n    genericName: ()=>genericName,\n    absoluteSize: ()=>absoluteSize,\n    relativeSize: ()=>relativeSize\n});\nconst _color = require(\"./color\");\nconst _parseBoxShadowValue = require(\"./parseBoxShadowValue\");\nlet cssFunctions = [\n    \"min\",\n    \"max\",\n    \"clamp\",\n    \"calc\"\n];\n// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types\nlet COMMA = /,(?![^(]*\\))/g // Comma separator that is not located between brackets. E.g.: `cubiz-bezier(a, b, c)` these don't count.\n;\nlet UNDERSCORE = /_(?![^(]*\\))/g // Underscore separator that is not located between brackets. E.g.: `rgba(255,_255,_255)_black` these don't count.\n;\nfunction normalize(value, isRoot = true) {\n    // Keep raw strings if it starts with `url(`\n    if (value.includes(\"url(\")) {\n        return value.split(/(url\\(.*?\\))/g).filter(Boolean).map((part)=>{\n            if (/^url\\(.*?\\)$/.test(part)) {\n                return part;\n            }\n            return normalize(part, false);\n        }).join(\"\");\n    }\n    // Convert `_` to ` `, except for escaped underscores `\\_`\n    value = value.replace(/([^\\\\])_+/g, (fullMatch, characterBefore)=>characterBefore + \" \".repeat(fullMatch.length - 1)).replace(/^_/g, \" \").replace(/\\\\_/g, \"_\");\n    // Remove leftover whitespace\n    if (isRoot) {\n        value = value.trim();\n    }\n    // Add spaces around operators inside math functions like calc() that do not follow an operator\n    // or '('.\n    value = value.replace(/(calc|min|max|clamp)\\(.+\\)/g, (match)=>{\n        return match.replace(/(-?\\d*\\.?\\d(?!\\b-.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, \"$1 $2 \");\n    });\n    return value;\n}\nfunction url(value) {\n    return value.startsWith(\"url(\");\n}\nfunction number(value) {\n    return !isNaN(Number(value)) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?`).test(value));\n}\nfunction percentage(value) {\n    return value.split(UNDERSCORE).every((part)=>{\n        return /%$/g.test(part) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?%`).test(part));\n    });\n}\nlet lengthUnits = [\n    \"cm\",\n    \"mm\",\n    \"Q\",\n    \"in\",\n    \"pc\",\n    \"pt\",\n    \"px\",\n    \"em\",\n    \"ex\",\n    \"ch\",\n    \"rem\",\n    \"lh\",\n    \"vw\",\n    \"vh\",\n    \"vmin\",\n    \"vmax\", \n];\nlet lengthUnitsPattern = `(?:${lengthUnits.join(\"|\")})`;\nfunction length(value) {\n    return value.split(UNDERSCORE).every((part)=>{\n        return part === \"0\" || new RegExp(`${lengthUnitsPattern}$`).test(part) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?${lengthUnitsPattern}`).test(part));\n    });\n}\nlet lineWidths = new Set([\n    \"thin\",\n    \"medium\",\n    \"thick\"\n]);\nfunction lineWidth(value) {\n    return lineWidths.has(value);\n}\nfunction shadow(value) {\n    let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));\n    for (let parsedShadow of parsedShadows){\n        if (!parsedShadow.valid) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction color(value) {\n    let colors = 0;\n    let result = value.split(UNDERSCORE).every((part)=>{\n        part = normalize(part);\n        if (part.startsWith(\"var(\")) return true;\n        if ((0, _color.parseColor)(part, {\n            loose: true\n        }) !== null) return colors++, true;\n        return false;\n    });\n    if (!result) return false;\n    return colors > 0;\n}\nfunction image(value) {\n    let images = 0;\n    let result = value.split(COMMA).every((part)=>{\n        part = normalize(part);\n        if (part.startsWith(\"var(\")) return true;\n        if (url(part) || gradient(part) || [\n            \"element(\",\n            \"image(\",\n            \"cross-fade(\",\n            \"image-set(\"\n        ].some((fn)=>part.startsWith(fn))) {\n            images++;\n            return true;\n        }\n        return false;\n    });\n    if (!result) return false;\n    return images > 0;\n}\nlet gradientTypes = new Set([\n    \"linear-gradient\",\n    \"radial-gradient\",\n    \"repeating-linear-gradient\",\n    \"repeating-radial-gradient\",\n    \"conic-gradient\", \n]);\nfunction gradient(value) {\n    value = normalize(value);\n    for (let type of gradientTypes){\n        if (value.startsWith(`${type}(`)) {\n            return true;\n        }\n    }\n    return false;\n}\nlet validPositions = new Set([\n    \"center\",\n    \"top\",\n    \"right\",\n    \"bottom\",\n    \"left\"\n]);\nfunction position(value) {\n    let positions = 0;\n    let result = value.split(UNDERSCORE).every((part)=>{\n        part = normalize(part);\n        if (part.startsWith(\"var(\")) return true;\n        if (validPositions.has(part) || length(part) || percentage(part)) {\n            positions++;\n            return true;\n        }\n        return false;\n    });\n    if (!result) return false;\n    return positions > 0;\n}\nfunction familyName(value) {\n    let fonts = 0;\n    let result = value.split(COMMA).every((part)=>{\n        part = normalize(part);\n        if (part.startsWith(\"var(\")) return true;\n        // If it contains spaces, then it should be quoted\n        if (part.includes(\" \")) {\n            if (!/(['\"])([^\"']+)\\1/g.test(part)) {\n                return false;\n            }\n        }\n        // If it starts with a number, it's invalid\n        if (/^\\d/g.test(part)) {\n            return false;\n        }\n        fonts++;\n        return true;\n    });\n    if (!result) return false;\n    return fonts > 0;\n}\nlet genericNames = new Set([\n    \"serif\",\n    \"sans-serif\",\n    \"monospace\",\n    \"cursive\",\n    \"fantasy\",\n    \"system-ui\",\n    \"ui-serif\",\n    \"ui-sans-serif\",\n    \"ui-monospace\",\n    \"ui-rounded\",\n    \"math\",\n    \"emoji\",\n    \"fangsong\", \n]);\nfunction genericName(value) {\n    return genericNames.has(value);\n}\nlet absoluteSizes = new Set([\n    \"xx-small\",\n    \"x-small\",\n    \"small\",\n    \"medium\",\n    \"large\",\n    \"x-large\",\n    \"x-large\",\n    \"xxx-large\", \n]);\nfunction absoluteSize(value) {\n    return absoluteSizes.has(value);\n}\nlet relativeSizes = new Set([\n    \"larger\",\n    \"smaller\"\n]);\nfunction relativeSize(value) {\n    return relativeSizes.has(value);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    updateAllClasses: ()=>updateAllClasses,\n    asValue: ()=>asValue,\n    parseColorFormat: ()=>parseColorFormat,\n    asColor: ()=>asColor,\n    asLookupValue: ()=>asLookupValue,\n    coerceValue: ()=>coerceValue\n});\nconst _postcssSelectorParser = /*#__PURE__*/ _interopRequireDefault(require(\"postcss-selector-parser\"));\nconst _escapeCommas = /*#__PURE__*/ _interopRequireDefault(require(\"./escapeCommas\"));\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _dataTypes = require(\"./dataTypes\");\nconst _negateValue = /*#__PURE__*/ _interopRequireDefault(require(\"./negateValue\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction updateAllClasses(selectors, updateClass) {\n    let parser = (0, _postcssSelectorParser.default)((selectors)=>{\n        selectors.walkClasses((sel)=>{\n            let updatedClass = updateClass(sel.value);\n            sel.value = updatedClass;\n            if (sel.raws && sel.raws.value) {\n                sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);\n            }\n        });\n    });\n    let result = parser.processSync(selectors);\n    return result;\n}\nfunction resolveArbitraryValue(modifier, validate) {\n    if (!isArbitraryValue(modifier)) {\n        return undefined;\n    }\n    let value = modifier.slice(1, -1);\n    if (!validate(value)) {\n        return undefined;\n    }\n    return (0, _dataTypes.normalize)(value);\n}\nfunction asNegativeValue(modifier, lookup = {}, validate) {\n    let positiveValue = lookup[modifier];\n    if (positiveValue !== undefined) {\n        return (0, _negateValue.default)(positiveValue);\n    }\n    if (isArbitraryValue(modifier)) {\n        let resolved = resolveArbitraryValue(modifier, validate);\n        if (resolved === undefined) {\n            return undefined;\n        }\n        return (0, _negateValue.default)(resolved);\n    }\n}\nfunction asValue(modifier, options = {}, { validate =()=>true  } = {}) {\n    var ref;\n    let value = (ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier];\n    if (value !== undefined) {\n        return value;\n    }\n    if (options.supportsNegativeValues && modifier.startsWith(\"-\")) {\n        return asNegativeValue(modifier.slice(1), options.values, validate);\n    }\n    return resolveArbitraryValue(modifier, validate);\n}\nfunction isArbitraryValue(input) {\n    return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\nfunction splitAlpha(modifier) {\n    let slashIdx = modifier.lastIndexOf(\"/\");\n    if (slashIdx === -1 || slashIdx === modifier.length - 1) {\n        return [\n            modifier\n        ];\n    }\n    return [\n        modifier.slice(0, slashIdx),\n        modifier.slice(slashIdx + 1)\n    ];\n}\nfunction parseColorFormat(value) {\n    if (typeof value === \"string\" && value.includes(\"<alpha-value>\")) {\n        let oldValue = value;\n        return ({ opacityValue =1  })=>oldValue.replace(\"<alpha-value>\", opacityValue);\n    }\n    return value;\n}\nfunction asColor(modifier, options = {}, { tailwindConfig ={}  } = {}) {\n    var ref;\n    if (((ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier]) !== undefined) {\n        var ref1;\n        return parseColorFormat((ref1 = options.values) === null || ref1 === void 0 ? void 0 : ref1[modifier]);\n    }\n    let [color, alpha] = splitAlpha(modifier);\n    if (alpha !== undefined) {\n        var ref2, ref3, ref4;\n        var ref5;\n        let normalizedColor = (ref5 = (ref2 = options.values) === null || ref2 === void 0 ? void 0 : ref2[color]) !== null && ref5 !== void 0 ? ref5 : isArbitraryValue(color) ? color.slice(1, -1) : undefined;\n        if (normalizedColor === undefined) {\n            return undefined;\n        }\n        normalizedColor = parseColorFormat(normalizedColor);\n        if (isArbitraryValue(alpha)) {\n            return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, alpha.slice(1, -1));\n        }\n        if (((ref3 = tailwindConfig.theme) === null || ref3 === void 0 ? void 0 : (ref4 = ref3.opacity) === null || ref4 === void 0 ? void 0 : ref4[alpha]) === undefined) {\n            return undefined;\n        }\n        return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);\n    }\n    return asValue(modifier, options, {\n        validate: _dataTypes.color\n    });\n}\nfunction asLookupValue(modifier, options = {}) {\n    var ref;\n    return (ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier];\n}\nfunction guess(validate) {\n    return (modifier, options)=>{\n        return asValue(modifier, options, {\n            validate\n        });\n    };\n}\nlet typeMap = {\n    any: asValue,\n    color: asColor,\n    url: guess(_dataTypes.url),\n    image: guess(_dataTypes.image),\n    length: guess(_dataTypes.length),\n    percentage: guess(_dataTypes.percentage),\n    position: guess(_dataTypes.position),\n    lookup: asLookupValue,\n    \"generic-name\": guess(_dataTypes.genericName),\n    \"family-name\": guess(_dataTypes.familyName),\n    number: guess(_dataTypes.number),\n    \"line-width\": guess(_dataTypes.lineWidth),\n    \"absolute-size\": guess(_dataTypes.absoluteSize),\n    \"relative-size\": guess(_dataTypes.relativeSize),\n    shadow: guess(_dataTypes.shadow)\n};\nlet supportedTypes = Object.keys(typeMap);\nfunction splitAtFirst(input, delim) {\n    let idx = input.indexOf(delim);\n    if (idx === -1) return [\n        undefined,\n        input\n    ];\n    return [\n        input.slice(0, idx),\n        input.slice(idx + 1)\n    ];\n}\nfunction coerceValue(types, modifier, options, tailwindConfig) {\n    if (isArbitraryValue(modifier)) {\n        let arbitraryValue = modifier.slice(1, -1);\n        let [explicitType, value] = splitAtFirst(arbitraryValue, \":\");\n        // It could be that this resolves to `url(https` which is not a valid\n        // identifier. We currently only support \"simple\" words with dashes or\n        // underscores. E.g.: family-name\n        if (!/^[\\w-_]+$/g.test(explicitType)) {\n            value = arbitraryValue;\n        } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {\n            return [];\n        }\n        if (value.length > 0 && supportedTypes.includes(explicitType)) {\n            return [\n                asValue(`[${value}]`, options),\n                explicitType\n            ];\n        }\n    }\n    // Find first matching type\n    for (let type of [].concat(types)){\n        let result = typeMap[type](modifier, options, {\n            tailwindConfig\n        });\n        if (result !== undefined) return [\n            result,\n            type\n        ];\n    }\n    return [];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>toColorValue\n});\nfunction toColorValue(maybeFunction) {\n    return typeof maybeFunction === \"function\" ? maybeFunction({}) : maybeFunction;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>resolveConfig\n});\nconst _negateValue = /*#__PURE__*/ _interopRequireDefault(require(\"./negateValue\"));\nconst _corePluginList = /*#__PURE__*/ _interopRequireDefault(require(\"../corePluginList\"));\nconst _configurePlugins = /*#__PURE__*/ _interopRequireDefault(require(\"./configurePlugins\"));\nconst _defaultConfigStub = /*#__PURE__*/ _interopRequireDefault(require(\"../../stubs/defaultConfig.stub\"));\nconst _colors = /*#__PURE__*/ _interopRequireDefault(require(\"../public/colors\"));\nconst _defaults = require(\"./defaults\");\nconst _toPath = require(\"./toPath\");\nconst _normalizeConfig = require(\"./normalizeConfig\");\nconst _isPlainObject = /*#__PURE__*/ _interopRequireDefault(require(\"./isPlainObject\"));\nconst _cloneDeep = require(\"./cloneDeep\");\nconst _pluginUtils = require(\"./pluginUtils\");\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _toColorValue = /*#__PURE__*/ _interopRequireDefault(require(\"./toColorValue\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction isFunction(input) {\n    return typeof input === \"function\";\n}\nfunction isObject(input) {\n    return typeof input === \"object\" && input !== null;\n}\nfunction mergeWith(target, ...sources) {\n    let customizer = sources.pop();\n    for (let source of sources){\n        for(let k in source){\n            let merged = customizer(target[k], source[k]);\n            if (merged === undefined) {\n                if (isObject(target[k]) && isObject(source[k])) {\n                    target[k] = mergeWith(target[k], source[k], customizer);\n                } else {\n                    target[k] = source[k];\n                }\n            } else {\n                target[k] = merged;\n            }\n        }\n    }\n    return target;\n}\nconst configUtils = {\n    colors: _colors.default,\n    negative (scale) {\n        // TODO: Log that this function isn't really needed anymore?\n        return Object.keys(scale).filter((key)=>scale[key] !== \"0\").reduce((negativeScale, key)=>{\n            let negativeValue = (0, _negateValue.default)(scale[key]);\n            if (negativeValue !== undefined) {\n                negativeScale[`-${key}`] = negativeValue;\n            }\n            return negativeScale;\n        }, {});\n    },\n    breakpoints (screens) {\n        return Object.keys(screens).filter((key)=>typeof screens[key] === \"string\").reduce((breakpoints, key)=>({\n                ...breakpoints,\n                [`screen-${key}`]: screens[key]\n            }), {});\n    }\n};\nfunction value(valueToResolve, ...args) {\n    return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;\n}\nfunction collectExtends(items) {\n    return items.reduce((merged, { extend  })=>{\n        return mergeWith(merged, extend, (mergedValue, extendValue)=>{\n            if (mergedValue === undefined) {\n                return [\n                    extendValue\n                ];\n            }\n            if (Array.isArray(mergedValue)) {\n                return [\n                    extendValue,\n                    ...mergedValue\n                ];\n            }\n            return [\n                extendValue,\n                mergedValue\n            ];\n        });\n    }, {});\n}\nfunction mergeThemes(themes) {\n    return {\n        ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),\n        // In order to resolve n config objects, we combine all of their `extend` properties\n        // into arrays instead of objects so they aren't overridden.\n        extend: collectExtends(themes)\n    };\n}\nfunction mergeExtensionCustomizer(merged, value) {\n    // When we have an array of objects, we do want to merge it\n    if (Array.isArray(merged) && isObject(merged[0])) {\n        return merged.concat(value);\n    }\n    // When the incoming value is an array, and the existing config is an object, prepend the existing object\n    if (Array.isArray(value) && isObject(value[0]) && isObject(merged)) {\n        return [\n            merged,\n            ...value\n        ];\n    }\n    // Override arrays (for example for font-families, box-shadows, ...)\n    if (Array.isArray(value)) {\n        return value;\n    }\n    // Execute default behaviour\n    return undefined;\n}\nfunction mergeExtensions({ extend , ...theme }) {\n    return mergeWith(theme, extend, (themeValue, extensions)=>{\n        // The `extend` property is an array, so we need to check if it contains any functions\n        if (!isFunction(themeValue) && !extensions.some(isFunction)) {\n            return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);\n        }\n        return (resolveThemePath, utils)=>mergeWith({}, ...[\n                themeValue,\n                ...extensions\n            ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);\n    });\n}\n/**\n *\n * @param {string} key\n * @return {Iterable<string[] & {alpha: string | undefined}>}\n */ function* toPaths(key) {\n    let path = (0, _toPath.toPath)(key);\n    if (path.length === 0) {\n        return;\n    }\n    yield path;\n    if (Array.isArray(key)) {\n        return;\n    }\n    let pattern = /^(.*?)\\s*\\/\\s*([^/]+)$/;\n    let matches = key.match(pattern);\n    if (matches !== null) {\n        let [, prefix, alpha] = matches;\n        let newPath = (0, _toPath.toPath)(prefix);\n        newPath.alpha = alpha;\n        yield newPath;\n    }\n}\nfunction resolveFunctionKeys(object) {\n    // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]\n    const resolvePath = (key, defaultValue)=>{\n        for (const path of toPaths(key)){\n            let index = 0;\n            let val = object;\n            while(val !== undefined && val !== null && index < path.length){\n                val = val[path[index++]];\n                let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);\n                val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;\n            }\n            if (val !== undefined) {\n                if (path.alpha !== undefined) {\n                    let normalized = (0, _pluginUtils.parseColorFormat)(val);\n                    return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));\n                }\n                if ((0, _isPlainObject.default)(val)) {\n                    return (0, _cloneDeep.cloneDeep)(val);\n                }\n                return val;\n            }\n        }\n        return defaultValue;\n    };\n    Object.assign(resolvePath, {\n        theme: resolvePath,\n        ...configUtils\n    });\n    return Object.keys(object).reduce((resolved, key)=>{\n        resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];\n        return resolved;\n    }, {});\n}\nfunction extractPluginConfigs(configs) {\n    let allConfigs = [];\n    configs.forEach((config)=>{\n        allConfigs = [\n            ...allConfigs,\n            config\n        ];\n        var ref;\n        const plugins = (ref = config === null || config === void 0 ? void 0 : config.plugins) !== null && ref !== void 0 ? ref : [];\n        if (plugins.length === 0) {\n            return;\n        }\n        plugins.forEach((plugin)=>{\n            if (plugin.__isOptionsFunction) {\n                plugin = plugin();\n            }\n            var ref;\n            allConfigs = [\n                ...allConfigs,\n                ...extractPluginConfigs([\n                    (ref = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && ref !== void 0 ? ref : {}\n                ])\n            ];\n        });\n    });\n    return allConfigs;\n}\nfunction resolveCorePlugins(corePluginConfigs) {\n    const result = [\n        ...corePluginConfigs\n    ].reduceRight((resolved, corePluginConfig)=>{\n        if (isFunction(corePluginConfig)) {\n            return corePluginConfig({\n                corePlugins: resolved\n            });\n        }\n        return (0, _configurePlugins.default)(corePluginConfig, resolved);\n    }, _corePluginList.default);\n    return result;\n}\nfunction resolvePluginLists(pluginLists) {\n    const result = [\n        ...pluginLists\n    ].reduceRight((resolved, pluginList)=>{\n        return [\n            ...resolved,\n            ...pluginList\n        ];\n    }, []);\n    return result;\n}\nfunction resolveConfig(configs) {\n    let allConfigs = [\n        ...extractPluginConfigs(configs),\n        {\n            prefix: \"\",\n            important: false,\n            separator: \":\",\n            variantOrder: _defaultConfigStub.default.variantOrder\n        }, \n    ];\n    var ref, ref1;\n    return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({\n        theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{\n            return (ref = t === null || t === void 0 ? void 0 : t.theme) !== null && ref !== void 0 ? ref : {};\n        })))),\n        corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),\n        plugins: resolvePluginLists(configs.map((c)=>{\n            return (ref1 = c === null || c === void 0 ? void 0 : c.plugins) !== null && ref1 !== void 0 ? ref1 : [];\n        }))\n    }, ...allConfigs));\n}\n","export default {\n  yellow: (s) => s,\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    flagEnabled: ()=>flagEnabled,\n    issueFlagNotices: ()=>issueFlagNotices,\n    default: ()=>_default\n});\nconst _picocolors = /*#__PURE__*/ _interopRequireDefault(require(\"picocolors\"));\nconst _log = /*#__PURE__*/ _interopRequireDefault(require(\"./util/log\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nlet defaults = {\n    optimizeUniversalDefaults: false\n};\nlet featureFlags = {\n    future: [\n        \"hoverOnlyWhenSupported\",\n        \"respectDefaultRingColorOpacity\"\n    ],\n    experimental: [\n        \"optimizeUniversalDefaults\",\n        \"matchVariant\" /* , 'variantGrouping' */ \n    ]\n};\nfunction flagEnabled(config, flag) {\n    if (featureFlags.future.includes(flag)) {\n        var ref;\n        var ref1, ref2;\n        return config.future === \"all\" || ((ref2 = (ref1 = config === null || config === void 0 ? void 0 : (ref = config.future) === null || ref === void 0 ? void 0 : ref[flag]) !== null && ref1 !== void 0 ? ref1 : defaults[flag]) !== null && ref2 !== void 0 ? ref2 : false);\n    }\n    if (featureFlags.experimental.includes(flag)) {\n        var ref3;\n        var ref4, ref5;\n        return config.experimental === \"all\" || ((ref5 = (ref4 = config === null || config === void 0 ? void 0 : (ref3 = config.experimental) === null || ref3 === void 0 ? void 0 : ref3[flag]) !== null && ref4 !== void 0 ? ref4 : defaults[flag]) !== null && ref5 !== void 0 ? ref5 : false);\n    }\n    return false;\n}\nfunction experimentalFlagsEnabled(config) {\n    if (config.experimental === \"all\") {\n        return featureFlags.experimental;\n    }\n    var ref;\n    return Object.keys((ref = config === null || config === void 0 ? void 0 : config.experimental) !== null && ref !== void 0 ? ref : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);\n}\nfunction issueFlagNotices(config) {\n    if (process.env.JEST_WORKER_ID !== undefined) {\n        return;\n    }\n    if (experimentalFlagsEnabled(config).length > 0) {\n        let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(\", \");\n        _log.default.warn(\"experimental-flags-enabled\", [\n            `You have enabled experimental features: ${changes}`,\n            \"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.\", \n        ]);\n    }\n}\nconst _default = featureFlags;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>getAllConfigs\n});\nconst _defaultConfigStubJs = /*#__PURE__*/ _interopRequireDefault(require(\"../../stubs/defaultConfig.stub.js\"));\nconst _featureFlags = require(\"../featureFlags\");\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction getAllConfigs(config) {\n    var ref;\n    const configs = ((ref = config === null || config === void 0 ? void 0 : config.presets) !== null && ref !== void 0 ? ref : [\n        _defaultConfigStubJs.default\n    ]).slice().reverse().flatMap((preset)=>getAllConfigs(typeof preset === \"function\" ? preset() : preset));\n    const features = {\n        // Add experimental configs here...\n        respectDefaultRingColorOpacity: {\n            theme: {\n                ringColor: {\n                    DEFAULT: \"#3b82f67f\"\n                }\n            }\n        }\n    };\n    const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);\n    return [\n        config,\n        ...experimentals,\n        ...configs\n    ];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>resolveConfig\n});\nconst _resolveConfig = /*#__PURE__*/ _interopRequireDefault(require(\"../util/resolveConfig\"));\nconst _getAllConfigs = /*#__PURE__*/ _interopRequireDefault(require(\"../util/getAllConfigs\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction resolveConfig(...configs) {\n    let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);\n    return (0, _resolveConfig.default)([\n        ...configs,\n        ...defaultConfigs\n    ]);\n}\n","let resolveConfig = require('./lib/public/resolve-config')\nmodule.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default\n","export type {\n  FontOptions as Font,\n  Weight as FontWeight,\n  FontStyle,\n} from './font.js'\nexport type { Locale } from './language.js'\n\nexport * from './satori.js'\nexport { default } from './satori.js'\nexport { init } from './yoga.js'\n","import type { ReactNode, ReactElement } from 'react'\nimport LineBreaker from 'linebreak'\n\nimport CssDimension from './vendor/parse-css-dimension/index.js'\n\nexport function isReactElement(node: ReactNode): node is ReactElement {\n  const type = typeof node\n  if (\n    type === 'number' ||\n    type === 'bigint' ||\n    type === 'string' ||\n    type === 'boolean'\n  ) {\n    return false\n  }\n  return true\n}\n\nexport function isClass(f: Function) {\n  return /^class\\s/.test(f.toString())\n}\n\nexport function isForwardRefComponent(type: any) {\n  return type && type.$$typeof === Symbol.for('react.forward_ref')\n}\n\nexport function isReactComponent(type: any) {\n  return typeof type === 'function' || isForwardRefComponent(type)\n}\n\nexport function hasDangerouslySetInnerHTMLProp(props: any) {\n  return 'dangerouslySetInnerHTML' in props\n}\n\nexport function normalizeChildren(children: any) {\n  const flattend =\n    typeof children === 'undefined' ? [] : [].concat(children).flat(Infinity)\n\n  const res = []\n  for (let i = 0; i < flattend.length; i++) {\n    let value = flattend[i]\n    if (\n      typeof value === 'undefined' ||\n      typeof value === 'boolean' ||\n      value === null\n    ) {\n      continue\n    }\n    if (typeof value === 'number') {\n      value = String(value)\n    }\n    if (\n      typeof value === 'string' &&\n      res.length &&\n      typeof res[res.length - 1] === 'string'\n    ) {\n      res[res.length - 1] += value\n    } else {\n      res.push(value)\n    }\n  }\n  return res\n}\n\nexport function lengthToNumber(\n  length: string | number,\n  baseFontSize: number,\n  baseLength: number,\n  inheritedStyle: Record<string, string | number>,\n  percentage = false\n): number | undefined {\n  if (typeof length === 'number') return length\n\n  // Convert em and rem values to number (px), convert rad to deg.\n  try {\n    length = length.trim()\n\n    // Not length: `1px/2px`, `1px 2px`, `1px, 2px`, `calc(1px)`.\n    if (/[ /\\(,]/.test(length)) return\n\n    // Just a number as string: '100'\n    if (length === String(+length)) return +length\n\n    const parsed = new CssDimension(length)\n    if (parsed.type === 'length') {\n      switch (parsed.unit) {\n        case 'em':\n          return parsed.value * baseFontSize\n        case 'rem':\n          return parsed.value * 16\n        case 'vw':\n          return ~~(\n            (parsed.value * (inheritedStyle._viewportWidth as number)) /\n            100\n          )\n        case 'vh':\n          return ~~(\n            (parsed.value * (inheritedStyle._viewportHeight as number)) /\n            100\n          )\n        default:\n          return parsed.value\n      }\n    } else if (parsed.type === 'angle') {\n      return calcDegree(length)\n    } else if (parsed.type === 'percentage') {\n      if (percentage) {\n        return (parsed.value / 100) * baseLength\n      }\n    }\n  } catch {\n    // Not a length unit, silently ignore.\n  }\n}\n\nexport function calcDegree(deg: string) {\n  const parsed = new CssDimension(deg)\n\n  switch (parsed.unit) {\n    case 'deg':\n      return parsed.value\n    case 'rad':\n      return (parsed.value * 180) / Math.PI\n    case 'turn':\n      return parsed.value * 360\n    case 'grad':\n      return 0.9 * parsed.value\n  }\n}\n\n// Multiplies two 2d transform matrices.\nexport function multiply(m1: number[], m2: number[]) {\n  return [\n    m1[0] * m2[0] + m1[2] * m2[1],\n    m1[1] * m2[0] + m1[3] * m2[1],\n    m1[0] * m2[2] + m1[2] * m2[3],\n    m1[1] * m2[2] + m1[3] * m2[3],\n    m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n    m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n  ]\n}\n\nexport function v(\n  field: string | number | undefined,\n  map: Record<string, any>,\n  fallback: any,\n  errorIfNotAllowedForProperty?: string\n) {\n  let value = map[field]\n  if (typeof value === 'undefined') {\n    if (errorIfNotAllowedForProperty && typeof field !== 'undefined') {\n      throw new Error(\n        `Invalid value for CSS property \"${errorIfNotAllowedForProperty}\". Allowed values: ${Object.keys(\n          map\n        )\n          .map((_v) => `\"${_v}\"`)\n          .join(' | ')}. Received: \"${field}\".`\n      )\n    }\n    value = fallback\n  }\n  return value\n}\n\nlet wordSegmenter\nlet graphemeSegmenter\n\n// Implementation modified from\n// https://github.com/niklasvh/html2canvas/blob/6521a487d78172f7179f7c973c1a3af40eb92009/src/css/layout/text.ts\n// https://drafts.csswg.org/css-text/#word-separator\nexport const wordSeparators = [\n  0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091, 0xa,\n].map((point) => String.fromCodePoint(point))\n\nconst segmentCache = new Map<string, string[]>()\nconst MAX_SEGMENT_CACHE_SIZE = 500\n\nexport function segment(\n  content: string,\n  granularity: 'word' | 'grapheme',\n  locale?: string\n): string[] {\n  const cacheKey = `${granularity}:${locale || ''}:${content}`\n\n  if (segmentCache.has(cacheKey)) {\n    return segmentCache.get(cacheKey)!\n  }\n  if (!wordSegmenter || !graphemeSegmenter) {\n    if (!(typeof Intl !== 'undefined' && 'Segmenter' in Intl)) {\n      // https://caniuse.com/mdn-javascript_builtins_intl_segments\n      throw new Error(\n        'Intl.Segmenter does not exist, please use import a polyfill.'\n      )\n    }\n\n    wordSegmenter = new Intl.Segmenter(locale, { granularity: 'word' })\n    graphemeSegmenter = new Intl.Segmenter(locale, {\n      granularity: 'grapheme',\n    })\n  }\n\n  let result: string[]\n\n  if (granularity === 'grapheme') {\n    result = [...graphemeSegmenter.segment(content)].map((seg) => seg.segment)\n  } else {\n    const segmented = [...wordSegmenter.segment(content)].map(\n      (seg) => seg.segment\n    ) as string[]\n\n    const output = []\n\n    let i = 0\n    // When there is a non-breaking space, join the previous and next words together.\n    // This change causes them to be treated as a single segment.\n    while (i < segmented.length) {\n      const s = segmented[i]\n\n      if (s == '\\u00a0') {\n        const previousWord = i === 0 ? '' : output.pop()\n        const nextWord = i === segmented.length - 1 ? '' : segmented[i + 1]\n\n        output.push(previousWord + '\\u00a0' + nextWord)\n        i += 2\n      } else {\n        output.push(s)\n        i++\n      }\n    }\n\n    result = output\n  }\n\n  if (segmentCache.size >= MAX_SEGMENT_CACHE_SIZE) {\n    const firstKey = segmentCache.keys().next().value\n    segmentCache.delete(firstKey)\n  }\n\n  segmentCache.set(cacheKey, result)\n  return result\n}\n\nexport function buildXMLString(\n  type: string,\n  attrs: Record<string, string | number>,\n  children?: string\n) {\n  let attrString = ''\n\n  for (const [k, _v] of Object.entries(attrs)) {\n    if (typeof _v !== 'undefined') {\n      attrString += ` ${k}=\"${_v}\"`\n    }\n  }\n\n  if (children) {\n    return `<${type}${attrString}>${children}</${type}>`\n  }\n  return `<${type}${attrString}/>`\n}\n\nexport function createLRU<T>(max = 20) {\n  const store: Map<string, T> = new Map()\n  function get(key: string): T | undefined {\n    const value = store.get(key)\n    if (value === undefined) return undefined\n\n    // Move to end (most recently used)\n    store.delete(key)\n    store.set(key, value)\n    return value\n  }\n  function set(key: string, value: T) {\n    if (store.has(key)) {\n      store.delete(key)\n    } else if (store.size >= max) {\n      const firstKey = store.keys().next().value\n      store.delete(firstKey)\n    }\n\n    store.set(key, value)\n  }\n  function clear() {\n    store.clear()\n  }\n\n  return {\n    set,\n    get,\n    clear,\n  }\n}\n\nexport function parseViewBox(viewBox?: string | null | undefined) {\n  return viewBox ? viewBox.split(/[, ]/).filter(Boolean).map(Number) : null\n}\n\nexport function toString(x: unknown): string {\n  return Object.prototype.toString.call(x)\n}\n\nexport function isString(x: unknown): x is string {\n  return typeof x === 'string'\n}\n\nexport function isNumber(x: unknown): x is number {\n  return typeof x === 'number'\n}\n\nexport function isUndefined(x: unknown): x is undefined {\n  return typeof x === 'undefined'\n}\n\nexport function asPointPercentageLength(\n  x: string | number,\n  propertyName?: string\n): number | `${number}%` | undefined {\n  if (typeof x === 'number') {\n    return x\n  }\n  if (x.endsWith('%')) {\n    const percentageValue = parseFloat(x.slice(0, -1))\n    if (isNaN(percentageValue)) {\n      console.warn(\n        `Invalid value \"${x}\"${\n          typeof propertyName === 'string' ? ` for \"${propertyName}\"` : ''\n        }. Expected a percentage value (e.g., \"50%\").`\n      )\n      return undefined\n    }\n    return `${percentageValue}%`\n  }\n\n  console.warn(\n    `Invalid value \"${x}\"${\n      typeof propertyName === 'string' ? ` for \"${propertyName}\"` : ''\n    }. Expected a number or a percentage value (e.g., \"50%\").`\n  )\n  return undefined\n}\n\nexport function asPointAutoPercentageLength(\n  x: string | number,\n  propertyName?: string\n): number | 'auto' | `${number}%` | undefined {\n  if (typeof x === 'number') {\n    return x\n  }\n  if (x === 'auto') {\n    return 'auto'\n  }\n  if (x.endsWith('%')) {\n    const percentageValue = parseFloat(x.slice(0, -1))\n    if (isNaN(percentageValue)) {\n      console.warn(\n        `Invalid value \"${x}\"${\n          typeof propertyName === 'string' ? ` for \"${propertyName}\"` : ''\n        }. Expected a percentage value (e.g., \"50%\").`\n      )\n      return undefined\n    }\n    return `${percentageValue}%`\n  }\n\n  console.warn(\n    `Invalid value \"${x}\"${\n      typeof propertyName === 'string' ? ` for \"${propertyName}\"` : ''\n    }. Expected a number, \"auto\", or a percentage value (e.g., \"50%\").`\n  )\n  return undefined\n}\n\nexport function splitByBreakOpportunities(\n  content: string,\n  wordBreak: string\n): {\n  words: string[]\n  requiredBreaks: boolean[]\n} {\n  if (wordBreak === 'break-all') {\n    return { words: segment(content, 'grapheme'), requiredBreaks: [] }\n  }\n\n  if (wordBreak === 'keep-all') {\n    return { words: segment(content, 'word'), requiredBreaks: [] }\n  }\n\n  const breaker = new LineBreaker(content)\n  let last = 0\n  let bk = breaker.nextBreak()\n  const words = []\n  const requiredBreaks = [false]\n\n  while (bk) {\n    const word = content.slice(last, bk.position)\n    words.push(word)\n\n    if (bk.required) {\n      requiredBreaks.push(true)\n    } else {\n      requiredBreaks.push(false)\n    }\n\n    last = bk.position\n    bk = breaker.nextBreak()\n  }\n\n  return { words, requiredBreaks }\n}\n\nexport const midline = (s: string) => {\n  return s.replaceAll(\n    /([A-Z])/g,\n    (_, letter: string) => `-${letter.toLowerCase()}`\n  )\n}\n\nexport function splitEffects(\n  input: string,\n  separator: string | RegExp = ','\n): string[] {\n  const result = []\n  let l = 0\n  let parenCount = 0\n  separator = new RegExp(separator)\n\n  for (let i = 0; i < input.length; i++) {\n    if (input[i] === '(') {\n      parenCount++\n    } else if (input[i] === ')') {\n      parenCount--\n    }\n\n    if (parenCount === 0 && separator.test(input[i])) {\n      result.push(input.slice(l, i).trim())\n      l = i + 1\n    }\n  }\n\n  result.push(input.slice(l).trim())\n\n  return result\n}\n","var e=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports);var u=e((k,g)=>{g.exports=[\"em\",\"ex\",\"ch\",\"rem\",\"vh\",\"vw\",\"vmin\",\"vmax\",\"px\",\"mm\",\"cm\",\"in\",\"pt\",\"pc\",\"mozmm\"]});var a=e((z,v)=>{v.exports=[\"deg\",\"grad\",\"rad\",\"turn\"]});var c=e((L,w)=>{w.exports=[\"dpi\",\"dpcm\",\"dppx\"]});var h=e(($,y)=>{y.exports=[\"Hz\",\"kHz\"]});var m=e((j,b)=>{b.exports=[\"s\",\"ms\"]});var q=u(),f=a(),p=c(),l=h(),d=m();function s(t){if(/\\.\\D?$/.test(t))throw new Error(\"The dot should be followed by a number\");if(/^[+-]{2}/.test(t))throw new Error(\"Only one leading +/- is allowed\");if(x(t)>1)throw new Error(\"Only one dot is allowed\");if(/%$/.test(t)){this.type=\"percentage\",this.value=o(t),this.unit=\"%\";return}var r=O(t);if(!r){this.type=\"number\",this.value=o(t);return}this.type=F(r),this.value=o(t.substr(0,t.length-r.length)),this.unit=r}s.prototype.valueOf=function(){return this.value};s.prototype.toString=function(){return this.value+(this.unit||\"\")};function U(t){return new s(t)}function x(t){var r=t.match(/\\./g);return r?r.length:0}function o(t){var r=parseFloat(t);if(isNaN(r))throw new Error(\"Invalid number: \"+t);return r}var E=[].concat(f,l,q,p,d);function O(t){var r=t.match(/\\D+$/),n=r&&r[0];if(n&&E.indexOf(n)===-1)throw new Error(\"Invalid unit: \"+n);return n}var D=Object.assign(i(f,\"angle\"),i(l,\"frequency\"),i(p,\"resolution\"),i(d,\"time\"));function i(t,r){return Object.fromEntries(t.map(n=>[n,r]))}function F(t){return D[t]||\"length\"}export{U as default};\n","import { type Yoga } from 'yoga-layout/load'\nimport { type Node } from 'yoga-layout'\nimport { type InitInput } from './yoga.external.js'\n\nexport { Yoga as TYoga, Node as YogaNode, type InitInput }\n\nexport function init(input: InitInput) {\n  if (process.env.SATORI_STANDALONE === '1') {\n    return import('./yoga.external.js').then((mod) => mod.init(input))\n  } else {\n    // Do nothing. It's bundled.\n  }\n}\n\nexport function getYoga() {\n  if (process.env.SATORI_STANDALONE === '1') {\n    return import('./yoga.external.js').then((mod) => mod.getYoga())\n  } else {\n    return import('./yoga.bundled.js').then((mod) => mod.getYoga())\n  }\n}\n\nif (process.env.SATORI_STANDALONE !== '1') {\n  // Preload Yoga in bundled mode.\n  import('./yoga.bundled.js')\n}\n","/**\n * This module is used to fetch image from the given URL and resolve it as\n * base64 inlined data URI, so the toolchain can process it.\n * The image data will be cached in a LRU so we don't need to fetch it again\n * in new render processes. But to invalidate the cache the workaround is to\n * add a random query string to the URL.\n * TODO: We might want another option to disable image caching by default.\n */\n\nconst AVIF = 'image/avif'\nconst WEBP = 'image/webp'\nconst APNG = 'image/apng'\nconst PNG = 'image/png'\nconst JPEG = 'image/jpeg'\nconst GIF = 'image/gif'\nconst SVG = 'image/svg+xml'\n\nfunction parseJPEG(buf: ArrayBuffer) {\n  const view = new DataView(buf)\n\n  // Skip magic bytes\n  let offset = 4\n\n  const len = view.byteLength\n  while (offset < len) {\n    const i = view.getUint16(offset, false)\n\n    if (i > len) {\n      throw new TypeError('Invalid JPEG')\n    }\n\n    const next = view.getUint8(i + 1 + offset)\n    if (next === 0xc0 || next === 0xc1 || next === 0xc2) {\n      return [\n        view.getUint16(i + 7 + offset, false),\n        view.getUint16(i + 5 + offset, false),\n      ] as [number, number]\n    }\n\n    // TODO: Support orientations from EXIF.\n\n    offset += i + 2\n  }\n\n  throw new TypeError('Invalid JPEG')\n}\n\nfunction parseGIF(buf: ArrayBuffer) {\n  const view = new Uint8Array(buf.slice(6, 10))\n  return [view[0] | (view[1] << 8), view[2] | (view[3] << 8)] as [\n    number,\n    number\n  ]\n}\n\nfunction parsePNG(buf: ArrayBuffer) {\n  const v = new DataView(buf)\n  return [v.getUint16(18, false), v.getUint16(22, false)] as [number, number]\n}\n\nimport { createLRU, parseViewBox } from '../utils.js'\n\ntype ResolvedImageData = [string, number?, number?] | readonly []\nexport const cache = createLRU<ResolvedImageData>(500)\nexport const inflightRequests = new Map<string, Promise<ResolvedImageData>>()\n\nconst ALLOWED_IMAGE_TYPES = [PNG, APNG, JPEG, GIF, SVG]\n\n// Pre-compiled regex patterns for SVG parsing\nconst SVG_ATTRS_REGEX = /<svg[^>]*>/i\nconst VIEWBOX_REGEX = /viewBox=['\"]([^'\"]+)['\"]/\nconst WIDTH_REGEX = /width=['\"](\\d*\\.?\\d+)['\"]/\nconst HEIGHT_REGEX = /height=['\"](\\d*\\.?\\d+)['\"]/\n\nfunction arrayBufferToBase64(buffer) {\n  const bytes = new Uint8Array(buffer)\n  const CHUNK_SIZE = 0x8000 // 32KB chunks\n  let binary = ''\n\n  for (let i = 0; i < bytes.length; i += CHUNK_SIZE) {\n    const chunk = bytes.subarray(i, Math.min(i + CHUNK_SIZE, bytes.length))\n    binary += String.fromCharCode(...chunk)\n  }\n\n  return btoa(binary)\n}\n\nfunction base64ToArrayBuffer(base64: string): ArrayBuffer {\n  let binaryString = atob(base64)\n  let len = binaryString.length\n  let bytes = new Uint8Array(len)\n  for (let i = 0; i < len; i++) {\n    bytes[i] = binaryString.charCodeAt(i)\n  }\n  return bytes.buffer\n}\n\nfunction parseSvgImageSize(src: string, data: string) {\n  // Parse the SVG image size\n  const svgMatch = data.match(SVG_ATTRS_REGEX)\n  if (!svgMatch) throw new Error(`Failed to parse SVG from ${src}`)\n\n  const svgTag = svgMatch[0]\n  const viewBoxMatch = VIEWBOX_REGEX.exec(svgTag)\n  const widthMatch = WIDTH_REGEX.exec(svgTag)\n  const heightMatch = HEIGHT_REGEX.exec(svgTag)\n\n  let viewBox = viewBoxMatch ? parseViewBox(viewBoxMatch[1]) : null\n\n  if (!viewBox && (!widthMatch || !heightMatch)) {\n    throw new Error(`Failed to parse SVG from ${src}: missing \"viewBox\"`)\n  }\n\n  const size = viewBox\n    ? [viewBox[2], viewBox[3]]\n    : [+widthMatch[1], +heightMatch[1]]\n\n  const ratio = size[0] / size[1]\n  const imageSize: [number, number] =\n    widthMatch && heightMatch\n      ? [+widthMatch[1], +heightMatch[1]]\n      : widthMatch\n      ? [+widthMatch[1], +widthMatch[1] / ratio]\n      : heightMatch\n      ? [+heightMatch[1] * ratio, +heightMatch[1]]\n      : [size[0], size[1]]\n\n  return imageSize\n}\n\nfunction arrayBufferToDataUri(data: ArrayBuffer) {\n  let imageSize: [number, number]\n\n  const imageType = detectContentType(new Uint8Array(data))\n\n  switch (imageType) {\n    case PNG:\n    case APNG:\n      imageSize = parsePNG(data)\n      break\n    case GIF:\n      imageSize = parseGIF(data)\n      break\n    case JPEG:\n      imageSize = parseJPEG(data)\n      break\n  }\n\n  if (!ALLOWED_IMAGE_TYPES.includes(imageType)) {\n    throw new Error(`Unsupported image type: ${imageType || 'unknown'}`)\n  }\n  return [\n    `data:${imageType};base64,${arrayBufferToBase64(data)}`,\n    imageSize,\n  ] as const\n}\n\nexport async function resolveImageData(\n  src: string | ArrayBuffer\n): Promise<ResolvedImageData> {\n  if (!src) {\n    throw new Error('Image source is not provided.')\n  }\n\n  // ArrayBuffer\n  if (typeof src === 'object') {\n    const [newSrc, imageSize] = arrayBufferToDataUri(src)\n    return [newSrc, ...imageSize] as ResolvedImageData\n  }\n\n  if (\n    (src.startsWith('\"') && src.endsWith('\"')) ||\n    (src.startsWith(\"'\") && src.endsWith(\"'\"))\n  ) {\n    src = src.slice(1, -1)\n  }\n\n  // Throw error if the image source is not an absolute URL in server environment\n  // Should be after slicing quotes to avoid throwing error too early\n  if (typeof window === 'undefined') {\n    if (!src.startsWith('http') && !src.startsWith('data:')) {\n      throw new Error(`Image source must be an absolute URL: ${src}`)\n    }\n  }\n\n  if (src.startsWith('data:')) {\n    let decodedURI: { imageType; encodingType; dataString }\n\n    try {\n      decodedURI =\n        /data:(?<imageType>[a-z/+]+)(;[^;=]+=[^;=]+)*?(;(?<encodingType>[^;,]+))?,(?<dataString>.*)/g.exec(\n          src\n        ).groups as typeof decodedURI\n    } catch (err) {\n      console.warn('Image data URI resolved without size:' + src)\n      return [src]\n    }\n\n    const { imageType, encodingType, dataString } = decodedURI\n    if (imageType === SVG) {\n      const utf8Src =\n        encodingType === 'base64'\n          ? atob(dataString)\n          : decodeURIComponent(dataString.replace(/ /g, '%20'))\n      const base64Src =\n        encodingType === 'base64'\n          ? src\n          : `data:image/svg+xml;base64,${btoa(utf8Src)}`\n      let imageSize = parseSvgImageSize(src, utf8Src)\n      cache.set(src, [base64Src, ...imageSize])\n      return [base64Src, ...imageSize]\n    } else if (encodingType === 'base64') {\n      let imageSize: [number, number]\n      const data = base64ToArrayBuffer(dataString)\n      switch (imageType) {\n        case PNG:\n        case APNG:\n          imageSize = parsePNG(data)\n          break\n        case GIF:\n          imageSize = parseGIF(data)\n          break\n        case JPEG:\n          imageSize = parseJPEG(data)\n          break\n      }\n      cache.set(src, [src, ...imageSize])\n      return [src, ...imageSize]\n    } else {\n      console.warn('Image data URI resolved without size:' + src)\n      cache.set(src, [src])\n      return [src]\n    }\n  }\n\n  if (!globalThis.fetch) {\n    throw new Error('`fetch` is required to be polyfilled to load images.')\n  }\n\n  if (inflightRequests.has(src)) {\n    return inflightRequests.get(src)\n  }\n  const cached = cache.get(src)\n  if (cached) {\n    return cached\n  }\n\n  const url = src\n  const promise = fetch(url)\n    .then((res): Promise<string | ArrayBuffer> => {\n      const type = res.headers.get('content-type')\n\n      // Handle SVG specially\n      if (type === 'image/svg+xml' || type === 'application/svg+xml') {\n        return res.text()\n      }\n\n      return res.arrayBuffer()\n    })\n    .then((data) => {\n      if (typeof data === 'string') {\n        try {\n          const newSrc = `data:image/svg+xml;base64,${btoa(data)}`\n          // Parse the SVG image size\n          const imageSize = parseSvgImageSize(url, data)\n          return [newSrc, ...imageSize] as ResolvedImageData\n        } catch (e) {\n          throw new Error(`Failed to parse SVG image: ${e.message}`)\n        }\n      }\n\n      const [newSrc, imageSize] = arrayBufferToDataUri(data)\n      return [newSrc, ...imageSize] as ResolvedImageData\n    })\n    .then((result) => {\n      cache.set(url, result)\n      return result\n    })\n    .catch((err) => {\n      console.error(`Can't load image ${url}: ` + err.message)\n      cache.set(url, [])\n      return [] as const\n    })\n\n  inflightRequests.set(url, promise)\n  return promise\n}\n\n/**\n * Inspects the first few bytes of a buffer to determine if\n * it matches the \"magic number\" of known file signatures.\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n */\nfunction detectContentType(buffer: Uint8Array) {\n  if ([0xff, 0xd8, 0xff].every((b, i) => buffer[i] === b)) {\n    return JPEG\n  }\n  if (\n    [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every(\n      (b, i) => buffer[i] === b\n    )\n  ) {\n    if (detectAPNG(buffer)) {\n      return APNG\n    }\n    return PNG\n  }\n  if ([0x47, 0x49, 0x46, 0x38].every((b, i) => buffer[i] === b)) {\n    return GIF\n  }\n  if (\n    [0x52, 0x49, 0x46, 0x46, 0, 0, 0, 0, 0x57, 0x45, 0x42, 0x50].every(\n      (b, i) => !b || buffer[i] === b\n    )\n  ) {\n    return WEBP\n  }\n  if ([0x3c, 0x3f, 0x78, 0x6d, 0x6c].every((b, i) => buffer[i] === b)) {\n    return SVG\n  }\n  if (\n    [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x61, 0x76, 0x69, 0x66].every(\n      (b, i) => !b || buffer[i] === b\n    )\n  ) {\n    return AVIF\n  }\n  return null\n}\n\nfunction detectAPNG(bytes: Uint8Array) {\n  const dv = new DataView(bytes.buffer)\n  let type: string,\n    length: number,\n    off = 8,\n    isAPNG = false\n  while (!isAPNG && type !== 'IEND' && off < bytes.length) {\n    length = dv.getUint32(off)\n    const chars = bytes.subarray(off + 4, off + 8)\n    type = String.fromCharCode(...chars)\n    isAPNG = type === 'acTL'\n    off += 12 + length\n  }\n  return isAPNG\n}\n","import type { ReactElement, ReactNode } from 'react'\nimport { resolveImageData, cache } from './image.js'\nimport { isReactElement, parseViewBox, midline } from '../utils.js'\n\n// Based on\n// https://raw.githubusercontent.com/facebook/react/master/packages/react-dom/src/shared/possibleStandardNames.js\nconst ATTRIBUTE_MAPPING = {\n  accentHeight: 'accent-height',\n  alignmentBaseline: 'alignment-baseline',\n  arabicForm: 'arabic-form',\n  baselineShift: 'baseline-shift',\n  capHeight: 'cap-height',\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  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  horizAdvX: 'horiz-adv-x',\n  horizOriginX: 'horiz-origin-x',\n  href: 'href',\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  overlinePosition: 'overline-position',\n  overlineThickness: 'overline-thickness',\n  paintOrder: 'paint-order',\n  panose1: 'panose-1',\n  pointerEvents: 'pointer-events',\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  textAnchor: 'text-anchor',\n  textDecoration: 'text-decoration',\n  textRendering: 'text-rendering',\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  xlinkActuate: 'xlink:actuate',\n  xlinkArcrole: 'xlink:arcrole',\n  xlinkHref: 'xlink:href',\n  xlinkRole: 'xlink:role',\n  xlinkShow: 'xlink:show',\n  xlinkTitle: 'xlink:title',\n  xlinkType: 'xlink:type',\n  xmlBase: 'xml:base',\n  xmlLang: 'xml:lang',\n  xmlSpace: 'xml:space',\n  xmlnsXlink: 'xmlns:xlink',\n} as const\n\n// From https://github.com/yoksel/url-encoder/blob/master/src/js/script.js\nconst SVGSymbols = /[\\r\\n%#()<>?[\\\\\\]^`{|}\"']/g\n\nfunction translateSVGNodeToSVGString(\n  node: ReactElement | string | (ReactElement | string)[],\n  inheritedColor: string\n): string {\n  if (!node) return ''\n  if (Array.isArray(node)) {\n    return node\n      .map((n) => translateSVGNodeToSVGString(n, inheritedColor))\n      .join('')\n  }\n  if (typeof node !== 'object') return String(node)\n\n  const type = node.type\n  if (type === 'text') {\n    throw new Error(\n      '<text> nodes are not currently supported, please convert them to <path>'\n    )\n  }\n\n  const { children, style, ...restProps } = node.props || {}\n  const currentColor = style?.color || inheritedColor\n\n  const attrs = `${Object.entries(restProps)\n    .map(([k, _v]) => {\n      if (typeof _v === 'string' && _v.toLowerCase() === 'currentcolor') {\n        _v = currentColor\n      }\n\n      if ((k === 'href' || k === 'xlinkHref') && type === 'image') {\n        return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${cache.get(_v as string)[0]}\"`\n      }\n      return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${_v}\"`\n    })\n    .join('')}`\n\n  const styles = style\n    ? ` style=\"${Object.entries(style)\n        .map(([k, _v]) => `${midline(k)}:${_v}`)\n        .join(';')}\"`\n    : ''\n\n  return `<${type}${attrs}${styles}>${translateSVGNodeToSVGString(\n    children,\n    currentColor\n  )}</${type}>`\n}\n/**\n * pre process node and resolve absolute link to img data for image element\n * @param node ReactNode\n * @returns\n */\nexport async function preProcessNode(node: ReactNode) {\n  const set = new Set<string | Buffer | ArrayBuffer>()\n  const walk = (_node: ReactNode) => {\n    if (!_node) return\n    if (!isReactElement(_node)) return\n\n    if (Array.isArray(_node)) {\n      _node.forEach((v) => walk(v))\n      return\n    } else if (typeof _node === 'object') {\n      if (_node.type === 'image') {\n        const imageSrc = _node.props.href || _node.props.xlinkHref\n        if (imageSrc) {\n          if (set.has(imageSrc)) {\n            // do nothing\n          } else {\n            set.add(imageSrc)\n          }\n        }\n      } else if (_node.type === 'img') {\n        if (set.has(_node.props.src)) {\n          // do nothing\n        } else {\n          set.add(_node.props.src)\n        }\n      } else {\n        // do nothing\n      }\n    }\n\n    Array.isArray(_node.props.children)\n      ? _node.props.children.map((c) => walk(c))\n      : walk(_node.props.children)\n  }\n\n  walk(node)\n\n  return Promise.all(Array.from(set).map((s) => resolveImageData(s)))\n}\n\nexport async function SVGNodeToImage(\n  node: ReactElement,\n  inheritedColor: string\n): Promise<string> {\n  let {\n    viewBox,\n    viewbox,\n    width,\n    height,\n    className,\n    style,\n    children,\n    ...restProps\n  } = node.props || {}\n\n  viewBox ||= viewbox\n\n  // We directly assign the xmlns attribute here to deduplicate.\n  restProps.xmlns = 'http://www.w3.org/2000/svg'\n\n  const currentColor = style?.color || inheritedColor\n  const viewBoxSize = parseViewBox(viewBox)\n\n  // ratio = height / width\n  const ratio = viewBoxSize ? viewBoxSize[3] / viewBoxSize[2] : null\n  width = width || (ratio && height) ? height / ratio : null\n  height = height || (ratio && width) ? width * ratio : null\n\n  restProps.width = width\n  restProps.height = height\n  if (viewBox) restProps.viewBox = viewBox\n\n  return `data:image/svg+xml;utf8,${`<svg ${Object.entries(restProps)\n    .map(([k, _v]) => {\n      if (typeof _v === 'string' && _v.toLowerCase() === 'currentcolor') {\n        _v = currentColor\n      }\n      return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${_v}\"`\n    })\n    .join('')}>${translateSVGNodeToSVGString(\n    children,\n    currentColor\n  )}</svg>`.replace(SVGSymbols, encodeURIComponent)}`\n}\n","/**\n * Pre-defined styles for elements. Here we hand pick some from Chromium's\n * default styles:\n * https://chromium.googlesource.com/chromium/blink/+/master/Source/core/css/html.css\n *\n * We try to only include commonly used, styling elements rather than semantic elements.\n */\n\nconst DEFAULT_DISPLAY = 'flex'\n\nexport default {\n  // Generic block-level elements\n  p: {\n    display: DEFAULT_DISPLAY,\n    marginTop: '1em',\n    marginBottom: '1em',\n  },\n  div: {\n    display: DEFAULT_DISPLAY,\n  },\n  blockquote: {\n    display: DEFAULT_DISPLAY,\n    marginTop: '1em',\n    marginBottom: '1em',\n    marginLeft: 40,\n    marginRight: 40,\n  },\n  center: {\n    display: DEFAULT_DISPLAY,\n    textAlign: 'center',\n  },\n  hr: {\n    display: DEFAULT_DISPLAY,\n    marginTop: '0.5em',\n    marginBottom: '0.5em',\n    marginLeft: 'auto',\n    marginRight: 'auto',\n    borderWidth: 1,\n    // We don't have `inset`\n    borderStyle: 'solid',\n  },\n  // Heading elements\n  h1: {\n    display: DEFAULT_DISPLAY,\n    fontSize: '2em',\n    marginTop: '0.67em',\n    marginBottom: '0.67em',\n    marginLeft: 0,\n    marginRight: 0,\n    fontWeight: 'bold',\n  },\n  h2: {\n    display: DEFAULT_DISPLAY,\n    fontSize: '1.5em',\n    marginTop: '0.83em',\n    marginBottom: '0.83em',\n    marginLeft: 0,\n    marginRight: 0,\n    fontWeight: 'bold',\n  },\n  h3: {\n    display: DEFAULT_DISPLAY,\n    fontSize: '1.17em',\n    marginTop: '1em',\n    marginBottom: '1em',\n    marginLeft: 0,\n    marginRight: 0,\n    fontWeight: 'bold',\n  },\n  h4: {\n    display: DEFAULT_DISPLAY,\n    marginTop: '1.33em',\n    marginBottom: '1.33em',\n    marginLeft: 0,\n    marginRight: 0,\n    fontWeight: 'bold',\n  },\n  h5: {\n    display: DEFAULT_DISPLAY,\n    fontSize: '0.83em',\n    marginTop: '1.67em',\n    marginBottom: '1.67em',\n    marginLeft: 0,\n    marginRight: 0,\n    fontWeight: 'bold',\n  },\n  h6: {\n    display: DEFAULT_DISPLAY,\n    fontSize: '0.67em',\n    marginTop: '2.33em',\n    marginBottom: '2.33em',\n    marginLeft: 0,\n    marginRight: 0,\n    fontWeight: 'bold',\n  },\n  // Tables\n  // Lists\n  // Form elements\n  // Inline elements\n  u: {\n    textDecoration: 'underline',\n  },\n  strong: {\n    fontWeight: 'bold',\n  },\n  b: {\n    fontWeight: 'bold',\n  },\n  i: {\n    fontStyle: 'italic',\n  },\n  em: {\n    fontStyle: 'italic',\n  },\n  code: {\n    fontFamily: 'monospace',\n  },\n  kbd: {\n    fontFamily: 'monospace',\n  },\n  pre: {\n    display: DEFAULT_DISPLAY,\n    fontFamily: 'monospace',\n    whiteSpace: 'pre',\n    marginTop: '1em',\n    marginBottom: '1em',\n  },\n  mark: {\n    backgroundColor: 'yellow',\n    color: 'black',\n  },\n  big: {\n    fontSize: 'larger',\n  },\n  small: {\n    fontSize: 'smaller',\n  },\n  s: {\n    textDecoration: 'line-through',\n  },\n}\n","import { SerializedStyle } from './expand.js'\n\nconst list = new Set([\n  'color',\n  'font',\n  'fontFamily',\n  'fontSize',\n  'fontStyle',\n  'fontWeight',\n  'letterSpacing',\n  'lineHeight',\n  'textAlign',\n  'textIndent',\n  'textTransform',\n  'textShadowOffset',\n  'textShadowColor',\n  'textShadowRadius',\n  'WebkitTextStrokeWidth',\n  'WebkitTextStrokeColor',\n  'textDecorationLine',\n  'textDecorationStyle',\n  'textDecorationColor',\n  'textDecorationSkipInk',\n  'whiteSpace',\n  'transform',\n  'wordBreak',\n  'tabSize',\n\n  // Special case: SVG doesn't apply these to children elements so we need to\n  // make it inheritable here.\n  'opacity',\n  'filter',\n\n  // Special properties of Satori:\n  '_viewportWidth',\n  '_viewportHeight',\n  '_inheritedClipPathId',\n  '_inheritedMaskId',\n  '_inheritedBackgroundClipTextPath',\n  '_inheritedBackgroundClipTextHasBackground',\n])\n\nexport default function inheritable(style: SerializedStyle): SerializedStyle {\n  const inheritedStyle: SerializedStyle = {}\n  for (const prop in style) {\n    // CSS custom properties (--*) always inherit\n    if (list.has(prop) || prop.startsWith('--')) {\n      inheritedStyle[prop] = style[prop]\n    }\n  }\n  return inheritedStyle\n}\n","/**\n * This module expands the CSS properties to get rid of shorthands, as well as\n * cleaning up some properties.\n */\n\nimport { getPropertyName, getStylesForProperty } from 'css-to-react-native'\nimport { parseElementStyle } from 'css-background-parser'\nimport { parse as parseBoxShadow } from 'css-box-shadow'\nimport cssColorParse from 'parse-css-color'\n\nimport CssDimension from '../vendor/parse-css-dimension/index.js'\nimport parseTransformOrigin, {\n  ParsedTransformOrigin,\n} from '../transform-origin.js'\nimport { isString, lengthToNumber, v, splitEffects } from '../utils.js'\nimport { MaskProperty, parseMask } from '../parser/mask.js'\nimport { FontWeight, FontStyle } from '../font.js'\nimport {\n  extractCustomProperties,\n  mergeVariables,\n  resolveVariables,\n  CSSVariables,\n} from './variables.js'\n\n// https://react-cn.github.io/react/tips/style-props-value-px.html\nconst optOutPx = new Set([\n  'flex',\n  'flexGrow',\n  'flexShrink',\n  'flexBasis',\n  'fontWeight',\n  'lineHeight',\n  'opacity',\n  'scale',\n  'scaleX',\n  'scaleY',\n])\nconst keepNumber = new Set(['lineHeight'])\n\nfunction handleFallbackColor(\n  prop: string,\n  parsed: Record<string, string>,\n  rawInput: string,\n  currentColor: string\n) {\n  if (\n    prop === 'textDecoration' &&\n    !rawInput.includes(parsed.textDecorationColor)\n  ) {\n    parsed.textDecorationColor = currentColor\n  }\n  return parsed\n}\n\nfunction purify(name: string, value?: string | number) {\n  const num = Number(value)\n  if (isNaN(num)) return value\n  if (!optOutPx.has(name)) return num + 'px'\n  if (keepNumber.has(name)) return num\n  return String(value)\n}\n\nfunction handleSpecialCase(\n  name: string,\n  value: string | number,\n  currentColor: string\n) {\n  if (name === 'zIndex') {\n    console.warn('`z-index` is currently not supported.')\n    return { [name]: value }\n  }\n\n  if (name === 'lineHeight') {\n    return { lineHeight: purify(name, value) }\n  }\n\n  if (name === 'fontFamily') {\n    return {\n      fontFamily: (value as string).split(',').map((_v) => {\n        return _v\n          .trim()\n          .replace(/(^['\"])|(['\"]$)/g, '')\n          .toLocaleLowerCase()\n      }),\n    }\n  }\n\n  if (name === 'borderRadius') {\n    if (typeof value !== 'string' || !value.includes('/')) {\n      // Regular border radius\n      return\n    }\n    // Support the `border-radius: 10px / 20px` syntax.\n    const [horizontal, vertical] = value.split('/')\n    const vh = getStylesForProperty(name, horizontal, true)\n    const vv = getStylesForProperty(name, vertical, true)\n    for (const k in vh) {\n      vv[k] = purify(name, vh[k]) + ' ' + purify(name, vv[k])\n    }\n    return vv\n  }\n\n  if (/^border(Top|Right|Bottom|Left)?$/.test(name)) {\n    const resolved = getStylesForProperty('border', value, true)\n\n    // Border width should be default to 3px (medium) instead of 1px:\n    // https://w3c.github.io/csswg-drafts/css-backgrounds-3/#border-width\n    // Although on Chrome it will be displayed as 1.5px but let's stick to the\n    // spec.\n    if (resolved.borderWidth === 1 && !String(value).includes('1px')) {\n      resolved.borderWidth = 3\n    }\n\n    // A trick to fix `border: 1px solid` to not use `black` but the inherited\n    // `color` value. This is necessary because css-to-react-native automatically\n    // fallbacks to default color values.\n    if (resolved.borderColor === 'black' && !String(value).includes('black')) {\n      resolved.borderColor = currentColor\n    }\n\n    const purified = {\n      Width: purify(name + 'Width', resolved.borderWidth),\n      Style: v(\n        resolved.borderStyle,\n        {\n          solid: 'solid',\n          dashed: 'dashed',\n        },\n        'solid',\n        name + 'Style'\n      ),\n      Color: resolved.borderColor,\n    }\n\n    const full = {}\n    for (const k of name === 'border'\n      ? ['Top', 'Right', 'Bottom', 'Left']\n      : [name.slice(6)]) {\n      for (const p in purified) {\n        full['border' + k + p] = purified[p]\n      }\n    }\n    return full\n  }\n\n  if (name === 'boxShadow') {\n    if (!value) {\n      throw new Error('Invalid `boxShadow` value: \"' + value + '\".')\n    }\n    return {\n      [name]: typeof value === 'string' ? parseBoxShadow(value) : value,\n    }\n  }\n\n  if (name === 'transform') {\n    if (typeof value !== 'string') throw new Error('Invalid `transform` value.')\n    // To support percentages in transform (which is not supported in RN), we\n    // replace them with random symbols and then replace them back after parsing.\n    const symbols = {}\n    const replaced = value.replace(/(-?[\\d.]+%)/g, (_, _v) => {\n      const symbol = ~~(Math.random() * 1e9)\n      symbols[symbol] = _v\n      return symbol + 'px'\n    })\n    const parsed = getStylesForProperty('transform', replaced, true)\n    for (const t of parsed.transform) {\n      for (const k in t) {\n        if (symbols[t[k]]) {\n          t[k] = symbols[t[k]]\n        }\n      }\n    }\n    return parsed\n  }\n\n  if (name === 'background') {\n    value = value.toString().trim()\n    if (\n      /^(linear-gradient|radial-gradient|url|repeating-linear-gradient|repeating-radial-gradient)\\(/.test(\n        value\n      )\n    ) {\n      return getStylesForProperty('backgroundImage', value, true)\n    }\n    return getStylesForProperty('background', value, true)\n  }\n\n  if (name === 'textShadow') {\n    // Handle multiple text shadows if provided.\n    value = value.toString().trim()\n    const result = {}\n\n    const shadows = splitEffects(value)\n\n    for (const shadow of shadows) {\n      const styles = getStylesForProperty('textShadow', shadow, true)\n      for (const k in styles) {\n        if (!result[k]) {\n          result[k] = [styles[k]]\n        } else {\n          result[k].push(styles[k])\n        }\n      }\n    }\n\n    return result\n  }\n\n  if (name === 'WebkitTextStroke') {\n    value = value.toString().trim()\n    const values = value.split(' ')\n    if (values.length !== 2) {\n      throw new Error('Invalid `WebkitTextStroke` value.')\n    }\n\n    return {\n      WebkitTextStrokeWidth: purify(name, values[0]),\n      WebkitTextStrokeColor: purify(name, values[1]),\n    }\n  }\n\n  if (name === 'textDecorationSkipInk') {\n    const normalized = value.toString().trim().toLowerCase()\n    if (!['auto', 'none', 'all'].includes(normalized)) {\n      throw new Error('Invalid `textDecorationSkipInk` value.')\n    }\n\n    return { textDecorationSkipInk: normalized }\n  }\n\n  return\n}\n\nfunction getErrorHint(name: string) {\n  if (name === 'transform') {\n    return ' Only absolute lengths such as `10px` are supported.'\n  }\n  return ''\n}\n\nconst RGB_SLASH = /rgb\\((\\d+)\\s+(\\d+)\\s+(\\d+)\\s*\\/\\s*([\\.\\d]+)\\)/\nfunction normalizeColor(value: string | object) {\n  if (typeof value === 'string') {\n    if (RGB_SLASH.test(value.trim())) {\n      // rgb(255 122 127 / .2) -> rgba(255, 122, 127, .2)\n      return value.trim().replace(RGB_SLASH, (_, r, g, b, a) => {\n        return `rgba(${r}, ${g}, ${b}, ${a})`\n      })\n    }\n  }\n\n  // Recursively normalize colors in arrays and objects.\n  if (typeof value === 'object' && value !== null) {\n    for (const k in value) {\n      value[k] = normalizeColor(value[k])\n    }\n    return value\n  }\n\n  return value\n}\n\ntype MainStyle = {\n  color: string\n  fontSize: number\n  transformOrigin: ParsedTransformOrigin\n  maskImage: MaskProperty[]\n  opacity: number\n  textTransform: string\n  whiteSpace: string\n  wordBreak: string\n  textAlign: string\n  textIndent: number | string\n  lineHeight: number | string\n  letterSpacing: number\n\n  fontFamily: string | string[]\n  fontWeight: FontWeight\n  fontStyle: FontStyle\n\n  borderTopWidth: number\n  borderLeftWidth: number\n  borderRightWidth: number\n  borderBottomWidth: number\n\n  paddingTop: number\n  paddingLeft: number\n  paddingRight: number\n  paddingBottom: number\n\n  flexGrow: number\n  flexShrink: number\n\n  gap: number\n  rowGap: number\n  columnGap: number\n\n  textShadowOffset: {\n    width: number\n    height: number\n  }[]\n  textShadowColor: string[]\n  textShadowRadius: number[]\n  WebkitTextStrokeWidth: number\n  WebkitTextStrokeColor: string\n  textDecorationSkipInk: 'auto' | 'none' | 'all'\n}\n\ntype OtherStyle = Exclude<Record<PropertyKey, string | number>, keyof MainStyle>\n\nexport type SerializedStyle = Partial<MainStyle & OtherStyle>\n\nexport default function expand(\n  style: Record<string, string | number> | undefined,\n  inheritedStyle: SerializedStyle\n): SerializedStyle {\n  const serializedStyle: SerializedStyle = {}\n\n  // Extract inherited CSS variables\n  const inheritedVariables: CSSVariables = {}\n  for (const prop in inheritedStyle) {\n    if (prop.startsWith('--')) {\n      inheritedVariables[prop] = String(inheritedStyle[prop])\n    }\n  }\n\n  // Extract and resolve CSS variables from current style\n  let currentVariables: CSSVariables = {}\n  let processableStyle = style\n\n  if (style) {\n    const { variables, remainingStyle } = extractCustomProperties(style)\n    currentVariables = variables\n    processableStyle = remainingStyle\n  }\n\n  // Merge variables (current overrides inherited)\n  const mergedVariables = mergeVariables(inheritedVariables, currentVariables)\n\n  // Store merged variables in the serialized style for inheritance\n  for (const varName in mergedVariables) {\n    serializedStyle[varName] = mergedVariables[varName]\n  }\n\n  if (processableStyle) {\n    // Resolve CSS variables in color property before processing\n    const resolvedColor = processableStyle.color\n      ? resolveVariables(processableStyle.color, mergedVariables)\n      : undefined\n\n    const currentColor = getCurrentColor(\n      resolvedColor as string,\n      inheritedStyle.color\n    )\n\n    serializedStyle.color = currentColor\n\n    for (const prop in processableStyle) {\n      // Internal properties.\n      if (prop.startsWith('_')) {\n        serializedStyle[prop] = processableStyle[prop]\n        continue\n      }\n\n      if (prop === 'color') {\n        continue\n      }\n\n      const name = getPropertyName(prop)\n      // Resolve CSS variables before preprocessing\n      const resolvedValue = resolveVariables(\n        processableStyle[prop],\n        mergedVariables\n      )\n      const value = preprocess(resolvedValue, currentColor)\n\n      try {\n        const resolvedStyle =\n          handleSpecialCase(name, value, currentColor) ||\n          handleFallbackColor(\n            name,\n            getStylesForProperty(name, purify(name, value), true),\n            value as string,\n            currentColor\n          )\n\n        Object.assign(serializedStyle, resolvedStyle)\n      } catch (err) {\n        throw new Error(\n          err.message +\n            // Attach the extra information of the rule itself if it's not included in\n            // the error message.\n            (err.message.includes(value)\n              ? '\\n  ' + getErrorHint(name)\n              : `\\n  in CSS rule \\`${name}: ${value}\\`.${getErrorHint(name)}`)\n        )\n      }\n    }\n  }\n\n  // Parse background images.\n  if (serializedStyle.backgroundImage) {\n    const { backgrounds } = parseElementStyle(serializedStyle)\n    serializedStyle.backgroundImage = backgrounds\n  }\n\n  if (serializedStyle.maskImage || serializedStyle['WebkitMaskImage']) {\n    serializedStyle.maskImage = parseMask(serializedStyle)\n  }\n\n  // Calculate the base font size.\n  const baseFontSize = calcBaseFontSize(\n    serializedStyle.fontSize,\n    inheritedStyle.fontSize\n  )\n  if (typeof serializedStyle.fontSize !== 'undefined') {\n    serializedStyle.fontSize = baseFontSize\n  }\n\n  if (serializedStyle.transformOrigin) {\n    serializedStyle.transformOrigin = parseTransformOrigin(\n      serializedStyle.transformOrigin as any,\n      baseFontSize\n    )\n  }\n\n  for (const prop in serializedStyle) {\n    let value = serializedStyle[prop]\n\n    // Line height needs to be relative.\n    if (prop === 'lineHeight') {\n      if (typeof value === 'string' && value !== 'normal') {\n        value = serializedStyle[prop] =\n          lengthToNumber(\n            value,\n            baseFontSize,\n            baseFontSize,\n            inheritedStyle,\n            true\n          ) / baseFontSize\n      }\n    } else {\n      // Convert em and rem values to px (number).\n      if (typeof value === 'string') {\n        const len = lengthToNumber(\n          value,\n          baseFontSize,\n          baseFontSize,\n          inheritedStyle\n        )\n        if (typeof len !== 'undefined') serializedStyle[prop] = len\n        value = serializedStyle[prop]\n      }\n\n      if (typeof value === 'string' || typeof value === 'object') {\n        const color = normalizeColor(value)\n        if (color) {\n          serializedStyle[prop] = color as any\n        }\n        value = serializedStyle[prop]\n      }\n    }\n\n    // Inherit the opacity.\n    if (prop === 'opacity' && typeof value === 'number') {\n      serializedStyle.opacity = value * inheritedStyle.opacity\n    }\n\n    if (prop === 'transform') {\n      const transforms = value as any as { [type: string]: number | string }[]\n\n      for (const transform of transforms) {\n        const type = Object.keys(transform)[0]\n        const _v = transform[type]\n\n        // Convert em, rem, vw, vh values to px (number), but keep % values.\n        const len =\n          typeof _v === 'string'\n            ? lengthToNumber(_v, baseFontSize, baseFontSize, inheritedStyle) ??\n              _v\n            : _v\n        transform[type] = len\n      }\n    }\n\n    if (prop === 'textShadowRadius') {\n      const textShadowRadius = value as unknown as Array<number | string>\n\n      serializedStyle.textShadowRadius = textShadowRadius.map((_v) =>\n        lengthToNumber(_v, baseFontSize, 0, inheritedStyle, false)\n      )\n    }\n\n    if (prop === 'textShadowOffset') {\n      const textShadowOffset = value as unknown as Array<{\n        width: number | string\n        height: number | string\n      }>\n\n      serializedStyle.textShadowOffset = textShadowOffset.map(\n        ({ height, width }) => ({\n          height: lengthToNumber(\n            height,\n            baseFontSize,\n            0,\n            inheritedStyle,\n            false\n          ),\n          width: lengthToNumber(width, baseFontSize, 0, inheritedStyle, false),\n        })\n      )\n    }\n  }\n\n  return serializedStyle\n}\n\nfunction calcBaseFontSize(\n  size: number | string,\n  inheritedSize: number\n): number {\n  if (typeof size === 'number') return size\n\n  try {\n    const parsed = new CssDimension(size)\n    switch (parsed.unit) {\n      case 'em':\n        return parsed.value * inheritedSize\n      case 'rem':\n        return parsed.value * 16\n    }\n  } catch (err) {\n    return inheritedSize\n  }\n}\n\n/**\n * @see https://github.com/RazrFalcon/resvg/issues/579\n */\nfunction refineHSL(color: string) {\n  if (color.startsWith('hsl')) {\n    const t = cssColorParse(color)\n    const [h, s, l] = t.values\n\n    return `hsl(${[h, `${s}%`, `${l}%`]\n      .concat(t.alpha === 1 ? [] : [t.alpha])\n      .join(',')})`\n  }\n\n  return color\n}\n\nfunction getCurrentColor(\n  color: string | undefined,\n  inheritedColor: string\n): string {\n  if (color && color.toLowerCase() !== 'currentcolor') {\n    return refineHSL(color)\n  }\n\n  return refineHSL(inheritedColor)\n}\n\nfunction convertCurrentColorToActualValue(\n  value: string,\n  currentColor: string\n): string {\n  return value.replace(/currentcolor/gi, currentColor)\n}\n\nfunction preprocess(\n  value: string | number,\n  currentColor: string\n): string | number {\n  if (isString(value)) {\n    value = convertCurrentColorToActualValue(value, currentColor)\n  }\n\n  return value\n}\n","import valueParser from 'postcss-value-parser'\n\nimport CssDimension from './vendor/parse-css-dimension/index.js'\n\n/**\n * If key for each direction is missing, assume default (50%)\n */\nexport interface ParsedTransformOrigin {\n  /** Relative horizontal transform origin in % */\n  xRelative?: number\n  /** Relative vertical transform origin in % */\n  yRelative?: number\n  /** Absolute horizontal transform origin in pixels */\n  xAbsolute?: number\n  /** Absolute horizontal transform origin in pixels */\n  yAbsolute?: number\n}\n\ninterface ParsedUnit {\n  /** Relative unit in % */\n  relative?: number\n  /** Absolute unit in pixels */\n  absolute?: number\n}\n\nfunction parseUnit(word: string, baseFontSize: number): ParsedUnit {\n  try {\n    const parsed = new CssDimension(word)\n    switch (parsed.unit) {\n      case 'px':\n        return { absolute: parsed.value }\n      case 'em':\n        return { absolute: parsed.value * baseFontSize }\n      case 'rem':\n        return { absolute: parsed.value * 16 }\n      case '%':\n        return { relative: parsed.value }\n      default:\n        return {}\n    }\n  } catch (e) {\n    return {}\n  }\n}\n\nfunction handleWord(\n  word: string,\n  baseFontSize: number,\n  unitIsHorizontal: boolean\n) {\n  switch (word) {\n    case 'top':\n      return { yRelative: 0 }\n    case 'left':\n      return { xRelative: 0 }\n    case 'right':\n      return { xRelative: 100 }\n    case 'bottom':\n      return { yRelative: 100 }\n    case 'center':\n      return {}\n    default: {\n      const parsedUnit = parseUnit(word, baseFontSize)\n      return parsedUnit.absolute\n        ? {\n            [unitIsHorizontal ? 'xAbsolute' : 'yAbsolute']: parsedUnit.absolute,\n          }\n        : parsedUnit.relative\n        ? {\n            [unitIsHorizontal ? 'xRelative' : 'yRelative']: parsedUnit.relative,\n          }\n        : {}\n    }\n  }\n}\n\nexport default function parseTransformOrigin(\n  value: string | number,\n  baseFontSize: number\n): ParsedTransformOrigin {\n  // If it's a single value and a number, then it's horizontal\n  if (typeof value === 'number') {\n    return { xAbsolute: value }\n  }\n  let words: string[]\n  try {\n    words = valueParser(value)\n      .nodes.filter((node) => node.type === 'word')\n      .map((node) => node.value)\n  } catch (e) {\n    return {}\n  }\n\n  if (words.length === 1) {\n    // If it's a single value and a number, then it's horizontal, so\n    // pass `true` to `unitIsHorizontal`\n    return handleWord(words[0], baseFontSize, true)\n  } else if (words.length === 2) {\n    // Make words to be [horizontal, vertical]\n    if (\n      words[0] === 'top' ||\n      words[0] === 'bottom' ||\n      words[1] === 'left' ||\n      words[1] === 'right'\n    ) {\n      words.reverse()\n    }\n\n    return {\n      ...handleWord(words[0], baseFontSize, true),\n      ...handleWord(words[1], baseFontSize, false),\n    }\n  } else {\n    return {}\n  }\n}\n","import { getPropertyName } from 'css-to-react-native'\nimport { splitEffects } from '../utils.js'\n\nfunction getMaskProperty(style: Record<string, string | number>, name: string) {\n  const key = getPropertyName(`mask-${name}`)\n  return (style[key] || style[`WebkitM${key.substring(1)}`]) as string\n}\n\nexport interface MaskProperty {\n  image: string\n  position: string\n  size: string\n  repeat: string\n  origin: string\n  clip: string\n}\n\nexport function parseMask(\n  style: Record<string, string | number>\n): MaskProperty[] {\n  const maskImage = (style.maskImage || style.WebkitMaskImage) as string\n\n  const common = {\n    position: getMaskProperty(style, 'position') || '0% 0%',\n    size: getMaskProperty(style, 'size') || '100% 100%',\n    repeat: getMaskProperty(style, 'repeat') || 'repeat',\n    origin: getMaskProperty(style, 'origin') || 'border-box',\n    clip: getMaskProperty(style, 'origin') || 'border-box',\n  }\n\n  let maskImages = splitEffects(maskImage).filter((v) => v && v !== 'none')\n\n  return maskImages.reverse().map((m) => ({\n    image: m,\n    ...common,\n  }))\n}\n","/**\n * This module handles CSS custom properties (CSS variables) including:\n * - Extracting custom properties from styles (--property-name)\n * - Resolving var() references\n * - Handling fallback values\n * - Detecting circular references\n */\n\nimport valueParser from 'postcss-value-parser'\n\nexport type CSSVariables = Record<string, string>\n\n/**\n * Extracts custom properties (--*) from a style object\n * Returns both the variables and the remaining style properties\n */\nexport function extractCustomProperties(\n  style: Record<string, string | number>\n): {\n  variables: CSSVariables\n  remainingStyle: Record<string, string | number>\n} {\n  const variables: CSSVariables = {}\n  const remainingStyle: Record<string, string | number> = {}\n\n  for (const prop in style) {\n    if (prop.startsWith('--')) {\n      // Custom property\n      variables[prop] = String(style[prop])\n    } else {\n      remainingStyle[prop] = style[prop]\n    }\n  }\n\n  return { variables, remainingStyle }\n}\n\n/**\n * Merges inherited variables with current variables\n * Current variables override inherited ones (cascading)\n */\nexport function mergeVariables(\n  inherited: CSSVariables,\n  current: CSSVariables\n): CSSVariables {\n  return { ...inherited, ...current }\n}\n\n/**\n * Resolves var() references in a CSS value\n * Supports fallback values: var(--name, fallback)\n * Handles nested var() calls\n */\nexport function resolveVariables(\n  value: string | number,\n  variables: CSSVariables,\n  visitedVars = new Set<string>()\n): string | number {\n  // Only process strings\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  // Quick check: does this value contain var()?\n  if (!value.includes('var(')) {\n    return value\n  }\n\n  try {\n    const parsed = valueParser(value)\n    let hasChanges = false\n\n    parsed.walk((node) => {\n      if (node.type === 'function' && node.value === 'var') {\n        hasChanges = true\n\n        // Extract variable name and optional fallback\n        const args = extractVarArgs(node)\n        if (!args) {\n          // Invalid var() syntax, leave as-is\n          return\n        }\n\n        const { varName, fallback } = args\n\n        // Check for circular reference\n        if (visitedVars.has(varName)) {\n          console.warn(\n            `Circular reference detected for CSS variable: ${varName}`\n          )\n          // Use fallback if available, otherwise use invalid value\n          if (fallback !== undefined) {\n            replaceNode(node, fallback)\n          } else {\n            replaceNode(node, 'initial')\n          }\n          return\n        }\n\n        // Look up the variable\n        const variableValue = variables[varName]\n\n        if (variableValue !== undefined) {\n          // Mark this variable as being resolved to detect circular references\n          const newVisitedVars = new Set(visitedVars)\n          newVisitedVars.add(varName)\n\n          // Recursively resolve the variable value in case it contains more var()\n          const resolvedValue = resolveVariables(\n            variableValue,\n            variables,\n            newVisitedVars\n          )\n\n          replaceNode(node, String(resolvedValue))\n        } else if (fallback !== undefined) {\n          // Variable not found, use fallback\n          // Recursively resolve fallback in case it contains var()\n          const resolvedFallback = resolveVariables(\n            fallback,\n            variables,\n            visitedVars\n          )\n          replaceNode(node, String(resolvedFallback))\n        } else {\n          // Variable not found and no fallback, use initial value\n          // According to CSS spec, this should be treated as invalid\n          replaceNode(node, 'initial')\n        }\n      }\n    })\n\n    if (hasChanges) {\n      return parsed.toString()\n    }\n  } catch (err) {\n    // If parsing fails, return the original value\n    console.warn(`Failed to parse CSS value for variable resolution: ${value}`)\n  }\n\n  return value\n}\n\n/**\n * Extracts variable name and fallback from var() function arguments\n * Handles: var(--name) and var(--name, fallback)\n */\nfunction extractVarArgs(\n  node: valueParser.FunctionNode\n): { varName: string; fallback?: string } | null {\n  if (!node.nodes || node.nodes.length === 0) {\n    return null\n  }\n\n  // Find the variable name (first word node)\n  let varNameNode: valueParser.Node | undefined\n  let commaIndex = -1\n\n  for (let i = 0; i < node.nodes.length; i++) {\n    const child = node.nodes[i]\n    if (child.type === 'word' && !varNameNode) {\n      varNameNode = child\n    } else if (child.type === 'div' && child.value === ',') {\n      commaIndex = i\n      break\n    }\n  }\n\n  if (!varNameNode || varNameNode.type !== 'word') {\n    return null\n  }\n\n  const varName = varNameNode.value.trim()\n\n  // Check if there's a fallback value after the comma\n  if (commaIndex !== -1 && commaIndex < node.nodes.length - 1) {\n    // Collect all nodes after the comma as the fallback\n    const fallbackNodes = node.nodes.slice(commaIndex + 1)\n    const fallback = valueParser.stringify(fallbackNodes).trim()\n    return { varName, fallback }\n  }\n\n  return { varName }\n}\n\n/**\n * Replaces a function node with a raw string value\n */\nfunction replaceNode(node: valueParser.Node, value: string) {\n  // Replace the function node with a word node\n  node.type = 'word'\n  node.value = value\n  // Remove function-specific properties\n  delete (node as any).nodes\n}\n\n/**\n * Resolves all variables in a style object\n * Returns a new style object with var() references resolved\n */\nexport function resolveStyleVariables(\n  style: Record<string, string | number>,\n  variables: CSSVariables\n): Record<string, string | number> {\n  const resolved: Record<string, string | number> = {}\n\n  for (const prop in style) {\n    resolved[prop] = resolveVariables(style[prop], variables)\n  }\n\n  return resolved\n}\n","/**\n * Handler to update the Yoga node properties with the given element type and\n * style. Each supported element has its own preset styles, so this function\n * also returns the inherited style for children of the element.\n */\n\nimport presets from './presets.js'\nimport inheritable from './inheritable.js'\nimport expand, { SerializedStyle } from './expand.js'\nimport {\n  asPointAutoPercentageLength,\n  asPointPercentageLength,\n  lengthToNumber,\n  parseViewBox,\n  v,\n} from '../utils.js'\nimport { getYoga, YogaNode } from '../yoga.js'\nimport { resolveImageData } from './image.js'\n\ntype SatoriElement = keyof typeof presets\n\nexport default async function compute(\n  node: YogaNode,\n  type: SatoriElement | string,\n  inheritedStyle: SerializedStyle,\n  definedStyle: Record<string, string | number>,\n  props: Record<string, any>\n): Promise<[SerializedStyle, SerializedStyle]> {\n  const Yoga = await getYoga()\n\n  // Extend the default style with defined and inherited styles.\n  const style: SerializedStyle = Object.assign(\n    {},\n    inheritedStyle,\n    expand(presets[type], inheritedStyle),\n    expand(definedStyle, inheritedStyle)\n  )\n\n  if (type === 'img') {\n    let [resolvedSrc, imageWidth, imageHeight] = await resolveImageData(\n      props.src\n    )\n\n    // Cannot parse the image size (e.g. base64 data URI).\n    if (imageWidth === undefined && imageHeight === undefined) {\n      if (props.width === undefined || props.height === undefined) {\n        throw new Error(\n          'Image size cannot be determined. Please provide the width and height of the image.'\n        )\n      }\n      imageWidth = parseInt(props.width)\n      imageHeight = parseInt(props.height)\n    }\n    const r = imageHeight / imageWidth\n\n    // Before calculating the missing width or height based on the image ratio,\n    // we must subtract the padding and border due to how box model works.\n    // TODO: Ensure these are absolute length values, not relative values.\n    let extraHorizontal =\n      (style.borderLeftWidth || 0) +\n      (style.borderRightWidth || 0) +\n      (style.paddingLeft || 0) +\n      (style.paddingRight || 0)\n    let extraVertical =\n      (style.borderTopWidth || 0) +\n      (style.borderBottomWidth || 0) +\n      (style.paddingTop || 0) +\n      (style.paddingBottom || 0)\n\n    let contentBoxWidth = style.width || props.width\n    let contentBoxHeight = style.height || props.height\n\n    const isAbsoluteContentSize =\n      typeof contentBoxWidth === 'number' &&\n      typeof contentBoxHeight === 'number'\n\n    if (isAbsoluteContentSize) {\n      contentBoxWidth -= extraHorizontal\n      contentBoxHeight -= extraVertical\n    }\n\n    // When no content size is defined, we use the image size as the content size.\n    if (contentBoxWidth === undefined && contentBoxHeight === undefined) {\n      contentBoxWidth = '100%'\n      node.setAspectRatio(1 / r)\n    } else {\n      // If only one sisde is not defined, we can calculate the other one.\n      if (contentBoxWidth === undefined) {\n        if (typeof contentBoxHeight === 'number') {\n          contentBoxWidth = contentBoxHeight / r\n        } else {\n          // If it uses a relative value (e.g. 50%), we can rely on aspect ratio.\n          // Note: this doesn't work well if there are paddings or borders.\n          node.setAspectRatio(1 / r)\n        }\n      } else if (contentBoxHeight === undefined) {\n        if (typeof contentBoxWidth === 'number') {\n          contentBoxHeight = contentBoxWidth * r\n        } else {\n          // If it uses a relative value (e.g. 50%), we can rely on aspect ratio.\n          // Note: this doesn't work well if there are paddings or borders.\n          node.setAspectRatio(1 / r)\n        }\n      }\n    }\n\n    style.width = isAbsoluteContentSize\n      ? (contentBoxWidth as number) + extraHorizontal\n      : contentBoxWidth\n    style.height = isAbsoluteContentSize\n      ? (contentBoxHeight as number) + extraVertical\n      : contentBoxHeight\n    style.__src = resolvedSrc\n    style.__naturalWidth = imageWidth\n    style.__naturalHeight = imageHeight\n  }\n\n  if (type === 'svg') {\n    const viewBox = props.viewBox || props.viewbox\n    const viewBoxSize = parseViewBox(viewBox)\n    const ratio = viewBoxSize ? viewBoxSize[3] / viewBoxSize[2] : null\n\n    let { width, height } = props\n    if (typeof width === 'undefined' && height) {\n      if (ratio == null) {\n        width = 0\n      } else if (typeof height === 'string' && height.endsWith('%')) {\n        width = parseInt(height) / ratio + '%'\n      } else {\n        height = lengthToNumber(\n          height,\n          inheritedStyle.fontSize,\n          1,\n          inheritedStyle\n        )\n        width = height / ratio\n      }\n    } else if (typeof height === 'undefined' && width) {\n      if (ratio == null) {\n        width = 0\n      } else if (typeof width === 'string' && width.endsWith('%')) {\n        height = parseInt(width) * ratio + '%'\n      } else {\n        width = lengthToNumber(\n          width,\n          inheritedStyle.fontSize,\n          1,\n          inheritedStyle\n        )\n        height = width * ratio\n      }\n    } else {\n      if (typeof width !== 'undefined') {\n        width =\n          lengthToNumber(width, inheritedStyle.fontSize, 1, inheritedStyle) ||\n          width\n      }\n      if (typeof height !== 'undefined') {\n        height =\n          lengthToNumber(height, inheritedStyle.fontSize, 1, inheritedStyle) ||\n          height\n      }\n      width ||= viewBoxSize?.[2]\n      height ||= viewBoxSize?.[3]\n    }\n\n    if (!style.width && width) style.width = width\n    if (!style.height && height) style.height = height\n  }\n\n  // Set properties for Yoga.\n  node.setDisplay(\n    v(\n      style.display,\n      {\n        flex: Yoga.DISPLAY_FLEX,\n        block: Yoga.DISPLAY_FLEX,\n        contents: Yoga.DISPLAY_CONTENTS,\n        none: Yoga.DISPLAY_NONE,\n        '-webkit-box': Yoga.DISPLAY_FLEX,\n      },\n      Yoga.DISPLAY_FLEX,\n      'display'\n    )\n  )\n\n  node.setAlignContent(\n    v(\n      style.alignContent,\n      {\n        stretch: Yoga.ALIGN_STRETCH,\n        center: Yoga.ALIGN_CENTER,\n        'flex-start': Yoga.ALIGN_FLEX_START,\n        'flex-end': Yoga.ALIGN_FLEX_END,\n        'space-between': Yoga.ALIGN_SPACE_BETWEEN,\n        'space-around': Yoga.ALIGN_SPACE_AROUND,\n        baseline: Yoga.ALIGN_BASELINE,\n        normal: Yoga.ALIGN_AUTO,\n      },\n      Yoga.ALIGN_AUTO,\n      'alignContent'\n    )\n  )\n\n  node.setAlignItems(\n    v(\n      style.alignItems,\n      {\n        stretch: Yoga.ALIGN_STRETCH,\n        center: Yoga.ALIGN_CENTER,\n        'flex-start': Yoga.ALIGN_FLEX_START,\n        'flex-end': Yoga.ALIGN_FLEX_END,\n        baseline: Yoga.ALIGN_BASELINE,\n        normal: Yoga.ALIGN_AUTO,\n      },\n      Yoga.ALIGN_STRETCH,\n      'alignItems'\n    )\n  )\n  node.setAlignSelf(\n    v(\n      style.alignSelf,\n      {\n        stretch: Yoga.ALIGN_STRETCH,\n        center: Yoga.ALIGN_CENTER,\n        'flex-start': Yoga.ALIGN_FLEX_START,\n        'flex-end': Yoga.ALIGN_FLEX_END,\n        baseline: Yoga.ALIGN_BASELINE,\n        normal: Yoga.ALIGN_AUTO,\n      },\n      Yoga.ALIGN_AUTO,\n      'alignSelf'\n    )\n  )\n  node.setJustifyContent(\n    v(\n      style.justifyContent,\n      {\n        center: Yoga.JUSTIFY_CENTER,\n        'flex-start': Yoga.JUSTIFY_FLEX_START,\n        'flex-end': Yoga.JUSTIFY_FLEX_END,\n        'space-between': Yoga.JUSTIFY_SPACE_BETWEEN,\n        'space-around': Yoga.JUSTIFY_SPACE_AROUND,\n      },\n      Yoga.JUSTIFY_FLEX_START,\n      'justifyContent'\n    )\n  )\n  // @TODO: node.setAspectRatio\n\n  node.setFlexDirection(\n    v(\n      style.flexDirection,\n      {\n        row: Yoga.FLEX_DIRECTION_ROW,\n        column: Yoga.FLEX_DIRECTION_COLUMN,\n        'row-reverse': Yoga.FLEX_DIRECTION_ROW_REVERSE,\n        'column-reverse': Yoga.FLEX_DIRECTION_COLUMN_REVERSE,\n      },\n      Yoga.FLEX_DIRECTION_ROW,\n      'flexDirection'\n    )\n  )\n  node.setFlexWrap(\n    v(\n      style.flexWrap,\n      {\n        wrap: Yoga.WRAP_WRAP,\n        nowrap: Yoga.WRAP_NO_WRAP,\n        'wrap-reverse': Yoga.WRAP_WRAP_REVERSE,\n      },\n      Yoga.WRAP_NO_WRAP,\n      'flexWrap'\n    )\n  )\n\n  if (typeof style.gap !== 'undefined') {\n    node.setGap(Yoga.GUTTER_ALL, style.gap)\n  }\n\n  if (typeof style.rowGap !== 'undefined') {\n    node.setGap(Yoga.GUTTER_ROW, style.rowGap)\n  }\n\n  if (typeof style.columnGap !== 'undefined') {\n    node.setGap(Yoga.GUTTER_COLUMN, style.columnGap)\n  }\n\n  // @TODO: node.setFlex\n\n  if (typeof style.flexBasis !== 'undefined') {\n    node.setFlexBasis(asPointAutoPercentageLength(style.flexBasis, 'flexBasis'))\n  }\n  node.setFlexGrow(typeof style.flexGrow === 'undefined' ? 0 : style.flexGrow)\n  node.setFlexShrink(\n    typeof style.flexShrink === 'undefined' ? 0 : style.flexShrink\n  )\n\n  if (typeof style.maxHeight !== 'undefined') {\n    node.setMaxHeight(asPointPercentageLength(style.maxHeight, 'maxHeight'))\n  }\n  if (typeof style.maxWidth !== 'undefined') {\n    node.setMaxWidth(asPointPercentageLength(style.maxWidth, 'maxWidth'))\n  }\n  if (typeof style.minHeight !== 'undefined') {\n    node.setMinHeight(asPointPercentageLength(style.minHeight, 'minHeight'))\n  }\n  if (typeof style.minWidth !== 'undefined') {\n    node.setMinWidth(asPointPercentageLength(style.minWidth, 'minWidth'))\n  }\n\n  node.setOverflow(\n    v(\n      style.overflow,\n      {\n        visible: Yoga.OVERFLOW_VISIBLE,\n        hidden: Yoga.OVERFLOW_HIDDEN,\n      },\n      Yoga.OVERFLOW_VISIBLE,\n      'overflow'\n    )\n  )\n\n  node.setMargin(\n    Yoga.EDGE_TOP,\n    asPointAutoPercentageLength(style.marginTop || 0)\n  )\n  node.setMargin(\n    Yoga.EDGE_BOTTOM,\n    asPointAutoPercentageLength(style.marginBottom || 0)\n  )\n  node.setMargin(\n    Yoga.EDGE_LEFT,\n    asPointAutoPercentageLength(style.marginLeft || 0)\n  )\n  node.setMargin(\n    Yoga.EDGE_RIGHT,\n    asPointAutoPercentageLength(style.marginRight || 0)\n  )\n\n  node.setBorder(Yoga.EDGE_TOP, style.borderTopWidth || 0)\n  node.setBorder(Yoga.EDGE_BOTTOM, style.borderBottomWidth || 0)\n  node.setBorder(Yoga.EDGE_LEFT, style.borderLeftWidth || 0)\n  node.setBorder(Yoga.EDGE_RIGHT, style.borderRightWidth || 0)\n\n  node.setPadding(Yoga.EDGE_TOP, style.paddingTop || 0)\n  node.setPadding(Yoga.EDGE_BOTTOM, style.paddingBottom || 0)\n  node.setPadding(Yoga.EDGE_LEFT, style.paddingLeft || 0)\n  node.setPadding(Yoga.EDGE_RIGHT, style.paddingRight || 0)\n\n  node.setBoxSizing(\n    v(\n      style.boxSizing,\n      {\n        'border-box': Yoga.BOX_SIZING_BORDER_BOX,\n        'content-box': Yoga.BOX_SIZING_CONTENT_BOX,\n      },\n      Yoga.BOX_SIZING_BORDER_BOX,\n      'boxSizing'\n    )\n  )\n\n  node.setPositionType(\n    v(\n      style.position,\n      {\n        absolute: Yoga.POSITION_TYPE_ABSOLUTE,\n        relative: Yoga.POSITION_TYPE_RELATIVE,\n        static: Yoga.POSITION_TYPE_STATIC,\n      },\n      Yoga.POSITION_TYPE_RELATIVE,\n      'position'\n    )\n  )\n\n  if (typeof style.top !== 'undefined') {\n    node.setPosition(Yoga.EDGE_TOP, asPointPercentageLength(style.top, 'top'))\n  }\n  if (typeof style.bottom !== 'undefined') {\n    node.setPosition(\n      Yoga.EDGE_BOTTOM,\n      asPointPercentageLength(style.bottom, 'bottom')\n    )\n  }\n  if (typeof style.left !== 'undefined') {\n    node.setPosition(\n      Yoga.EDGE_LEFT,\n      asPointPercentageLength(style.left, 'left')\n    )\n  }\n  if (typeof style.right !== 'undefined') {\n    node.setPosition(\n      Yoga.EDGE_RIGHT,\n      asPointPercentageLength(style.right, 'right')\n    )\n  }\n\n  if (typeof style.height !== 'undefined') {\n    node.setHeight(asPointAutoPercentageLength(style.height, 'height'))\n  } else {\n    node.setHeightAuto()\n  }\n  if (typeof style.width !== 'undefined') {\n    node.setWidth(asPointAutoPercentageLength(style.width, 'width'))\n  } else {\n    node.setWidthAuto()\n  }\n\n  return [style, inheritable(style)]\n}\n","import escapeHTML from 'escape-html'\nimport type { ParsedTransformOrigin } from '../transform-origin.js'\nimport transform from './transform.js'\nimport { buildXMLString } from '../utils.js'\n\nexport function container(\n  {\n    left,\n    top,\n    width,\n    height,\n    isInheritingTransform,\n  }: {\n    left: number\n    top: number\n    width: number\n    height: number\n    isInheritingTransform: boolean\n  },\n  style: Record<string, number | string>\n) {\n  let matrix = ''\n  let opacity = 1\n\n  if (style.transform) {\n    matrix = transform(\n      {\n        left,\n        top,\n        width,\n        height,\n      },\n      style.transform as unknown as number[],\n      isInheritingTransform,\n      style.transformOrigin as ParsedTransformOrigin | undefined\n    )\n  }\n\n  if (style.opacity !== undefined) {\n    opacity = +style.opacity\n  }\n\n  return { matrix, opacity }\n}\n\nexport default function buildText(\n  {\n    id,\n    content,\n    filter,\n    left,\n    top,\n    width,\n    height,\n    matrix,\n    opacity,\n    image,\n    clipPathId,\n    debug,\n    shape,\n    decorationShape,\n  }: {\n    content: string\n    filter: string\n    id: string\n    left: number\n    top: number\n    width: number\n    height: number\n    matrix: string\n    opacity: number\n    image: string | null\n    clipPathId?: string\n    debug?: boolean\n    shape?: boolean\n    decorationShape?: string\n  },\n  style: Record<string, number | string>\n) {\n  let extra = ''\n  if (debug) {\n    extra = buildXMLString('rect', {\n      x: left,\n      y: top - height,\n      width,\n      height,\n      fill: 'transparent',\n      stroke: '#575eff',\n      'stroke-width': 1,\n      transform: matrix || undefined,\n      'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n    })\n  }\n\n  // This grapheme should be rendered as an image.\n  if (image) {\n    const shapeProps = {\n      href: image,\n      x: left,\n      y: top,\n      width,\n      height,\n      transform: matrix || undefined,\n      'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n      style: style.filter ? `filter:${style.filter}` : undefined,\n    }\n    return [\n      (filter ? `${filter}<g filter=\"url(#satori_s-${id})\">` : '') +\n        buildXMLString('image', {\n          ...shapeProps,\n          opacity: opacity !== 1 ? opacity : undefined,\n        }) +\n        (decorationShape || '') +\n        (filter ? '</g>' : '') +\n        extra,\n      // SVG doesn't support `<image>` as the shape.\n      '',\n    ]\n  }\n\n  // Do not embed the font, use <text> with the raw content instead.\n  const shapeProps = {\n    x: left,\n    y: top,\n    width,\n    height,\n    'font-weight': style.fontWeight,\n    'font-style': style.fontStyle,\n    'font-size': style.fontSize,\n    'font-family': style.fontFamily,\n    'letter-spacing': style.letterSpacing || undefined,\n    transform: matrix || undefined,\n    'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n    style: style.filter ? `filter:${style.filter}` : undefined,\n    'stroke-width': style.WebkitTextStrokeWidth\n      ? `${style.WebkitTextStrokeWidth}px`\n      : undefined,\n    stroke: style.WebkitTextStrokeWidth\n      ? style.WebkitTextStrokeColor\n      : undefined,\n    'stroke-linejoin': style.WebkitTextStrokeWidth ? 'round' : undefined,\n    'paint-order': style.WebkitTextStrokeWidth ? 'stroke' : undefined,\n  }\n  return [\n    (filter ? `${filter}<g filter=\"url(#satori_s-${id})\">` : '') +\n      buildXMLString(\n        'text',\n        {\n          ...shapeProps,\n          fill: style.color,\n          opacity: opacity !== 1 ? opacity : undefined,\n        },\n        escapeHTML(content)\n      ) +\n      (decorationShape || '') +\n      (filter ? '</g>' : '') +\n      extra,\n    shape ? buildXMLString('text', shapeProps, escapeHTML(content)) : '',\n  ]\n}\n","import { multiply } from '../utils.js'\nimport type { ParsedTransformOrigin } from '../transform-origin.js'\n\nconst baseMatrix = [1, 0, 0, 1, 0, 0]\n\n// Mutate the array in place.\nfunction resolveTransforms(transforms: any[], width: number, height: number) {\n  let matrix = [...baseMatrix]\n\n  // Handle CSS transforms To make it easier, we convert different transform\n  // types directly to a matrix and apply it recursively to all its children.\n  // Transforms are applied from right to left.\n  // eslint-disable-next-line @typescript-eslint/no-shadow\n  for (const transform of transforms) {\n    const type = Object.keys(transform)[0]\n    let v = transform[type]\n\n    // Resolve percentages based on the element's final size.\n    if (typeof v === 'string') {\n      if (type === 'translateX') {\n        v = (parseFloat(v) / 100) * width\n        // Override the original object.\n        transform[type] = v\n      } else if (type === 'translateY') {\n        v = (parseFloat(v) / 100) * height\n        transform[type] = v\n      } else {\n        throw new Error(`Invalid transform: \"${type}: ${v}\".`)\n      }\n    }\n\n    let len = v as number\n\n    const transformMatrix = [...baseMatrix]\n    switch (type) {\n      case 'translateX':\n        transformMatrix[4] = len\n        break\n      case 'translateY':\n        transformMatrix[5] = len\n        break\n      case 'scale':\n        transformMatrix[0] = len\n        transformMatrix[3] = len\n        break\n      case 'scaleX':\n        transformMatrix[0] = len\n        break\n      case 'scaleY':\n        transformMatrix[3] = len\n        break\n      case 'rotate': {\n        const rad = (len * Math.PI) / 180\n        const c = Math.cos(rad)\n        const s = Math.sin(rad)\n        transformMatrix[0] = c\n        transformMatrix[1] = s\n        transformMatrix[2] = -s\n        transformMatrix[3] = c\n        break\n      }\n      case 'skewX':\n        transformMatrix[2] = Math.tan((len * Math.PI) / 180)\n        break\n      case 'skewY':\n        transformMatrix[1] = Math.tan((len * Math.PI) / 180)\n        break\n    }\n    matrix = multiply(transformMatrix, matrix)\n  }\n\n  transforms.splice(0, transforms.length)\n  transforms.push(...matrix)\n  ;(transforms as any).__resolved = true\n}\n\nexport default function transform(\n  {\n    left,\n    top,\n    width,\n    height,\n  }: {\n    left: number\n    top: number\n    width: number\n    height: number\n  },\n  transforms: number[],\n  isInheritingTransform: boolean,\n  transformOrigin?: ParsedTransformOrigin\n) {\n  let result: number[]\n\n  if (!(transforms as any).__resolved) {\n    resolveTransforms(transforms, width, height)\n  }\n\n  let matrix = transforms\n\n  // Calculate the transform origin.\n  if (isInheritingTransform) {\n    result = matrix\n  } else {\n    const xOrigin =\n      transformOrigin?.xAbsolute ??\n      ((transformOrigin?.xRelative ?? 50) * width) / 100\n    const yOrigin =\n      transformOrigin?.yAbsolute ??\n      ((transformOrigin?.yRelative ?? 50) * height) / 100\n\n    // If this element is the transform target, we attach the origin coordinates\n    // to this matrix.\n    const x = left + xOrigin\n    const y = top + yOrigin\n\n    // Due to the different coordinate systems, we need to move the shape to the\n    // origin first, then apply the matrix, then move it back.\n    result = multiply(\n      [1, 0, 0, 1, x, y],\n      multiply(matrix, [1, 0, 0, 1, -x, -y])\n    )\n\n    // And we need to apply its parent transform if it has one.\n    if ((matrix as any).__parent) {\n      result = multiply((matrix as any).__parent, result)\n    }\n\n    // Mutate self.\n    matrix.splice(0, 6, ...result)\n  }\n\n  return `matrix(${result.map((v) => v.toFixed(2)).join(',')})`\n}\n","// @TODO: It seems that SVG filters are pretty expensive for resvg, PNG\n// generation time 10x'd when adding this filter (WASM in browser).\n// https://drafts.fxtf.org/filter-effects/#feGaussianBlurElement\n\nimport { buildXMLString } from '../utils.js'\n\nfunction shiftPath(path: string, dx: number, dy: number) {\n  return path.replace(\n    /([MA])([0-9.-]+),([0-9.-]+)/g,\n    function (_, command, x, y) {\n      return command + (parseFloat(x) + dx) + ',' + (parseFloat(y) + dy)\n    }\n  )\n}\n\n// The scale is used to make the filter area larger than the bounding box,\n// because usually the given measured text bounding is larger than the path\n// bounding.\n// The text bounding box is measured via the font metrics, which is not the same\n// as the actual content. For example, the text bounding box of \"A\" is larger\n// than the actual \"a\" path but they have the same font metrics.\n// This scale can be adjusted to prevent the filter from cutting off the text.\nconst SCALE = 1.1\n\nexport function buildDropShadow(\n  { id, width, height }: { id: string; width: number; height: number },\n  style: {\n    shadowColor: string[]\n    shadowOffset: {\n      width: number\n      height: number\n    }[]\n    shadowRadius: number[]\n  },\n  transparentText = false\n) {\n  if (\n    !style.shadowColor ||\n    !style.shadowOffset ||\n    typeof style.shadowRadius === 'undefined'\n  ) {\n    return ''\n  }\n\n  const shadowCount = style.shadowColor.length\n  let effects = ''\n  let merge = ''\n\n  // There could be multiple shadows, we need to get the maximum bounding box\n  // and use `feMerge` to merge them together.\n  let left = 0\n  let right = width\n  let top = 0\n  let bottom = height\n  for (let i = 0; i < shadowCount; i++) {\n    // Expand the area for the filter to prevent it from cutting off.\n    const grow = (style.shadowRadius[i] * style.shadowRadius[i]) / 4\n    left = Math.min(style.shadowOffset[i].width - grow, left)\n    right = Math.max(style.shadowOffset[i].width + grow + width, right)\n    top = Math.min(style.shadowOffset[i].height - grow, top)\n    bottom = Math.max(style.shadowOffset[i].height + grow + height, bottom)\n\n    if (transparentText) {\n      // For transparent text, use primitive filters instead of feDropShadow\n      // because feDropShadow automatically includes source in output and\n      // source has unwanted text color\n      const resultId = `satori_s-${id}-result-${i}`\n      effects +=\n        buildXMLString('feGaussianBlur', {\n          in: 'SourceAlpha',\n          stdDeviation: style.shadowRadius[i] / 2,\n          result: `${resultId}-blur`,\n        }) +\n        buildXMLString('feOffset', {\n          in: `${resultId}-blur`,\n          dx: style.shadowOffset[i].width,\n          dy: style.shadowOffset[i].height,\n          result: `${resultId}-offset`,\n        }) +\n        buildXMLString('feFlood', {\n          'flood-color': style.shadowColor[i],\n          'flood-opacity': 1,\n          result: `${resultId}-color`,\n        }) +\n        buildXMLString('feComposite', {\n          in: `${resultId}-color`,\n          in2: `${resultId}-offset`,\n          operator: 'in',\n          result: shadowCount > 1 ? resultId : undefined,\n        })\n    } else {\n      effects += buildXMLString('feDropShadow', {\n        dx: style.shadowOffset[i].width,\n        dy: style.shadowOffset[i].height,\n        stdDeviation:\n          // According to the spec, we use the half of the blur radius as the standard\n          // deviation for the filter.\n          // > the image that would be generated by applying to the shadow a Gaussian\n          // > blur with a standard deviation equal to half the blur radius\n          // > https://www.w3.org/TR/css-backgrounds-3/#shadow-blur\n          style.shadowRadius[i] / 2,\n        'flood-color': style.shadowColor[i],\n        'flood-opacity': 1,\n        ...(shadowCount > 1\n          ? {\n              in: 'SourceGraphic',\n              result: `satori_s-${id}-result-${i}`,\n            }\n          : {}),\n      })\n    }\n\n    if (shadowCount > 1) {\n      // Merge needs to be in reverse order.\n      merge =\n        buildXMLString('feMergeNode', {\n          in: `satori_s-${id}-result-${i}`,\n        }) + merge\n    }\n  }\n\n  return buildXMLString(\n    'filter',\n    {\n      id: `satori_s-${id}`,\n      x: ((left / width) * 100 * SCALE).toFixed(2) + '%',\n      y: ((top / height) * 100 * SCALE).toFixed(2) + '%',\n      width: (((right - left) / width) * 100 * SCALE).toFixed(2) + '%',\n      height: (((bottom - top) / height) * 100 * SCALE).toFixed(2) + '%',\n    },\n    effects + (merge ? buildXMLString('feMerge', {}, merge) : '')\n  )\n}\n\nexport function boxShadow(\n  {\n    width,\n    height,\n    shape,\n    opacity,\n    id,\n  }: {\n    width: number\n    height: number\n    shape: string\n    opacity: number\n    id: string\n  },\n  style: Record<string, any>\n) {\n  if (!style.boxShadow) return null\n\n  let shadow = ''\n  let innerShadow = ''\n\n  for (let i = style.boxShadow.length - 1; i >= 0; i--) {\n    let s = ''\n\n    const shadowStyle = style.boxShadow[i]\n\n    if (shadowStyle.spreadRadius && shadowStyle.inset) {\n      shadowStyle.spreadRadius = -shadowStyle.spreadRadius\n    }\n\n    // Expand the area for the filter to prevent it from cutting off.\n    const grow =\n      (shadowStyle.blurRadius * shadowStyle.blurRadius) / 4 +\n      (shadowStyle.spreadRadius || 0)\n\n    const left = Math.min(\n      -grow - (shadowStyle.inset ? shadowStyle.offsetX : 0),\n      0\n    )\n    const right = Math.max(\n      grow + width - (shadowStyle.inset ? shadowStyle.offsetX : 0),\n      width\n    )\n    const top = Math.min(\n      -grow - (shadowStyle.inset ? shadowStyle.offsetY : 0),\n      0\n    )\n    const bottom = Math.max(\n      grow + height - (shadowStyle.inset ? shadowStyle.offsetY : 0),\n      height\n    )\n\n    const sid = `satori_s-${id}-${i}`\n    const maskId = `satori_ms-${id}-${i}`\n    const shapeWithSpread = shadowStyle.spreadRadius\n      ? shape.replace(\n          'stroke-width=\"0\"',\n          `stroke-width=\"${shadowStyle.spreadRadius * 2}\"`\n        )\n      : shape\n\n    s += buildXMLString(\n      'mask',\n      {\n        id: maskId,\n        maskUnits: 'userSpaceOnUse',\n      },\n      buildXMLString('rect', {\n        x: 0,\n        y: 0,\n        width: style._viewportWidth || '100%',\n        height: style._viewportHeight || '100%',\n        fill: shadowStyle.inset ? '#000' : '#fff',\n      }) +\n        shapeWithSpread\n          .replace(\n            'fill=\"#fff\"',\n            shadowStyle.inset ? 'fill=\"#fff\"' : 'fill=\"#000\"'\n          )\n          .replace('stroke=\"#fff\"', '')\n    )\n\n    let finalShape = shapeWithSpread\n      .replace(/d=\"([^\"]+)\"/, (_, path) => {\n        return (\n          'd=\"' +\n          shiftPath(path, shadowStyle.offsetX, shadowStyle.offsetY) +\n          '\"'\n        )\n      })\n      .replace(/x=\"([^\"]+)\"/, (_, x) => {\n        return 'x=\"' + (parseFloat(x) + shadowStyle.offsetX) + '\"'\n      })\n      .replace(/y=\"([^\"]+)\"/, (_, y) => {\n        return 'y=\"' + (parseFloat(y) + shadowStyle.offsetY) + '\"'\n      })\n\n    // Negative spread radius, we need another mask here.\n    if (shadowStyle.spreadRadius && shadowStyle.spreadRadius < 0) {\n      s += buildXMLString(\n        'mask',\n        {\n          id: maskId + '-neg',\n          maskUnits: 'userSpaceOnUse',\n        },\n        finalShape\n          .replace('stroke=\"#fff\"', 'stroke=\"#000\"')\n          .replace(\n            /stroke-width=\"[^\"]+\"/,\n            `stroke-width=\"${-shadowStyle.spreadRadius * 2}\"`\n          )\n      )\n    }\n\n    if (shadowStyle.spreadRadius && shadowStyle.spreadRadius < 0) {\n      finalShape = buildXMLString(\n        'g',\n        {\n          mask: `url(#${maskId}-neg)`,\n        },\n        finalShape\n      )\n    }\n\n    s +=\n      buildXMLString(\n        'defs',\n        {},\n        buildXMLString(\n          'filter',\n          {\n            id: sid,\n            x: `${(left / width) * 100}%`,\n            y: `${(top / height) * 100}%`,\n            width: `${((right - left) / width) * 100}%`,\n            height: `${((bottom - top) / height) * 100}%`,\n          },\n          buildXMLString('feGaussianBlur', {\n            // According to the spec, we use the half of the blur radius as the standard\n            // deviation for the filter.\n            // > the image that would be generated by applying to the shadow a Gaussian\n            // > blur with a standard deviation equal to half the blur radius\n            // > https://www.w3.org/TR/css-backgrounds-3/#shadow-blur\n            stdDeviation: shadowStyle.blurRadius / 2,\n            result: 'b',\n          }) +\n            buildXMLString('feFlood', {\n              'flood-color': shadowStyle.color,\n              in: 'SourceGraphic',\n              result: 'f',\n            }) +\n            buildXMLString('feComposite', {\n              in: 'f',\n              in2: 'b',\n              operator: shadowStyle.inset ? 'out' : 'in',\n            })\n        )\n      ) +\n      buildXMLString(\n        'g',\n        {\n          mask: `url(#${maskId})`,\n          filter: `url(#${sid})`,\n          opacity: opacity,\n        },\n        finalShape\n      )\n\n    if (shadowStyle.inset) {\n      innerShadow += s\n    } else {\n      shadow += s\n    }\n  }\n\n  return [shadow, innerShadow]\n}\n","import { buildXMLString } from '../utils.js'\nimport type { GlyphBox } from '../font.js'\n\nfunction buildSkipInkSegments(\n  start: number,\n  end: number,\n  glyphBoxes: GlyphBox[],\n  y: number,\n  strokeWidth: number,\n  baseline: number\n) {\n  const halfStroke = strokeWidth / 2\n  const bleed = Math.max(halfStroke, strokeWidth * 1.25)\n  const skipRanges: [number, number][] = []\n\n  for (const box of glyphBoxes) {\n    // Only skip glyphs that actually cross the underline position and extend below the baseline.\n    if (box.y2 < baseline + halfStroke || box.y1 > y + halfStroke) continue\n\n    const from = Math.max(start, box.x1 - bleed)\n    const to = Math.min(end, box.x2 + bleed)\n\n    if (from >= to) continue\n    if (skipRanges.length === 0) {\n      skipRanges.push([from, to])\n      continue\n    }\n\n    const last = skipRanges[skipRanges.length - 1]\n    if (from <= last[1]) {\n      last[1] = Math.max(last[1], to)\n    } else {\n      skipRanges.push([from, to])\n    }\n  }\n\n  if (!skipRanges.length) {\n    return [[start, end]] as [number, number][]\n  }\n\n  const segments: [number, number][] = []\n  let cursor = start\n\n  for (const [from, to] of skipRanges) {\n    if (from > cursor) {\n      segments.push([cursor, from])\n    }\n    cursor = Math.max(cursor, to)\n    if (cursor >= end) break\n  }\n\n  if (cursor < end) {\n    segments.push([cursor, end])\n  }\n\n  return segments\n}\n\nexport default function buildDecoration(\n  {\n    width,\n    left,\n    top,\n    ascender,\n    clipPathId,\n    matrix,\n    glyphBoxes,\n  }: {\n    width: number\n    left: number\n    top: number\n    ascender: number\n    clipPathId?: string\n    matrix?: string\n    glyphBoxes?: GlyphBox[]\n  },\n  style: Record<string, any>\n) {\n  const {\n    textDecorationColor,\n    textDecorationStyle,\n    textDecorationLine,\n    textDecorationSkipInk,\n    fontSize,\n    color,\n  } = style\n  if (!textDecorationLine || textDecorationLine === 'none') return ''\n\n  // The UA should use such font-based information when choosing auto line thicknesses wherever appropriate.\n  // https://drafts.csswg.org/css-text-decor-4/#text-decoration-thickness\n  const height = Math.max(1, fontSize * 0.1)\n\n  const y =\n    textDecorationLine === 'line-through'\n      ? top + ascender * 0.7\n      : textDecorationLine === 'underline'\n      ? top + ascender * 1.1\n      : top\n\n  const dasharray =\n    textDecorationStyle === 'dashed'\n      ? `${height * 1.2} ${height * 2}`\n      : textDecorationStyle === 'dotted'\n      ? `0 ${height * 2}`\n      : undefined\n\n  const applySkipInk =\n    textDecorationLine === 'underline' &&\n    (textDecorationSkipInk || 'auto') !== 'none' &&\n    glyphBoxes?.length\n\n  const baseline = top + ascender\n\n  const segments = applySkipInk\n    ? buildSkipInkSegments(left, left + width, glyphBoxes, y, height, baseline)\n    : ([[left, left + width]] as [number, number][])\n\n  // https://www.w3.org/TR/css-backgrounds-3/#valdef-line-style-double\n  const extraLine =\n    textDecorationStyle === 'double'\n      ? segments\n          .map(([x1, x2]) =>\n            buildXMLString('line', {\n              x1,\n              y1: y + height + 1,\n              x2,\n              y2: y + height + 1,\n              stroke: textDecorationColor || color,\n              'stroke-width': height,\n              'stroke-dasharray': dasharray,\n              'stroke-linecap':\n                textDecorationStyle === 'dotted' ? 'round' : 'square',\n              transform: matrix,\n            })\n          )\n          .join('')\n      : ''\n\n  return (\n    (clipPathId ? `<g clip-path=\"url(#${clipPathId})\">` : '') +\n    segments\n      .map(([x1, x2]) =>\n        buildXMLString('line', {\n          x1,\n          y1: y,\n          x2,\n          y2: y,\n          stroke: textDecorationColor || color,\n          'stroke-width': height,\n          'stroke-dasharray': dasharray,\n          'stroke-linecap':\n            textDecorationStyle === 'dotted' ? 'round' : 'square',\n          transform: matrix,\n        })\n      )\n      .join('') +\n    extraLine +\n    (clipPathId ? '</g>' : '')\n  )\n}\n","export function stringFromCode(code: string): string {\n  code = code.replace('U+', '0x')\n\n  return String.fromCodePoint(Number(code))\n}\n\nexport const Space = stringFromCode('U+0020')\nexport const Tab = stringFromCode('U+0009')\nexport const HorizontalEllipsis = stringFromCode('U+2026')\n","import { FontEngine } from '../font.js'\nimport { segment } from '../utils.js'\n\nexport function genMeasurer(\n  engine: FontEngine,\n  isImage: (grapheme: string) => boolean,\n  style: {\n    fontSize: number\n    letterSpacing: number\n  }\n): {\n  measureGrapheme: (grapheme: string) => number\n  measureGraphemeArray: (graphemes: string[]) => number\n  measureText: (text: string) => number\n} {\n  const { fontSize, letterSpacing } = style\n\n  const cache = new Map<string, number>()\n\n  function measureGrapheme(grapheme: string): number {\n    let width = cache.get(grapheme)\n\n    if (width === undefined) {\n      width = engine.measure(grapheme, { fontSize, letterSpacing })\n      cache.set(grapheme, width)\n    }\n\n    return width\n  }\n\n  function measureGraphemeArray(graphemes: string[]): number {\n    let width = 0\n\n    for (const grapheme of graphemes) {\n      if (isImage(grapheme)) {\n        width += fontSize\n      } else {\n        width += measureGrapheme(grapheme)\n      }\n    }\n\n    return width\n  }\n\n  function measureText(text: string): number {\n    return measureGraphemeArray(segment(text, 'grapheme'))\n  }\n\n  return {\n    measureGrapheme,\n    measureGraphemeArray,\n    measureText,\n  }\n}\n","import { Locale } from '../language.js'\nimport { isNumber, segment, splitByBreakOpportunities } from '../utils.js'\nimport { HorizontalEllipsis, Space } from './characters.js'\nimport { SerializedStyle } from '../handler/expand.js'\n\nexport function preprocess(\n  content: string,\n  style: SerializedStyle,\n  locale?: Locale\n): {\n  words: string[]\n  requiredBreaks: boolean[]\n  allowSoftWrap: boolean\n  allowBreakWord: boolean\n  processedContent: string\n  shouldCollapseTabsAndSpaces: boolean\n  lineLimit: number\n  blockEllipsis: string\n} {\n  const { textTransform, whiteSpace, wordBreak } = style\n\n  content = processTextTransform(content, textTransform, locale)\n\n  const {\n    content: processedContent,\n    shouldCollapseTabsAndSpaces,\n    allowSoftWrap,\n  } = processWhiteSpace(content, whiteSpace)\n\n  const { words, requiredBreaks, allowBreakWord } = processWordBreak(\n    processedContent,\n    wordBreak\n  )\n\n  const [lineLimit, blockEllipsis] = processTextOverflow(style, allowSoftWrap)\n\n  return {\n    words,\n    requiredBreaks,\n    allowSoftWrap,\n    allowBreakWord,\n    processedContent,\n    shouldCollapseTabsAndSpaces,\n    lineLimit,\n    blockEllipsis,\n  }\n}\n\nfunction processTextTransform(\n  content: string,\n  textTransform: string,\n  locale?: Locale\n): string {\n  if (textTransform === 'uppercase') {\n    content = content.toLocaleUpperCase(locale)\n  } else if (textTransform === 'lowercase') {\n    content = content.toLocaleLowerCase(locale)\n  } else if (textTransform === 'capitalize') {\n    content = segment(content, 'word', locale)\n      // For each word...\n      .map((word) => {\n        // ...split into graphemes...\n        return segment(word, 'grapheme', locale)\n          .map((grapheme, index) => {\n            // ...and make the first grapheme uppercase\n            return index === 0 ? grapheme.toLocaleUpperCase(locale) : grapheme\n          })\n          .join('')\n      })\n      .join('')\n  }\n\n  return content\n}\n\nfunction processTextOverflow(\n  style: SerializedStyle,\n  allowSoftWrap: boolean\n): [number, string?] {\n  const {\n    textOverflow,\n    lineClamp,\n    WebkitLineClamp,\n    WebkitBoxOrient,\n    overflow,\n    display,\n  } = style\n\n  if (display === 'block' && lineClamp) {\n    const [lineLimit, blockEllipsis = HorizontalEllipsis] =\n      parseLineClamp(lineClamp)\n    if (lineLimit) {\n      return [lineLimit, blockEllipsis]\n    }\n  }\n\n  if (\n    textOverflow === 'ellipsis' &&\n    display === '-webkit-box' &&\n    WebkitBoxOrient === 'vertical' &&\n    isNumber(WebkitLineClamp) &&\n    WebkitLineClamp > 0\n  ) {\n    return [WebkitLineClamp, HorizontalEllipsis]\n  }\n\n  if (textOverflow === 'ellipsis' && overflow === 'hidden' && !allowSoftWrap) {\n    return [1, HorizontalEllipsis]\n  }\n\n  return [Infinity]\n}\n\nfunction processWordBreak(\n  content,\n  wordBreak: string\n): { words: string[]; requiredBreaks: boolean[]; allowBreakWord: boolean } {\n  const allowBreakWord = ['break-all', 'break-word'].includes(wordBreak)\n\n  const { words, requiredBreaks } = splitByBreakOpportunities(\n    content,\n    wordBreak\n  )\n\n  return { words, requiredBreaks, allowBreakWord }\n}\n\nfunction processWhiteSpace(\n  content: string,\n  whiteSpace: string\n): {\n  content: string\n  shouldCollapseTabsAndSpaces: boolean\n  allowSoftWrap: boolean\n} {\n  const shouldKeepLinebreak = ['pre', 'pre-wrap', 'pre-line'].includes(\n    whiteSpace\n  )\n\n  const shouldCollapseTabsAndSpaces = ['normal', 'nowrap', 'pre-line'].includes(\n    whiteSpace\n  )\n\n  const allowSoftWrap = !['pre', 'nowrap'].includes(whiteSpace)\n\n  if (!shouldKeepLinebreak) {\n    content = content.replace(/\\n/g, Space)\n  }\n\n  if (shouldCollapseTabsAndSpaces) {\n    content = content.replace(/([ ]|\\t)+/g, Space).replace(/^[ ]|[ ]$/g, '')\n  }\n\n  return { content, shouldCollapseTabsAndSpaces, allowSoftWrap }\n}\n\nfunction parseLineClamp(input: number | string): [number?, string?] {\n  if (typeof input === 'number') return [input]\n\n  const regex1 = /^(\\d+)\\s*\"(.*)\"$/\n  const regex2 = /^(\\d+)\\s*'(.*)'$/\n  const match1 = regex1.exec(input)\n  const match2 = regex2.exec(input)\n\n  if (match1) {\n    const number = +match1[1]\n    const text = match1[2]\n\n    return [number, text]\n  } else if (match2) {\n    const number = +match2[1]\n    const text = match2[2]\n\n    return [number, text]\n  }\n\n  return []\n}\n","/**\n * This module calculates the layout of a text string. Currently the only\n * supported inline node is text. All other nodes are using block layout.\n */\nimport type { LayoutContext } from '../layout.js'\nimport {\n  v,\n  segment,\n  wordSeparators,\n  buildXMLString,\n  isUndefined,\n  isString,\n  lengthToNumber,\n} from '../utils.js'\nimport { getYoga, TYoga, YogaNode } from '../yoga.js'\nimport buildText, { container } from '../builder/text.js'\nimport { buildDropShadow } from '../builder/shadow.js'\nimport buildDecoration from '../builder/text-decoration.js'\nimport type { GlyphBox } from '../font.js'\nimport { Locale } from '../language.js'\nimport { HorizontalEllipsis, Space, Tab } from './characters.js'\nimport { genMeasurer } from './measurer.js'\nimport { preprocess } from './processor.js'\nimport cssColorParse from 'parse-css-color'\n\nconst skippedWordWhenFindingMissingFont = new Set([Tab])\n\nfunction shouldSkipWhenFindingMissingFont(word: string): boolean {\n  return skippedWordWhenFindingMissingFont.has(word)\n}\n\nfunction isFullyTransparent(color: string): boolean {\n  if (color === 'transparent') return true\n  const parsed = cssColorParse(color)\n  return parsed ? parsed.alpha === 0 : false\n}\n\nfunction isOpaqueWhite(color: string): boolean {\n  if (!color) return false\n  const parsed = cssColorParse(color)\n  if (!parsed) return false\n  const [r, g, b, a] = parsed.values\n  return r === 255 && g === 255 && b === 255 && (a === undefined || a === 1)\n}\n\nexport default async function* buildTextNodes(\n  content: string,\n  context: LayoutContext\n): AsyncGenerator<{ word: string; locale?: Locale }[], string, [any, any]> {\n  const Yoga = await getYoga()\n\n  const {\n    parentStyle,\n    inheritedStyle,\n    parent,\n    font,\n    id,\n    isInheritingTransform,\n    debug,\n    embedFont,\n    graphemeImages,\n    locale,\n    canLoadAdditionalAssets,\n  } = context\n\n  const {\n    textAlign,\n    textIndent = 0,\n    lineHeight,\n    textWrap,\n    fontSize,\n    filter: cssFilter,\n    tabSize = 8,\n    letterSpacing,\n    _inheritedBackgroundClipTextPath,\n    _inheritedBackgroundClipTextHasBackground,\n    flexShrink,\n  } = parentStyle\n\n  const {\n    words,\n    requiredBreaks,\n    allowSoftWrap,\n    allowBreakWord,\n    processedContent,\n    shouldCollapseTabsAndSpaces,\n    lineLimit,\n    blockEllipsis,\n  } = preprocess(content, parentStyle, locale)\n\n  const textContainer = createTextContainerNode(Yoga, textAlign)\n  parent.insertChild(textContainer, parent.getChildCount())\n\n  if (isUndefined(flexShrink)) {\n    parent.setFlexShrink(1)\n  }\n\n  // Get the correct font according to the container style.\n  // https://www.w3.org/TR/CSS2/visudet.html\n  let engine = font.getEngine(fontSize, lineHeight, parentStyle, locale)\n\n  // Yield segments that are missing a font.\n  const wordsMissingFont = canLoadAdditionalAssets\n    ? segment(processedContent, 'grapheme').filter(\n        (word) => !shouldSkipWhenFindingMissingFont(word) && !engine.has(word)\n      )\n    : []\n\n  yield wordsMissingFont.map((word) => {\n    return {\n      word,\n      locale,\n    }\n  })\n\n  if (wordsMissingFont.length) {\n    // Reload the engine with additional fonts.\n    engine = font.getEngine(fontSize, lineHeight, parentStyle, locale)\n  }\n\n  function isImage(s: string): boolean {\n    return !!(graphemeImages && graphemeImages[s])\n  }\n\n  const { measureGrapheme, measureGraphemeArray, measureText } = genMeasurer(\n    engine,\n    isImage,\n    {\n      fontSize,\n      letterSpacing,\n    }\n  )\n\n  const tabWidth = isString(tabSize)\n    ? lengthToNumber(tabSize, fontSize, 1, parentStyle)\n    : measureGrapheme(Space) * tabSize\n\n  const calc = (\n    text: string,\n    currentWidth: number\n  ): {\n    originWidth: number\n    endingSpacesWidth: number\n    text: string\n  } => {\n    if (text.length === 0) {\n      return {\n        originWidth: 0,\n        endingSpacesWidth: 0,\n        text,\n      }\n    }\n\n    const { index, tabCount } = detectTabs(text)\n\n    let originWidth = 0\n\n    if (tabCount > 0) {\n      const textBeforeTab = text.slice(0, index)\n      const textAfterTab = text.slice(index + tabCount)\n      const textWidthBeforeTab = measureText(textBeforeTab)\n      const offsetBeforeTab = textWidthBeforeTab + currentWidth\n      const tabMoveDistance =\n        tabWidth === 0\n          ? textWidthBeforeTab\n          : (Math.floor(offsetBeforeTab / tabWidth) + tabCount) * tabWidth\n      originWidth = tabMoveDistance + measureText(textAfterTab)\n    } else {\n      originWidth = measureText(text)\n    }\n\n    const afterTrimEndWidth =\n      text.trimEnd() === text ? originWidth : measureText(text.trimEnd())\n\n    return {\n      originWidth,\n      endingSpacesWidth: originWidth - afterTrimEndWidth,\n      text,\n    }\n  }\n\n  // Global variables used to compute the text layout.\n  // @TODO: Use segments instead of words to properly support kerning.\n  let lineWidths = []\n  let baselines = []\n  let lineSegmentNumber = []\n  let texts: string[] = []\n  let wordPositionInLayout: (null | {\n    x: number\n    y: number\n    width: number\n    line: number\n    lineIndex: number\n    isImage: boolean\n  })[] = []\n\n  // With the given container width, compute the text layout.\n  function flow(width: number) {\n    let lines = 0\n    let maxWidth = 0\n    let lineIndex = -1\n    let height = 0\n    let currentWidth = 0\n    let currentLineHeight = 0\n    let currentBaselineOffset = 0\n\n    lineWidths = []\n    lineSegmentNumber = [0]\n    texts = []\n    wordPositionInLayout = []\n\n    // We naively implement the width calculation without proper kerning.\n    // @TODO: Support different writing modes.\n    // @TODO: Support RTL languages.\n    let i = 0\n    let prevLineEndingSpacesWidth = 0\n    while (i < words.length && lines < lineLimit) {\n      let word = words[i]\n      const forceBreak = requiredBreaks[i]\n\n      let w = 0\n\n      const {\n        originWidth,\n        endingSpacesWidth,\n        text: _word,\n      } = calc(word, currentWidth)\n      word = _word\n\n      w = originWidth\n      const lineEndingSpacesWidth = endingSpacesWidth\n\n      // When starting a new line from an empty line, we should push one extra\n      // line height.\n      if (forceBreak && currentLineHeight === 0) {\n        currentLineHeight = engine.height(word)\n      }\n\n      const allowedToJustify = textAlign === 'justify'\n\n      const willWrap =\n        i &&\n        // When determining whether a line break is necessary, the width of the\n        // trailing spaces is not included in the calculation, as the end boundary\n        // can be closely adjacent to the last non-space character.\n        // e.g.\n        // 'aaa bbb ccc'\n        // When the break line happens at the end of the `bbb`, what we see looks like this\n        // |aaa bbb|\n        // |ccc    |\n        currentWidth + w > width + lineEndingSpacesWidth &&\n        allowSoftWrap\n\n      // Need to break the word if:\n      // - we have break-word\n      // - the word is wider than the container width\n      // - the word will be put at the beginning of the line\n      const needToBreakWord =\n        allowBreakWord && w > width && (!currentWidth || willWrap || forceBreak)\n\n      if (needToBreakWord) {\n        // Break the word into multiple segments and continue the loop.\n        const chars = segment(word, 'grapheme')\n        words.splice(i, 1, ...chars)\n        if (currentWidth > 0) {\n          // Start a new line, spaces can be ignored.\n          lineWidths.push(currentWidth - prevLineEndingSpacesWidth)\n          baselines.push(currentBaselineOffset)\n          lines++\n          height += currentLineHeight\n          currentWidth = 0\n          currentLineHeight = 0\n          currentBaselineOffset = 0\n          lineSegmentNumber.push(1)\n          lineIndex = -1\n        }\n        prevLineEndingSpacesWidth = lineEndingSpacesWidth\n        continue\n      }\n      if (forceBreak || willWrap) {\n        // Start a new line, spaces can be ignored.\n        if (shouldCollapseTabsAndSpaces && word === Space) {\n          w = 0\n        }\n\n        lineWidths.push(currentWidth - prevLineEndingSpacesWidth)\n        baselines.push(currentBaselineOffset)\n        lines++\n        height += currentLineHeight\n        currentWidth = w\n        currentLineHeight = w ? Math.round(engine.height(word)) : 0\n        currentBaselineOffset = w ? Math.round(engine.baseline(word)) : 0\n        lineSegmentNumber.push(1)\n        lineIndex = -1\n\n        // If it's naturally broken, we update the max width.\n        // Since if there are multiple lines, the width should fit the\n        // container.\n        if (!forceBreak) {\n          maxWidth = Math.max(maxWidth, width)\n        }\n      } else {\n        // It fits into the current line.\n        currentWidth += w\n        const glyphHeight = Math.round(engine.height(word))\n        if (glyphHeight > currentLineHeight) {\n          // Use the baseline of the highest segment as the baseline of the line.\n          currentLineHeight = glyphHeight\n          currentBaselineOffset = Math.round(engine.baseline(word))\n        }\n        if (allowedToJustify) {\n          lineSegmentNumber[lineSegmentNumber.length - 1]++\n        }\n      }\n\n      if (allowedToJustify) {\n        lineIndex++\n      }\n\n      maxWidth = Math.max(maxWidth, currentWidth)\n\n      let x = currentWidth - w\n\n      if (w === 0) {\n        wordPositionInLayout.push({\n          y: height,\n          x,\n          width: 0,\n          line: lines,\n          lineIndex,\n          isImage: false,\n        })\n      } else {\n        const _texts = segment(word, 'word')\n\n        for (let j = 0; j < _texts.length; j++) {\n          const _text = _texts[j]\n          let _width = 0\n          let _isImage = false\n\n          if (isImage(_text)) {\n            _width = fontSize\n            _isImage = true\n          } else if (!embedFont && _text.length > 1) {\n            // When embedFont is false, use measureText for multi-character strings\n            // to ensure consistency with how currentWidth is accumulated (sum of\n            // grapheme widths). measureGrapheme uses getAdvanceWidth which includes\n            // kerning, causing position mismatches between consecutive <text> elements.\n            _width = measureText(_text)\n          } else {\n            _width = measureGrapheme(_text)\n          }\n\n          texts.push(_text)\n          wordPositionInLayout.push({\n            y: height,\n            x,\n            width: _width,\n            line: lines,\n            lineIndex,\n            isImage: _isImage,\n          })\n\n          x += _width\n        }\n      }\n\n      i++\n      prevLineEndingSpacesWidth = lineEndingSpacesWidth\n    }\n\n    if (currentWidth) {\n      if (lines < lineLimit) {\n        height += currentLineHeight\n      }\n      lines++\n      lineWidths.push(currentWidth)\n      baselines.push(currentBaselineOffset)\n    }\n\n    // @TODO: Support `line-height`.\n    return { width: maxWidth, height }\n  }\n\n  // It's possible that the text's measured size is different from the container's\n  // size, because the container might have a fixed width or height or being\n  // expanded by its parent.\n  let measuredTextSize = { width: 0, height: 0 }\n  textContainer.setMeasureFunc((containerWidth) => {\n    const { width, height } = flow(containerWidth)\n\n    // When doing `text-wrap: balance`, we reflow the text multiple times\n    // using binary search to find the best width.\n    // https://www.w3.org/TR/css-text-4/#valdef-text-wrap-balance\n    if (textWrap === 'balance') {\n      let l = width / 2\n      let r = width\n      let m: number = width\n      while (l + 1 < r) {\n        m = (l + r) / 2\n        const { height: mHeight } = flow(m)\n        if (mHeight > height) {\n          l = m\n        } else {\n          r = m\n        }\n      }\n      flow(r)\n      const _width = Math.ceil(r)\n      measuredTextSize = { width: _width, height }\n      return { width: _width, height }\n    }\n\n    // When doing `text-wrap: pretty`, we try to avoid ending a paragraph with a single word\n    // by reshaping all lines in a way that achieves more balanced line lengths\n    // This \"pretty\" line breaking algorithm tries to achieve optimal line breaks\n    // that avoid orphans (single words at the end of a paragraph) and create\n    // visually pleasing line lengths.\n    if (textWrap === 'pretty') {\n      // Check if the last line has a single word or is very short\n      // (typically less than 1/3 of the container width)\n      const lastLineWidth = lineWidths[lineWidths.length - 1]\n      const isLastLineShort = lastLineWidth < width / 3\n\n      if (isLastLineShort) {\n        // Reflow the paragraph with slightly adjusted line breaks\n        // to avoid orphans and create more even line lengths\n        // This is a simplified approach - a real implementation would use a\n        // more sophisticated algorithm to find optimal line breaks\n\n        // We'll just reflow once with slightly reduced width to force\n        // redistribution of words. This is much simplified from the actual\n        // paragraph-level line breaking algorithm which would compute scores\n        // for different line break combinations.\n        const adjustedWidth = width * 0.9\n        const result = flow(adjustedWidth)\n\n        // Use the result if it reduces orphans without adding too many lines\n        if (result.height <= height * 1.3) {\n          measuredTextSize = { width, height: result.height }\n          return { width, height: result.height }\n        }\n      }\n    }\n\n    const _width = Math.ceil(width)\n    measuredTextSize = { width: _width, height }\n    // This may be a temporary fix, I didn't dig deep into yoga.\n    // But when the return value of width here doesn't change (assuming the value of width is 216.9),\n    // when we later get the width through `parent.getComputedWidth()`, sometimes it returns 216 and sometimes 217.\n    // I'm not sure if this is a yoga bug, but it seems related to the entire page width.\n    // So I use Math.ceil.\n    return { width: _width, height }\n  })\n\n  const [x, y] = yield\n\n  let result = ''\n  let backgroundClipDef = ''\n\n  const clipPathId = inheritedStyle._inheritedClipPathId as string | undefined\n  const overflowMaskId = inheritedStyle._inheritedMaskId as number | undefined\n\n  const {\n    left: containerLeft,\n    top: containerTop,\n    width: containerWidth,\n    height: containerHeight,\n  } = textContainer.getComputedLayout()\n\n  // Convert textIndent to number if it's a string (e.g., percentage)\n  const textIndentNumber =\n    typeof textIndent === 'string'\n      ? lengthToNumber(\n          textIndent,\n          fontSize,\n          containerWidth,\n          parentStyle,\n          true\n        ) || 0\n      : textIndent\n\n  const parentContainerInnerWidth =\n    parent.getComputedWidth() -\n    parent.getComputedPadding(Yoga.EDGE_LEFT) -\n    parent.getComputedPadding(Yoga.EDGE_RIGHT) -\n    parent.getComputedBorder(Yoga.EDGE_LEFT) -\n    parent.getComputedBorder(Yoga.EDGE_RIGHT)\n\n  // Attach offset to the current node.\n  const left = x + containerLeft\n  const top = y + containerTop\n\n  const { matrix, opacity } = container(\n    {\n      left: containerLeft,\n      top: containerTop,\n      width: containerWidth,\n      height: containerHeight,\n      isInheritingTransform,\n    },\n    parentStyle\n  )\n\n  let filter = ''\n  if (parentStyle.textShadowOffset) {\n    const { textShadowColor, textShadowOffset, textShadowRadius } = parentStyle\n\n    filter = buildDropShadow(\n      {\n        width: measuredTextSize.width,\n        height: measuredTextSize.height,\n        id,\n      },\n      {\n        shadowColor: textShadowColor,\n        shadowOffset: textShadowOffset,\n        shadowRadius: textShadowRadius,\n      },\n      isFullyTransparent(parentStyle.color) ||\n        (_inheritedBackgroundClipTextHasBackground &&\n          isOpaqueWhite(parentStyle.color))\n    )\n\n    filter = buildXMLString('defs', {}, filter)\n  }\n\n  let decorationShape = ''\n  let mergedPath = ''\n  let extra = ''\n  let skippedLine = -1\n  type DecorationLine = {\n    left: number\n    top: number\n    ascender: number\n    width: number\n  }\n  let decorationLines: Record<number, DecorationLine | null> = {}\n  let decorationGlyphs: Record<number, GlyphBox[]> = {}\n  let wordBuffer: string | null = null\n  let bufferedOffset = 0\n\n  for (let i = 0; i < texts.length; i++) {\n    // Skip whitespace and empty characters.\n    const layout = wordPositionInLayout[i]\n    const nextLayout = wordPositionInLayout[i + 1]\n\n    if (!layout) continue\n\n    let text = texts[i]\n    let path: string | null = null\n    let isLastDisplayedBeforeEllipsis = false\n\n    const image = graphemeImages ? graphemeImages[text] : null\n\n    let topOffset = layout.y\n    let leftOffset = layout.x\n    const width = layout.width\n    const line = layout.line\n    const shouldCollectDecorationBoxes =\n      parentStyle.textDecorationLine === 'underline' &&\n      (parentStyle.textDecorationSkipInk || 'auto') !== 'none'\n\n    if (line === skippedLine) {\n      continue\n    }\n\n    // When `text-align` is `justify`, the width of the line will be adjusted.\n    let extendedWidth = false\n\n    // Apply text-indent to the first line (for both single and multi-line text)\n    if (line === 0 && textIndentNumber !== 0) {\n      leftOffset += textIndentNumber\n    }\n\n    if (lineWidths.length > 1) {\n      // Calculate alignment. Note that for Flexbox, there is only text\n      // alignment when the container is multi-line.\n      const remainingWidth = containerWidth - lineWidths[line]\n      if (textAlign === 'right' || textAlign === 'end') {\n        leftOffset += remainingWidth\n      } else if (textAlign === 'center') {\n        leftOffset += remainingWidth / 2\n      } else if (textAlign === 'justify') {\n        // Don't justify the last line.\n        if (line < lineWidths.length - 1) {\n          const segments = lineSegmentNumber[line]\n          const gutter = segments > 1 ? remainingWidth / (segments - 1) : 0\n          leftOffset += gutter * layout.lineIndex\n          extendedWidth = true\n        }\n      }\n\n      // Only round for embedded fonts (paths benefit from pixel alignment).\n      // For non-embedded fonts (<text> elements), keep fractional positions\n      // to maintain consistent spacing between consecutive elements.\n      if (embedFont) {\n        leftOffset = Math.round(leftOffset)\n      }\n    }\n\n    const baselineOfLine = baselines[line]\n    const baselineOfWord = engine.baseline(text)\n    const heightOfWord = engine.height(text)\n    const baselineDelta = baselineOfLine - baselineOfWord\n\n    const buildUnderlineBand = (offset: number) => {\n      if (\n        !shouldCollectDecorationBoxes ||\n        parentStyle.textDecorationLine !== 'underline'\n      ) {\n        return undefined\n      }\n      const baseline = top + offset + baselineDelta + baselineOfWord\n      return {\n        underlineY: baseline + baselineOfWord * 0.1,\n        strokeWidth: Math.max(1, fontSize * 0.1),\n      }\n    }\n\n    if (!decorationLines[line]) {\n      decorationLines[line] = {\n        left: leftOffset,\n        top: top + topOffset + baselineDelta,\n        ascender: baselineOfWord,\n        width: extendedWidth ? containerWidth : lineWidths[line],\n      }\n    }\n\n    if (lineLimit !== Infinity) {\n      let _blockEllipsis = blockEllipsis\n      let ellipsisWidth = measureGrapheme(blockEllipsis)\n      if (ellipsisWidth > parentContainerInnerWidth) {\n        _blockEllipsis = HorizontalEllipsis\n        ellipsisWidth = measureGrapheme(_blockEllipsis)\n      }\n      const spaceWidth = measureGrapheme(Space)\n      const isNotLastLine = line < lineWidths.length - 1\n      const isLastAllowedLine = line + 1 === lineLimit\n\n      function calcEllipsis(baseWidth: number, _text: string) {\n        const chars = segment(_text, 'grapheme', locale)\n\n        let subset = ''\n        let resolvedWidth = 0\n\n        for (const char of chars) {\n          const w = baseWidth + measureGraphemeArray([subset + char])\n          if (\n            // Keep at least one character:\n            // > The first character or atomic inline-level element on a line\n            // must be clipped rather than ellipsed.\n            // https://drafts.csswg.org/css-overflow/#text-overflow\n            subset &&\n            w + ellipsisWidth > parentContainerInnerWidth\n          ) {\n            break\n          }\n          subset += char\n          resolvedWidth = w\n        }\n\n        return {\n          subset,\n          resolvedWidth,\n        }\n      }\n\n      if (\n        isLastAllowedLine &&\n        (isNotLastLine || lineWidths[line] > parentContainerInnerWidth)\n      ) {\n        if (\n          leftOffset + width + ellipsisWidth + spaceWidth >\n          parentContainerInnerWidth\n        ) {\n          const { subset, resolvedWidth } = calcEllipsis(leftOffset, text)\n\n          text = subset + _blockEllipsis\n          skippedLine = line\n          decorationLines[line].width = Math.max(\n            0,\n            resolvedWidth - decorationLines[line].left\n          )\n          isLastDisplayedBeforeEllipsis = true\n        } else if (nextLayout && nextLayout.line !== line) {\n          if (textAlign === 'center') {\n            const { subset, resolvedWidth } = calcEllipsis(leftOffset, text)\n\n            text = subset + _blockEllipsis\n            skippedLine = line\n            decorationLines[line].width = Math.max(\n              0,\n              resolvedWidth - decorationLines[line].left\n            )\n            isLastDisplayedBeforeEllipsis = true\n          } else {\n            const nextLineText = texts[i + 1]\n\n            const { subset, resolvedWidth } = calcEllipsis(\n              width + leftOffset,\n              nextLineText\n            )\n\n            text = text + subset + _blockEllipsis\n            skippedLine = line\n            decorationLines[line].width = Math.max(\n              0,\n              resolvedWidth - decorationLines[line].left\n            )\n            isLastDisplayedBeforeEllipsis = true\n          }\n        }\n      }\n    }\n\n    if (image) {\n      // For images, we remove the baseline offset.\n      topOffset += 0\n    } else if (embedFont) {\n      // If the current word and the next word are on the same line, we try to\n      // merge them together to better handle the kerning.\n      if (\n        !text.includes(Tab) &&\n        !wordSeparators.includes(text) &&\n        texts[i + 1] &&\n        nextLayout &&\n        !nextLayout.isImage &&\n        topOffset === nextLayout.y &&\n        !isLastDisplayedBeforeEllipsis\n      ) {\n        if (wordBuffer === null) {\n          bufferedOffset = leftOffset\n        }\n        wordBuffer = wordBuffer === null ? text : wordBuffer + text\n        continue\n      }\n\n      const finalizedSegment = wordBuffer === null ? text : wordBuffer + text\n      const finalizedLeftOffset =\n        wordBuffer === null ? leftOffset : bufferedOffset\n      const finalizedWidth = layout.width + leftOffset - finalizedLeftOffset\n\n      const band = buildUnderlineBand(topOffset)\n\n      const svg = engine.getSVG(\n        finalizedSegment.replace(/(\\t)+/g, ''),\n        {\n          fontSize,\n          left: left + finalizedLeftOffset,\n          // Since we need to pass the baseline position, add the ascender to the top.\n          top: top + topOffset + baselineOfWord + baselineDelta,\n          letterSpacing,\n        },\n        band\n      )\n\n      path = svg.path\n\n      if (shouldCollectDecorationBoxes && svg.boxes && svg.boxes.length) {\n        ;(decorationGlyphs[line] || (decorationGlyphs[line] = [])).push(\n          ...svg.boxes\n        )\n      }\n\n      wordBuffer = null\n\n      if (debug) {\n        extra +=\n          // Glyph\n          buildXMLString('rect', {\n            x: left + finalizedLeftOffset,\n            y: top + topOffset + baselineDelta,\n            width: finalizedWidth,\n            height: heightOfWord,\n            fill: 'transparent',\n            stroke: '#575eff',\n            'stroke-width': 1,\n            transform: matrix ? matrix : undefined,\n            'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n          }) +\n          // Baseline\n          buildXMLString('line', {\n            x1: left + leftOffset,\n            x2: left + leftOffset + layout.width,\n            y1: top + topOffset + baselineDelta + baselineOfWord,\n            y2: top + topOffset + baselineDelta + baselineOfWord,\n            stroke: '#14c000',\n            'stroke-width': 1,\n            transform: matrix ? matrix : undefined,\n            'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n          })\n      }\n    } else {\n      // We need manually add the font ascender height to ensure it starts\n      // at the baseline because <text>'s alignment baseline is set to `hanging`\n      // by default and supported to change in SVG 1.1.\n      topOffset += baselineOfWord + baselineDelta\n\n      if (shouldCollectDecorationBoxes && !image) {\n        const band = buildUnderlineBand(topOffset)\n\n        const svg = engine.getSVG(\n          text.replace(/(\\t)+/g, ''),\n          {\n            fontSize,\n            left: left + leftOffset,\n            top: top + topOffset,\n            letterSpacing,\n          },\n          band\n        )\n\n        if (svg.boxes && svg.boxes.length) {\n          ;(decorationGlyphs[line] || (decorationGlyphs[line] = [])).push(\n            ...svg.boxes\n          )\n        }\n      }\n    }\n\n    if (path !== null) {\n      mergedPath += path + ' '\n    } else {\n      const [t, shape] = buildText(\n        {\n          content: text,\n          filter,\n          id,\n          left: left + leftOffset,\n          top: top + topOffset,\n          width,\n          height: heightOfWord,\n          matrix,\n          opacity,\n          image,\n          clipPathId,\n          debug,\n          shape: !!_inheritedBackgroundClipTextPath,\n        },\n        parentStyle\n      )\n      result += t\n      backgroundClipDef += shape\n    }\n\n    if (isLastDisplayedBeforeEllipsis) {\n      break\n    }\n  }\n\n  if (parentStyle.textDecorationLine) {\n    decorationShape = Object.entries(decorationLines)\n      .map(([lineIndex, deco]) => {\n        if (!deco) return ''\n        const glyphBoxes = decorationGlyphs[lineIndex] || []\n\n        return buildDecoration(\n          {\n            left: left + deco.left,\n            top: deco.top,\n            width: deco.width,\n            ascender: deco.ascender,\n            clipPathId,\n            matrix,\n            glyphBoxes,\n          },\n          parentStyle\n        )\n      })\n      .join('')\n  }\n\n  // Embed the font as path.\n  if (mergedPath) {\n    const p =\n      (!isFullyTransparent(parentStyle.color) || filter) && opacity !== 0\n        ? `<g ${overflowMaskId ? `mask=\"url(#${overflowMaskId})\"` : ''} ${\n            clipPathId ? `clip-path=\"url(#${clipPathId})\"` : ''\n          }>` +\n          buildXMLString('path', {\n            fill:\n              filter &&\n              (isFullyTransparent(parentStyle.color) ||\n                (_inheritedBackgroundClipTextHasBackground &&\n                  isOpaqueWhite(parentStyle.color)))\n                ? 'black'\n                : parentStyle.color,\n            d: mergedPath,\n            transform: matrix ? matrix : undefined,\n            opacity: opacity !== 1 ? opacity : undefined,\n            style: cssFilter ? `filter:${cssFilter}` : undefined,\n            'stroke-width': inheritedStyle.WebkitTextStrokeWidth\n              ? `${inheritedStyle.WebkitTextStrokeWidth}px`\n              : undefined,\n            stroke: inheritedStyle.WebkitTextStrokeWidth\n              ? inheritedStyle.WebkitTextStrokeColor\n              : undefined,\n            'stroke-linejoin': inheritedStyle.WebkitTextStrokeWidth\n              ? 'round'\n              : undefined,\n            'paint-order': inheritedStyle.WebkitTextStrokeWidth\n              ? 'stroke'\n              : undefined,\n          }) +\n          '</g>'\n        : ''\n\n    if (_inheritedBackgroundClipTextPath) {\n      backgroundClipDef = buildXMLString('path', {\n        d: mergedPath,\n        transform: matrix ? matrix : undefined,\n      })\n    }\n\n    result +=\n      (filter\n        ? filter +\n          buildXMLString(\n            'g',\n            { filter: `url(#satori_s-${id})` },\n            p + decorationShape\n          )\n        : p + decorationShape) + extra\n  } else if (decorationShape) {\n    result += filter\n      ? buildXMLString('g', { filter: `url(#satori_s-${id})` }, decorationShape)\n      : decorationShape\n  }\n\n  // Attach information to the parent node.\n  if (backgroundClipDef) {\n    ;(parentStyle._inheritedBackgroundClipTextPath as any).value +=\n      backgroundClipDef\n  }\n\n  return result\n}\n\nfunction createTextContainerNode(Yoga: TYoga, textAlign: string): YogaNode {\n  // Create a container node for this text fragment.\n  const textContainer = Yoga.Node.create()\n  textContainer.setAlignItems(Yoga.ALIGN_BASELINE)\n  textContainer.setJustifyContent(\n    v(\n      textAlign,\n      {\n        left: Yoga.JUSTIFY_FLEX_START,\n        right: Yoga.JUSTIFY_FLEX_END,\n        center: Yoga.JUSTIFY_CENTER,\n        justify: Yoga.JUSTIFY_SPACE_BETWEEN,\n        // We don't have other writing modes yet.\n        start: Yoga.JUSTIFY_FLEX_START,\n        end: Yoga.JUSTIFY_FLEX_END,\n      },\n      Yoga.JUSTIFY_FLEX_START,\n      'textAlign'\n    )\n  )\n\n  return textContainer\n}\n\nfunction detectTabs(text: string):\n  | {\n      index: null\n      tabCount: 0\n    }\n  | {\n      index: number\n      tabCount: number\n    } {\n  const result = /(\\t)+/.exec(text)\n  return result\n    ? {\n        index: result.index,\n        tabCount: result[0].length,\n      }\n    : {\n        index: null,\n        tabCount: 0,\n      }\n}\n","import { parseLinearGradient, ColorStop } from 'css-gradient-parser'\nimport { normalizeStops } from './utils.js'\nimport { buildXMLString, calcDegree, lengthToNumber } from '../../utils.js'\n\nexport function buildLinearGradient(\n  {\n    id,\n    width,\n    height,\n    repeatX,\n    repeatY,\n  }: {\n    id: string\n    width: number\n    height: number\n    repeatX: boolean\n    repeatY: boolean\n  },\n  image: string,\n  dimensions: number[],\n  offsets: number[],\n  inheritableStyle: Record<string, number | string>,\n  from?: 'background' | 'mask'\n) {\n  const parsed = parseLinearGradient(image)\n  const [imageWidth, imageHeight] = dimensions\n  const repeating = image.startsWith('repeating')\n\n  // Calculate the direction.\n  let points, length, xys\n\n  if (parsed.orientation.type === 'directional') {\n    points = resolveXYFromDirection(parsed.orientation.value)\n\n    length = Math.sqrt(\n      Math.pow((points.x2 - points.x1) * imageWidth, 2) +\n        Math.pow((points.y2 - points.y1) * imageHeight, 2)\n    )\n  } else if (parsed.orientation.type === 'angular') {\n    const { length: l, ...p } = calcNormalPoint(\n      (calcDegree(\n        `${parsed.orientation.value.value}${parsed.orientation.value.unit}`\n      ) /\n        180) *\n        Math.PI,\n      imageWidth,\n      imageHeight\n    )\n\n    length = l\n    points = p\n  }\n\n  xys = repeating\n    ? calcPercentage(parsed.stops, length, points, inheritableStyle)\n    : points\n\n  const stops = normalizeStops(\n    repeating ? resolveRepeatingCycle(parsed.stops, length) : length,\n    parsed.stops,\n    inheritableStyle,\n    repeating,\n    from\n  )\n\n  const gradientId = `satori_bi${id}`\n  const patternId = `satori_pattern_${id}`\n\n  const defs = buildXMLString(\n    'pattern',\n    {\n      id: patternId,\n      x: offsets[0] / width,\n      y: offsets[1] / height,\n      width: repeatX ? imageWidth / width : '1',\n      height: repeatY ? imageHeight / height : '1',\n      patternUnits: 'objectBoundingBox',\n    },\n    buildXMLString(\n      'linearGradient',\n      {\n        id: gradientId,\n        ...xys,\n        spreadMethod: repeating ? 'repeat' : 'pad',\n      },\n      stops\n        .map((stop) =>\n          buildXMLString('stop', {\n            offset: (stop.offset ?? 0) * 100 + '%',\n            'stop-color': stop.color,\n          })\n        )\n        .join('')\n    ) +\n      buildXMLString('rect', {\n        x: 0,\n        y: 0,\n        width: imageWidth,\n        height: imageHeight,\n        fill: `url(#${gradientId})`,\n      })\n  )\n  return [patternId, defs]\n}\n\nfunction resolveRepeatingCycle(stops: ColorStop[], length: number) {\n  const last = stops[stops.length - 1]\n  const { offset } = last\n  if (!offset) return length\n\n  if (offset.unit === '%') return (Number(offset.value) / 100) * length\n\n  return Number(offset.value)\n}\n\nfunction resolveXYFromDirection(dir: string) {\n  let x1 = 0,\n    y1 = 0,\n    x2 = 0,\n    y2 = 0\n\n  if (dir.includes('top')) {\n    y1 = 1\n  } else if (dir.includes('bottom')) {\n    y2 = 1\n  }\n\n  if (dir.includes('left')) {\n    x1 = 1\n  } else if (dir.includes('right')) {\n    x2 = 1\n  }\n\n  if (!x1 && !x2 && !y1 && !y2) {\n    y1 = 1\n  }\n\n  return { x1, y1, x2, y2 }\n}\n\n/**\n * calc start point and end point of linear gradient\n */\nfunction calcNormalPoint(v: number, w: number, h: number) {\n  const r = Math.pow(h / w, 2)\n\n  // make sure angle is 0 <= angle <= 360\n  v = ((v % (Math.PI * 2)) + Math.PI * 2) % (Math.PI * 2)\n\n  let x1, y1, x2, y2, length, tmp, a, b\n\n  const dfs = (angle: number) => {\n    if (angle === 0) {\n      x1 = 0\n      y1 = h\n      x2 = 0\n      y2 = 0\n      length = h\n      return\n    } else if (angle === Math.PI / 2) {\n      x1 = 0\n      y1 = 0\n      x2 = w\n      y2 = 0\n      length = w\n      return\n    }\n    if (angle > 0 && angle < Math.PI / 2) {\n      x1 =\n        ((r * w) / 2 / Math.tan(angle) - h / 2) /\n        (Math.tan(angle) + r / Math.tan(angle))\n      y1 = Math.tan(angle) * x1 + h\n      x2 = Math.abs(w / 2 - x1) + w / 2\n      y2 = h / 2 - Math.abs(y1 - h / 2)\n      length = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2))\n      // y = -1 / tan * x = h / 2 +1 / tan * w/2\n      // y = tan * x + h\n      a =\n        (w / 2 / Math.tan(angle) - h / 2) /\n        (Math.tan(angle) + 1 / Math.tan(angle))\n      b = Math.tan(angle) * a + h\n      length = 2 * Math.sqrt(Math.pow(w / 2 - a, 2) + Math.pow(h / 2 - b, 2))\n      return\n    } else if (angle > Math.PI / 2 && angle < Math.PI) {\n      x1 =\n        (h / 2 + (r * w) / 2 / Math.tan(angle)) /\n        (Math.tan(angle) + r / Math.tan(angle))\n      y1 = Math.tan(angle) * x1\n      x2 = Math.abs(w / 2 - x1) + w / 2\n      y2 = h / 2 + Math.abs(y1 - h / 2)\n      // y = -1 / tan * x + h / 2 + 1 / tan * w / 2\n      // y = tan * x\n      a =\n        (w / 2 / Math.tan(angle) + h / 2) /\n        (Math.tan(angle) + 1 / Math.tan(angle))\n      b = Math.tan(angle) * a\n      length = 2 * Math.sqrt(Math.pow(w / 2 - a, 2) + Math.pow(h / 2 - b, 2))\n      return\n    } else if (angle >= Math.PI) {\n      dfs(angle - Math.PI)\n\n      tmp = x1\n      x1 = x2\n      x2 = tmp\n      tmp = y1\n      y1 = y2\n      y2 = tmp\n    }\n  }\n\n  dfs(v)\n\n  return {\n    x1: x1 / w,\n    y1: y1 / h,\n    x2: x2 / w,\n    y2: y2 / h,\n    length,\n  }\n}\n\nfunction calcPercentage(\n  stops: ColorStop[],\n  length: number,\n  points: {\n    x1: number\n    y1: number\n    x2: number\n    y2: number\n  },\n  inheritableStyle: Record<string, string | number>\n) {\n  const { x1, x2, y1, y2 } = points\n  const p1 = !stops[0].offset\n    ? 0\n    : stops[0].offset.unit === '%'\n    ? Number(stops[0].offset.value) / 100\n    : lengthToNumber(\n        `${stops[0].offset.value}${stops[0].offset.unit}`,\n        inheritableStyle.fontSize as number,\n        length,\n        inheritableStyle,\n        true\n      ) / length\n  const p2 = !stops.at(-1).offset\n    ? 1\n    : stops.at(-1).offset.unit === '%'\n    ? Number(stops.at(-1).offset.value) / 100\n    : lengthToNumber(\n        `${stops.at(-1).offset.value}${stops.at(-1).offset.unit}`,\n        inheritableStyle.fontSize as number,\n        length,\n        inheritableStyle,\n        true\n      ) / length\n\n  const sx = (x2 - x1) * p1 + x1\n  const sy = (y2 - y1) * p1 + y1\n  const ex = (x2 - x1) * p2 + x1\n  const ey = (y2 - y1) * p2 + y1\n\n  return {\n    x1: sx,\n    y1: sy,\n    x2: ex,\n    y2: ey,\n  }\n}\n","import { lengthToNumber } from '../../utils.js'\nimport cssColorParse from 'parse-css-color'\nimport type { ColorStop } from 'css-gradient-parser'\n\ninterface Stop {\n  color: string\n  offset?: number\n}\n\nexport function normalizeStops(\n  totalLength: number,\n  colorStops: ColorStop[],\n  inheritedStyle: Record<string, string | number>,\n  repeating: boolean,\n  from?: 'background' | 'mask'\n) {\n  // Resolve the color stops based on the spec:\n  // https://drafts.csswg.org/css-images/#color-stop-syntax\n  const stops: Stop[] = []\n  const lastColorStop = colorStops.at(-1)\n  const totalPercentage =\n    lastColorStop &&\n    lastColorStop.offset &&\n    lastColorStop.offset.unit === '%' &&\n    repeating\n      ? +lastColorStop.offset.value\n      : 100\n  for (const stop of colorStops) {\n    const { color } = stop\n    if (!stops.length) {\n      // First stop, ensure it's at the start.\n      stops.push({\n        offset: 0,\n        color,\n      })\n\n      if (!stop.offset) continue\n      if (stop.offset.value === '0') continue\n    }\n\n    // All offsets are relative values (0-1) in SVG.\n    const offset =\n      typeof stop.offset === 'undefined'\n        ? undefined\n        : stop.offset.unit === '%'\n        ? +stop.offset.value / totalPercentage\n        : Number(\n            lengthToNumber(\n              `${stop.offset.value}${stop.offset.unit}`,\n              inheritedStyle.fontSize as number,\n              totalLength,\n              inheritedStyle,\n              true\n            )\n          ) / totalLength\n\n    stops.push({\n      offset,\n      color,\n    })\n  }\n  if (!stops.length) {\n    stops.push({\n      offset: 0,\n      color: 'transparent',\n    })\n  }\n  // Last stop, ensure it's at the end.\n  const lastStop = stops[stops.length - 1]\n  if (lastStop.offset !== 1) {\n    if (typeof lastStop.offset === 'undefined') {\n      lastStop.offset = 1\n    } else if (repeating) {\n      stops[stops.length - 1] = {\n        offset: 1,\n        color: lastStop.color,\n      }\n    } else {\n      stops.push({\n        offset: 1,\n        color: lastStop.color,\n      })\n    }\n  }\n\n  let previousStop = 0\n  let nextStop = 1\n  // Evenly distribute the missing stop offsets.\n  for (let i = 0; i < stops.length; i++) {\n    if (typeof stops[i].offset === 'undefined') {\n      // Find the next stop that has an offset.\n      if (nextStop < i) nextStop = i\n      while (typeof stops[nextStop].offset === 'undefined') nextStop++\n\n      stops[i].offset =\n        ((stops[nextStop].offset - stops[previousStop].offset) /\n          (nextStop - previousStop)) *\n          (i - previousStop) +\n        stops[previousStop].offset\n    } else {\n      previousStop = i\n    }\n  }\n\n  if (from === 'mask') {\n    return stops.map((stop) => {\n      const color = cssColorParse(stop.color)\n      if (!color) return stop\n      if (color.alpha === 0) {\n        return { ...stop, color: `rgba(0, 0, 0, 1)` }\n      } else {\n        return { ...stop, color: `rgba(255, 255, 255, ${color.alpha})` }\n      }\n    })\n  }\n\n  return stops\n}\n","import {\n  parseRadialGradient,\n  RadialResult,\n  RadialPropertyValue,\n  ColorStop,\n} from 'css-gradient-parser'\nimport { buildXMLString, lengthToNumber } from '../../utils.js'\nimport { normalizeStops } from './utils.js'\n\nexport function buildRadialGradient(\n  {\n    id,\n    width,\n    height,\n    repeatX,\n    repeatY,\n  }: {\n    id: string\n    width: number\n    height: number\n    repeatX: boolean\n    repeatY: boolean\n  },\n  image: string,\n  dimensions: number[],\n  offsets: number[],\n  inheritableStyle: Record<string, number | string>,\n  from?: 'background' | 'mask'\n) {\n  const {\n    shape,\n    stops: colorStops,\n    position,\n    size,\n    repeating,\n  } = parseRadialGradient(image)\n  const [xDelta, yDelta] = dimensions\n\n  let cx: number = xDelta / 2\n  let cy: number = yDelta / 2\n\n  const pos = calcRadialGradient(\n    position.x,\n    position.y,\n    xDelta,\n    yDelta,\n    inheritableStyle.fontSize as number,\n    inheritableStyle\n  )\n  cx = pos.x\n  cy = pos.y\n\n  const colorStopTotalLength = calcColorStopTotalLength(\n    width,\n    colorStops,\n    repeating,\n    inheritableStyle\n  )\n\n  const stops = normalizeStops(\n    colorStopTotalLength,\n    colorStops,\n    inheritableStyle,\n    repeating,\n    from\n  )\n\n  const gradientId = `satori_radial_${id}`\n  const patternId = `satori_pattern_${id}`\n  const maskId = `satori_mask_${id}`\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/radial-gradient()#values\n  const spread = calcRadius(\n    shape as Shape,\n    size,\n    inheritableStyle.fontSize as number,\n    { x: cx, y: cy },\n    [xDelta, yDelta],\n    inheritableStyle,\n    repeating\n  )\n\n  const props = calcRadialGradientProps(\n    shape as Shape,\n    inheritableStyle.fontSize as number,\n    colorStops,\n    [xDelta, yDelta],\n    inheritableStyle,\n    repeating,\n    spread\n  )\n\n  // TODO: check for repeat-x/repeat-y\n  const defs = buildXMLString(\n    'pattern',\n    {\n      id: patternId,\n      x: offsets[0] / width,\n      y: offsets[1] / height,\n      width: repeatX ? xDelta / width : '1',\n      height: repeatY ? yDelta / height : '1',\n      patternUnits: 'objectBoundingBox',\n    },\n    buildXMLString(\n      'radialGradient',\n      {\n        id: gradientId,\n        ...props,\n      },\n      stops\n        .map((stop) =>\n          buildXMLString('stop', {\n            offset: stop.offset || 0,\n            'stop-color': stop.color,\n          })\n        )\n        .join('')\n    ) +\n      buildXMLString(\n        'mask',\n        {\n          id: maskId,\n        },\n        buildXMLString('rect', {\n          x: 0,\n          y: 0,\n          width: xDelta,\n          height: yDelta,\n          fill: '#fff',\n        })\n      ) +\n      buildXMLString('rect', {\n        x: 0,\n        y: 0,\n        width: xDelta,\n        height: yDelta,\n        fill: stops.at(-1)?.color || 'transparent',\n      }) +\n      buildXMLString(shape, {\n        cx: cx,\n        cy: cy,\n        width: xDelta,\n        height: yDelta,\n        ...spread,\n        fill: `url(#${gradientId})`,\n        mask: `url(#${maskId})`,\n      })\n  )\n\n  const result = [patternId, defs]\n  return result\n}\n\ntype PositionKeyWord = 'center' | 'left' | 'right' | 'top' | 'bottom'\n\nfunction calcColorStopTotalLength(\n  width: number,\n  stops: ColorStop[],\n  repeating: boolean,\n  inheritableStyle: Record<string, string | number>\n) {\n  if (!repeating) return width\n  const lastStop = stops.at(-1)\n  if (!lastStop || !lastStop.offset || lastStop.offset.unit === '%')\n    return width\n\n  return lengthToNumber(\n    `${lastStop.offset.value}${lastStop.offset.unit}`,\n    +inheritableStyle.fontSize,\n    width,\n    inheritableStyle,\n    true\n  )\n}\n\nfunction calcRadialGradient(\n  cx: RadialPropertyValue,\n  cy: RadialPropertyValue,\n  xDelta: number,\n  yDelta: number,\n  baseFontSize: number,\n  style: Record<string, string | number>\n) {\n  const pos: { x: number; y: number } = { x: xDelta / 2, y: yDelta / 2 }\n  if (cx.type === 'keyword') {\n    Object.assign(\n      pos,\n      calcPos(cx.value as PositionKeyWord, xDelta, yDelta, 'x')\n    )\n  } else {\n    pos.x =\n      lengthToNumber(\n        `${cx.value.value}${cx.value.unit}`,\n        baseFontSize,\n        xDelta,\n        style,\n        true\n      ) ?? xDelta / 2\n  }\n\n  if (cy.type === 'keyword') {\n    Object.assign(\n      pos,\n      calcPos(cy.value as PositionKeyWord, xDelta, yDelta, 'y')\n    )\n  } else {\n    pos.y =\n      lengthToNumber(\n        `${cy.value.value}${cy.value.unit}`,\n        baseFontSize,\n        yDelta,\n        style,\n        true\n      ) ?? yDelta / 2\n  }\n\n  return pos\n}\n\nfunction calcPos(\n  key: PositionKeyWord,\n  xDelta: number,\n  yDelta: number,\n  dir: 'x' | 'y'\n) {\n  switch (key) {\n    case 'center':\n      return { [dir]: dir === 'x' ? xDelta / 2 : yDelta / 2 }\n    case 'left':\n      return { x: 0 }\n    case 'top':\n      return { y: 0 }\n    case 'right':\n      return { x: xDelta }\n    case 'bottom':\n      return { y: yDelta }\n  }\n}\n\ntype Shape = 'circle' | 'ellipse'\n\nfunction calcRadialGradientProps(\n  shape: Shape,\n  baseFontSize: number,\n  colorStops: ColorStop[],\n  [xDelta, yDelta]: [number, number],\n  inheritableStyle: Record<string, string | number>,\n  repeating: boolean,\n  spread: Record<string, number>\n) {\n  const { r, rx, ratio = 1 } = spread\n  if (!repeating) {\n    return {\n      spreadMethod: 'pad',\n    }\n  }\n  const last = colorStops.at(-1)\n  const radius = shape === 'circle' ? r * 2 : rx * 2\n  return {\n    spreadMethod: 'repeat',\n    cx: '50%',\n    cy: '50%',\n    r:\n      last.offset.unit === '%'\n        ? `${\n            (Number(last.offset.value) * Math.min(yDelta / xDelta, 1)) / ratio\n          }%`\n        : Number(\n            lengthToNumber(\n              `${last.offset.value}${last.offset.unit}`,\n              baseFontSize,\n              xDelta,\n              inheritableStyle,\n              true\n            ) / radius\n          ),\n  }\n}\n\nfunction calcRadius(\n  shape: Shape,\n  endingShape: RadialResult['size'],\n  baseFontSize: number,\n  centerAxis: { x: number; y: number },\n  length: [number, number],\n  inheritableStyle: Record<string, string | number>,\n  repeating: boolean\n) {\n  const [xDelta, yDelta] = length\n  const { x: cx, y: cy } = centerAxis\n  const spread: Record<string, number> = {}\n  let fx = 0\n  let fy = 0\n\n  if (isSizeAllLength(endingShape)) {\n    if (endingShape.some((v) => v.value.value.startsWith('-'))) {\n      throw new Error(\n        'disallow setting negative values to the size of the shape. Check https://w3c.github.io/csswg-drafts/css-images/#valdef-rg-size-length-0'\n      )\n    }\n    if (shape === 'circle') {\n      Object.assign(spread, {\n        r: Number(\n          lengthToNumber(\n            `${endingShape[0].value.value}${endingShape[0].value.unit}`,\n            baseFontSize,\n            xDelta,\n            inheritableStyle,\n            true\n          )\n        ),\n      })\n    } else {\n      Object.assign(spread, {\n        rx: Number(\n          lengthToNumber(\n            `${endingShape[0].value.value}${endingShape[0].value.unit}`,\n            baseFontSize,\n            xDelta,\n            inheritableStyle,\n            true\n          )\n        ),\n        ry: Number(\n          lengthToNumber(\n            `${endingShape[1].value.value}${endingShape[1].value.unit}`,\n            baseFontSize,\n            yDelta,\n            inheritableStyle,\n            true\n          )\n        ),\n      })\n    }\n    patchSpread(spread, xDelta, yDelta, cx, cy, repeating, shape)\n    return spread\n  }\n\n  switch (endingShape[0].value) {\n    case 'farthest-corner':\n      fx = Math.max(Math.abs(xDelta - cx), Math.abs(cx))\n      fy = Math.max(Math.abs(yDelta - cy), Math.abs(cy))\n      break\n    case 'closest-corner':\n      fx = Math.min(Math.abs(xDelta - cx), Math.abs(cx))\n      fy = Math.min(Math.abs(yDelta - cy), Math.abs(cy))\n      break\n    case 'farthest-side':\n      if (shape === 'circle') {\n        spread.r = Math.max(\n          Math.abs(xDelta - cx),\n          Math.abs(cx),\n          Math.abs(yDelta - cy),\n          Math.abs(cy)\n        )\n      } else {\n        spread.rx = Math.max(Math.abs(xDelta - cx), Math.abs(cx))\n        spread.ry = Math.max(Math.abs(yDelta - cy), Math.abs(cy))\n      }\n      patchSpread(spread, xDelta, yDelta, cx, cy, repeating, shape)\n      return spread\n    case 'closest-side':\n      if (shape === 'circle') {\n        spread.r = Math.min(\n          Math.abs(xDelta - cx),\n          Math.abs(cx),\n          Math.abs(yDelta - cy),\n          Math.abs(cy)\n        )\n      } else {\n        spread.rx = Math.min(Math.abs(xDelta - cx), Math.abs(cx))\n        spread.ry = Math.min(Math.abs(yDelta - cy), Math.abs(cy))\n      }\n      patchSpread(spread, xDelta, yDelta, cx, cy, repeating, shape)\n\n      return spread\n  }\n  if (shape === 'circle') {\n    spread.r = Math.sqrt(fx * fx + fy * fy)\n  } else {\n    Object.assign(spread, f2r(fx, fy))\n  }\n\n  patchSpread(spread, xDelta, yDelta, cx, cy, repeating, shape)\n\n  return spread\n}\n\n// compare with farthest-corner to make it cover the whole container\nfunction patchSpread(\n  spread: Record<string, number>,\n  xDelta: number,\n  yDelta: number,\n  cx: number,\n  cy: number,\n  repeating: boolean,\n  shape: Shape\n) {\n  if (repeating) {\n    if (shape === 'ellipse') {\n      const mfx = Math.max(Math.abs(xDelta - cx), Math.abs(cx))\n      const mfy = Math.max(Math.abs(yDelta - cy), Math.abs(cy))\n\n      const { rx: mrx, ry: mry } = f2r(mfx, mfy)\n\n      spread.ratio = Math.max(mrx / spread.rx, mry / spread.ry)\n      if (spread.ratio > 1) {\n        spread.rx *= spread.ratio\n        spread.ry *= spread.ratio\n      }\n    } else {\n      const mfx = Math.max(Math.abs(xDelta - cx), Math.abs(cx))\n      const mfy = Math.max(Math.abs(yDelta - cy), Math.abs(cy))\n\n      const mr = Math.sqrt(mfx * mfx + mfy * mfy)\n\n      spread.ratio = mr / spread.r\n      if (spread.ratio > 1) {\n        spread.r = mr\n      }\n    }\n  }\n}\n\nfunction f2r(fx: number, fy: number) {\n  // Spec: https://drafts.csswg.org/css-images/#typedef-size\n  // Get the aspect ratio of the closest-side size.\n  const ratio = fy !== 0 ? fx / fy : 1\n\n  if (fx === 0) {\n    return {\n      rx: 0,\n      ry: 0,\n    }\n  } else {\n    // fx^2/a^2 + fy^2/b^2 = 1\n    // fx^2/(b*ratio)^2 + fy^2/b^2 = 1\n    // (fx^2+fy^2*ratio^2) = (b*ratio)^2\n    // b = sqrt(fx^2+fy^2*ratio^2)/ratio\n\n    const ry = Math.sqrt(fx * fx + fy * fy * ratio * ratio) / ratio\n    return {\n      ry,\n      rx: ry * ratio,\n    }\n  }\n}\n\nfunction isSizeAllLength(v: RadialPropertyValue[]): v is Array<{\n  type: 'length'\n  value: {\n    unit: string\n    value: string\n  }\n}> {\n  return !v.some((s) => s.type === 'keyword')\n}\n","import CssDimension from '../vendor/parse-css-dimension/index.js'\nimport { buildXMLString } from '../utils.js'\n\nimport { resolveImageData } from '../handler/image.js'\nimport { buildLinearGradient } from './gradient/linear.js'\nimport { buildRadialGradient } from './gradient/radial.js'\nimport cssColorParse from 'parse-css-color'\n\ninterface Background {\n  attachment?: string\n  color?: string\n  clip: string\n  image: string\n  origin?: string\n  position: string\n  size: string\n  repeat: string\n}\n\nfunction toAbsoluteValue(v: string | number, base: number) {\n  if (typeof v === 'string' && v.endsWith('%')) {\n    return (base * parseFloat(v)) / 100\n  }\n  return +v\n}\n\nfunction calculateKeywordSize(\n  keyword: string,\n  containerWidth: number,\n  containerHeight: number,\n  imageWidth: number,\n  imageHeight: number\n): [number, number] {\n  if (!imageWidth || !imageHeight) {\n    return [containerWidth, containerHeight]\n  }\n\n  if (keyword === 'cover') {\n    // Scale to cover the container (use max scale to ensure it covers)\n    const scaleX = containerWidth / imageWidth\n    const scaleY = containerHeight / imageHeight\n    const scale = Math.max(scaleX, scaleY)\n    return [imageWidth * scale, imageHeight * scale]\n  }\n\n  if (keyword === 'contain') {\n    // Scale to fit within the container (use min scale to ensure it fits)\n    const scaleX = containerWidth / imageWidth\n    const scaleY = containerHeight / imageHeight\n    const scale = Math.min(scaleX, scaleY)\n    return [imageWidth * scale, imageHeight * scale]\n  }\n\n  // For 'auto' or other values, handle auto\n  if (keyword === 'auto' || keyword.includes('auto')) {\n    const parts = keyword.split(' ')\n    const widthPart = parts[0] || 'auto'\n    const heightPart = parts[1] || parts[0] || 'auto'\n\n    let finalWidth = imageWidth\n    let finalHeight = imageHeight\n\n    if (widthPart === 'auto' && heightPart !== 'auto') {\n      // Width is auto, height is specified\n      const parsedHeight = toAbsoluteValue(heightPart, containerHeight)\n      finalHeight = parsedHeight\n      finalWidth = (imageWidth / imageHeight) * parsedHeight\n    } else if (heightPart === 'auto' && widthPart !== 'auto') {\n      // Height is auto, width is specified\n      const parsedWidth = toAbsoluteValue(widthPart, containerWidth)\n      finalWidth = parsedWidth\n      finalHeight = (imageHeight / imageWidth) * parsedWidth\n    }\n    // If both are auto, use intrinsic dimensions\n\n    return [finalWidth, finalHeight]\n  }\n\n  return [containerWidth, containerHeight]\n}\n\nfunction parseLengthPairs(\n  str: string,\n  {\n    x,\n    y,\n    defaultX,\n    defaultY,\n  }: {\n    x: number\n    y: number\n    defaultX: number | string\n    defaultY: number | string\n  }\n) {\n  return (\n    str\n      ? str\n          .split(' ')\n          .map((value) => {\n            try {\n              const parsed = new CssDimension(value)\n              return parsed.type === 'length' || parsed.type === 'number'\n                ? parsed.value\n                : parsed.value + parsed.unit\n            } catch (e) {\n              return null\n            }\n          })\n          .filter((v) => v !== null)\n      : [defaultX, defaultY]\n  ).map((v, index) => toAbsoluteValue(v, [x, y][index]))\n}\n\nexport default async function backgroundImage(\n  {\n    id,\n    width,\n    height,\n    left,\n    top,\n  }: { id: string; width: number; height: number; left: number; top: number },\n  { image, size, position, repeat }: Background,\n  inheritableStyle: Record<string, number | string>,\n  from?: 'background' | 'mask'\n): Promise<string[]> {\n  // Default to `repeat`.\n  repeat = repeat || 'repeat'\n  from = from || 'background'\n\n  const repeatX = repeat === 'repeat-x' || repeat === 'repeat'\n  const repeatY = repeat === 'repeat-y' || repeat === 'repeat'\n\n  // Check if size is a keyword (cover, contain, auto) that needs to be calculated later\n  const isKeywordSize =\n    size &&\n    (size === 'cover' ||\n      size === 'contain' ||\n      size === 'auto' ||\n      size.includes('auto'))\n\n  // For gradients, keyword sizes (cover, contain, auto) resolve to the\n  // container dimensions since gradients have no intrinsic size.\n  // For url() images, keyword sizes are calculated later using the image's\n  // intrinsic dimensions.\n  const isGradient =\n    image.startsWith('linear-gradient(') ||\n    image.startsWith('repeating-linear-gradient(') ||\n    image.startsWith('radial-gradient(') ||\n    image.startsWith('repeating-radial-gradient(')\n\n  const dimensions =\n    isKeywordSize && isGradient\n      ? [width, height] // Gradients have no intrinsic size; keyword sizes resolve to container\n      : isKeywordSize\n      ? [0, 0] // Will be calculated later when we have image dimensions\n      : parseLengthPairs(size, {\n          x: width,\n          y: height,\n          defaultX: width,\n          defaultY: height,\n        })\n  const offsets = parseLengthPairs(position, {\n    x: width,\n    y: height,\n    defaultX: 0,\n    defaultY: 0,\n  })\n\n  if (\n    image.startsWith('linear-gradient(') ||\n    image.startsWith('repeating-linear-gradient(')\n  ) {\n    return buildLinearGradient(\n      { id, width, height, repeatX, repeatY },\n      image,\n      dimensions,\n      offsets,\n      inheritableStyle,\n      from\n    )\n  }\n\n  if (\n    image.startsWith('radial-gradient(') ||\n    image.startsWith('repeating-radial-gradient(')\n  ) {\n    return buildRadialGradient(\n      { id, width, height, repeatX, repeatY },\n      image,\n      dimensions,\n      offsets,\n      inheritableStyle,\n      from\n    )\n  }\n\n  if (image.startsWith('url(')) {\n    const [src, imageWidth, imageHeight] = await resolveImageData(\n      image.slice(4, -1)\n    )\n\n    let resolvedWidth: number\n    let resolvedHeight: number\n\n    if (isKeywordSize) {\n      // Calculate dimensions based on keyword (cover, contain, auto)\n      const [calcWidth, calcHeight] = calculateKeywordSize(\n        size,\n        width,\n        height,\n        imageWidth,\n        imageHeight\n      )\n      resolvedWidth = calcWidth\n      resolvedHeight = calcHeight\n    } else {\n      // Use the previously parsed dimensions\n      const dimensionsWithoutFallback = parseLengthPairs(size, {\n        x: width,\n        y: height,\n        defaultX: 0,\n        defaultY: 0,\n      })\n      resolvedWidth =\n        from === 'mask'\n          ? imageWidth || dimensionsWithoutFallback[0]\n          : dimensionsWithoutFallback[0] || imageWidth\n      resolvedHeight =\n        from === 'mask'\n          ? imageHeight || dimensionsWithoutFallback[1]\n          : dimensionsWithoutFallback[1] || imageHeight\n    }\n\n    return [\n      `satori_bi${id}`,\n      buildXMLString(\n        'pattern',\n        {\n          id: `satori_bi${id}`,\n          patternContentUnits: 'userSpaceOnUse',\n          patternUnits: 'userSpaceOnUse',\n          x: offsets[0] + left,\n          y: offsets[1] + top,\n          width: repeatX ? resolvedWidth : '100%',\n          height: repeatY ? resolvedHeight : '100%',\n        },\n        buildXMLString('image', {\n          x: 0,\n          y: 0,\n          width: resolvedWidth,\n          height: resolvedHeight,\n          preserveAspectRatio: 'none',\n          href: src,\n        })\n      ),\n    ]\n  }\n\n  if (cssColorParse(image)) {\n    const colorObj = cssColorParse(image)\n    const [r, g, b, a] = colorObj.values\n    const alpha = a !== undefined ? a : 1\n    const color = `rgba(${r},${g},${b},${alpha})`\n\n    return [\n      `satori_bi${id}`,\n      buildXMLString(\n        'pattern',\n        {\n          id: `satori_bi${id}`,\n          patternContentUnits: 'userSpaceOnUse',\n          patternUnits: 'userSpaceOnUse',\n          x: left,\n          y: top,\n          width: width,\n          height: height,\n        },\n        buildXMLString('rect', {\n          x: 0,\n          y: 0,\n          width: width,\n          height: height,\n          fill: color,\n        })\n      ),\n    ]\n  }\n\n  throw new Error(`Invalid background image: \"${image}\"`)\n}\n","/**\n * CSS border radius to SVG path.\n */\n\n// TODO: Support the `border-radius: 10px / 20px` syntax.\n// https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius\n\nimport { buildXMLString, lengthToNumber } from '../utils.js'\n\n// Getting the intersection of a 45deg ray with the elliptical arc x^2/rx^2 + y^2/ry^2 = 1.\n// Reference:\n// https://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter\nfunction svgArcCenterOffset([rx, ry]: number[]) {\n  if (Math.round(rx * 1000) === 0 && Math.round(ry * 1000) === 0) {\n    return 0\n  }\n  return Math.round(((rx * ry) / Math.sqrt(rx * rx + ry * ry)) * 1000) / 1000\n}\n\nfunction resolveSize(a: number, b: number, limit: number) {\n  if (limit < a + b) {\n    if (limit / 2 < a && limit / 2 < b) {\n      a = b = limit / 2\n    } else if (limit / 2 < a) {\n      a = limit - b\n    } else if (limit / 2 < b) {\n      b = limit - a\n    }\n  }\n  return [a, b]\n}\n\nfunction makeSmaller(arr: [number, number]) {\n  arr[0] = arr[1] = Math.min(arr[0], arr[1])\n}\n\n// Each corner can have 2 values, the first is the horizontal radius, the second is the vertical radius.\nfunction resolveRadius(\n  v: number | string | undefined,\n  width: number,\n  height: number,\n  fontSize: number,\n  style: any\n): [boolean, undefined | [number, number]] {\n  if (typeof v === 'string') {\n    const sides = v.split(' ').map((s) => s.trim())\n    const singleValue = !sides[1] && !sides[0].endsWith('%')\n    sides[1] = sides[1] || sides[0]\n    return [\n      singleValue,\n      [\n        Math.min(lengthToNumber(sides[0], fontSize, width, style, true), width),\n        Math.min(\n          lengthToNumber(sides[1], fontSize, height, style, true),\n          height\n        ),\n      ],\n    ]\n  }\n  if (typeof v === 'number') {\n    return [true, [Math.min(v, width), Math.min(v, height)]]\n  }\n  return [true, undefined]\n}\n\nconst radiusZeroOrNull = (_radius?: [number, number]) =>\n  _radius && _radius[0] !== 0 && _radius[1] !== 0\n\nexport function getBorderRadiusClipPath(\n  {\n    id,\n    borderRadiusPath,\n    borderType,\n    left,\n    top,\n    width,\n    height,\n  }: {\n    id: string\n    borderRadiusPath?: string\n    borderType?: 'rect' | 'path'\n    left: number\n    top: number\n    width: number\n    height: number\n  },\n  style: Record<string, number | string>\n) {\n  const rectClipId = `satori_brc-${id}`\n  const defs = buildXMLString(\n    'clipPath',\n    {\n      id: rectClipId,\n    },\n    buildXMLString(borderType, {\n      x: left,\n      y: top,\n      width,\n      height,\n      d: borderRadiusPath ? borderRadiusPath : undefined,\n    })\n  )\n\n  return [defs, rectClipId]\n}\n\nexport default function radius(\n  {\n    left,\n    top,\n    width,\n    height,\n  }: {\n    left: number\n    top: number\n    width: number\n    height: number\n  },\n  style: Record<string, any>,\n  partialSides?: boolean[]\n) {\n  let {\n    borderTopLeftRadius,\n    borderTopRightRadius,\n    borderBottomLeftRadius,\n    borderBottomRightRadius,\n    fontSize,\n  } = style\n\n  let singleAbsValueTopLeftCorner\n  let singleAbsValueTopRightCorner\n  let singleAbsValueBottomLeftCorner\n  let singleAbsValueBottomRightCorner\n  ;[singleAbsValueTopLeftCorner, borderTopLeftRadius] = resolveRadius(\n    borderTopLeftRadius,\n    width,\n    height,\n    fontSize,\n    style\n  )\n  ;[singleAbsValueTopRightCorner, borderTopRightRadius] = resolveRadius(\n    borderTopRightRadius,\n    width,\n    height,\n    fontSize,\n    style\n  )\n  ;[singleAbsValueBottomLeftCorner, borderBottomLeftRadius] = resolveRadius(\n    borderBottomLeftRadius,\n    width,\n    height,\n    fontSize,\n    style\n  )\n  ;[singleAbsValueBottomRightCorner, borderBottomRightRadius] = resolveRadius(\n    borderBottomRightRadius,\n    width,\n    height,\n    fontSize,\n    style\n  )\n\n  if (\n    !partialSides &&\n    !radiusZeroOrNull(borderTopLeftRadius) &&\n    !radiusZeroOrNull(borderTopRightRadius) &&\n    !radiusZeroOrNull(borderBottomLeftRadius) &&\n    !radiusZeroOrNull(borderBottomRightRadius)\n  ) {\n    return ''\n  }\n  borderTopLeftRadius ||= [0, 0]\n  borderTopRightRadius ||= [0, 0]\n  borderBottomLeftRadius ||= [0, 0]\n  borderBottomRightRadius ||= [0, 0]\n\n  // Limit the radius sizes of each edge to make sure they will never overlap.\n\n  // Top\n  ;[borderTopLeftRadius[0], borderTopRightRadius[0]] = resolveSize(\n    borderTopLeftRadius[0],\n    borderTopRightRadius[0],\n    width\n  )\n  // Bottom\n  ;[borderBottomLeftRadius[0], borderBottomRightRadius[0]] = resolveSize(\n    borderBottomLeftRadius[0],\n    borderBottomRightRadius[0],\n    width\n  )\n  // Left\n  ;[borderTopLeftRadius[1], borderBottomLeftRadius[1]] = resolveSize(\n    borderTopLeftRadius[1],\n    borderBottomLeftRadius[1],\n    height\n  )\n  // Right\n  ;[borderTopRightRadius[1], borderBottomRightRadius[1]] = resolveSize(\n    borderTopRightRadius[1],\n    borderBottomRightRadius[1],\n    height\n  )\n\n  // If the specified border radius is a single value (e.g. 10px or 10em), we take\n  // the minimum of the resolved horizontal and vertical radius and apply to both.\n  if (singleAbsValueTopLeftCorner) {\n    makeSmaller(borderTopLeftRadius)\n  }\n  if (singleAbsValueTopRightCorner) {\n    makeSmaller(borderTopRightRadius)\n  }\n  if (singleAbsValueBottomLeftCorner) {\n    makeSmaller(borderBottomLeftRadius)\n  }\n  if (singleAbsValueBottomRightCorner) {\n    makeSmaller(borderBottomRightRadius)\n  }\n\n  type Arc = [[number, number], [number, number]]\n  const p: Arc[] = []\n  p[0] = [borderTopRightRadius, borderTopRightRadius]\n  p[1] = [\n    borderBottomRightRadius,\n    [-borderBottomRightRadius[0], borderBottomRightRadius[1]],\n  ]\n  p[2] = [\n    borderBottomLeftRadius,\n    [-borderBottomLeftRadius[0], -borderBottomLeftRadius[1]],\n  ]\n  p[3] = [\n    borderTopLeftRadius,\n    [borderTopLeftRadius[0], -borderTopLeftRadius[1]],\n  ]\n\n  const T = `h${width - borderTopLeftRadius[0] - borderTopRightRadius[0]} a${\n    p[0][0]\n  } 0 0 1 ${p[0][1]}`\n  const R = `v${\n    height - borderTopRightRadius[1] - borderBottomRightRadius[1]\n  } a${p[1][0]} 0 0 1 ${p[1][1]}`\n  const B = `h${\n    borderBottomRightRadius[0] + borderBottomLeftRadius[0] - width\n  } a${p[2][0]} 0 0 1 ${p[2][1]}`\n  const L = `v${borderBottomLeftRadius[1] + borderTopLeftRadius[1] - height} a${\n    p[3][0]\n  } 0 0 1 ${p[3][1]}`\n\n  if (partialSides) {\n    // \"However it is not defined what these transitions look like or what function maps from this ratio to a point on the curve.\"\n    // https://w3c.github.io/csswg-drafts/css-backgrounds-3/#corner-transitions\n    let start = partialSides.indexOf(false)\n\n    if (!partialSides.includes(true)) throw new Error('Invalid `partialSides`.')\n\n    if (start === -1) {\n      start = 0\n    } else {\n      while (!partialSides[start]) {\n        start = (start + 1) % 4\n      }\n    }\n\n    function getArc(i: number) {\n      const c0 = svgArcCenterOffset(\n        [\n          borderTopLeftRadius,\n          borderTopRightRadius,\n          borderBottomRightRadius,\n          borderBottomLeftRadius,\n        ][i]\n      )\n      return i === 0\n        ? [\n            [\n              left + borderTopLeftRadius[0] - c0,\n              top + borderTopLeftRadius[1] - c0,\n            ],\n            [left + borderTopLeftRadius[0], top],\n          ]\n        : i === 1\n        ? [\n            [\n              left + width - borderTopRightRadius[0] + c0,\n              top + borderTopRightRadius[1] - c0,\n            ],\n            [left + width, top + borderTopRightRadius[1]],\n          ]\n        : i === 2\n        ? [\n            [\n              left + width - borderBottomRightRadius[0] + c0,\n              top + height - borderBottomRightRadius[1] + c0,\n            ],\n            [left + width - borderBottomRightRadius[0], top + height],\n          ]\n        : [\n            [\n              left + borderBottomLeftRadius[0] - c0,\n              top + height - borderBottomLeftRadius[1] + c0,\n            ],\n            [left, top + height - borderBottomLeftRadius[1]],\n          ]\n    }\n\n    let result = ''\n\n    const arc0 = getArc(start)\n\n    let l = `M${arc0[0]} A${p[(start + 3) % 4][0]} 0 0 1 ${arc0[1]}`\n\n    let len = 0\n    for (; len < 4 && partialSides[(start + len) % 4]; len++) {\n      result += l + ' '\n      l = [T, R, B, L][(start + len) % 4]\n    }\n    const end = (start + len) % 4\n\n    // For the last segment, we skip the full arc and add the half arc.\n    result += l.split(' ')[0]\n\n    const arc1 = getArc(end)\n    result += ` A${p[(end + 3) % 4][0]} 0 0 1 ${arc1[0]}`\n\n    return result\n  }\n\n  // Generate the path\n  return `M${left + borderTopLeftRadius[0]},${top} ${T} ${R} ${B} ${L}`\n}\n","import { buildXMLString } from '../utils.js'\nimport radius from './border-radius.js'\n\nfunction compareBorderDirections(a: string, b: string, style: any) {\n  return (\n    style[a + 'Width'] === style[b + 'Width'] &&\n    style[a + 'Style'] === style[b + 'Style'] &&\n    style[a + 'Color'] === style[b + 'Color']\n  )\n}\n\nexport function getBorderClipPath(\n  {\n    id,\n    // Can be `overflow: hidden` from parent containers.\n    currentClipPathId,\n    borderPath,\n    borderType,\n    left,\n    top,\n    width,\n    height,\n  }: {\n    id: string\n    currentClipPathId?: string | number\n    borderPath?: string\n    borderType?: 'rect' | 'path'\n    left: number\n    top: number\n    width: number\n    height: number\n  },\n  style: Record<string, number | string>\n) {\n  const hasBorder =\n    style.borderTopWidth ||\n    style.borderRightWidth ||\n    style.borderBottomWidth ||\n    style.borderLeftWidth\n\n  if (!hasBorder) return null\n\n  // In SVG, stroke is always centered on the path and there is no\n  // existing property to make it behave like CSS border. So here we\n  // 2x the border width and introduce another clip path to clip the\n  // overflowed part.\n  const rectClipId = `satori_bc-${id}`\n  const defs = buildXMLString(\n    'clipPath',\n    {\n      id: rectClipId,\n      'clip-path': currentClipPathId ? `url(#${currentClipPathId})` : undefined,\n    },\n    buildXMLString(borderType, {\n      x: left,\n      y: top,\n      width,\n      height,\n      d: borderPath ? borderPath : undefined,\n    })\n  )\n\n  return [defs, rectClipId]\n}\n\nexport default function border(\n  {\n    left,\n    top,\n    width,\n    height,\n    props,\n    asContentMask,\n    maskBorderOnly,\n  }: {\n    left: number\n    top: number\n    width: number\n    height: number\n    props: any\n    asContentMask?: boolean\n    maskBorderOnly?: boolean\n  },\n  style: Record<string, number | string>\n) {\n  const directions = ['borderTop', 'borderRight', 'borderBottom', 'borderLeft']\n\n  // No border\n  if (\n    !asContentMask &&\n    !directions.some((direction) => style[direction + 'Width'])\n  )\n    return ''\n\n  let fullBorder = ''\n\n  let start = 0\n  while (\n    start > 0 &&\n    compareBorderDirections(\n      directions[start],\n      directions[(start + 3) % 4],\n      style\n    )\n  ) {\n    start = (start + 3) % 4\n  }\n\n  let partialSides = [false, false, false, false]\n  let currentStyle = []\n  for (let _i = 0; _i < 4; _i++) {\n    const i = (start + _i) % 4\n    const ni = (start + _i + 1) % 4\n\n    const d = directions[i]\n    const nd = directions[ni]\n\n    partialSides[i] = true\n    currentStyle = [\n      style[d + 'Width'],\n      style[d + 'Style'],\n      style[d + 'Color'],\n      d,\n    ]\n\n    if (!compareBorderDirections(d, nd, style)) {\n      const w =\n        (currentStyle[0] || 0) +\n        (asContentMask && !maskBorderOnly\n          ? style[d.replace('border', 'padding')] || 0\n          : 0)\n      if (w) {\n        fullBorder += buildXMLString('path', {\n          width,\n          height,\n          ...props,\n          fill: 'none',\n          stroke: asContentMask ? '#000' : currentStyle[2],\n          'stroke-width': w * 2,\n          'stroke-dasharray':\n            !asContentMask && currentStyle[1] === 'dashed'\n              ? w * 2 + ' ' + w\n              : undefined,\n          d: radius(\n            { left, top, width, height },\n            style as Record<string, number>,\n            partialSides\n          ),\n        })\n      }\n      partialSides = [false, false, false, false]\n    }\n  }\n\n  if (partialSides.some(Boolean)) {\n    const w =\n      (currentStyle[0] || 0) +\n      (asContentMask && !maskBorderOnly\n        ? style[currentStyle[3].replace('border', 'padding')] || 0\n        : 0)\n    if (w) {\n      fullBorder += buildXMLString('path', {\n        width,\n        height,\n        ...props,\n        fill: 'none',\n        stroke: asContentMask ? '#000' : currentStyle[2],\n        'stroke-width': w * 2,\n        'stroke-dasharray':\n          !asContentMask && currentStyle[1] === 'dashed'\n            ? w * 2 + ' ' + w\n            : undefined,\n        d: radius(\n          { left, top, width, height },\n          style as Record<string, number>,\n          partialSides\n        ),\n      })\n    }\n  }\n\n  return fullBorder\n}\n","/**\n * When there is border radius, the content area should be clipped by the\n * inner path of border + padding. This applies to <img> element as well as any\n * child element inside a `overflow: hidden` container.\n */\n\nimport { buildXMLString } from '../utils.js'\nimport border from './border.js'\n\nexport default function contentMask(\n  {\n    id,\n    left,\n    top,\n    width,\n    height,\n    matrix,\n    borderOnly,\n  }: {\n    id: string\n    left: number\n    top: number\n    width: number\n    height: number\n    matrix: string | undefined\n    borderOnly?: boolean\n  },\n  style: Record<string, number | string>\n) {\n  const offsetLeft =\n    ((style.borderLeftWidth as number) || 0) +\n    (borderOnly ? 0 : (style.paddingLeft as number) || 0)\n  const offsetTop =\n    ((style.borderTopWidth as number) || 0) +\n    (borderOnly ? 0 : (style.paddingTop as number) || 0)\n  const offsetRight =\n    ((style.borderRightWidth as number) || 0) +\n    (borderOnly ? 0 : (style.paddingRight as number) || 0)\n  const offsetBottom =\n    ((style.borderBottomWidth as number) || 0) +\n    (borderOnly ? 0 : (style.paddingBottom as number) || 0)\n\n  const contentArea = {\n    x: left + offsetLeft,\n    y: top + offsetTop,\n    width: width - offsetLeft - offsetRight,\n    height: height - offsetTop - offsetBottom,\n  }\n\n  const _contentMask = buildXMLString(\n    'mask',\n    { id },\n    buildXMLString('rect', {\n      ...contentArea,\n      fill: '#fff',\n      // add transformation matrix to mask if overflow is hidden AND a\n      // transformation style is defined, otherwise children will be clipped\n      // incorrectly\n      transform:\n        style.overflow === 'hidden' && style.transform && matrix\n          ? matrix\n          : undefined,\n      mask: style._inheritedMaskId\n        ? `url(#${style._inheritedMaskId})`\n        : undefined,\n    }) +\n      border(\n        {\n          left,\n          top,\n          width,\n          height,\n          props: {\n            transform: matrix ? matrix : undefined,\n          },\n          asContentMask: true,\n          maskBorderOnly: borderOnly,\n        },\n        style\n      )\n  )\n\n  return _contentMask\n}\n","import { lengthToNumber } from '../utils.js'\nimport { default as buildBorderRadius } from '../builder/border-radius.js'\nimport { getStylesForProperty } from 'css-to-react-native'\n\nconst regexMap = {\n  circle: /circle\\((.+)\\)/,\n  ellipse: /ellipse\\((.+)\\)/,\n  path: /path\\((.+)\\)/,\n  polygon: /polygon\\((.+)\\)/,\n  inset: /inset\\((.+)\\)/,\n}\n\nexport function createShapeParser(\n  {\n    width,\n    height,\n  }: {\n    width: number\n    height: number\n  },\n  style: Record<string, string | number>,\n  inheritedStyle: Record<string, string | number>\n) {\n  function parseCircle(str: string) {\n    const res = str.match(regexMap['circle'])\n\n    if (!res) return null\n\n    const [, value] = res\n    const [radius, pos = ''] = value.split('at').map((v) => v.trim())\n    const { x, y } = resolvePosition(pos, width, height)\n\n    return {\n      type: 'circle',\n      r: lengthToNumber(\n        radius,\n        inheritedStyle.fontSize as number,\n        Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)) / Math.sqrt(2),\n        inheritedStyle,\n        true\n      ),\n      cx: lengthToNumber(\n        x,\n        inheritedStyle.fontSize as number,\n        width,\n        inheritedStyle,\n        true\n      ),\n      cy: lengthToNumber(\n        y,\n        inheritedStyle.fontSize as number,\n        height,\n        inheritedStyle,\n        true\n      ),\n    }\n  }\n  function parseEllipse(str: string) {\n    const res = str.match(regexMap['ellipse'])\n\n    if (!res) return null\n\n    const [, value] = res\n    const [radius, pos = ''] = value.split('at').map((v) => v.trim())\n    const [rx, ry] = radius.split(' ')\n    const { x, y } = resolvePosition(pos, width, height)\n\n    return {\n      type: 'ellipse',\n      rx: lengthToNumber(\n        rx || '50%',\n        inheritedStyle.fontSize as number,\n        width,\n        inheritedStyle,\n        true\n      ),\n      ry: lengthToNumber(\n        ry || '50%',\n        inheritedStyle.fontSize as number,\n        height,\n        inheritedStyle,\n        true\n      ),\n      cx: lengthToNumber(\n        x,\n        inheritedStyle.fontSize as number,\n        width,\n        inheritedStyle,\n        true\n      ),\n      cy: lengthToNumber(\n        y,\n        inheritedStyle.fontSize as number,\n        height,\n        inheritedStyle,\n        true\n      ),\n    }\n  }\n  function parsePath(str: string) {\n    const res = str.match(regexMap['path'])\n\n    if (!res) return null\n\n    const [fillRule, d] = resolveFillRule(res[1])\n\n    return {\n      type: 'path',\n      d,\n      'fill-rule': fillRule,\n    }\n  }\n  function parsePolygon(str: string) {\n    const res = str.match(regexMap['polygon'])\n\n    if (!res) return null\n\n    const [fillRule, points] = resolveFillRule(res[1])\n\n    return {\n      type: 'polygon',\n      'fill-rule': fillRule,\n      points: points\n        .split(',')\n        .map((v) =>\n          v\n            .split(' ')\n            .map((k, i) =>\n              lengthToNumber(\n                k,\n                inheritedStyle.fontSize as number,\n                i === 0 ? width : height,\n                inheritedStyle,\n                true\n              )\n            )\n            .join(' ')\n        )\n        .join(','),\n    }\n  }\n  function parseInset(str: string) {\n    const res = str.match(regexMap['inset'])\n\n    if (!res) return null\n\n    const [inset, radius] = (\n      res[1].includes('round') ? res[1] : `${res[1].trim()} round 0`\n    ).split('round')\n    const radiusMap = getStylesForProperty('borderRadius', radius, true)\n    const r = Object.values(radiusMap)\n      .map((s) => String(s))\n      .map(\n        (s, i) =>\n          lengthToNumber(\n            s,\n            inheritedStyle.fontSize as number,\n            i === 0 || i === 2 ? height : width,\n            inheritedStyle,\n            true\n          ) || 0\n      )\n    const offsets = Object.values(getStylesForProperty('margin', inset, true))\n      .map((s) => String(s))\n      .map(\n        (s, i) =>\n          lengthToNumber(\n            s,\n            inheritedStyle.fontSize as number,\n            i === 0 || i === 2 ? height : width,\n            inheritedStyle,\n            true\n          ) || 0\n      )\n    const x = offsets[3]\n    const y = offsets[0]\n    const w = width - (offsets[1] + offsets[3])\n    const h = height - (offsets[0] + offsets[2])\n\n    if (r.some((v) => v > 0)) {\n      const d = buildBorderRadius(\n        { left: x, top: y, width: w, height: h },\n        { ...style, ...radiusMap }\n      )\n\n      return { type: 'path', d }\n    }\n\n    return {\n      type: 'rect',\n      x,\n      y,\n      width: w,\n      height: h,\n    }\n  }\n\n  return {\n    parseCircle,\n    parseEllipse,\n    parsePath,\n    parsePolygon,\n    parseInset,\n  }\n}\n\nfunction resolveFillRule(str: string) {\n  const [, fillRule = 'nonzero', d] =\n    str.replace(/('|\")/g, '').match(/^(nonzero|evenodd)?,?(.+)/) || []\n\n  return [fillRule, d]\n}\n\nfunction resolvePosition(position: string, xDelta: number, yDelta: number) {\n  const pos = position.split(' ')\n  const res: { x: number | string; y: number | string } = {\n    x: pos[0] || '50%',\n    y: pos[1] || '50%',\n  }\n\n  pos.forEach((v) => {\n    if (v === 'top') {\n      res.y = 0\n    } else if (v === 'bottom') {\n      res.y = yDelta\n    } else if (v === 'left') {\n      res.x = 0\n    } else if (v === 'right') {\n      res.x = xDelta\n    } else if (v === 'center') {\n      res.x = xDelta / 2\n      res.y = yDelta / 2\n    } else {\n      // do nothing\n    }\n  })\n\n  return res\n}\n","import { buildXMLString } from '../utils.js'\nimport { createShapeParser } from '../parser/shape.js'\n\nexport function genClipPathId(id: string) {\n  return `satori_cp-${id}`\n}\nexport function genClipPath(id: string) {\n  return `url(#${genClipPathId(id)})`\n}\n\nexport function buildClipPath(\n  v: {\n    left: number\n    top: number\n    width: number\n    height: number\n    path: string\n    matrix: string | undefined\n    id: string\n    currentClipPath: string | string\n    src?: string\n  },\n  style: Record<string, string | number>,\n  inheritedStyle: Record<string, string | number>\n) {\n  if (style.clipPath === 'none') return ''\n\n  const parser = createShapeParser(v, style, inheritedStyle)\n  const clipPath = style.clipPath as string\n\n  let tmp: { type: string; [p: string]: string | number } = { type: '' }\n\n  for (const k of Object.keys(parser)) {\n    tmp = parser[k](clipPath)\n    if (tmp) break\n  }\n\n  if (tmp) {\n    const { type, ...rest } = tmp\n    return buildXMLString(\n      'clipPath',\n      {\n        id: genClipPathId(v.id),\n        'clip-path': v.currentClipPath,\n        transform: `translate(${v.left}, ${v.top})`,\n      },\n      buildXMLString(type, rest)\n    )\n  }\n  return ''\n}\n","/**\n * Generate clip path for the given element.\n */\n\nimport { buildXMLString } from '../utils.js'\nimport mask from './content-mask.js'\nimport { buildClipPath, genClipPathId } from './clip-path.js'\n\nexport default function overflow(\n  {\n    left,\n    top,\n    width,\n    height,\n    path,\n    matrix,\n    id,\n    currentClipPath,\n    src,\n  }: {\n    left: number\n    top: number\n    width: number\n    height: number\n    path: string\n    matrix: string | undefined\n    id: string\n    currentClipPath: string | string\n    src?: string\n  },\n  style: Record<string, string | number>,\n  inheritableStyle: Record<string, string | number>\n) {\n  let overflowClipPath = ''\n  const clipPath =\n    style.clipPath && style.clipPath !== 'none'\n      ? buildClipPath(\n          { left, top, width, height, path, id, matrix, currentClipPath, src },\n          style as Record<string, number>,\n          inheritableStyle\n        )\n      : ''\n\n  if (style.overflow !== 'hidden' && !src) {\n    overflowClipPath = ''\n  } else {\n    const _id = clipPath ? `satori_ocp-${id}` : genClipPathId(id)\n\n    overflowClipPath = buildXMLString(\n      'clipPath',\n      {\n        id: _id,\n        'clip-path': currentClipPath,\n      },\n      buildXMLString(path ? 'path' : 'rect', {\n        x: left,\n        y: top,\n        width,\n        height,\n        d: path ? path : undefined,\n        // add transformation matrix to clip path if overflow is hidden AND a\n        // transformation style is defined, otherwise children will be clipped\n        // relative to the parent's original plane instead of the transformed\n        // plane\n        transform:\n          style.overflow === 'hidden' && style.transform && matrix\n            ? matrix\n            : undefined,\n      })\n    )\n  }\n\n  const contentMask = mask(\n    {\n      id: `satori_om-${id}`,\n      left,\n      top,\n      width,\n      height,\n      matrix,\n      borderOnly: src ? false : true,\n    },\n    style\n  )\n\n  return clipPath + overflowClipPath + contentMask\n}\n","import { buildXMLString } from '../utils.js'\nimport buildBackgroundImage from './background-image.js'\nimport type { MaskProperty } from '../parser/mask.js'\n\nconst genMaskImageId = (id: string) => `satori_mi-${id}`\n\nexport default async function buildMaskImage(\n  v: {\n    id: string\n    left: number\n    top: number\n    width: number\n    height: number\n  },\n  style: Record<string, string | number>,\n  inheritedStyle: Record<string, string | number>\n): Promise<[string, string]> {\n  if (!style.maskImage) return ['', '']\n  const { left, top, width, height, id } = v\n  const maskImage = style.maskImage as unknown as MaskProperty[]\n  const length = maskImage.length\n  if (!length) return ['', '']\n  const miId = genMaskImageId(id)\n\n  let mask = ''\n\n  for (let i = 0; i < length; i++) {\n    const m = maskImage[i]\n\n    const [_id, def] = await buildBackgroundImage(\n      { id: `${miId}-${i}`, left, top, width, height },\n      m,\n      inheritedStyle,\n      'mask'\n    )\n\n    mask +=\n      def +\n      buildXMLString('rect', {\n        x: left,\n        y: top,\n        width,\n        height,\n        fill: `url(#${_id})`,\n      })\n  }\n\n  mask = buildXMLString('mask', { id: miId }, mask)\n\n  return [miId, mask]\n}\n","import type { ParsedTransformOrigin } from '../transform-origin.js'\n\nimport backgroundImage from './background-image.js'\nimport radius, { getBorderRadiusClipPath } from './border-radius.js'\nimport { boxShadow } from './shadow.js'\nimport transform from './transform.js'\nimport overflow from './overflow.js'\nimport { buildXMLString } from '../utils.js'\nimport border, { getBorderClipPath } from './border.js'\nimport { genClipPath } from './clip-path.js'\nimport buildMaskImage from './mask-image.js'\nimport CssDimension from '../vendor/parse-css-dimension/index.js'\n\n/**\n * Parse object-position value into [xOffset, yOffset] in pixels.\n * Supports keywords (left, center, right, top, bottom), percentages, and lengths.\n * Similar to background-position parsing.\n */\nfunction parseObjectPosition(\n  position: string,\n  containerWidth: number,\n  containerHeight: number\n): [number, number] {\n  const parts = position.toLowerCase().trim().split(/\\s+/)\n\n  // Convert keyword to percentage\n  const keywordToPercent = (keyword: string, axis: 'x' | 'y'): string => {\n    const map = {\n      left: '0%',\n      center: '50%',\n      right: '100%',\n      top: '0%',\n      bottom: '100%',\n    }\n    return map[keyword] || keyword\n  }\n\n  let xValue: string\n  let yValue: string\n\n  if (parts.length === 1) {\n    const part = parts[0]\n    // Single value\n    if (part === 'left' || part === 'center' || part === 'right') {\n      xValue = keywordToPercent(part, 'x')\n      yValue = '50%' // center\n    } else if (part === 'top' || part === 'bottom') {\n      xValue = '50%' // center\n      yValue = keywordToPercent(part, 'y')\n    } else {\n      // Assume it's x value, y defaults to center\n      xValue = part\n      yValue = '50%'\n    }\n  } else {\n    // Two or more values\n    const first = parts[0]\n    const second = parts[1]\n\n    // Check if first is a y-axis keyword (top/bottom)\n    if (first === 'top' || first === 'bottom') {\n      yValue = keywordToPercent(first, 'y')\n      if (second === 'left' || second === 'right' || second === 'center') {\n        xValue = keywordToPercent(second, 'x')\n      } else {\n        // Second is a length/percentage, default x to center\n        xValue = '50%'\n        yValue =\n          first === 'top' || first === 'bottom'\n            ? keywordToPercent(first, 'y')\n            : second\n      }\n    } else {\n      // Normal order: x then y\n      xValue = keywordToPercent(first, 'x')\n      yValue = keywordToPercent(second, 'y')\n    }\n  }\n\n  // Convert to absolute pixels\n  const parseValue = (value: string, containerSize: number): number => {\n    try {\n      if (value.endsWith('%')) {\n        return (containerSize * parseFloat(value)) / 100\n      }\n      const parsed = new CssDimension(value)\n      if (parsed.type === 'length' || parsed.type === 'number') {\n        return parsed.value\n      }\n      return 0\n    } catch (e) {\n      return 0\n    }\n  }\n\n  return [\n    parseValue(xValue, containerWidth),\n    parseValue(yValue, containerHeight),\n  ]\n}\n\nexport default async function rect(\n  {\n    id,\n    left,\n    top,\n    width,\n    height,\n    isInheritingTransform,\n    src,\n    debug,\n  }: {\n    id: string\n    left: number\n    top: number\n    width: number\n    height: number\n    isInheritingTransform: boolean\n    src?: string\n    debug?: boolean\n  },\n  style: Record<string, number | string>,\n  inheritableStyle: Record<string, number | string>\n) {\n  if (style.display === 'none') return ''\n\n  const isImage = !!src\n\n  let type: 'rect' | 'path' = 'rect'\n  let matrix = ''\n  let defs = ''\n  let fills: string[] = []\n  let opacity = 1\n  let extra = ''\n\n  if (style.backgroundColor) {\n    fills.push(style.backgroundColor as string)\n  }\n\n  if (style.opacity !== undefined) {\n    opacity = +style.opacity\n  }\n\n  if (style.transform) {\n    matrix = transform(\n      {\n        left,\n        top,\n        width,\n        height,\n      },\n      style.transform as unknown as number[],\n      isInheritingTransform,\n      style.transformOrigin as ParsedTransformOrigin | undefined\n    )\n  }\n\n  let backgroundShapes = ''\n  if (style.backgroundImage) {\n    const backgrounds: string[][] = []\n\n    for (\n      let index = 0;\n      index < (style.backgroundImage as any).length;\n      index++\n    ) {\n      const background = (style.backgroundImage as any)[index]\n      const image = await backgroundImage(\n        { id: id + '_' + index, width, height, left, top },\n        background,\n        inheritableStyle\n      )\n      if (image) {\n        // Background images that come first in the array are rendered last.\n        backgrounds.unshift(image)\n      }\n    }\n\n    for (const background of backgrounds) {\n      fills.push(`url(#${background[0]})`)\n      defs += background[1]\n      if (background[2]) {\n        backgroundShapes += background[2]\n      }\n    }\n  }\n\n  const [miId, mi] = await buildMaskImage(\n    { id, left, top, width, height },\n    style,\n    inheritableStyle\n  )\n\n  defs += mi\n  const maskId = miId\n    ? `url(#${miId})`\n    : style._inheritedMaskId\n    ? `url(#${style._inheritedMaskId})`\n    : undefined\n\n  const path = radius(\n    { left, top, width, height },\n    style as Record<string, number>\n  )\n  if (path) {\n    type = 'path'\n  }\n\n  const clipPathId = style._inheritedClipPathId as number | undefined\n\n  if (debug) {\n    extra = buildXMLString('rect', {\n      x: left,\n      y: top,\n      width,\n      height,\n      fill: 'transparent',\n      stroke: '#ff5757',\n      'stroke-width': 1,\n      transform: matrix || undefined,\n      'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n    })\n  }\n\n  const { backgroundClip, filter: cssFilter } = style\n\n  const currentClipPath =\n    backgroundClip === 'text'\n      ? `url(#satori_bct-${id})`\n      : clipPathId\n      ? `url(#${clipPathId})`\n      : style.clipPath\n      ? genClipPath(id)\n      : undefined\n\n  const clip = overflow(\n    { left, top, width, height, path, id, matrix, currentClipPath, src },\n    style as Record<string, number>,\n    inheritableStyle\n  )\n\n  // Each background generates a new rectangle.\n  // @TODO: Not sure if this is the best way to do it, maybe <pattern> with\n  // multiple <image>s is better.\n  let shape = fills\n    .map((fill) =>\n      buildXMLString(type, {\n        x: left,\n        y: top,\n        width,\n        height,\n        fill,\n        d: path ? path : undefined,\n        transform: matrix ? matrix : undefined,\n        'clip-path': style.transform ? undefined : currentClipPath,\n        style: cssFilter ? `filter:${cssFilter}` : undefined,\n        mask: style.transform ? undefined : maskId,\n      })\n    )\n    .join('')\n\n  const borderClip = getBorderClipPath(\n    {\n      id,\n      left,\n      top,\n      width,\n      height,\n      currentClipPathId: clipPathId,\n      borderPath: path,\n      borderType: type,\n    },\n    style\n  )\n\n  // border radius for images with transform property\n  let imageBorderRadius = undefined\n\n  // If it's an image (<img>) tag, we add an extra layer of the image itself.\n  if (isImage) {\n    // We need to subtract the border and padding sizes from the image size.\n    const offsetLeft =\n      ((style.borderLeftWidth as number) || 0) +\n      ((style.paddingLeft as number) || 0)\n    const offsetTop =\n      ((style.borderTopWidth as number) || 0) +\n      ((style.paddingTop as number) || 0)\n    const offsetRight =\n      ((style.borderRightWidth as number) || 0) +\n      ((style.paddingRight as number) || 0)\n    const offsetBottom =\n      ((style.borderBottomWidth as number) || 0) +\n      ((style.paddingBottom as number) || 0)\n\n    const containerInnerWidth = width - offsetLeft - offsetRight\n    const containerInnerHeight = height - offsetTop - offsetBottom\n\n    // Parse object-position\n    const position = (style.objectPosition || 'center').toString()\n    const [objPosX, objPosY] = parseObjectPosition(\n      position,\n      containerInnerWidth,\n      containerInnerHeight\n    )\n\n    // Get natural image dimensions if available\n    const naturalWidth = (style.__naturalWidth as number) || containerInnerWidth\n    const naturalHeight =\n      (style.__naturalHeight as number) || containerInnerHeight\n\n    // Calculate objectFit behavior\n    let preserveAspectRatio: string\n    let imageWidth = containerInnerWidth\n    let imageHeight = containerInnerHeight\n    let imageX = left + offsetLeft\n    let imageY = top + offsetTop\n\n    if (style.objectFit === 'contain') {\n      // Scale to fit within container while preserving aspect ratio\n      const scaleX = containerInnerWidth / naturalWidth\n      const scaleY = containerInnerHeight / naturalHeight\n      const scale = Math.min(scaleX, scaleY)\n\n      imageWidth = naturalWidth * scale\n      imageHeight = naturalHeight * scale\n\n      // Apply object-position to center the image within the container\n      imageX =\n        left +\n        offsetLeft +\n        objPosX -\n        (imageWidth * objPosX) / containerInnerWidth\n      imageY =\n        top +\n        offsetTop +\n        objPosY -\n        (imageHeight * objPosY) / containerInnerHeight\n\n      preserveAspectRatio = 'none'\n    } else if (style.objectFit === 'cover') {\n      // Scale to cover the container while preserving aspect ratio\n      const scaleX = containerInnerWidth / naturalWidth\n      const scaleY = containerInnerHeight / naturalHeight\n      const scale = Math.max(scaleX, scaleY)\n\n      imageWidth = naturalWidth * scale\n      imageHeight = naturalHeight * scale\n\n      // Apply object-position\n      imageX =\n        left +\n        offsetLeft +\n        objPosX -\n        (imageWidth * objPosX) / containerInnerWidth\n      imageY =\n        top +\n        offsetTop +\n        objPosY -\n        (imageHeight * objPosY) / containerInnerHeight\n\n      preserveAspectRatio = 'none'\n    } else if (style.objectFit === 'fill') {\n      // Stretch to fill (ignore aspect ratio)\n      preserveAspectRatio = 'none'\n    } else if (style.objectFit === 'scale-down') {\n      if (naturalWidth && naturalHeight) {\n        // Calculate if we need to scale down\n        const scaleX = containerInnerWidth / naturalWidth\n        const scaleY = containerInnerHeight / naturalHeight\n        const minScale = Math.min(scaleX, scaleY)\n\n        if (minScale >= 1) {\n          // Image is smaller than or equal to container\n          // Use natural size (don't scale up)\n          imageWidth = naturalWidth\n          imageHeight = naturalHeight\n          preserveAspectRatio = 'none'\n\n          // Apply object-position to position the un-scaled image\n          imageX =\n            left +\n            offsetLeft +\n            objPosX -\n            (imageWidth * objPosX) / containerInnerWidth\n          imageY =\n            top +\n            offsetTop +\n            objPosY -\n            (imageHeight * objPosY) / containerInnerHeight\n        } else {\n          // Image is larger than container, scale down like 'contain'\n          const scale = minScale\n          imageWidth = naturalWidth * scale\n          imageHeight = naturalHeight * scale\n\n          // Apply object-position\n          imageX =\n            left +\n            offsetLeft +\n            objPosX -\n            (imageWidth * objPosX) / containerInnerWidth\n          imageY =\n            top +\n            offsetTop +\n            objPosY -\n            (imageHeight * objPosY) / containerInnerHeight\n\n          preserveAspectRatio = 'none'\n        }\n      } else {\n        // Fall back to 'contain' behavior if natural dimensions are unavailable\n        const scaleX = containerInnerWidth / naturalWidth\n        const scaleY = containerInnerHeight / naturalHeight\n        const scale = Math.min(scaleX, scaleY)\n\n        imageWidth = naturalWidth * scale\n        imageHeight = naturalHeight * scale\n\n        imageX =\n          left +\n          offsetLeft +\n          objPosX -\n          (imageWidth * objPosX) / containerInnerWidth\n        imageY =\n          top +\n          offsetTop +\n          objPosY -\n          (imageHeight * objPosY) / containerInnerHeight\n\n        preserveAspectRatio = 'none'\n      }\n    } else {\n      // Default/none: fill (stretch)\n      preserveAspectRatio = 'none'\n    }\n\n    if (style.transform) {\n      imageBorderRadius = getBorderRadiusClipPath(\n        {\n          id,\n          borderRadiusPath: path,\n          borderType: type,\n          left,\n          top,\n          width,\n          height,\n        },\n        style\n      )\n    }\n\n    shape += buildXMLString('image', {\n      x: imageX,\n      y: imageY,\n      width: imageWidth,\n      height: imageHeight,\n      href: src,\n      preserveAspectRatio,\n      transform: matrix ? matrix : undefined,\n      style: cssFilter ? `filter:${cssFilter}` : undefined,\n      'clip-path': style.transform\n        ? imageBorderRadius\n          ? `url(#${imageBorderRadius[1]})`\n          : undefined\n        : `url(#satori_cp-${id})`,\n      mask: style.transform\n        ? undefined\n        : miId\n        ? `url(#${miId})`\n        : `url(#satori_om-${id})`,\n    })\n  }\n\n  if (borderClip) {\n    defs += borderClip[0]\n    const rectClipId = borderClip[1]\n\n    shape += border(\n      {\n        left,\n        top,\n        width,\n        height,\n        props: {\n          transform: matrix ? matrix : undefined,\n          // When using `background-clip: text`, we need to draw the extra border because\n          // it shouldn't be clipped by the clip path, so we are not using currentClipPath here.\n          'clip-path': `url(#${rectClipId})`,\n        },\n      },\n      style\n    )\n  }\n\n  // box-shadow.\n  const shadow = boxShadow(\n    {\n      width,\n      height,\n      id,\n      opacity,\n      shape: buildXMLString(type, {\n        x: left,\n        y: top,\n        width,\n        height,\n        fill: '#fff',\n        stroke: '#fff',\n        'stroke-width': 0,\n        d: path ? path : undefined,\n        transform: matrix ? matrix : undefined,\n        'clip-path': currentClipPath,\n        mask: maskId,\n      }),\n    },\n    style\n  )\n\n  return (\n    (defs ? buildXMLString('defs', {}, defs) : '') +\n    (shadow ? shadow[0] : '') +\n    (imageBorderRadius ? imageBorderRadius[0] : '') +\n    clip +\n    (opacity !== 1 ? `<g opacity=\"${opacity}\">` : '') +\n    (style.transform && (currentClipPath || maskId)\n      ? `<g${currentClipPath ? ` clip-path=\"${currentClipPath}\"` : ''}${\n          maskId ? ` mask=\"${maskId}\"` : ''\n        }>`\n      : '') +\n    (backgroundShapes || shape) +\n    (style.transform && (currentClipPath || maskId) ? '</g>' : '') +\n    (opacity !== 1 ? `</g>` : '') +\n    (shadow ? shadow[1] : '') +\n    extra\n  )\n}\n","const r = String.raw,\n  e = r`\\p{Emoji}(?:\\p{EMod}|[\\u{E0020}-\\u{E007E}]+\\u{E007F}|\\uFE0F?\\u20E3?)`;\nexport default () => new RegExp(r`\\p{RI}{2}|(?![#*\\d](?!\\uFE0F?\\u20E3))${e}(?:\\u200D${e})*`, 'gu');\n","// This function guesses the human language (writing system) of the given\n// JavaScript string, using the Unicode Alias in extended RegExp.\n//\n// You can learn more about this in:\n// - https://en.wikipedia.org/wiki/Script_(Unicode)\n// - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes\n// - https://unicode.org/reports/tr18/#General_Category_Property\n// - https://tc39.es/ecma262/multipage/text-processing.html#table-unicode-script-values\n\nimport createEmojiRegex from 'emoji-regex-xs'\n\nconst emojiRegex = new RegExp(createEmojiRegex(), 'u')\n\n// Supported languages. The order matters.\n// Usually, this is only for \"special cases\" like CJKV languages as latin\n// characters are usually included in the base font, and can be safely fallback\n// to the Noto Sans font. A list of special cases we want to support can be\n// found here (sort by popularity):\n// - https://fonts.google.com/noto/fonts?sort=popularity&noto.query=sans\n//\n// We can't tell if a hanzi(kanji) is Chinese or Japanese by regular expressions.\n// - https://unicode.org/faq/han_cjk.html\n\nconst specialCode = {\n  emoji: emojiRegex,\n  symbol: /\\p{Symbol}/u,\n  math: /\\p{Math}/u,\n} as const\n\nconst code = {\n  'ja-JP': /\\p{scx=Hira}|\\p{scx=Kana}|\\p{scx=Han}|[\\u3000]|[\\uFF00-\\uFFEF]/u,\n  'ko-KR': /\\p{scx=Hangul}/u,\n  'zh-CN': /\\p{scx=Han}/u,\n  'zh-TW': /\\p{scx=Han}/u,\n  'zh-HK': /\\p{scx=Han}/u,\n  'th-TH': /\\p{scx=Thai}/u,\n  'bn-IN': /\\p{scx=Bengali}/u,\n  'ar-AR': /\\p{scx=Arabic}/u,\n  'ta-IN': /\\p{scx=Tamil}/u,\n  'ml-IN': /\\p{scx=Malayalam}/u,\n  'he-IL': /\\p{scx=Hebrew}/u,\n  'te-IN': /\\p{scx=Telugu}/u,\n  devanagari: /\\p{scx=Devanagari}/u,\n  kannada: /\\p{scx=Kannada}/u,\n} as const\n\ntype SpecialCodeKey = keyof typeof specialCode\ntype CodeKey = keyof typeof specialCode | keyof typeof code\nexport type Locale = keyof typeof code\nexport type LangCode = CodeKey | 'unknown'\n\nexport const locales = Object.keys({ ...code, ...specialCode }) as Locale[]\nexport function isValidLocale(x: any): x is Locale {\n  return locales.includes(x)\n}\n\nexport function detectLanguageCode(\n  segment: string,\n  locale?: Locale\n): Array<Locale> | ['unknown'] | [SpecialCodeKey] {\n  for (const c of Object.keys(specialCode) as SpecialCodeKey[]) {\n    if (specialCode[c].test(segment)) {\n      return [c]\n    }\n  }\n\n  const languages = Object.keys(code).filter((lang) =>\n    code[lang].test(segment)\n  ) as Locale[]\n\n  if (languages.length === 0) {\n    return ['unknown']\n  }\n\n  if (locale) {\n    const index = languages.findIndex((lang) => lang === locale)\n    if (index !== -1) {\n      languages.splice(index, 1)\n      languages.unshift(locale)\n    }\n  }\n\n  return languages\n}\n\nexport function normalizeLocale(locale?: string): Locale | undefined {\n  if (locale) {\n    return locales.find((l) => l.toLowerCase().startsWith(locale.toLowerCase()))\n  }\n}\n","/**\n * This module is used to calculate the layout of the current sub-tree.\n */\n\nimport type { ReactNode } from 'react'\nimport {\n  isReactElement,\n  isClass,\n  buildXMLString,\n  normalizeChildren,\n  hasDangerouslySetInnerHTMLProp,\n  isReactComponent,\n  isForwardRefComponent,\n} from './utils.js'\nimport { getYoga, YogaNode } from './yoga.js'\nimport { SVGNodeToImage } from './handler/preprocess.js'\nimport computeStyle from './handler/compute.js'\nimport FontLoader from './font.js'\nimport buildTextNodes from './text/index.js'\nimport rect from './builder/rect.js'\nimport { Locale, normalizeLocale } from './language.js'\nimport { SerializedStyle } from './handler/expand.js'\n\nexport interface LayoutContext {\n  id: string\n  parentStyle: SerializedStyle\n  inheritedStyle: SerializedStyle\n  isInheritingTransform?: boolean\n  parent: YogaNode\n  font: FontLoader\n  embedFont: boolean\n  debug?: boolean\n  graphemeImages?: Record<string, string>\n  canLoadAdditionalAssets: boolean\n  locale?: Locale\n  getTwStyles: (tw: string, style: any) => any\n  onNodeDetected?: (node: SatoriNode) => void\n}\n\nexport interface SatoriNode {\n  // Layout information.\n  left: number\n  top: number\n  width: number\n  height: number\n  type: string\n  key?: string | number\n  props: Record<string, any>\n  textContent?: string\n}\n\nexport default async function* layout(\n  element: ReactNode,\n  context: LayoutContext\n): AsyncGenerator<\n  { word: string; locale?: string }[],\n  string,\n  [number, number]\n> {\n  const Yoga = await getYoga()\n  const {\n    id,\n    inheritedStyle,\n    parent,\n    font,\n    debug,\n    locale,\n    embedFont = true,\n    graphemeImages,\n    canLoadAdditionalAssets,\n    getTwStyles,\n  } = context\n\n  // 1. Pre-process the node.\n  if (element === null || typeof element === 'undefined') {\n    yield\n    yield\n    return ''\n  }\n\n  // Not a regular element.\n  if (!isReactElement(element) || isReactComponent(element.type)) {\n    let iter: ReturnType<typeof layout>\n\n    if (!isReactElement(element)) {\n      // Process as text node.\n      iter = buildTextNodes(String(element), context)\n      yield (await iter.next()).value as { word: string; locale?: Locale }[]\n    } else {\n      if (isClass(element.type as Function)) {\n        throw new Error('Class component is not supported.')\n      }\n\n      let render: Function\n\n      // This is a hack to support React.forwardRef wrapped components.\n      // https://github.com/vercel/satori/issues/600\n      if (isForwardRefComponent(element.type)) {\n        render = (element.type as any).render\n      } else {\n        render = element.type as Function\n      }\n\n      // If it's a custom component, Satori strictly requires it to be pure,\n      // stateless, and not relying on any React APIs such as hooks or suspense.\n      // So we can safely evaluate it to render. Otherwise, an error will be\n      // thrown by React.\n      iter = layout(await render(element.props), context)\n      yield (await iter.next()).value as { word: string; locale?: string }[]\n    }\n\n    await iter.next()\n    const offset = yield\n    return (await iter.next(offset)).value as string\n  }\n\n  // Process as element.\n  const { type: $type, props } = element\n  // type must be a string here.\n  const type = $type as string\n\n  if (props && hasDangerouslySetInnerHTMLProp(props)) {\n    throw new Error(\n      'dangerouslySetInnerHTML property is not supported. See documentation for more information https://github.com/vercel/satori#jsx.'\n    )\n  }\n  let { style, children, tw, lang: _newLocale = locale } = props || {}\n  const newLocale = normalizeLocale(_newLocale)\n\n  // Extend Tailwind styles.\n  if (tw) {\n    const twStyles = getTwStyles(tw, style)\n    style = Object.assign(twStyles, style)\n  }\n\n  const node = Yoga.Node.create()\n  parent.insertChild(node, parent.getChildCount())\n\n  const [computedStyle, newInheritableStyle] = await computeStyle(\n    node,\n    type,\n    inheritedStyle,\n    style,\n    props\n  )\n  // Post-process styles to attach inheritable properties for Satori.\n\n  // If the element is inheriting the parent `transform`, or applying its own.\n  // This affects the coordinate system.\n  const isInheritingTransform =\n    computedStyle.transform === inheritedStyle.transform\n  if (!isInheritingTransform) {\n    ;(computedStyle.transform as any).__parent = inheritedStyle.transform\n  }\n\n  // If the element has `overflow` set to `hidden` or clip-path is set, we need to create a clip\n  // path and use it in all its children.\n  if (\n    computedStyle.overflow === 'hidden' ||\n    (computedStyle.clipPath && computedStyle.clipPath !== 'none')\n  ) {\n    newInheritableStyle._inheritedClipPathId = `satori_cp-${id}`\n    newInheritableStyle._inheritedMaskId = `satori_om-${id}`\n  }\n\n  if (computedStyle.maskImage) {\n    newInheritableStyle._inheritedMaskId = `satori_mi-${id}`\n  }\n\n  // If the element has `background-clip: text` set, we need to create a clip\n  // path and use it in all its children.\n  if (computedStyle.backgroundClip === 'text') {\n    const mutateRefValue = { value: '' } as any\n    newInheritableStyle._inheritedBackgroundClipTextPath = mutateRefValue\n    computedStyle._inheritedBackgroundClipTextPath = mutateRefValue\n\n    if (computedStyle.backgroundImage) {\n      newInheritableStyle._inheritedBackgroundClipTextHasBackground = 'true'\n      computedStyle._inheritedBackgroundClipTextHasBackground = 'true'\n    }\n  }\n\n  // 2. Do layout recursively for its children.\n  const normalizedChildren = normalizeChildren(children)\n  const iterators: ReturnType<typeof layout>[] = []\n\n  let i = 0\n  const segmentsMissingFont: { word: string; locale?: string }[] = []\n  for (const child of normalizedChildren) {\n    const iter = layout(child, {\n      id: id + '-' + i++,\n      parentStyle: computedStyle,\n      inheritedStyle: newInheritableStyle,\n      isInheritingTransform: true,\n      parent: node,\n      font,\n      embedFont,\n      debug,\n      graphemeImages,\n      canLoadAdditionalAssets,\n      locale: newLocale,\n      getTwStyles,\n      onNodeDetected: context.onNodeDetected,\n    })\n    if (canLoadAdditionalAssets) {\n      segmentsMissingFont.push(...(((await iter.next()).value as any) || []))\n    } else {\n      await iter.next()\n    }\n    iterators.push(iter)\n  }\n  yield segmentsMissingFont\n  for (const iter of iterators) await iter.next()\n\n  // 3. Post-process the node.\n  const [x, y] = yield\n  let { left, top, width, height } = node.getComputedLayout()\n  // Attach offset to the current node.\n  left += x\n  top += y\n\n  let childrenRenderResult = ''\n  let baseRenderResult = ''\n  let depsRenderResult = ''\n\n  // Emit event for the current node. We don't pass the children prop to the\n  // event handler because everything is already flattened, unless it's a text\n  // node.\n  const { children: childrenNode, ...restProps } = props\n  context.onNodeDetected?.({\n    left,\n    top,\n    width,\n    height,\n    type,\n    props: restProps,\n    key: element.key,\n    textContent: isReactElement(childrenNode) ? undefined : childrenNode,\n  })\n\n  // Generate the rendered markup for the current node.\n  if (type === 'img') {\n    const src = computedStyle.__src as string\n    baseRenderResult = await rect(\n      {\n        id,\n        left,\n        top,\n        width,\n        height,\n        src,\n        isInheritingTransform,\n        debug,\n      },\n      computedStyle,\n      newInheritableStyle\n    )\n  } else if (type === 'svg') {\n    // When entering a <svg> node, we need to convert it to a <img> with the\n    // SVG data URL embedded.\n    const currentColor = computedStyle.color\n    const src = await SVGNodeToImage(element, currentColor)\n    baseRenderResult = await rect(\n      {\n        id,\n        left,\n        top,\n        width,\n        height,\n        src,\n        isInheritingTransform,\n        debug,\n      },\n      computedStyle,\n      newInheritableStyle\n    )\n  } else {\n    const display = style?.display\n    if (\n      type === 'div' &&\n      children &&\n      typeof children !== 'string' &&\n      display !== 'flex' &&\n      display !== 'none' &&\n      display !== 'contents'\n    ) {\n      throw new Error(\n        `Expected <div> to have explicit \"display: flex\", \"display: contents\", or \"display: none\" if it has more than one child node.`\n      )\n    }\n    baseRenderResult = await rect(\n      { id, left, top, width, height, isInheritingTransform, debug },\n      computedStyle,\n      newInheritableStyle\n    )\n  }\n\n  // Generate the rendered markup for the children.\n  for (const iter of iterators) {\n    childrenRenderResult += (await iter.next([left, top])).value\n  }\n\n  // An extra pass to generate the special background-clip shape collected from\n  // children.\n  if (computedStyle._inheritedBackgroundClipTextPath) {\n    depsRenderResult += buildXMLString(\n      'clipPath',\n      {\n        id: `satori_bct-${id}`,\n        'clip-path': computedStyle._inheritedClipPathId\n          ? `url(#${computedStyle._inheritedClipPathId})`\n          : undefined,\n      },\n      (computedStyle._inheritedBackgroundClipTextPath as any).value\n    )\n  }\n\n  return depsRenderResult + baseRenderResult + childrenRenderResult\n}\n","/**\n * This class handles everything related to fonts.\n */\nimport opentype from '@shuding/opentype.js'\nimport { Locale, locales, isValidLocale } from './language.js'\n\nexport type Weight = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900\nexport type WeightName = 'normal' | 'bold'\nexport type FontWeight = Weight | WeightName\nexport type FontStyle = 'normal' | 'italic'\nconst SUFFIX_WHEN_LANG_NOT_SET = 'unknown'\n\nexport interface FontOptions {\n  data: Buffer | ArrayBuffer\n  name: string\n  weight?: Weight\n  style?: FontStyle\n  lang?: string\n}\n\nexport type GlyphBox = {\n  x1: number\n  x2: number\n  y1: number\n  y2: number\n}\ntype SkipInkBand = {\n  underlineY: number\n  strokeWidth: number\n}\n\nexport type FontEngine = {\n  has: (s: string) => boolean\n  baseline: (s?: string, resolvedFont?: any) => number\n  height: (s?: string, resolvedFont?: any) => number\n  measure: (\n    s: string,\n    style: {\n      fontSize: number\n      letterSpacing: number\n    }\n  ) => number\n  getSVG: (\n    s: string,\n    style: {\n      fontSize: number\n      top: number\n      left: number\n      letterSpacing: number\n    },\n    band?: SkipInkBand\n  ) => { path: string; boxes: GlyphBox[] }\n}\n\ntype BandPoint = [number, number]\n\ntype LineSegment = {\n  from: BandPoint\n  to: BandPoint\n}\n\nfunction flattenPath(commands: opentype.Path['commands']): LineSegment[] {\n  const segments: LineSegment[] = []\n  let start: BandPoint = [0, 0]\n  let current: BandPoint = [0, 0]\n\n  const addCurve = (points: BandPoint[], steps: number) => {\n    let prev = points[0]\n    for (let i = 1; i <= steps; i++) {\n      const t = i / steps\n      const next = evaluateBezier(points, t)\n      segments.push({ from: prev, to: next })\n      prev = next\n    }\n    current = points[points.length - 1]\n  }\n\n  for (const cmd of commands) {\n    if (cmd.type === 'M') {\n      start = current = [cmd.x, cmd.y]\n      continue\n    }\n\n    if (cmd.type === 'L') {\n      const next: BandPoint = [cmd.x, cmd.y]\n      segments.push({ from: current, to: next })\n      current = next\n      continue\n    }\n\n    if (cmd.type === 'Q') {\n      addCurve([current, [cmd.x1, cmd.y1], [cmd.x, cmd.y]], 12)\n      continue\n    }\n\n    if (cmd.type === 'C') {\n      addCurve(\n        [current, [cmd.x1, cmd.y1], [cmd.x2, cmd.y2], [cmd.x, cmd.y]],\n        16\n      )\n      continue\n    }\n\n    if (cmd.type === 'Z') {\n      segments.push({ from: current, to: start })\n      current = start\n    }\n  }\n\n  return segments\n}\n\nfunction evaluateBezier(points: BandPoint[], t: number): BandPoint {\n  let working = points\n\n  while (working.length > 1) {\n    const next: BandPoint[] = []\n    for (let i = 0; i < working.length - 1; i++) {\n      next.push([\n        working[i][0] + (working[i + 1][0] - working[i][0]) * t,\n        working[i][1] + (working[i + 1][1] - working[i][1]) * t,\n      ])\n    }\n    working = next\n  }\n\n  return working[0]\n}\n\nfunction computeBandBox(\n  commands: opentype.Path['commands'],\n  band?: SkipInkBand\n): GlyphBox[] {\n  if (!band) return []\n\n  const strokeWidth = band.strokeWidth\n  const bandMin = band.underlineY - strokeWidth * 0.25\n  const bandMax = band.underlineY + strokeWidth * 2.5\n\n  const segments = flattenPath(commands)\n  if (!segments.length) return []\n\n  const bandHeight = bandMax - bandMin\n  const ySamples = Math.max(12, Math.ceil(bandHeight / 0.25))\n  const yStep = bandHeight / ySamples\n  const yStart = bandMin + yStep / 2\n\n  const columnHits = new Set<number>()\n\n  for (let i = 0; i < ySamples; i++) {\n    const y = yStart + yStep * i\n    const intersections: number[] = []\n\n    for (const seg of segments) {\n      const [x1, y1] = seg.from\n      const [x2, y2] = seg.to\n\n      if (y1 === y2) continue\n      const yMin = Math.min(y1, y2)\n      const yMax = Math.max(y1, y2)\n      if (y < yMin || y >= yMax) continue\n\n      const t = (y - y1) / (y2 - y1)\n      const x = x1 + (x2 - x1) * t\n      intersections.push(x)\n    }\n\n    if (!intersections.length) continue\n    intersections.sort((a, b) => a - b)\n\n    for (let j = 0; j < intersections.length - 1; j += 2) {\n      const from = Math.min(intersections[j], intersections[j + 1])\n      const to = Math.max(intersections[j], intersections[j + 1])\n      const start = Math.floor(from)\n      const end = Math.ceil(to)\n      for (let col = start; col < end; col++) {\n        columnHits.add(col)\n      }\n    }\n  }\n\n  if (!columnHits.size) return []\n\n  const columns = Array.from(columnHits.values()).sort((a, b) => a - b)\n  const inkRanges: [number, number][] = []\n\n  let rangeStart = columns[0]\n  let prev = columns[0]\n  for (let i = 1; i < columns.length; i++) {\n    const col = columns[i]\n    if (col > prev + 1) {\n      inkRanges.push([rangeStart, prev + 1])\n      rangeStart = col\n    }\n    prev = col\n  }\n  inkRanges.push([rangeStart, prev + 1])\n\n  const boxes: GlyphBox[] = []\n  const bleed = strokeWidth * 0.6\n  const minX = inkRanges[0][0]\n  const maxX = inkRanges[inkRanges.length - 1][1]\n\n  for (const [x1, x2] of inkRanges) {\n    const left = Math.min(x1, minX) - bleed\n    const right = Math.max(x2, maxX) + bleed\n    boxes.push({\n      x1: left,\n      x2: right,\n      y1: bandMin,\n      y2: bandMax,\n    })\n  }\n\n  return boxes\n}\n\nfunction computeBoundingBox(\n  commands: opentype.Path['commands']\n): GlyphBox | null {\n  const xs: number[] = []\n  const ys: number[] = []\n\n  for (const cmd of commands) {\n    if ('x' in cmd && typeof cmd.x === 'number') xs.push(cmd.x)\n    if ('y' in cmd && typeof cmd.y === 'number') ys.push(cmd.y)\n    if ('x1' in cmd && typeof cmd.x1 === 'number') xs.push(cmd.x1)\n    if ('y1' in cmd && typeof cmd.y1 === 'number') ys.push(cmd.y1)\n    if ('x2' in cmd && typeof cmd.x2 === 'number') xs.push(cmd.x2)\n    if ('y2' in cmd && typeof cmd.y2 === 'number') ys.push(cmd.y2)\n  }\n\n  if (!xs.length || !ys.length) {\n    return null\n  }\n\n  return {\n    x1: Math.min(...xs),\n    x2: Math.max(...xs),\n    y1: Math.min(...ys),\n    y2: Math.max(...ys),\n  }\n}\n\nfunction compareFont(\n  weight,\n  style,\n  [matchedWeight, matchedStyle],\n  [nextWeight, nextStyle]\n) {\n  if (matchedWeight !== nextWeight) {\n    // Put the defined weight first.\n    if (!matchedWeight) return 1\n    if (!nextWeight) return -1\n\n    // Exact match.\n    if (matchedWeight === weight) return -1\n    if (nextWeight === weight) return 1\n\n    // 400 and 500.\n    if (weight === 400 && matchedWeight === 500) return -1\n    if (weight === 500 && matchedWeight === 400) return -1\n    if (weight === 400 && nextWeight === 500) return 1\n    if (weight === 500 && nextWeight === 400) return 1\n\n    // Less than 400.\n    if (weight < 400) {\n      if (matchedWeight < weight && nextWeight < weight)\n        return nextWeight - matchedWeight\n      if (matchedWeight < weight) return -1\n      if (nextWeight < weight) return 1\n      return matchedWeight - nextWeight\n    }\n\n    // Greater than 500.\n    if (weight < matchedWeight && weight < nextWeight)\n      return matchedWeight - nextWeight\n    if (weight < matchedWeight) return -1\n    if (weight < nextWeight) return 1\n    return nextWeight - matchedWeight\n  }\n\n  if (matchedStyle !== nextStyle) {\n    // Exact match.\n    if (matchedStyle === style) return -1\n    if (nextStyle === style) return 1\n  }\n\n  return -1\n}\n\nconst cachedParsedFont = new WeakMap<\n  Buffer | ArrayBuffer,\n  opentype.Font | null | undefined\n>()\n\nexport default class FontLoader {\n  defaultFont: opentype.Font\n  fonts = new Map<string, [opentype.Font, Weight?, FontStyle?][]>()\n  constructor(fontOptions: FontOptions[]) {\n    this.addFonts(fontOptions)\n  }\n\n  // Get font by name and weight.\n  private get({\n    name,\n    weight,\n    style,\n  }: {\n    name: string\n    weight: Weight | WeightName\n    style: FontStyle\n  }) {\n    if (!this.fonts.has(name)) {\n      return null\n    }\n\n    if (weight === 'normal') weight = 400\n    if (weight === 'bold') weight = 700\n    if (typeof weight === 'string')\n      weight = Number.parseInt(weight, 10) as Weight\n\n    const fonts = [...this.fonts.get(name)]\n\n    let matchedFont = fonts[0]\n\n    // Fallback to the closest weight and style according to the strategy here:\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight#fallback_weights\n    for (let i = 1; i < fonts.length; i++) {\n      const [, weight1, style1] = matchedFont\n      const [, weight2, style2] = fonts[i]\n      if (\n        compareFont(weight, style, [weight1, style1], [weight2, style2]) > 0\n      ) {\n        matchedFont = fonts[i]\n      }\n    }\n\n    return matchedFont[0]\n  }\n\n  public addFonts(fontOptions: FontOptions[]) {\n    for (const fontOption of fontOptions) {\n      const { name, data, lang } = fontOption\n      if (lang && !isValidLocale(lang)) {\n        throw new Error(\n          `Invalid value for props \\`lang\\`: \"${lang}\". The value must be one of the following: ${locales.join(\n            ', '\n          )}.`\n        )\n      }\n      const _lang = lang ?? SUFFIX_WHEN_LANG_NOT_SET\n      let font\n\n      if (cachedParsedFont.has(data)) {\n        font = cachedParsedFont.get(data)\n      } else {\n        font = opentype.parse(\n          // Buffer to ArrayBuffer.\n          'buffer' in data\n            ? data.buffer.slice(\n                data.byteOffset,\n                data.byteOffset + data.byteLength\n              )\n            : data,\n          // @ts-ignore\n          { lowMemory: true }\n        )\n        // Modify the `charToGlyphIndex` method, so we can know which char is\n        // being mapped to which glyph.\n        const originalCharToGlyphIndex = font.charToGlyphIndex\n        font.charToGlyphIndex = (char) => {\n          const index = originalCharToGlyphIndex.call(font, char)\n          if (index === 0) {\n            // The current requested char is missing a glyph.\n            if ((font as any)._trackBrokenChars) {\n              ;(font as any)._trackBrokenChars.push(char)\n            }\n          }\n          return index\n        }\n\n        cachedParsedFont.set(data, font)\n      }\n\n      // We use the first font as the default font fallback.\n      if (!this.defaultFont) this.defaultFont = font\n\n      const _name = `${name.toLowerCase()}_${_lang}`\n\n      if (!this.fonts.has(_name)) {\n        this.fonts.set(_name, [])\n      }\n      this.fonts.get(_name).push([font, fontOption.weight, fontOption.style])\n    }\n  }\n\n  public getEngine(\n    fontSize = 16,\n    lineHeight: number | string = 'normal',\n    {\n      fontFamily = 'sans-serif',\n      fontWeight = 400,\n      fontStyle = 'normal',\n    }: {\n      fontFamily?: string | string[]\n      fontWeight?: FontWeight\n      fontStyle?: FontStyle\n    },\n    locale: Locale | undefined\n  ): FontEngine {\n    if (!this.fonts.size) {\n      throw new Error(\n        'No fonts are loaded. At least one font is required to calculate the layout.'\n      )\n    }\n\n    fontFamily = (Array.isArray(fontFamily) ? fontFamily : [fontFamily]).map(\n      (name) => name.toLowerCase()\n    )\n    const fonts = []\n    fontFamily.forEach((face) => {\n      const getNormal = this.get({\n        name: face,\n        weight: fontWeight,\n        style: fontStyle,\n      })\n      if (getNormal) {\n        fonts.push(getNormal)\n        return\n      }\n\n      const getUnknown = this.get({\n        name: face + '_unknown',\n        weight: fontWeight,\n        style: fontStyle,\n      })\n\n      if (getUnknown) {\n        fonts.push(getUnknown)\n        return\n      }\n    })\n\n    // Add additional fonts as the fallback.\n    const keys = Array.from(this.fonts.keys())\n    const specifiedLangFonts = []\n    const nonSpecifiedLangFonts = []\n    const additionalFonts = []\n    for (const name of keys) {\n      if (fontFamily.includes(name)) continue\n      if (locale) {\n        const lang = getLangFromFontName(name)\n        if (lang) {\n          if (lang === locale) {\n            specifiedLangFonts.push(\n              this.get({\n                name,\n                weight: fontWeight,\n                style: fontStyle,\n              })\n            )\n          } else {\n            nonSpecifiedLangFonts.push(\n              this.get({\n                name,\n                weight: fontWeight,\n                style: fontStyle,\n              })\n            )\n          }\n        } else {\n          additionalFonts.push(\n            this.get({\n              name,\n              weight: fontWeight,\n              style: fontStyle,\n            })\n          )\n        }\n      } else {\n        additionalFonts.push(\n          this.get({\n            name,\n            weight: fontWeight,\n            style: fontStyle,\n          })\n        )\n      }\n    }\n\n    const cachedFontResolver = new Map<number, opentype.Font | undefined>()\n    const resolveFont = (word: string, fallback = true) => {\n      const _fonts = [\n        ...fonts,\n        ...additionalFonts,\n        ...specifiedLangFonts,\n        ...(fallback ? nonSpecifiedLangFonts : []),\n      ]\n\n      if (typeof word === 'undefined') {\n        if (fallback) {\n          return _fonts[_fonts.length - 1]\n        }\n        return undefined\n      }\n\n      const code = word.charCodeAt(0)\n      if (cachedFontResolver.has(code)) return cachedFontResolver.get(code)\n\n      const font = _fonts.find((_font, index) => {\n        return (\n          !!_font.charToGlyphIndex(word) ||\n          (fallback && index === _fonts.length - 1)\n        )\n      })\n\n      if (font) {\n        cachedFontResolver.set(code, font)\n      }\n\n      return font\n    }\n\n    const ascender = (resolvedFont: opentype.Font, useOS2Table = false) => {\n      const _ascender =\n        (useOS2Table ? resolvedFont.tables?.os2?.sTypoAscender : 0) ||\n        resolvedFont.ascender\n      return (_ascender / resolvedFont.unitsPerEm) * fontSize\n    }\n\n    const descender = (resolvedFont: opentype.Font, useOS2Table = false) => {\n      const _descender =\n        (useOS2Table ? resolvedFont.tables?.os2?.sTypoDescender : 0) ||\n        resolvedFont.descender\n      return (_descender / resolvedFont.unitsPerEm) * fontSize\n    }\n\n    const height = (resolvedFont: opentype.Font, useOS2Table = false) => {\n      if ('string' === typeof lineHeight && 'normal' === lineHeight) {\n        const _lineGap =\n          (useOS2Table ? resolvedFont.tables?.os2?.sTypoLineGap : 0) || 0\n        return (\n          ascender(resolvedFont, useOS2Table) -\n          descender(resolvedFont, useOS2Table) +\n          (_lineGap / resolvedFont.unitsPerEm) * fontSize\n        )\n      } else if ('number' === typeof lineHeight) {\n        return fontSize * lineHeight\n      }\n    }\n\n    const resolve = (s: string) => {\n      return resolveFont(s, false)\n    }\n\n    const engine = {\n      has: (s: string) => {\n        if (s === '\\n') return true\n        const font = resolve(s)\n        if (!font) return false\n        ;(font as any)._trackBrokenChars = []\n        font.stringToGlyphs(s)\n        if (!(font as any)._trackBrokenChars.length) return true\n        ;(font as any)._trackBrokenChars = undefined\n        return false\n      },\n      baseline: (\n        s?: string,\n        resolvedFont = typeof s === 'undefined' ? fonts[0] : resolveFont(s)\n      ) => {\n        const asc = ascender(resolvedFont)\n        const desc = descender(resolvedFont)\n        const contentHeight = asc - desc\n\n        return asc + (height(resolvedFont) - contentHeight) / 2\n      },\n      height: (\n        s?: string,\n        resolvedFont = typeof s === 'undefined' ? fonts[0] : resolveFont(s)\n      ) => {\n        return height(resolvedFont)\n      },\n      measure: (\n        s: string,\n        style: {\n          fontSize: number\n          letterSpacing: number\n        }\n      ) => {\n        return this.measure(resolveFont, s, style)\n      },\n      getSVG: (\n        s: string,\n        style: {\n          fontSize: number\n          top: number\n          left: number\n          letterSpacing: number\n        },\n        band?: SkipInkBand\n      ) => {\n        return this.getSVG(resolveFont, s, style, band)\n      },\n    }\n\n    return engine\n  }\n\n  private patchFontFallbackResolver(\n    font: opentype.Font,\n    resolveFont: (word: string, fallback?: boolean) => opentype.Font\n  ) {\n    const brokenChars = []\n    ;(font as any)._trackBrokenChars = brokenChars\n\n    const originalStringToGlyphs = font.stringToGlyphs\n    font.stringToGlyphs = (s: string, ...args: any) => {\n      const glyphs = originalStringToGlyphs.call(font, s, ...args)\n\n      for (let i = 0; i < glyphs.length; i++) {\n        // Hitting an undefined glyph. We have to try to resolve it from other\n        // fonts.\n        // @TODO: This affects the kerning resolution but should be fine for now.\n        if (glyphs[i].unicode === undefined) {\n          const char = brokenChars.shift()\n          const anotherFont = resolveFont(char)\n          if (anotherFont !== font) {\n            const glyph = anotherFont.charToGlyph(char)\n            // Scale the glyph to match the current units per em.\n            const scale = font.unitsPerEm / anotherFont.unitsPerEm\n            const p = new opentype.Path()\n            p.unitsPerEm = font.unitsPerEm\n            p.commands = glyph.path.commands.map((command) => {\n              const scaledCommand = { ...command }\n              for (let k in scaledCommand) {\n                if (typeof scaledCommand[k] === 'number') {\n                  scaledCommand[k] *= scale\n                }\n              }\n              return scaledCommand\n            })\n            const g = new opentype.Glyph({\n              ...glyph,\n              advanceWidth: glyph.advanceWidth * scale,\n              xMin: glyph.xMin * scale,\n              xMax: glyph.xMax * scale,\n              yMin: glyph.yMin * scale,\n              yMax: glyph.yMax * scale,\n              path: p,\n            })\n\n            glyphs[i] = g\n          }\n        }\n      }\n\n      return glyphs\n    }\n\n    return () => {\n      font.stringToGlyphs = originalStringToGlyphs\n      ;(font as any)._trackBrokenChars = undefined\n    }\n  }\n\n  private measure(\n    resolveFont: (word: string, fallback?: boolean) => opentype.Font,\n    content: string,\n    {\n      fontSize,\n      letterSpacing = 0,\n    }: {\n      fontSize: number\n      letterSpacing: number\n    }\n  ) {\n    const font = resolveFont(content)\n    const unpatch = this.patchFontFallbackResolver(font, resolveFont)\n\n    try {\n      return font.getAdvanceWidth(content, fontSize, {\n        letterSpacing: letterSpacing / fontSize,\n      })\n    } finally {\n      unpatch()\n    }\n  }\n\n  private getSVG(\n    resolveFont: (word: string, fallback?: boolean) => opentype.Font,\n    content: string,\n    {\n      fontSize,\n      top,\n      left,\n      letterSpacing = 0,\n    }: {\n      fontSize: number\n      top: number\n      left: number\n      letterSpacing: number\n    },\n    band?: SkipInkBand\n  ): { path: string; boxes: GlyphBox[] } {\n    const font = resolveFont(content)\n    const unpatch = this.patchFontFallbackResolver(font, resolveFont)\n\n    try {\n      if (fontSize === 0) {\n        return { path: '', boxes: [] }\n      }\n\n      const fullPath = new opentype.Path()\n      const boxes: GlyphBox[] = []\n\n      const options = {\n        letterSpacing: letterSpacing / fontSize,\n      }\n\n      const cachedPath = new WeakMap<\n        opentype.Glyph,\n        [number, number, opentype.Path]\n      >()\n\n      font.forEachGlyph(\n        content.replace(/\\n/g, ''),\n        left,\n        top,\n        fontSize,\n        options,\n        function (glyph, gX, gY, gFontSize) {\n          let glyphPath: opentype.Path\n          if (!cachedPath.has(glyph)) {\n            glyphPath = glyph.getPath(gX, gY, gFontSize, options)\n            cachedPath.set(glyph, [gX, gY, glyphPath])\n          } else {\n            const [_x, _y, _glyphPath] = cachedPath.get(glyph)\n            glyphPath = new opentype.Path()\n            glyphPath.commands = _glyphPath.commands.map((command) => {\n              const movedCommand = { ...command }\n              for (let k in movedCommand) {\n                if (typeof movedCommand[k] === 'number') {\n                  if (k === 'x' || k === 'x1' || k === 'x2') {\n                    movedCommand[k] += gX - _x\n                  }\n                  if (k === 'y' || k === 'y1' || k === 'y2') {\n                    movedCommand[k] += gY - _y\n                  }\n                }\n              }\n              return movedCommand\n            })\n          }\n\n          const bandBoxes = band ? computeBandBox(glyphPath.commands, band) : []\n          if (bandBoxes.length) {\n            boxes.push(...bandBoxes)\n          }\n\n          fullPath.extend(glyphPath)\n        }\n      )\n\n      return {\n        path: fullPath.toPathData(1),\n        boxes,\n      }\n    } finally {\n      unpatch()\n    }\n  }\n}\n\nfunction getLangFromFontName(name: string): Locale | undefined {\n  const arr = name.split('_')\n  const lang = arr[arr.length - 1]\n\n  return lang === SUFFIX_WHEN_LANG_NOT_SET ? undefined : (lang as Locale)\n}\n","import { buildXMLString } from '../utils.js'\n\nexport default function svg({\n  width,\n  height,\n  content,\n}: {\n  width: number\n  height: number\n  content: string\n}) {\n  return buildXMLString(\n    'svg',\n    {\n      width,\n      height,\n      viewBox: `0 0 ${width} ${height}`,\n      xmlns: 'http://www.w3.org/2000/svg',\n    },\n    content\n  )\n}\n","import resolveConfig from 'tailwindcss/resolveConfig';\nimport Cache from './cache';\nimport ClassParser from './ClassParser';\nimport { parseInputs } from './parse-inputs';\nimport { complete, warn } from './helpers';\nimport { getAddedUtilities } from './plugin';\nimport { removeOpacityHelpers } from './resolve/color';\nexport function create(customConfig, platform) {\n    const config = resolveConfig(withContent(customConfig));\n    const device = {};\n    const pluginUtils = getAddedUtilities(config.plugins);\n    const customStringUtils = {};\n    const customStyleUtils = Object.entries(pluginUtils)\n        .map(([util, style]) => {\n        if (typeof style === `string`) {\n            // mutating while mapping, i know - bad form, but for performance sake... ¯\\_(ツ)_/¯\n            customStringUtils[util] = style;\n            return [util, { kind: `null` }];\n        }\n        return [util, complete(style)];\n    })\n        .filter(([, ir]) => ir.kind !== `null`);\n    function deriveCacheGroup() {\n        return ([\n            device.windowDimensions ? `w${device.windowDimensions.width}` : false,\n            device.windowDimensions ? `h${device.windowDimensions.height}` : false,\n            device.fontScale ? `fs${device.fontScale}` : false,\n            device.colorScheme === `dark` ? `dark` : false,\n            device.pixelDensity === 2 ? `retina` : false,\n        ]\n            .filter(Boolean)\n            .join(`--`) || `default`);\n    }\n    let cacheGroup = deriveCacheGroup();\n    const contextCaches = {};\n    function getCache() {\n        const existing = contextCaches[cacheGroup];\n        if (existing) {\n            return existing;\n        }\n        const cache = new Cache(customStyleUtils);\n        contextCaches[cacheGroup] = cache;\n        return cache;\n    }\n    function style(...inputs) {\n        const cache = getCache();\n        let resolved = {};\n        const dependents = [];\n        const ordered = [];\n        const [utilities, userStyle] = parseInputs(inputs);\n        // check if we've seen this full set of classes before\n        // if we have a cached copy, we can skip examining each utility\n        const joined = utilities.join(` `);\n        const cached = cache.getStyle(joined);\n        if (cached) {\n            return { ...cached, ...(userStyle ? userStyle : {}) };\n        }\n        for (const utility of utilities) {\n            let styleIr = cache.getIr(utility);\n            if (!styleIr && utility in customStringUtils) {\n                const customStyle = style(customStringUtils[utility]);\n                cache.setIr(utility, complete(customStyle));\n                resolved = { ...resolved, ...customStyle };\n                continue;\n            }\n            const parser = new ClassParser(utility, config, cache, device, platform);\n            styleIr = parser.parse();\n            switch (styleIr.kind) {\n                case `complete`:\n                    resolved = { ...resolved, ...styleIr.style };\n                    cache.setIr(utility, styleIr);\n                    break;\n                case `dependent`:\n                    dependents.push(styleIr);\n                    break;\n                case `ordered`:\n                    ordered.push(styleIr);\n                    break;\n                case `null`:\n                    cache.setIr(utility, styleIr);\n                    break;\n            }\n        }\n        if (ordered.length > 0) {\n            ordered.sort((a, b) => a.order - b.order);\n            for (const orderedStyle of ordered) {\n                switch (orderedStyle.styleIr.kind) {\n                    case `complete`:\n                        resolved = { ...resolved, ...orderedStyle.styleIr.style };\n                        break;\n                    case `dependent`:\n                        dependents.push(orderedStyle.styleIr);\n                        break;\n                }\n            }\n        }\n        if (dependents.length > 0) {\n            for (const dependent of dependents) {\n                const error = dependent.complete(resolved);\n                if (error) {\n                    warn(error);\n                }\n            }\n            removeOpacityHelpers(resolved);\n        }\n        // cache the full set of classes for future re-renders\n        // it's important we cache BEFORE merging in userStyle below\n        if (joined !== ``) {\n            cache.setStyle(joined, resolved);\n        }\n        if (userStyle) {\n            resolved = { ...resolved, ...userStyle };\n        }\n        return resolved;\n    }\n    function color(utils) {\n        const styleObj = style(utils\n            .split(/\\s+/g)\n            .map((util) => util.replace(/^(bg|text|border)-/, ``))\n            .map((util) => `bg-${util}`)\n            .join(` `));\n        return typeof styleObj.backgroundColor === `string`\n            ? styleObj.backgroundColor\n            : undefined;\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n    const tailwindFn = (strings, ...values) => {\n        let str = ``;\n        strings.forEach((string, i) => {\n            var _a;\n            str += string + ((_a = values[i]) !== null && _a !== void 0 ? _a : ``);\n        });\n        return style(str);\n    };\n    tailwindFn.style = style;\n    tailwindFn.color = color;\n    tailwindFn.prefixMatch = (...prefixes) => {\n        const joined = prefixes.sort().join(`:`);\n        const cache = getCache();\n        const cached = cache.getPrefixMatch(joined);\n        if (cached !== undefined) {\n            return cached;\n        }\n        const parser = new ClassParser(`${joined}:flex`, config, cache, device, platform);\n        const ir = parser.parse();\n        const prefixMatches = ir.kind !== `null`;\n        cache.setPrefixMatch(joined, prefixMatches);\n        return prefixMatches;\n    };\n    tailwindFn.setWindowDimensions = (newDimensions) => {\n        device.windowDimensions = newDimensions;\n        cacheGroup = deriveCacheGroup();\n    };\n    tailwindFn.setFontScale = (newFontScale) => {\n        device.fontScale = newFontScale;\n        cacheGroup = deriveCacheGroup();\n    };\n    tailwindFn.setPixelDensity = (newPixelDensity) => {\n        device.pixelDensity = newPixelDensity;\n        cacheGroup = deriveCacheGroup();\n    };\n    tailwindFn.setColorScheme = (newColorScheme) => {\n        device.colorScheme = newColorScheme;\n        cacheGroup = deriveCacheGroup();\n    };\n    return tailwindFn;\n}\nexport default create;\nfunction withContent(config) {\n    return {\n        ...config,\n        // prevent warnings from tailwind about not having a `content` prop\n        // we don't need one because we have our own jit parser which\n        // does not rely on knowing content paths to search\n        content: [`_no_warnings_please`],\n    };\n}\n","export const PLATFORMS = [`ios`, `android`, `windows`, `macos`, `web`];\nexport function isPlatform(x) {\n    return PLATFORMS.includes(x);\n}\nexport const ORIENTATIONS = [`portrait`, `landscape`];\nexport function isOrientation(x) {\n    return ORIENTATIONS.includes(x);\n}\nexport var ConfigType;\n(function (ConfigType) {\n    ConfigType[\"fontSize\"] = \"fontSize\";\n    ConfigType[\"lineHeight\"] = \"lineHeight\";\n})(ConfigType || (ConfigType = {}));\nexport var Unit;\n(function (Unit) {\n    Unit[\"rem\"] = \"rem\";\n    Unit[\"em\"] = \"em\";\n    Unit[\"px\"] = \"px\";\n    Unit[\"percent\"] = \"%\";\n    Unit[\"vw\"] = \"vw\";\n    Unit[\"vh\"] = \"vh\";\n    Unit[\"none\"] = \"<no-css-unit>\";\n})(Unit || (Unit = {}));\nexport function isString(value) {\n    return typeof value === `string`;\n}\nexport function isObject(value) {\n    return typeof value === `object`;\n}\n","var _a;\nimport { Unit } from './types';\nexport function complete(style) {\n    return { kind: `complete`, style };\n}\nexport function parseNumericValue(value, context = {}) {\n    const { fractions } = context;\n    if (fractions && value.includes(`/`)) {\n        const [numerator = ``, denominator = ``] = value.split(`/`, 2);\n        const parsedNumerator = parseNumericValue(numerator);\n        const parsedDenominator = parseNumericValue(denominator);\n        if (!parsedNumerator || !parsedDenominator) {\n            return null;\n        }\n        return [parsedNumerator[0] / parsedDenominator[0], parsedDenominator[1]];\n    }\n    const number = parseFloat(value);\n    if (Number.isNaN(number)) {\n        return null;\n    }\n    const match = value.match(/(([a-z]{2,}|%))$/);\n    if (!match) {\n        return [number, Unit.none];\n    }\n    switch (match === null || match === void 0 ? void 0 : match[1]) {\n        case `rem`:\n            return [number, Unit.rem];\n        case `px`:\n            return [number, Unit.px];\n        case `em`:\n            return [number, Unit.em];\n        case `%`:\n            return [number, Unit.percent];\n        case `vw`:\n            return [number, Unit.vw];\n        case `vh`:\n            return [number, Unit.vh];\n        default:\n            return null;\n    }\n}\nexport function getCompleteStyle(prop, value, context = {}) {\n    const styleVal = parseStyleVal(value, context);\n    return styleVal === null ? null : complete({ [prop]: styleVal });\n}\nexport function mergeStyle(prop, value, style) {\n    const styleVal = parseStyleVal(value);\n    if (styleVal !== null) {\n        style[prop] = styleVal;\n    }\n    return style;\n}\nexport function getStyle(prop, value) {\n    const styleVal = parseStyleVal(value);\n    return styleVal === null ? null : { [prop]: styleVal };\n}\nexport function parseStyleVal(value, context = {}) {\n    if (value === undefined) {\n        return null;\n    }\n    const parsed = parseNumericValue(String(value), context);\n    if (parsed) {\n        return toStyleVal(...parsed, context);\n    }\n    else {\n        return null;\n    }\n}\nexport function toStyleVal(number, unit, context = {}) {\n    const { isNegative, device } = context;\n    switch (unit) {\n        case Unit.rem:\n            return number * 16 * (isNegative ? -1 : 1);\n        case Unit.px:\n            return number * (isNegative ? -1 : 1);\n        case Unit.percent:\n            return `${isNegative ? `-` : ``}${number}%`;\n        case Unit.none:\n            return number * (isNegative ? -1 : 1);\n        case Unit.vw:\n            if (!(device === null || device === void 0 ? void 0 : device.windowDimensions)) {\n                warn(`\\`vw\\` CSS unit requires configuration with \\`useDeviceContext()\\``);\n                return null;\n            }\n            return device.windowDimensions.width * (number / 100);\n        case Unit.vh:\n            if (!(device === null || device === void 0 ? void 0 : device.windowDimensions)) {\n                warn(`\\`vh\\` CSS unit requires configuration with \\`useDeviceContext()\\``);\n                return null;\n            }\n            return device.windowDimensions.height * (number / 100);\n        default:\n            return null;\n    }\n}\nexport function toPx(value) {\n    const parsed = parseNumericValue(value);\n    if (!parsed) {\n        return null;\n    }\n    const [number, unit] = parsed;\n    switch (unit) {\n        case Unit.rem:\n            return number * 16;\n        case Unit.px:\n            return number;\n        default:\n            return null;\n    }\n}\nconst DIR_MAP = {\n    t: `Top`,\n    tr: `TopRight`,\n    tl: `TopLeft`,\n    b: `Bottom`,\n    br: `BottomRight`,\n    bl: `BottomLeft`,\n    l: `Left`,\n    r: `Right`,\n    x: `Horizontal`,\n    y: `Vertical`,\n};\nexport function getDirection(string) {\n    return DIR_MAP[string !== null && string !== void 0 ? string : ``] || `All`;\n}\nexport function parseAndConsumeDirection(utilityFragment) {\n    let direction = `All`;\n    const consumed = utilityFragment.replace(/^-(t|b|r|l|tr|tl|br|bl)(-|$)/, (_, dir) => {\n        direction = getDirection(dir);\n        return ``;\n    });\n    return [consumed, direction];\n}\nexport function parseUnconfigged(value, context = {}) {\n    if (value.includes(`/`)) {\n        const style = unconfiggedStyleVal(value, { ...context, fractions: true });\n        if (style)\n            return style;\n    }\n    if (value[0] === `[`) {\n        value = value.slice(1, -1);\n    }\n    return unconfiggedStyleVal(value, context);\n}\nexport function unconfiggedStyle(prop, value, context = {}) {\n    const styleVal = parseUnconfigged(value, context);\n    if (styleVal === null) {\n        return null;\n    }\n    return complete({ [prop]: styleVal });\n}\nfunction unconfiggedStyleVal(value, context = {}) {\n    if (value === `px`) {\n        return 1;\n    }\n    const parsed = parseNumericValue(value, context);\n    if (!parsed) {\n        return null;\n    }\n    let [number, unit] = parsed;\n    if (context.fractions) {\n        unit = Unit.percent;\n        number *= 100;\n    }\n    // not sure if this is the right approach, but this allows arbitrary\n    // non-bracket numbers, like top-73 and it INFERS the meaning to be\n    // tailwind's default scale for spacing, which is 1 = 0.25rem\n    if (unit === Unit.none) {\n        number = number / 4;\n        unit = Unit.rem;\n    }\n    return toStyleVal(number, unit, context);\n}\nfunction consoleWarn(...args) {\n    console.warn(...args);\n}\nfunction noopWarn(..._) {\n    // ¯\\_(ツ)_/¯\n}\nexport const warn = typeof process === `undefined` || ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.JEST_WORKER_ID) === undefined\n    ? consoleWarn\n    : noopWarn;\n","import { complete } from './helpers';\nconst defaultStyles = [\n    [`aspect-square`, complete({ aspectRatio: 1 })],\n    [`aspect-video`, complete({ aspectRatio: 16 / 9 })],\n    [`items-center`, complete({ alignItems: `center` })],\n    [`items-start`, complete({ alignItems: `flex-start` })],\n    [`items-end`, complete({ alignItems: `flex-end` })],\n    [`items-baseline`, complete({ alignItems: `baseline` })],\n    [`items-stretch`, complete({ alignItems: `stretch` })],\n    [`justify-start`, complete({ justifyContent: `flex-start` })],\n    [`justify-end`, complete({ justifyContent: `flex-end` })],\n    [`justify-center`, complete({ justifyContent: `center` })],\n    [`justify-between`, complete({ justifyContent: `space-between` })],\n    [`justify-around`, complete({ justifyContent: `space-around` })],\n    [`justify-evenly`, complete({ justifyContent: `space-evenly` })],\n    [`content-start`, complete({ alignContent: `flex-start` })],\n    [`content-end`, complete({ alignContent: `flex-end` })],\n    [`content-between`, complete({ alignContent: `space-between` })],\n    [`content-around`, complete({ alignContent: `space-around` })],\n    [`content-stretch`, complete({ alignContent: `stretch` })],\n    [`content-center`, complete({ alignContent: `center` })],\n    [`self-auto`, complete({ alignSelf: `auto` })],\n    [`self-start`, complete({ alignSelf: `flex-start` })],\n    [`self-end`, complete({ alignSelf: `flex-end` })],\n    [`self-center`, complete({ alignSelf: `center` })],\n    [`self-stretch`, complete({ alignSelf: `stretch` })],\n    [`self-baseline`, complete({ alignSelf: `baseline` })],\n    [`direction-inherit`, complete({ direction: `inherit` })],\n    [`direction-ltr`, complete({ direction: `ltr` })],\n    [`direction-rtl`, complete({ direction: `rtl` })],\n    [`hidden`, complete({ display: `none` })],\n    [`flex`, complete({ display: `flex` })],\n    [`flex-row`, complete({ flexDirection: `row` })],\n    [`flex-row-reverse`, complete({ flexDirection: `row-reverse` })],\n    [`flex-col`, complete({ flexDirection: `column` })],\n    [`flex-col-reverse`, complete({ flexDirection: `column-reverse` })],\n    [`flex-wrap`, complete({ flexWrap: `wrap` })],\n    [`flex-wrap-reverse`, complete({ flexWrap: `wrap-reverse` })],\n    [`flex-nowrap`, complete({ flexWrap: `nowrap` })],\n    [`flex-auto`, complete({ flexGrow: 1, flexShrink: 1, flexBasis: `auto` })],\n    [`flex-initial`, complete({ flexGrow: 0, flexShrink: 1, flexBasis: `auto` })],\n    [`flex-none`, complete({ flexGrow: 0, flexShrink: 0, flexBasis: `auto` })],\n    [`overflow-hidden`, complete({ overflow: `hidden` })],\n    [`overflow-visible`, complete({ overflow: `visible` })],\n    [`overflow-scroll`, complete({ overflow: `scroll` })],\n    [`absolute`, complete({ position: `absolute` })],\n    [`relative`, complete({ position: `relative` })],\n    [`italic`, complete({ fontStyle: `italic` })],\n    [`not-italic`, complete({ fontStyle: `normal` })],\n    [`oldstyle-nums`, fontVariant(`oldstyle-nums`)],\n    [`small-caps`, fontVariant(`small-caps`)],\n    [`lining-nums`, fontVariant(`lining-nums`)],\n    [`tabular-nums`, fontVariant(`tabular-nums`)],\n    [`proportional-nums`, fontVariant(`proportional-nums`)],\n    [`font-thin`, complete({ fontWeight: `100` })],\n    [`font-100`, complete({ fontWeight: `100` })],\n    [`font-extralight`, complete({ fontWeight: `200` })],\n    [`font-200`, complete({ fontWeight: `200` })],\n    [`font-light`, complete({ fontWeight: `300` })],\n    [`font-300`, complete({ fontWeight: `300` })],\n    [`font-normal`, complete({ fontWeight: `normal` })],\n    [`font-400`, complete({ fontWeight: `400` })],\n    [`font-medium`, complete({ fontWeight: `500` })],\n    [`font-500`, complete({ fontWeight: `500` })],\n    [`font-semibold`, complete({ fontWeight: `600` })],\n    [`font-600`, complete({ fontWeight: `600` })],\n    [`font-bold`, complete({ fontWeight: `bold` })],\n    [`font-700`, complete({ fontWeight: `700` })],\n    [`font-extrabold`, complete({ fontWeight: `800` })],\n    [`font-800`, complete({ fontWeight: `800` })],\n    [`font-black`, complete({ fontWeight: `900` })],\n    [`font-900`, complete({ fontWeight: `900` })],\n    [`include-font-padding`, complete({ includeFontPadding: true })],\n    [`remove-font-padding`, complete({ includeFontPadding: false })],\n    // not sure if RN supports `max-width: none;`, but this should be equivalent\n    [`max-w-none`, complete({ maxWidth: `99999%` })],\n    [`text-left`, complete({ textAlign: `left` })],\n    [`text-center`, complete({ textAlign: `center` })],\n    [`text-right`, complete({ textAlign: `right` })],\n    [`text-justify`, complete({ textAlign: `justify` })],\n    [`text-auto`, complete({ textAlign: `auto` })],\n    [`underline`, complete({ textDecorationLine: `underline` })],\n    [`line-through`, complete({ textDecorationLine: `line-through` })],\n    [`no-underline`, complete({ textDecorationLine: `none` })],\n    [`uppercase`, complete({ textTransform: `uppercase` })],\n    [`lowercase`, complete({ textTransform: `lowercase` })],\n    [`capitalize`, complete({ textTransform: `capitalize` })],\n    [`normal-case`, complete({ textTransform: `none` })],\n    [`w-auto`, complete({ width: `auto` })],\n    [`h-auto`, complete({ height: `auto` })],\n    // default box-shadow implementations\n    [\n        `shadow-sm`,\n        complete({\n            shadowOffset: { width: 1, height: 1 },\n            shadowColor: `#000`,\n            shadowRadius: 1,\n            shadowOpacity: 0.025,\n            elevation: 1,\n        }),\n    ],\n    [\n        `shadow`,\n        complete({\n            shadowOffset: { width: 1, height: 1 },\n            shadowColor: `#000`,\n            shadowRadius: 1,\n            shadowOpacity: 0.075,\n            elevation: 2,\n        }),\n    ],\n    [\n        `shadow-md`,\n        complete({\n            shadowOffset: { width: 1, height: 1 },\n            shadowColor: `#000`,\n            shadowRadius: 3,\n            shadowOpacity: 0.125,\n            elevation: 3,\n        }),\n    ],\n    [\n        `shadow-lg`,\n        complete({\n            shadowOffset: { width: 1, height: 1 },\n            shadowColor: `#000`,\n            shadowOpacity: 0.15,\n            shadowRadius: 8,\n            elevation: 8,\n        }),\n    ],\n    [\n        `shadow-xl`,\n        complete({\n            shadowOffset: { width: 1, height: 1 },\n            shadowColor: `#000`,\n            shadowOpacity: 0.19,\n            shadowRadius: 20,\n            elevation: 12,\n        }),\n    ],\n    [\n        `shadow-2xl`,\n        complete({\n            shadowOffset: { width: 1, height: 1 },\n            shadowColor: `#000`,\n            shadowOpacity: 0.25,\n            shadowRadius: 30,\n            elevation: 16,\n        }),\n    ],\n    [\n        `shadow-none`,\n        complete({\n            shadowOffset: { width: 0, height: 0 },\n            shadowColor: `#000`,\n            shadowRadius: 0,\n            shadowOpacity: 0,\n            elevation: 0,\n        }),\n    ],\n];\nexport default defaultStyles;\nfunction fontVariant(type) {\n    return {\n        kind: `dependent`,\n        complete(style) {\n            if (!style.fontVariant || !Array.isArray(style.fontVariant)) {\n                style.fontVariant = [];\n            }\n            style.fontVariant.push(type);\n        },\n    };\n}\n","import defaultStyles from './styles';\nexport default class Cache {\n    constructor(customStyles) {\n        this.ir = new Map(defaultStyles);\n        this.styles = new Map();\n        this.prefixes = new Map();\n        this.ir = new Map([...defaultStyles, ...(customStyles !== null && customStyles !== void 0 ? customStyles : [])]);\n    }\n    getStyle(key) {\n        return this.styles.get(key);\n    }\n    setStyle(key, style) {\n        this.styles.set(key, style);\n    }\n    getIr(key) {\n        return this.ir.get(key);\n    }\n    setIr(key, ir) {\n        this.ir.set(key, ir);\n    }\n    getPrefixMatch(key) {\n        return this.prefixes.get(key);\n    }\n    setPrefixMatch(key, value) {\n        this.prefixes.set(key, value);\n    }\n}\n","import { Unit } from '../types';\nimport { getCompleteStyle, complete, getStyle, mergeStyle, parseNumericValue, unconfiggedStyle, } from '../helpers';\nexport default function fontSize(value, config, context = {}) {\n    const configValue = config === null || config === void 0 ? void 0 : config[value];\n    if (!configValue) {\n        return unconfiggedStyle(`fontSize`, value, context);\n    }\n    if (typeof configValue === `string`) {\n        return getCompleteStyle(`fontSize`, configValue);\n    }\n    let style = {};\n    const [fontSize, rest] = configValue;\n    const fontSizeStyle = getStyle(`fontSize`, fontSize);\n    if (fontSizeStyle) {\n        style = fontSizeStyle;\n    }\n    if (typeof rest === `string`) {\n        return complete(mergeStyle(`lineHeight`, calculateLineHeight(rest, style), style));\n    }\n    const { lineHeight, letterSpacing } = rest;\n    if (lineHeight) {\n        mergeStyle(`lineHeight`, calculateLineHeight(lineHeight, style), style);\n    }\n    if (letterSpacing) {\n        mergeStyle(`letterSpacing`, letterSpacing, style);\n    }\n    return complete(style);\n}\n// calculates line-height for relative units\nfunction calculateLineHeight(lineHeight, style) {\n    const parsed = parseNumericValue(lineHeight);\n    if (parsed) {\n        const [number, unit] = parsed;\n        if ((unit === Unit.none || unit === Unit.em) && typeof style.fontSize === `number`) {\n            return style.fontSize * number;\n        }\n    }\n    return lineHeight;\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, complete, toStyleVal } from '../helpers';\nexport default function lineHeight(value, config) {\n    var _a;\n    const parseValue = (_a = config === null || config === void 0 ? void 0 : config[value]) !== null && _a !== void 0 ? _a : (value.startsWith(`[`) ? value.slice(1, -1) : value);\n    const parsed = parseNumericValue(parseValue);\n    if (!parsed) {\n        return null;\n    }\n    const [number, unit] = parsed;\n    if (unit === Unit.none) {\n        // we have a relative line-height like `2` for `leading-loose`\n        return {\n            kind: `dependent`,\n            complete(style) {\n                if (typeof style.fontSize !== `number`) {\n                    return `relative line-height utilities require that font-size be set`;\n                }\n                style.lineHeight = style.fontSize * number;\n            },\n        };\n    }\n    const styleVal = toStyleVal(number, unit);\n    return styleVal !== null ? complete({ lineHeight: styleVal }) : null;\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, parseUnconfigged, toStyleVal } from '../helpers';\nexport default function spacing(type, direction, isNegative, value, config) {\n    let numericValue = ``;\n    if (value[0] === `[`) {\n        numericValue = value.slice(1, -1);\n    }\n    else {\n        const configValue = config === null || config === void 0 ? void 0 : config[value];\n        if (!configValue) {\n            const unconfigged = parseUnconfigged(value);\n            if (unconfigged && typeof unconfigged === `number`) {\n                return spacingStyle(unconfigged, Unit.px, direction, type);\n            }\n            return null;\n        }\n        else {\n            numericValue = configValue;\n        }\n    }\n    if (numericValue === `auto`) {\n        return expand(direction, type, `auto`);\n    }\n    const parsed = parseNumericValue(numericValue);\n    if (!parsed) {\n        return null;\n    }\n    let [number, unit] = parsed;\n    if (isNegative) {\n        number = -number;\n    }\n    return spacingStyle(number, unit, direction, type);\n}\nfunction spacingStyle(number, unit, direction, type) {\n    const pixels = toStyleVal(number, unit);\n    if (pixels === null) {\n        return null;\n    }\n    return expand(direction, type, pixels);\n}\nfunction expand(direction, type, value) {\n    switch (direction) {\n        case `All`:\n            return {\n                kind: `complete`,\n                style: {\n                    [`${type}Top`]: value,\n                    [`${type}Right`]: value,\n                    [`${type}Bottom`]: value,\n                    [`${type}Left`]: value,\n                },\n            };\n        case `Bottom`:\n        case `Top`:\n        case `Left`:\n        case `Right`:\n            return {\n                kind: `complete`,\n                style: {\n                    [`${type}${direction}`]: value,\n                },\n            };\n        case `Vertical`:\n            return {\n                kind: `complete`,\n                style: {\n                    [`${type}Top`]: value,\n                    [`${type}Bottom`]: value,\n                },\n            };\n        case `Horizontal`:\n            return {\n                kind: `complete`,\n                style: {\n                    [`${type}Left`]: value,\n                    [`${type}Right`]: value,\n                },\n            };\n        default:\n            return null;\n    }\n}\n","import { toPx, warn } from './helpers';\nexport default function screens(input) {\n    if (!input) {\n        return {};\n    }\n    const screenData = Object.entries(input).reduce((acc, [screen, value]) => {\n        const data = [0, Infinity, 0];\n        const values = typeof value === `string` ? { min: value } : value;\n        const minPx = values.min ? toPx(values.min) : 0;\n        if (minPx === null) {\n            warn(`invalid screen config value: ${screen}->min: ${values.min}`);\n        }\n        else {\n            data[0] = minPx;\n        }\n        const maxPx = values.max ? toPx(values.max) : Infinity;\n        if (maxPx === null) {\n            warn(`invalid screen config value: ${screen}->max: ${values.max}`);\n        }\n        else {\n            data[1] = maxPx;\n        }\n        acc[screen] = data;\n        return acc;\n    }, {});\n    const values = Object.values(screenData);\n    values.sort((a, b) => {\n        const [minA, maxA] = a;\n        const [minB, maxB] = b;\n        if (maxA === Infinity || maxB === Infinity) {\n            return minA - minB;\n        }\n        return maxA - maxB;\n    });\n    let order = 0;\n    values.forEach((value) => (value[2] = order++));\n    return screenData;\n}\n","import { complete } from '../helpers';\nexport default function fontFamily(value, config) {\n    const configValue = config === null || config === void 0 ? void 0 : config[value];\n    if (!configValue) {\n        return null;\n    }\n    if (typeof configValue === `string`) {\n        return complete({ fontFamily: configValue });\n    }\n    const firstFamily = configValue[0];\n    if (!firstFamily) {\n        return null;\n    }\n    return complete({ fontFamily: firstFamily });\n}\n","import { isObject, isString } from '../types';\nimport { warn, complete } from '../helpers';\nexport function color(type, value, config) {\n    if (!config) {\n        return null;\n    }\n    // support opacity shorthand: `bg-red-200/50`\n    let shorthandOpacity = undefined;\n    if (value.includes(`/`)) {\n        [value = ``, shorthandOpacity] = value.split(`/`, 2);\n    }\n    let color = ``;\n    // for arbitrary support: `bg-[#eaeaea]`, `text-[rgba(1, 1, 1, 0.5)]`\n    if (value.startsWith(`[#`) || value.startsWith(`[rgb`)) {\n        color = value.slice(1, -1);\n        // search for color in config\n    }\n    else {\n        color = findColorInConfigRecursive(value, config);\n    }\n    if (!color) {\n        return null;\n    }\n    if (shorthandOpacity) {\n        const opacity = Number(shorthandOpacity);\n        if (!Number.isNaN(opacity)) {\n            color = addOpacity(color, opacity / 100);\n            return complete({ [STYLE_PROPS[type].color]: color });\n        }\n    }\n    // return a dependent style to support merging of classes\n    // like `bg-red-800 bg-opacity-75`\n    return {\n        kind: `dependent`,\n        complete(style) {\n            const opacityProp = STYLE_PROPS[type].opacity;\n            const opacity = style[opacityProp];\n            if (typeof opacity === `number`) {\n                color = addOpacity(color, opacity);\n            }\n            style[STYLE_PROPS[type].color] = color;\n        },\n    };\n}\nexport function colorOpacity(type, value) {\n    const percentage = parseInt(value, 10);\n    if (Number.isNaN(percentage)) {\n        return null;\n    }\n    const opacity = percentage / 100;\n    const style = { [STYLE_PROPS[type].opacity]: opacity };\n    return { kind: `complete`, style };\n}\nfunction addOpacity(color, opacity) {\n    if (color.startsWith(`#`)) {\n        color = hexToRgba(color);\n    }\n    else if (color.startsWith(`rgb(`)) {\n        color = color.replace(/^rgb\\(/, `rgba(`).replace(/\\)$/, `, 1)`);\n    }\n    // @TODO: support hls/hlsa if anyone opens an issue...\n    return color.replace(/, ?\\d*\\.?(\\d+)\\)$/, `, ${opacity})`);\n}\nexport function removeOpacityHelpers(style) {\n    for (const key in style) {\n        if (key.startsWith(`__opacity_`)) {\n            delete style[key];\n        }\n    }\n}\nconst STYLE_PROPS = {\n    bg: { opacity: `__opacity_bg`, color: `backgroundColor` },\n    text: { opacity: `__opacity_text`, color: `color` },\n    border: { opacity: `__opacity_border`, color: `borderColor` },\n    borderTop: { opacity: `__opacity_border`, color: `borderTopColor` },\n    borderBottom: { opacity: `__opacity_border`, color: `borderBottomColor` },\n    borderLeft: { opacity: `__opacity_border`, color: `borderLeftColor` },\n    borderRight: { opacity: `__opacity_border`, color: `borderRightColor` },\n    shadow: { opacity: `__opacity_shadow`, color: `shadowColor` },\n    tint: { opacity: `__opacity_tint`, color: `tintColor` },\n};\nfunction hexToRgba(hex) {\n    const orig = hex;\n    hex = hex.replace(MATCH_SHORT_HEX, (_, r, g, b) => r + r + g + g + b + b);\n    const result = MATCH_FULL_HEX.exec(hex);\n    if (!result) {\n        warn(`invalid config hex color value: ${orig}`);\n        return `rgba(0, 0, 0, 1)`;\n    }\n    const r = parseInt(result[1], 16);\n    const g = parseInt(result[2], 16);\n    const b = parseInt(result[3], 16);\n    return `rgba(${r}, ${g}, ${b}, 1)`;\n}\nfunction findColorInConfigRecursive(colorName, config) {\n    const configColor = config[colorName];\n    // the color is found at the current config level\n    if (isString(configColor)) {\n        return configColor;\n    }\n    else if (isObject(configColor) && isString(configColor.DEFAULT)) {\n        return configColor.DEFAULT;\n    }\n    // search for a matching sub-string at the current config level\n    let [colorNameStart = ``, ...colorNameRest] = colorName.split(`-`);\n    while (colorNameStart !== colorName) {\n        const subConfig = config[colorNameStart];\n        if (isObject(subConfig)) {\n            return findColorInConfigRecursive(colorNameRest.join(`-`), subConfig);\n        }\n        else if (colorNameRest.length === 0) {\n            return ``;\n        }\n        colorNameStart = `${colorNameStart}-${colorNameRest.shift()}`;\n    }\n    return ``;\n}\nconst MATCH_SHORT_HEX = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\nconst MATCH_FULL_HEX = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\n","import { parseAndConsumeDirection, complete, getCompleteStyle, unconfiggedStyle, } from '../helpers';\nimport { color } from './color';\nexport function border(value, theme) {\n    let [rest, direction] = parseAndConsumeDirection(value);\n    const widthUtilityMatch = rest.match(/^(-?(\\d)+)?$/);\n    if (widthUtilityMatch) {\n        return borderWidth(rest, direction, theme === null || theme === void 0 ? void 0 : theme.borderWidth);\n    }\n    rest = rest.replace(/^-/, ``);\n    if ([`dashed`, `solid`, `dotted`].includes(rest)) {\n        return complete({ borderStyle: rest });\n    }\n    let colorType = `border`;\n    switch (direction) {\n        case `Bottom`:\n            colorType = `borderBottom`;\n            break;\n        case `Top`:\n            colorType = `borderTop`;\n            break;\n        case `Left`:\n            colorType = `borderLeft`;\n            break;\n        case `Right`:\n            colorType = `borderRight`;\n            break;\n    }\n    const colorStyle = color(colorType, rest, theme === null || theme === void 0 ? void 0 : theme.borderColor);\n    if (colorStyle) {\n        return colorStyle;\n    }\n    // Finally Handling Arbitrary Width Case\n    // border-[20px] or border-[2.5rem]\n    const prop = `border${direction === `All` ? `` : direction}Width`;\n    rest = rest.replace(/^-/, ``);\n    const numericValue = rest.slice(1, -1);\n    const arbitraryWidth = unconfiggedStyle(prop, numericValue);\n    // can't use % for border-radius in RN\n    if (typeof (arbitraryWidth === null || arbitraryWidth === void 0 ? void 0 : arbitraryWidth.style[prop]) !== `number`) {\n        return null;\n    }\n    return arbitraryWidth;\n}\nfunction borderWidth(value, direction, config) {\n    if (!config) {\n        return null;\n    }\n    value = value.replace(/^-/, ``);\n    const key = value === `` ? `DEFAULT` : value;\n    const configValue = config[key];\n    if (configValue === undefined) {\n        return null;\n    }\n    const prop = `border${direction === `All` ? `` : direction}Width`;\n    return getCompleteStyle(prop, configValue);\n}\nexport function borderRadius(value, config) {\n    if (!config) {\n        return null;\n    }\n    let [rest, direction] = parseAndConsumeDirection(value);\n    rest = rest.replace(/^-/, ``);\n    if (rest === ``) {\n        rest = `DEFAULT`;\n    }\n    const prop = `border${direction === `All` ? `` : direction}Radius`;\n    const configValue = config[rest];\n    if (configValue) {\n        return expand(getCompleteStyle(prop, configValue));\n    }\n    const arbitrary = unconfiggedStyle(prop, rest);\n    // can't use % for border-radius in RN\n    if (typeof (arbitrary === null || arbitrary === void 0 ? void 0 : arbitrary.style[prop]) !== `number`) {\n        return null;\n    }\n    return expand(arbitrary);\n}\n// RN only supports `borderRadius` + `border(top|bottom)(left|right)Radius`\nfunction expand(ir) {\n    if ((ir === null || ir === void 0 ? void 0 : ir.kind) !== `complete`)\n        return ir;\n    const top = ir.style.borderTopRadius;\n    if (top !== undefined) {\n        ir.style.borderTopLeftRadius = top;\n        ir.style.borderTopRightRadius = top;\n        delete ir.style.borderTopRadius;\n    }\n    const bottom = ir.style.borderBottomRadius;\n    if (bottom !== undefined) {\n        ir.style.borderBottomLeftRadius = bottom;\n        ir.style.borderBottomRightRadius = bottom;\n        delete ir.style.borderBottomRadius;\n    }\n    const left = ir.style.borderLeftRadius;\n    if (left !== undefined) {\n        ir.style.borderBottomLeftRadius = left;\n        ir.style.borderTopLeftRadius = left;\n        delete ir.style.borderLeftRadius;\n    }\n    const right = ir.style.borderRightRadius;\n    if (right !== undefined) {\n        ir.style.borderBottomRightRadius = right;\n        ir.style.borderTopRightRadius = right;\n        delete ir.style.borderRightRadius;\n    }\n    return ir;\n}\n","import { complete, parseStyleVal, parseUnconfigged } from '../helpers';\nexport function inset(type, value, isNegative, config) {\n    let insetDir = null;\n    if (type === `inset`) {\n        value = value.replace(/^(x|y)-/, (_, dir) => {\n            insetDir = dir === `x` ? `x` : `y`;\n            return ``;\n        });\n    }\n    const configValue = config === null || config === void 0 ? void 0 : config[value];\n    if (configValue) {\n        const styleVal = parseStyleVal(configValue, { isNegative });\n        if (styleVal !== null) {\n            return insetStyle(type, insetDir, styleVal);\n        }\n    }\n    const unconfigged = parseUnconfigged(value, { isNegative });\n    if (unconfigged !== null) {\n        return insetStyle(type, insetDir, unconfigged);\n    }\n    return null;\n}\nfunction insetStyle(type, dir, styleVal) {\n    if (type !== `inset`) {\n        return complete({ [type]: styleVal });\n    }\n    switch (dir) {\n        case null:\n            return complete({\n                top: styleVal,\n                left: styleVal,\n                right: styleVal,\n                bottom: styleVal,\n            });\n        case `y`:\n            return complete({\n                top: styleVal,\n                bottom: styleVal,\n            });\n        case `x`:\n            return complete({\n                left: styleVal,\n                right: styleVal,\n            });\n    }\n}\n","import { complete, parseStyleVal } from '../helpers';\nexport function flexGrowShrink(type, value, config) {\n    var _a;\n    value = value.replace(/^-/, ``);\n    const configKey = value === `` ? `DEFAULT` : value;\n    const numericValue = Number((_a = config === null || config === void 0 ? void 0 : config[configKey]) !== null && _a !== void 0 ? _a : value);\n    if (!Number.isNaN(numericValue)) {\n        return complete({ [`flex${type}`]: numericValue });\n    }\n    return null;\n}\nexport function flex(value, config) {\n    var _a, _b;\n    value = (config === null || config === void 0 ? void 0 : config[value]) || value;\n    if ([`min-content`, `revert`, `unset`].includes(value)) {\n        // unsupported\n        return null;\n    }\n    // @see https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n    // MDN: One value, unitless number: flex-grow flex-basis is then equal to 0.\n    if (value.match(/^\\d+(\\.\\d+)?$/)) {\n        return complete({\n            flexGrow: Number(value),\n            flexBasis: `0%`,\n        });\n    }\n    // MDN: Two values (both integers): flex-grow | flex-basis\n    let match = value.match(/^(\\d+)\\s+(\\d+)$/);\n    if (match) {\n        return complete({\n            flexGrow: Number(match[1]),\n            flexShrink: Number(match[2]),\n        });\n    }\n    // MDN: Two values: flex-grow | flex-basis\n    match = value.match(/^(\\d+)\\s+([^ ]+)$/);\n    if (match) {\n        const flexBasis = parseStyleVal((_a = match[2]) !== null && _a !== void 0 ? _a : ``);\n        if (!flexBasis) {\n            return null;\n        }\n        return complete({\n            flexGrow: Number(match[1]),\n            flexBasis,\n        });\n    }\n    // MDN: Three values: flex-grow | flex-shrink | flex-basis\n    match = value.match(/^(\\d+)\\s+(\\d+)\\s+(.+)$/);\n    if (match) {\n        const flexBasis = parseStyleVal((_b = match[3]) !== null && _b !== void 0 ? _b : ``);\n        if (!flexBasis) {\n            return null;\n        }\n        return complete({\n            flexGrow: Number(match[1]),\n            flexShrink: Number(match[2]),\n            flexBasis,\n        });\n    }\n    return null;\n}\n","import { getCompleteStyle, complete, parseStyleVal, unconfiggedStyle } from '../helpers';\nexport function widthHeight(type, value, context = {}, config) {\n    const configValue = config === null || config === void 0 ? void 0 : config[value];\n    if (configValue !== undefined) {\n        return getCompleteStyle(type, configValue, context);\n    }\n    return unconfiggedStyle(type, value, context);\n}\nexport function minMaxWidthHeight(type, value, context = {}, config) {\n    const styleVal = parseStyleVal(config === null || config === void 0 ? void 0 : config[value], context);\n    if (styleVal) {\n        return complete({ [type]: styleVal });\n    }\n    if (value === `screen`) {\n        value = type.includes(`Width`) ? `100vw` : `100vh`;\n    }\n    return unconfiggedStyle(type, value, context);\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, complete, toStyleVal, unconfiggedStyle, warn, } from '../helpers';\nexport function letterSpacing(value, isNegative, config) {\n    const configValue = config === null || config === void 0 ? void 0 : config[value];\n    if (configValue) {\n        const parsed = parseNumericValue(configValue, { isNegative });\n        if (!parsed) {\n            return null;\n        }\n        const [number, unit] = parsed;\n        if (unit === Unit.em) {\n            return relativeLetterSpacing(number);\n        }\n        // @TODO, if we get a percentage based config value, theoretically we could\n        // make a font-size dependent style as well, wait for someone to raise an issue\n        if (unit === Unit.percent) {\n            warn(`percentage-based letter-spacing configuration currently unsupported, switch to \\`em\\`s, or open an issue if you'd like to see support added.`);\n            return null;\n        }\n        const styleVal = toStyleVal(number, unit, { isNegative });\n        if (styleVal !== null) {\n            return complete({ letterSpacing: styleVal });\n        }\n        return null;\n    }\n    return unconfiggedStyle(`letterSpacing`, value, { isNegative });\n}\nfunction relativeLetterSpacing(ems) {\n    return {\n        kind: `dependent`,\n        complete(style) {\n            const fontSize = style.fontSize;\n            if (typeof fontSize !== `number` || Number.isNaN(fontSize)) {\n                return `tracking-X relative letter spacing classes require font-size to be set`;\n            }\n            style.letterSpacing = Math.round((ems * fontSize + Number.EPSILON) * 100) / 100;\n        },\n    };\n}\n","import { parseNumericValue, complete } from '../helpers';\nexport function opacity(value, config) {\n    const configValue = config === null || config === void 0 ? void 0 : config[value];\n    if (configValue) {\n        const parsedConfig = parseNumericValue(String(configValue));\n        if (parsedConfig) {\n            return complete({ opacity: parsedConfig[0] });\n        }\n    }\n    const parsedArbitrary = parseNumericValue(value);\n    if (parsedArbitrary) {\n        return complete({ opacity: parsedArbitrary[0] / 100 });\n    }\n    return null;\n}\n","import { parseUnconfigged } from '../helpers';\nexport function shadowOpacity(value) {\n    const percentage = parseInt(value, 10);\n    if (Number.isNaN(percentage)) {\n        return null;\n    }\n    return {\n        kind: `complete`,\n        style: { shadowOpacity: percentage / 100 },\n    };\n}\nexport function shadowOffset(value) {\n    if (value.includes(`/`)) {\n        const [widthStr = ``, heightStr = ``] = value.split(`/`, 2);\n        const width = offsetValue(widthStr);\n        const height = offsetValue(heightStr);\n        if (width === null || height === null) {\n            return null;\n        }\n        return {\n            kind: `complete`,\n            style: {\n                shadowOffset: {\n                    width,\n                    height,\n                },\n            },\n        };\n    }\n    const number = offsetValue(value);\n    if (number === null) {\n        return null;\n    }\n    return {\n        kind: `complete`,\n        style: {\n            shadowOffset: {\n                width: number,\n                height: number,\n            },\n        },\n    };\n}\nfunction offsetValue(value) {\n    const parsed = parseUnconfigged(value);\n    return typeof parsed === `number` ? parsed : null;\n}\n","import fontSize from './resolve/font-size';\nimport lineHeight from './resolve/line-height';\nimport spacing from './resolve/spacing';\nimport screens from './screens';\nimport { isOrientation, isPlatform, } from './types';\nimport fontFamily from './resolve/font-family';\nimport { color, colorOpacity } from './resolve/color';\nimport { border, borderRadius } from './resolve/borders';\nimport { getCompleteStyle, getDirection, unconfiggedStyle, warn, complete, parseNumericValue, } from './helpers';\nimport { inset } from './resolve/inset';\nimport { flexGrowShrink, flex } from './resolve/flex';\nimport { widthHeight, minMaxWidthHeight } from './resolve/width-height';\nimport { letterSpacing } from './resolve/letter-spacing';\nimport { opacity } from './resolve/opacity';\nimport { shadowOpacity, shadowOffset } from './resolve/shadow';\nexport default class ClassParser {\n    constructor(input, config = {}, cache, device, platform) {\n        var _a, _b, _c, _d, _e, _f;\n        this.config = config;\n        this.cache = cache;\n        this.position = 0;\n        this.isNull = false;\n        this.isNegative = false;\n        this.context = {};\n        this.context.device = device;\n        const parts = input.trim().split(`:`);\n        let prefixes = [];\n        if (parts.length === 1) {\n            this.string = input;\n        }\n        else {\n            this.string = (_a = parts.pop()) !== null && _a !== void 0 ? _a : ``;\n            prefixes = parts;\n        }\n        this.char = this.string[0];\n        const widthBreakpoints = screens((_b = this.config.theme) === null || _b === void 0 ? void 0 : _b.screens);\n        // loop through the prefixes ONE time, extracting useful info\n        for (const prefix of prefixes) {\n            if (widthBreakpoints[prefix]) {\n                const breakpointOrder = (_c = widthBreakpoints[prefix]) === null || _c === void 0 ? void 0 : _c[2];\n                if (breakpointOrder !== undefined) {\n                    this.order = ((_d = this.order) !== null && _d !== void 0 ? _d : 0) + breakpointOrder;\n                }\n                const windowWidth = (_e = device.windowDimensions) === null || _e === void 0 ? void 0 : _e.width;\n                if (windowWidth) {\n                    const [min, max] = (_f = widthBreakpoints[prefix]) !== null && _f !== void 0 ? _f : [0, 0];\n                    if (windowWidth <= min || windowWidth > max) {\n                        // breakpoint does not match\n                        this.isNull = true;\n                    }\n                }\n                else {\n                    this.isNull = true;\n                }\n            }\n            else if (isPlatform(prefix)) {\n                this.isNull = prefix !== platform;\n            }\n            else if (isOrientation(prefix)) {\n                if (!device.windowDimensions) {\n                    this.isNull = true;\n                }\n                else {\n                    const deviceOrientation = device.windowDimensions.width > device.windowDimensions.height\n                        ? `landscape`\n                        : `portrait`;\n                    if (deviceOrientation !== prefix) {\n                        this.isNull = true;\n                    }\n                    else {\n                        this.incrementOrder();\n                    }\n                }\n            }\n            else if (prefix === `retina`) {\n                if (device.pixelDensity === 2) {\n                    this.incrementOrder();\n                }\n                else {\n                    this.isNull = true;\n                }\n            }\n            else if (prefix === `dark`) {\n                if (device.colorScheme !== `dark`) {\n                    this.isNull = true;\n                }\n                else {\n                    this.incrementOrder();\n                }\n            }\n            else if (!this.handlePossibleArbitraryBreakpointPrefix(prefix)) {\n                this.isNull = true;\n            }\n        }\n    }\n    parse() {\n        if (this.isNull) {\n            return { kind: `null` };\n        }\n        // resolve things like ios:hidden, after prefix removed\n        const cached = this.cache.getIr(this.rest);\n        if (cached) {\n            return cached;\n        }\n        this.parseIsNegative();\n        const ir = this.parseUtility();\n        if (!ir) {\n            return { kind: `null` };\n        }\n        if (this.order !== undefined) {\n            return { kind: `ordered`, order: this.order, styleIr: ir };\n        }\n        return ir;\n    }\n    parseUtility() {\n        var _a, _b, _c, _d, _e;\n        const theme = this.config.theme;\n        let style = null;\n        switch (this.char) {\n            case `m`:\n            case `p`: {\n                const match = this.peekSlice(1, 3).match(/^(t|b|r|l|x|y)?-/);\n                if (match) {\n                    const prop = this.char === `m` ? `margin` : `padding`;\n                    this.advance(((_b = (_a = match[0]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + 1);\n                    const spacingDirection = getDirection(match[1]);\n                    const style = spacing(prop, spacingDirection, this.isNegative, this.rest, (_c = this.config.theme) === null || _c === void 0 ? void 0 : _c[prop]);\n                    if (style)\n                        return style;\n                }\n            }\n        }\n        if (this.consumePeeked(`h-`)) {\n            style = widthHeight(`height`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.height);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`w-`)) {\n            style = widthHeight(`width`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.width);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`min-w-`)) {\n            style = minMaxWidthHeight(`minWidth`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.minWidth);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`min-h-`)) {\n            style = minMaxWidthHeight(`minHeight`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.minHeight);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`max-w-`)) {\n            style = minMaxWidthHeight(`maxWidth`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.maxWidth);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`max-h-`)) {\n            style = minMaxWidthHeight(`maxHeight`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.maxHeight);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`leading-`)) {\n            style = lineHeight(this.rest, theme === null || theme === void 0 ? void 0 : theme.lineHeight);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`text-`)) {\n            style = fontSize(this.rest, theme === null || theme === void 0 ? void 0 : theme.fontSize, this.context);\n            if (style)\n                return style;\n            style = color(`text`, this.rest, theme === null || theme === void 0 ? void 0 : theme.textColor);\n            if (style)\n                return style;\n            if (this.consumePeeked(`opacity-`)) {\n                style = colorOpacity(`text`, this.rest);\n                if (style)\n                    return style;\n            }\n        }\n        if (this.consumePeeked(`font-`)) {\n            style = fontFamily(this.rest, theme === null || theme === void 0 ? void 0 : theme.fontFamily);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`aspect-`)) {\n            if (this.consumePeeked(`ratio-`)) {\n                warn(`\\`aspect-ratio-{ratio}\\` is deprecated, use \\`aspect-{ratio}\\` instead`);\n            }\n            style = getCompleteStyle(`aspectRatio`, this.rest, { fractions: true });\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`tint-`)) {\n            style = color(`tint`, this.rest, theme === null || theme === void 0 ? void 0 : theme.colors);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`bg-`)) {\n            style = color(`bg`, this.rest, theme === null || theme === void 0 ? void 0 : theme.backgroundColor);\n            if (style)\n                return style;\n            if (this.consumePeeked(`opacity-`)) {\n                style = colorOpacity(`bg`, this.rest);\n                if (style)\n                    return style;\n            }\n        }\n        if (this.consumePeeked(`border`)) {\n            style = border(this.rest, theme);\n            if (style)\n                return style;\n            if (this.consumePeeked(`-opacity-`)) {\n                style = colorOpacity(`border`, this.rest);\n                if (style)\n                    return style;\n            }\n        }\n        if (this.consumePeeked(`rounded`)) {\n            style = borderRadius(this.rest, theme === null || theme === void 0 ? void 0 : theme.borderRadius);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`bottom-`)) {\n            style = inset(`bottom`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`top-`)) {\n            style = inset(`top`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`left-`)) {\n            style = inset(`left`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`right-`)) {\n            style = inset(`right`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`inset-`)) {\n            style = inset(`inset`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`flex-`)) {\n            if (this.consumePeeked(`grow`)) {\n                style = flexGrowShrink(`Grow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexGrow);\n            }\n            else if (this.consumePeeked(`shrink`)) {\n                style = flexGrowShrink(`Shrink`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexShrink);\n            }\n            else {\n                style = flex(this.rest, theme === null || theme === void 0 ? void 0 : theme.flex);\n            }\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`grow`)) {\n            style = flexGrowShrink(`Grow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexGrow);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`shrink`)) {\n            style = flexGrowShrink(`Shrink`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexShrink);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`shadow-color-opacity-`)) {\n            style = colorOpacity(`shadow`, this.rest);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`shadow-opacity-`)) {\n            style = shadowOpacity(this.rest);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`shadow-offset-`)) {\n            style = shadowOffset(this.rest);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`shadow-radius-`)) {\n            style = unconfiggedStyle(`shadowRadius`, this.rest);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`shadow-`)) {\n            style = color(`shadow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.colors);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`elevation-`)) {\n            const elevation = parseInt(this.rest, 10);\n            if (!Number.isNaN(elevation)) {\n                return complete({ elevation });\n            }\n        }\n        if (this.consumePeeked(`opacity-`)) {\n            style = opacity(this.rest, theme === null || theme === void 0 ? void 0 : theme.opacity);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`tracking-`)) {\n            style = letterSpacing(this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.letterSpacing);\n            if (style)\n                return style;\n        }\n        if (this.consumePeeked(`z-`)) {\n            const zIndex = Number((_e = (_d = theme === null || theme === void 0 ? void 0 : theme.zIndex) === null || _d === void 0 ? void 0 : _d[this.rest]) !== null && _e !== void 0 ? _e : this.rest);\n            if (!Number.isNaN(zIndex)) {\n                return complete({ zIndex });\n            }\n        }\n        warn(`\\`${this.rest}\\` unknown or invalid utility`);\n        return null;\n    }\n    handlePossibleArbitraryBreakpointPrefix(prefix) {\n        var _a;\n        // save the expense of running the regex with a quick sniff test\n        if (prefix[0] !== `m`)\n            return false;\n        const match = prefix.match(/^(min|max)-(w|h)-\\[([^\\]]+)\\]$/);\n        if (!match)\n            return false;\n        if (!((_a = this.context.device) === null || _a === void 0 ? void 0 : _a.windowDimensions)) {\n            this.isNull = true;\n            return true;\n        }\n        const windowDims = this.context.device.windowDimensions;\n        const [, type = ``, dir = ``, amount = ``] = match;\n        const checkDimension = dir === `w` ? windowDims.width : windowDims.height;\n        const parsedAmount = parseNumericValue(amount, this.context);\n        if (parsedAmount === null) {\n            this.isNull = true;\n            return true;\n        }\n        const [bound, unit] = parsedAmount;\n        if (unit !== `px`) {\n            this.isNull = true;\n        }\n        if (type === `min` ? checkDimension >= bound : checkDimension <= bound) {\n            this.incrementOrder();\n        }\n        else {\n            this.isNull = true;\n        }\n        return true;\n    }\n    advance(amount = 1) {\n        this.position += amount;\n        this.char = this.string[this.position];\n    }\n    get rest() {\n        return this.peekSlice(0, this.string.length);\n    }\n    peekSlice(begin, end) {\n        return this.string.slice(this.position + begin, this.position + end);\n    }\n    consumePeeked(string) {\n        if (this.peekSlice(0, string.length) === string) {\n            this.advance(string.length);\n            return true;\n        }\n        return false;\n    }\n    parseIsNegative() {\n        if (this.char === `-`) {\n            this.advance();\n            this.isNegative = true;\n            this.context.isNegative = true;\n        }\n    }\n    incrementOrder() {\n        var _a;\n        this.order = ((_a = this.order) !== null && _a !== void 0 ? _a : 0) + 1;\n    }\n}\n","export function parseInputs(inputs) {\n    let classNames = [];\n    let styles = null;\n    inputs.forEach((input) => {\n        if (typeof input === `string`) {\n            classNames = [...classNames, ...split(input)];\n        }\n        else if (Array.isArray(input)) {\n            classNames = [...classNames, ...input.flatMap(split)];\n        }\n        else if (typeof input === `object` && input !== null) {\n            for (const [key, value] of Object.entries(input)) {\n                if (typeof value === `boolean`) {\n                    classNames = [...classNames, ...(value ? split(key) : [])];\n                }\n                else if (styles) {\n                    styles[key] = value;\n                }\n                else {\n                    styles = { [key]: value };\n                }\n            }\n        }\n    });\n    return [classNames.filter(Boolean).filter(unique), styles];\n}\nfunction split(str) {\n    return str.trim().split(/\\s+/);\n}\nfunction unique(className, index, classes) {\n    return classes.indexOf(className) === index;\n}\n","const plugin = (handler) => {\n    return { handler, config: undefined };\n};\nexport default plugin;\nexport function getAddedUtilities(plugins) {\n    var _a;\n    return ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.reduce((utils, plugin) => ({ ...utils, ...callPluginFunction(plugin.handler) }), {})) !== null && _a !== void 0 ? _a : {});\n}\nfunction callPluginFunction(pluginFn) {\n    let added = {};\n    pluginFn({\n        addUtilities: (utilities) => {\n            added = utilities;\n        },\n        ...core,\n    });\n    return added;\n}\nfunction notImplemented(fn) {\n    throw new Error(`tailwindcss plugin function argument object prop \"${fn}\" not implemented`);\n}\nconst core = {\n    addComponents: notImplemented,\n    addBase: notImplemented,\n    addVariant: notImplemented,\n    e: notImplemented,\n    prefix: notImplemented,\n    theme: notImplemented,\n    variants: notImplemented,\n    config: notImplemented,\n    corePlugins: notImplemented,\n    matchUtilities: notImplemented,\n    postcss: null,\n};\n","import type { TwConfig } from 'twrnc'\n\nimport * as twrnc from 'twrnc/create'\n\ntype TwPlugin = TwConfig['plugins'][number]\n\nconst defaultShadows: TwPlugin = {\n  handler: ({ addUtilities }) => {\n    const presets = {\n      'shadow-sm': { boxShadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)' },\n      shadow: {\n        boxShadow:\n          '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n      },\n      'shadow-md': {\n        boxShadow:\n          '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n      },\n      'shadow-lg': {\n        boxShadow:\n          '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n      },\n      'shadow-xl': {\n        boxShadow:\n          '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n      },\n      'shadow-2xl': {\n        boxShadow: '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n      },\n      'shadow-inner': {\n        boxShadow: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n      },\n      'shadow-none': { boxShadow: '0 0 #0000' },\n    }\n\n    addUtilities(presets)\n  },\n}\n\nfunction createTw(config?: TwConfig) {\n  return twrnc.create(\n    {\n      ...config,\n      plugins: [...(config?.plugins ?? []), defaultShadows],\n    },\n    'web'\n  )\n}\n\nlet tw\nexport default function getTw({\n  width,\n  height,\n  config,\n}: {\n  width: number\n  height: number\n  config?: TwConfig\n}) {\n  if (!tw) {\n    tw = createTw(config)\n  }\n  tw.setWindowDimensions({ width: +width, height: +height })\n  return tw\n}\n","import type { ReactNode } from 'react'\nimport type { TwConfig } from 'twrnc'\nimport type { SatoriNode } from './layout.js'\n\nimport layout from './layout.js'\nimport FontLoader, { FontOptions } from './font.js'\nimport svg from './builder/svg.js'\nimport { getYoga, TYoga } from './yoga.js'\nimport { detectLanguageCode, LangCode, Locale } from './language.js'\nimport getTw from './handler/tailwind.js'\nimport { preProcessNode } from './handler/preprocess.js'\nimport { cache, inflightRequests } from './handler/image.js'\nimport { segment } from './utils.js'\n\n// We don't need to initialize the opentype instances every time.\nconst fontCache = new WeakMap()\n\nexport type SatoriOptions = (\n  | {\n      width: number\n      height: number\n    }\n  | {\n      width: number\n    }\n  | {\n      height: number\n    }\n) & {\n  fonts: FontOptions[]\n  embedFont?: boolean\n  debug?: boolean\n  graphemeImages?: Record<string, string>\n  loadAdditionalAsset?: (\n    languageCode: string,\n    segment: string\n  ) => Promise<string | Array<FontOptions>>\n  tailwindConfig?: TwConfig\n  onNodeDetected?: (node: SatoriNode) => void\n  pointScaleFactor?: number\n}\nexport type { SatoriNode }\n\nexport default async function satori(\n  element: ReactNode,\n  options: SatoriOptions\n): Promise<string> {\n  const Yoga = await getYoga()\n  if (!Yoga || !Yoga.Node) {\n    throw new Error(\n      'Satori is not initialized: expect `yoga` to be loaded, got ' + Yoga\n    )\n  }\n  options.fonts = options.fonts || []\n\n  let font: FontLoader\n  if (fontCache.has(options.fonts)) {\n    font = fontCache.get(options.fonts)\n  } else {\n    fontCache.set(options.fonts, (font = new FontLoader(options.fonts)))\n  }\n\n  const definedWidth = 'width' in options ? options.width : undefined\n  const definedHeight = 'height' in options ? options.height : undefined\n\n  const root = getRootNode(Yoga, options.pointScaleFactor)\n  if (definedWidth) root.setWidth(definedWidth)\n  if (definedHeight) root.setHeight(definedHeight)\n  root.setFlexDirection(Yoga.FLEX_DIRECTION_ROW)\n  root.setFlexWrap(Yoga.WRAP_WRAP)\n  root.setAlignContent(Yoga.ALIGN_AUTO)\n  root.setAlignItems(Yoga.ALIGN_FLEX_START)\n  root.setJustifyContent(Yoga.JUSTIFY_FLEX_START)\n  root.setOverflow(Yoga.OVERFLOW_HIDDEN)\n\n  const graphemeImages = { ...options.graphemeImages }\n  // Some Chinese characters have different glyphs in Chinese and\n  // Japanese, but their Unicode is the same. If the user needs to display\n  // the Chinese and Japanese characters simultaneously correctly, the user\n  // needs to download the Chinese and Japanese fonts, respectively.\n  // Assuming that the user has downloaded the corresponding Japanese font,\n  // to let the program realize that the font has not been downloaded in Chinese,\n  // we need to prohibit Japanese as the fallback when executing `engine.has`.\n  //\n  // This causes a problem. Consider a scenario where we need to display Chinese\n  // correctly under tags with `lang=\"ja\"` set. `engine.has` will repeatedly treat\n  // the Chinese as missing font because we have removed the Chinese as a fallback.\n  // To address this situation, we may need to add `processedWordsMissingFont`\n  const processedWordsMissingFonts = new Set()\n\n  cache.clear()\n  inflightRequests.clear()\n  await preProcessNode(element)\n\n  const handler = layout(element, {\n    id: 'id',\n    parentStyle: {},\n    inheritedStyle: {\n      fontSize: 16,\n      fontWeight: 'normal',\n      fontFamily: 'serif',\n      fontStyle: 'normal',\n      lineHeight: 'normal',\n      color: 'black',\n      opacity: 1,\n      whiteSpace: 'normal',\n\n      // Special style properties:\n      _viewportWidth: definedWidth,\n      _viewportHeight: definedHeight,\n    },\n    parent: root,\n    font,\n    embedFont: options.embedFont,\n    debug: options.debug,\n    graphemeImages,\n    canLoadAdditionalAssets: !!options.loadAdditionalAsset,\n    onNodeDetected: options.onNodeDetected,\n    getTwStyles: (tw, style) => {\n      const twToStyles = getTw({\n        width: definedWidth,\n        height: definedHeight,\n        config: options.tailwindConfig,\n      })\n      const twStyles = { ...twToStyles([tw] as any) }\n      if (typeof twStyles.lineHeight === 'number') {\n        twStyles.lineHeight =\n          twStyles.lineHeight / (+twStyles.fontSize || style.fontSize || 16)\n      }\n      if (twStyles.shadowColor && twStyles.boxShadow) {\n        twStyles.boxShadow = (twStyles.boxShadow as string).replace(\n          /rgba?\\([^)]+\\)/,\n          twStyles.shadowColor as string\n        )\n      }\n      return twStyles\n    },\n  })\n\n  const segmentsMissingFont = (await handler.next()).value as {\n    word: string\n    locale?: Locale\n  }[]\n\n  if (options.loadAdditionalAsset) {\n    if (segmentsMissingFont.length) {\n      const languageCodes = convertToLanguageCodes(segmentsMissingFont)\n      const fonts: FontOptions[] = []\n      const images: Record<string, string> = {}\n\n      await Promise.all(\n        Object.entries(languageCodes).flatMap(([code, segments]) =>\n          segments.map((_segment) => {\n            const key = `${code}_${_segment}`\n            if (processedWordsMissingFonts.has(key)) {\n              return null\n            }\n            processedWordsMissingFonts.add(key)\n\n            return options\n              .loadAdditionalAsset(code, _segment)\n              .then((asset: any) => {\n                if (typeof asset === 'string') {\n                  images[_segment] = asset\n                } else if (asset) {\n                  if (Array.isArray(asset)) {\n                    fonts.push(...asset)\n                  } else {\n                    fonts.push(asset)\n                  }\n                }\n              })\n          })\n        )\n      )\n\n      // Directly mutate the font provider and the grapheme map.\n      font.addFonts(fonts)\n      Object.assign(graphemeImages, images)\n    }\n  }\n\n  await handler.next()\n  root.calculateLayout(definedWidth, definedHeight, Yoga.DIRECTION_LTR)\n\n  const content = (await handler.next([0, 0])).value as string\n\n  const computedWidth = root.getComputedWidth()\n  const computedHeight = root.getComputedHeight()\n\n  root.freeRecursive()\n\n  return svg({ width: computedWidth, height: computedHeight, content })\n}\n\nfunction getRootNode(\n  Yoga: TYoga,\n  pointScaleFactor?: SatoriOptions['pointScaleFactor']\n) {\n  if (!pointScaleFactor) {\n    return Yoga.Node.create()\n  } else {\n    const config = Yoga.Config.create()\n    config.setPointScaleFactor(pointScaleFactor)\n    return Yoga.Node.createWithConfig(config)\n  }\n}\n\nfunction convertToLanguageCodes(\n  segmentsMissingFont: { word: string; locale?: Locale }[]\n): Partial<Record<LangCode, string[]>> {\n  const languageCodes = {}\n  let wordsByCode = {}\n\n  for (const { word, locale } of segmentsMissingFont) {\n    const code = detectLanguageCode(word, locale).join('|')\n    wordsByCode[code] = wordsByCode[code] || ''\n    wordsByCode[code] += word\n  }\n\n  Object.keys(wordsByCode).forEach((code: LangCode) => {\n    languageCodes[code] = languageCodes[code] || []\n    if (code === 'emoji') {\n      languageCodes[code].push(\n        ...unique(segment(wordsByCode[code], 'grapheme'))\n      )\n    } else {\n      languageCodes[code][0] = languageCodes[code][0] || ''\n      languageCodes[code][0] += unique(\n        segment(\n          wordsByCode[code],\n          'grapheme',\n          code === 'unknown' ? undefined : code\n        )\n      ).join('')\n    }\n  })\n\n  return languageCodes\n}\n\nfunction unique<T>(arr: T[]): T[] {\n  return Array.from(new Set(arr))\n}\n"],"mappings":"gqBAAA,IASYA,GAYAC,GAKAC,GAKAC,GAMAC,GAMAC,GAYAC,GASAC,GAIAC,GAOAC,GAMAC,GASAC,GASAC,GAMAC,GAKAC,GAMAC,GAMAC,GAOAC,GAMNC,GA0ENC,GAjNAC,GAAAC,GAAA,KASYrB,GAAK,SAALA,EAAK,CAALA,OAAAA,EAAAA,EAAK,KAAA,CAAA,EAAA,OAALA,EAAAA,EAAK,UAAA,CAAA,EAAA,YAALA,EAAAA,EAAK,OAAA,CAAA,EAAA,SAALA,EAAAA,EAAK,QAAA,CAAA,EAAA,UAALA,EAAAA,EAAK,QAAA,CAAA,EAAA,UAALA,EAAAA,EAAK,SAAA,CAAA,EAAA,WAALA,EAAAA,EAAK,aAAA,CAAA,EAAA,eAALA,EAAAA,EAAK,YAAA,CAAA,EAAA,cAALA,EAAAA,EAAK,YAAA,CAAA,EAAA,cAALA,CAAK,EAAA,CAAA,CAAA,EAYLC,GAAS,SAATA,EAAS,CAATA,OAAAA,EAAAA,EAAS,UAAA,CAAA,EAAA,YAATA,EAAAA,EAAS,WAAA,CAAA,EAAA,aAATA,CAAS,EAAA,CAAA,CAAA,EAKTC,GAAS,SAATA,EAAS,CAATA,OAAAA,EAAAA,EAAS,MAAA,CAAA,EAAA,QAATA,EAAAA,EAAS,OAAA,CAAA,EAAA,SAATA,CAAS,EAAA,CAAA,CAAA,EAKTC,GAAS,SAATA,EAAS,CAATA,OAAAA,EAAAA,EAAS,QAAA,CAAA,EAAA,UAATA,EAAAA,EAAS,IAAA,CAAA,EAAA,MAATA,EAAAA,EAAS,IAAA,CAAA,EAAA,MAATA,CAAS,EAAA,CAAA,CAAA,EAMTC,GAAO,SAAPA,EAAO,CAAPA,OAAAA,EAAAA,EAAO,KAAA,CAAA,EAAA,OAAPA,EAAAA,EAAO,KAAA,CAAA,EAAA,OAAPA,EAAAA,EAAO,SAAA,CAAA,EAAA,WAAPA,CAAO,EAAA,CAAA,CAAA,EAMPC,GAAI,SAAJA,EAAI,CAAJA,OAAAA,EAAAA,EAAI,KAAA,CAAA,EAAA,OAAJA,EAAAA,EAAI,IAAA,CAAA,EAAA,MAAJA,EAAAA,EAAI,MAAA,CAAA,EAAA,QAAJA,EAAAA,EAAI,OAAA,CAAA,EAAA,SAAJA,EAAAA,EAAI,MAAA,CAAA,EAAA,QAAJA,EAAAA,EAAI,IAAA,CAAA,EAAA,MAAJA,EAAAA,EAAI,WAAA,CAAA,EAAA,aAAJA,EAAAA,EAAI,SAAA,CAAA,EAAA,WAAJA,EAAAA,EAAI,IAAA,CAAA,EAAA,MAAJA,CAAI,EAAA,CAAA,CAAA,EAYJC,GAAM,SAANA,EAAM,CAANA,OAAAA,EAAAA,EAAM,KAAA,CAAA,EAAA,OAANA,EAAAA,EAAM,iBAAA,CAAA,EAAA,mBAANA,EAAAA,EAAM,6CAAA,CAAA,EAAA,+CAANA,EAAAA,EAAM,gCAAA,CAAA,EAAA,kCAANA,EAAAA,EAAM,IAAA,UAAA,EAAA,MAANA,EAAAA,EAAM,QAAA,UAAA,EAAA,UAANA,CAAM,EAAA,CAAA,CAAA,EASNC,GAAmB,SAAnBA,EAAmB,CAAnBA,OAAAA,EAAAA,EAAmB,aAAA,CAAA,EAAA,eAAnBA,CAAmB,EAAA,CAAA,CAAA,EAInBC,GAAa,SAAbA,EAAa,CAAbA,OAAAA,EAAAA,EAAa,OAAA,CAAA,EAAA,SAAbA,EAAAA,EAAa,cAAA,CAAA,EAAA,gBAAbA,EAAAA,EAAa,IAAA,CAAA,EAAA,MAAbA,EAAAA,EAAa,WAAA,CAAA,EAAA,aAAbA,CAAa,EAAA,CAAA,CAAA,EAObC,GAAM,SAANA,EAAM,CAANA,OAAAA,EAAAA,EAAM,OAAA,CAAA,EAAA,SAANA,EAAAA,EAAM,IAAA,CAAA,EAAA,MAANA,EAAAA,EAAM,IAAA,CAAA,EAAA,MAANA,CAAM,EAAA,CAAA,CAAA,EAMNC,GAAO,SAAPA,EAAO,CAAPA,OAAAA,EAAAA,EAAO,UAAA,CAAA,EAAA,YAAPA,EAAAA,EAAO,OAAA,CAAA,EAAA,SAAPA,EAAAA,EAAO,QAAA,CAAA,EAAA,UAAPA,EAAAA,EAAO,aAAA,CAAA,EAAA,eAAPA,EAAAA,EAAO,YAAA,CAAA,EAAA,cAAPA,EAAAA,EAAO,YAAA,CAAA,EAAA,cAAPA,CAAO,EAAA,CAAA,CAAA,EASPC,GAAQ,SAARA,EAAQ,CAARA,OAAAA,EAAAA,EAAQ,MAAA,CAAA,EAAA,QAARA,EAAAA,EAAQ,KAAA,CAAA,EAAA,OAARA,EAAAA,EAAQ,KAAA,CAAA,EAAA,OAARA,EAAAA,EAAQ,MAAA,CAAA,EAAA,QAARA,EAAAA,EAAQ,QAAA,CAAA,EAAA,UAARA,EAAAA,EAAQ,MAAA,CAAA,EAAA,QAARA,CAAQ,EAAA,CAAA,CAAA,EASRC,GAAW,SAAXA,EAAW,CAAXA,OAAAA,EAAAA,EAAW,UAAA,CAAA,EAAA,YAAXA,EAAAA,EAAW,QAAA,CAAA,EAAA,UAAXA,EAAAA,EAAW,OAAA,CAAA,EAAA,SAAXA,CAAW,EAAA,CAAA,CAAA,EAMXC,GAAQ,SAARA,EAAQ,CAARA,OAAAA,EAAAA,EAAQ,QAAA,CAAA,EAAA,UAARA,EAAAA,EAAQ,KAAA,CAAA,EAAA,OAARA,CAAQ,EAAA,CAAA,CAAA,EAKRC,GAAQ,SAARA,EAAQ,CAARA,OAAAA,EAAAA,EAAQ,QAAA,CAAA,EAAA,UAARA,EAAAA,EAAQ,OAAA,CAAA,EAAA,SAARA,EAAAA,EAAQ,OAAA,CAAA,EAAA,SAARA,CAAQ,EAAA,CAAA,CAAA,EAMRC,GAAY,SAAZA,EAAY,CAAZA,OAAAA,EAAAA,EAAY,OAAA,CAAA,EAAA,SAAZA,EAAAA,EAAY,SAAA,CAAA,EAAA,WAAZA,EAAAA,EAAY,SAAA,CAAA,EAAA,WAAZA,CAAY,EAAA,CAAA,CAAA,EAMZC,GAAI,SAAJA,EAAI,CAAJA,OAAAA,EAAAA,EAAI,UAAA,CAAA,EAAA,YAAJA,EAAAA,EAAI,MAAA,CAAA,EAAA,QAAJA,EAAAA,EAAI,QAAA,CAAA,EAAA,UAAJA,EAAAA,EAAI,KAAA,CAAA,EAAA,OAAJA,CAAI,EAAA,CAAA,CAAA,EAOJC,GAAI,SAAJA,EAAI,CAAJA,OAAAA,EAAAA,EAAI,OAAA,CAAA,EAAA,SAAJA,EAAAA,EAAI,KAAA,CAAA,EAAA,OAAJA,EAAAA,EAAI,YAAA,CAAA,EAAA,cAAJA,CAAI,EAAA,CAAA,CAAA,EAMVC,GAAY,CAChBI,WAAYtB,GAAMuB,KAClBC,iBAAkBxB,GAAMyB,UACxBC,aAAc1B,GAAM2B,OACpBC,eAAgB5B,GAAM6B,QACtBC,cAAe9B,GAAM+B,QACrBC,eAAgBhC,GAAMiC,SACtBC,oBAAqBlC,GAAMmC,aAC3BC,mBAAoBpC,GAAMqC,YAC1BC,mBAAoBtC,GAAMuC,YAC1BC,sBAAuBvC,GAAUwC,UACjCC,uBAAwBzC,GAAU0C,WAClCC,gBAAiB1C,GAAU2C,MAC3BC,iBAAkB5C,GAAU6C,OAC5BC,kBAAmB7C,GAAU8C,QAC7BC,cAAe/C,GAAUgD,IACzBC,cAAejD,GAAUkD,IACzBC,aAAclD,GAAQmD,KACtBC,aAAcpD,GAAQqD,KACtBC,iBAAkBtD,GAAQuD,SAC1BC,UAAWvD,GAAKwD,KAChBC,SAAUzD,GAAK0D,IACfC,WAAY3D,GAAK4D,MACjBC,YAAa7D,GAAK8D,OAClBC,WAAY/D,GAAKgE,MACjBC,SAAUjE,GAAKkE,IACfC,gBAAiBnE,GAAKoE,WACtBC,cAAerE,GAAKsE,SACpBC,SAAUvE,GAAKwE,IACfC,YAAaxE,GAAOmD,KACpBsB,0BAA2BzE,GAAO0E,iBAClCC,yDAA0D3E,GAAO4E,6CACjEC,2CAA4C7E,GAAO8E,gCACnDC,WAAY/E,GAAOuE,IACnBS,eAAgBhF,GAAOiF,QACvBC,oCAAqCjF,GAAoBkF,aACzDC,sBAAuBlF,GAAcmF,OACrCC,8BAA+BpF,GAAcqF,cAC7CC,mBAAoBtF,GAAcuF,IAClCC,2BAA4BxF,GAAcyF,WAC1CC,cAAezF,GAAOkF,OACtBQ,WAAY1F,GAAOsF,IACnBK,WAAY3F,GAAOoE,IACnBwB,mBAAoB3F,GAAQe,UAC5B6E,eAAgB5F,GAAQiB,OACxB4E,iBAAkB7F,GAAQmB,QAC1B2E,sBAAuB9F,GAAQyB,aAC/BsE,qBAAsB/F,GAAQ2B,YAC9BqE,qBAAsBhG,GAAQ6B,YAC9BoE,gBAAiBhG,GAASiG,MAC1BC,eAAgBlG,GAASmG,KACzBC,eAAgBpG,GAASqG,KACzBC,gBAAiBtG,GAASuG,MAC1BC,kBAAmBxG,GAASyG,QAC5BC,gBAAiB1G,GAAS2G,MAC1BC,uBAAwB3G,GAAY4G,UACpCC,qBAAsB7G,GAAY8G,QAClCC,qBAAsB/G,GAAYgH,OAClCC,kBAAmBhH,GAASiH,QAC5BC,eAAgBlH,GAASmH,KACzBC,iBAAkBnH,GAASoH,QAC3BC,gBAAiBrH,GAASsH,OAC1BC,gBAAiBvH,GAASwH,OAC1BC,qBAAsBxH,GAAayH,OACnCC,uBAAwB1H,GAAa2H,SACrCC,uBAAwB5H,GAAa6H,SACrCC,eAAgB7H,GAAKwG,UACrBsB,WAAY9H,GAAK+H,MACjBC,aAAchI,GAAKiI,QACnBC,UAAWlI,GAAKO,KAChB4H,aAAclI,GAAKmI,OACnBC,UAAWpI,GAAKA,KAChBqI,kBAAmBrI,GAAKsI,WAC1B,EACApI,GAAeD,KCbA,SAAfsI,GAAqCC,EAAgB,CACnD,SAASC,EAAMC,EAAWC,EAAMC,EAAI,CAClC,IAAMC,EAAWH,EAAUC,CAAI,EAE/BD,EAAUC,CAAI,EAAI,UAAmB,CAAA,QAAAG,EAAAC,UAAAC,OAANC,EAAI,IAAAC,MAAAJ,CAAA,EAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,CAAA,EAAAJ,UAAAI,CAAA,EACjC,OAAOP,EAAGQ,KAAK,KAAMP,EAAU,GAAGI,CAAI,CACxC,CACF,CAEA,QAAWI,IAAU,CACnB,cACA,YACA,eACA,WACA,YACA,cACA,eACA,cACA,eACA,aACA,QAAQ,EACP,CACD,IAAMC,EAAU,CACd,CAACC,GAAKC,KAAK,EAAGhB,EAAIiB,KAAKf,UAAUW,CAAM,EACvC,CAACE,GAAKG,OAAO,EAAGlB,EAAIiB,KAAKf,UAAU,GAAGW,CAAM,SAAS,EACrD,CAACE,GAAKI,IAAI,EAAGnB,EAAIiB,KAAKf,UAAU,GAAGW,CAAM,MAAM,CACjD,EAEAZ,EAAMD,EAAIiB,KAAKf,UAAWW,EAAQ,SAAUR,EAAmB,CAAA,QAAAe,EAAAb,UAAAC,OAANC,EAAI,IAAAC,MAAAU,EAAA,EAAAA,EAAA,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJZ,EAAIY,EAAA,CAAA,EAAAd,UAAAc,CAAA,EAI3D,IAAMC,EAAQb,EAAKc,IAAI,EACnBC,EAAMC,EAEV,GAAIH,IAAU,OACZE,EAAOT,GAAKI,KACZM,EAAWC,eACF,OAAOJ,GAAU,SAC1BE,EAAOF,EAAME,KACbC,EAAWH,EAAMK,QAAQ,UAEzBH,EACE,OAAOF,GAAU,UAAYA,EAAMM,SAAS,GAAG,EAC3Cb,GAAKG,QACLH,GAAKC,MACXS,EAAWI,WAAWP,CAAK,EAEzBA,IAAUI,QACV,CAACI,OAAOC,MAAMT,CAAK,GACnBQ,OAAOC,MAAMN,CAAQ,EAErB,MAAM,IAAIO,MAAM,iBAAiBV,CAAK,QAAQT,CAAM,EAAE,EAI1D,GAAI,CAACC,EAAQU,CAAI,EACf,MAAM,IAAIQ,MACR,sBAAsBnB,CAAM,wBAAwBS,CAAK,GAC3D,EAEF,OAAIG,IAAaC,OACRZ,EAAQU,CAAI,EAAEZ,KAAK,KAAM,GAAGH,EAAMgB,CAAQ,EAE1CX,EAAQU,CAAI,EAAEZ,KAAK,KAAM,GAAGH,CAAI,CAE3C,CAAC,CACH,CAEA,SAASwB,EAAoBC,EAAiB,CAC5C,OAAOlC,EAAImC,gBAAgBC,UAAU,CACnCC,QAAS,UAAa,CACpB,GAAM,CAACC,MAAAA,EAAOC,OAAAA,CAAM,EAAIL,EAAgB,GAAA3B,SAAO,EAC/C,MAAO,CACL+B,MAAOA,GAASE,IAChBD,OAAQA,GAAUC,GACpB,CACF,CACF,CAAC,CACH,CAEAvC,EAAMD,EAAIiB,KAAKf,UAAW,iBAAkB,SAAUG,EAAUoC,EAAa,CAG3E,OAAIA,EACKpC,EAASO,KAAK,KAAMqB,EAAoBQ,CAAW,CAAC,EAEpD,KAAKC,iBAAiB,CAEjC,CAAC,EAED,SAASC,EAAgBC,EAAiB,CACxC,OAAO5C,EAAI6C,gBAAgBT,UAAU,CAACU,QAASF,CAAe,CAAC,CACjE,CAEA3C,OAAAA,EAAMD,EAAIiB,KAAKf,UAAW,iBAAkB,SAAUG,EAAU0C,EAAa,CAC3E1C,EAASO,KAAK,KAAM+B,EAAgBI,CAAW,CAAC,CAClD,CAAC,EAED9C,EAAMD,EAAIgD,OAAO9C,UAAW,OAAQ,UAAY,CAG9CF,EAAIgD,OAAOC,QAAQ,IAAI,CACzB,CAAC,EAEDhD,EAAMD,EAAIiB,KAAM,SAAU,CAACiC,EAAGC,IAErBA,EACHnD,EAAIiB,KAAKmC,iBAAiBD,CAAM,EAChCnD,EAAIiB,KAAKoC,cAAc,CAC5B,EAEDpD,EAAMD,EAAIiB,KAAKf,UAAW,OAAQ,UAAY,CAG5CF,EAAIiB,KAAKgC,QAAQ,IAAI,CACvB,CAAC,EAEDhD,EAAMD,EAAIiB,KAAKf,UAAW,gBAAiB,UAAY,CACrD,QAASoD,EAAI,EAAGC,EAAI,KAAKC,cAAc,EAAGF,EAAIC,EAAG,EAAED,EACjD,KAAKG,SAAS,CAAC,EAAEC,cAAc,EAEjC,KAAKC,KAAK,CACZ,CAAC,EAED1D,EACED,EAAIiB,KAAKf,UACT,kBACA,SAAUG,EAAgE,CAAA,IAAtDiC,EAAK/B,UAAAC,OAAA,GAAAD,UAAA,CAAA,IAAAmB,OAAAnB,UAAA,CAAA,EAAGiC,IAAKD,EAAMhC,UAAAC,OAAA,GAAAD,UAAA,CAAA,IAAAmB,OAAAnB,UAAA,CAAA,EAAGiC,IAAKoB,EAASrD,UAAAC,OAAA,GAAAD,UAAA,CAAA,IAAAmB,OAAAnB,UAAA,CAAA,EAAGsD,GAAUC,IAEnE,OAAOzD,EAASO,KAAK,KAAM0B,EAAOC,EAAQqB,CAAS,CACrD,CACF,EAEO,CACLZ,OAAQhD,EAAIgD,OACZ/B,KAAMjB,EAAIiB,KACV,GAAG8C,EACL,CACF,CA/UA,IAAAC,GAAAC,GAAA,KAWAC,KACAA,OCZA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,aAAAE,KAEe,SAARA,GAAkBC,EAAU,CACnCA,EAAWA,GAAY,CAAC,EAExB,IAAIC,EAAEA,IAAIA,EAAE,OAAOD,EAAa,IAAcA,EAAW,CAAC,GAAG,IAAIE,EAAGC,EAAGF,EAAE,MAAM,IAAI,QAAQ,SAASG,EAAEC,EAAE,CAACH,EAAGE,EAAED,EAAGE,CAAC,CAAC,EAAE,IAAIC,EAAG,OAAO,OAAO,CAAC,EAAEL,CAAC,EAAEM,EAAE,GAAgB,OAAO,SAApB,KAA8B,SAAS,gBAAgBA,EAAE,SAAS,cAAc,KAAKC,KAAaD,EAAEC,IAAgBD,EAAE,QAAQ,OAAO,IAArB,EAAuBA,EAAEA,EAAE,OAAO,EAAEA,EAAE,QAAQ,SAAS,EAAE,EAAE,YAAY,GAAG,EAAE,CAAC,EAAEA,EAAE,GAAG,IAAIE,EAAGR,EAAE,OAAO,QAAQ,IAAI,KAAK,OAAO,EAAES,EAAET,EAAE,UAAU,QAAQ,KAAK,KAAK,OAAO,EAAE,OAAO,OAAOA,EAAEK,CAAE,EAAEA,EAAG,KAAK,IAAIK,EAAEV,EAAE,aAAaU,EAAEV,EAAE,YACje,IAAIW,EAAcX,EAAE,eAAe,GAAa,OAAO,aAAjB,UAA8BY,EAAE,iCAAiC,EAAE,IAAIC,EAAGC,EAAG,GAAG,SAASC,EAAEZ,EAAEC,EAAEY,EAAE,CAACA,EAAEZ,EAAEY,EAAE,QAAQC,EAAE,GAAG,EAAEb,GAAGY,IAAI,CAAC,IAAIE,EAAEf,EAAEC,GAAG,EAAE,GAAG,CAACc,EAAE,MAAM,GAAGA,EAAE,IAAI,CAAC,IAAIC,EAAEhB,EAAEC,GAAG,EAAE,GAAG,IAASc,EAAE,MAAR,IAAaD,GAAG,OAAO,cAAcC,EAAE,KAAK,EAAEC,CAAC,MAAM,CAAC,IAAIC,EAAEjB,EAAEC,GAAG,EAAE,GAAGc,GAAQA,EAAE,MAAR,KAAcA,EAAE,KAAK,GAAGC,GAAG,EAAEC,GAAGF,EAAE,IAAI,GAAGC,GAAG,GAAGC,GAAG,EAAEjB,EAAEC,GAAG,EAAE,GAAG,MAAMc,EAAED,GAAG,OAAO,aAAaC,CAAC,GAAGA,GAAG,MAAMD,GAAG,OAAO,aAAa,MAAMC,GAAG,GAAG,MAAMA,EAAE,IAAI,EAAE,CAAC,MAAMD,GAAG,OAAO,aAAaC,CAAC,CAAC,CAAC,OAAOD,CAAC,CACve,IAAII,EAAGC,EAAGC,EAAEC,EAAEC,EAAGC,EAAEC,EAAEC,EAAGC,EAAG,SAASC,GAAI,CAAC,IAAI3B,EAAEU,EAAG,OAAOQ,EAAGlB,EAAEH,EAAE,MAAMsB,EAAG,IAAI,UAAUnB,CAAC,EAAEH,EAAE,OAAOwB,EAAE,IAAI,WAAWrB,CAAC,EAAEH,EAAE,OAAO0B,EAAE,IAAI,WAAWvB,CAAC,EAAEH,EAAE,OAAOuB,EAAE,IAAI,WAAWpB,CAAC,EAAEH,EAAE,QAAQyB,EAAG,IAAI,YAAYtB,CAAC,EAAEH,EAAE,QAAQ2B,EAAE,IAAI,YAAYxB,CAAC,EAAEH,EAAE,QAAQ4B,EAAG,IAAI,aAAazB,CAAC,EAAEH,EAAE,QAAQ6B,EAAG,IAAI,aAAa1B,CAAC,CAAC,CAAC,IAAI4B,EAAGC,EAAG,CAAC,EAAEC,EAAG,CAAC,EAAEC,GAAG,CAAC,EAAE,SAASC,IAAI,CAAC,IAAIhC,EAAEH,EAAE,OAAO,MAAM,EAAEgC,EAAG,QAAQ7B,CAAC,CAAC,CAAC,IAAIiC,GAAE,EAAEC,GAAG,KAAKC,GAAE,KAChZ,SAAS1B,EAAET,EAAE,CAAC,MAAGH,EAAE,SAAQA,EAAE,QAAQG,CAAC,EAAEA,EAAE,WAAWA,EAAE,IAAIM,EAAEN,CAAC,EAAEW,EAAG,GAAGX,EAAE,IAAI,YAAY,aAAaA,EAAE,0CAA0C,EAAED,EAAGC,CAAC,EAAQA,CAAE,CAAC,SAASoC,GAAGpC,EAAE,CAAC,OAAOA,EAAE,WAAW,uCAAuC,CAAC,CAAC,IAAIqC,GAAE,GAAG,GAAG,CAACD,GAAGC,EAAC,EAAE,CAAC,IAAIC,GAAGD,GAAEA,GAAExC,EAAE,WAAWA,EAAE,WAAWyC,GAAGnC,CAAC,EAAEA,EAAEmC,EAAE,CACjT,SAASC,IAAI,CAAC,IAAIvC,EAAEqC,GAAE,GAAG,CAAC,GAAGrC,GAAGqC,IAAG9B,EAAE,OAAO,IAAI,WAAWA,CAAC,EAAE,GAAG6B,GAAGpC,CAAC,EAAE,GAAG,CAAC,IAAIC,EAAEuC,GAAGxC,EAAE,MAAM,EAAE,CAAC,EAAEa,EAAE,IAAI,WAAWZ,EAAE,MAAM,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAE,OAAO,EAAED,EAAEa,EAAEb,CAAC,EAAEC,EAAE,WAAWD,CAAC,EAAE,IAAIc,EAAED,CAAC,MAAC,CAAS,MAAM,MAAM,2CAA2C,CAAE,MAAMC,EAAE,OAAO,IAAIC,EAAED,EAAE,GAAGC,EAAE,OAAOA,EAAE,KAAK,iDAAkD,OAAOC,EAAN,CAASP,EAAEO,CAAC,CAAC,CAAC,CAC7V,SAASyB,IAAI,CAAC,OAAOlC,GAAe,OAAO,OAAnB,WAAyB,QAAQ,QAAQ,EAAE,KAAK,UAAU,CAAC,OAAOgC,GAAG,CAAC,CAAC,EAAE,MAAMF,GAAE,CAAC,YAAY,aAAa,CAAC,EAAE,KAAK,SAASrC,EAAE,CAAC,GAAG,CAACA,EAAE,GAAG,KAAK,uCAAuCqC,GAAE,IAAI,OAAOrC,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,UAAU,CAAC,OAAOuC,GAAG,CAAC,CAAC,CAAC,CAAC,SAASG,GAAG1C,EAAE,CAAC,KAAK,EAAEA,EAAE,QAAQA,EAAE,MAAM,EAAEH,CAAC,CAAC,CAAC,SAAS8C,GAAG3C,EAAE,CAAC,GAAYA,IAAT,OAAW,MAAM,WAAWA,EAAEA,EAAE,QAAQ,iBAAiB,GAAG,EAAE,IAAIC,EAAED,EAAE,WAAW,CAAC,EAAE,MAAO,KAAIC,GAAG,IAAIA,EAAE,IAAID,EAAEA,CAAC,CACxb,SAAS4C,GAAG5C,EAAEC,EAAE,CAAC,OAAAD,EAAE2C,GAAG3C,CAAC,EAAS,UAAU,CAAC,OAAOC,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI4C,GAAE,CAAC,CAAC,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAEC,EAAG,CAAC,EAAE,SAASC,EAAG/C,EAAE,CAAC,IAAIC,EAAE,MAAMY,EAAE+B,GAAG5C,EAAE,SAASc,EAAE,CAAC,KAAK,KAAKd,EAAE,KAAK,QAAQc,EAAEA,EAAE,MAAMA,CAAC,EAAE,MAAeA,IAAT,SAAa,KAAK,MAAM,KAAK,SAAS,EAAE;AAAA,EAAKA,EAAE,QAAQ,qBAAqB,EAAE,EAAE,CAAC,EAAE,OAAAD,EAAE,UAAU,OAAO,OAAOZ,EAAE,SAAS,EAAEY,EAAE,UAAU,YAAYA,EAAEA,EAAE,UAAU,SAAS,UAAU,CAAC,OAAgB,KAAK,UAAd,OAAsB,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,EAASA,CAAC,CAAC,IAAImC,GAAE,OAC/e,SAASC,EAAEjD,EAAE,CAAC,MAAM,IAAIgD,GAAEhD,CAAC,CAAE,CAAC,IAAIkD,GAAElD,IAAIA,GAAGiD,EAAE,oCAAoCjD,CAAC,EAAS6C,GAAE7C,CAAC,EAAE,OAAOmD,GAAGnD,GAAG,CAAC,OAAOA,EAAE,CAAC,KAAK,OAAO,MAAO,GAAE,KAAK,KAAK,MAAO,GAAE,IAAK,GAAG,MAAO,GAAE,IAAK,GAAG,MAAO,GAAE,QAAQ,IAAIC,EAAE6C,EAAG,OAAOA,EAAG,IAAI,EAAED,GAAE,OAAO,OAAAA,GAAE5C,CAAC,EAAE,CAAC,GAAG,EAAE,MAAMD,CAAC,EAASC,CAAC,CAAC,EAAEmD,GAAG,OAAOC,GAAG,OAAO,SAASC,GAAEtD,EAAE,CAAC,QAAQC,EAAE,GAAGmB,EAAEpB,CAAC,GAAGC,GAAGoD,GAAGjC,EAAEpB,GAAG,CAAC,EAAE,OAAOC,CAAC,CAAC,IAAIsD,GAAE,CAAC,EAAE,SAASC,IAAI,CAAC,KAAKD,GAAE,QAAQ,CAAC,IAAIvD,EAAEuD,GAAE,IAAI,EAAEvD,EAAE,EAAE,EAAE,GAAGA,EAAE,OAAU,CAAC,CAAC,CAAC,IAAIyD,GAAE,OAAOC,GAAE,CAAC,EACpb,SAASC,GAAG3D,EAAEC,EAAE,CAAC,IAAaA,IAAT,QAAYgD,EAAE,6BAA6B,EAAEjD,EAAE,GAAGC,EAAED,EAAE,GAAGC,CAAC,EAAED,EAAEA,EAAE,EAAE,OAAOC,CAAC,CAAC,IAAI2D,GAAE,CAAC,EAAE,SAASC,GAAG7D,EAAE,CAACA,EAAE8D,GAAG9D,CAAC,EAAE,IAAIC,EAAEqD,GAAEtD,CAAC,EAAE,OAAA+D,GAAE/D,CAAC,EAASC,CAAC,CAAC,SAAS+D,GAAGhE,EAAEC,EAAE,CAAC,IAAIY,EAAE+C,GAAE5D,CAAC,EAAE,OAASa,IAAT,QAAYoC,EAAEhD,EAAE,qBAAqB4D,GAAG7D,CAAC,CAAC,EAASa,CAAC,CAAC,SAASoD,IAAI,CAAC,CAAC,IAAIC,GAAG,GAAG,SAASC,GAAGnE,EAAE,CAAC,EAAEA,EAAE,MAAM,MAAUA,EAAE,MAAM,QAAZ,IAAoBA,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,EAAEA,EAAE,EAAE,EAAE,EAAEA,EAAE,CAAC,EAAE,CAAC,SAASoE,GAAGpE,EAAEC,EAAEY,EAAE,CAAC,OAAGZ,IAAIY,EAASb,EAAca,EAAE,IAAX,OAAoB,MAAKb,EAAEoE,GAAGpE,EAAEC,EAAEY,EAAE,CAAC,EAAgBb,IAAP,KAAS,KAAKa,EAAE,GAAGb,CAAC,EAAC,CAAC,IAAIqE,GAAG,CAAC,EAAE,SAASC,GAAGtE,EAAEC,EAAE,CAAC,OAAAA,EAAE0D,GAAG3D,EAAEC,CAAC,EAASyD,GAAEzD,CAAC,CAAC,CAC/e,IAAIsE,GAAG,OAAO,SAASC,GAAGxE,EAAE,CAAC,MAAM,IAAIuE,GAAGvE,CAAC,CAAE,CAAC,SAASyE,GAAGzE,EAAEC,EAAE,CAAC,OAAAA,EAAE,GAAGA,EAAE,GAAGuE,GAAG,0CAA0C,EAAE,CAAC,CAACvE,EAAE,GAAI,CAAC,CAACA,EAAE,GAAGuE,GAAG,kDAAkD,EAAEvE,EAAE,MAAM,CAAC,MAAM,CAAC,EAASyE,GAAE,OAAO,OAAO1E,EAAE,CAAC,EAAE,CAAC,MAAMC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAASyE,GAAE1E,EAAE,CAAC,OAAiB,OAAO,qBAArB,KAAiD0E,GAAEzE,GAAGA,EAAED,IAAEkE,GAAG,IAAI,qBAAqBjE,GAAG,CAACkE,GAAGlE,EAAE,CAAC,CAAC,CAAC,EAAEyE,GAAEzE,GAAG,CAAC,IAAIY,EAAEZ,EAAE,EAAE,OAAAY,EAAE,GAAGqD,GAAG,SAASjE,EAAE,CAAC,EAAEY,CAAC,EAAEZ,CAAC,EAASA,CAAC,EAAEgE,GAAGhE,GAAG,CAACiE,GAAG,WAAWjE,CAAC,CAAC,EAASyE,GAAE1E,CAAC,EAAC,CAAC,IAAI2E,GAAG,CAAC,EACjd,SAASC,GAAG5E,EAAE,CAAC,KAAKA,EAAE,QAAQ,CAAC,IAAIC,EAAED,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEC,CAAC,CAAC,CAAC,CAAC,SAAS4E,GAAG7E,EAAE,CAAC,OAAO,KAAK,aAAauB,EAAEvB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI8E,GAAE,CAAC,EAAEC,GAAG,CAAC,EAAE,SAASC,GAAEhF,EAAEC,EAAEY,EAAE,CAAC,SAASC,EAAEmE,EAAE,CAACA,EAAEpE,EAAEoE,CAAC,EAAEA,EAAE,SAASjF,EAAE,QAAQwE,GAAG,iCAAiC,EAAE,QAAQU,EAAE,EAAEA,EAAElF,EAAE,OAAO,EAAEkF,EAAEC,EAAEnF,EAAEkF,CAAC,EAAED,EAAEC,CAAC,CAAC,CAAC,CAAClF,EAAE,QAAQ,SAASiF,EAAE,CAACF,GAAGE,CAAC,EAAEhF,CAAC,CAAC,EAAE,IAAIc,EAAE,MAAMd,EAAE,MAAM,EAAEe,EAAE,CAAC,EAAEC,EAAE,EAAEhB,EAAE,QAAQ,CAACgF,EAAEC,IAAI,CAACtB,GAAE,eAAeqB,CAAC,EAAElE,EAAEmE,CAAC,EAAEtB,GAAEqB,CAAC,GAAGjE,EAAE,KAAKiE,CAAC,EAAEH,GAAE,eAAeG,CAAC,IAAIH,GAAEG,CAAC,EAAE,CAAC,GAAGH,GAAEG,CAAC,EAAE,KAAK,IAAI,CAAClE,EAAEmE,CAAC,EAAEtB,GAAEqB,CAAC,EAAE,EAAEhE,EAAEA,IAAID,EAAE,QAAQF,EAAEC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAMC,EAAE,SAAN,GAAcF,EAAEC,CAAC,CAAC,CACne,SAASqE,EAAGpF,EAAE,CAAC,OAAOA,EAAE,CAAC,IAAK,GAAE,MAAO,GAAE,IAAK,GAAE,MAAO,GAAE,IAAK,GAAE,MAAO,GAAE,IAAK,GAAE,MAAO,GAAE,QAAQ,MAAM,IAAI,UAAU,sBAAsBA,CAAC,CAAE,CAAC,CAC/I,SAASmF,EAAEnF,EAAEC,EAAEY,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,mBAAmBZ,GAAG,MAAM,IAAI,UAAU,yDAAyD,EAAE,IAAIa,EAAEb,EAAE,KAAsE,GAAjED,GAAGiD,EAAE,SAASnC,EAAE,+CAA+C,EAAK8C,GAAE,eAAe5D,CAAC,EAAE,CAAC,GAAGa,EAAE,GAAG,OAAOoC,EAAE,yBAAyBnC,EAAE,SAAS,CAAC,CAAC8C,GAAE5D,CAAC,EAAEC,EAAE,OAAO8E,GAAG/E,CAAC,EAAE8E,GAAE,eAAe9E,CAAC,IAAIC,EAAE6E,GAAE9E,CAAC,EAAE,OAAO8E,GAAE9E,CAAC,EAAEC,EAAE,QAAQc,GAAGA,EAAE,CAAC,EAAE,CAAC,SAASsE,GAAGrF,EAAE,CAACiD,EAAEjD,EAAE,EAAE,EAAE,EAAE,KAAK,2BAA2B,CAAC,CAAC,SAASsF,GAAG,CAAC,CACpb,SAASC,GAAGvF,EAAEC,EAAEY,EAAE,CAAC,GAAYb,EAAEC,CAAC,EAAE,IAAd,OAAgB,CAAC,IAAIa,EAAEd,EAAEC,CAAC,EAAED,EAAEC,CAAC,EAAE,UAAU,CAAC,OAAAD,EAAEC,CAAC,EAAE,EAAE,eAAe,UAAU,MAAM,GAAGgD,EAAE,aAAapC,EAAE,iDAAiD,UAAU,OAAO,uBAAuBb,EAAEC,CAAC,EAAE,EAAE,IAAI,EAASD,EAAEC,CAAC,EAAE,EAAE,UAAU,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,EAAED,EAAEC,CAAC,EAAE,EAAE,CAAC,EAAED,EAAEC,CAAC,EAAE,EAAEa,EAAE,CAAC,EAAEA,CAAC,CAAC,CACjT,SAAS0E,GAAGxF,EAAEC,EAAE,CAACJ,EAAE,eAAeG,CAAC,GAAGiD,EAAE,gCAAgCjD,EAAE,SAAS,EAAEuF,GAAG1F,EAAEG,EAAEA,CAAC,EAAEH,EAAE,eAAe,MAAM,GAAGoD,EAAE,iGAAiG,EAAEpD,EAAEG,CAAC,EAAE,EAAE,MAAM,EAAEC,GAAGJ,EAAEG,CAAC,EAAEC,CAAC,CAAC,SAASwF,GAAGzF,EAAEC,EAAEY,EAAEC,EAAEC,EAAEC,EAAEC,EAAEgE,EAAE,CAAC,KAAK,KAAKjF,EAAE,KAAK,YAAYC,EAAE,KAAK,EAAEY,EAAE,KAAK,EAAEC,EAAE,KAAK,EAAEC,EAAE,KAAK,GAAGC,EAAE,KAAK,GAAGC,EAAE,KAAK,GAAGgE,EAAE,KAAK,GAAG,CAAC,CAAC,CACtX,SAASS,GAAG1F,EAAEC,EAAEY,EAAE,CAAC,KAAKZ,IAAIY,GAAGZ,EAAE,IAAIgD,EAAE,gCAAgCpC,EAAE,KAAK,wBAAwBZ,EAAE,IAAI,EAAED,EAAEC,EAAE,GAAGD,CAAC,EAAEC,EAAEA,EAAE,EAAE,OAAOD,CAAC,CAAC,SAAS2F,GAAG3F,EAAEC,EAAE,CAAC,OAAUA,IAAP,MAAgB,KAAK,IAAIgD,EAAE,uBAAuB,KAAK,IAAI,EAAE,IAAEhD,EAAE,GAAGgD,EAAE,gBAAgB2C,GAAG3F,CAAC,EAAE,UAAU,KAAK,IAAI,EAAEA,EAAE,EAAE,GAAGgD,EAAE,mDAAmD,KAAK,IAAI,EAASyC,GAAGzF,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAC,CAClX,SAAS4F,GAAG7F,EAAEC,EAAE,CAAC,GAAUA,IAAP,KAAS,CAA8C,GAA7C,KAAK,IAAIgD,EAAE,uBAAuB,KAAK,IAAI,EAAK,KAAK,GAAG,CAAC,IAAIpC,EAAE,KAAK,GAAG,EAAE,OAAOb,IAAP,MAAUA,EAAE,KAAK,KAAK,EAAEa,CAAC,EAASA,CAAC,CAAC,MAAO,EAAC,CAA6Q,GAA5QZ,EAAE,GAAGgD,EAAE,gBAAgB2C,GAAG3F,CAAC,EAAE,UAAU,KAAK,IAAI,EAAEA,EAAE,EAAE,GAAGgD,EAAE,mDAAmD,KAAK,IAAI,EAAE,CAAC,KAAK,IAAIhD,EAAE,EAAE,EAAE,IAAIgD,EAAE,oCAAoChD,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,KAAKA,EAAE,EAAE,EAAE,MAAM,sBAAsB,KAAK,IAAI,EAAEY,EAAE6E,GAAGzF,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAK,KAAK,GAAG,OAAgBA,EAAE,EAAE,IAAb,QAAgBgD,EAAE,iDAAiD,EACrf,KAAK,GAAG,CAAC,IAAK,GAAEhD,EAAE,EAAE,IAAI,KAAKY,EAAEZ,EAAE,EAAE,EAAEgD,EAAE,oCAAoChD,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,KAAKA,EAAE,EAAE,EAAE,MAAM,sBAAsB,KAAK,IAAI,EAAE,MAAM,IAAK,GAAEY,EAAEZ,EAAE,EAAE,EAAE,MAAM,IAAK,GAAE,GAAGA,EAAE,EAAE,IAAI,KAAKY,EAAEZ,EAAE,EAAE,MAAM,CAAC,IAAIa,EAAEb,EAAE,MAAM,EAAEY,EAAE,KAAK,GAAGA,EAAEsC,GAAG,UAAU,CAACrC,EAAE,OAAU,CAAC,CAAC,CAAC,EAASd,IAAP,MAAUA,EAAE,KAAK,KAAK,EAAEa,CAAC,CAAC,CAAC,MAAM,QAAQoC,EAAE,6BAA6B,CAAC,CAAC,OAAOpC,CAAC,CACrV,SAASiF,EAAG9F,EAAEC,EAAE,CAAC,OAAUA,IAAP,MAAgB,KAAK,IAAIgD,EAAE,uBAAuB,KAAK,IAAI,EAAE,IAAEhD,EAAE,GAAGgD,EAAE,gBAAgB2C,GAAG3F,CAAC,EAAE,UAAU,KAAK,IAAI,EAAEA,EAAE,EAAE,GAAGgD,EAAE,mDAAmD,KAAK,IAAI,EAAEhD,EAAE,EAAE,EAAE,IAAIgD,EAAE,mCAAmChD,EAAE,EAAE,EAAE,KAAK,sBAAsB,KAAK,IAAI,EAASyF,GAAGzF,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAC,CACtU,SAAS8F,GAAE/F,EAAEC,EAAEY,EAAEC,EAAE,CAAC,KAAK,KAAKd,EAAE,KAAK,EAAEC,EAAE,KAAK,GAAGY,EAAE,KAAK,GAAGC,EAAE,KAAK,GAAG,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAgBb,EAAE,IAAX,OAAa,KAAK,WAAW4F,IAAI,KAAK,WAAW/E,EAAE6E,GAAGG,EAAG,KAAK,EAAE,KAAK,CAAC,SAASE,GAAGhG,EAAEC,EAAE,CAACJ,EAAE,eAAeG,CAAC,GAAGwE,GAAG,qCAAqC,EAAE3E,EAAEG,CAAC,EAAEC,EAAEJ,EAAEG,CAAC,EAAE,EAAE,MAAM,CACxS,SAASiG,GAAGjG,EAAEC,EAAE,CAAC,IAAIY,EAAE,CAAC,EAAE,OAAO,UAAU,CAAuC,GAAtCA,EAAE,OAAO,EAAE,OAAO,OAAOA,EAAE,SAAS,EAAKb,EAAE,SAAS,GAAG,EAAE,CAAC,IAAIc,EAAEjB,EAAE,WAAWG,CAAC,EAAEc,EAAED,GAAGA,EAAE,OAAOC,EAAE,MAAM,KAAK,CAACb,CAAC,EAAE,OAAOY,CAAC,CAAC,EAAEC,EAAE,KAAK,KAAKb,CAAC,CAAC,MAAMa,EAAEc,EAAG,IAAI3B,CAAC,EAAE,MAAM,KAAKY,CAAC,EAAE,OAAOC,CAAC,CAAC,CAAC,SAASoF,GAAElG,EAAEC,EAAE,CAACD,EAAEsD,GAAEtD,CAAC,EAAE,IAAIa,EAAEb,EAAE,SAAS,GAAG,EAAEiG,GAAGjG,EAAEC,CAAC,EAAE2B,EAAG,IAAI3B,CAAC,EAAE,OAAY,OAAOY,GAAnB,YAAsBoC,EAAE,2CAA2CjD,EAAE,KAAKC,CAAC,EAASY,CAAC,CAAC,IAAIsF,GAAG,OAC1X,SAASC,GAAGpG,EAAEC,EAAE,CAAC,SAASY,EAAEG,EAAE,CAACD,EAAEC,CAAC,GAAG4C,GAAE5C,CAAC,IAAI+D,GAAG/D,CAAC,EAAE+D,GAAG/D,CAAC,EAAE,QAAQH,CAAC,GAAGC,EAAE,KAAKE,CAAC,EAAED,EAAEC,CAAC,EAAE,IAAI,CAAC,IAAIF,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAE,MAAAd,EAAE,QAAQY,CAAC,EAAQ,IAAIsF,GAAGnG,EAAE,KAAKc,EAAE,IAAI+C,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAE,CAC/J,SAASwC,GAAGrG,EAAEC,EAAEY,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAEf,EAAE,OAAO,EAAEe,GAAGiC,EAAE,gFAAgF,EAAE,IAAIhC,EAAShB,EAAE,CAAC,IAAV,MAAoBY,IAAP,KAASoE,EAAE,GAAG,IAAIpE,EAAE,EAAEA,EAAEZ,EAAE,OAAO,EAAEY,EAAE,GAAUZ,EAAEY,CAAC,IAAV,MAAsBZ,EAAEY,CAAC,EAAE,IAAd,OAAgB,CAACoE,EAAE,GAAG,KAAK,CAAC,IAAIC,EAAWjF,EAAE,CAAC,EAAE,OAAd,OAAmBqG,EAAEtF,EAAE,EAAEuF,EAAE,MAAMD,CAAC,EAAEE,EAAE,CAAC,EAAEC,GAAE,CAAC,EAAE,OAAO,UAAU,CAA6I,GAA5I,UAAU,SAASH,GAAGrD,EAAE,YAAYjD,EAAE,gBAAgB,UAAU,OAAO,wBAAwBsG,EAAE,QAAQ,EAAEG,GAAE,OAAO,EAAED,EAAE,OAAOvF,EAAE,EAAE,EAAEuF,EAAE,CAAC,EAAEzF,EAAKE,EAAE,CAAC,IAAIyF,GAAEzG,EAAE,CAAC,EAAE,WAAWwG,GAAE,IAAI,EAAED,EAAE,CAAC,EAAEE,EAAC,CAAC,QAAQC,GAAE,EAAEA,GAAEL,EAAE,EAAEK,GAAEJ,EAAEI,EAAC,EACvf1G,EAAE0G,GAAE,CAAC,EAAE,WAAWF,GAAE,UAAUE,EAAC,CAAC,EAAEH,EAAE,KAAKD,EAAEI,EAAC,CAAC,EAAoB,GAAlBA,GAAE7F,EAAE,MAAM,KAAK0F,CAAC,EAAKvB,EAAEL,GAAG6B,EAAC,MAAO,SAAQG,GAAE3F,EAAE,EAAE,EAAE2F,GAAE3G,EAAE,OAAO2G,KAAI,CAAC,IAAIC,GAAMD,KAAJ,EAAMF,GAAEH,EAAEK,GAAE,CAAC,EAAS3G,EAAE2G,EAAC,EAAE,IAAZ,MAAe3G,EAAE2G,EAAC,EAAE,EAAEC,EAAC,CAAC,CAAC,OAAAH,GAAExB,EAAEjF,EAAE,CAAC,EAAE,aAAa0G,EAAC,EAAE,OAAcD,EAAC,CAAC,CAAC,SAASI,GAAG9G,EAAEC,EAAE,CAAC,QAAQY,EAAE,CAAC,EAAEC,EAAE,EAAEA,EAAEd,EAAEc,IAAID,EAAE,KAAKW,EAAEvB,EAAE,EAAEa,GAAG,CAAC,CAAC,EAAE,OAAOD,CAAC,CAAC,SAASkG,GAAG/G,EAAE,CAAC,EAAEA,GAAO,EAAE6C,GAAE7C,CAAC,EAAE,KAAX,IAAgB6C,GAAE7C,CAAC,EAAE,OAAO8C,EAAG,KAAK9C,CAAC,EAAE,CAAC,SAAS4F,GAAG5F,EAAE,CAAC,GAAUA,IAAP,KAAS,MAAM,OAAO,IAAIC,EAAE,OAAOD,EAAE,OAAiBC,IAAX,UAAwBA,IAAV,SAA0BA,IAAb,WAAeD,EAAE,SAAS,EAAE,GAAGA,CAAC,CACpc,SAASgH,GAAGhH,EAAEC,EAAE,CAAC,OAAOA,EAAE,CAAC,IAAK,GAAE,OAAO,SAASY,EAAE,CAAC,OAAO,KAAK,aAAaY,EAAGZ,GAAG,CAAC,CAAC,CAAC,EAAE,IAAK,GAAE,OAAO,SAASA,EAAE,CAAC,OAAO,KAAK,aAAaa,EAAGb,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,IAAI,UAAU,uBAAuBb,CAAC,CAAE,CAAC,CAC9M,SAASiH,GAAGjH,EAAEC,EAAEY,EAAE,CAAC,OAAOZ,EAAE,CAAC,IAAK,GAAE,OAAOY,EAAE,SAASC,EAAE,CAAC,OAAOK,EAAGL,CAAC,CAAC,EAAE,SAASA,EAAE,CAAC,OAAOM,EAAEN,CAAC,CAAC,EAAE,IAAK,GAAE,OAAOD,EAAE,SAASC,EAAE,CAAC,OAAOO,EAAEP,GAAG,CAAC,CAAC,EAAE,SAASA,EAAE,CAAC,OAAOQ,EAAGR,GAAG,CAAC,CAAC,EAAE,IAAK,GAAE,OAAOD,EAAE,SAASC,EAAE,CAAC,OAAOS,EAAET,GAAG,CAAC,CAAC,EAAE,SAASA,EAAE,CAAC,OAAOU,EAAEV,GAAG,CAAC,CAAC,EAAE,QAAQ,MAAM,IAAI,UAAU,yBAAyBd,CAAC,CAAE,CAAC,CAAC,SAASkH,GAAGlH,EAAEC,EAAE,CAAC,QAAQY,EAAE,GAAGC,EAAE,EAAE,EAAEA,GAAGb,EAAE,GAAG,EAAEa,EAAE,CAAC,IAAIC,EAAEM,EAAErB,EAAE,EAAEc,GAAG,CAAC,EAAE,GAAMC,GAAH,EAAK,MAAMF,GAAG,OAAO,aAAaE,CAAC,CAAC,CAAC,OAAOF,CAAC,CAC9Z,SAASsG,GAAGnH,EAAEC,EAAEY,EAAE,CAA4B,GAAlBA,IAAT,SAAaA,EAAE,YAAe,EAAEA,EAAE,MAAO,GAAEA,GAAG,EAAE,IAAIC,EAAEb,EAAEY,EAAEA,EAAE,EAAEb,EAAE,OAAOa,EAAE,EAAEb,EAAE,OAAO,QAAQe,EAAE,EAAEA,EAAEF,EAAE,EAAEE,EAAEM,EAAEpB,GAAG,CAAC,EAAED,EAAE,WAAWe,CAAC,EAAEd,GAAG,EAAE,OAAAoB,EAAEpB,GAAG,CAAC,EAAE,EAASA,EAAEa,CAAC,CAAC,SAASsG,GAAGpH,EAAE,CAAC,MAAO,GAAEA,EAAE,MAAM,CAAC,SAASqH,GAAGrH,EAAEC,EAAE,CAAC,QAAQY,EAAE,EAAEC,EAAE,GAAG,EAAED,GAAGZ,EAAE,IAAI,CAAC,IAAIc,EAAEQ,EAAEvB,EAAE,EAAEa,GAAG,CAAC,EAAE,GAAME,GAAH,EAAK,MAAM,EAAEF,EAAE,OAAOE,GAAGA,GAAG,MAAMD,GAAG,OAAO,aAAa,MAAMC,GAAG,GAAG,MAAMA,EAAE,IAAI,GAAGD,GAAG,OAAO,aAAaC,CAAC,CAAC,CAAC,OAAOD,CAAC,CACvY,SAASwG,GAAGtH,EAAEC,EAAEY,EAAE,CAA4B,GAAlBA,IAAT,SAAaA,EAAE,YAAe,EAAEA,EAAE,MAAO,GAAE,IAAIC,EAAEb,EAAEY,EAAEC,EAAED,EAAE,EAAE,QAAQE,EAAE,EAAEA,EAAEf,EAAE,OAAO,EAAEe,EAAE,CAAC,IAAIC,EAAEhB,EAAE,WAAWe,CAAC,EAAE,GAAG,OAAOC,GAAG,OAAOA,EAAE,CAAC,IAAIC,EAAEjB,EAAE,WAAW,EAAEe,CAAC,EAAEC,EAAE,QAAQA,EAAE,OAAO,IAAIC,EAAE,IAAI,CAAgB,GAAfM,EAAEtB,GAAG,CAAC,EAAEe,EAAEf,GAAG,EAAKA,EAAE,EAAEY,EAAE,KAAK,CAAC,OAAAU,EAAEtB,GAAG,CAAC,EAAE,EAASA,EAAEa,CAAC,CAAC,SAASyG,GAAGvH,EAAE,CAAC,QAAQC,EAAE,EAAEY,EAAE,EAAEA,EAAEb,EAAE,OAAO,EAAEa,EAAE,CAAC,IAAIC,EAAEd,EAAE,WAAWa,CAAC,EAAE,OAAOC,GAAG,OAAOA,GAAG,EAAED,EAAEZ,GAAG,CAAC,CAAC,OAAOA,CAAC,CAAC,IAAIuH,GAAG,CAAC,EAAE,SAASC,GAAGzH,EAAE,CAAC,IAAIC,EAAEuH,GAAGxH,CAAC,EAAE,OAAgBC,IAAT,OAAWqD,GAAEtD,CAAC,EAAEC,CAAC,CAAC,IAAIyH,GAAG,CAAC,EAAE,SAASC,GAAG3H,EAAE,CAAC,IAAIC,EAAEyH,GAAG,OAAO,OAAAA,GAAG,KAAK1H,CAAC,EAASC,CAAC,CACre,SAAS2H,GAAG5H,EAAEC,EAAE,CAAC,QAAQY,EAAE,MAAMb,CAAC,EAAEc,EAAE,EAAEA,EAAEd,EAAE,EAAEc,EAAED,EAAEC,CAAC,EAAEkD,GAAGxC,EAAEvB,EAAE,EAAEa,GAAG,CAAC,EAAE,aAAaA,CAAC,EAAE,OAAOD,CAAC,CAAC,IAAIgH,GAAG,CAAC,EAAEC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE9E,GAAEnD,EAAE,aAAakD,EAAG,cAAc,EAAElD,EAAE,oBAAoB,UAAU,CAAC,QAAQG,EAAE,EAAEC,EAAE,EAAEA,EAAE4C,GAAE,OAAO,EAAE5C,EAAW4C,GAAE5C,CAAC,IAAZ,QAAe,EAAED,EAAE,OAAOA,CAAC,EAAEH,EAAE,gBAAgB,UAAU,CAAC,QAAQG,EAAE,EAAEA,EAAE6C,GAAE,OAAO,EAAE7C,EAAE,GAAY6C,GAAE7C,CAAC,IAAZ,OAAc,OAAO6C,GAAE7C,CAAC,EAAE,OAAO,IAAI,EAAEoD,GAAGvD,EAAE,iBAAiBkD,EAAG,kBAAkB,EAAE,QAAQgF,GAAG,MAAM,GAAG,EAAEC,GAAG,EAAE,IAAIA,GAAG,EAAEA,GAAGD,GAAGC,EAAE,EAAE,OAAO,aAAaA,EAAE,EAAE3E,GAAG0E,GAAGlI,EAAE,0BAA0B,UAAU,CAAC,OAAO,OAAO,KAAK6D,EAAC,EAAE,MAAM,EACthB7D,EAAE,0BAA0B,UAAU,CAAC,IAAIG,EAAE,CAAC,EAAEC,EAAE,IAAIA,KAAKyD,GAAEA,GAAE,eAAezD,CAAC,GAAGD,EAAE,KAAK0D,GAAEzD,CAAC,CAAC,EAAE,OAAOD,CAAC,EAAEH,EAAE,oBAAoB2D,GAAG3D,EAAE,iBAAiB,SAASG,EAAE,CAACyD,GAAEzD,EAAEuD,GAAE,QAAQE,IAAGA,GAAED,EAAE,CAAC,EAAEe,GAAG1E,EAAE,cAAckD,EAAG,eAAe,EAAEuC,EAAE,UAAU,UAAU,SAAStF,EAAE,CAAC,GAAG,EAAE,gBAAgBsF,GAAGtF,aAAasF,GAAG,MAAM,GAAG,IAAIrF,EAAE,KAAK,EAAE,EAAE,EAAEY,EAAE,KAAK,EAAE,EAAEC,EAAEd,EAAE,EAAE,EAAE,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAEC,EAAE,GAAGY,EAAEZ,EAAE,GAAGY,CAAC,EAAEZ,EAAEA,EAAE,EAAE,KAAKa,EAAE,GAAGd,EAAEc,EAAE,GAAGd,CAAC,EAAEc,EAAEA,EAAE,EAAE,OAAOb,IAAIa,GAAGD,IAAIb,CAAC,EACvasF,EAAE,UAAU,MAAM,UAAU,CAAoB,GAAnB,KAAK,EAAE,GAAGD,GAAG,IAAI,EAAK,KAAK,EAAE,GAAG,OAAO,KAAK,EAAE,MAAM,OAAO,EAAE,KAAK,IAAIrF,EAAE0E,GAAEzE,EAAE,OAAOY,EAAEZ,EAAE,OAAOa,EAAE,OAAO,eAAe,IAAI,EAAEC,EAAE,KAAK,EAAE,OAAAf,EAAEA,EAAEa,EAAE,KAAKZ,EAAEa,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAMC,EAAE,MAAM,EAAEA,EAAE,EAAE,GAAGA,EAAE,GAAG,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEf,EAAE,EAAE,MAAM,OAAO,EAAEA,EAAE,EAAE,EAAE,GAAUA,CAAC,EAAEsF,EAAE,UAAU,OAAU,UAAU,CAAC,KAAK,EAAE,GAAGD,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAIpC,EAAE,uCAAuC,EAAEgB,GAAG,IAAI,EAAEE,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,EAAE,OAAO,KAAK,EAAE,EAAE,OAAO,EAAEmB,EAAE,UAAU,UAAU,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAClgBA,EAAE,UAAU,YAAY,UAAU,CAAC,YAAK,EAAE,GAAGD,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAIpC,EAAE,uCAAuC,EAAEM,GAAE,KAAK,IAAI,EAAMA,GAAE,SAAN,GAAcE,IAAGA,GAAED,EAAE,EAAE,KAAK,EAAE,EAAE,GAAU,IAAI,EAAEuC,GAAE,UAAU,GAAG,SAAS/F,EAAE,CAAC,YAAK,KAAKA,EAAE,KAAK,GAAGA,CAAC,GAAUA,CAAC,EAAE+F,GAAE,UAAU,GAAG,SAAS/F,EAAE,CAAC,KAAK,GAAG,KAAK,EAAEA,CAAC,CAAC,EAAE+F,GAAE,UAAU,eAAe,EAAEA,GAAE,UAAU,qBAAqBlB,GAAGkB,GAAE,UAAU,aAAa,SAAS/F,EAAE,CAAWA,IAAP,MAASA,EAAE,OAAU,CAAC,EAC9Z+F,GAAE,UAAU,aAAa,SAAS/F,EAAE,CAAC,SAASC,GAAG,CAAC,OAAO,KAAK,GAAGwE,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,EAAE5D,EAAE,EAAE,KAAK,EAAEb,CAAC,CAAC,EAAEyE,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,EAAEzE,CAAC,CAAC,CAAC,CAAC,IAAIa,EAAE,KAAK,GAAGb,CAAC,EAAE,GAAG,CAACa,EAAE,OAAO,KAAK,GAAGb,CAAC,EAAE,KAAK,IAAIc,EAAEwD,GAAG,KAAK,EAAEzD,CAAC,EAAE,GAAYC,IAAT,OAAY,OAAOA,EAAE,EAAE,MAAM,QAAd,GAA2BA,EAAE,EAAE,EAAED,EAAEC,EAAE,EAAE,EAAEd,EAAEc,EAAE,MAAM,IAAEA,EAAEA,EAAE,MAAM,EAAE,KAAK,GAAGd,CAAC,EAASc,GAAyB,GAAvBA,EAAE,KAAK,EAAE,GAAGD,CAAC,EAAEC,EAAEuD,GAAGvD,CAAC,EAAK,CAACA,EAAE,OAAOb,EAAE,KAAK,IAAI,EAAEa,EAAE,KAAK,GAAGA,EAAE,GAAGA,EAAE,YAAY,IAAIC,EAAEqD,GAAGvD,EAAE,KAAK,EAAEC,EAAE,CAAC,EAAE,OAAcC,IAAP,KAASd,EAAE,KAAK,IAAI,EAAE,KAAK,GAAGwE,GAAG3D,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAEC,EAAE,EAAE,KAAK,EAAEf,CAAC,CAAC,EAAEyE,GAAG3D,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAEC,CAAC,CAAC,CAAC,EACveoF,GAAGtG,EAAE,iBAAiBkD,EAAG,kBAAkB,EAC3C,IAAIP,GAAe,OAAO,MAAnB,WAAwB,KAAK,SAASxC,EAAE,CAAC,IAAIC,EAAE,GAAGY,EAAE,EAAEb,EAAEA,EAAE,QAAQ,qBAAqB,EAAE,EAAE,EAAE,CAAC,IAAIc,EAAE,oEAAoE,QAAQd,EAAE,OAAOa,GAAG,CAAC,EAAME,EAAE,oEAAoE,QAAQf,EAAE,OAAOa,GAAG,CAAC,EAAMG,EAAE,oEAAoE,QAAQhB,EAAE,OAAOa,GAAG,CAAC,EAAMI,EAAE,oEAAoE,QAAQjB,EAAE,OAAOa,GAAG,CAAC,EAAEC,EAAEA,GAAG,EAAEC,GAAG,EACnfA,GAAGA,EAAE,KAAK,EAAEC,GAAG,EAAE,IAAIiE,GAAGjE,EAAE,IAAI,EAAEC,EAAEhB,GAAG,OAAO,aAAaa,CAAC,EAAOE,IAAL,KAASf,GAAG,OAAO,aAAac,CAAC,GAAQE,IAAL,KAAShB,GAAG,OAAO,aAAagF,CAAC,EAAE,OAAOpE,EAAEb,EAAE,QAAQ,OAAOC,CAAC,EAAEgI,GAAG,CAAC,EAAE,SAASjI,EAAEC,EAAEY,EAAEC,EAAE,CAACL,EAAE,sBAAsBT,EAAEY,EAAEQ,EAAEpB,CAAC,EAAE,IAAI,SAAS,CAACC,EAAEA,EAAEW,EAAEQ,EAAEnB,CAAC,EAAE,GAAG,mBAAmBY,EAAEC,EAAEA,EAAEF,EAAEQ,EAAEN,CAAC,EAAE,GAAG,kBAAkB,CAAC,CAAC,EAAE,EAAE,SAASd,EAAEC,EAAEY,EAAE,CAACb,EAAEsD,GAAEtD,CAAC,EAAEC,EAAE+D,GAAG/D,EAAE,SAAS,EAAEY,EAAEqC,GAAErC,CAAC,EAAE,IAAIC,EAAE,CAAC,EAAE,MAAMC,EAAEd,EAAE,EAAEe,EAAED,EAAE,EAAEE,EAAEF,EAAE,EAAE,EAAEkE,EAAElE,EAAE,EAAE,YAAYf,EAAE4C,GAAG5C,EAAE,UAAU,CAACe,EAAE,EAAE,GAAG,QAAQ,SAASuF,EAAE,CAAC,GAAG,KAAKA,CAAC,IAAIrF,EAAEqF,CAAC,EAAE,MAAM,IAAIlD,GAAG,yBACjekD,EAAE,oCAAoC,CAAE,EAAE,KAAK,IAAI,CAAC,EAAE,OAAO,eAAe,KAAK,WAAW,CAAC,MAAMtF,CAAC,CAAC,EAAE,KAAK,YAAY,MAAM,KAAKF,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAEE,EAAE,YAAY,UAAU,CAAC,OAAOA,GAAGiC,EAAE,oCAAoC,EAAE,IAAIqD,EAAErB,EAAE,UAAU,MAAM,OAAO,CAAC,IAAI,EAAE,OAAOnE,EAAE,KAAK,SAAS,CAAC,CAAC,EAAEmD,GAAGqC,CAAC,EAAE,IAAIC,EAAED,EAAE,EAAEA,EAAE,oBAAoB,EAAEC,EAAE,GAAG,GAAG,OAAO,iBAAiB,KAAK,CAAC,EAAE,CAAC,MAAMA,CAAC,CAAC,CAAC,EAAE7B,GAAE,IAAI,EAAE4B,EAAEC,EAAE,EAAED,EAAE3C,GAAG5C,EAAEuF,CAAC,EAAE5C,GAAE,eAAe4C,CAAC,EAAErD,EAAE,0CAA0CqD,CAAC,EAAE5C,GAAE4C,CAAC,EAAE,IAAI,EAAEtF,EAAE,WAAW,UAAU,CAAC,OAC9fA,GAAGiC,EAAE,mCAAmC,EAAEgB,GAAG,IAAI,EAAE,IAAIqC,EAAE,KAAK,EAAE,EAAEA,EAAE3C,GAAG5C,EAAEuF,CAAC,EAAE5C,GAAE,eAAe4C,CAAC,EAAE,OAAO5C,GAAE4C,CAAC,EAAErD,EAAE,8CAA8CqD,CAAC,CAAC,EAAEtG,EAAE,UAAU,OAAO,OAAOgB,CAAC,EAAE,QAAQkE,KAAKrE,EAAEb,EAAE,UAAUkF,CAAC,EAAErE,EAAEqE,CAAC,EAAE,OAAO/B,GAAGnD,CAAC,CAAC,EAAE,EAAE,SAASA,EAAE,CAAC,IAAIC,EAAE0E,GAAG3E,CAAC,EAAE,OAAO2E,GAAG3E,CAAC,EAAE,IAAIa,EAAEZ,EAAE,GAAGa,EAAEb,EAAE,EAAEc,EAAEd,EAAE,GAAGe,EAAED,EAAE,IAAIE,GAAGA,EAAE,EAAE,EAAE,OAAOF,EAAE,IAAIE,GAAGA,EAAE,EAAE,CAAC,EAAE+D,GAAE,CAAChF,CAAC,EAAEgB,EAAEC,GAAG,CAAC,IAAIgE,EAAE,CAAC,EAAE,OAAAlE,EAAE,QAAQ,CAACmE,EAAEoB,IAAI,CAAC,IAAIC,EAAEtF,EAAEqF,CAAC,EAAEE,EAAEtB,EAAE,GAAGuB,GAAEvB,EAAE,GAAGwB,GAAEzF,EAAEqF,EAAEvF,EAAE,MAAM,EAAE4F,GAAEzB,EAAE,GAAG0B,GAAE1B,EAAE,GAAGD,EAAEC,EAAE,EAAE,EAAE,CAAC,KAAK2B,IAAGN,EAAE,aAAaC,EAAEC,GAAEI,EAAC,CAAC,EAAE,MAAM,CAACA,GAAEqB,KAAK,CAAC,IAAIC,GAAE,CAAC,EAAExB,GAAEC,GACrfC,GAAEH,GAAE,WAAWyB,GAAED,EAAE,CAAC,EAAEtD,GAAGuD,EAAC,CAAC,CAAC,CAAC,CAAC,EAAQ,CAAC,CAAC,KAAKlI,EAAE,KAAK,aAAa,SAASiF,EAAE,CAAC,IAAIoB,EAAE,CAAC,EAAEC,EAAE,IAAIA,KAAKtB,EAAEqB,EAAEC,CAAC,EAAEtB,EAAEsB,CAAC,EAAE,KAAKrB,CAAC,EAAE,OAAApE,EAAEoE,CAAC,EAASoB,CAAC,EAAE,WAAW,SAASpB,EAAEoB,EAAE,CAAC,QAAQC,KAAKtB,EAAE,GAAG,EAAEsB,KAAKD,GAAG,MAAM,IAAI,UAAU,oBAAoBC,EAAE,GAAG,EAAE,IAAIC,EAAE3F,EAAE,EAAE,IAAI0F,KAAKtB,EAAEA,EAAEsB,CAAC,EAAE,MAAMC,EAAEF,EAAEC,CAAC,CAAC,EAAE,OAAOrB,IAAP,MAAUA,EAAE,KAAKpE,EAAE0F,CAAC,EAASA,CAAC,EAAE,eAAe,EAAE,qBAAqB3B,GAAG,EAAE/D,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,SAASd,EAAEC,EAAEY,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAEoE,EAAGvE,CAAC,EAAEZ,EAAEqD,GAAErD,CAAC,EAAEkF,EAAEnF,EAAE,CAAC,KAAKC,EAAE,aAAa,SAASgB,EAAE,CAAC,MAAM,CAAC,CAACA,CAAC,EAAE,WAAW,SAASA,EAAEgE,EAAE,CAAC,OAAOA,EAAEnE,EAAEC,CAAC,EAAE,eAAe,EAChgB,qBAAqB,SAASE,EAAE,CAAC,GAAOJ,IAAJ,EAAM,IAAIoE,EAAE9D,UAAeN,IAAJ,EAAMoE,EAAE5D,UAAcR,IAAJ,EAAMoE,EAAE1D,MAAO,OAAM,IAAI,UAAU,8BAA8BtB,CAAC,EAAE,OAAO,KAAK,aAAagF,EAAEhE,GAAGD,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,SAAShB,EAAEC,EAAEY,EAAEC,EAAEC,EAAEC,EAAEC,EAAEgE,EAAEC,EAAEoB,EAAEC,EAAEC,EAAEC,GAAE,CAACF,EAAEjD,GAAEiD,CAAC,EAAEvF,EAAEkF,GAAEnF,EAAEC,CAAC,EAAEiE,IAAIA,EAAEiB,GAAEjF,EAAEgE,CAAC,GAAGqB,IAAIA,EAAEJ,GAAEhB,EAAEoB,CAAC,GAAGG,GAAEP,GAAEM,EAAEC,EAAC,EAAE,IAAIC,GAAE/D,GAAG4D,CAAC,EAAEf,GAAGkB,GAAE,UAAU,CAACN,GAAG,oBAAoBG,EAAE,wBAAwB,CAACzF,CAAC,CAAC,CAAC,CAAC,EAAEkE,GAAE,CAAChF,EAAEC,EAAEY,CAAC,EAAEC,EAAE,CAACA,CAAC,EAAE,CAAC,EAAE,SAAS6F,GAAE,CAAQ,GAAPA,GAAEA,GAAE,CAAC,EAAK7F,EAAG,IAAI8F,GAAED,GAAE,EAAME,GAAED,GAAE,OAAOC,GAAEvB,EAAE,UAAUqB,GAAE/D,GAAG8D,GAAE,UAAU,CAAC,GAAG,OAAO,eAAe,IAAI,IAAIwB,GAAG,MAAM,IAAIlF,GAAE,0BAClgBuD,CAAC,EAAE,GAAY4B,GAAE,IAAX,OAAa,MAAM,IAAInF,GAAEuD,EAAE,gCAAgC,EAAE,IAAI6B,GAAGD,GAAE,EAAE,UAAU,MAAM,EAAE,GAAYC,KAAT,OAAY,MAAM,IAAIpF,GAAE,2BAA2BuD,EAAE,uCAAuC,UAAU,OAAO,iBAAiB,OAAO,KAAK4B,GAAE,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,OAAOC,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,EAAE,IAAIF,GAAG,OAAO,OAAOrB,GAAE,CAAC,YAAY,CAAC,MAAMF,EAAC,CAAC,CAAC,EAAEA,GAAE,UAAUuB,GAAG,IAAIC,GAAE,IAAI1C,GAAGc,EAAEI,GAAEuB,GAAGzB,GAAEG,GAAE5F,EAAEiE,EAAEqB,CAAC,EAAEM,GAAE,IAAIb,GAAEQ,EAAE4B,GAAE,GAAG,EAAE,EAAEtB,GAAE,IAAId,GAAEQ,EAAE,IAAI4B,GAAE,GAAG,EAAE,EAAE,IAAIE,GAAG,IAAItC,GAAEQ,EAAE,UAAU4B,GAAE,GAAG,EAAE,EAAE,OAAA9D,GAAGrE,CAAC,EAAE,CAAC,YAAY6G,GACrf,GAAGwB,EAAE,EAAErC,GAAGU,GAAEC,EAAC,EAAQ,CAACC,GAAEC,GAAEwB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,SAASrI,EAAEC,EAAEY,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAIgE,EAAE6B,GAAGjG,EAAEC,CAAC,EAAEb,EAAEqD,GAAErD,CAAC,EAAEe,EAAEkF,GAAEnF,EAAEC,CAAC,EAAEgE,GAAE,CAAC,EAAE,CAAChF,CAAC,EAAE,SAASkF,EAAE,CAAC,SAASoB,GAAG,CAACF,GAAG,eAAeG,EAAE,wBAAwBtB,CAAC,CAAC,CAACC,EAAEA,EAAE,CAAC,EAAE,IAAIqB,EAAErB,EAAE,KAAK,IAAIjF,EAAEA,EAAE,WAAW,IAAI,IAAIA,EAAE,OAAOA,EAAE,UAAU,CAAC,CAAC,GAAG,IAAIuG,EAAEtB,EAAE,EAAE,YAAY,OAASsB,EAAEvG,CAAC,IAAZ,QAAeqG,EAAE,EAAEzF,EAAE,EAAE2F,EAAEvG,CAAC,EAAEqG,IAAIf,GAAGiB,EAAEvG,EAAEsG,CAAC,EAAEC,EAAEvG,CAAC,EAAE,EAAEY,EAAE,CAAC,EAAEyF,GAAGtB,GAAE,CAAC,EAAEC,EAAE,SAASwB,GAAE,CAAC,OAAAA,GAAEJ,GAAGE,EAAE,CAACE,GAAE,CAAC,EAAE,IAAI,EAAE,OAAOA,GAAE,MAAM,CAAC,CAAC,EAAE,KAAKzF,EAAEC,CAAC,EAAWuF,EAAEvG,CAAC,EAAE,IAAd,QAAiBwG,GAAE,EAAE5F,EAAE,EAAE2F,EAAEvG,CAAC,EAAEwG,IAAGD,EAAEvG,CAAC,EAAE,EAAEY,EAAE,CAAC,EAAE4F,GAAQ,CAAC,CAAC,CAAC,EAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,SAASzG,EAAEC,EAAEY,EAAEC,EAAEC,EAAEC,EAAE,CAAC,EAAEf,GAAGQ,EAAE,EAAE,IAAIQ,EAAE6F,GAAG7G,EACrfY,CAAC,EAAEE,EAAEmF,GAAEpF,EAAEC,CAAC,EAAEiE,GAAE,CAAC,EAAE,CAAChF,CAAC,EAAE,SAASiF,EAAE,CAACA,EAAEA,EAAE,CAAC,EAAE,IAAIC,EAAE,eAAeD,EAAE,KAAgC,GAAlBA,EAAE,EAAE,IAAb,SAAiBA,EAAE,EAAE,EAAE,CAAC,GAAeA,EAAE,EAAE,EAAEhF,EAAE,CAAC,IAAlB,OAAoB,MAAM,IAAI+C,GAAE,+EAA+E/C,EAAE,GAAG,gBAAgBgF,EAAE,KAAK,qGAAqG,EAAE,OAAAA,EAAE,EAAE,EAAEhF,EAAE,CAAC,EAAE,IAAI,CAACmG,GAAG,oBAAoBnB,EAAE,KAAK,wBAAwBhE,CAAC,CAAC,EAAE+D,GAAE,CAAC,EAAE/D,EAAE,SAASqF,EAAE,CAAC,OAAAA,EAAE,OAAO,EAAE,EAAE,IAAI,EAAErB,EAAE,EAAE,EAAEhF,EAAE,CAAC,EAAEoG,GAAGnB,EAAEoB,EAAE,KAAKvF,EAAEC,CAAC,EAAQ,CAAC,CAAC,CAAC,EAAQ,CAAC,CAAC,CAAC,CAAC,EACrf,EAAE,SAAShB,EAAEC,EAAEY,EAAEC,EAAEC,EAAEC,EAAEC,EAAEgE,EAAE,CAAC,IAAIC,EAAE4B,GAAGjG,EAAEC,CAAC,EAAEb,EAAEqD,GAAErD,CAAC,EAAEe,EAAEkF,GAAEnF,EAAEC,CAAC,EAAEgE,GAAE,CAAC,EAAE,CAAChF,CAAC,EAAE,SAASsG,EAAE,CAAC,SAASC,GAAG,CAACH,GAAG,eAAeI,EAAE,wBAAwBtB,CAAC,CAAC,CAACoB,EAAEA,EAAE,CAAC,EAAE,IAAIE,EAAEF,EAAE,KAAK,IAAIrG,EAAEA,EAAE,WAAW,IAAI,IAAIA,EAAE,OAAOA,EAAE,UAAU,CAAC,CAAC,GAAGgF,GAAGqB,EAAE,EAAE,GAAG,KAAKrG,CAAC,EAAE,IAAIwG,GAAEH,EAAE,EAAE,EAAEI,GAAED,GAAExG,CAAC,EAAE,OAASyG,KAAT,QAAqBA,GAAE,IAAX,QAAcA,GAAE,YAAYJ,EAAE,MAAMI,GAAE,IAAI7F,EAAE,GAAG0F,EAAE,EAAE1F,EAAE,EAAE0F,EAAE,UAAUD,EAAE,KAAKG,GAAExG,CAAC,EAAEsG,IAAIhB,GAAGkB,GAAExG,EAAEuG,CAAC,EAAEC,GAAExG,CAAC,EAAE,EAAEY,EAAE,CAAC,EAAE0F,GAAGvB,GAAE,CAAC,EAAEE,EAAE,SAASyB,GAAE,CAAC,OAAAA,GAAEN,GAAGG,EAAEG,GAAEL,EAAEtF,EAAEC,CAAC,EAAWwF,GAAExG,CAAC,EAAE,IAAd,QAAiB0G,GAAE,EAAE9F,EAAE,EAAE4F,GAAExG,CAAC,EAAE0G,IAAGF,GAAExG,CAAC,EAAE,EAAEY,EAAE,CAAC,EAAE8F,GAAQ,CAAC,CAAC,CAAC,EAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS3G,EAAEC,EAAE,CAACA,EAAEqD,GAAErD,CAAC,EAAEkF,EAAEnF,EACnf,CAAC,KAAKC,EAAE,aAAa,SAASY,EAAE,CAAC,IAAIC,EAAEoC,GAAErC,CAAC,EAAE,OAAAkG,GAAGlG,CAAC,EAASC,CAAC,EAAE,WAAW,SAASD,EAAEC,EAAE,CAAC,OAAOqC,GAAGrC,CAAC,CAAC,EAAE,eAAe,EAAE,qBAAqB+D,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,SAAS7E,EAAEC,EAAEY,EAAE,CAACA,EAAEuE,EAAGvE,CAAC,EAAEZ,EAAEqD,GAAErD,CAAC,EAAEkF,EAAEnF,EAAE,CAAC,KAAKC,EAAE,aAAa,SAASa,EAAE,CAAC,OAAOA,CAAC,EAAE,WAAW,SAASA,EAAEC,EAAE,CAAC,OAAOA,CAAC,EAAE,eAAe,EAAE,qBAAqBiG,GAAG/G,EAAEY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,SAASb,EAAEC,EAAEY,EAAEC,EAAEC,EAAE,CAACd,EAAEqD,GAAErD,CAAC,EAAOc,IAAL,KAASA,EAAE,YAAYA,EAAEqE,EAAGvE,CAAC,EAAE,IAAIG,EAAEiE,GAAGA,EAAE,GAAOnE,IAAJ,EAAM,CAAC,IAAIG,EAAE,GAAG,EAAEJ,EAAEG,EAAEiE,GAAGA,GAAGhE,IAAIA,CAAC,CAACJ,EAAEZ,EAAE,SAAS,UAAU,EAAE,SAASgF,EAAEC,EAAE,CAAC,OAAOA,IAAI,CAAC,EAAE,SAASD,EAAEC,EAAE,CAAC,OAAOA,CAAC,EACxfC,EAAEnF,EAAE,CAAC,KAAKC,EAAE,aAAae,EAAE,WAAWH,EAAE,eAAe,EAAE,qBAAqBoG,GAAGhH,EAAEc,EAAMD,IAAJ,CAAK,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,SAASd,EAAEC,EAAEY,EAAE,CAAC,SAASC,EAAEE,EAAE,CAACA,IAAI,EAAE,IAAIC,EAAEO,EAAE,OAAO,IAAIT,EAAEG,EAAGD,EAAED,EAAE,CAAC,EAAEC,EAAED,CAAC,CAAC,CAAC,CAAC,IAAID,EAAE,CAAC,UAAU,WAAW,WAAW,YAAY,WAAW,YAAY,aAAa,YAAY,EAAEd,CAAC,EAAEY,EAAEyC,GAAEzC,CAAC,EAAEsE,EAAEnF,EAAE,CAAC,KAAKa,EAAE,aAAaC,EAAE,eAAe,EAAE,qBAAqBA,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,SAASd,EAAEC,EAAE,CAACA,EAAEqD,GAAErD,CAAC,EAAE,IAAIY,EAAkBZ,IAAhB,cAAkBkF,EAAEnF,EAAE,CAAC,KAAKC,EAAE,aAAa,SAASa,EAAE,CAAC,IAAIC,EAAES,EAAEV,GAAG,CAAC,EAAEE,EAAEF,EAAE,EAAE,GAAGD,EAAE,QAAQI,EAAED,EAAEiE,EAAE,EAAEA,GAAGlE,EAAE,EAAEkE,EAAE,CAAC,IAAIC,EACzflE,EAAEiE,EAAE,GAAGA,GAAGlE,GAAMK,EAAE8D,CAAC,GAAN,EAAQ,CAAmB,GAAlBjE,EAAEA,EAAEL,EAAEQ,EAAEH,EAAEiE,EAAEjE,CAAC,EAAE,GAAeqF,IAAT,OAAW,IAAIA,EAAErF,OAAOqF,GAAG,OAAO,aAAa,CAAC,EAAEA,GAAGrF,EAAEA,EAAEiE,EAAE,CAAC,CAAC,KAAK,CAAY,IAAXoB,EAAE,MAAMvF,CAAC,EAAMkE,EAAE,EAAEA,EAAElE,EAAE,EAAEkE,EAAEqB,EAAErB,CAAC,EAAE,OAAO,aAAa7D,EAAEJ,EAAEiE,CAAC,CAAC,EAAEqB,EAAEA,EAAE,KAAK,EAAE,CAAC,CAAC,OAAAvC,GAAEjD,CAAC,EAASwF,CAAC,EAAE,WAAW,SAASxF,EAAEC,EAAE,CAACA,aAAa,cAAcA,EAAE,IAAI,WAAWA,CAAC,GAAG,IAAIC,EAAEC,EAAY,OAAOF,GAAjB,SAAkJ,GAA/HE,GAAGF,aAAa,YAAYA,aAAa,mBAAmBA,aAAa,WAAWkC,EAAE,uCAAuC,EAAKpC,GAAGI,EAAE,CAAC,IAAIgE,EAAE,EAAE,IAAIjE,EAAE,EAAEA,EAAED,EAAE,OAAO,EAAEC,EAAE,CAAC,IAAIkE,EAAEnE,EAAE,WAAWC,CAAC,EAAE,KAAKkE,EAAED,IAAI,MACnfC,EAAED,GAAG,EAAE,OAAOC,GAAG,OAAOA,GAAGD,GAAG,EAAE,EAAEjE,GAAGiE,GAAG,CAAC,CAACjE,EAAEiE,CAAC,MAAMjE,EAAED,EAAE,OAAmC,GAA5BkE,EAAEqD,GAAG,EAAEtH,EAAE,CAAC,EAAEkE,EAAED,EAAE,EAAEzD,EAAEyD,GAAG,CAAC,EAAEjE,EAAKH,GAAGI,GAAG,GAAGA,EAAEiE,EAAEA,EAAElE,EAAE,EAAEA,EAAEI,EAAE,EAAE8D,EAAE,CAACA,EAAEjE,EAAEiE,EAAE,EAAE,QAAQoB,EAAE,EAAEA,EAAEvF,EAAE,OAAO,EAAEuF,EAAE,CAAC,IAAIC,EAAExF,EAAE,WAAWuF,CAAC,EAAE,GAAG,OAAOC,GAAG,OAAOA,EAAE,CAAC,IAAIC,EAAEzF,EAAE,WAAW,EAAEuF,CAAC,EAAEC,EAAE,QAAQA,EAAE,OAAO,IAAIC,EAAE,IAAI,CAAC,GAAG,KAAKD,EAAE,CAAC,GAAGtF,GAAGiE,EAAE,MAAMlE,EAAEC,GAAG,EAAEsF,CAAC,KAAK,CAAC,GAAG,MAAMA,EAAE,CAAC,GAAGtF,EAAE,GAAGiE,EAAE,MAAMlE,EAAEC,GAAG,EAAE,IAAIsF,GAAG,CAAC,KAAK,CAAC,GAAG,OAAOA,EAAE,CAAC,GAAGtF,EAAE,GAAGiE,EAAE,MAAMlE,EAAEC,GAAG,EAAE,IAAIsF,GAAG,EAAE,KAAK,CAAC,GAAGtF,EAAE,GAAGiE,EAAE,MAAMlE,EAAEC,GAAG,EAAE,IAAIsF,GAAG,GAAGvF,EAAEC,GAAG,EAAE,IAAIsF,GAAG,GAAG,EAAE,CAACvF,EAAEC,GAAG,EAAE,IAAIsF,GAAG,EAAE,EAAE,CAACvF,EAAEC,GAAG,EAAE,IAAIsF,EAAE,EAAE,CAAC,CAACvF,EAAEC,CAAC,EAAE,CAAC,UAAUA,EAAE,IAAIA,EAC1f,EAAEA,EAAED,EAAE,EAAEC,EAAEqF,EAAEvF,EAAE,WAAWE,CAAC,EAAE,IAAIqF,IAAIvC,GAAEmB,CAAC,EAAEjC,EAAE,wDAAwD,GAAG7B,EAAE8D,EAAEjE,CAAC,EAAEqF,MAAO,KAAIrF,EAAE,EAAEA,EAAED,EAAE,EAAEC,EAAEG,EAAE8D,EAAEjE,CAAC,EAAEF,EAAEE,CAAC,EAAE,OAAOH,IAAP,MAAUA,EAAE,KAAKiD,GAAEkB,CAAC,EAASA,CAAC,EAAE,eAAe,EAAE,qBAAqBJ,GAAG,EAAE,SAAS/D,EAAE,CAACiD,GAAEjD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,SAASd,EAAEC,EAAEY,EAAE,CAAQ,GAAPA,EAAEyC,GAAEzC,CAAC,EAASZ,IAAJ,EAAO,IAAIa,EAAEoG,GAAOnG,EAAEoG,GAAOnG,EAAEoG,GAAOnG,EAAE,IAAIK,EAAO2D,EAAE,OAAWhF,IAAJ,IAAQa,EAAEuG,GAAGtG,EAAEuG,GAAGtG,EAAEuG,GAAGtG,EAAE,IAAIO,EAAEyD,EAAE,GAAGE,EAAEnF,EAAE,CAAC,KAAKa,EAAE,aAAa,SAASqE,EAAE,CAAC,QAAQoB,EAAE9E,EAAE0D,GAAG,CAAC,EAAEqB,EAAEtF,EAAE,EAAEuF,EAAEC,GAAEvB,EAAE,EAAEwB,GAAE,EAAEA,IAAGJ,EAAE,EAAEI,GAAE,CAAC,IAAIC,GAAEzB,EAAE,EAAEwB,GAAEzG,GAAKyG,IAAGJ,GAAMC,EAAEI,IAAG1B,CAAC,GAAT,KAAWwB,GAAE3F,EAAE2F,GAAEE,GAAEF,EAAC,EAC1eD,IAD4e,OAC1eA,EAAEC,IAAGD,GAAG,OAAO,aAAa,CAAC,EAAEA,GAAGC,IAAGA,GAAEE,GAAE1G,EAAC,CAAC,OAAA8D,GAAEmB,CAAC,EAASsB,CAAC,EAAE,WAAW,SAAStB,EAAEoB,EAAE,CAAW,OAAOA,GAAjB,UAAoBrD,EAAE,6CAA6CpC,CAAC,EAAE,IAAI0F,EAAEvF,EAAEsF,CAAC,EAAEE,EAAE8B,GAAG,EAAE/B,EAAEtG,CAAC,EAAE,OAAAuB,EAAEgF,GAAG,CAAC,EAAED,GAAGtB,EAAElE,EAAEuF,EAAEE,EAAE,EAAED,EAAEtG,CAAC,EAASiF,IAAP,MAAUA,EAAE,KAAKnB,GAAEyC,CAAC,EAASA,CAAC,EAAE,eAAe,EAAE,qBAAqB3B,GAAG,EAAE,SAASK,EAAE,CAACnB,GAAEmB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,SAASlF,EAAEC,EAAEY,EAAEC,EAAEC,EAAEC,EAAE,CAAC2D,GAAG3E,CAAC,EAAE,CAAC,KAAKsD,GAAErD,CAAC,EAAE,GAAGiG,GAAErF,EAAEC,CAAC,EAAE,EAAEoF,GAAEnF,EAAEC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,SAAShB,EAAEC,EAAEY,EAAEC,EAAEC,EAAEC,EAAEC,EAAEgE,EAAEC,EAAEoB,EAAE,CAAC3B,GAAG3E,CAAC,EAAE,GAAG,KAAK,CAAC,GAAGsD,GAAErD,CAAC,EAAE,GAAGY,EAAE,GAAGqF,GAAEpF,EAAEC,CAAC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGiF,GAAEjB,EAAEC,CAAC,EAAE,GAAGoB,CAAC,CAAC,CAAC,EAAE,EAAE,SAAStG,EAAEC,EAAE,CAACA,EAAEqD,GAAErD,CAAC,EAAEkF,EAAEnF,EAAE,CAAC,GAAG,GAAG,KAAKC,EACzf,eAAe,EAAE,aAAa,UAAU,CAAC,EAAE,WAAW,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,SAASD,EAAEC,EAAEY,EAAEC,EAAEC,EAAE,CAACf,EAAE0H,GAAG1H,CAAC,EAAEC,EAAEiD,GAAEjD,CAAC,EAAEY,EAAE4G,GAAG5G,CAAC,EAAE,IAAIG,EAAE,CAAC,EAAE,OAAAQ,EAAEV,GAAG,CAAC,EAAEqC,GAAGnC,CAAC,EAAShB,EAAEC,EAAEY,EAAEG,EAAED,CAAC,CAAC,EAAE,EAAE,SAASf,EAAEC,EAAEY,EAAEC,EAAE,CAACd,EAAE0H,GAAG1H,CAAC,EAAEC,EAAEiD,GAAEjD,CAAC,EAAEY,EAAE4G,GAAG5G,CAAC,EAAEb,EAAEC,EAAEY,EAAE,KAAKC,CAAC,CAAC,EAAE,EAAEiG,GAAG,EAAE,SAAS/G,EAAEC,EAAE,CAAC,IAAIY,EAAE+G,GAAG5H,EAAEC,CAAC,EAAEa,EAAED,EAAE,CAAC,EAAEZ,EAAEa,EAAE,KAAK,KAAKD,EAAE,MAAM,CAAC,EAAE,IAAI,SAASI,EAAE,CAAC,OAAOA,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE,IAAI,IAAIF,EAAE8G,GAAG5H,CAAC,EAAE,GAAYc,IAAT,OAAW,OAAOA,EAAE,IAAIC,EAAE,MAAMhB,EAAE,CAAC,EAAE,OAAAe,EAAE4G,GAAG,CAAC1G,EAAEgE,EAAEC,EAAEoB,IAAI,CAAC,QAAQC,EAAE,EAAEC,EAAE,EAAEA,EAAExG,EAAE,EAAE,EAAEwG,EAAExF,EAAEwF,CAAC,EAAE3F,EAAE2F,EAAE,CAAC,EAAE,qBAAqBF,EAAEC,CAAC,EAAEA,GAAG1F,EAAE2F,EAAE,CAAC,EAAE,eACpd,IADmevF,EAAEA,EAAEgE,CAAC,EAAE,MAAMhE,EACnfD,CAAC,EAAMwF,EAAE,EAAEA,EAAExG,EAAE,EAAE,EAAEwG,EAAE3F,EAAE2F,EAAE,CAAC,EAAE,IAAI3F,EAAE2F,EAAE,CAAC,EAAE,GAAGxF,EAAEwF,CAAC,CAAC,EAAE,GAAG,CAAC1F,EAAE,GAAG,OAAOA,EAAE,WAAWoE,EAAEjE,CAAC,CAAC,CAAC,EAAS4G,GAAG5H,CAAC,EAAEc,CAAC,EAAE,EAAE,SAASf,EAAE,CAAC,EAAEA,IAAI6C,GAAE7C,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAASA,EAAE,CAAC,IAAIC,EAAEiD,GAAElD,CAAC,EAAE4E,GAAG3E,CAAC,EAAE8G,GAAG/G,CAAC,CAAC,EAAE,EAAE,UAAU,CAACS,EAAE,EAAE,CAAC,EAAE,EAAE,SAAST,EAAEC,EAAEY,EAAE,CAACO,EAAE,WAAWpB,EAAEC,EAAEA,EAAEY,CAAC,CAAC,EAAE,EAAE,SAASb,EAAE,CAAC,IAAIC,EAAEmB,EAAE,OAAc,GAAPpB,KAAK,EAAK,WAAWA,EAAE,MAAM,GAAG,QAAQa,EAAE,EAAE,GAAGA,EAAEA,GAAG,EAAE,CAAC,IAAIC,EAAEb,GAAG,EAAE,GAAGY,GAAGC,EAAE,KAAK,IAAIA,EAAEd,EAAE,SAAS,EAAE,IAAIe,EAAE,KAAKD,EAAE,KAAK,IAAId,EAAEc,CAAC,EAAEC,EAAEA,EAAE,IAAI,KAAKA,EAAE,WAAWD,GAAG,MAAMA,EAAE,OAAO,KAAK,EAAEd,EAAE,CAAC,GAAG,CAACU,EAAG,KAAKK,EAAEG,EAAG,WAAW,QAAQ,EAAE,EAAES,EAAG,EAAE,IAAIX,EAAE,EAAE,MAAMhB,CAAC,MAAC,CAAS,CAACgB,EAC/f,MAAM,CAAC,GAAGA,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,MAAO,GAAE,EAAE,EAAE,UAAU,CAAC,MAAO,GAAE,EAAE,EAAE,SAAShB,EAAEC,EAAEY,EAAEC,EAAE,CAAC,QAAQC,EAAE,EAAEC,EAAE,EAAEA,EAAEH,EAAEG,IAAI,CAAC,IAAIC,EAAEO,EAAEvB,GAAG,CAAC,EAAEgF,EAAEzD,EAAEvB,EAAE,GAAG,CAAC,EAAEA,GAAG,EAAE,QAAQiF,EAAE,EAAEA,EAAED,EAAEC,IAAI,CAAC,IAAIoB,EAAElF,EAAEH,EAAEiE,CAAC,EAAEqB,EAAEuB,GAAG9H,CAAC,EAAMsG,IAAJ,GAAYA,IAAL,KAAatG,IAAJ,EAAMK,EAAGC,GAAGM,EAAE2F,EAAE,CAAC,CAAC,EAAEA,EAAE,OAAO,GAAGA,EAAE,KAAKD,CAAC,CAAC,CAACvF,GAAGkE,CAAC,CAAC,OAAAzD,EAAEV,GAAG,CAAC,EAAEC,EAAS,CAAC,CAAC,GACtR,UAAU,CAAC,SAASf,EAAEe,EAAE,CAAClB,EAAE,IAAIkB,EAAE,QAAQL,EAAGb,EAAE,IAAI,EAAE8B,EAAG,EAAEC,EAAG/B,EAAE,IAAI,EAAEiC,EAAG,QAAQjC,EAAE,IAAI,CAAC,EAAEoC,KAAIpC,EAAE,wBAAwBA,EAAE,uBAAuBoC,EAAC,EAAKA,IAAH,IAAcC,KAAP,OAAY,cAAcA,EAAE,EAAEA,GAAG,MAAMC,KAAIpB,EAAEoB,GAAEA,GAAE,KAAKpB,EAAE,GAAG,CAAC,SAASd,EAAEc,EAAE,CAACf,EAAEe,EAAE,QAAQ,CAAC,CAAC,SAASF,EAAEE,EAAE,CAAC,OAAO0B,GAAG,EAAE,KAAK,SAASzB,EAAE,CAAC,OAAOA,aAAa,YAAY,SAAWA,EAAI,YAAY,YAAYA,EAAEF,CAAC,CAAC,CAAC,EAAE,KAAK,SAASE,EAAE,CAAC,OAAOA,CAAC,CAAC,EAAE,KAAKD,EAAE,SAASC,EAAE,CAACV,EAAE,0CAA0CU,CAAC,EAAEP,EAAEO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIF,EAAE,CAAC,EAAEmH,EAAE,EAA4D,GAA1DhG,KAAIpC,EAAE,wBAAwBA,EAAE,uBAAuBoC,EAAC,EAAKpC,EAAE,gBAAgB,GAAG,CAAC,OAAOA,EAAE,gBAAgBiB,EACzkBd,CAAC,CAAC,OAAOe,EAAN,CAAST,EAAE,sDAAsDS,CAAC,EAAEhB,EAAGgB,CAAC,CAAC,CAAC,OAAC,UAAU,CAAC,OAAOR,GAAe,OAAO,YAAY,sBAA/B,YAAqD6B,GAAGC,EAAC,GAAe,OAAO,OAAnB,WAAyBxB,EAAEZ,CAAC,EAAE,MAAMoC,GAAE,CAAC,YAAY,aAAa,CAAC,EAAE,KAAK,SAAStB,EAAE,CAAC,OAAO,YAAY,qBAAqBA,EAAED,CAAC,EAAE,KAAKb,EAAE,SAASe,EAAE,CAAC,OAAAV,EAAE,kCAAkCU,CAAC,EAAEV,EAAE,2CAA2C,EAASO,EAAEZ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAG,EAAE,MAAMF,CAAE,EAAQ,CAAC,CAAC,GAAG,EAClbF,EAAE,mBAAmB,UAAU,CAAC,OAAOA,EAAE,mBAAmBA,EAAE,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,EAAE,IAAIiE,GAAGjE,EAAE,eAAe,UAAU,CAAC,OAAOiE,GAAGjE,EAAE,eAAeA,EAAE,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,EAAEA,EAAE,6BAA6B,UAAU,CAAC,OAAOA,EAAE,6BAA6BA,EAAE,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,EAAE,IAAIyI,GAAGzI,EAAE,QAAQ,UAAU,CAAC,OAAOyI,GAAGzI,EAAE,QAAQA,EAAE,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,EAAEkE,GAAElE,EAAE,MAAM,UAAU,CAAC,OAAOkE,GAAElE,EAAE,MAAMA,EAAE,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,EAC9bA,EAAE,aAAa,UAAU,CAAC,OAAOA,EAAE,aAAaA,EAAE,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,EAAE,IAAI0I,GAAGpG,GAAE,SAASqG,GAAI,CAACD,IAAIE,GAAG,EAAEF,KAAKpG,GAAEqG,EAAG,EAC1H,SAASC,IAAI,CAAC,SAASzI,GAAG,CAAC,GAAG,CAACuI,KAAKA,GAAG,GAAG1I,EAAE,UAAU,GAAG,CAACc,GAAI,CAAiE,GAAhE+B,GAAGZ,CAAE,EAAEhC,EAAGD,CAAC,EAAKA,EAAE,sBAAqBA,EAAE,qBAAqB,EAAKA,EAAE,QAAQ,IAAgB,OAAOA,EAAE,SAArB,aAA+BA,EAAE,QAAQ,CAACA,EAAE,OAAO,GAAGA,EAAE,QAAQ,QAAQ,CAAC,IAAII,EAAEJ,EAAE,QAAQ,MAAM,EAAEkC,GAAG,QAAQ9B,CAAC,CAAC,CAACyC,GAAGX,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAEE,IAAG,CAAC,GAAGpC,EAAE,OAAO,IAAgB,OAAOA,EAAE,QAArB,aAA8BA,EAAE,OAAO,CAACA,EAAE,MAAM,GAAGA,EAAE,OAAO,QAAQmC,GAAG,EAAEU,GAAGb,CAAE,EAAE,EAAEI,KAAIpC,EAAE,WAAWA,EAAE,UAAU,YAAY,EAAE,WAAW,UAAU,CAAC,WAAW,UAAU,CAACA,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAEG,EAAE,CAAC,EAAE,CAAC,GAAGA,EAAE,EAAE,CAAC,CAC7e,GAAGH,EAAE,QAAQ,IAAgB,OAAOA,EAAE,SAArB,aAA+BA,EAAE,QAAQ,CAACA,EAAE,OAAO,GAAG,EAAEA,EAAE,QAAQ,QAAQA,EAAE,QAAQ,IAAI,EAAE,EAAE,OAAA4I,GAAG,EAEvG7I,EAAS,KAClB,CAlEA,IAAIQ,GAAJsI,GAAAC,GAAA,KAAIvI,GAAa,KCUjB,eAAmBwI,GAAMC,EAAA,CACzB,GAAOC,CAAAA,QAAYC,CAAM,EAWvB,KAAOD,6DAtBT,IAAAE,GAAAC,GAAA,KASAC,YCTA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,aAAAE,GAAA,SAAAC,KA2BA,eAAeC,GACbC,EACAC,EACoD,CACpD,IAAIC,EAYJ,GATE,OAAOF,GAAU,UAChB,OAAO,SAAY,YAAcA,aAAiB,SAClD,OAAO,KAAQ,YAAcA,aAAiB,IAE/CE,EAAS,MAAM,MAAMF,CAAK,EAE1BE,EAAS,MAAMF,EAGb,OAAO,UAAa,YAAcE,aAAkB,SAAU,CAChE,GAAI,OAAO,YAAY,sBAAyB,WAC9C,GAAI,CACF,OAAO,MAAM,YAAY,qBAAqBA,EAAQD,CAAO,CAC/D,OAASE,EAAP,CACID,EAAO,QAAQ,IAAI,cAAc,IAAM,oBACzC,QAAQ,KACN,oMACAC,CACF,CAEJ,CAGF,IAAMC,EAAQ,MAAMF,EAAO,YAAY,EACvC,OAAO,MAAM,YAAY,YAAYE,EAAOH,CAAO,CACrD,CAEA,IAAMI,EAAgB,MAAM,YAAY,YACtC,WAAYH,EACRA,EAAO,OAAO,MACZA,EAAO,WACPA,EAAO,WAAaA,EAAO,UAC7B,EACAA,EACJD,CACF,EAEA,OAAII,aAAwB,YAAY,SAC/B,CAAE,SAAUA,EAAc,OAAQH,CAA6B,EAGjEG,CACT,CAEO,SAASP,GAAKE,EAAkB,CACrCM,GAAS,CACP,gBAAgBL,EAASM,EAAiB,CACxC,OAAAR,GAASC,EAAOC,CAAO,EACpB,KAAK,CAAC,CAAE,SAAAO,CAAS,IAAM,CACtBD,EAAgBC,CAAQ,CAC1B,CAAC,EACA,MAAMC,EAAU,EAEZ,CAAC,CACV,CACF,CAAC,EACE,KAAKC,EAAW,EAChB,MAAMD,EAAU,CACrB,CAEO,SAASZ,IAAU,CACxB,OAAOc,EACT,CAhGA,IAEML,GAQFI,GACAD,GACEE,GAZNC,GAAAC,GAAA,KAAAC,KAEMR,GAAWA,GAUXK,GAA6B,IAAI,QAAQ,CAACI,EAASC,IAAW,CAClEN,GAAcK,EACdN,GAAaO,CACf,CAAC,ICfD,IAAAC,GAAAC,EAAAC,IAAA,cACA,OAAO,eAAeA,GAAS,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,GAAS,UAAW,CACtC,WAAY,GACZ,IAAK,IAAIC,EACb,CAAC,EACD,SAASA,GAASC,EAAO,CAErB,GADAA,EAAQ,GAAGA,CAAK,GACZA,IAAU,IACV,MAAO,IAGX,GAAI,4CAA4C,KAAKA,CAAK,EACtD,OAAOA,EAAM,QAAQ,SAAWC,GAAOA,IAAS,IAAM,GAAK,GAAG,EAElE,GAAID,EAAM,SAAS,MAAM,GAAKA,EAAM,SAAS,OAAO,EAChD,MAAO,QAAQA,CAAK,QAE5B,ICpBA,IAAAE,GAAAC,EAAAC,IAAA,cACA,OAAO,eAAeA,GAAS,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,GAAS,UAAW,CACtC,WAAY,GACZ,IAAK,IAAIC,EACb,CAAC,EACD,IAAMA,GAAW,CACb,YACA,YACA,gBACA,gBACA,aACA,WACA,QACA,YACA,SACA,QACA,aACA,kBACA,gBACA,UACA,eACA,aACA,QACA,QACA,SACA,YACA,UACA,cACA,SACA,YACA,YACA,QACA,WACA,WACA,OACA,aACA,WACA,YACA,cACA,iBACA,gBACA,kBACA,YACA,SACA,OACA,QACA,YACA,YACA,SACA,cACA,aACA,SACA,iBACA,kBACA,iBACA,eACA,gBACA,oBACA,gBACA,aACA,UACA,cACA,cACA,aACA,kBACA,eACA,eACA,sBACA,mBACA,gBACA,WACA,eACA,aACA,eACA,aACA,iBACA,eACA,MACA,QACA,cACA,cACA,cACA,gBACA,YACA,YACA,cACA,WACA,qBACA,iBACA,eACA,aACA,YACA,eACA,cACA,cACA,cACA,gBACA,kBACA,oBACA,kBACA,qBACA,qBACA,iBACA,uBACA,iBACA,qBACA,mBACA,mBACA,OACA,SACA,cACA,YACA,iBACA,UACA,YACA,aACA,gBACA,aACA,WACA,aACA,gBACA,YACA,qBACA,aACA,gBACA,YACA,cACA,iBACA,sBACA,sBACA,0BACA,sBACA,gBACA,mBACA,qBACA,aACA,cACA,UACA,sBACA,eACA,YACA,iBACA,eACA,eACA,gBACA,eACA,YACA,YACA,cACA,kBACA,kBACA,OACA,aACA,WACA,aACA,YACA,YACA,SACA,WACA,QACA,SACA,eACA,qBACA,mBACA,oBACA,oBACA,iBACA,kBACA,mBACA,gBACA,iBACA,qBACA,kBACA,qBACA,2BACA,aACA,SACJ,ICpLA,IAAAC,GAAAC,EAAAC,IAAA,cACA,OAAO,eAAeA,GAAS,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,GAAS,UAAW,CACtC,WAAY,GACZ,IAAK,IAAIC,EACb,CAAC,EACD,SAASA,GAASC,EAAcC,EAAS,CACrC,OAAID,IAAiB,OACVC,EAES,MAAM,QAAQD,CAAY,EAAIA,EAAe,CAC7D,GAAG,IAAI,IAAIC,EAAQ,OAAQC,GAChBF,IAAiB,IAASA,EAAaE,CAAU,IAAM,EACjE,EAAE,OAAO,OAAO,KAAKF,CAAY,EAAE,OAAQE,GACjCF,EAAaE,CAAU,IAAM,EACvC,CAAC,CAAC,CACP,CAEJ,ICpBA,IAAA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","names":["Align","BoxSizing","Dimension","Direction","Display","Edge","Errata","ExperimentalFeature","FlexDirection","Gutter","Justify","LogLevel","MeasureMode","NodeType","Overflow","PositionType","Unit","Wrap","constants","YGEnums_default","init_YGEnums","__esmMin","ALIGN_AUTO","Auto","ALIGN_FLEX_START","FlexStart","ALIGN_CENTER","Center","ALIGN_FLEX_END","FlexEnd","ALIGN_STRETCH","Stretch","ALIGN_BASELINE","Baseline","ALIGN_SPACE_BETWEEN","SpaceBetween","ALIGN_SPACE_AROUND","SpaceAround","ALIGN_SPACE_EVENLY","SpaceEvenly","BOX_SIZING_BORDER_BOX","BorderBox","BOX_SIZING_CONTENT_BOX","ContentBox","DIMENSION_WIDTH","Width","DIMENSION_HEIGHT","Height","DIRECTION_INHERIT","Inherit","DIRECTION_LTR","LTR","DIRECTION_RTL","RTL","DISPLAY_FLEX","Flex","DISPLAY_NONE","None","DISPLAY_CONTENTS","Contents","EDGE_LEFT","Left","EDGE_TOP","Top","EDGE_RIGHT","Right","EDGE_BOTTOM","Bottom","EDGE_START","Start","EDGE_END","End","EDGE_HORIZONTAL","Horizontal","EDGE_VERTICAL","Vertical","EDGE_ALL","All","ERRATA_NONE","ERRATA_STRETCH_FLEX_BASIS","StretchFlexBasis","ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING","AbsolutePositionWithoutInsetsExcludesPadding","ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE","AbsolutePercentAgainstInnerSize","ERRATA_ALL","ERRATA_CLASSIC","Classic","EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS","WebFlexBasis","FLEX_DIRECTION_COLUMN","Column","FLEX_DIRECTION_COLUMN_REVERSE","ColumnReverse","FLEX_DIRECTION_ROW","Row","FLEX_DIRECTION_ROW_REVERSE","RowReverse","GUTTER_COLUMN","GUTTER_ROW","GUTTER_ALL","JUSTIFY_FLEX_START","JUSTIFY_CENTER","JUSTIFY_FLEX_END","JUSTIFY_SPACE_BETWEEN","JUSTIFY_SPACE_AROUND","JUSTIFY_SPACE_EVENLY","LOG_LEVEL_ERROR","Error","LOG_LEVEL_WARN","Warn","LOG_LEVEL_INFO","Info","LOG_LEVEL_DEBUG","Debug","LOG_LEVEL_VERBOSE","Verbose","LOG_LEVEL_FATAL","Fatal","MEASURE_MODE_UNDEFINED","Undefined","MEASURE_MODE_EXACTLY","Exactly","MEASURE_MODE_AT_MOST","AtMost","NODE_TYPE_DEFAULT","Default","NODE_TYPE_TEXT","Text","OVERFLOW_VISIBLE","Visible","OVERFLOW_HIDDEN","Hidden","OVERFLOW_SCROLL","Scroll","POSITION_TYPE_STATIC","Static","POSITION_TYPE_RELATIVE","Relative","POSITION_TYPE_ABSOLUTE","Absolute","UNIT_UNDEFINED","UNIT_POINT","Point","UNIT_PERCENT","Percent","UNIT_AUTO","WRAP_NO_WRAP","NoWrap","WRAP_WRAP","WRAP_WRAP_REVERSE","WrapReverse","wrapAssembly","lib","patch","prototype","name","fn","original","_len","arguments","length","args","Array","_key","call","fnName","methods","Unit","Point","Node","Percent","Auto","_len2","_key2","value","pop","unit","asNumber","undefined","valueOf","endsWith","parseFloat","Number","isNaN","Error","wrapMeasureFunction","measureFunction","MeasureCallback","implement","measure","width","height","NaN","measureFunc","unsetMeasureFunc","wrapDirtiedFunc","dirtiedFunction","DirtiedCallback","dirtied","dirtiedFunc","Config","destroy","_","config","createWithConfig","createDefault","t","T","getChildCount","getChild","freeRecursive","free","direction","Direction","LTR","YGEnums","init_wrapAssembly","__esmMin","init_YGEnums","yoga_wasm_esm_exports","__export","yoga_wasm_esm_default","loadYoga","h","aa","ca","a","b","da","q","_scriptDir","ea","v","w","noExitRuntime","x","fa","ha","z","c","d","e","f","g","ia","ja","A","C","ka","D","E","la","ma","na","oa","pa","qa","ra","sa","F","ta","G","ua","H","va","wa","xa","ya","za","Aa","Ba","J","Ca","Da","K","L","M","Ea","Fa","Ga","N","O","Ha","P","Q","Ia","R","Ja","Ka","S","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","T","Va","Wa","Xa","U","Ya","V","k","m","W","Za","$a","X","ab","bb","cb","db","eb","fb","gb","hb","Y","ib","jb","Z","mb","nb","ob","l","n","p","r","u","t","y","B","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Jb","ba","I","kb","lb","Ib","Kb","Lb","Mb","init_yoga_wasm_esm","__esmMin","loadYoga","wasmOptions","wrapAssembly","loadYogaImpl","init_load","__esmMin","init_wrapAssembly","yoga_external_exports","__export","getYoga","init","loadWasm","input","imports","source","e","bytes","instantiated","loadYoga","successCallback","instance","rejectYoga","resolveYoga","yogaPromise","init_yoga_external","__esmMin","init_load","resolve","reject","require_negateValue","__commonJSMin","exports","_default","value","sign","require_corePluginList","__commonJSMin","exports","_default","require_configurePlugins","__commonJSMin","exports","_default","pluginConfig","plugins","pluginName","require_defaultConfig_stub","__commonJSMin","exports","module","colors","theme","breakpoints","log_exports","__export","log_default","init_log","__esmMin","key","messages","require_colors","__commonJSMin","exports","_default","_log","_interopRequireDefault","obj","warn","version","from","to","require_defaults","__commonJSMin","exports","defaults","target","sources","source","k","ref","k1","ref1","require_toPath","__commonJSMin","exports","toPath","path","openBrackets","closedBrackets","require_normalizeConfig","__commonJSMin","exports","normalizeConfig","_log","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","obj","cache","newObj","hasPropertyDescriptor","key","desc","config","path","value","value1","ref","content","purge","safelist","_prefix","extract","ref1","ref2","ref3","ref4","ref5","ref6","ref7","ref8","ref9","extractors","defaultExtractor","extensions","extractor","extension","transform","transformers","file","require_isPlainObject","__commonJSMin","exports","isPlainObject","value","prototype","require_cloneDeep","__commonJSMin","exports","cloneDeep","value","child","k","v","require_unesc","__commonJSMin","exports","module","unesc","gobbleHex","str","lower","hex","spaceTerminated","code","valid","codePoint","isSurrogate","CONTAINS_ESCAPE","needToProcess","ret","i","gobbled","require_getProp","__commonJSMin","exports","module","getProp","obj","_len","props","_key","prop","require_ensureObject","__commonJSMin","exports","module","ensureObject","obj","_len","props","_key","prop","require_stripComments","__commonJSMin","exports","module","stripComments","str","s","commentStart","lastEnd","commentEnd","require_util","__commonJSMin","exports","_unesc","_interopRequireDefault","_getProp","_ensureObject","_stripComments","obj","require_node","__commonJSMin","exports","module","_util","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","cloneNode","obj","parent","cloned","value","type","j","Node","opts","_proto","index","overrides","name","valueEscaped","originalValue","originalEscaped","line","column","rawSpace","raw","require_types","__commonJSMin","exports","TAG","STRING","SELECTOR","ROOT","PSEUDO","NESTING","ID","COMMENT","COMBINATOR","CLASS","ATTRIBUTE","UNIVERSAL","require_container","__commonJSMin","exports","module","_node","_interopRequireDefault","types","_interopRequireWildcard","_getRequireWildcardCache","cache","obj","newObj","hasPropertyDescriptor","key","desc","_createForOfIteratorHelperLoose","o","allowArrayLike","it","_unsupportedIterableToArray","i","minLen","_arrayLikeToArray","arr","len","arr2","_defineProperties","target","props","descriptor","_createClass","Constructor","protoProps","staticProps","_inheritsLoose","subClass","superClass","_setPrototypeOf","p","Container","_Node","opts","_this","_proto","selector","index","child","id","_iterator","_step","node","oldNode","newNode","oldIndex","line","col","found","foundChild","callback","result","_this2","_this3","_this4","_this5","_this6","_this7","_this8","_this9","_this10","_this11","current","memo","split","require_root","__commonJSMin","exports","module","_container","_interopRequireDefault","_types","obj","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Root","_Container","opts","_this","_proto","str","memo","selector","message","options","handler","require_selector","__commonJSMin","exports","module","_container","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Selector","_Container","opts","_this","require_cssesc","__commonJSMin","exports","module","object","hasOwnProperty","merge","options","defaults","result","key","regexAnySingleEscape","regexSingleEscape","regexExcessiveSpaces","cssesc","string","quote","isIdentifier","firstChar","output","counter","length","character","codePoint","value","extra","$0","$1","$2","require_className","__commonJSMin","exports","module","_cssesc","_interopRequireDefault","_util","_node","_types","obj","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","ClassName","_Node","opts","_this","_proto","v","escaped","require_comment","__commonJSMin","exports","module","_node","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Comment","_Node","opts","_this","require_id","__commonJSMin","exports","module","_node","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","ID","_Node","opts","_this","_proto","require_namespace","__commonJSMin","exports","module","_cssesc","_interopRequireDefault","_util","_node","obj","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Namespace","_Node","_proto","value","namespace","escaped","ns","require_tag","__commonJSMin","exports","module","_namespace","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Tag","_Namespace","opts","_this","require_string","__commonJSMin","exports","module","_node","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","String","_Node","opts","_this","require_pseudo","__commonJSMin","exports","module","_container","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Pseudo","_Container","opts","_this","_proto","params","require_deprecate","__commonJSMin","exports","module","fn","message","args","require_attribute","__commonJSMin","exports","unescapeValue","_cssesc","_interopRequireDefault","_unesc","_namespace","_types","_CSSESC_QUOTE_OPTIONS","obj","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","deprecate","WRAPPED_IN_QUOTES","warnOfDeprecatedValueAssignment","warnOfDeprecatedQuotedAssignment","warnOfDeprecatedConstructor","value","deprecatedUsage","quoteMark","unescaped","m","handleDeprecatedContructorOpts","opts","_unescapeValue","Attribute","_Namespace","_this","_proto","options","cssescopts","CSSESC_QUOTE_OPTIONS","escaped","v","numSingleQuotes","numDoubleQuotes","pref","quote","quoteValue","rawValue","prop","name","attrSpaces","spaces","rawSpaces","spaceName","concat","defaultAttrConcat","count","attributeSpaces","operatorSpaces","operator","valueSpaces","insensitiveSpaces","_this2","selector","attrValue","qm","_unescapeValue2","require_universal","__commonJSMin","exports","module","_namespace","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Universal","_Namespace","opts","_this","require_combinator","__commonJSMin","exports","module","_node","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Combinator","_Node","opts","_this","require_nesting","__commonJSMin","exports","module","_node","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Nesting","_Node","opts","_this","require_sortAscending","__commonJSMin","exports","module","sortAscending","list","a","b","require_tokenTypes","__commonJSMin","exports","ampersand","asterisk","at","comma","colon","semicolon","openParenthesis","closeParenthesis","openSquare","closeSquare","dollar","tilde","caret","plus","equals","pipe","greaterThan","space","singleQuote","doubleQuote","slash","bang","backslash","cr","feed","newline","tab","str","comment","word","combinator","require_tokenize","__commonJSMin","exports","tokenize","t","_interopRequireWildcard","_unescapable","_wordDelimiters","_getRequireWildcardCache","cache","obj","newObj","hasPropertyDescriptor","key","desc","unescapable","wordDelimiters","hex","hexChars","i","consumeWord","css","start","next","code","consumeEscape","hexDigits","FIELDS","input","tokens","_css","length","offset","line","end","content","endColumn","endLine","escaped","escapePos","last","lines","nextLine","nextOffset","quote","tokenType","unclosed","what","fix","require_parser","__commonJSMin","exports","module","_root","_interopRequireDefault","_selector","_className","_comment","_id","_tag","_string","_pseudo","_attribute","_interopRequireWildcard","_universal","_combinator","_nesting","_sortAscending","_tokenize","tokens","types","_util","_WHITESPACE_TOKENS","_Object$assign","_getRequireWildcardCache","cache","obj","newObj","hasPropertyDescriptor","key","desc","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","WHITESPACE_TOKENS","WHITESPACE_EQUIV_TOKENS","tokenStart","token","tokenEnd","getSource","startLine","startColumn","endLine","endColumn","getTokenSource","getTokenSourceSpan","startToken","endToken","unescapeProp","node","prop","value","indexesOf","array","item","indexes","uniqs","list","Parser","rule","options","rootSource","selector","_proto","_this","message","errorOptions","attr","startingToken","len","pos","spaceBefore","commentBefore","lastAdded","spaceAfterMeaningfulToken","content","next","prevContent","existingComment","rawValue","oldRawValue","_rawValue","_unescaped","_oldRawValue","oldValue","insensitive","_unescapeValue","unescaped","quoteMark","lastComment","rawLastComment","lastValue","rawLastValue","stopPosition","startPosition","nodes","space","spaces","firstToken","lastToken","requiredSpace","_this2","rawSpace","n","rawSpaceBefore","result","position","nameRaw","name","raws","_this3","nextSigTokenPos","last","_this$convertWhitespa","spaceOrDescendantSelectorNodes","_this$convertWhitespa2","_space","_rawSpace","_this$convertWhitespa3","_space2","_rawSpace2","current","opts","before","nextContent","unbalanced","parenStart","parenValue","parenEnd","_this4","pseudoStr","first","length","namespace","nextToken","firstCallback","_this5","word","hasClass","escapedDot","isKeyframesPercent","hasId","interpolations","hashIndex","indices","ind","index","sourceIndex","source","classNameOpts","idOpts","tagOpts","throwOnParenthesis","description","found","an","required","searchPosition","require_processor","__commonJSMin","exports","module","_parser","_interopRequireDefault","obj","Processor","func","options","_proto","rule","merged","parser","_this","resolve","reject","root","transform","string","e","result","require_constructors","__commonJSMin","exports","_attribute","_interopRequireDefault","_className","_combinator","_comment","_id","_nesting","_pseudo","_root","_selector","_string","_tag","_universal","obj","attribute","opts","className","combinator","comment","id","nesting","pseudo","root","selector","string","tag","universal","require_guards","__commonJSMin","exports","isNode","isPseudoElement","isPseudoClass","isContainer","isNamespace","_types","_IS_TYPE","IS_TYPE","node","isNodeType","type","isAttribute","isClassName","isCombinator","isComment","isIdentifier","isNesting","isPseudo","isRoot","isSelector","isString","isTag","isUniversal","require_selectors","__commonJSMin","exports","_types","key","_constructors","_guards","require_dist","__commonJSMin","exports","module","_processor","_interopRequireDefault","selectors","_interopRequireWildcard","_getRequireWildcardCache","cache","obj","newObj","hasPropertyDescriptor","key","desc","parser","processor","_default","require_escapeCommas","__commonJSMin","exports","escapeCommas","className","require_color_name","__commonJSMin","exports","module","require_color","__commonJSMin","exports","_export","target","all","name","parseColor","formatColor","_colorName","_interopRequireDefault","obj","HEX","SHORT_HEX","VALUE","SEP","ALPHA_SEP","CUSTOM_PROPERTY","RGB","HSL","value","loose","ref","ref1","v","hex","_","r","g","b","a","ref2","match","color","part","mode","alpha","hasAlpha","require_withAlphaVariable","__commonJSMin","exports","_export","target","all","name","withAlphaValue","withAlphaVariable","_color","color","alphaValue","defaultValue","parsed","property","variable","properties","p","require_regex","__commonJSMin","exports","_export","target","all","name","pattern","withoutCapturing","any","optional","zeroOrMore","nestedBrackets","escape","REGEX_SPECIAL","REGEX_HAS_SPECIAL","toSource","source","item","sources","open","close","depth","string","require_splitAtTopLevelOnly","__commonJSMin","exports","splitAtTopLevelOnly","_regex","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","obj","cache","newObj","hasPropertyDescriptor","key","desc","input","separator","SPECIALS","depth","lastIndex","found","separatorIndex","separatorStart","separatorLength","match","matchesSeparator","atEndOfSeparator","matchesFullSeparator","require_parseBoxShadowValue","__commonJSMin","exports","_export","target","all","name","parseBoxShadowValue","formatBoxShadowValue","_splitAtTopLevelOnly","KEYWORDS","SPACE","LENGTH","input","shadow","value","result","parts","seen","part","shadows","require_dataTypes","__commonJSMin","exports","_export","target","all","name","normalize","url","number","percentage","length","lineWidth","shadow","color","image","gradient","position","familyName","genericName","absoluteSize","relativeSize","_color","_parseBoxShadowValue","cssFunctions","COMMA","UNDERSCORE","value","isRoot","part","fullMatch","characterBefore","match","fn","lengthUnits","lengthUnitsPattern","lineWidths","parsedShadows","parsedShadow","colors","images","gradientTypes","type","validPositions","positions","fonts","genericNames","absoluteSizes","relativeSizes","require_pluginUtils","__commonJSMin","exports","_export","target","all","name","updateAllClasses","asValue","parseColorFormat","asColor","asLookupValue","coerceValue","_postcssSelectorParser","_interopRequireDefault","_escapeCommas","_withAlphaVariable","_dataTypes","_negateValue","obj","selectors","updateClass","sel","updatedClass","resolveArbitraryValue","modifier","validate","isArbitraryValue","value","asNegativeValue","lookup","positiveValue","resolved","options","ref","input","splitAlpha","slashIdx","oldValue","opacityValue","tailwindConfig","ref1","color","alpha","ref2","ref3","ref4","ref5","normalizedColor","guess","typeMap","supportedTypes","splitAtFirst","delim","idx","types","arbitraryValue","explicitType","type","result","require_toColorValue","__commonJSMin","exports","toColorValue","maybeFunction","require_resolveConfig","__commonJSMin","exports","resolveConfig","_negateValue","_interopRequireDefault","_corePluginList","_configurePlugins","_defaultConfigStub","_colors","_defaults","_toPath","_normalizeConfig","_isPlainObject","_cloneDeep","_pluginUtils","_withAlphaVariable","_toColorValue","obj","isFunction","input","isObject","mergeWith","target","sources","customizer","source","k","merged","configUtils","scale","key","negativeScale","negativeValue","screens","breakpoints","value","valueToResolve","args","collectExtends","items","extend","mergedValue","extendValue","mergeThemes","themes","theme","mergeExtensionCustomizer","mergeExtensions","themeValue","extensions","resolveThemePath","utils","e","toPaths","path","pattern","matches","prefix","alpha","newPath","resolveFunctionKeys","object","resolvePath","defaultValue","index","val","normalized","resolved","extractPluginConfigs","configs","allConfigs","config","ref","plugins","plugin","resolveCorePlugins","corePluginConfigs","corePluginConfig","resolvePluginLists","pluginLists","pluginList","ref1","t","c","picocolors_exports","__export","picocolors_default","init_picocolors","__esmMin","s","require_featureFlags","__commonJSMin","exports","_export","target","all","name","flagEnabled","issueFlagNotices","_default","_picocolors","_interopRequireDefault","_log","obj","defaults","featureFlags","config","flag","ref","ref1","ref2","ref3","ref4","ref5","experimentalFlagsEnabled","changes","s","require_getAllConfigs","__commonJSMin","exports","getAllConfigs","_defaultConfigStubJs","_interopRequireDefault","_featureFlags","obj","config","ref","configs","preset","features","experimentals","feature","require_resolve_config","__commonJSMin","exports","resolveConfig","_resolveConfig","_interopRequireDefault","_getAllConfigs","obj","configs","defaultConfigs","require_resolveConfig","__commonJSMin","exports","module","resolveConfig","src_exports","__export","satori","init","__toCommonJS","import_linebreak","e","t","r","u","k","g","a","z","v","c","L","w","h","$","y","m","j","b","q","f","p","l","d","s","x","o","O","F","U","E","D","i","isReactElement","node","type","isClass","f","isForwardRefComponent","isReactComponent","hasDangerouslySetInnerHTMLProp","props","normalizeChildren","children","flattend","res","i","value","lengthToNumber","length","baseFontSize","baseLength","inheritedStyle","percentage","parsed","U","calcDegree","deg","multiply","m1","m2","v","field","map","fallback","errorIfNotAllowedForProperty","_v","wordSegmenter","graphemeSegmenter","wordSeparators","point","segmentCache","MAX_SEGMENT_CACHE_SIZE","segment","content","granularity","locale","cacheKey","result","seg","segmented","output","s","previousWord","nextWord","firstKey","buildXMLString","attrs","attrString","k","createLRU","max","store","get","key","set","clear","parseViewBox","viewBox","isString","x","isNumber","isUndefined","asPointPercentageLength","propertyName","percentageValue","asPointAutoPercentageLength","splitByBreakOpportunities","content","wordBreak","segment","breaker","LineBreaker","last","bk","words","requiredBreaks","word","midline","s","_","letter","splitEffects","input","separator","result","l","parenCount","i","init","input","mod","getYoga","AVIF","WEBP","APNG","PNG","JPEG","GIF","SVG","parseJPEG","buf","view","offset","len","next","parseGIF","parsePNG","v","cache","createLRU","inflightRequests","ALLOWED_IMAGE_TYPES","SVG_ATTRS_REGEX","VIEWBOX_REGEX","WIDTH_REGEX","HEIGHT_REGEX","arrayBufferToBase64","buffer","bytes","CHUNK_SIZE","binary","chunk","base64ToArrayBuffer","base64","binaryString","parseSvgImageSize","src","data","svgMatch","svgTag","viewBoxMatch","widthMatch","heightMatch","viewBox","parseViewBox","size","ratio","arrayBufferToDataUri","imageSize","imageType","detectContentType","resolveImageData","newSrc","decodedURI","encodingType","dataString","utf8Src","base64Src","cached","url","promise","res","type","e","result","err","b","i","detectAPNG","dv","length","off","isAPNG","chars","ATTRIBUTE_MAPPING","SVGSymbols","translateSVGNodeToSVGString","node","inheritedColor","n","type","children","style","restProps","currentColor","attrs","k","_v","cache","styles","midline","preProcessNode","set","walk","_node","isReactElement","v","imageSrc","c","s","resolveImageData","SVGNodeToImage","viewBox","viewbox","width","height","className","viewBoxSize","parseViewBox","ratio","DEFAULT_DISPLAY","presets_default","list","inheritable","style","inheritedStyle","prop","import_css_to_react_native","import_css_background_parser","import_css_box_shadow","import_parse_css_color","import_postcss_value_parser","parseUnit","word","baseFontSize","parsed","U","handleWord","unitIsHorizontal","parsedUnit","parseTransformOrigin","value","words","valueParser","node","import_css_to_react_native","getMaskProperty","style","name","key","parseMask","maskImage","common","splitEffects","v","m","import_postcss_value_parser","extractCustomProperties","style","variables","remainingStyle","prop","mergeVariables","inherited","current","resolveVariables","value","visitedVars","parsed","valueParser","hasChanges","node","args","extractVarArgs","varName","fallback","replaceNode","variableValue","newVisitedVars","resolvedValue","resolvedFallback","varNameNode","commaIndex","child","fallbackNodes","optOutPx","keepNumber","handleFallbackColor","prop","parsed","rawInput","currentColor","purify","name","value","num","handleSpecialCase","_v","horizontal","vertical","vh","vv","k","resolved","purified","v","full","p","parseBoxShadow","symbols","replaced","_","symbol","t","result","shadows","splitEffects","shadow","styles","values","normalized","getErrorHint","RGB_SLASH","normalizeColor","r","g","b","a","expand","style","inheritedStyle","serializedStyle","inheritedVariables","currentVariables","processableStyle","variables","remainingStyle","extractCustomProperties","mergedVariables","mergeVariables","varName","resolvedColor","resolveVariables","getCurrentColor","resolvedValue","preprocess","resolvedStyle","err","backgrounds","parseMask","baseFontSize","calcBaseFontSize","parseTransformOrigin","lengthToNumber","len","color","transforms","transform","type","textShadowRadius","textShadowOffset","height","width","size","inheritedSize","U","refineHSL","cssColorParse","h","s","l","inheritedColor","convertCurrentColorToActualValue","isString","compute","node","type","inheritedStyle","definedStyle","props","Yoga","getYoga","style","expand","presets_default","resolvedSrc","imageWidth","imageHeight","resolveImageData","r","extraHorizontal","extraVertical","contentBoxWidth","contentBoxHeight","isAbsoluteContentSize","viewBox","viewBoxSize","parseViewBox","ratio","width","height","lengthToNumber","v","asPointAutoPercentageLength","asPointPercentageLength","inheritable","import_escape_html","baseMatrix","resolveTransforms","transforms","width","height","matrix","transform","type","v","len","transformMatrix","rad","c","s","multiply","left","top","isInheritingTransform","transformOrigin","result","xOrigin","yOrigin","x","y","container","left","top","width","height","isInheritingTransform","style","matrix","opacity","transform","buildText","id","content","filter","image","clipPathId","debug","shape","decorationShape","extra","buildXMLString","shapeProps","escapeHTML","shiftPath","path","dx","dy","_","command","x","y","SCALE","buildDropShadow","id","width","height","style","transparentText","shadowCount","effects","merge","left","right","top","bottom","i","grow","resultId","buildXMLString","boxShadow","shape","opacity","shadow","innerShadow","s","shadowStyle","sid","maskId","shapeWithSpread","finalShape","buildSkipInkSegments","start","end","glyphBoxes","y","strokeWidth","baseline","halfStroke","bleed","skipRanges","box","from","to","last","segments","cursor","buildDecoration","width","left","top","ascender","clipPathId","matrix","style","textDecorationColor","textDecorationStyle","textDecorationLine","textDecorationSkipInk","fontSize","color","height","dasharray","applySkipInk","extraLine","x1","x2","buildXMLString","stringFromCode","code","Space","Tab","HorizontalEllipsis","genMeasurer","engine","isImage","style","fontSize","letterSpacing","cache","measureGrapheme","grapheme","width","measureGraphemeArray","graphemes","measureText","text","segment","preprocess","content","style","locale","textTransform","whiteSpace","wordBreak","processTextTransform","processedContent","shouldCollapseTabsAndSpaces","allowSoftWrap","processWhiteSpace","words","requiredBreaks","allowBreakWord","processWordBreak","lineLimit","blockEllipsis","processTextOverflow","segment","word","grapheme","index","textOverflow","lineClamp","WebkitLineClamp","WebkitBoxOrient","overflow","display","HorizontalEllipsis","parseLineClamp","isNumber","splitByBreakOpportunities","shouldKeepLinebreak","Space","input","regex1","regex2","match1","match2","number","text","import_parse_css_color","skippedWordWhenFindingMissingFont","Tab","shouldSkipWhenFindingMissingFont","word","isFullyTransparent","color","parsed","cssColorParse","isOpaqueWhite","r","g","b","a","buildTextNodes","content","context","Yoga","getYoga","parentStyle","inheritedStyle","parent","font","id","isInheritingTransform","debug","embedFont","graphemeImages","locale","canLoadAdditionalAssets","textAlign","textIndent","lineHeight","textWrap","fontSize","cssFilter","tabSize","letterSpacing","_inheritedBackgroundClipTextPath","_inheritedBackgroundClipTextHasBackground","flexShrink","words","requiredBreaks","allowSoftWrap","allowBreakWord","processedContent","shouldCollapseTabsAndSpaces","lineLimit","blockEllipsis","preprocess","textContainer","createTextContainerNode","isUndefined","engine","wordsMissingFont","segment","isImage","s","measureGrapheme","measureGraphemeArray","measureText","genMeasurer","tabWidth","isString","lengthToNumber","Space","calc","text","currentWidth","index","tabCount","detectTabs","originWidth","textBeforeTab","textAfterTab","textWidthBeforeTab","offsetBeforeTab","afterTrimEndWidth","lineWidths","baselines","lineSegmentNumber","texts","wordPositionInLayout","flow","width","lines","maxWidth","lineIndex","height","currentLineHeight","currentBaselineOffset","i","prevLineEndingSpacesWidth","forceBreak","w","endingSpacesWidth","_word","lineEndingSpacesWidth","allowedToJustify","willWrap","chars","glyphHeight","x","_texts","j","_text","_width","_isImage","measuredTextSize","containerWidth","l","m","mHeight","adjustedWidth","result","y","backgroundClipDef","clipPathId","overflowMaskId","containerLeft","containerTop","containerHeight","textIndentNumber","parentContainerInnerWidth","left","top","matrix","opacity","container","filter","textShadowColor","textShadowOffset","textShadowRadius","buildDropShadow","buildXMLString","decorationShape","mergedPath","extra","skippedLine","decorationLines","decorationGlyphs","wordBuffer","bufferedOffset","layout","nextLayout","path","isLastDisplayedBeforeEllipsis","image","topOffset","leftOffset","line","shouldCollectDecorationBoxes","extendedWidth","remainingWidth","segments","gutter","baselineOfLine","baselineOfWord","heightOfWord","baselineDelta","buildUnderlineBand","offset","calcEllipsis","baseWidth","subset","resolvedWidth","char","ellipsisWidth","_blockEllipsis","HorizontalEllipsis","spaceWidth","isNotLastLine","nextLineText","wordSeparators","finalizedSegment","finalizedLeftOffset","finalizedWidth","band","svg","t","shape","buildText","deco","glyphBoxes","buildDecoration","p","v","import_css_gradient_parser","import_parse_css_color","normalizeStops","totalLength","colorStops","inheritedStyle","repeating","from","stops","lastColorStop","totalPercentage","stop","color","offset","lengthToNumber","lastStop","previousStop","nextStop","i","cssColorParse","buildLinearGradient","id","width","height","repeatX","repeatY","image","dimensions","offsets","inheritableStyle","from","parsed","imageWidth","imageHeight","repeating","points","length","xys","resolveXYFromDirection","l","p","calcNormalPoint","calcDegree","calcPercentage","stops","normalizeStops","resolveRepeatingCycle","gradientId","patternId","defs","buildXMLString","stop","last","offset","dir","x1","y1","x2","y2","v","w","h","tmp","a","b","dfs","angle","p1","lengthToNumber","p2","sx","sy","ex","ey","import_css_gradient_parser","buildRadialGradient","id","width","height","repeatX","repeatY","image","dimensions","offsets","inheritableStyle","from","_a","shape","colorStops","position","size","repeating","xDelta","yDelta","cx","cy","pos","calcRadialGradient","colorStopTotalLength","calcColorStopTotalLength","stops","normalizeStops","gradientId","patternId","maskId","spread","calcRadius","props","calcRadialGradientProps","defs","buildXMLString","stop","lastStop","lengthToNumber","baseFontSize","style","calcPos","key","dir","r","rx","ratio","last","radius","endingShape","centerAxis","length","fx","fy","isSizeAllLength","v","patchSpread","f2r","mfx","mfy","mrx","mry","mr","ry","s","import_parse_css_color","toAbsoluteValue","v","base","calculateKeywordSize","keyword","containerWidth","containerHeight","imageWidth","imageHeight","scaleX","scaleY","scale","parts","widthPart","heightPart","finalWidth","finalHeight","parsedHeight","parsedWidth","parseLengthPairs","str","x","y","defaultX","defaultY","value","parsed","U","index","backgroundImage","id","width","height","left","top","image","size","position","repeat","inheritableStyle","from","repeatX","repeatY","isKeywordSize","isGradient","dimensions","offsets","buildLinearGradient","buildRadialGradient","src","resolveImageData","resolvedWidth","resolvedHeight","calcWidth","calcHeight","dimensionsWithoutFallback","buildXMLString","cssColorParse","colorObj","r","g","b","a","color","svgArcCenterOffset","rx","ry","resolveSize","a","b","limit","makeSmaller","arr","resolveRadius","v","width","height","fontSize","style","sides","s","singleValue","lengthToNumber","radiusZeroOrNull","_radius","getBorderRadiusClipPath","id","borderRadiusPath","borderType","left","top","rectClipId","buildXMLString","radius","partialSides","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","singleAbsValueTopLeftCorner","singleAbsValueTopRightCorner","singleAbsValueBottomLeftCorner","singleAbsValueBottomRightCorner","p","R","B","L","getArc","i","c0","start","result","arc0","l","len","end","arc1","compareBorderDirections","a","b","style","getBorderClipPath","id","currentClipPathId","borderPath","borderType","left","top","width","height","rectClipId","buildXMLString","border","props","asContentMask","maskBorderOnly","directions","direction","fullBorder","start","partialSides","currentStyle","_i","i","ni","d","nd","w","radius","contentMask","id","left","top","width","height","matrix","borderOnly","style","offsetLeft","offsetTop","offsetRight","offsetBottom","contentArea","buildXMLString","border","import_css_to_react_native","regexMap","createShapeParser","width","height","style","inheritedStyle","parseCircle","str","res","value","radius","pos","v","x","resolvePosition","lengthToNumber","parseEllipse","rx","ry","y","parsePath","fillRule","d","resolveFillRule","parsePolygon","points","k","i","parseInset","inset","radiusMap","r","s","offsets","w","h","position","xDelta","yDelta","genClipPathId","id","genClipPath","buildClipPath","v","style","inheritedStyle","parser","createShapeParser","clipPath","tmp","k","type","rest","buildXMLString","overflow","left","top","width","height","path","matrix","id","currentClipPath","src","style","inheritableStyle","overflowClipPath","clipPath","buildClipPath","_id","genClipPathId","buildXMLString","contentMask","genMaskImageId","id","buildMaskImage","v","style","inheritedStyle","left","top","width","height","maskImage","length","miId","mask","i","_id","def","backgroundImage","buildXMLString","parseObjectPosition","position","containerWidth","containerHeight","parts","keywordToPercent","keyword","axis","xValue","yValue","part","first","second","parseValue","value","containerSize","parsed","U","rect","id","left","top","width","height","isInheritingTransform","src","debug","style","inheritableStyle","isImage","type","matrix","defs","fills","opacity","extra","transform","backgroundShapes","backgrounds","index","background","image","backgroundImage","miId","mi","buildMaskImage","maskId","path","radius","clipPathId","buildXMLString","backgroundClip","cssFilter","currentClipPath","genClipPath","clip","overflow","shape","fill","borderClip","getBorderClipPath","imageBorderRadius","offsetLeft","offsetTop","offsetRight","offsetBottom","containerInnerWidth","containerInnerHeight","objPosX","objPosY","naturalWidth","naturalHeight","preserveAspectRatio","imageWidth","imageHeight","imageX","imageY","scaleX","scaleY","scale","minScale","getBorderRadiusClipPath","rectClipId","border","shadow","boxShadow","r","e","emoji_regex_xs_default","emojiRegex","emoji_regex_xs_default","specialCode","code","locales","isValidLocale","x","detectLanguageCode","segment","locale","c","languages","lang","index","normalizeLocale","l","layout","element","context","_a","Yoga","getYoga","id","inheritedStyle","parent","font","debug","locale","embedFont","graphemeImages","canLoadAdditionalAssets","getTwStyles","isReactElement","isReactComponent","iter","buildTextNodes","isClass","render","isForwardRefComponent","offset","$type","props","type","hasDangerouslySetInnerHTMLProp","style","children","tw","_newLocale","newLocale","normalizeLocale","twStyles","node","computedStyle","newInheritableStyle","compute","isInheritingTransform","mutateRefValue","normalizedChildren","normalizeChildren","iterators","i","segmentsMissingFont","child","x","y","left","top","width","height","childrenRenderResult","baseRenderResult","depsRenderResult","childrenNode","restProps","src","rect","currentColor","SVGNodeToImage","display","buildXMLString","import_opentype","SUFFIX_WHEN_LANG_NOT_SET","flattenPath","commands","segments","start","current","addCurve","points","steps","prev","i","t","next","evaluateBezier","cmd","working","computeBandBox","band","strokeWidth","bandMin","bandMax","bandHeight","ySamples","yStep","yStart","columnHits","y","intersections","seg","x1","y1","x2","y2","yMin","yMax","x","a","b","j","from","to","end","col","columns","inkRanges","rangeStart","boxes","bleed","minX","maxX","left","right","compareFont","weight","style","matchedWeight","matchedStyle","nextWeight","nextStyle","cachedParsedFont","FontLoader","fontOptions","name","fonts","matchedFont","i","weight1","style1","weight2","style2","fontOption","data","lang","isValidLocale","locales","_lang","SUFFIX_WHEN_LANG_NOT_SET","font","opentype","originalCharToGlyphIndex","char","index","_name","fontSize","lineHeight","fontFamily","fontWeight","fontStyle","locale","face","getNormal","getUnknown","keys","specifiedLangFonts","nonSpecifiedLangFonts","additionalFonts","getLangFromFontName","cachedFontResolver","resolveFont","word","fallback","_fonts","code","_font","ascender","resolvedFont","useOS2Table","_a","_b","descender","height","_lineGap","resolve","s","asc","desc","contentHeight","band","brokenChars","originalStringToGlyphs","args","glyphs","anotherFont","glyph","scale","p","command","scaledCommand","g","content","letterSpacing","unpatch","top","left","fullPath","boxes","options","cachedPath","gX","gY","gFontSize","glyphPath","_x","_y","_glyphPath","movedCommand","k","bandBoxes","computeBandBox","arr","svg","width","height","content","buildXMLString","import_resolveConfig","PLATFORMS","isPlatform","x","ORIENTATIONS","isOrientation","ConfigType","Unit","isString","value","isObject","_a","complete","style","parseNumericValue","value","context","fractions","numerator","denominator","parsedNumerator","parsedDenominator","number","match","Unit","getCompleteStyle","prop","styleVal","parseStyleVal","mergeStyle","getStyle","parsed","toStyleVal","unit","isNegative","device","warn","toPx","DIR_MAP","getDirection","string","parseAndConsumeDirection","utilityFragment","direction","_","dir","parseUnconfigged","unconfiggedStyleVal","unconfiggedStyle","consoleWarn","args","noopWarn","defaultStyles","complete","fontVariant","styles_default","type","style","Cache","customStyles","styles_default","key","style","ir","value","fontSize","value","config","context","configValue","unconfiggedStyle","getCompleteStyle","style","rest","fontSizeStyle","getStyle","complete","mergeStyle","calculateLineHeight","lineHeight","letterSpacing","parsed","parseNumericValue","number","unit","Unit","lineHeight","value","config","_a","parseValue","parsed","parseNumericValue","number","unit","Unit","style","styleVal","toStyleVal","complete","spacing","type","direction","isNegative","value","config","numericValue","configValue","unconfigged","parseUnconfigged","spacingStyle","Unit","expand","parsed","parseNumericValue","number","unit","pixels","toStyleVal","screens","input","screenData","acc","screen","value","data","values","minPx","toPx","warn","maxPx","a","b","minA","maxA","minB","maxB","order","fontFamily","value","config","configValue","complete","firstFamily","color","type","value","config","shorthandOpacity","findColorInConfigRecursive","opacity","addOpacity","complete","STYLE_PROPS","style","opacityProp","colorOpacity","percentage","hexToRgba","removeOpacityHelpers","key","hex","orig","MATCH_SHORT_HEX","_","r","g","b","result","MATCH_FULL_HEX","warn","colorName","configColor","isString","isObject","colorNameStart","colorNameRest","subConfig","border","value","theme","rest","direction","parseAndConsumeDirection","borderWidth","complete","colorType","colorStyle","color","prop","numericValue","arbitraryWidth","unconfiggedStyle","config","configValue","getCompleteStyle","borderRadius","expand","arbitrary","ir","top","bottom","left","right","inset","type","value","isNegative","config","insetDir","_","dir","configValue","styleVal","parseStyleVal","insetStyle","unconfigged","parseUnconfigged","complete","flexGrowShrink","type","value","config","_a","configKey","numericValue","complete","flex","_b","match","flexBasis","parseStyleVal","widthHeight","type","value","context","config","configValue","getCompleteStyle","unconfiggedStyle","minMaxWidthHeight","styleVal","parseStyleVal","complete","letterSpacing","value","isNegative","config","configValue","parsed","parseNumericValue","number","unit","Unit","relativeLetterSpacing","warn","styleVal","toStyleVal","complete","unconfiggedStyle","ems","style","fontSize","opacity","value","config","configValue","parsedConfig","parseNumericValue","complete","parsedArbitrary","shadowOpacity","value","percentage","shadowOffset","widthStr","heightStr","width","offsetValue","height","number","parsed","parseUnconfigged","ClassParser","input","config","cache","device","platform","_a","_b","_c","_d","_e","_f","parts","prefixes","widthBreakpoints","screens","prefix","breakpointOrder","windowWidth","min","max","isPlatform","isOrientation","cached","ir","theme","style","match","prop","spacingDirection","getDirection","spacing","widthHeight","minMaxWidthHeight","lineHeight","fontSize","color","colorOpacity","fontFamily","warn","getCompleteStyle","border","borderRadius","inset","flexGrowShrink","flex","shadowOpacity","shadowOffset","unconfiggedStyle","elevation","complete","opacity","letterSpacing","zIndex","windowDims","type","dir","amount","checkDimension","parsedAmount","parseNumericValue","bound","unit","begin","end","string","parseInputs","inputs","classNames","styles","input","split","key","value","unique","str","className","index","classes","getAddedUtilities","plugins","_a","utils","plugin","callPluginFunction","pluginFn","added","utilities","core","notImplemented","fn","create","customConfig","platform","config","resolveConfig","withContent","device","pluginUtils","getAddedUtilities","customStringUtils","customStyleUtils","util","style","complete","ir","deriveCacheGroup","cacheGroup","contextCaches","getCache","existing","cache","Cache","inputs","resolved","dependents","ordered","utilities","userStyle","parseInputs","joined","cached","utility","styleIr","customStyle","ClassParser","a","b","orderedStyle","dependent","error","warn","removeOpacityHelpers","color","utils","styleObj","tailwindFn","strings","values","str","string","i","_a","prefixes","prefixMatches","newDimensions","newFontScale","newPixelDensity","newColorScheme","withContent","config","defaultShadows","addUtilities","createTw","config","create","tw","getTw","width","height","fontCache","satori","element","options","Yoga","getYoga","font","FontLoader","definedWidth","definedHeight","root","getRootNode","graphemeImages","processedWordsMissingFonts","cache","inflightRequests","preProcessNode","handler","layout","tw","style","twStyles","getTw","segmentsMissingFont","languageCodes","convertToLanguageCodes","fonts","images","code","segments","_segment","key","asset","content","computedWidth","computedHeight","svg","pointScaleFactor","config","wordsByCode","word","locale","detectLanguageCode","unique","segment","arr"]}