construct-hub 0.3.139 → 0.3.143

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. package/.jsii +2 -2
  2. package/lib/construct-hub.js +1 -1
  3. package/lib/package-sources/code-artifact.js +1 -1
  4. package/lib/package-sources/npmjs.js +1 -1
  5. package/lib/package-tag/index.js +2 -2
  6. package/lib/s3/vpc-endpoint-bucket.js +30 -1
  7. package/lib/spdx-license.js +1 -1
  8. package/package.json +2 -2
  9. package/website/android-chrome-192x192.png +0 -0
  10. package/website/apple-touch-icon.png +0 -0
  11. package/website/asset-manifest.json +40 -40
  12. package/website/assets/aqua-security.png +0 -0
  13. package/website/assets/favicon-16x16.png +0 -0
  14. package/website/assets/favicon-32x32.png +0 -0
  15. package/website/assets/favicon.ico +0 -0
  16. package/website/favicon-16x16.png +0 -0
  17. package/website/favicon-32x32.png +0 -0
  18. package/website/favicon.ico +0 -0
  19. package/website/index.html +1 -1
  20. package/website/manifest.json +3 -8
  21. package/website/mstile-150x150.png +0 -0
  22. package/website/static/js/{0.75bd4211.chunk.js → 0.740a33f8.chunk.js} +2 -2
  23. package/website/static/js/{0.75bd4211.chunk.js.map → 0.740a33f8.chunk.js.map} +1 -1
  24. package/website/static/js/{1.de94dd4f.chunk.js → 1.64a9b795.chunk.js} +2 -2
  25. package/website/static/js/{1.de94dd4f.chunk.js.map → 1.64a9b795.chunk.js.map} +1 -1
  26. package/website/static/js/{10.63153bb8.chunk.js → 10.5f66f973.chunk.js} +2 -2
  27. package/website/static/js/{10.63153bb8.chunk.js.map → 10.5f66f973.chunk.js.map} +1 -1
  28. package/website/static/js/11.d6a2b77e.chunk.js +2 -0
  29. package/website/static/js/11.d6a2b77e.chunk.js.map +1 -0
  30. package/website/static/js/12.519faaaf.chunk.js +2 -0
  31. package/website/static/js/12.519faaaf.chunk.js.map +1 -0
  32. package/website/static/js/13.6fe7d275.chunk.js +2 -0
  33. package/website/static/js/13.6fe7d275.chunk.js.map +1 -0
  34. package/website/static/js/14.079eb5e1.chunk.js +2 -0
  35. package/website/static/js/14.079eb5e1.chunk.js.map +1 -0
  36. package/website/static/js/{15.06217ace.chunk.js → 15.c3f18810.chunk.js} +3 -3
  37. package/website/static/js/{15.06217ace.chunk.js.LICENSE.txt → 15.c3f18810.chunk.js.LICENSE.txt} +0 -0
  38. package/website/static/js/{15.06217ace.chunk.js.map → 15.c3f18810.chunk.js.map} +1 -1
  39. package/website/static/js/{16.0b2ec5e5.chunk.js → 16.84214b0e.chunk.js} +2 -2
  40. package/website/static/js/{16.0b2ec5e5.chunk.js.map → 16.84214b0e.chunk.js.map} +1 -1
  41. package/website/static/js/{4.91a3f4bb.chunk.js → 4.862b4ce7.chunk.js} +3 -3
  42. package/website/static/js/{4.91a3f4bb.chunk.js.LICENSE.txt → 4.862b4ce7.chunk.js.LICENSE.txt} +0 -0
  43. package/website/static/js/4.862b4ce7.chunk.js.map +1 -0
  44. package/website/static/js/5.0e0c97cb.chunk.js +3 -0
  45. package/website/static/js/{5.fb19ba3d.chunk.js.LICENSE.txt → 5.0e0c97cb.chunk.js.LICENSE.txt} +0 -0
  46. package/website/static/js/5.0e0c97cb.chunk.js.map +1 -0
  47. package/website/static/js/6.78d88d4c.chunk.js +2 -0
  48. package/website/static/js/6.78d88d4c.chunk.js.map +1 -0
  49. package/website/static/js/7.a053380e.chunk.js +2 -0
  50. package/website/static/js/7.a053380e.chunk.js.map +1 -0
  51. package/website/static/js/8.c99e08cd.chunk.js +2 -0
  52. package/website/static/js/8.c99e08cd.chunk.js.map +1 -0
  53. package/website/static/js/{9.8b744886.chunk.js → 9.d40d7958.chunk.js} +2 -2
  54. package/website/static/js/{9.8b744886.chunk.js.map → 9.d40d7958.chunk.js.map} +1 -1
  55. package/website/static/js/main.6de5586a.chunk.js +2 -0
  56. package/website/static/js/main.6de5586a.chunk.js.map +1 -0
  57. package/website/static/js/{runtime-main.b8868b3c.js → runtime-main.2c215cbd.js} +2 -2
  58. package/website/static/js/{runtime-main.b8868b3c.js.map → runtime-main.2c215cbd.js.map} +1 -1
  59. package/website/logo192.png +0 -0
  60. package/website/logo512.png +0 -0
  61. package/website/static/js/11.95a7aff0.chunk.js +0 -2
  62. package/website/static/js/11.95a7aff0.chunk.js.map +0 -1
  63. package/website/static/js/12.755ea3fc.chunk.js +0 -2
  64. package/website/static/js/12.755ea3fc.chunk.js.map +0 -1
  65. package/website/static/js/13.d3fce156.chunk.js +0 -2
  66. package/website/static/js/13.d3fce156.chunk.js.map +0 -1
  67. package/website/static/js/14.e783508a.chunk.js +0 -2
  68. package/website/static/js/14.e783508a.chunk.js.map +0 -1
  69. package/website/static/js/4.91a3f4bb.chunk.js.map +0 -1
  70. package/website/static/js/5.fb19ba3d.chunk.js +0 -3
  71. package/website/static/js/5.fb19ba3d.chunk.js.map +0 -1
  72. package/website/static/js/6.ca3456ca.chunk.js +0 -2
  73. package/website/static/js/6.ca3456ca.chunk.js.map +0 -1
  74. package/website/static/js/7.f1806927.chunk.js +0 -2
  75. package/website/static/js/7.f1806927.chunk.js.map +0 -1
  76. package/website/static/js/8.73c2c7f3.chunk.js +0 -2
  77. package/website/static/js/8.73c2c7f3.chunk.js.map +0 -1
  78. package/website/static/js/main.40e21094.chunk.js +0 -2
  79. package/website/static/js/main.40e21094.chunk.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/micromark/dist/character/markdown-line-ending.js","../node_modules/micromark/dist/tokenize/factory-space.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createClass.js","../node_modules/semver/classes/semver.js","../node_modules/mdast-util-to-hast/lib/all.js","../node_modules/unist-builder/index.js","../node_modules/semver/functions/compare.js","../node_modules/semver/classes/range.js","../node_modules/micromark/dist/character/markdown-space.js","../node_modules/micromark/dist/util/chunked-splice.js","../node_modules/micromark/dist/character/markdown-line-ending-or-space.js","../node_modules/parse5/lib/utils/mixin.js","../node_modules/lodash/_root.js","../node_modules/micromark/dist/util/regex-check.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/micromark/dist/util/shallow.js","../node_modules/property-information/lib/util/create.js","../node_modules/parse5/lib/common/html.js","../node_modules/semver/internal/re.js","../node_modules/semver/functions/parse.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_baseGetTag.js","../node_modules/micromark/dist/constant/assign.js","../node_modules/micromark/dist/util/prefix-size.js","../node_modules/micromark/dist/character/ascii-alphanumeric.js","../node_modules/mdast-util-to-hast/lib/wrap.js","../node_modules/property-information/html.js","../node_modules/property-information/svg.js","../node_modules/property-information/find.js","../node_modules/lodash/isObjectLike.js","../node_modules/micromark/dist/constant/from-char-code.js","../node_modules/micromark/dist/tokenize/partial-blank-line.js","../node_modules/micromark/dist/util/resolve-all.js","../node_modules/micromark/dist/character/ascii-alpha.js","../node_modules/unist-util-visit/index.js","../node_modules/mdurl/encode.js","../node_modules/xtend/immutable.js","../node_modules/property-information/lib/util/types.js","../node_modules/parse5/lib/tokenizer/index.js","../node_modules/semver/internal/constants.js","../node_modules/semver/internal/debug.js","../node_modules/semver/internal/parse-options.js","../node_modules/semver/functions/gt.js","../node_modules/semver/classes/comparator.js","../node_modules/semver/functions/satisfies.js","../node_modules/lodash/_Symbol.js","../node_modules/micromark/dist/util/normalize-identifier.js","../node_modules/micromark/dist/util/miniflat.js","../node_modules/micromark/dist/util/chunked-push.js","../node_modules/micromark/dist/character/unicode-punctuation.js","../node_modules/micromark/dist/character/unicode-whitespace.js","../node_modules/micromark/dist/character/ascii-control.js","../node_modules/micromark/dist/tokenize/label-end.js","../node_modules/unist-util-is/convert.js","../node_modules/unist-util-position/index.js","../node_modules/property-information/normalize.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/space-separated-tokens/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/parse5/lib/common/unicode.js","../node_modules/parse5/lib/common/error-codes.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/parse5/lib/extensions/error-reporting/mixin-base.js","../node_modules/repeat-string/index.js","../node_modules/semver/internal/identifiers.js","../node_modules/semver/functions/eq.js","../node_modules/semver/functions/compare-build.js","../node_modules/semver/functions/lt.js","../node_modules/semver/functions/gte.js","../node_modules/semver/functions/lte.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/semver/ranges/outside.js","../node_modules/node-emoji/index.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isObject.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isArray.js","../node_modules/vfile/index.js","../node_modules/unist-util-stringify-position/index.js","../node_modules/micromark/dist/constant/has-own-property.js","../node_modules/micromark/dist/util/size-chunks.js","../node_modules/micromark/dist/util/subtokenize.js","../node_modules/micromark/dist/initialize/text.js","../node_modules/micromark/dist/util/combine-extensions.js","../node_modules/micromark/dist/util/classify-character.js","../node_modules/parse-entities/decode-entity.browser.js","../node_modules/micromark/dist/character/ascii-digit.js","../node_modules/micromark/dist/tokenize/factory-destination.js","../node_modules/micromark/dist/tokenize/factory-label.js","../node_modules/micromark/dist/tokenize/factory-whitespace.js","../node_modules/micromark/dist/tokenize/factory-title.js","../node_modules/micromark/dist/tokenize/thematic-break.js","../node_modules/unist-util-visit-parents/index.js","../node_modules/mdast-util-to-hast/lib/one.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/aria.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/style-to-object/index.js","../node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js","../node_modules/hastscript/factory.js","../node_modules/zwitch/index.js","../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","../node_modules/spdx-license-list/index.js","../node_modules/semver/functions/neq.js","../node_modules/semver/functions/cmp.js","../node_modules/node-emoji/lib/emoji.js","../node_modules/lodash/toArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/isString.js","../node_modules/lodash/_iteratorToArray.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/values.js","../node_modules/lodash/_baseValues.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/keys.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_overArg.js","../node_modules/react-markdown/src/react-markdown.js","../node_modules/vfile/lib/index.js","../node_modules/vfile-message/index.js","../node_modules/vfile/lib/core.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/node_modules/is-buffer/index.js","../node_modules/unified/index.js","../node_modules/bail/index.js","../node_modules/unified/node_modules/is-buffer/index.js","../node_modules/extend/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/index.js","../node_modules/trough/wrap.js","../node_modules/remark-parse/index.js","../node_modules/mdast-util-from-markdown/index.js","../node_modules/mdast-util-from-markdown/dist/index.js","../node_modules/mdast-util-to-string/index.js","../node_modules/micromark/dist/util/safe-from-int.js","../node_modules/micromark/dist/parse.js","../node_modules/micromark/dist/initialize/content.js","../node_modules/micromark/dist/initialize/document.js","../node_modules/micromark/dist/initialize/flow.js","../node_modules/micromark/dist/tokenize/content.js","../node_modules/micromark/dist/constant/splice.js","../node_modules/micromark/dist/util/create-tokenizer.js","../node_modules/micromark/dist/util/serialize-chunks.js","../node_modules/micromark/dist/util/slice-chunks.js","../node_modules/micromark/dist/constructs.js","../node_modules/micromark/dist/tokenize/attention.js","../node_modules/micromark/dist/constant/unicode-punctuation-regex.js","../node_modules/micromark/dist/util/move-point.js","../node_modules/micromark/dist/tokenize/autolink.js","../node_modules/micromark/dist/character/ascii-atext.js","../node_modules/micromark/dist/tokenize/block-quote.js","../node_modules/micromark/dist/tokenize/character-escape.js","../node_modules/micromark/dist/character/ascii-punctuation.js","../node_modules/micromark/dist/tokenize/character-reference.js","../node_modules/micromark/dist/character/ascii-hex-digit.js","../node_modules/micromark/dist/tokenize/code-fenced.js","../node_modules/micromark/dist/tokenize/code-indented.js","../node_modules/micromark/dist/tokenize/code-text.js","../node_modules/micromark/dist/tokenize/definition.js","../node_modules/micromark/dist/tokenize/hard-break-escape.js","../node_modules/micromark/dist/tokenize/heading-atx.js","../node_modules/micromark/dist/tokenize/html-flow.js","../node_modules/micromark/dist/constant/html-block-names.js","../node_modules/micromark/dist/constant/html-raw-names.js","../node_modules/micromark/dist/tokenize/html-text.js","../node_modules/micromark/dist/tokenize/label-start-image.js","../node_modules/micromark/dist/tokenize/label-start-link.js","../node_modules/micromark/dist/tokenize/line-ending.js","../node_modules/micromark/dist/tokenize/list.js","../node_modules/micromark/dist/tokenize/setext-underline.js","../node_modules/micromark/dist/preprocess.js","../node_modules/micromark/dist/postprocess.js","../node_modules/remark-rehype/index.js","../node_modules/mdast-util-to-hast/index.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/unist-util-visit-parents/color.browser.js","../node_modules/unist-util-generated/index.js","../node_modules/mdast-util-definitions/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/property-information/lib/html.js","../node_modules/react-markdown/src/rehype-filter.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/react-markdown/src/uri-transformer.js","../node_modules/react-markdown/src/ast-to-react.js","../node_modules/react-markdown/node_modules/react-is/index.js","../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/property-information/lib/svg.js","../node_modules/inline-style-parser/index.js","../node_modules/rehype-raw/index.js","../node_modules/hast-util-raw/index.js","../node_modules/parse5/lib/parser/index.js","../node_modules/parse5/lib/tokenizer/preprocessor.js","../node_modules/parse5/lib/tokenizer/named-entity-data.js","../node_modules/parse5/lib/parser/open-element-stack.js","../node_modules/parse5/lib/parser/formatting-element-list.js","../node_modules/parse5/lib/extensions/location-info/parser-mixin.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/parse5/lib/tree-adapters/default.js","../node_modules/parse5/lib/utils/merge-options.js","../node_modules/parse5/lib/common/doctype.js","../node_modules/parse5/lib/common/foreign-content.js","../node_modules/hast-util-from-parse5/index.js","../node_modules/hastscript/svg.js","../node_modules/hast-util-parse-selector/index.js","../node_modules/hastscript/index.js","../node_modules/hastscript/html.js","../node_modules/vfile-location/index.js","../node_modules/hast-util-to-parse5/index.js","../node_modules/hast-to-hyperscript/index.js","../node_modules/rehype-sanitize/index.js","../node_modules/hast-util-sanitize/index.js","../node_modules/hast-util-sanitize/lib/index.js","../node_modules/remark-gfm/index.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/micromark-extension-gfm/syntax.js","../node_modules/micromark-extension-gfm-autolink-literal/index.js","../node_modules/micromark-extension-gfm-autolink-literal/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/index.js","../node_modules/micromark-extension-gfm-table/index.js","../node_modules/micromark-extension-gfm-table/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/index.js","../node_modules/micromark-extension-gfm-task-list-item/syntax.js","../node_modules/mdast-util-gfm/from-markdown.js","../node_modules/mdast-util-gfm-autolink-literal/from-markdown.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/index.js","../node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-gfm-strikethrough/from-markdown.js","../node_modules/mdast-util-gfm-table/from-markdown.js","../node_modules/mdast-util-gfm-task-list-item/from-markdown.js","../node_modules/mdast-util-gfm/to-markdown.js","../node_modules/mdast-util-gfm-autolink-literal/to-markdown.js","../node_modules/mdast-util-gfm-strikethrough/to-markdown.js","../node_modules/mdast-util-gfm-table/to-markdown.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-gfm-task-list-item/to-markdown.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/util/container-flow.js","../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","../node_modules/mdast-util-to-markdown/lib/configure.js","../node_modules/copy-to-clipboard/index.js","../node_modules/toggle-selection/index.js","../node_modules/prism-react-renderer/themes/nightOwlLight/index.js","../node_modules/react-dom/server.browser.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../node_modules/semver/index.js","../node_modules/process/browser.js","../node_modules/semver/functions/valid.js","../node_modules/semver/functions/clean.js","../node_modules/semver/functions/inc.js","../node_modules/semver/functions/diff.js","../node_modules/semver/functions/major.js","../node_modules/semver/functions/minor.js","../node_modules/semver/functions/patch.js","../node_modules/semver/functions/prerelease.js","../node_modules/semver/functions/rcompare.js","../node_modules/semver/functions/compare-loose.js","../node_modules/semver/functions/sort.js","../node_modules/semver/functions/rsort.js","../node_modules/semver/functions/coerce.js","../node_modules/lru-cache/index.js","../node_modules/yallist/yallist.js","../node_modules/yallist/iterator.js","../node_modules/semver/ranges/to-comparators.js","../node_modules/semver/ranges/max-satisfying.js","../node_modules/semver/ranges/min-satisfying.js","../node_modules/semver/ranges/min-version.js","../node_modules/semver/ranges/valid.js","../node_modules/semver/ranges/gtr.js","../node_modules/semver/ranges/ltr.js","../node_modules/semver/ranges/intersects.js","../node_modules/semver/ranges/simplify.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/semver/ranges/subset.js","../node_modules/remark-emoji/node_modules/unist-util-is/index.js","../node_modules/remark-emoji/node_modules/unist-util-visit-parents/index.js","../node_modules/remark-emoji/node_modules/unist-util-visit/index.js","../node_modules/emoticon/index.js","../node_modules/remark-emoji/index.js","../node_modules/prism-react-renderer/prism/index.js","../node_modules/prism-react-renderer/themes/duotoneDark/index.js","../node_modules/prism-react-renderer/dist/index.js","../../../src/use-tabs.ts","../../../src/tabs.tsx","../../../src/use-clipboard.ts","../../../src/code.tsx","../../../src/table.tsx","../../../src/create-media-query.ts","../../../src/use-breakpoint-value.ts","../../../src/use-breakpoint.ts","../../../src/media-query.utils.ts"],"names":["module","exports","code","markdownSpace","require","effects","ok","type","max","limit","Infinity","size","enter","prefix","consume","exit","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","debug","MAX_LENGTH","MAX_SAFE_INTEGER","re","t","parseOptions","compareIdentifiers","SemVer","version","options","loose","includePrerelease","this","m","trim","match","LOOSE","FULL","raw","major","minor","patch","prerelease","split","map","id","test","num","build","format","join","other","compareMain","comparePre","a","b","undefined","release","identifier","inc","push","isNaN","Error","h","parent","result","head","nodes","children","values","index","one","value","replace","concat","node","Array","isArray","assign","String","compare","Range","range","Comparator","set","parseRange","filter","c","first","isNullSet","isAny","comps","memoOpts","keys","memoKey","cached","cache","get","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","comparatorTrimReplace","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","compRe","COMPARATORLOOSE","COMPARATOR","rangeList","comp","parseComparator","replaceGTE0","rangeMap","Map","has","delete","some","thisComparators","isSatisfiable","rangeComparators","every","thisComparator","rangeComparator","intersects","er","testSet","comparators","remainingComparators","slice","testComparator","pop","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","toLowerCase","replaceTilde","r","TILDELOOSE","TILDE","_","M","p","pr","ret","replaceCaret","CARETLOOSE","CARET","z","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","$0","from","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","tb","semver","ANY","allowed","splice","list","start","remove","items","parameters","end","chunkStart","unshift","apply","Mixin","host","originalMethods","overriddenMethods","_getOverriddenMethods","install","Ctor","opts","__mixins","constructor","mixin","freeGlobal","freeSelf","self","root","Function","fromCharCode","regex","setPrototypeOf","subClass","superClass","create","getPrototypeOf","isNativeReflectConstruct","possibleConstructorReturn","Derived","hasNativeReflectConstruct","Super","NewTarget","Reflect","construct","arguments","object","normalize","Schema","DefinedInfo","definition","prop","info","space","mustUseProperty","attributes","properties","transform","property","normal","indexOf","attribute","NS","NAMESPACES","HTML","MATHML","SVG","XLINK","XML","XMLNS","ATTRS","TYPE","ACTION","ENCODING","PROMPT","NAME","COLOR","FACE","SIZE","DOCUMENT_MODE","NO_QUIRKS","QUIRKS","LIMITED_QUIRKS","$","TAG_NAMES","A","ADDRESS","ANNOTATION_XML","APPLET","AREA","ARTICLE","ASIDE","B","BASE","BASEFONT","BGSOUND","BIG","BLOCKQUOTE","BODY","BR","BUTTON","CAPTION","CENTER","CODE","COL","COLGROUP","DD","DESC","DETAILS","DIALOG","DIR","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FOREIGN_OBJECT","FORM","FRAME","FRAMESET","H1","H2","H3","H4","H5","H6","HEAD","HEADER","HGROUP","HR","I","IMG","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LI","LINK","LISTING","MAIN","MALIGNMARK","MARQUEE","MATH","MENU","META","MGLYPH","MI","MO","MN","MS","MTEXT","NAV","NOBR","NOFRAMES","NOEMBED","NOSCRIPT","OBJECT","OL","OPTGROUP","OPTION","P","PARAM","PLAINTEXT","PRE","RB","RP","RT","RTC","RUBY","S","SCRIPT","SECTION","SELECT","SOURCE","SMALL","SPAN","STRIKE","STRONG","STYLE","SUB","SUMMARY","SUP","TABLE","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TITLE","TR","TRACK","TT","U","UL","VAR","WBR","XMP","SPECIAL_ELEMENTS","MAX_SAFE_COMPONENT_LENGTH","src","R","createToken","name","isGlobal","RegExp","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","LONECARET","baseIsNative","getValue","Symbol","getRawTag","objectToString","symToStringTag","toStringTag","sizeChunks","events","tail","sliceStream","asciiAlphanumeric","regexCheck","u","merge","xlink","xml","xmlns","aria","html","svg","Info","data","schema","Type","valid","charAt","dash","camelcase","toUpperCase","datasetToProperty","cap","kebab","datasetToAttribute","markdownLineEnding","factorySpace","partialBlankLine","tokenize","nok","partial","constructs","context","resolve","called","resolveAll","asciiAlpha","visit","visitParents","CONTINUE","SKIP","EXIT","tree","visitor","reverse","parents","encodeCache","encode","string","exclude","keepEscaped","l","nextCode","defaultChars","ch","toString","charCodeAt","getEncodeCache","encodeURIComponent","componentChars","source","hasOwnProperty","call","powers","increment","Math","pow","boolean","booleanish","overloadedBoolean","number","spaceSeparated","commaSeparated","commaOrSpaceSeparated","Preprocessor","unicode","neTree","ERR","CODE_POINTS","$$","CODE_POINT_SEQUENCES","C1_CONTROLS_REFERENCE_REPLACEMENTS","DATA_STATE","RCDATA_STATE","RAWTEXT_STATE","SCRIPT_DATA_STATE","PLAINTEXT_STATE","TAG_OPEN_STATE","END_TAG_OPEN_STATE","TAG_NAME_STATE","RCDATA_LESS_THAN_SIGN_STATE","RCDATA_END_TAG_OPEN_STATE","RCDATA_END_TAG_NAME_STATE","RAWTEXT_LESS_THAN_SIGN_STATE","RAWTEXT_END_TAG_OPEN_STATE","RAWTEXT_END_TAG_NAME_STATE","SCRIPT_DATA_LESS_THAN_SIGN_STATE","SCRIPT_DATA_END_TAG_OPEN_STATE","SCRIPT_DATA_END_TAG_NAME_STATE","SCRIPT_DATA_ESCAPE_START_STATE","SCRIPT_DATA_ESCAPE_START_DASH_STATE","SCRIPT_DATA_ESCAPED_STATE","SCRIPT_DATA_ESCAPED_DASH_STATE","SCRIPT_DATA_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE","BEFORE_ATTRIBUTE_NAME_STATE","ATTRIBUTE_NAME_STATE","AFTER_ATTRIBUTE_NAME_STATE","BEFORE_ATTRIBUTE_VALUE_STATE","ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE","ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE","ATTRIBUTE_VALUE_UNQUOTED_STATE","AFTER_ATTRIBUTE_VALUE_QUOTED_STATE","SELF_CLOSING_START_TAG_STATE","BOGUS_COMMENT_STATE","MARKUP_DECLARATION_OPEN_STATE","COMMENT_START_STATE","COMMENT_START_DASH_STATE","COMMENT_STATE","COMMENT_LESS_THAN_SIGN_STATE","COMMENT_LESS_THAN_SIGN_BANG_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE","COMMENT_END_DASH_STATE","COMMENT_END_STATE","COMMENT_END_BANG_STATE","DOCTYPE_STATE","BEFORE_DOCTYPE_NAME_STATE","DOCTYPE_NAME_STATE","AFTER_DOCTYPE_NAME_STATE","AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE","BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE","DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE","BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE","AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE","BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE","DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE","BOGUS_DOCTYPE_STATE","CDATA_SECTION_STATE","CDATA_SECTION_BRACKET_STATE","CDATA_SECTION_END_STATE","CHARACTER_REFERENCE_STATE","NAMED_CHARACTER_REFERENCE_STATE","AMBIGUOUS_AMPERSAND_STATE","NUMERIC_CHARACTER_REFERENCE_STATE","HEXADEMICAL_CHARACTER_REFERENCE_START_STATE","DECIMAL_CHARACTER_REFERENCE_START_STATE","HEXADEMICAL_CHARACTER_REFERENCE_STATE","DECIMAL_CHARACTER_REFERENCE_STATE","NUMERIC_CHARACTER_REFERENCE_END_STATE","isWhitespace","cp","SPACE","LINE_FEED","TABULATION","FORM_FEED","isAsciiDigit","DIGIT_0","DIGIT_9","isAsciiUpper","LATIN_CAPITAL_A","LATIN_CAPITAL_Z","isAsciiLower","LATIN_SMALL_A","LATIN_SMALL_Z","isAsciiLetter","isAsciiAlphaNumeric","isAsciiUpperHexDigit","LATIN_CAPITAL_F","isAsciiLowerHexDigit","LATIN_SMALL_F","toAsciiLowerCodePoint","toChar","toAsciiLowerChar","findNamedEntityTreeBranch","nodeIx","branchCount","lo","hi","mid","midCp","Tokenizer","preprocessor","tokenQueue","allowCDATA","state","returnState","charRefCode","tempBuff","lastStartTagName","consumedAfterSnapshot","active","currentCharacterToken","currentToken","currentAttr","err","_consume","_err","_unconsume","_ensureHibernation","shift","chunk","isLastChunk","write","insertHtmlAtCurrentPos","endOfChunkHit","retreat","HIBERNATION_TOKEN","advance","pattern","startCp","caseSensitive","consumedCount","isMatch","patternLength","patternPos","patternCp","EOF","SCRIPT_STRING","START_TAG_TOKEN","tagName","selfClosing","ackSelfClosing","attrs","END_TAG_TOKEN","COMMENT_TOKEN","initialName","DOCTYPE_TOKEN","forceQuirks","publicId","systemId","chars","EOF_TOKEN","attrNameFirstCh","toState","getTokenAttr","duplicateAttribute","_emitCurrentCharacterToken","ct","endTagWithAttributes","endTagWithTrailingSolidus","_createEOFToken","_emitCurrentToken","_createCharacterToken","CHARACTER_TOKEN","WHITESPACE_CHARACTER_TOKEN","NULL","NULL_CHARACTER_TOKEN","_appendCharToCurrentCharacterToken","codePoints","_emitCodePoint","excess","current","inNode","HAS_DATA_FLAG","withSemicolon","_isCharacterReferenceInAttribute","nextCp","EQUALS_SIGN","_emitSeveralCodePoints","dropParsedChunk","LESS_THAN_SIGN","AMPERSAND","unexpectedNullCharacter","_emitEOFToken","_emitChars","REPLACEMENT_CHARACTER","EXCLAMATION_MARK","SOLIDUS","_createStartTagToken","_reconsumeInState","QUESTION_MARK","unexpectedQuestionMarkInsteadOfTagName","_createCommentToken","eofBeforeTagName","invalidFirstCharacterOfTagName","_createEndTagToken","GREATER_THAN_SIGN","missingEndTagName","eofInTag","HYPHEN_MINUS","eofInScriptHtmlCommentLikeText","_isTempBufferEqualToScriptString","unexpectedEqualsSignBeforeAttributeName","_createAttr","_leaveAttrName","QUOTATION_MARK","APOSTROPHE","unexpectedCharacterInAttributeName","missingAttributeValue","_leaveAttrValue","GRAVE_ACCENT","unexpectedCharacterInUnquotedAttributeValue","missingWhitespaceBetweenAttributes","unexpectedSolidusInTag","_consumeSequenceIfMatch","DASH_DASH_STRING","DOCTYPE_STRING","CDATA_START_STRING","cdataInHtmlContent","incorrectlyOpenedComment","abruptClosingOfEmptyComment","eofInComment","nestedComment","incorrectlyClosedComment","eofInDoctype","_createDoctypeToken","missingWhitespaceBeforeDoctypeName","missingDoctypeName","PUBLIC_STRING","SYSTEM_STRING","invalidCharacterSequenceAfterDoctypeName","missingWhitespaceAfterDoctypePublicKeyword","missingDoctypePublicIdentifier","missingQuoteBeforeDoctypePublicIdentifier","abruptDoctypePublicIdentifier","missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers","missingQuoteBeforeDoctypeSystemIdentifier","missingWhitespaceAfterDoctypeSystemKeyword","missingDoctypeSystemIdentifier","abruptDoctypeSystemIdentifier","unexpectedCharacterAfterDoctypeSystemIdentifier","RIGHT_SQUARE_BRACKET","eofInCdata","NUMBER_SIGN","_flushCodePointsConsumedAsCharacterReference","matchResult","_matchNamedCharacterReference","SEMICOLON","_isCharacterReferenceAttributeQuirk","_errOnNextCodePoint","missingSemicolonAfterCharacterReference","unknownNamedCharacterReference","LATIN_SMALL_X","LATIN_CAPITAL_X","isAsciiHexDigit","absenceOfDigitsInNumericCharacterReference","nullCharacterReference","characterReferenceOutsideUnicodeRange","isSurrogate","surrogateCharacterReference","isUndefinedCodePoint","noncharacterCharacterReference","isControlCodePoint","CARRIAGE_RETURN","controlCharacterReference","replacement","MODE","DATA","RCDATA","RAWTEXT","SCRIPT_DATA","token","attrName","Number","SEMVER_SPEC_VERSION","process","NODE_DEBUG","args","console","error","k","reduce","parse","operator","cmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","chunkedSplice","unicodePunctuationRegex","unicodePunctuation","unicodeWhitespace","markdownLineEndingOrSpace","chunkedPush","normalizeIdentifier","shallow","factoryDestination","factoryLabel","factoryTitle","factoryWhitespace","labelEnd","labelStart","defined","_balanced","_inactive","balanced","parser","sliceSerialize","now","afterLabelEnd","attempt","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","resolveTo","group","label","text","open","close","media","offset","insideSpan","null","_used","destinationAfter","between","afterLabel","convert","Boolean","typeFactory","tests","checks","any","anyFactory","all","allFactory","factory","position","point","displayName","line","column","arrayLikeToArray","o","minLen","n","input","whiteSpace","stringify","val","lastIndex","settings","left","padLeft","right","padRight","obj","UNDEFINED_CODE_POINTS","isSurrogatePair","getSurrogatePairCodePoint","cp1","cp2","controlCharacterInInputStream","noncharacterInInputStream","surrogateInInputStream","nonVoidHtmlElementStartTagWithTrailingSolidus","nonConformingDoctype","missingDoctype","misplacedDoctype","endTagWithoutMatchingOpenElement","closingOfElementWithOpenChildElements","disallowedContentInNoscriptInHead","openElementsLeftAfterEof","abandonedHeadElementChild","misplacedStartTagForHeadElement","nestedNoscriptInHead","eofInElementThatCanContainOnlyText","_getPrototypeOf","__proto__","ErrorReportingMixinBase","posTracker","onParseError","startLine","endLine","startCol","endCol","col","startOffset","endOffset","_setErrorLocation","mxn","_reportError","res","str","substr","numeric","anum","bnum","rcompareIdentifiers","versionA","versionB","compareBuild","unsupportedIterableToArray","allowArrayLike","it","iterator","F","s","done","e","_e","f","normalCompletion","didErr","step","next","_e2","satisfies","gt","lt","lte","gte","hilo","gtfn","ltefn","ltfn","ecomp","high","low","forEach","comparator","global","baseGetTag","isObject","tag","funcToString","func","isFunction","isLength","own","pos","chunks","subcontent","eventIndex","stream","previous","entered","adjust","startPosition","startPositions","tokenizer","_tokenizer","contentType","childEvents","jumps","gaps","defineSkip","isInFirstContentOfListItem","_gfmTasklistFirstContentOfListItem","add","event","lineIndex","otherIndex","otherEvent","subevents","more","_container","_movePreviousLineEndings","initializeFactory","resolver","createResolver","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","bufferIndex","tabs","_index","_bufferIndex","miniflat","extension","hook","existing","before","extensions","el","characters","char","entity","document","createElement","innerHTML","textContent","asciiDigit","asciiControl","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","markerType","labelEscape","seen","marker","atFirstTitleBreak","atTitleBreak","title","titleEscape","thematicBreak","sequence","color","is","subresult","grandparents","toResult","fn","handlers","passThrough","returnNode","unknownHandler","unknown","augment","clone","ordered","className","wrap","footnoteOrder","href","contents","subtype","referenceType","suffix","alt","xtend","definitions","proto","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","types","checksLength","mask","check","mark","xmlLang","xmlBase","xmlSpace","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","caseSensitiveTransform","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","arrayWithoutHoles","iterableToArray","nonIterableSpread","arr","len","arr2","style","declaration","output","declarations","hasIterator","PositionTrackingPreprocessorMixin","LocationInfoTokenizerMixin","currentAttrLocation","ctLoc","location","orig","methods","_getCurrentLocation","_attachCurrentAttrLocationInfo","modeName","isEol","lineStartPos","droppedBufferSize","prevPos","reduction","find","parseSelector","spaces","commas","defaultTagName","createAdjustMap","selector","isChildren","addProperty","addChild","content","parsePrimitive","parsePrimitives","isNode","positiveNumber","invalid","noop","safeOptions","after","handle","child","results","peek","eq","neq","op","toArray","emojiByName","emojiNameRegex","trimSpaceRegex","stripColons","colonIndex","substring","wrapColons","NON_SPACING_MARK","nonSpacingRegex","stripNSB","emojiByCode","Emoji","emoji","_get","nameOrCode","findByName","findByCode","stripped","hasEmoji","hasEmojiByName","hasEmojiByCode","which","emoji_code","includeColons","word","emojify","on_missing","isMissing","random","emojiKeys","floor","search","matcher","unemojify","cleanSpaces","words","replaced","idx","strip","copyArray","getTag","isArrayLike","isString","iteratorToArray","mapToArray","setToArray","stringToArray","symIterator","array","DataView","Promise","Set","WeakMap","toSource","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","ctorString","getNative","isMasked","reIsHostCtor","funcProto","objectProto","reIsNative","nativeObjectToString","isOwn","unmasked","coreJsData","maskSrcKey","uid","exec","IE_PROTO","isObjectLike","asciiToArray","hasUnicode","unicodeToArray","reHasUnicode","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","baseValues","arrayMap","iteratee","arrayLikeKeys","baseKeys","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseIsArguments","propertyIsEnumerable","stubFalse","freeExports","nodeType","freeModule","Buffer","reIsUint","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","typedArrayTags","freeProcess","binding","isPrototype","nativeKeys","overArg","arg","React","vfile","unified","remarkRehype","PropTypes","uriTransformer","childrenToReact","hastChildrenToReact","ReactMarkdown","deprecated","renderers","astPlugins","allowDangerousHtml","escapeHtml","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","deprecation","warn","file","processor","use","remarkPlugins","plugins","rehypePlugins","hastNode","runSync","Fragment","listDepth","defaultProps","transformLinkUri","propTypes","allowElement","allowedElements","arrayOf","disallowedElements","unwrapDisallowed","bool","oneOfType","sourcePos","rawSourcePos","skipHtml","includeElementIndex","linkTarget","transformImageUri","components","VMessage","VFile","message","reason","origin","path","fatal","messages","fail","VMessagePrototype","parts","parseOrigin","stack","ruleId","proc","buffer","order","history","cwd","assertPart","part","sep","assertNonEmpty","assertPath","encoding","dirname","basename","extname","stem","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","lastIndexOf","normalizeString","JSON","ext","firstNonSlashEnd","seenNonSlash","extIndex","unmatchedSlash","startDot","startPart","preDotState","joined","bail","extend","plain","trough","frozen","attachers","transformers","namespace","freezeIndex","assertUnfrozen","freeze","addPlugin","addList","addPreset","plugin","entry","doc","Parser","assertParser","newable","Compiler","assertCompiler","assertNode","compile","run","complete","assertDone","processSync","destination","transformer","cb","executor","reject","pipeline","ctx","asyncName","hasOwn","toStr","gOPD","getOwnPropertyDescriptor","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","copy","copyIsArray","deep","fns","middleware","params","callback","invoked","then","fromMarkdown","mdastExtensions","config","configure","transforms","canContainEols","autolink","opener","link","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","heading","blockQuote","characterEscape","characterReference","codeFenced","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeIndented","codeText","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreakEscape","hardBreak","hardBreakTrailing","htmlFlow","htmlFlowData","htmlText","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","paragraph","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","lineEnding","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","resource","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","handler","tokenStack","listStack","resume","setData","getData","prepareList","stringifyPosition","tailIndex","tailEvent","firstBlankLineIndex","atMarker","containerBalance","listSpread","_spread","d","and","parseInt","lang","meta","url","depth","siblings","fragment","safeFromInt","decode","spread","checked","compiler","postprocess","base","flow","combineExtensions","createTokenizer","initializer","contentStart","contentInitial","lineStart","inspectResult","childFlow","childToken","continued","inspectConstruct","subcontinued","inspectStart","containerState","continuation","inspectContinue","inspectLess","currentConstruct","concrete","flowContinue","inspectDone","interrupt","interruptible","containerConstruct","inspectFlowEnd","_closeFlow","lazy","lazyFlowConstruct","inspectLazy","flowEnd","documentContinue","documentContinued","flowStart","containerContinue","exitContainers","continueFlow","documentAfterPeek","disable","initial","flowInitial","afterConstruct","prefixSize","subtokenize","contentEnd","continuationConstruct","contentContinue","prefixed","serializeChunks","sliceChunks","initialize","columnStart","resolveAllConstructs","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","main","chunkIndex","go","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","atTab","view","startIndex","startBufferIndex","endIndex","endBufferIndex","text$1","attention","headingAtx","labelStartImage","labelStartLink","setextUnderline","classifyCharacter","movePoint","_open","_close","openingSequence","closingSequence","nextEvents","asciiAtext","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","asciiPunctuation","decodeEntity","asciiHexDigit","_interopDefaultLegacy","default","decodeEntity__default","closingFenceConstruct","closingSequenceStart","sizeOpen","closingSequenceEnd","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","indentedContentConstruct","afterPrefix","gap","tailExitIndex","headEnterIndex","labelAfter","titleConstruct","fenceOpenInside","headingBreak","htmlBlockNames","htmlRawNames","kind","startTag","declarationStart","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","continuationRawEndTag","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","commentStart","commentStartDash","comment","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","initialSize","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","atCarriageReturn","endPosition","ceil","mdast2hast","bridge","mutate","allowDangerousHTML","deprecationWarningIssued","dangerous","footnoteById","onfootnotedefinition","hName","hProperties","hChildren","generated","foot","footer","getter","normalise","getterFactory","ondefinition","gather","def","backReference","listItems","ignore","blockquote","break","footnoteReference","footnote","imageReference","inlineCode","linkReference","table","toml","yaml","footnoteDefinition","revert","listItemLoose","listLoose","wrapped","disabled","row","out","cell","rows","align","alignLength","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","action","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","as","async","autoCapitalize","autoComplete","autoFocus","autoPlay","capture","charSet","cite","cols","colSpan","contentEditable","controls","controlsList","coords","crossOrigin","dateTime","decoding","defer","dir","dirName","download","draggable","encType","enterKeyHint","form","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","height","hidden","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","language","loading","loop","manifest","maxLength","method","min","minLength","multiple","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforePrint","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClick","onClose","onContextMenu","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","placeholder","playsInline","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rowSpan","sandbox","scope","scoped","seamless","selected","shape","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","tabIndex","translate","typeMustMatch","useMap","width","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","clear","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","rules","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","onelement","node_","parent_","includes","iter","protocols","uri","colon","protocol","ReactIs","hastToReact","toReact","tableElements","childIndex","parentSchema","component","basic","isValidElementType","inline","level","getInputElement","getElementsBeforeCount","textAlign","isHeader","sourcePosition","siblingCount","count","v","styleReplacer","parseStyle","$1","g","q","w","for","x","y","$$typeof","C","D","E","G","H","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","typeOf","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","textRendering","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeName","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","display","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","fill","filterRes","filterUnits","focusable","focusHighlight","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","mode","numOctaves","observer","opacity","orient","orientation","overflow","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","rotate","rx","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","viewBox","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","lineno","updatePosition","lines","Position","whitespace","errorsList","msg","filename","silent","comments","decl","decls","hastUtilRaw","fromParse5","toParse5","voids","ns","zwitch","stitches","locationTracker","element","resetTokenizer","_processToken","createParse5Location","endTag","endTagToken","characterToken","doctype","p5","doctypeToken","lastGapPos","lastCharPos","gapStack","skipNextNewLine","lastChunkWritten","_runParsingLoop","stitch","documentMode","treeAdapter","createDocument","_bootstrap","nodeName","namespaceURI","childNodes","mock","_pushTmplInsertionMode","inTemplateMode","_initTokenizerForFragmentParsing","_insertFakeRootElement","_resetInsertionMode","_findFormInFragmentContext","_adoptNodes","sourceCodeLocationInfo","scriptingEnabled","OpenElementStack","FormattingElementList","LocationInfoParserMixin","ErrorReportingParserMixin","defaultTreeAdapter","mergeOptions","foreignContent","DEFAULT_OPTIONS","HIDDEN_INPUT_TYPE","INITIAL_MODE","BEFORE_HTML_MODE","BEFORE_HEAD_MODE","IN_HEAD_MODE","IN_HEAD_NO_SCRIPT_MODE","AFTER_HEAD_MODE","IN_BODY_MODE","TEXT_MODE","IN_TABLE_MODE","IN_TABLE_TEXT_MODE","IN_CAPTION_MODE","IN_COLUMN_GROUP_MODE","IN_TABLE_BODY_MODE","IN_ROW_MODE","IN_CELL_MODE","IN_SELECT_MODE","IN_SELECT_IN_TABLE_MODE","IN_TEMPLATE_MODE","AFTER_BODY_MODE","IN_FRAMESET_MODE","AFTER_FRAMESET_MODE","AFTER_AFTER_BODY_MODE","AFTER_AFTER_FRAMESET_MODE","INSERTION_MODE_RESET_MAP","TEMPLATE_INSERTION_MODE_SWITCH_MAP","TOKEN_HANDLERS","tokenInInitialMode","ignoreToken","appendComment","_setDocumentType","getDocumentMode","isConforming","setDocumentMode","insertionMode","tokenBeforeHtml","_insertElement","tn","tokenBeforeHead","startTagInBody","headElement","openElements","tokenInHead","insertCharacters","startTagInHead","endTagInHead","tokenInHeadNoScript","tokenAfterHead","framesetOk","characterInBody","whitespaceCharacterInBody","endTagInBody","eofInBody","pendingScript","originalInsertionMode","characterInTable","startTagInTable","endTagInTable","pendingCharacterTokens","hasNonWhitespacePendingCharacterToken","tokenInTableText","hasInTableScope","generateImpliedEndTags","popUntilTagNamePopped","activeFormattingElements","clearToLastMarker","tokenInColumnGroup","_appendElement","currentTagName","clearBackToTableBodyContext","_insertFakeElement","hasTableBodyContextInTableScope","clearBackToTableRowContext","insertMarker","_closeTableCell","startTagInSelect","endTagInSelect","newInsertionMode","_popTmplInsertionMode","eofInTemplate","tokenAfterBody","_appendCommentNode","fragmentContext","stopParsing","isRootHtmlElementCurrent","tokenAfterAfterBody","appendCommentToDocument","documentMock","getTagName","rootElement","getFirstChild","createDocumentFragment","stopped","formElement","tmplInsertionModeStack","tmplInsertionModeStackTop","currentTmplInsertionMode","fosterParentingEnabled","scriptHandler","_setupTokenizerCDATAMode","getNextToken","_processInputToken","writeCallback","script","_getAdjustedCurrentElement","getNamespaceURI","_isIntegrationPoint","nextTokenizerState","stackTop","getParentNode","setDocumentType","_shouldFosterParentOnInsertion","_fosterParentElement","currentTmplContent","appendChild","_attachElementToTree","tmpl","setTemplateContent","commentNode","createCommentNode","_fosterParentText","insertText","donor","recipient","detachNode","isCharacterToken","_insertCharacters","characterInForeignContent","nullCharacterInForeignContent","causesExit","currentNs","adjustTokenMathMLAttrs","adjustTokenSVGTagName","adjustTokenSVGAttrs","adjustTokenXMLAttrs","startTagInForeignContent","popUntilElementPopped","endTagInForeignContent","_shouldProcessTokenInForeignContent","_processTokenInForeignContent","foreignNS","getAttrList","isIntegrationPoint","listLength","unopenIdx","entries","MARKER_ENTRY","contains","popUntilTableCellPopped","generateImpliedEndTagsWithExclusion","last","_resetInsertionModeForSelect","selectIdx","ancestor","_isElementCausesFosterParenting","beforeElement","openElement","getTemplateContent","_findFosterParentingLocation","insertBefore","insertTextBefore","aaObtainFormattingElementEntry","formattingElementEntry","getElementEntryInScopeWithTagName","hasInScope","removeEntry","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","aaInnerLoop","formattingElement","lastElement","nextElement","getCommonAncestor","elementEntry","getElementEntry","counterOverflow","aaRecreateElementFromEntry","bookmark","newElement","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","insertElementAfterBookmark","insertAfter","callAdoptionAgency","beforeToken","_switchToTextParsing","_insertTemplate","tmplCount","generateImpliedEndTagsThoroughly","errCode","_reconstructActiveFormattingElements","addressStartTagInBody","hasInButtonScope","_closePElement","preStartTagInBody","bStartTagInBody","pushElement","appletStartTagInBody","areaStartTagInBody","paramStartTagInBody","noembedStartTagInBody","optgroupStartTagInBody","rbStartTagInBody","genericStartTagInBody","activeElementEntry","aStartTagInBody","numberedHeaderStartTagInBody","elementTn","closeTn","listItemStartTagInBody","hrStartTagInBody","rtStartTagInBody","xmpStartTagInBody","svgStartTagInBody","adoptAttributes","htmlStartTagInBody","bodyElement","tryPeekProperlyNestedBodyElement","bodyStartTagInBody","inTemplate","formStartTagInBody","nobrStartTagInBody","mathStartTagInBody","menuStartTagInBody","tableStartTagInBody","inputType","inputStartTagInBody","imageStartTagInBody","buttonStartTagInBody","iframeStartTagInBody","selectStartTagInBody","popAllUpToHtmlElement","framesetStartTagInBody","textareaStartTagInBody","plaintextStartTagInBody","addressEndTagInBody","appletEndTagInBody","pEndTagInBody","hasInListItemScope","liEndTagInBody","ddEndTagInBody","hasNumberedHeaderInScope","popUntilNumberedHeaderPopped","numberedHeaderEndTagInBody","brEndTagInBody","bodyEndTagInBody","htmlEndTagInBody","formEndTagInBody","curTn","tokenInTable","clearBackToTableContext","tdStartTagInTable","colStartTagInTable","formStartTagInTable","tableStartTagInTable","tbodyStartTagInTable","inputStartTagInTable","captionStartTagInTable","colgroupStartTagInTable","savedFosterParentingState","_processTokenInBodyMode","hasInSelectScope","prevOpenElement","prevOpenElementTn","bufferWaterline","_addGap","_processSurrogate","_checkForProblematicCharacters","Uint16Array","isImpliedEndTagRequired","isImpliedEndTagRequiredThoroughly","isScopingElement","_isInTemplate","_updateCurrentElement","oldElement","_indexOf","referenceElement","insertionIdx","poppedElement","elementIdx","exclusionTagName","candidates","neAttrsLength","neTagName","neNamespaceURI","elementAttrs","_getNoahArkConditionCandidates","cLength","neAttrs","neAttrsMap","neAttr","j","cAttr","NOAH_ARK_CAPACITY","_ensureNoahArkCondition","ELEMENT_ENTRY","bookmarkIdx","LocationInfoOpenElementStackMixin","lastStartTagToken","lastFosterParentingLocation","loc","setNodeSourceCodeLocation","closingToken","getNodeSourceCodeLocation","endLoc","updateNodeSourceCodeLocation","tokenizerMixin","onItemPop","_setEndLocation","documentChildren","getChildNodes","cnLength","isDocumentTypeNode","_setStartLocation","tmplContent","hasFosterParent","textNodeIdx","textNode","_setPrototypeOf","sham","Proxy","Date","_typeof","assertThisInitialized","ReferenceError","ErrorReportingTokenizerMixin","locBeforeToken","ErrorReportingPreprocessorMixin","preprocessorMixin","lastErrOffset","superPropBase","receiver","desc","parentNode","createTextNode","newNode","referenceNode","templateElement","contentElement","doctypeNode","prevNode","recipientAttrsMap","getTextNodeContent","getCommentNodeContent","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isTextNode","isCommentNode","isElementNode","sourceCodeLocation","endLocation","defaults","merged","optObj","VALID_DOCTYPE_NAME","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","enquoteDoctypeId","quote","hasPrefix","prefixes","serializeContent","MIME_TYPES","SVG_ATTRS_ADJUSTMENT_MAP","attributename","attributetype","basefrequency","baseprofile","calcmode","clippathunits","diffuseconstant","edgemode","filterunits","glyphref","gradienttransform","gradientunits","kernelmatrix","kernelunitlength","keypoints","keysplines","keytimes","lengthadjust","limitingconeangle","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","numoctaves","pathlength","patterncontentunits","patterntransform","patternunits","pointsatx","pointsaty","pointsatz","preservealpha","preserveaspectratio","primitiveunits","refx","refy","repeatcount","repeatdur","requiredextensions","requiredfeatures","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","surfacescale","systemlanguage","tablevalues","targetx","targety","textlength","viewbox","viewtarget","xchannelselector","ychannelselector","zoomandpan","XML_ATTRS_ADJUSTMENT_MAP","SVG_TAG_NAMES_ADJUSTMENT_MAP","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","clippath","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","foreignobject","lineargradient","radialgradient","textpath","EXITS_FOREIGN_CONTENT","startTagToken","adjustedAttrName","adjustedAttrEntry","adjustedTagName","isHtmlIntegrationPoint","isMathMLTextIntegrationPoint","vfileLocation","ast","verbose","public","system","quirksMode","toPoint","opening","closing","subvalue","indices","offsetToPoint","toPosition","toOffset","toH","ignoredSpaces","attr","addAttribute","vdom","subprop","vue","hyperscript","react","cleanup","_isVue","vd","clean","nodeSchema","allowDoctypes","handleDoctypeName","allowComments","handleCommentValue","handleTagName","reqs","toPropertyValueMap","handlePropertyValues","handlePropertyValue","questionMark","numberSign","slash","handleProtocol","clobber","clobberPrefix","tagNames","ancestors","warningIssued","syntax","toMarkdown","blockTokenizers","visitors","combine","strikethrough","tasklist","www","w2","w3","dot","domain","hasUnderscoreInLastSegment","hasUnderscoreInLastLastSegment","namedCharacterReference","punctuationContinuation","punctuation","inPath","continuedPunctuation","parenAtPathEnd","pathEnd","trailingPunctuation","wwwAutolink","previousWww","httpAutolink","previousHttp","t1","t2","slash1","slash2","emailAutolink","hasDot","gfmAtext","previousEmail","atext","dotContinuation","dashOrUnderscoreContinuation","afterDashOrUnderscore","single","singleTilde","removeRemainingSequences","seenDelimiter","hasDash","tableHeaderCount","_align","cellDividerHead","inCellContentHead","cellBreakHead","setextUnderlineMini","createSpace","rowStartDelimiter","atRowEndHead","inWhitespaceHead","inCellContentEscapeHead","atDelimiterRowBreak","rowEndDelimiter","inWhitespaceDelimiter","inFillerDelimiter","afterLeftAlignment","afterRightAlignment","tableClose","nextPrefixedOrBlank","tableContinue","bodyStart","rowStartBody","cellDividerBody","inCellContentBody","cellBreakBody","tableBodyClose","tableBodyContinue","atRowEndBody","inWhitespaceBody","inCellContentEscapeBody","inHead","inDelimiterRow","inRow","cellStart","spaceFactory","tasklistCheck","spaceThenNonSpace","autolinkLiteral","taskListItem","ccount","findAndReplace","enterLiteralAutolinkValue","findUrl","isCorrectDomain","closingParenIndex","openingParens","closingParens","trail","splitUrl","findEmail","email","literalAutolink","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","character","handlerFactory","pairs","pair","subhandler","toExpression","toFunction","toPairs","escape","ignored","grandparent","enterCell","tableData","tableHeader","tableRow","exitCheck","taskListCheckValueChecked","taskListCheckValueUnchecked","firstParaghraph","unsafe","inConstruct","notInConstruct","phrasing","handleDelete","defaultInlineCode","markdownTable","padding","tableCellPadding","alignDelimiters","tablePipeAlign","stringLength","around","serializeData","subexit","handleTableRowAsData","handleTableAsData","tableCell","handleTableCell","matrix","patternCompile","expression","_compiled","repeat","cells","columnIndex","columnLength","largest","delimiterStart","delimiterEnd","alignments","defaultStringLength","rowIndex","rowLength","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","toAlignment","trailingWhitespace","defaultListItem","bullet","checkBullet","listItemIndent","checkListItemIndent","incrementListMarker","indentLines","blank","eol","deselectCurrent","clipboardToIE11Formatting","reselectPrevious","selection","success","createRange","getSelection","top","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","preventDefault","clipboardData","window","clearData","body","selectNodeContents","addRange","execCommand","copyKey","navigator","userAgent","removeRange","removeAllRanges","removeChild","rangeCount","activeElement","ranges","getRangeAt","blur","focus","theme","backgroundColor","styles","aa","ba","ca","da","ea","fa","ha","ia","ja","ka","_context","render","_render","_payload","_init","la","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ma","_threadCount","_currentValue2","J","K","oa","pa","qa","ra","sa","acceptsBooleans","attributeNamespace","propertyName","sanitizeURL","removeEmptyString","N","va","wa","xlinkHref","xa","O","ya","ta","ua","Aa","Q","T","V","W","Ba","memoizedState","queue","Ca","Da","Ea","Fa","Ga","dispatch","Ha","bind","Ia","Ja","X","Ka","readContext","threadID","useContext","useMemo","useReducer","useRef","useState","useLayoutEffect","useCallback","useImperativeHandle","useEffect","useDebugValue","useDeferredValue","useTransition","useOpaqueIdentifier","identifierPrefix","uniqueID","useMutableSource","_source","La","Ma","Na","area","br","embed","img","keygen","param","track","wbr","Oa","menuitem","Y","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","orphans","tabSize","widows","zIndex","zoom","strokeDasharray","strokeDashoffset","strokeMiterlimit","Pa","Qa","Ra","Z","Children","Sa","ReactCurrentDispatcher","Ta","listing","pre","textarea","Ua","Va","Wa","Ya","Za","dangerouslySetInnerHTML","suppressContentEditableWarning","suppressHydrationWarning","$a","ab","isReactComponent","contextType","contextTypes","na","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","getDerivedStateFromProps","updater","UNSAFE_componentWillMount","componentWillMount","getChildContext","childContextTypes","isValidElement","bb","domNamespace","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","destroy","clearProviders","pushProvider","popProvider","read","L","fallbackFrame","renderDOM","ref","defaultChecked","defaultValue","Xa","__html","renderToNodeStream","renderToStaticMarkup","renderToStaticNodeStream","renderToString","internalRe","tokens","diff","rcompare","compareLoose","sort","rsort","coerce","toComparators","maxSatisfying","minSatisfying","minVersion","validRange","outside","gtr","ltr","simplifyRange","subset","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","runClearTimeout","Item","nextTick","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","chdir","umask","version1","version2","v1","v2","hasPre","defaultResult","parsed","rtl","COERCERTL","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","LRUCache","lc","stale","maxAge","dispose","noDisposeOnSet","updateAgeOnGet","reset","mL","allowStale","mA","lC","hit","thisp","walker","prev","forEachStep","isStale","del","item","Entry","expiresAt","doUse","unshiftNode","removeNode","insert","inserted","Node","pushNode","forEachReverse","getReverse","mapReverse","acc","reduceReverse","toArrayReverse","sliceReverse","deleteCount","maxSV","rangeObj","minSV","minver","setMin","compver","r1","r2","simplified","original","arrayWithHoles","iterableToArrayLimit","nonIterableRest","_arr","_n","_d","_s","_i","simpleSubset","sub","dom","gtltComp","eqSet","higherGT","lowerLT","higher","lower","hasDomLT","hasDomGT","needDomLTPre","needDomGTPre","sawNonNull","OUTER","simpleSub","simpleDom","isSub","castFactory","propsFactory","emoticon","tags","description","emoticons","RE_EMOJI","RE_SHORT","RE_UNDERSTORE","DEFAULT_SETTINGS","padSpaceAfter","pad","emoticonEnable","getEmojiByShortCode","iconFull","iconPart","trimmedChar","addPad","getEmoji","got","endsWith","old","Prism","uniqueId","util","Token","alias","objId","visited","languages","redef","grammar","newToken","DFS","highlight","hooks","matchGrammar","strarr","startPos","oneshot","patterns","lookbehind","greedy","lookbehindLength","flags","delNum","rest","matchedStr","classes","aliases","markup","includedCdataInside","mathml","ssml","atom","rss","envVars","commandAfterHeredoc","insideString","bash","variable","toBeCopied","shell","clike","keyword","cpp","css","addInlined","selectorInside","unit","javascript","js","jsx","stringifyToken","walkTokens","openedTags","notTagNorBrace","openedBraces","plainText","withId","maybeClassNameTokens","interpolation","coffeescript","coffee","PREFIXES","git","graphql","markdown","getPlaceholder","defineProperties","buildPlaceholders","placeholderPattern","replaceFilter","tokenizePlaceholders","middle","handlebars","json","webmanifest","less","makefile","inner","createInline","tableLine","codeLang","codeBlock","cls","autoloader","valueOf","loadLanguages","ele","getElementById","md","objectivec","objc","ocaml","python","py","function","sass","atrule","important","scss","sql","stylus","typescript","typeInside","ts","tsx","wasm","anchorOrAlias","plainKey","createValuePattern","yml","textDecorationLine","_defineProperty","_extends","newlineRe","normalizeEmptyLines","empty","appendTypes","typesSize","themeToDict","themeDict","themeEntry","accStyle","objectWithoutProperties","Highlight","Component","this$1","prevTheme","prevLanguage","getThemeDict","baseStyle","typeStyles","getStyleForToken","typeArrStack","tokenArrStack","tokenArrIndexStack","tokenArrSizeStack","stackIndex","currentLine","splitByNewlines","newlineCount","i$1","normalizeTokens","getLineProps","getTokenProps","createDescendantContext","createContext","errorMessage","makeTabId","makeTabPanelId","Tabs","forwardRef","useMultiStyleConfig","omitThemingProps","lazyBehavior","defaultIndex","useControllableState","setFocusedIndex","descendants","useTabsDescendants","useId","selectedIndex","focusedIndex","setSelectedIndex","isManual","htmlProps","useTabs","rootProps","omit","__css","Tab","useStyles","tabProps","isFocusable","useTabsContext","useTabsDescendant","isDisabled","register","isSelected","clickableProps","useClickable","mergeRefs","callAllHandlers","useTab","tabStyles","outline","alignItems","justifyContent","TabList","tablistProps","useTabsDescendantsContext","nextTab","prevTab","isHorizontal","isVertical","eventKey","normalizeEventKey","ArrowStart","ArrowEnd","useTabList","tablistStyles","TabPanel","panelProps","hasBeenSelected","determineLazyBehavior","useTabPanel","tabpanel","TabPanels","panelsProps","getValidChildren","useTabPanels","tabpanels","TabIndicator","indicatorStyle","useSafeLayoutEffect","isUndefined","tab","setRect","offsetWidth","offsetHeight","requestAnimationFrame","setHasMeasured","cancelAnimationFrame","transitionProperty","transitionDuration","hasMeasured","transitionTimingFunction","useTabIndicator","indicator","useClipboard","optionsOrTimeout","didCopy","setHasCopied","timeoutId","hasCopied","Code","useStyleConfig","Table","TableCaption","placement","captionSide","Thead","thead","Tbody","tbody","Tfoot","tfoot","Th","isNumeric","Tr","tr","Td","createMediaQueries","breakpoints","maxWidth","query","minWidth","toMediaString","parseFloat","calculateMeasurement","subtract","createMediaQueryString","breakpoint","measurementRegex","isNumber","useBreakpointValue","defaultBreakpoint","useTheme","useEnvironment","mediaQueries","mediaQuery","currentBreakpoint","update","setCurrentBreakpoint","handleChange","useBreakpoint","defaultBreakPoints","stopIndex","getClosestValue","fromEntries","arrayToObjectNotation"],"mappings":"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AAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,IAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,KAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,G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CPC,YAAa,yBACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACEhjG,KAAM,MACNqyB,MAAO,eACPywE,KAAM,CAAC,SACPC,YAAa,yBACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACEhjG,KAAM,UACNqyB,MAAO,eACPywE,KAAM,GACNC,YAAa,eACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACEhjG,KAAM,WACNqyB,MAAO,eACPywE,KAAM,CAAC,QAAS,QAChBC,YAAa,0BACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,QAGJ,CACEhjG,KAAM,MACNqyB,MAAO,eACPywE,KAAM,CAAC,WAAY,SAAU,OAC7BC,YAAa,MACbC,UAAW,CAAC,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,QAExE,CACEhjG,KAAM,eACNqyB,MAAO,eACPywE,KAAM,CAAC,OACPC,YAAa,eACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACEhjG,KAAM,WACNqyB,MAAO,eACPywE,KAAM,CAAC,OAAQ,WACfC,YAAa,qBACbC,UAAW,CAAC,OAEd,CACEhjG,KAAM,aACNqyB,MAAO,eACPywE,KAAM,CAAC,WAAY,YAAa,OAChCC,YAAa,uBACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,QAGJ,CACEhjG,KAAM,OACNqyB,MAAO,eACPywE,KAAM,CAAC,SACPC,YAAa,eACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACEhjG,KAAM,QACNqyB,MAAO,eACPywE,KAAM,CAAC,QAAS,MAAO,QAAS,WAChCC,YAAa,kCACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACEhjG,KAAM,SACNqyB,MAAO,eACPywE,KAAM,CAAC,QAAS,MAAO,QACvBC,YAAa,8BACbC,UAAW,CAAC,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,MAAO,QAE3D,CACEhjG,KAAM,cACNqyB,MAAO,eACPywE,KAAM,CAAC,QAAS,OAAQ,SACxBC,YAAa,0BACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACEhjG,KAAM,MACNqyB,MAAO,eACPywE,KAAM,CAAC,MAAO,MAAO,WACrBC,YAAa,qBACbC,UAAW,CACT,OACA,OACA,QACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,QACA,UAGJ,CACEhjG,KAAM,mBACNqyB,MAAO,eACPywE,KAAM,GACNC,YAAa,mBACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,QAGJ,CACEhjG,KAAM,+BACNqyB,MAAO,eACPywE,KAAM,CAAC,SACPC,YAAa,6BACbC,UAAW,CAAC,KAAM,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,QAEnE,CACEhjG,KAAM,+BACNqyB,MAAO,eACPywE,KAAM,CAAC,QAAS,SAChBC,YAAa,2BACbC,UAAW,CAAC,KAAM,KAAM,KAAM,MAAO,MAAO,QAE9C,CACEhjG,KAAM,aACNqyB,MAAO,eACPywE,KAAM,CAAC,QACPC,YAAa,+BACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,QAGJ,CACEhjG,KAAM,QACNqyB,MAAO,eACPywE,KAAM,GACNC,YAAa,2BACbC,UAAW,CACT,MACA,MACA,OACA,OACA,MACA,MACA,OACA,OACA,MACA,MACA,OACA,OACA,MACA,MACA,OACA,SAGJ,CACEhjG,KAAM,cACNqyB,MAAO,eACPywE,KAAM,CAAC,OACPC,YAAa,2BACbC,UAAW,CAC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","file":"static/js/4.862b4ce7.chunk.js","sourcesContent":["'use strict'\n\nfunction markdownLineEnding(code) {\n return code < -2\n}\n\nmodule.exports = markdownLineEnding\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\n\nfunction spaceFactory(effects, ok, type, max) {\n var limit = max ? max - 1 : Infinity\n var size = 0\n return start\n\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n\nmodule.exports = spaceFactory\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nmodule.exports = all\n\nvar one = require('./one')\n\nfunction all(h, parent) {\n var nodes = parent.children || []\n var length = nodes.length\n var values = []\n var index = -1\n var result\n var head\n\n while (++index < length) {\n result = one(h, nodes[index], parent)\n\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (result.value) {\n result.value = result.value.replace(/^\\s+/, '')\n }\n\n head = result.children && result.children[0]\n\n if (head && head.value) {\n head.value = head.value.replace(/^\\s+/, '')\n }\n }\n\n values = values.concat(result)\n }\n }\n\n return values\n}\n","'use strict'\n\nmodule.exports = u\n\nfunction u(type, props, value) {\n var node\n\n if (\n (value === null || value === undefined) &&\n (typeof props !== 'object' || Array.isArray(props))\n ) {\n value = props\n props = {}\n }\n\n node = Object.assign({type: String(type)}, props)\n\n if (Array.isArray(value)) {\n node.children = value\n } else if (value !== null && value !== undefined) {\n node.value = String(value)\n }\n\n return node\n}\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split(/\\s*\\|\\|\\s*/)\n // map the range to a 2d array of comparators\n .map(range => this.parseRange(range.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0)\n this.set = [first]\n else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = Object.keys(this.options).join(',')\n const memoKey = `parseRange:${memoOpts}:${range}`\n const cached = cache.get(memoKey)\n if (cached)\n return cached\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n // in loose mode, throw out any that are not valid comparators\n .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)\n .map(comp => new Comparator(comp, this.options))\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const l = rangeList.length\n const rangeMap = new Map()\n for (const comp of rangeList) {\n if (isNullSet(comp))\n return [comp]\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has(''))\n rangeMap.delete('')\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceTilde(comp, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceCaret(comp, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((comp) => {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<')\n pr = '-0'\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nfunction markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\nmodule.exports = markdownSpace\n","'use strict'\n\nvar splice = require('../constant/splice.js')\n\n// causes a stack overflow in V8 when trying to insert 100k items for instance.\n\nfunction chunkedSplice(list, start, remove, items) {\n var end = list.length\n var chunkStart = 0\n var parameters // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n splice.apply(list, parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0)\n splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\nmodule.exports = chunkedSplice\n","'use strict'\n\nfunction markdownLineEndingOrSpace(code) {\n return code < 0 || code === 32\n}\n\nmodule.exports = markdownLineEndingOrSpace\n","'use strict';\n\nclass Mixin {\n constructor(host) {\n const originalMethods = {};\n const overriddenMethods = this._getOverriddenMethods(this, originalMethods);\n\n for (const key of Object.keys(overriddenMethods)) {\n if (typeof overriddenMethods[key] === 'function') {\n originalMethods[key] = host[key];\n host[key] = overriddenMethods[key];\n }\n }\n }\n\n _getOverriddenMethods() {\n throw new Error('Not implemented');\n }\n}\n\nMixin.install = function(host, Ctor, opts) {\n if (!host.__mixins) {\n host.__mixins = [];\n }\n\n for (let i = 0; i < host.__mixins.length; i++) {\n if (host.__mixins[i].constructor === Ctor) {\n return host.__mixins[i];\n }\n }\n\n const mixin = new Ctor(host, opts);\n\n host.__mixins.push(mixin);\n\n return mixin;\n};\n\nmodule.exports = Mixin;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction regexCheck(regex) {\n return check\n\n function check(code) {\n return regex.test(fromCharCode(code))\n }\n}\n\nmodule.exports = regexCheck\n","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper;","'use strict'\n\nvar assign = require('../constant/assign.js')\n\nfunction shallow(object) {\n return assign({}, object)\n}\n\nmodule.exports = shallow\n","'use strict'\n\nvar normalize = require('../../normalize')\nvar Schema = require('./schema')\nvar DefinedInfo = require('./defined-info')\n\nmodule.exports = create\n\nfunction create(definition) {\n var space = definition.space\n var mustUseProperty = definition.mustUseProperty || []\n var attributes = definition.attributes || {}\n var props = definition.properties\n var transform = definition.transform\n var property = {}\n var normal = {}\n var prop\n var info\n\n for (prop in props) {\n info = new DefinedInfo(\n prop,\n transform(attributes, prop),\n props[prop],\n space\n )\n\n if (mustUseProperty.indexOf(prop) !== -1) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n\n return new Schema(property, normal, space)\n}\n","'use strict';\n\nconst NS = (exports.NAMESPACES = {\n HTML: 'http://www.w3.org/1999/xhtml',\n MATHML: 'http://www.w3.org/1998/Math/MathML',\n SVG: 'http://www.w3.org/2000/svg',\n XLINK: 'http://www.w3.org/1999/xlink',\n XML: 'http://www.w3.org/XML/1998/namespace',\n XMLNS: 'http://www.w3.org/2000/xmlns/'\n});\n\nexports.ATTRS = {\n TYPE: 'type',\n ACTION: 'action',\n ENCODING: 'encoding',\n PROMPT: 'prompt',\n NAME: 'name',\n COLOR: 'color',\n FACE: 'face',\n SIZE: 'size'\n};\n\nexports.DOCUMENT_MODE = {\n NO_QUIRKS: 'no-quirks',\n QUIRKS: 'quirks',\n LIMITED_QUIRKS: 'limited-quirks'\n};\n\nconst $ = (exports.TAG_NAMES = {\n A: 'a',\n ADDRESS: 'address',\n ANNOTATION_XML: 'annotation-xml',\n APPLET: 'applet',\n AREA: 'area',\n ARTICLE: 'article',\n ASIDE: 'aside',\n\n B: 'b',\n BASE: 'base',\n BASEFONT: 'basefont',\n BGSOUND: 'bgsound',\n BIG: 'big',\n BLOCKQUOTE: 'blockquote',\n BODY: 'body',\n BR: 'br',\n BUTTON: 'button',\n\n CAPTION: 'caption',\n CENTER: 'center',\n CODE: 'code',\n COL: 'col',\n COLGROUP: 'colgroup',\n\n DD: 'dd',\n DESC: 'desc',\n DETAILS: 'details',\n DIALOG: 'dialog',\n DIR: 'dir',\n DIV: 'div',\n DL: 'dl',\n DT: 'dt',\n\n EM: 'em',\n EMBED: 'embed',\n\n FIELDSET: 'fieldset',\n FIGCAPTION: 'figcaption',\n FIGURE: 'figure',\n FONT: 'font',\n FOOTER: 'footer',\n FOREIGN_OBJECT: 'foreignObject',\n FORM: 'form',\n FRAME: 'frame',\n FRAMESET: 'frameset',\n\n H1: 'h1',\n H2: 'h2',\n H3: 'h3',\n H4: 'h4',\n H5: 'h5',\n H6: 'h6',\n HEAD: 'head',\n HEADER: 'header',\n HGROUP: 'hgroup',\n HR: 'hr',\n HTML: 'html',\n\n I: 'i',\n IMG: 'img',\n IMAGE: 'image',\n INPUT: 'input',\n IFRAME: 'iframe',\n\n KEYGEN: 'keygen',\n\n LABEL: 'label',\n LI: 'li',\n LINK: 'link',\n LISTING: 'listing',\n\n MAIN: 'main',\n MALIGNMARK: 'malignmark',\n MARQUEE: 'marquee',\n MATH: 'math',\n MENU: 'menu',\n META: 'meta',\n MGLYPH: 'mglyph',\n MI: 'mi',\n MO: 'mo',\n MN: 'mn',\n MS: 'ms',\n MTEXT: 'mtext',\n\n NAV: 'nav',\n NOBR: 'nobr',\n NOFRAMES: 'noframes',\n NOEMBED: 'noembed',\n NOSCRIPT: 'noscript',\n\n OBJECT: 'object',\n OL: 'ol',\n OPTGROUP: 'optgroup',\n OPTION: 'option',\n\n P: 'p',\n PARAM: 'param',\n PLAINTEXT: 'plaintext',\n PRE: 'pre',\n\n RB: 'rb',\n RP: 'rp',\n RT: 'rt',\n RTC: 'rtc',\n RUBY: 'ruby',\n\n S: 's',\n SCRIPT: 'script',\n SECTION: 'section',\n SELECT: 'select',\n SOURCE: 'source',\n SMALL: 'small',\n SPAN: 'span',\n STRIKE: 'strike',\n STRONG: 'strong',\n STYLE: 'style',\n SUB: 'sub',\n SUMMARY: 'summary',\n SUP: 'sup',\n\n TABLE: 'table',\n TBODY: 'tbody',\n TEMPLATE: 'template',\n TEXTAREA: 'textarea',\n TFOOT: 'tfoot',\n TD: 'td',\n TH: 'th',\n THEAD: 'thead',\n TITLE: 'title',\n TR: 'tr',\n TRACK: 'track',\n TT: 'tt',\n\n U: 'u',\n UL: 'ul',\n\n SVG: 'svg',\n\n VAR: 'var',\n\n WBR: 'wbr',\n\n XMP: 'xmp'\n});\n\nexports.SPECIAL_ELEMENTS = {\n [NS.HTML]: {\n [$.ADDRESS]: true,\n [$.APPLET]: true,\n [$.AREA]: true,\n [$.ARTICLE]: true,\n [$.ASIDE]: true,\n [$.BASE]: true,\n [$.BASEFONT]: true,\n [$.BGSOUND]: true,\n [$.BLOCKQUOTE]: true,\n [$.BODY]: true,\n [$.BR]: true,\n [$.BUTTON]: true,\n [$.CAPTION]: true,\n [$.CENTER]: true,\n [$.COL]: true,\n [$.COLGROUP]: true,\n [$.DD]: true,\n [$.DETAILS]: true,\n [$.DIR]: true,\n [$.DIV]: true,\n [$.DL]: true,\n [$.DT]: true,\n [$.EMBED]: true,\n [$.FIELDSET]: true,\n [$.FIGCAPTION]: true,\n [$.FIGURE]: true,\n [$.FOOTER]: true,\n [$.FORM]: true,\n [$.FRAME]: true,\n [$.FRAMESET]: true,\n [$.H1]: true,\n [$.H2]: true,\n [$.H3]: true,\n [$.H4]: true,\n [$.H5]: true,\n [$.H6]: true,\n [$.HEAD]: true,\n [$.HEADER]: true,\n [$.HGROUP]: true,\n [$.HR]: true,\n [$.HTML]: true,\n [$.IFRAME]: true,\n [$.IMG]: true,\n [$.INPUT]: true,\n [$.LI]: true,\n [$.LINK]: true,\n [$.LISTING]: true,\n [$.MAIN]: true,\n [$.MARQUEE]: true,\n [$.MENU]: true,\n [$.META]: true,\n [$.NAV]: true,\n [$.NOEMBED]: true,\n [$.NOFRAMES]: true,\n [$.NOSCRIPT]: true,\n [$.OBJECT]: true,\n [$.OL]: true,\n [$.P]: true,\n [$.PARAM]: true,\n [$.PLAINTEXT]: true,\n [$.PRE]: true,\n [$.SCRIPT]: true,\n [$.SECTION]: true,\n [$.SELECT]: true,\n [$.SOURCE]: true,\n [$.STYLE]: true,\n [$.SUMMARY]: true,\n [$.TABLE]: true,\n [$.TBODY]: true,\n [$.TD]: true,\n [$.TEMPLATE]: true,\n [$.TEXTAREA]: true,\n [$.TFOOT]: true,\n [$.TH]: true,\n [$.THEAD]: true,\n [$.TITLE]: true,\n [$.TR]: true,\n [$.TRACK]: true,\n [$.UL]: true,\n [$.WBR]: true,\n [$.XMP]: true\n },\n [NS.MATHML]: {\n [$.MI]: true,\n [$.MO]: true,\n [$.MN]: true,\n [$.MS]: true,\n [$.MTEXT]: true,\n [$.ANNOTATION_XML]: true\n },\n [NS.SVG]: {\n [$.TITLE]: true,\n [$.FOREIGN_OBJECT]: true,\n [$.DESC]: true\n }\n};\n","const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\.0\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\.0\\.0-0\\\\s*$')\n","const {MAX_LENGTH} = require('../internal/constants')\nconst { re, t } = require('../internal/re')\nconst SemVer = require('../classes/semver')\n\nconst parseOptions = require('../internal/parse-options')\nconst parse = (version, options) => {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nmodule.exports = parse\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","'use strict'\n\nvar assign = Object.assign\n\nmodule.exports = assign\n","'use strict'\n\nvar sizeChunks = require('./size-chunks.js')\n\nfunction prefixSize(events, type) {\n var tail = events[events.length - 1]\n if (!tail || tail[1].type !== type) return 0\n return sizeChunks(tail[2].sliceStream(tail[1]))\n}\n\nmodule.exports = prefixSize\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\nmodule.exports = asciiAlphanumeric\n","'use strict'\n\nmodule.exports = wrap\n\nvar u = require('unist-builder')\n\n// Wrap `nodes` with line feeds between each entry.\n// Optionally adds line feeds at the start and end.\nfunction wrap(nodes, loose) {\n var result = []\n var index = -1\n var length = nodes.length\n\n if (loose) {\n result.push(u('text', '\\n'))\n }\n\n while (++index < length) {\n if (index) {\n result.push(u('text', '\\n'))\n }\n\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push(u('text', '\\n'))\n }\n\n return result\n}\n","'use strict'\n\nvar merge = require('./lib/util/merge')\nvar xlink = require('./lib/xlink')\nvar xml = require('./lib/xml')\nvar xmlns = require('./lib/xmlns')\nvar aria = require('./lib/aria')\nvar html = require('./lib/html')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, html])\n","'use strict'\n\nvar merge = require('./lib/util/merge')\nvar xlink = require('./lib/xlink')\nvar xml = require('./lib/xml')\nvar xmlns = require('./lib/xmlns')\nvar aria = require('./lib/aria')\nvar svg = require('./lib/svg')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, svg])\n","'use strict'\n\nvar normalize = require('./normalize')\nvar DefinedInfo = require('./lib/util/defined-info')\nvar Info = require('./lib/util/info')\n\nvar data = 'data'\n\nmodule.exports = find\n\nvar valid = /^data[-\\w.:]+$/i\nvar dash = /-[a-z]/g\nvar cap = /[A-Z]/g\n\nfunction find(schema, value) {\n var normal = normalize(value)\n var prop = value\n var Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === data && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n prop = datasetToProperty(value)\n } else {\n value = datasetToAttribute(value)\n }\n\n Type = DefinedInfo\n }\n\n return new Type(prop, value)\n}\n\nfunction datasetToProperty(attribute) {\n var value = attribute.slice(5).replace(dash, camelcase)\n return data + value.charAt(0).toUpperCase() + value.slice(1)\n}\n\nfunction datasetToAttribute(property) {\n var value = property.slice(4)\n\n if (dash.test(value)) {\n return property\n }\n\n value = value.replace(cap, kebab)\n\n if (value.charAt(0) !== '-') {\n value = '-' + value\n }\n\n return data + value\n}\n\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","'use strict'\n\nvar fromCharCode = String.fromCharCode\n\nmodule.exports = fromCharCode\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nvar partialBlankLine = {\n tokenize: tokenizePartialBlankLine,\n partial: true\n}\n\nfunction tokenizePartialBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = partialBlankLine\n","'use strict'\n\nfunction resolveAll(constructs, events, context) {\n var called = []\n var index = -1\n var resolve\n\n while (++index < constructs.length) {\n resolve = constructs[index].resolveAll\n\n if (resolve && called.indexOf(resolve) < 0) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n\nmodule.exports = resolveAll\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlpha = regexCheck(/[A-Za-z]/)\n\nmodule.exports = asciiAlpha\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1]\n var index = parent ? parent.children.indexOf(node) : null\n return visitor(node, index, parent)\n }\n}\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","'use strict'\n\nvar powers = 0\n\nexports.boolean = increment()\nexports.booleanish = increment()\nexports.overloadedBoolean = increment()\nexports.number = increment()\nexports.spaceSeparated = increment()\nexports.commaSeparated = increment()\nexports.commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return Math.pow(2, ++powers)\n}\n","'use strict';\n\nconst Preprocessor = require('./preprocessor');\nconst unicode = require('../common/unicode');\nconst neTree = require('./named-entity-data');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\nconst $$ = unicode.CODE_POINT_SEQUENCES;\n\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = {\n 0x80: 0x20ac,\n 0x82: 0x201a,\n 0x83: 0x0192,\n 0x84: 0x201e,\n 0x85: 0x2026,\n 0x86: 0x2020,\n 0x87: 0x2021,\n 0x88: 0x02c6,\n 0x89: 0x2030,\n 0x8a: 0x0160,\n 0x8b: 0x2039,\n 0x8c: 0x0152,\n 0x8e: 0x017d,\n 0x91: 0x2018,\n 0x92: 0x2019,\n 0x93: 0x201c,\n 0x94: 0x201d,\n 0x95: 0x2022,\n 0x96: 0x2013,\n 0x97: 0x2014,\n 0x98: 0x02dc,\n 0x99: 0x2122,\n 0x9a: 0x0161,\n 0x9b: 0x203a,\n 0x9c: 0x0153,\n 0x9e: 0x017e,\n 0x9f: 0x0178\n};\n\n// Named entity tree flags\nconst HAS_DATA_FLAG = 1 << 0;\nconst DATA_DUPLET_FLAG = 1 << 1;\nconst HAS_BRANCHES_FLAG = 1 << 2;\nconst MAX_BRANCH_MARKER_VALUE = HAS_DATA_FLAG | DATA_DUPLET_FLAG | HAS_BRANCHES_FLAG;\n\n//States\nconst DATA_STATE = 'DATA_STATE';\nconst RCDATA_STATE = 'RCDATA_STATE';\nconst RAWTEXT_STATE = 'RAWTEXT_STATE';\nconst SCRIPT_DATA_STATE = 'SCRIPT_DATA_STATE';\nconst PLAINTEXT_STATE = 'PLAINTEXT_STATE';\nconst TAG_OPEN_STATE = 'TAG_OPEN_STATE';\nconst END_TAG_OPEN_STATE = 'END_TAG_OPEN_STATE';\nconst TAG_NAME_STATE = 'TAG_NAME_STATE';\nconst RCDATA_LESS_THAN_SIGN_STATE = 'RCDATA_LESS_THAN_SIGN_STATE';\nconst RCDATA_END_TAG_OPEN_STATE = 'RCDATA_END_TAG_OPEN_STATE';\nconst RCDATA_END_TAG_NAME_STATE = 'RCDATA_END_TAG_NAME_STATE';\nconst RAWTEXT_LESS_THAN_SIGN_STATE = 'RAWTEXT_LESS_THAN_SIGN_STATE';\nconst RAWTEXT_END_TAG_OPEN_STATE = 'RAWTEXT_END_TAG_OPEN_STATE';\nconst RAWTEXT_END_TAG_NAME_STATE = 'RAWTEXT_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_END_TAG_OPEN_STATE = 'SCRIPT_DATA_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_END_TAG_NAME_STATE = 'SCRIPT_DATA_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_ESCAPE_START_STATE = 'SCRIPT_DATA_ESCAPE_START_STATE';\nconst SCRIPT_DATA_ESCAPE_START_DASH_STATE = 'SCRIPT_DATA_ESCAPE_START_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_STATE = 'SCRIPT_DATA_ESCAPED_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE';\nconst BEFORE_ATTRIBUTE_NAME_STATE = 'BEFORE_ATTRIBUTE_NAME_STATE';\nconst ATTRIBUTE_NAME_STATE = 'ATTRIBUTE_NAME_STATE';\nconst AFTER_ATTRIBUTE_NAME_STATE = 'AFTER_ATTRIBUTE_NAME_STATE';\nconst BEFORE_ATTRIBUTE_VALUE_STATE = 'BEFORE_ATTRIBUTE_VALUE_STATE';\nconst ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_UNQUOTED_STATE = 'ATTRIBUTE_VALUE_UNQUOTED_STATE';\nconst AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = 'AFTER_ATTRIBUTE_VALUE_QUOTED_STATE';\nconst SELF_CLOSING_START_TAG_STATE = 'SELF_CLOSING_START_TAG_STATE';\nconst BOGUS_COMMENT_STATE = 'BOGUS_COMMENT_STATE';\nconst MARKUP_DECLARATION_OPEN_STATE = 'MARKUP_DECLARATION_OPEN_STATE';\nconst COMMENT_START_STATE = 'COMMENT_START_STATE';\nconst COMMENT_START_DASH_STATE = 'COMMENT_START_DASH_STATE';\nconst COMMENT_STATE = 'COMMENT_STATE';\nconst COMMENT_LESS_THAN_SIGN_STATE = 'COMMENT_LESS_THAN_SIGN_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE';\nconst COMMENT_END_DASH_STATE = 'COMMENT_END_DASH_STATE';\nconst COMMENT_END_STATE = 'COMMENT_END_STATE';\nconst COMMENT_END_BANG_STATE = 'COMMENT_END_BANG_STATE';\nconst DOCTYPE_STATE = 'DOCTYPE_STATE';\nconst BEFORE_DOCTYPE_NAME_STATE = 'BEFORE_DOCTYPE_NAME_STATE';\nconst DOCTYPE_NAME_STATE = 'DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_NAME_STATE = 'AFTER_DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE = 'AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = 'BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE';\nconst AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE = 'AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst BOGUS_DOCTYPE_STATE = 'BOGUS_DOCTYPE_STATE';\nconst CDATA_SECTION_STATE = 'CDATA_SECTION_STATE';\nconst CDATA_SECTION_BRACKET_STATE = 'CDATA_SECTION_BRACKET_STATE';\nconst CDATA_SECTION_END_STATE = 'CDATA_SECTION_END_STATE';\nconst CHARACTER_REFERENCE_STATE = 'CHARACTER_REFERENCE_STATE';\nconst NAMED_CHARACTER_REFERENCE_STATE = 'NAMED_CHARACTER_REFERENCE_STATE';\nconst AMBIGUOUS_AMPERSAND_STATE = 'AMBIGUOS_AMPERSAND_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_STATE = 'NUMERIC_CHARACTER_REFERENCE_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_START_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_START_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_START_STATE = 'DECIMAL_CHARACTER_REFERENCE_START_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_STATE = 'DECIMAL_CHARACTER_REFERENCE_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_END_STATE = 'NUMERIC_CHARACTER_REFERENCE_END_STATE';\n\n//Utils\n\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\n\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\n\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\n\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\n\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\n\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\n\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\n\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\n\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\n\nfunction toAsciiLowerCodePoint(cp) {\n return cp + 0x0020;\n}\n\n//NOTE: String.fromCharCode() function can handle only characters from BMP subset.\n//So, we need to workaround this manually.\n//(see: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/fromCharCode#Getting_it_to_work_with_higher_values)\nfunction toChar(cp) {\n if (cp <= 0xffff) {\n return String.fromCharCode(cp);\n }\n\n cp -= 0x10000;\n return String.fromCharCode(((cp >>> 10) & 0x3ff) | 0xd800) + String.fromCharCode(0xdc00 | (cp & 0x3ff));\n}\n\nfunction toAsciiLowerChar(cp) {\n return String.fromCharCode(toAsciiLowerCodePoint(cp));\n}\n\nfunction findNamedEntityTreeBranch(nodeIx, cp) {\n const branchCount = neTree[++nodeIx];\n let lo = ++nodeIx;\n let hi = lo + branchCount - 1;\n\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midCp = neTree[mid];\n\n if (midCp < cp) {\n lo = mid + 1;\n } else if (midCp > cp) {\n hi = mid - 1;\n } else {\n return neTree[mid + branchCount];\n }\n }\n\n return -1;\n}\n\n//Tokenizer\nclass Tokenizer {\n constructor() {\n this.preprocessor = new Preprocessor();\n\n this.tokenQueue = [];\n\n this.allowCDATA = false;\n\n this.state = DATA_STATE;\n this.returnState = '';\n\n this.charRefCode = -1;\n this.tempBuff = [];\n this.lastStartTagName = '';\n\n this.consumedAfterSnapshot = -1;\n this.active = false;\n\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = null;\n }\n\n //Errors\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n _errOnNextCodePoint(err) {\n this._consume();\n this._err(err);\n this._unconsume();\n }\n\n //API\n getNextToken() {\n while (!this.tokenQueue.length && this.active) {\n this.consumedAfterSnapshot = 0;\n\n const cp = this._consume();\n\n if (!this._ensureHibernation()) {\n this[this.state](cp);\n }\n }\n\n return this.tokenQueue.shift();\n }\n\n write(chunk, isLastChunk) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n }\n\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n }\n\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--) {\n this.preprocessor.retreat();\n }\n\n this.active = false;\n this.tokenQueue.push({ type: Tokenizer.HIBERNATION_TOKEN });\n\n return true;\n }\n\n return false;\n }\n\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n\n _unconsume() {\n this.consumedAfterSnapshot--;\n this.preprocessor.retreat();\n }\n\n _reconsumeInState(state) {\n this.state = state;\n this._unconsume();\n }\n\n _consumeSequenceIfMatch(pattern, startCp, caseSensitive) {\n let consumedCount = 0;\n let isMatch = true;\n const patternLength = pattern.length;\n let patternPos = 0;\n let cp = startCp;\n let patternCp = void 0;\n\n for (; patternPos < patternLength; patternPos++) {\n if (patternPos > 0) {\n cp = this._consume();\n consumedCount++;\n }\n\n if (cp === $.EOF) {\n isMatch = false;\n break;\n }\n\n patternCp = pattern[patternPos];\n\n if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {\n isMatch = false;\n break;\n }\n }\n\n if (!isMatch) {\n while (consumedCount--) {\n this._unconsume();\n }\n }\n\n return isMatch;\n }\n\n //Temp buffer\n _isTempBufferEqualToScriptString() {\n if (this.tempBuff.length !== $$.SCRIPT_STRING.length) {\n return false;\n }\n\n for (let i = 0; i < this.tempBuff.length; i++) {\n if (this.tempBuff[i] !== $$.SCRIPT_STRING[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: Tokenizer.START_TAG_TOKEN,\n tagName: '',\n selfClosing: false,\n ackSelfClosing: false,\n attrs: []\n };\n }\n\n _createEndTagToken() {\n this.currentToken = {\n type: Tokenizer.END_TAG_TOKEN,\n tagName: '',\n selfClosing: false,\n attrs: []\n };\n }\n\n _createCommentToken() {\n this.currentToken = {\n type: Tokenizer.COMMENT_TOKEN,\n data: ''\n };\n }\n\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: Tokenizer.DOCTYPE_TOKEN,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null\n };\n }\n\n _createCharacterToken(type, ch) {\n this.currentCharacterToken = {\n type: type,\n chars: ch\n };\n }\n\n _createEOFToken() {\n this.currentToken = { type: Tokenizer.EOF_TOKEN };\n }\n\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: ''\n };\n }\n\n _leaveAttrName(toState) {\n if (Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) === null) {\n this.currentToken.attrs.push(this.currentAttr);\n } else {\n this._err(ERR.duplicateAttribute);\n }\n\n this.state = toState;\n }\n\n _leaveAttrValue(toState) {\n this.state = toState;\n }\n\n //Token emission\n _emitCurrentToken() {\n this._emitCurrentCharacterToken();\n\n const ct = this.currentToken;\n\n this.currentToken = null;\n\n //NOTE: store emited start tag's tagName to determine is the following end tag token is appropriate.\n if (ct.type === Tokenizer.START_TAG_TOKEN) {\n this.lastStartTagName = ct.tagName;\n } else if (ct.type === Tokenizer.END_TAG_TOKEN) {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n }\n\n this.tokenQueue.push(ct);\n }\n\n _emitCurrentCharacterToken() {\n if (this.currentCharacterToken) {\n this.tokenQueue.push(this.currentCharacterToken);\n this.currentCharacterToken = null;\n }\n }\n\n _emitEOFToken() {\n this._createEOFToken();\n this._emitCurrentToken();\n }\n\n //Characters emission\n\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)NULL_CHARACTER_TOKEN - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)WHITESPACE_CHARACTER_TOKEN - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)CHARACTER_TOKEN - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken && this.currentCharacterToken.type !== type) {\n this._emitCurrentCharacterToken();\n }\n\n if (this.currentCharacterToken) {\n this.currentCharacterToken.chars += ch;\n } else {\n this._createCharacterToken(type, ch);\n }\n }\n\n _emitCodePoint(cp) {\n let type = Tokenizer.CHARACTER_TOKEN;\n\n if (isWhitespace(cp)) {\n type = Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n } else if (cp === $.NULL) {\n type = Tokenizer.NULL_CHARACTER_TOKEN;\n }\n\n this._appendCharToCurrentCharacterToken(type, toChar(cp));\n }\n\n _emitSeveralCodePoints(codePoints) {\n for (let i = 0; i < codePoints.length; i++) {\n this._emitCodePoint(codePoints[i]);\n }\n }\n\n //NOTE: used then we emit character explicitly. This is always a non-whitespace and a non-null character.\n //So we can avoid additional checks here.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(Tokenizer.CHARACTER_TOKEN, ch);\n }\n\n // Character reference helpers\n _matchNamedCharacterReference(startCp) {\n let result = null;\n let excess = 1;\n let i = findNamedEntityTreeBranch(0, startCp);\n\n this.tempBuff.push(startCp);\n\n while (i > -1) {\n const current = neTree[i];\n const inNode = current < MAX_BRANCH_MARKER_VALUE;\n const nodeWithData = inNode && current & HAS_DATA_FLAG;\n\n if (nodeWithData) {\n //NOTE: we use greedy search, so we continue lookup at this point\n result = current & DATA_DUPLET_FLAG ? [neTree[++i], neTree[++i]] : [neTree[++i]];\n excess = 0;\n }\n\n const cp = this._consume();\n\n this.tempBuff.push(cp);\n excess++;\n\n if (cp === $.EOF) {\n break;\n }\n\n if (inNode) {\n i = current & HAS_BRANCHES_FLAG ? findNamedEntityTreeBranch(i, cp) : -1;\n } else {\n i = cp === current ? ++i : -1;\n }\n }\n\n while (excess--) {\n this.tempBuff.pop();\n this._unconsume();\n }\n\n return result;\n }\n\n _isCharacterReferenceInAttribute() {\n return (\n this.returnState === ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE ||\n this.returnState === ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE ||\n this.returnState === ATTRIBUTE_VALUE_UNQUOTED_STATE\n );\n }\n\n _isCharacterReferenceAttributeQuirk(withSemicolon) {\n if (!withSemicolon && this._isCharacterReferenceInAttribute()) {\n const nextCp = this._consume();\n\n this._unconsume();\n\n return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n }\n\n return false;\n }\n\n _flushCodePointsConsumedAsCharacterReference() {\n if (this._isCharacterReferenceInAttribute()) {\n for (let i = 0; i < this.tempBuff.length; i++) {\n this.currentAttr.value += toChar(this.tempBuff[i]);\n }\n } else {\n this._emitSeveralCodePoints(this.tempBuff);\n }\n\n this.tempBuff = [];\n }\n\n // State machine\n\n // Data state\n //------------------------------------------------------------------\n [DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = TAG_OPEN_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = DATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // RCDATA state\n //------------------------------------------------------------------\n [RCDATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.AMPERSAND) {\n this.returnState = RCDATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = RCDATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // RAWTEXT state\n //------------------------------------------------------------------\n [RAWTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = RAWTEXT_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data state\n //------------------------------------------------------------------\n [SCRIPT_DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // PLAINTEXT state\n //------------------------------------------------------------------\n [PLAINTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Tag open state\n //------------------------------------------------------------------\n [TAG_OPEN_STATE](cp) {\n if (cp === $.EXCLAMATION_MARK) {\n this.state = MARKUP_DECLARATION_OPEN_STATE;\n } else if (cp === $.SOLIDUS) {\n this.state = END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $.QUESTION_MARK) {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n } else if (cp === $.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this._reconsumeInState(DATA_STATE);\n }\n }\n\n // End tag open state\n //------------------------------------------------------------------\n [END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingEndTagName);\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n\n // Tag name state\n //------------------------------------------------------------------\n [TAG_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n } else if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.tagName += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentToken.tagName += toChar(cp);\n }\n }\n\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n [RCDATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = RCDATA_END_TAG_OPEN_STATE;\n } else {\n this._emitChars('<');\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RCDATA end tag open state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RCDATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RCDATA end tag name state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n [RAWTEXT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = RAWTEXT_END_TAG_OPEN_STATE;\n } else {\n this._emitChars('<');\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RAWTEXT_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // Script data less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_END_TAG_OPEN_STATE;\n } else if (cp === $.EXCLAMATION_MARK) {\n this.state = SCRIPT_DATA_ESCAPE_START_STATE;\n this._emitChars('<!');\n } else {\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n } else if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPE_START_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPE_START_DASH_STATE;\n this._emitChars('-');\n } else {\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escape start dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPE_START_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else {\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars('>');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this.tempBuff = [];\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);\n } else {\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data double escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString()\n ? SCRIPT_DATA_DOUBLE_ESCAPED_STATE\n : SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data double escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars('>');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;\n this._emitChars('/');\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n\n // Script data double escape end state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString()\n ? SCRIPT_DATA_ESCAPED_STATE\n : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n\n // Before attribute name state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.EQUALS_SIGN) {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = ATTRIBUTE_NAME_STATE;\n } else {\n this._createAttr('');\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Attribute name state\n //------------------------------------------------------------------\n [ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);\n this._unconsume();\n } else if (cp === $.EQUALS_SIGN) {\n this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);\n } else if (isAsciiUpper(cp)) {\n this.currentAttr.name += toAsciiLowerChar(cp);\n } else if (cp === $.QUOTATION_MARK || cp === $.APOSTROPHE || cp === $.LESS_THAN_SIGN) {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += toChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentAttr.name += toChar(cp);\n }\n }\n\n // After attribute name state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $.EQUALS_SIGN) {\n this.state = BEFORE_ATTRIBUTE_VALUE_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._createAttr('');\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Before attribute value state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_VALUE_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingAttributeValue);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);\n }\n }\n\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_UNQUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_UNQUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (\n cp === $.QUOTATION_MARK ||\n cp === $.APOSTROPHE ||\n cp === $.LESS_THAN_SIGN ||\n cp === $.EQUALS_SIGN ||\n cp === $.GRAVE_ACCENT\n ) {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += toChar(cp);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_VALUE_QUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.SOLIDUS) {\n this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Self-closing start tag state\n //------------------------------------------------------------------\n [SELF_CLOSING_START_TAG_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.currentToken.selfClosing = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedSolidusInTag);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Bogus comment state\n //------------------------------------------------------------------\n [BOGUS_COMMENT_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n\n // Markup declaration open state\n //------------------------------------------------------------------\n [MARKUP_DECLARATION_OPEN_STATE](cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH_STRING, cp, true)) {\n this._createCommentToken();\n this.state = COMMENT_START_STATE;\n } else if (this._consumeSequenceIfMatch($$.DOCTYPE_STRING, cp, false)) {\n this.state = DOCTYPE_STATE;\n } else if (this._consumeSequenceIfMatch($$.CDATA_START_STRING, cp, true)) {\n if (this.allowCDATA) {\n this.state = CDATA_SECTION_STATE;\n } else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken();\n this.currentToken.data = '[CDATA[';\n this.state = BOGUS_COMMENT_STATE;\n }\n }\n\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n\n // Comment start state\n //------------------------------------------------------------------\n [COMMENT_START_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_START_DASH_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment start dash state\n //------------------------------------------------------------------\n [COMMENT_START_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '-';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment state\n //------------------------------------------------------------------\n [COMMENT_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.currentToken.data += '<';\n this.state = COMMENT_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n\n // Comment less-than sign state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.EXCLAMATION_MARK) {\n this.currentToken.data += '!';\n this.state = COMMENT_LESS_THAN_SIGN_BANG_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.currentToken.data += '!';\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_END_DASH_STATE);\n }\n }\n\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE](cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n\n this._reconsumeInState(COMMENT_END_STATE);\n }\n\n // Comment end dash state\n //------------------------------------------------------------------\n [COMMENT_END_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '-';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment end state\n //------------------------------------------------------------------\n [COMMENT_END_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EXCLAMATION_MARK) {\n this.state = COMMENT_END_BANG_STATE;\n } else if (cp === $.HYPHEN_MINUS) {\n this.currentToken.data += '-';\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '--';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment end bang state\n //------------------------------------------------------------------\n [COMMENT_END_BANG_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.currentToken.data += '--!';\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.incorrectlyClosedComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '--!';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // DOCTYPE state\n //------------------------------------------------------------------\n [DOCTYPE_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n }\n }\n\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(toAsciiLowerChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(unicode.REPLACEMENT_CHARACTER);\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._createDoctypeToken(toChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n }\n }\n\n // DOCTYPE name state\n //------------------------------------------------------------------\n [DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = AFTER_DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.name += toAsciiLowerChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.name += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.name += toChar(cp);\n }\n }\n\n // After DOCTYPE name state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (this._consumeSequenceIfMatch($$.PUBLIC_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE;\n } else if (this._consumeSequenceIfMatch($$.SYSTEM_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n [BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n [BOGUS_DOCTYPE_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n } else if (cp === $.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n }\n }\n\n // CDATA section state\n //------------------------------------------------------------------\n [CDATA_SECTION_STATE](cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_BRACKET_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // CDATA section bracket state\n //------------------------------------------------------------------\n [CDATA_SECTION_BRACKET_STATE](cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_END_STATE;\n } else {\n this._emitChars(']');\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n\n // CDATA section end state\n //------------------------------------------------------------------\n [CDATA_SECTION_END_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n } else if (cp === $.RIGHT_SQUARE_BRACKET) {\n this._emitChars(']');\n } else {\n this._emitChars(']]');\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n\n // Character reference state\n //------------------------------------------------------------------\n [CHARACTER_REFERENCE_STATE](cp) {\n this.tempBuff = [$.AMPERSAND];\n\n if (cp === $.NUMBER_SIGN) {\n this.tempBuff.push(cp);\n this.state = NUMERIC_CHARACTER_REFERENCE_STATE;\n } else if (isAsciiAlphaNumeric(cp)) {\n this._reconsumeInState(NAMED_CHARACTER_REFERENCE_STATE);\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Named character reference state\n //------------------------------------------------------------------\n [NAMED_CHARACTER_REFERENCE_STATE](cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n\n //NOTE: matching can be abrupted by hibernation. In that case match\n //results are no longer valid and we will need to start over.\n if (this._ensureHibernation()) {\n this.tempBuff = [$.AMPERSAND];\n } else if (matchResult) {\n const withSemicolon = this.tempBuff[this.tempBuff.length - 1] === $.SEMICOLON;\n\n if (!this._isCharacterReferenceAttributeQuirk(withSemicolon)) {\n if (!withSemicolon) {\n this._errOnNextCodePoint(ERR.missingSemicolonAfterCharacterReference);\n }\n\n this.tempBuff = matchResult;\n }\n\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = this.returnState;\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = AMBIGUOUS_AMPERSAND_STATE;\n }\n }\n\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n [AMBIGUOUS_AMPERSAND_STATE](cp) {\n if (isAsciiAlphaNumeric(cp)) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += toChar(cp);\n } else {\n this._emitCodePoint(cp);\n }\n } else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Numeric character reference state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_STATE](cp) {\n this.charRefCode = 0;\n\n if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n this.tempBuff.push(cp);\n this.state = HEXADEMICAL_CHARACTER_REFERENCE_START_STATE;\n } else {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_START_STATE);\n }\n }\n\n // Hexademical character reference start state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiHexDigit(cp)) {\n this._reconsumeInState(HEXADEMICAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Decimal character reference start state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Hexademical character reference state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n } else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n } else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n } else if (cp === $.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n\n // Decimal character reference state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n } else if (cp === $.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n\n // Numeric character reference end state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_END_STATE]() {\n if (this.charRefCode === $.NULL) {\n this._err(ERR.nullCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (this.charRefCode > 0x10ffff) {\n this._err(ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (unicode.isSurrogate(this.charRefCode)) {\n this._err(ERR.surrogateCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (unicode.isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR.noncharacterCharacterReference);\n } else if (unicode.isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n this._err(ERR.controlCharacterReference);\n\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS[this.charRefCode];\n\n if (replacement) {\n this.charRefCode = replacement;\n }\n }\n\n this.tempBuff = [this.charRefCode];\n\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n}\n\n//Token types\nTokenizer.CHARACTER_TOKEN = 'CHARACTER_TOKEN';\nTokenizer.NULL_CHARACTER_TOKEN = 'NULL_CHARACTER_TOKEN';\nTokenizer.WHITESPACE_CHARACTER_TOKEN = 'WHITESPACE_CHARACTER_TOKEN';\nTokenizer.START_TAG_TOKEN = 'START_TAG_TOKEN';\nTokenizer.END_TAG_TOKEN = 'END_TAG_TOKEN';\nTokenizer.COMMENT_TOKEN = 'COMMENT_TOKEN';\nTokenizer.DOCTYPE_TOKEN = 'DOCTYPE_TOKEN';\nTokenizer.EOF_TOKEN = 'EOF_TOKEN';\nTokenizer.HIBERNATION_TOKEN = 'HIBERNATION_TOKEN';\n\n//Tokenizer initial states for different modes\nTokenizer.MODE = {\n DATA: DATA_STATE,\n RCDATA: RCDATA_STATE,\n RAWTEXT: RAWTEXT_STATE,\n SCRIPT_DATA: SCRIPT_DATA_STATE,\n PLAINTEXT: PLAINTEXT_STATE\n};\n\n//Static\nTokenizer.getTokenAttr = function(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n\n return null;\n};\n\nmodule.exports = Tokenizer;\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n !options ? {}\n : typeof options !== 'object' ? { loose: true }\n : opts.filter(k => options[k]).reduce((options, k) => {\n options[k] = true\n return options\n }, {})\nmodule.exports = parseOptions\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n const sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n const sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n const sameSemVer = this.semver.version === comp.semver.version\n const differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n const oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<')\n const oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>')\n\n return (\n sameDirectionIncreasing ||\n sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan ||\n oppositeDirectionsGreaterThan\n )\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst {re, t} = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","'use strict'\n\nfunction normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no object method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n\nmodule.exports = normalizeIdentifier\n","'use strict'\n\nfunction miniflat(value) {\n return value === null || value === undefined\n ? []\n : 'length' in value\n ? value\n : [value]\n}\n\nmodule.exports = miniflat\n","'use strict'\n\nvar chunkedSplice = require('./chunked-splice.js')\n\nfunction chunkedPush(list, items) {\n if (list.length) {\n chunkedSplice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n\nmodule.exports = chunkedPush\n","'use strict'\n\nvar unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js')\nvar regexCheck = require('../util/regex-check.js')\n\n// In fact adds to the bundle size.\n\nvar unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar unicodeWhitespace = regexCheck(/\\s/)\n\nmodule.exports = unicodeWhitespace\n","'use strict'\n\n// Note: EOF is seen as ASCII control here, because `null < 32 == true`.\nfunction asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code < 32 || code === 127\n )\n}\n\nmodule.exports = asciiControl\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar shallow = require('../util/shallow.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryTitle = require('./factory-title.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\n\nvar labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\nvar resourceConstruct = {\n tokenize: tokenizeResource\n}\nvar fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\nvar collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n\nfunction resolveAllLabelEnd(events) {\n var index = -1\n var token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n !token._used &&\n (token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd')\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n\nfunction resolveToLabelEnd(events, context) {\n var index = events.length\n var offset = 0\n var group\n var label\n var text\n var token\n var open\n var close\n var media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n } // Mark other link openings as inactive, as we can’t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n\n group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: shallow(events[open][1].start),\n end: shallow(events[events.length - 1][1].end)\n }\n label = {\n type: 'label',\n start: shallow(events[open][1].start),\n end: shallow(events[close][1].end)\n }\n text = {\n type: 'labelText',\n start: shallow(events[open + offset + 2][1].end),\n end: shallow(events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = chunkedPush(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = chunkedPush(media, [['enter', text, context]]) // Between.\n\n media = chunkedPush(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = chunkedPush(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = chunkedPush(media, events.slice(close + 1)) // Media close.\n\n media = chunkedPush(media, [['exit', group, context]])\n chunkedSplice(events, open, events.length, media)\n return events\n}\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var labelStart\n var defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined =\n self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n ) > -1\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 3\n )(code)\n }\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeFullReference(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n function afterLabel(code) {\n return self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n ) < 0\n ? nok(code)\n : ok(code)\n }\n}\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = labelEnd\n","'use strict'\n\nmodule.exports = convert\n\nfunction convert(test) {\n if (test == null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return 'length' in test ? anyFactory(test) : allFactory(test)\n }\n\n if (typeof test === 'function') {\n return test\n }\n\n throw new Error('Expected function, string, or object as test')\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction allFactory(test) {\n return all\n\n function all(node) {\n var key\n\n for (key in test) {\n if (node[key] !== test[key]) return false\n }\n\n return true\n }\n}\n\nfunction anyFactory(tests) {\n var checks = []\n var index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return any\n\n function any() {\n var index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, arguments)) {\n return true\n }\n }\n\n return false\n }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n return type\n\n function type(node) {\n return Boolean(node && node.type === test)\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\n}\n","'use strict'\n\nvar start = factory('start')\nvar end = factory('end')\n\nmodule.exports = position\n\nposition.start = start\nposition.end = end\n\nfunction position(node) {\n return {start: start(node), end: end(node)}\n}\n\nfunction factory(type) {\n point.displayName = type\n\n return point\n\n function point(node) {\n var point = (node && node.position && node.position[type]) || {}\n\n return {\n line: point.line || null,\n column: point.column || null,\n offset: isNaN(point.offset) ? null : point.offset\n }\n }\n}\n","'use strict'\n\nmodule.exports = normalize\n\nfunction normalize(value) {\n return value.toLowerCase()\n}\n","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar empty = ''\nvar space = ' '\nvar whiteSpace = /[ \\t\\n\\r\\f]+/g\n\nfunction parse(value) {\n var input = String(value || empty).trim()\n return input === empty ? [] : input.split(whiteSpace)\n}\n\nfunction stringify(values) {\n return values.join(space).trim()\n}\n","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar comma = ','\nvar space = ' '\nvar empty = ''\n\n// Parse comma-separated tokens to an array.\nfunction parse(value) {\n var values = []\n var input = String(value || empty)\n var index = input.indexOf(comma)\n var lastIndex = 0\n var end = false\n var val\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n val = input.slice(lastIndex, index).trim()\n\n if (val || !end) {\n values.push(val)\n }\n\n lastIndex = index + 1\n index = input.indexOf(comma, lastIndex)\n }\n\n return values\n}\n\n// Compile an array to comma-separated tokens.\n// `options.padLeft` (default: `true`) pads a space left of each token, and\n// `options.padRight` (default: `false`) pads a space to the right of each token.\nfunction stringify(values, options) {\n var settings = options || {}\n var left = settings.padLeft === false ? empty : space\n var right = settings.padRight ? space : empty\n\n // Ensure the last empty entry is seen.\n if (values[values.length - 1] === empty) {\n values = values.concat(empty)\n }\n\n return values.join(right + comma + left).trim()\n}\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","'use strict';\n\nconst UNDEFINED_CODE_POINTS = [\n 0xfffe,\n 0xffff,\n 0x1fffe,\n 0x1ffff,\n 0x2fffe,\n 0x2ffff,\n 0x3fffe,\n 0x3ffff,\n 0x4fffe,\n 0x4ffff,\n 0x5fffe,\n 0x5ffff,\n 0x6fffe,\n 0x6ffff,\n 0x7fffe,\n 0x7ffff,\n 0x8fffe,\n 0x8ffff,\n 0x9fffe,\n 0x9ffff,\n 0xafffe,\n 0xaffff,\n 0xbfffe,\n 0xbffff,\n 0xcfffe,\n 0xcffff,\n 0xdfffe,\n 0xdffff,\n 0xefffe,\n 0xeffff,\n 0xffffe,\n 0xfffff,\n 0x10fffe,\n 0x10ffff\n];\n\nexports.REPLACEMENT_CHARACTER = '\\uFFFD';\n\nexports.CODE_POINTS = {\n EOF: -1,\n NULL: 0x00,\n TABULATION: 0x09,\n CARRIAGE_RETURN: 0x0d,\n LINE_FEED: 0x0a,\n FORM_FEED: 0x0c,\n SPACE: 0x20,\n EXCLAMATION_MARK: 0x21,\n QUOTATION_MARK: 0x22,\n NUMBER_SIGN: 0x23,\n AMPERSAND: 0x26,\n APOSTROPHE: 0x27,\n HYPHEN_MINUS: 0x2d,\n SOLIDUS: 0x2f,\n DIGIT_0: 0x30,\n DIGIT_9: 0x39,\n SEMICOLON: 0x3b,\n LESS_THAN_SIGN: 0x3c,\n EQUALS_SIGN: 0x3d,\n GREATER_THAN_SIGN: 0x3e,\n QUESTION_MARK: 0x3f,\n LATIN_CAPITAL_A: 0x41,\n LATIN_CAPITAL_F: 0x46,\n LATIN_CAPITAL_X: 0x58,\n LATIN_CAPITAL_Z: 0x5a,\n RIGHT_SQUARE_BRACKET: 0x5d,\n GRAVE_ACCENT: 0x60,\n LATIN_SMALL_A: 0x61,\n LATIN_SMALL_F: 0x66,\n LATIN_SMALL_X: 0x78,\n LATIN_SMALL_Z: 0x7a,\n REPLACEMENT_CHARACTER: 0xfffd\n};\n\nexports.CODE_POINT_SEQUENCES = {\n DASH_DASH_STRING: [0x2d, 0x2d], //--\n DOCTYPE_STRING: [0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45], //DOCTYPE\n CDATA_START_STRING: [0x5b, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b], //[CDATA[\n SCRIPT_STRING: [0x73, 0x63, 0x72, 0x69, 0x70, 0x74], //script\n PUBLIC_STRING: [0x50, 0x55, 0x42, 0x4c, 0x49, 0x43], //PUBLIC\n SYSTEM_STRING: [0x53, 0x59, 0x53, 0x54, 0x45, 0x4d] //SYSTEM\n};\n\n//Surrogates\nexports.isSurrogate = function(cp) {\n return cp >= 0xd800 && cp <= 0xdfff;\n};\n\nexports.isSurrogatePair = function(cp) {\n return cp >= 0xdc00 && cp <= 0xdfff;\n};\n\nexports.getSurrogatePairCodePoint = function(cp1, cp2) {\n return (cp1 - 0xd800) * 0x400 + 0x2400 + cp2;\n};\n\n//NOTE: excluding NULL and ASCII whitespace\nexports.isControlCodePoint = function(cp) {\n return (\n (cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f)\n );\n};\n\nexports.isUndefinedCodePoint = function(cp) {\n return (cp >= 0xfdd0 && cp <= 0xfdef) || UNDEFINED_CODE_POINTS.indexOf(cp) > -1;\n};\n","'use strict';\n\nmodule.exports = {\n controlCharacterInInputStream: 'control-character-in-input-stream',\n noncharacterInInputStream: 'noncharacter-in-input-stream',\n surrogateInInputStream: 'surrogate-in-input-stream',\n nonVoidHtmlElementStartTagWithTrailingSolidus: 'non-void-html-element-start-tag-with-trailing-solidus',\n endTagWithAttributes: 'end-tag-with-attributes',\n endTagWithTrailingSolidus: 'end-tag-with-trailing-solidus',\n unexpectedSolidusInTag: 'unexpected-solidus-in-tag',\n unexpectedNullCharacter: 'unexpected-null-character',\n unexpectedQuestionMarkInsteadOfTagName: 'unexpected-question-mark-instead-of-tag-name',\n invalidFirstCharacterOfTagName: 'invalid-first-character-of-tag-name',\n unexpectedEqualsSignBeforeAttributeName: 'unexpected-equals-sign-before-attribute-name',\n missingEndTagName: 'missing-end-tag-name',\n unexpectedCharacterInAttributeName: 'unexpected-character-in-attribute-name',\n unknownNamedCharacterReference: 'unknown-named-character-reference',\n missingSemicolonAfterCharacterReference: 'missing-semicolon-after-character-reference',\n unexpectedCharacterAfterDoctypeSystemIdentifier: 'unexpected-character-after-doctype-system-identifier',\n unexpectedCharacterInUnquotedAttributeValue: 'unexpected-character-in-unquoted-attribute-value',\n eofBeforeTagName: 'eof-before-tag-name',\n eofInTag: 'eof-in-tag',\n missingAttributeValue: 'missing-attribute-value',\n missingWhitespaceBetweenAttributes: 'missing-whitespace-between-attributes',\n missingWhitespaceAfterDoctypePublicKeyword: 'missing-whitespace-after-doctype-public-keyword',\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:\n 'missing-whitespace-between-doctype-public-and-system-identifiers',\n missingWhitespaceAfterDoctypeSystemKeyword: 'missing-whitespace-after-doctype-system-keyword',\n missingQuoteBeforeDoctypePublicIdentifier: 'missing-quote-before-doctype-public-identifier',\n missingQuoteBeforeDoctypeSystemIdentifier: 'missing-quote-before-doctype-system-identifier',\n missingDoctypePublicIdentifier: 'missing-doctype-public-identifier',\n missingDoctypeSystemIdentifier: 'missing-doctype-system-identifier',\n abruptDoctypePublicIdentifier: 'abrupt-doctype-public-identifier',\n abruptDoctypeSystemIdentifier: 'abrupt-doctype-system-identifier',\n cdataInHtmlContent: 'cdata-in-html-content',\n incorrectlyOpenedComment: 'incorrectly-opened-comment',\n eofInScriptHtmlCommentLikeText: 'eof-in-script-html-comment-like-text',\n eofInDoctype: 'eof-in-doctype',\n nestedComment: 'nested-comment',\n abruptClosingOfEmptyComment: 'abrupt-closing-of-empty-comment',\n eofInComment: 'eof-in-comment',\n incorrectlyClosedComment: 'incorrectly-closed-comment',\n eofInCdata: 'eof-in-cdata',\n absenceOfDigitsInNumericCharacterReference: 'absence-of-digits-in-numeric-character-reference',\n nullCharacterReference: 'null-character-reference',\n surrogateCharacterReference: 'surrogate-character-reference',\n characterReferenceOutsideUnicodeRange: 'character-reference-outside-unicode-range',\n controlCharacterReference: 'control-character-reference',\n noncharacterCharacterReference: 'noncharacter-character-reference',\n missingWhitespaceBeforeDoctypeName: 'missing-whitespace-before-doctype-name',\n missingDoctypeName: 'missing-doctype-name',\n invalidCharacterSequenceAfterDoctypeName: 'invalid-character-sequence-after-doctype-name',\n duplicateAttribute: 'duplicate-attribute',\n nonConformingDoctype: 'non-conforming-doctype',\n missingDoctype: 'missing-doctype',\n misplacedDoctype: 'misplaced-doctype',\n endTagWithoutMatchingOpenElement: 'end-tag-without-matching-open-element',\n closingOfElementWithOpenChildElements: 'closing-of-element-with-open-child-elements',\n disallowedContentInNoscriptInHead: 'disallowed-content-in-noscript-in-head',\n openElementsLeftAfterEof: 'open-elements-left-after-eof',\n abandonedHeadElementChild: 'abandoned-head-element-child',\n misplacedStartTagForHeadElement: 'misplaced-start-tag-for-head-element',\n nestedNoscriptInHead: 'nested-noscript-in-head',\n eofInElementThatCanContainOnlyText: 'eof-in-element-that-can-contain-only-text'\n};\n","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingMixinBase extends Mixin {\n constructor(host, opts) {\n super(host);\n\n this.posTracker = null;\n this.onParseError = opts.onParseError;\n }\n\n _setErrorLocation(err) {\n err.startLine = err.endLine = this.posTracker.line;\n err.startCol = err.endCol = this.posTracker.col;\n err.startOffset = err.endOffset = this.posTracker.offset;\n }\n\n _reportError(code) {\n const err = {\n code: code,\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n\n this._setErrorLocation(err);\n this.onParseError(err);\n }\n\n _getOverriddenMethods(mxn) {\n return {\n _err(code) {\n mxn._reportError(code);\n }\n };\n }\n}\n\nmodule.exports = ErrorReportingMixinBase;\n","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n // cover common, quick use cases\n if (num === 1) return str;\n if (num === 2) return str + str;\n\n var max = str.length * num;\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers\n}\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nmodule.exports = _createForOfIteratorHelper;","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst {ANY} = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","module.exports = require('./lib/emoji');","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","'use strict'\n\nmodule.exports = require('./lib')\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = stringify\n\nfunction stringify(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if (own.call(value, 'position') || own.call(value, 'type')) {\n return position(value.position)\n }\n\n // Position.\n if (own.call(value, 'start') || own.call(value, 'end')) {\n return position(value)\n }\n\n // Point.\n if (own.call(value, 'line') || own.call(value, 'column')) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\nfunction point(point) {\n if (!point || typeof point !== 'object') {\n point = {}\n }\n\n return index(point.line) + ':' + index(point.column)\n}\n\nfunction position(pos) {\n if (!pos || typeof pos !== 'object') {\n pos = {}\n }\n\n return point(pos.start) + '-' + point(pos.end)\n}\n\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = own\n","'use strict'\n\n// Counts tabs based on their expanded size, and CR+LF as one character.\n\nfunction sizeChunks(chunks) {\n var index = -1\n var size = 0\n\n while (++index < chunks.length) {\n size += typeof chunks[index] === 'string' ? chunks[index].length : 1\n }\n\n return size\n}\n\nmodule.exports = sizeChunks\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar shallow = require('./shallow.js')\n\nfunction subtokenize(events) {\n var jumps = {}\n var index = -1\n var event\n var lineIndex\n var otherIndex\n var otherEvent\n var parameters\n var subevents\n var more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1].isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container || event[1]._movePreviousLineEndings) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = shallow(events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n\nfunction subcontent(events, eventIndex) {\n var token = events[eventIndex][1]\n var context = events[eventIndex][2]\n var startPosition = eventIndex - 1\n var startPositions = []\n var tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n var childEvents = tokenizer.events\n var jumps = []\n var gaps = {}\n var stream\n var previous\n var index\n var entered\n var end\n var adjust // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (token) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== token) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!token._tokenizer) {\n stream = context.sliceStream(token)\n\n if (!token.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(token.start)\n }\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = token\n token = token.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n token = previous\n index = childEvents.length\n\n while (index--) {\n // Make sure we’ve at least seen something (final eol is part of the last\n // token).\n if (childEvents[index][0] === 'enter') {\n entered = true\n } else if (\n // Find a void token that includes a break.\n entered &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n add(childEvents.slice(index + 1, end))\n // Help GC.\n token._tokenizer = token.next = undefined\n token = token.previous\n end = index + 1\n }\n }\n\n // Help GC.\n tokenizer.events = token._tokenizer = token.next = undefined // Do head:\n\n add(childEvents.slice(0, end))\n index = -1\n adjust = 0\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n\n function add(slice) {\n var start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n chunkedSplice(events, start, 2, slice)\n }\n}\n\nmodule.exports = subtokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar assign = require('../constant/assign.js')\nvar shallow = require('../util/shallow.js')\n\nvar text = initializeFactory('text')\nvar string = initializeFactory('string')\nvar resolver = {\n resolveAll: createResolver()\n}\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n function initializeText(effects) {\n var self = this\n var constructs = this.parser.constructs[field]\n var text = effects.attempt(constructs, start, notText)\n return start\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n\n function atBreak(code) {\n var list = constructs[code]\n var index = -1\n\n if (code === null) {\n return true\n }\n\n if (list) {\n while (++index < list.length) {\n if (\n !list[index].previous ||\n list[index].previous.call(self, self.previous)\n ) {\n return true\n }\n }\n }\n }\n }\n}\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n function resolveAllText(events, context) {\n var index = -1\n var enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n} // A rather ugly set of instructions which again looks at chunks in the input\n// stream.\n// The reason to do this here is that it is *much* faster to parse in reverse.\n// And that we can’t hook into `null` to split the line suffix before an EOF.\n// To do: figure out if we can make this into a clean utility, or even in core.\n// As it will be useful for GFMs literal autolink extension (and maybe even\n// tables?)\n\nfunction resolveAllLineSuffixes(events, context) {\n var eventIndex = -1\n var chunks\n var data\n var chunk\n var index\n var bufferIndex\n var size\n var tabs\n var token\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n data = events[eventIndex - 1][1]\n chunks = context.sliceStream(data)\n index = chunks.length\n bufferIndex = -1\n size = 0\n tabs = undefined\n\n while (index--) {\n chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1);\n else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: shallow(data.end)\n }\n data.end = shallow(token.start)\n\n if (data.start.offset === data.end.offset) {\n assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n\nexports.resolver = resolver\nexports.string = string\nexports.text = text\n","'use strict'\n\nvar hasOwnProperty = require('../constant/has-own-property.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\n\nfunction combineExtensions(extensions) {\n var all = {}\n var index = -1\n\n while (++index < extensions.length) {\n extension(all, extensions[index])\n }\n\n return all\n}\n\nfunction extension(all, extension) {\n var hook\n var left\n var right\n var code\n\n for (hook in extension) {\n left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {})\n right = extension[hook]\n\n for (code in right) {\n left[code] = constructs(\n miniflat(right[code]),\n hasOwnProperty.call(left, code) ? left[code] : []\n )\n }\n }\n}\n\nfunction constructs(list, existing) {\n var index = -1\n var before = []\n\n while (++index < list.length) {\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n chunkedSplice(existing, 0, 0, before)\n return existing\n}\n\nmodule.exports = combineExtensions\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar unicodePunctuation = require('../character/unicode-punctuation.js')\nvar unicodeWhitespace = require('../character/unicode-whitespace.js')\n\n// Classify whether a character is unicode whitespace, unicode punctuation, or\n// anything else.\n// Used for attention (emphasis, strong), whose sequences can open or close\n// based on the class of surrounding characters.\nfunction classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n\nmodule.exports = classifyCharacter\n","'use strict'\n\n/* eslint-env browser */\n\nvar el\n\nvar semicolon = 59 // ';'\n\nmodule.exports = decodeEntity\n\nfunction decodeEntity(characters) {\n var entity = '&' + characters + ';'\n var char\n\n el = el || document.createElement('i')\n el.innerHTML = entity\n char = el.textContent\n\n // Some entities do not require the closing semicolon (`&not` - for instance),\n // which leads to situations where parsing the assumed entity of &notit; will\n // result in the string `¬it;`. When we encounter a trailing semicolon after\n // parsing and the entity to decode was not a semicolon (`&semi;`), we can\n // assume that the matching was incomplete\n if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the entity was not valid\n return char === entity ? false : char\n}\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiDigit = regexCheck(/\\d/)\n\nmodule.exports = asciiDigit\n","'use strict'\n\nvar asciiControl = require('../character/ascii-control.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\n// eslint-disable-next-line max-params\nfunction destinationFactory(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n var limit = max || Infinity\n var balance = 0\n return start\n\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return destinationEnclosedBefore\n }\n\n if (asciiControl(code) || code === 41) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n\nmodule.exports = destinationFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\n\n// eslint-disable-next-line max-params\nfunction labelFactory(effects, ok, nok, type, markerType, stringType) {\n var self = this\n var size = 0\n var data\n return start\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* c8 ignore next */\n (code === 94 &&\n /* c8 ignore next */\n !size &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\n }\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n}\n\nmodule.exports = labelFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction whitespaceFactory(effects, ok) {\n var seen\n return start\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n\nmodule.exports = whitespaceFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction titleFactory(effects, ok, nok, type, markerType, stringType) {\n var marker\n return start\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can’t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atTitleBreak, 'linePrefix')\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return title(code)\n }\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n\nmodule.exports = titleFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n var size = 0\n var marker\n return start\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n\nmodule.exports = thematicBreak\n","'use strict'\n\nmodule.exports = visitParents\n\nvar convert = require('unist-util-is/convert')\nvar color = require('./color')\n\nvar CONTINUE = true\nvar SKIP = 'skip'\nvar EXIT = false\n\nvisitParents.CONTINUE = CONTINUE\nvisitParents.SKIP = SKIP\nvisitParents.EXIT = EXIT\n\nfunction visitParents(tree, test, visitor, reverse) {\n var step\n var is\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n is = convert(test)\n step = reverse ? -1 : 1\n\n factory(tree, null, [])()\n\n function factory(node, index, parents) {\n var value = typeof node === 'object' && node !== null ? node : {}\n var name\n\n if (typeof value.type === 'string') {\n name =\n typeof value.tagName === 'string'\n ? value.tagName\n : typeof value.name === 'string'\n ? value.name\n : undefined\n\n visit.displayName =\n 'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')'\n }\n\n return visit\n\n function visit() {\n var grandparents = parents.concat(node)\n var result = []\n var subresult\n var offset\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if (node.children && result[0] !== SKIP) {\n offset = (reverse ? node.children.length : -1) + step\n\n while (offset > -1 && offset < node.children.length) {\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n}\n\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","'use strict'\n\nmodule.exports = one\n\nvar u = require('unist-builder')\nvar all = require('./all')\n\nvar own = {}.hasOwnProperty\n\n// Transform an unknown node.\nfunction unknown(h, node) {\n if (text(node)) {\n return h.augment(node, u('text', node.value))\n }\n\n return h(node, 'div', all(h, node))\n}\n\n// Visit a node.\nfunction one(h, node, parent) {\n var type = node && node.type\n var fn\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`')\n }\n\n if (own.call(h.handlers, type)) {\n fn = h.handlers[type]\n } else if (h.passThrough && h.passThrough.indexOf(type) > -1) {\n fn = returnNode\n } else {\n fn = h.unknownHandler\n }\n\n return (typeof fn === 'function' ? fn : unknown)(h, node, parent)\n}\n\n// Check if the node should be renderered as a text node.\nfunction text(node) {\n var data = node.data || {}\n\n if (\n own.call(data, 'hName') ||\n own.call(data, 'hProperties') ||\n own.call(data, 'hChildren')\n ) {\n return false\n }\n\n return 'value' in node\n}\n\nfunction returnNode(h, node) {\n var clone\n\n if (node.children) {\n clone = Object.assign({}, node)\n clone.children = all(h, node)\n return clone\n }\n\n return node\n}\n","'use strict'\n\nmodule.exports = thematicBreak\n\nfunction thematicBreak(h, node) {\n return h(node, 'hr')\n}\n","'use strict'\n\nmodule.exports = list\n\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction list(h, node) {\n var props = {}\n var name = node.ordered ? 'ol' : 'ul'\n var items\n var index = -1\n var length\n\n if (typeof node.start === 'number' && node.start !== 1) {\n props.start = node.start\n }\n\n items = all(h, node)\n length = items.length\n\n // Like GitHub, add a class for custom styling.\n while (++index < length) {\n if (\n items[index].properties.className &&\n items[index].properties.className.indexOf('task-list-item') !== -1\n ) {\n props.className = ['contains-task-list']\n break\n }\n }\n\n return h(node, name, props, wrap(items, true))\n}\n","'use strict'\n\nmodule.exports = footnoteReference\n\nvar u = require('unist-builder')\n\nfunction footnoteReference(h, node) {\n var footnoteOrder = h.footnoteOrder\n var identifier = String(node.identifier)\n\n if (footnoteOrder.indexOf(identifier) === -1) {\n footnoteOrder.push(identifier)\n }\n\n return h(node.position, 'sup', {id: 'fnref-' + identifier}, [\n h(node, 'a', {href: '#fn-' + identifier, className: ['footnote-ref']}, [\n u('text', node.label || identifier)\n ])\n ])\n}\n","'use strict'\n\nmodule.exports = revert\n\nvar u = require('unist-builder')\nvar all = require('./all')\n\n// Return the content of a reference without definition as Markdown.\nfunction revert(h, node) {\n var subtype = node.referenceType\n var suffix = ']'\n var contents\n var head\n var tail\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return u('text', '![' + node.alt + suffix)\n }\n\n contents = all(h, node)\n head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift(u('text', '['))\n }\n\n tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push(u('text', suffix))\n }\n\n return contents\n}\n","'use strict'\n\nvar xtend = require('xtend')\nvar Schema = require('./schema')\n\nmodule.exports = merge\n\nfunction merge(definitions) {\n var length = definitions.length\n var property = []\n var normal = []\n var index = -1\n var info\n var space\n\n while (++index < length) {\n info = definitions[index]\n property.push(info.property)\n normal.push(info.normal)\n space = info.space\n }\n\n return new Schema(\n xtend.apply(null, property),\n xtend.apply(null, normal),\n space\n )\n}\n","'use strict'\n\nmodule.exports = Schema\n\nvar proto = Schema.prototype\n\nproto.space = null\nproto.normal = {}\nproto.property = {}\n\nfunction Schema(property, normal, space) {\n this.property = property\n this.normal = normal\n\n if (space) {\n this.space = space\n }\n}\n","'use strict'\n\nvar create = require('./util/create')\n\nmodule.exports = create({\n space: 'xlink',\n transform: xlinkTransform,\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n\nfunction xlinkTransform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n}\n","'use strict'\n\nvar Info = require('./info')\nvar types = require('./types')\n\nmodule.exports = DefinedInfo\n\nDefinedInfo.prototype = new Info()\nDefinedInfo.prototype.defined = true\n\nvar checks = [\n 'boolean',\n 'booleanish',\n 'overloadedBoolean',\n 'number',\n 'commaSeparated',\n 'spaceSeparated',\n 'commaOrSpaceSeparated'\n]\nvar checksLength = checks.length\n\nfunction DefinedInfo(property, attribute, mask, space) {\n var index = -1\n var check\n\n mark(this, 'space', space)\n\n Info.call(this, property, attribute)\n\n while (++index < checksLength) {\n check = checks[index]\n mark(this, check, (mask & types[check]) === types[check])\n }\n}\n\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","'use strict'\n\nmodule.exports = Info\n\nvar proto = Info.prototype\n\nproto.space = null\nproto.attribute = null\nproto.property = null\nproto.boolean = false\nproto.booleanish = false\nproto.overloadedBoolean = false\nproto.number = false\nproto.commaSeparated = false\nproto.spaceSeparated = false\nproto.commaOrSpaceSeparated = false\nproto.mustUseProperty = false\nproto.defined = false\n\nfunction Info(property, attribute) {\n this.property = property\n this.attribute = attribute\n}\n","'use strict'\n\nvar create = require('./util/create')\n\nmodule.exports = create({\n space: 'xml',\n transform: xmlTransform,\n properties: {\n xmlLang: null,\n xmlBase: null,\n xmlSpace: null\n }\n})\n\nfunction xmlTransform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n}\n","'use strict'\n\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nmodule.exports = create({\n space: 'xmlns',\n attributes: {\n xmlnsxlink: 'xmlns:xlink'\n },\n transform: caseInsensitiveTransform,\n properties: {\n xmlns: null,\n xmlnsXLink: null\n }\n})\n","'use strict'\n\nvar caseSensitiveTransform = require('./case-sensitive-transform')\n\nmodule.exports = caseInsensitiveTransform\n\nfunction caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","'use strict'\n\nmodule.exports = caseSensitiveTransform\n\nfunction caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\n\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\n\nmodule.exports = create({\n transform: ariaTransform,\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n\nfunction ariaTransform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n}\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n\n return output;\n}\n\nmodule.exports = StyleToObject;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\n\nclass LocationInfoTokenizerMixin extends Mixin {\n constructor(tokenizer) {\n super(tokenizer);\n\n this.tokenizer = tokenizer;\n this.posTracker = Mixin.install(tokenizer.preprocessor, PositionTrackingPreprocessorMixin);\n this.currentAttrLocation = null;\n this.ctLoc = null;\n }\n\n _getCurrentLocation() {\n return {\n startLine: this.posTracker.line,\n startCol: this.posTracker.col,\n startOffset: this.posTracker.offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n }\n\n _attachCurrentAttrLocationInfo() {\n this.currentAttrLocation.endLine = this.posTracker.line;\n this.currentAttrLocation.endCol = this.posTracker.col;\n this.currentAttrLocation.endOffset = this.posTracker.offset;\n\n const currentToken = this.tokenizer.currentToken;\n const currentAttr = this.tokenizer.currentAttr;\n\n if (!currentToken.location.attrs) {\n currentToken.location.attrs = Object.create(null);\n }\n\n currentToken.location.attrs[currentAttr.name] = this.currentAttrLocation;\n }\n\n _getOverriddenMethods(mxn, orig) {\n const methods = {\n _createStartTagToken() {\n orig._createStartTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createEndTagToken() {\n orig._createEndTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createCommentToken() {\n orig._createCommentToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createDoctypeToken(initialName) {\n orig._createDoctypeToken.call(this, initialName);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createCharacterToken(type, ch) {\n orig._createCharacterToken.call(this, type, ch);\n this.currentCharacterToken.location = mxn.ctLoc;\n },\n\n _createEOFToken() {\n orig._createEOFToken.call(this);\n this.currentToken.location = mxn._getCurrentLocation();\n },\n\n _createAttr(attrNameFirstCh) {\n orig._createAttr.call(this, attrNameFirstCh);\n mxn.currentAttrLocation = mxn._getCurrentLocation();\n },\n\n _leaveAttrName(toState) {\n orig._leaveAttrName.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n\n _leaveAttrValue(toState) {\n orig._leaveAttrValue.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n\n _emitCurrentToken() {\n const ctLoc = this.currentToken.location;\n\n //NOTE: if we have pending character token make it's end location equal to the\n //current token's start location.\n if (this.currentCharacterToken) {\n this.currentCharacterToken.location.endLine = ctLoc.startLine;\n this.currentCharacterToken.location.endCol = ctLoc.startCol;\n this.currentCharacterToken.location.endOffset = ctLoc.startOffset;\n }\n\n if (this.currentToken.type === Tokenizer.EOF_TOKEN) {\n ctLoc.endLine = ctLoc.startLine;\n ctLoc.endCol = ctLoc.startCol;\n ctLoc.endOffset = ctLoc.startOffset;\n } else {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col + 1;\n ctLoc.endOffset = mxn.posTracker.offset + 1;\n }\n\n orig._emitCurrentToken.call(this);\n },\n\n _emitCurrentCharacterToken() {\n const ctLoc = this.currentCharacterToken && this.currentCharacterToken.location;\n\n //NOTE: if we have character token and it's location wasn't set in the _emitCurrentToken(),\n //then set it's location at the current preprocessor position.\n //We don't need to increment preprocessor position, since character token\n //emission is always forced by the start of the next character token here.\n //So, we already have advanced position.\n if (ctLoc && ctLoc.endOffset === -1) {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col;\n ctLoc.endOffset = mxn.posTracker.offset;\n }\n\n orig._emitCurrentCharacterToken.call(this);\n }\n };\n\n //NOTE: patch initial states for each mode to obtain token start position\n Object.keys(Tokenizer.MODE).forEach(modeName => {\n const state = Tokenizer.MODE[modeName];\n\n methods[state] = function(cp) {\n mxn.ctLoc = mxn._getCurrentLocation();\n orig[state].call(this, cp);\n };\n });\n\n return methods;\n }\n}\n\nmodule.exports = LocationInfoTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass PositionTrackingPreprocessorMixin extends Mixin {\n constructor(preprocessor) {\n super(preprocessor);\n\n this.preprocessor = preprocessor;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n\n this.offset = 0;\n this.col = 0;\n this.line = 1;\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n advance() {\n const pos = this.pos + 1;\n const ch = this.html[pos];\n\n //NOTE: LF should be in the last column of the line\n if (mxn.isEol) {\n mxn.isEol = false;\n mxn.line++;\n mxn.lineStartPos = pos;\n }\n\n if (ch === '\\n' || (ch === '\\r' && this.html[pos + 1] !== '\\n')) {\n mxn.isEol = true;\n }\n\n mxn.col = pos - mxn.lineStartPos + 1;\n mxn.offset = mxn.droppedBufferSize + pos;\n\n return orig.advance.call(this);\n },\n\n retreat() {\n orig.retreat.call(this);\n\n mxn.isEol = false;\n mxn.col = this.pos - mxn.lineStartPos + 1;\n },\n\n dropParsedChunk() {\n const prevPos = this.pos;\n\n orig.dropParsedChunk.call(this);\n\n const reduction = prevPos - this.pos;\n\n mxn.lineStartPos -= reduction;\n mxn.droppedBufferSize += reduction;\n mxn.offset = mxn.droppedBufferSize + this.pos;\n }\n };\n }\n}\n\nmodule.exports = PositionTrackingPreprocessorMixin;\n","'use strict'\n\nvar find = require('property-information/find')\nvar normalize = require('property-information/normalize')\nvar parseSelector = require('hast-util-parse-selector')\nvar spaces = require('space-separated-tokens').parse\nvar commas = require('comma-separated-tokens').parse\n\nmodule.exports = factory\n\nvar own = {}.hasOwnProperty\n\nfunction factory(schema, defaultTagName, caseSensitive) {\n var adjust = caseSensitive ? createAdjustMap(caseSensitive) : null\n\n return h\n\n // Hyperscript compatible DSL for creating virtual hast trees.\n function h(selector, properties) {\n var node = parseSelector(selector, defaultTagName)\n var children = Array.prototype.slice.call(arguments, 2)\n var name = node.tagName.toLowerCase()\n var property\n\n node.tagName = adjust && own.call(adjust, name) ? adjust[name] : name\n\n if (properties && isChildren(properties, node)) {\n children.unshift(properties)\n properties = null\n }\n\n if (properties) {\n for (property in properties) {\n addProperty(node.properties, property, properties[property])\n }\n }\n\n addChild(node.children, children)\n\n if (node.tagName === 'template') {\n node.content = {type: 'root', children: node.children}\n node.children = []\n }\n\n return node\n }\n\n function addProperty(properties, key, value) {\n var info\n var property\n var result\n\n // Ignore nullish and NaN values.\n if (value === null || value === undefined || value !== value) {\n return\n }\n\n info = find(schema, key)\n property = info.property\n result = value\n\n // Handle list values.\n if (typeof result === 'string') {\n if (info.spaceSeparated) {\n result = spaces(result)\n } else if (info.commaSeparated) {\n result = commas(result)\n } else if (info.commaOrSpaceSeparated) {\n result = spaces(commas(result).join(' '))\n }\n }\n\n // Accept `object` on style.\n if (property === 'style' && typeof value !== 'string') {\n result = style(result)\n }\n\n // Class-names (which can be added both on the `selector` and here).\n if (property === 'className' && properties.className) {\n result = properties.className.concat(result)\n }\n\n properties[property] = parsePrimitives(info, property, result)\n }\n}\n\nfunction isChildren(value, node) {\n return (\n typeof value === 'string' ||\n 'length' in value ||\n isNode(node.tagName, value)\n )\n}\n\nfunction isNode(tagName, value) {\n var type = value.type\n\n if (tagName === 'input' || !type || typeof type !== 'string') {\n return false\n }\n\n if (typeof value.children === 'object' && 'length' in value.children) {\n return true\n }\n\n type = type.toLowerCase()\n\n if (tagName === 'button') {\n return (\n type !== 'menu' &&\n type !== 'submit' &&\n type !== 'reset' &&\n type !== 'button'\n )\n }\n\n return 'value' in value\n}\n\nfunction addChild(nodes, value) {\n var index\n var length\n\n if (typeof value === 'string' || typeof value === 'number') {\n nodes.push({type: 'text', value: String(value)})\n return\n }\n\n if (typeof value === 'object' && 'length' in value) {\n index = -1\n length = value.length\n\n while (++index < length) {\n addChild(nodes, value[index])\n }\n\n return\n }\n\n if (typeof value !== 'object' || !('type' in value)) {\n throw new Error('Expected node, nodes, or string, got `' + value + '`')\n }\n\n nodes.push(value)\n}\n\n// Parse a (list of) primitives.\nfunction parsePrimitives(info, name, value) {\n var index\n var length\n var result\n\n if (typeof value !== 'object' || !('length' in value)) {\n return parsePrimitive(info, name, value)\n }\n\n length = value.length\n index = -1\n result = []\n\n while (++index < length) {\n result[index] = parsePrimitive(info, name, value[index])\n }\n\n return result\n}\n\n// Parse a single primitives.\nfunction parsePrimitive(info, name, value) {\n var result = value\n\n if (info.number || info.positiveNumber) {\n if (!isNaN(result) && result !== '') {\n result = Number(result)\n }\n } else if (info.boolean || info.overloadedBoolean) {\n // Accept `boolean` and `string`.\n if (\n typeof result === 'string' &&\n (result === '' || normalize(value) === normalize(name))\n ) {\n result = true\n }\n }\n\n return result\n}\n\nfunction style(value) {\n var result = []\n var key\n\n for (key in value) {\n result.push([key, value[key]].join(': '))\n }\n\n return result.join('; ')\n}\n\nfunction createAdjustMap(values) {\n var length = values.length\n var index = -1\n var result = {}\n var value\n\n while (++index < length) {\n value = values[index]\n result[value.toLowerCase()] = value\n }\n\n return result\n}\n","'use strict'\n\nmodule.exports = factory\n\nvar noop = Function.prototype\nvar own = {}.hasOwnProperty\n\n// Handle values based on a property.\nfunction factory(key, options) {\n var settings = options || {}\n\n function one(value) {\n var fn = one.invalid\n var handlers = one.handlers\n\n if (value && own.call(value, key)) {\n fn = own.call(handlers, value[key]) ? handlers[value[key]] : one.unknown\n }\n\n return (fn || noop).apply(this, arguments)\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n return one\n}\n","module.exports = phrasing\n\nfunction phrasing(parent, context, safeOptions) {\n var children = parent.children || []\n var results = []\n var index = -1\n var before = safeOptions.before\n var after\n var handle\n var child\n\n while (++index < children.length) {\n child = children[index]\n\n if (index + 1 < children.length) {\n handle = context.handle.handlers[children[index + 1].type]\n if (handle && handle.peek) handle = handle.peek\n after = handle\n ? handle(children[index + 1], parent, context, {\n before: '',\n after: ''\n }).charAt(0)\n : ''\n } else {\n after = safeOptions.after\n }\n\n // In some cases, html (text) can be found in phrasing right after an eol.\n // When we’d serialize that, in most cases that would be seen as html\n // (flow).\n // As we can’t escape or so to prevent it from happening, we take a somewhat\n // reasonable approach: replace that eol with a space.\n // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n if (\n results.length > 0 &&\n (before === '\\r' || before === '\\n') &&\n child.type === 'html'\n ) {\n results[results.length - 1] = results[results.length - 1].replace(\n /(\\r?\\n|\\r)$/,\n ' '\n )\n before = ' '\n }\n\n results.push(\n context.handle(child, parent, context, {\n before: before,\n after: after\n })\n )\n\n before = results[results.length - 1].slice(-1)\n }\n\n return results.join('')\n}\n","'use strict';\nmodule.exports = require('./spdx.json');\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","/*jslint node: true*/\nvar toArray = require('lodash/toArray');\nvar emojiByName = require('./emoji.json');\n\n\"use strict\";\n\n/**\n * regex to parse emoji in a string - finds emoji, e.g. :coffee:\n */\nvar emojiNameRegex = /:([a-zA-Z0-9_\\-\\+]+):/g;\n\n/**\n * regex to trim whitespace\n * use instead of String.prototype.trim() for IE8 support\n */\nvar trimSpaceRegex = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n/**\n * Removes colons on either side\n * of the string if present\n * @param {string} str\n * @return {string}\n */\nfunction stripColons (str) {\n var colonIndex = str.indexOf(':');\n if (colonIndex > -1) {\n // :emoji: (http://www.emoji-cheat-sheet.com/)\n if (colonIndex === str.length - 1) {\n str = str.substring(0, colonIndex);\n return stripColons(str);\n } else {\n str = str.substr(colonIndex + 1);\n return stripColons(str);\n }\n }\n\n return str;\n}\n\n/**\n * Adds colons to either side\n * of the string\n * @param {string} str\n * @return {string}\n */\nfunction wrapColons (str) {\n return (typeof str === 'string' && str.length > 0) ? ':' + str + ':' : str;\n}\n\n/**\n * Ensure that the word is wrapped in colons\n * by only adding them, if they are not there.\n * @param {string} str\n * @return {string}\n */\nfunction ensureColons (str) {\n return (typeof str === 'string' && str[0] !== ':') ? wrapColons(str) : str;\n}\n\n// Non spacing mark, some emoticons have them. It's the 'Variant Form',\n// which provides more information so that emoticons can be rendered as\n// more colorful graphics. FE0E is a unicode text version, where as FE0F\n// should be rendered as a graphical version. The code gracefully degrades.\nvar NON_SPACING_MARK = String.fromCharCode(65039); // 65039 - '️' - 0xFE0F;\nvar nonSpacingRegex = new RegExp(NON_SPACING_MARK, 'g')\n\n// Remove the non-spacing-mark from the code, never send a stripped version\n// to the client, as it kills graphical emoticons.\nfunction stripNSB (code) {\n return code.replace(nonSpacingRegex, '');\n};\n\n// Reversed hash table, where as emojiByName contains a { heart: '❤' }\n// dictionary emojiByCode contains { ❤: 'heart' }. The codes are normalized\n// to the text version.\nvar emojiByCode = Object.keys(emojiByName).reduce(function(h,k) {\n h[stripNSB(emojiByName[k])] = k;\n return h;\n}, {});\n\n/**\n * Emoji namespace\n */\nvar Emoji = {\n emoji: emojiByName,\n};\n\n/**\n * get emoji code from name. return emoji code back if code is passed in.\n * @param {string} emoji\n * @return {string}\n */\nEmoji._get = function _get (emoji) {\n if (emojiByCode[stripNSB(emoji)]) {\n return emoji;\n } else if (emojiByName.hasOwnProperty(emoji)) {\n return emojiByName[emoji];\n }\n\n return ensureColons(emoji);\n};\n\n/**\n * get emoji code from :emoji: string or name\n * @param {string} emoji\n * @return {string}\n */\nEmoji.get = function get (emoji) {\n emoji = stripColons(emoji);\n\n return Emoji._get(emoji);\n};\n\n/**\n * find the emoji by either code or name\n * @param {string} nameOrCode The emoji to find, either `coffee`, `:coffee:` or `☕`;\n * @return {object}\n */\nEmoji.find = function find (nameOrCode) {\n return Emoji.findByName(nameOrCode) || Emoji.findByCode(nameOrCode);\n};\n\n/**\n * find the emoji by name\n * @param {string} name The emoji to find either `coffee` or `:coffee:`;\n * @return {object}\n */\nEmoji.findByName = function findByName (name) {\n var stripped = stripColons(name);\n var emoji = emojiByName[stripped];\n\n return emoji ? ({ emoji: emoji, key: stripped }) : undefined;\n};\n\n/**\n * find the emoji by code (emoji)\n * @param {string} code The emoji to find; for example `☕` or `☔`\n * @return {object}\n */\nEmoji.findByCode = function findByCode (code) {\n var stripped = stripNSB(code);\n var name = emojiByCode[stripped];\n\n // lookup emoji to ensure the Variant Form is returned\n return name ? ({ emoji: emojiByName[name], key: name }) : undefined;\n};\n\n\n/**\n * Check if an emoji is known by this library\n * @param {string} nameOrCode The emoji to validate, either `coffee`, `:coffee:` or `☕`;\n * @return {object}\n */\nEmoji.hasEmoji = function hasEmoji (nameOrCode) {\n return Emoji.hasEmojiByName(nameOrCode) || Emoji.hasEmojiByCode(nameOrCode);\n};\n\n/**\n * Check if an emoji with given name is known by this library\n * @param {string} name The emoji to validate either `coffee` or `:coffee:`;\n * @return {object}\n */\nEmoji.hasEmojiByName = function hasEmojiByName (name) {\n var result = Emoji.findByName(name);\n return !!result && result.key === stripColons(name);\n};\n\n/**\n * Check if a given emoji is known by this library\n * @param {string} code The emoji to validate; for example `☕` or `☔`\n * @return {object}\n */\nEmoji.hasEmojiByCode = function hasEmojiByCode (code) {\n var result = Emoji.findByCode(code);\n return !!result && stripNSB(result.emoji) === stripNSB(code);\n};\n\n/**\n * get emoji name from code\n * @param {string} emoji\n * @param {boolean} includeColons should the result include the ::\n * @return {string}\n */\nEmoji.which = function which (emoji_code, includeColons) {\n var code = stripNSB(emoji_code);\n var word = emojiByCode[code];\n\n return includeColons ? wrapColons(word) : word;\n};\n\n/**\n * emojify a string (replace :emoji: with an emoji)\n * @param {string} str\n * @param {function} on_missing (gets emoji name without :: and returns a proper emoji if no emoji was found)\n * @param {function} format (wrap the returned emoji in a custom element)\n * @return {string}\n */\nEmoji.emojify = function emojify (str, on_missing, format) {\n if (!str) return '';\n\n return str.split(emojiNameRegex) // parse emoji via regex\n .map(function parseEmoji(s, i) {\n // every second element is an emoji, e.g. \"test :fast_forward:\" -> [ \"test \", \"fast_forward\" ]\n if (i % 2 === 0) return s;\n var emoji = Emoji._get(s);\n var isMissing = emoji.indexOf(':') > -1;\n\n if (isMissing && typeof on_missing === 'function') {\n return on_missing(s);\n }\n\n if (!isMissing && typeof format === 'function') {\n return format(emoji, s);\n }\n\n return emoji;\n })\n .join('') // convert back to string\n ;\n};\n\n/**\n * return a random emoji\n * @return {string}\n */\nEmoji.random = function random () {\n var emojiKeys = Object.keys(emojiByName);\n var randomIndex = Math.floor(Math.random() * emojiKeys.length);\n var key = emojiKeys[randomIndex];\n var emoji = Emoji._get(key);\n return { key: key, emoji: emoji };\n}\n\n/**\n * return an collection of potential emoji matches\n * @param {string} str\n * @return {Array.<Object>}\n */\nEmoji.search = function search (str) {\n var emojiKeys = Object.keys(emojiByName);\n var matcher = stripColons(str)\n var matchingKeys = emojiKeys.filter(function(key) {\n return key.toString().indexOf(matcher) === 0;\n });\n return matchingKeys.map(function(key) {\n return {\n key: key,\n emoji: Emoji._get(key),\n };\n });\n}\n\n/**\n * unemojify a string (replace emoji with :emoji:)\n * @param {string} str\n * @return {string}\n */\nEmoji.unemojify = function unemojify (str) {\n if (!str) return '';\n var words = toArray(str);\n\n return words.map(function(word) {\n return Emoji.which(word, true) || word;\n }).join('');\n};\n\n/**\n * replace emojis with replacement value\n * @param {string} str\n * @param {function|string} the string or callback function to replace the emoji with\n * @param {boolean} should trailing whitespaces be cleaned? Defaults false\n * @return {string}\n */\nEmoji.replace = function replace (str, replacement, cleanSpaces) {\n if (!str) return '';\n\n var replace = typeof replacement === 'function' ? replacement : function() { return replacement; };\n var words = toArray(str);\n\n var replaced = words.map(function(word, idx) {\n var emoji = Emoji.findByCode(word);\n\n if (emoji && cleanSpaces && words[idx + 1] === ' ') {\n words[idx + 1] = '';\n }\n\n return emoji ? replace(emoji) : word;\n }).join('');\n\n return cleanSpaces ? replaced.replace(trimSpaceRegex, '') : replaced;\n};\n\n\n/**\n * remove all emojis from a string\n * @param {string} str\n * @return {string}\n */\nEmoji.strip = function strip (str) {\n return Emoji.replace(str, '', true);\n};\n\nmodule.exports = Emoji;\n","var Symbol = require('./_Symbol'),\n copyArray = require('./_copyArray'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n iteratorToArray = require('./_iteratorToArray'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray'),\n stringToArray = require('./_stringToArray'),\n values = require('./values');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n}\n\nmodule.exports = toArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","'use strict'\n\nconst React = require('react')\nconst vfile = require('vfile')\nconst unified = require('unified')\nconst parse = require('remark-parse')\nconst remarkRehype = require('remark-rehype')\nconst PropTypes = require('prop-types')\nconst html = require('property-information/html')\nconst filter = require('./rehype-filter.js')\nconst uriTransformer = require('./uri-transformer.js')\nconst childrenToReact = require('./ast-to-react.js').hastChildrenToReact\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').RehypeFilterOptions} FilterOptions\n * @typedef {import('./ast-to-react.js').TransformOptions} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [plugins=[]] **deprecated**: use `remarkPlugins` instead\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n */\n\nmodule.exports = ReactMarkdown\n\nconst own = {}.hasOwnProperty\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/**\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\n/**\n * @type {Object.<string, Deprecation>}\n */\nconst deprecated = {\n renderers: {to: 'components', id: 'change-renderers-to-components'},\n astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n source: {to: 'children', id: 'change-source-to-children'},\n allowNode: {\n to: 'allowElement',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n allowedTypes: {\n to: 'allowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n disallowedTypes: {\n to: 'disallowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n includeNodeIndex: {\n to: 'includeElementIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n }\n}\n\n/**\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nfunction ReactMarkdown(options) {\n for (const key in deprecated) {\n if (own.call(deprecated, key) && own.call(options, key)) {\n /** @type {Deprecation} */\n const deprecation = deprecated[key]\n console.warn(\n `[react-markdown] Warning: please ${\n deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n )\n delete deprecated[key]\n }\n }\n\n const processor = unified()\n .use(parse)\n // TODO: deprecate `plugins` in v7.0.0.\n .use(options.remarkPlugins || options.plugins || [])\n .use(remarkRehype, {allowDangerousHtml: true})\n .use(options.rehypePlugins || [])\n .use(filter, options)\n\n /** @type {vfile} */\n let file\n\n if (typeof options.children === 'string') {\n file = vfile(options.children)\n } else {\n if (options.children !== undefined && options.children !== null) {\n console.warn(\n `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n )\n }\n\n file = vfile()\n }\n\n /** @type {Root} */\n // @ts-expect-error we’ll throw if it isn’t a root next.\n const hastNode = processor.runSync(processor.parse(file), file)\n\n if (hastNode.type !== 'root') {\n throw new TypeError('Expected a `root` node')\n }\n\n /** @type {ReactElement} */\n let result = React.createElement(\n React.Fragment,\n {},\n childrenToReact({options: options, schema: html, listDepth: 0}, hastNode)\n )\n\n if (options.className) {\n result = React.createElement('div', {className: options.className}, result)\n }\n\n return result\n}\n\nReactMarkdown.defaultProps = {transformLinkUri: uriTransformer}\n\nReactMarkdown.propTypes = {\n // Core options:\n children: PropTypes.string,\n // Layout options:\n className: PropTypes.string,\n // Filter options:\n allowElement: PropTypes.func,\n allowedElements: PropTypes.arrayOf(PropTypes.string),\n disallowedElements: PropTypes.arrayOf(PropTypes.string),\n unwrapDisallowed: PropTypes.bool,\n // Plugin options:\n // type-coverage:ignore-next-line\n remarkPlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))\n ])\n ),\n // type-coverage:ignore-next-line\n rehypePlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))\n ])\n ),\n // Transform options:\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n skipHtml: PropTypes.bool,\n includeElementIndex: PropTypes.bool,\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n components: PropTypes.object\n}\n\nReactMarkdown.uriTransformer = uriTransformer\n","'use strict'\n\nvar VMessage = require('vfile-message')\nvar VFile = require('./core.js')\n\nmodule.exports = VFile\n\nVFile.prototype.message = message\nVFile.prototype.info = info\nVFile.prototype.fail = fail\n\n// Create a message with `reason` at `position`.\n// When an error is passed in as `reason`, copies the stack.\nfunction message(reason, position, origin) {\n var message = new VMessage(reason, position, origin)\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n}\n\n// Fail: creates a vmessage, associates it with the file, and throws it.\nfunction fail() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = true\n\n throw message\n}\n\n// Info: creates a vmessage, associates it with the file, and marks the fatality\n// as null.\nfunction info() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = null\n\n return message\n}\n","'use strict'\n\nvar stringify = require('unist-util-stringify-position')\n\nmodule.exports = VMessage\n\n// Inherit from `Error#`.\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype\nVMessage.prototype = new VMessagePrototype()\n\n// Message properties.\nvar proto = VMessage.prototype\n\nproto.file = ''\nproto.name = ''\nproto.reason = ''\nproto.message = ''\nproto.stack = ''\nproto.fatal = null\nproto.column = null\nproto.line = null\n\n// Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\nfunction VMessage(reason, position, origin) {\n var parts\n var range\n var location\n\n if (typeof position === 'string') {\n origin = position\n position = null\n }\n\n parts = parseOrigin(origin)\n range = stringify(position) || '1:1'\n\n location = {\n start: {line: null, column: null},\n end: {line: null, column: null}\n }\n\n // Node.\n if (position && position.position) {\n position = position.position\n }\n\n if (position) {\n // Position.\n if (position.start) {\n location = position\n position = position.start\n } else {\n // Point.\n location.start = position\n }\n }\n\n if (reason.stack) {\n this.stack = reason.stack\n reason = reason.message\n }\n\n this.message = reason\n this.name = range\n this.reason = reason\n this.line = position ? position.line : null\n this.column = position ? position.column : null\n this.location = location\n this.source = parts[0]\n this.ruleId = parts[1]\n}\n\nfunction parseOrigin(origin) {\n var result = [null, null]\n var index\n\n if (typeof origin === 'string') {\n index = origin.indexOf(':')\n\n if (index === -1) {\n result[1] = origin\n } else {\n result[0] = origin.slice(0, index)\n result[1] = origin.slice(index + 1)\n }\n }\n\n return result\n}\n","'use strict'\n\nvar p = require('./minpath')\nvar proc = require('./minproc')\nvar buffer = require('is-buffer')\n\nmodule.exports = VFile\n\nvar own = {}.hasOwnProperty\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nVFile.prototype.toString = toString\n\n// Access full path (`~/index.min.js`).\nObject.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath})\n\n// Access parent path (`~`).\nObject.defineProperty(VFile.prototype, 'dirname', {\n get: getDirname,\n set: setDirname\n})\n\n// Access basename (`index.min.js`).\nObject.defineProperty(VFile.prototype, 'basename', {\n get: getBasename,\n set: setBasename\n})\n\n// Access extname (`.js`).\nObject.defineProperty(VFile.prototype, 'extname', {\n get: getExtname,\n set: setExtname\n})\n\n// Access stem (`index.min`).\nObject.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem})\n\n// Construct a new file.\nfunction VFile(options) {\n var prop\n var index\n\n if (!options) {\n options = {}\n } else if (typeof options === 'string' || buffer(options)) {\n options = {contents: options}\n } else if ('message' in options && 'messages' in options) {\n return options\n }\n\n if (!(this instanceof VFile)) {\n return new VFile(options)\n }\n\n this.data = {}\n this.messages = []\n this.history = []\n this.cwd = proc.cwd()\n\n // Set path related properties in the correct order.\n index = -1\n\n while (++index < order.length) {\n prop = order[index]\n\n if (own.call(options, prop)) {\n this[prop] = options[prop]\n }\n }\n\n // Set non-path related properties.\n for (prop in options) {\n if (order.indexOf(prop) < 0) {\n this[prop] = options[prop]\n }\n }\n}\n\nfunction getPath() {\n return this.history[this.history.length - 1]\n}\n\nfunction setPath(path) {\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n}\n\nfunction getDirname() {\n return typeof this.path === 'string' ? p.dirname(this.path) : undefined\n}\n\nfunction setDirname(dirname) {\n assertPath(this.path, 'dirname')\n this.path = p.join(dirname || '', this.basename)\n}\n\nfunction getBasename() {\n return typeof this.path === 'string' ? p.basename(this.path) : undefined\n}\n\nfunction setBasename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = p.join(this.dirname || '', basename)\n}\n\nfunction getExtname() {\n return typeof this.path === 'string' ? p.extname(this.path) : undefined\n}\n\nfunction setExtname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.path, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.indexOf('.', 1) > -1) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = p.join(this.dirname, this.stem + (extname || ''))\n}\n\nfunction getStem() {\n return typeof this.path === 'string'\n ? p.basename(this.path, this.extname)\n : undefined\n}\n\nfunction setStem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = p.join(this.dirname || '', stem + (this.extname || ''))\n}\n\n// Get the value of the file.\nfunction toString(encoding) {\n return (this.contents || '').toString(encoding)\n}\n\n// Assert that `part` is not a path (i.e., does not contain `p.sep`).\nfunction assertPart(part, name) {\n if (part && part.indexOf(p.sep) > -1) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + p.sep + '`'\n )\n }\n}\n\n// Assert that `part` is not empty.\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n// Assert `path` exists.\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n","'use strict'\n\n// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexports.basename = basename\nexports.dirname = dirname\nexports.extname = extname\nexports.join = join\nexports.sep = '/'\n\nfunction basename(path, ext) {\n var start = 0\n var end = -1\n var index\n var firstNonSlashEnd\n var seenNonSlash\n var extIndex\n\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n index = path.length\n\n if (ext === undefined || !ext.length || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n firstNonSlashEnd = -1\n extIndex = ext.length - 1\n\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\nfunction dirname(path) {\n var end\n var unmatchedSlash\n var index\n\n assertPath(path)\n\n if (!path.length) {\n return '.'\n }\n\n end = -1\n index = path.length\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.charCodeAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\nfunction extname(path) {\n var startDot = -1\n var startPart = 0\n var end = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n var preDotState = 0\n var unmatchedSlash\n var code\n var index\n\n assertPath(path)\n\n index = path.length\n\n while (index--) {\n code = path.charCodeAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\nfunction join() {\n var index = -1\n var joined\n\n while (++index < arguments.length) {\n assertPath(arguments[index])\n\n if (arguments[index]) {\n joined =\n joined === undefined\n ? arguments[index]\n : joined + '/' + arguments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n var absolute\n var value\n\n assertPath(path)\n\n absolute = path.charCodeAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n value = normalizeString(path, !absolute)\n\n if (!value.length && !absolute) {\n value = '.'\n }\n\n if (value.length && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n// Resolve `.` and `..` elements in a path with directory names.\nfunction normalizeString(path, allowAboveRoot) {\n var result = ''\n var lastSegmentLength = 0\n var lastSlash = -1\n var dots = 0\n var index = -1\n var code\n var lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.charCodeAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n result.charCodeAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n /* istanbul ignore else - No clue how to cover it. */\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n","'use strict'\n\n// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexports.cwd = cwd\n\nfunction cwd() {\n return '/'\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict'\n\nvar bail = require('bail')\nvar buffer = require('is-buffer')\nvar extend = require('extend')\nvar plain = require('is-plain-obj')\nvar trough = require('trough')\nvar vfile = require('vfile')\n\n// Expose a frozen processor.\nmodule.exports = unified().freeze()\n\nvar slice = [].slice\nvar own = {}.hasOwnProperty\n\n// Process pipeline.\nvar pipeline = trough()\n .use(pipelineParse)\n .use(pipelineRun)\n .use(pipelineStringify)\n\nfunction pipelineParse(p, ctx) {\n ctx.tree = p.parse(ctx.file)\n}\n\nfunction pipelineRun(p, ctx, next) {\n p.run(ctx.tree, ctx.file, done)\n\n function done(error, tree, file) {\n if (error) {\n next(error)\n } else {\n ctx.tree = tree\n ctx.file = file\n next()\n }\n }\n}\n\nfunction pipelineStringify(p, ctx) {\n var result = p.stringify(ctx.tree, ctx.file)\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (typeof result === 'string' || buffer(result)) {\n if ('value' in ctx.file) {\n ctx.file.value = result\n }\n\n ctx.file.contents = result\n } else {\n ctx.file.result = result\n }\n}\n\n// Function to create the first processor.\nfunction unified() {\n var attachers = []\n var transformers = trough()\n var namespace = {}\n var freezeIndex = -1\n var frozen\n\n // Data management.\n processor.data = data\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n processor.run = run\n processor.runSync = runSync\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n function processor() {\n var destination = unified()\n var index = -1\n\n while (++index < attachers.length) {\n destination.use.apply(null, attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n // Freeze: used to signal a processor that has finished configuration.\n //\n // For example, take unified itself: it’s frozen.\n // Plugins should not be added to it.\n // Rather, it should be extended, by invoking it, before modifying it.\n //\n // In essence, always invoke this when exporting a processor.\n function freeze() {\n var values\n var transformer\n\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n values = attachers[freezeIndex]\n\n if (values[1] === false) {\n continue\n }\n\n if (values[1] === true) {\n values[1] = undefined\n }\n\n transformer = values[0].apply(processor, values.slice(1))\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Infinity\n\n return processor\n }\n\n // Data management.\n // Getter / setter for processor-specific informtion.\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n namespace[key] = value\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n // Plugin management.\n //\n // Pass it:\n // * an attacher and options,\n // * a preset,\n // * a list of presets, attachers, and arguments (list of attachers and\n // options).\n function use(value) {\n var settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin.apply(null, arguments)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = extend(namespace.settings || {}, settings)\n }\n\n return processor\n\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = extend(settings || {}, result.settings)\n }\n }\n\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addPlugin.apply(null, value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n }\n\n function addList(plugins) {\n var index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (typeof plugins === 'object' && 'length' in plugins) {\n while (++index < plugins.length) {\n add(plugins[index])\n }\n } else {\n throw new Error('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n function addPlugin(plugin, value) {\n var entry = find(plugin)\n\n if (entry) {\n if (plain(entry[1]) && plain(value)) {\n value = extend(true, entry[1], value)\n }\n\n entry[1] = value\n } else {\n attachers.push(slice.call(arguments))\n }\n }\n }\n\n function find(plugin) {\n var index = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n return attachers[index]\n }\n }\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor.\n function parse(doc) {\n var file = vfile(doc)\n var Parser\n\n freeze()\n Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n return new Parser(String(file), file).parse()\n }\n\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), async.\n function run(node, file, cb) {\n assertNode(node)\n freeze()\n\n if (!cb && typeof file === 'function') {\n cb = file\n file = null\n }\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n transformers.run(node, vfile(file), done)\n\n function done(error, tree, file) {\n tree = tree || node\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(tree)\n } else {\n cb(null, tree, file)\n }\n }\n }\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), sync.\n function runSync(node, file) {\n var result\n var complete\n\n run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n return result\n\n function done(error, tree) {\n complete = true\n result = tree\n bail(error)\n }\n }\n\n // Stringify a unist node representation of a file (in string or vfile\n // representation) into a string using the `Compiler` on the processor.\n function stringify(node, doc) {\n var file = vfile(doc)\n var Compiler\n\n freeze()\n Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n return new Compiler(node, file).compile()\n }\n\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor, then run transforms on that node, and\n // compile the resulting node using the `Compiler` on the processor, and\n // store that result on the vfile.\n function process(doc, cb) {\n freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n var file = vfile(doc)\n\n pipeline.run(processor, {file: file}, done)\n\n function done(error) {\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n cb(null, file)\n }\n }\n }\n }\n\n // Process the given document (in string or vfile representation), sync.\n function processSync(doc) {\n var file\n var complete\n\n freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n file = vfile(doc)\n\n process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n function done(error) {\n complete = true\n bail(error)\n }\n }\n}\n\n// Check if `value` is a constructor.\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\n value.prototype &&\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n (keys(value.prototype) || name in value.prototype)\n )\n}\n\n// Check if `value` is an object with keys.\nfunction keys(value) {\n var key\n for (key in value) {\n return true\n }\n\n return false\n}\n\n// Assert a parser is available.\nfunction assertParser(name, Parser) {\n if (typeof Parser !== 'function') {\n throw new Error('Cannot `' + name + '` without `Parser`')\n }\n}\n\n// Assert a compiler is available.\nfunction assertCompiler(name, Compiler) {\n if (typeof Compiler !== 'function') {\n throw new Error('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n// Assert the processor is not frozen.\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot invoke `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n// Assert `node` is a unist node.\nfunction assertNode(node) {\n if (!node || typeof node.type !== 'string') {\n throw new Error('Expected node, got `' + node + '`')\n }\n}\n\n// Assert that `complete` is `true`.\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n","'use strict'\n\nmodule.exports = bail\n\nfunction bail(err) {\n if (err) {\n throw err\n }\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict';\n\nmodule.exports = value => {\n\tif (Object.prototype.toString.call(value) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype;\n};\n","'use strict'\n\nvar wrap = require('./wrap.js')\n\nmodule.exports = trough\n\ntrough.wrap = wrap\n\nvar slice = [].slice\n\n// Create new middleware.\nfunction trough() {\n var fns = []\n var middleware = {}\n\n middleware.run = run\n middleware.use = use\n\n return middleware\n\n // Run `fns`. Last argument must be a completion handler.\n function run() {\n var index = -1\n var input = slice.call(arguments, 0, -1)\n var done = arguments[arguments.length - 1]\n\n if (typeof done !== 'function') {\n throw new Error('Expected function as last argument, not ' + done)\n }\n\n next.apply(null, [null].concat(input))\n\n // Run the next `fn`, if any.\n function next(err) {\n var fn = fns[++index]\n var params = slice.call(arguments, 0)\n var values = params.slice(1)\n var length = input.length\n var pos = -1\n\n if (err) {\n done(err)\n return\n }\n\n // Copy non-nully input into values.\n while (++pos < length) {\n if (values[pos] === null || values[pos] === undefined) {\n values[pos] = input[pos]\n }\n }\n\n input = values\n\n // Next or done.\n if (fn) {\n wrap(fn, next).apply(null, input)\n } else {\n done.apply(null, [null].concat(input))\n }\n }\n }\n\n // Add `fn` to the list.\n function use(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Expected `fn` to be a function, not ' + fn)\n }\n\n fns.push(fn)\n\n return middleware\n }\n}\n","'use strict'\n\nvar slice = [].slice\n\nmodule.exports = wrap\n\n// Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\nfunction wrap(fn, callback) {\n var invoked\n\n return wrapped\n\n function wrapped() {\n var params = slice.call(arguments, 0)\n var callback = fn.length > params.length\n var result\n\n if (callback) {\n params.push(done)\n }\n\n try {\n result = fn.apply(null, params)\n } catch (error) {\n // Well, this is quite the pickle.\n // `fn` received a callback and invoked it (thus continuing the pipeline),\n // but later also threw an error.\n // We’re not about to restart the pipeline again, so the only thing left\n // to do is to throw the thing instead.\n if (callback && invoked) {\n throw error\n }\n\n return done(error)\n }\n\n if (!callback) {\n if (result && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n // Invoke `next`, only once.\n function done() {\n if (!invoked) {\n invoked = true\n\n callback.apply(null, arguments)\n }\n }\n\n // Invoke `done` with one value.\n // Tracks if an error is passed, too.\n function then(value) {\n done(null, value)\n }\n}\n","'use strict'\n\nmodule.exports = parse\n\nvar fromMarkdown = require('mdast-util-from-markdown')\n\nfunction parse(options) {\n var self = this\n\n this.Parser = parse\n\n function parse(doc) {\n return fromMarkdown(\n doc,\n Object.assign({}, self.data('settings'), options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n )\n }\n}\n","'use strict'\n\nmodule.exports = require('./dist')\n","'use strict'\n\nmodule.exports = fromMarkdown\n\n// These three are compiled away in the `dist/`\n\nvar toString = require('mdast-util-to-string')\nvar assign = require('micromark/dist/constant/assign')\nvar own = require('micromark/dist/constant/has-own-property')\nvar normalizeIdentifier = require('micromark/dist/util/normalize-identifier')\nvar safeFromInt = require('micromark/dist/util/safe-from-int')\nvar parser = require('micromark/dist/parse')\nvar preprocessor = require('micromark/dist/preprocess')\nvar postprocess = require('micromark/dist/postprocess')\nvar decode = require('parse-entities/decode-entity')\nvar stringifyPosition = require('unist-util-stringify-position')\n\nfunction fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parser(options).document().write(preprocessor()(value, encoding, true))\n )\n )\n}\n\n// Note this compiler only understand complete buffering, not streaming.\nfunction compiler(options) {\n var settings = options || {}\n var config = configure(\n {\n transforms: [],\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\n\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n },\n\n settings.mdastExtensions || []\n )\n\n var data = {}\n\n return compile\n\n function compile(events) {\n var tree = {type: 'root', children: []}\n var stack = [tree]\n var tokenStack = []\n var listStack = []\n var index = -1\n var handler\n var listStart\n\n var context = {\n stack: stack,\n tokenStack: tokenStack,\n config: config,\n enter: enter,\n exit: exit,\n buffer: buffer,\n resume: resume,\n setData: setData,\n getData: getData\n }\n\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n listStart = listStack.pop(index)\n index = prepareList(events, listStart, index)\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n assign({sliceSerialize: events[index][2].sliceSerialize}, context),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length) {\n throw new Error(\n 'Cannot close document, a token (`' +\n tokenStack[tokenStack.length - 1].type +\n '`, ' +\n stringifyPosition({\n start: tokenStack[tokenStack.length - 1].start,\n end: tokenStack[tokenStack.length - 1].end\n }) +\n ') is still open'\n )\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length ? events[0][1].start : {line: 1, column: 1, offset: 0}\n ),\n\n end: point(\n events.length\n ? events[events.length - 2][1].end\n : {line: 1, column: 1, offset: 0}\n )\n }\n\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n\n return tree\n }\n\n function prepareList(events, start, length) {\n var index = start - 1\n var containerBalance = -1\n var listSpread = false\n var listItem\n var tailIndex\n var lineIndex\n var tailEvent\n var event\n var firstBlankLineIndex\n var atMarker\n\n while (++index <= length) {\n event = events[index]\n\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n tailEvent = events[tailIndex]\n\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = point(\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: point(event[1].start)\n }\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n\n events[start][1]._spread = listSpread\n return length\n }\n\n function setData(key, value) {\n data[key] = value\n }\n\n function getData(key) {\n return data[key]\n }\n\n function point(d) {\n return {line: d.line, column: d.column, offset: d.offset}\n }\n\n function opener(create, and) {\n return open\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n function buffer() {\n this.stack.push({type: 'fragment', children: []})\n }\n\n function enter(node, token) {\n this.stack[this.stack.length - 1].children.push(node)\n this.stack.push(node)\n this.tokenStack.push(token)\n node.position = {start: point(token.start)}\n return node\n }\n\n function closer(and) {\n return close\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n function exit(token) {\n var node = this.stack.pop()\n var open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): it’s not open'\n )\n } else if (open.type !== token.type) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): a different token (`' +\n open.type +\n '`, ' +\n stringifyPosition({start: open.start, end: open.end}) +\n ') is open'\n )\n }\n\n node.position.end = point(token.end)\n return node\n }\n\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n this.stack[this.stack.length - 2].start = parseInt(\n this.sliceSerialize(token),\n 10\n )\n\n setData('expectingFirstListItemValue')\n }\n }\n\n function onexitcodefencedfenceinfo() {\n var data = this.resume()\n this.stack[this.stack.length - 1].lang = data\n }\n\n function onexitcodefencedfencemeta() {\n var data = this.resume()\n this.stack[this.stack.length - 1].meta = data\n }\n\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n function onexitcodefenced() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data.replace(\n /^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g,\n ''\n )\n\n setData('flowCodeInside')\n }\n\n function onexitcodeindented() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitdefinitiontitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitdefinitiondestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitatxheadingsequence(token) {\n if (!this.stack[this.stack.length - 1].depth) {\n this.stack[this.stack.length - 1].depth = this.sliceSerialize(\n token\n ).length\n }\n }\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n function onexitsetextheadinglinesequence(token) {\n this.stack[this.stack.length - 1].depth =\n this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n function onenterdata(token) {\n var siblings = this.stack[this.stack.length - 1].children\n var tail = siblings[siblings.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {start: point(token.start)}\n this.stack[this.stack.length - 1].children.push(tail)\n }\n\n this.stack.push(tail)\n }\n\n function onexitdata(token) {\n var tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n function onexitlineending(token) {\n var context = this.stack[this.stack.length - 1]\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n context.children[context.children.length - 1].position.end = point(\n token.end\n )\n\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.indexOf(context.type) > -1\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n function onexithtmlflow() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexithtmltext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitcodetext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitlink() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitimage() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitlabeltext(token) {\n this.stack[this.stack.length - 2].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitlabel() {\n var fragment = this.stack[this.stack.length - 1]\n var value = this.resume()\n\n this.stack[this.stack.length - 1].label = value\n\n // Assume a reference.\n setData('inReference', true)\n\n if (this.stack[this.stack.length - 1].type === 'link') {\n this.stack[this.stack.length - 1].children = fragment.children\n } else {\n this.stack[this.stack.length - 1].alt = value\n }\n }\n\n function onexitresourcedestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitresourcetitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitresource() {\n setData('inReference')\n }\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n function onexitreferencestring(token) {\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n function onexitcharacterreferencevalue(token) {\n var data = this.sliceSerialize(token)\n var type = getData('characterReferenceType')\n var value\n var tail\n\n if (type) {\n value = safeFromInt(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n\n setData('characterReferenceType')\n } else {\n value = decode(data)\n }\n\n tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url = this.sliceSerialize(token)\n }\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url =\n 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n function blockQuote() {\n return {type: 'blockquote', children: []}\n }\n\n function codeFlow() {\n return {type: 'code', lang: null, meta: null, value: ''}\n }\n\n function codeText() {\n return {type: 'inlineCode', value: ''}\n }\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n function emphasis() {\n return {type: 'emphasis', children: []}\n }\n\n function heading() {\n return {type: 'heading', depth: undefined, children: []}\n }\n\n function hardBreak() {\n return {type: 'break'}\n }\n\n function html() {\n return {type: 'html', value: ''}\n }\n\n function image() {\n return {type: 'image', title: null, url: '', alt: null}\n }\n\n function link() {\n return {type: 'link', title: null, url: '', children: []}\n }\n\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n function paragraph() {\n return {type: 'paragraph', children: []}\n }\n\n function strong() {\n return {type: 'strong', children: []}\n }\n\n function text() {\n return {type: 'text', value: ''}\n }\n\n function thematicBreak() {\n return {type: 'thematicBreak'}\n }\n}\n\nfunction configure(config, extensions) {\n var index = -1\n\n while (++index < extensions.length) {\n extension(config, extensions[index])\n }\n\n return config\n}\n\nfunction extension(config, extension) {\n var key\n var left\n\n for (key in extension) {\n left = own.call(config, key) ? config[key] : (config[key] = {})\n\n if (key === 'canContainEols' || key === 'transforms') {\n config[key] = [].concat(left, extension[key])\n } else {\n Object.assign(left, extension[key])\n }\n }\n}\n","'use strict'\n\nmodule.exports = toString\n\n// Get the text content of a node.\n// Prefer the node’s plain-text fields, otherwise serialize its children,\n// and if the given value is an array, serialize the nodes in it.\nfunction toString(node) {\n return (\n (node &&\n (node.value ||\n node.alt ||\n node.title ||\n ('children' in node && all(node.children)) ||\n ('length' in node && all(node)))) ||\n ''\n )\n}\n\nfunction all(values) {\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = toString(values[index])\n }\n\n return result.join('')\n}\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction safeFromInt(value, base) {\n var code = parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return fromCharCode(code)\n}\n\nmodule.exports = safeFromInt\n","'use strict'\n\nvar content = require('./initialize/content.js')\nvar document = require('./initialize/document.js')\nvar flow = require('./initialize/flow.js')\nvar text = require('./initialize/text.js')\nvar combineExtensions = require('./util/combine-extensions.js')\nvar createTokenizer = require('./util/create-tokenizer.js')\nvar miniflat = require('./util/miniflat.js')\nvar constructs = require('./constructs.js')\n\nfunction parse(options) {\n var settings = options || {}\n var parser = {\n defined: [],\n constructs: combineExtensions(\n [constructs].concat(miniflat(settings.extensions))\n ),\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(text.string),\n text: create(text.text)\n }\n return parser\n\n function create(initializer) {\n return creator\n\n function creator(from) {\n return createTokenizer(parser, initializer, from)\n }\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\n\nvar tokenize = initializeContent\n\nfunction initializeContent(effects) {\n var contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n var previous\n return contentStart\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n function lineStart(code) {\n var token = effects.enter('chunkText', {\n contentType: 'text',\n previous: previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeDocument\nvar containerConstruct = {\n tokenize: tokenizeContainer\n}\nvar lazyFlowConstruct = {\n tokenize: tokenizeLazyFlow\n}\n\nfunction initializeDocument(effects) {\n var self = this\n var stack = []\n var continued = 0\n var inspectConstruct = {\n tokenize: tokenizeInspect,\n partial: true\n }\n var inspectResult\n var childFlow\n var childToken\n return start\n\n function start(code) {\n if (continued < stack.length) {\n self.containerState = stack[continued][1]\n return effects.attempt(\n stack[continued][0].continuation,\n documentContinue,\n documentContinued\n )(code)\n }\n\n return documentContinued(code)\n }\n\n function documentContinue(code) {\n continued++\n return start(code)\n }\n\n function documentContinued(code) {\n // If we’re in a concrete construct (such as when expecting another line of\n // HTML, or we resulted in lazy content), we can immediately start flow.\n if (inspectResult && inspectResult.flowContinue) {\n return flowStart(code)\n }\n\n self.interrupt =\n childFlow &&\n childFlow.currentConstruct &&\n childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n function containerContinue(code) {\n stack.push([self.currentConstruct, self.containerState])\n self.containerState = undefined\n return documentContinued(code)\n }\n\n function flowStart(code) {\n if (code === null) {\n exitContainers(0, true)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n\n function flowContinue(code) {\n if (code === null) {\n continueFlow(effects.exit('chunkFlow'))\n return flowStart(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n continueFlow(effects.exit('chunkFlow'))\n return effects.check(inspectConstruct, documentAfterPeek)\n }\n\n effects.consume(code)\n return flowContinue\n }\n\n function documentAfterPeek(code) {\n exitContainers(\n inspectResult.continued,\n inspectResult && inspectResult.flowEnd\n )\n continued = 0\n return start(code)\n }\n\n function continueFlow(token) {\n if (childToken) childToken.next = token\n childToken = token\n childFlow.lazy = inspectResult && inspectResult.lazy\n childFlow.defineSkip(token.start)\n childFlow.write(self.sliceStream(token))\n }\n\n function exitContainers(size, end) {\n var index = stack.length // Close the flow.\n\n if (childFlow && end) {\n childFlow.write([null])\n childToken = childFlow = undefined\n } // Exit open containers.\n\n while (index-- > size) {\n self.containerState = stack[index][1]\n stack[index][0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function tokenizeInspect(effects, ok) {\n var subcontinued = 0\n inspectResult = {}\n return inspectStart\n\n function inspectStart(code) {\n if (subcontinued < stack.length) {\n self.containerState = stack[subcontinued][1]\n return effects.attempt(\n stack[subcontinued][0].continuation,\n inspectContinue,\n inspectLess\n )(code)\n } // If we’re continued but in a concrete flow, we can’t have more\n // containers.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n inspectResult.flowContinue = true\n return inspectDone(code)\n }\n\n self.interrupt =\n childFlow.currentConstruct && childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd,\n inspectDone\n )(code)\n }\n\n function inspectContinue(code) {\n subcontinued++\n return self.containerState._closeFlow\n ? inspectFlowEnd(code)\n : inspectStart(code)\n }\n\n function inspectLess(code) {\n if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {\n // Maybe another container?\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd, // Maybe flow, or a blank line?\n effects.attempt(\n lazyFlowConstruct,\n inspectFlowEnd,\n effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)\n )\n )(code)\n } // Otherwise we’re interrupting.\n\n return inspectFlowEnd(code)\n }\n\n function inspectLazy(code) {\n // Act as if all containers are continued.\n subcontinued = stack.length\n inspectResult.lazy = true\n inspectResult.flowContinue = true\n return inspectDone(code)\n } // We’re done with flow if we have more containers, or an interruption.\n\n function inspectFlowEnd(code) {\n inspectResult.flowEnd = true\n return inspectDone(code)\n }\n\n function inspectDone(code) {\n inspectResult.continued = subcontinued\n self.interrupt = self.containerState = undefined\n return ok(code)\n }\n }\n}\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction tokenizeLazyFlow(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.lazy(this.parser.constructs.flow, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar content = require('../tokenize/content.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeFlow\n\nfunction initializeFlow(effects) {\n var self = this\n var initial = effects.attempt(\n // Try to parse a blank line.\n partialBlankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar subtokenize = require('../util/subtokenize.js')\nvar factorySpace = require('./factory-space.js')\n\n// No name because it must not be turned off.\nvar content = {\n tokenize: tokenizeContent,\n resolve: resolveContent,\n interruptible: true,\n lazy: true\n}\nvar continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n} // Content is transparent: it’s parsed right now. That way, definitions are also\n// parsed right now: before text in paragraphs (specifically, media) are parsed.\n\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n\nfunction tokenizeContent(effects, ok) {\n var previous\n return start\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\n\n function data(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous = previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous: previous\n })\n return data\n }\n}\n\nfunction tokenizeContinuation(effects, ok, nok) {\n var self = this\n return startLookahead\n\n function startLookahead(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ||\n prefixSize(self.events, 'linePrefix') < 4\n ) {\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n\n return ok(code)\n }\n}\n\nmodule.exports = content\n","'use strict'\n\nvar splice = [].splice\n\nmodule.exports = splice\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar chunkedPush = require('./chunked-push.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\nvar resolveAll = require('./resolve-all.js')\nvar serializeChunks = require('./serialize-chunks.js')\nvar shallow = require('./shallow.js')\nvar sliceChunks = require('./slice-chunks.js')\n\n// Create a tokenizer.\n// Tokenizers deal with one type of data (e.g., containers, flow, text).\n// The parser is the object dealing with it all.\n// `initialize` works like other constructs, except that only its `tokenize`\n// function is used, in which case it doesn’t receive an `ok` or `nok`.\n// `from` can be given to set the point before the first character, although\n// when further lines are indented, they must be set with `defineSkip`.\nfunction createTokenizer(parser, initialize, from) {\n var point = from\n ? shallow(from)\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n var columnStart = {}\n var resolveAllConstructs = []\n var chunks = []\n var stack = []\n\n var effects = {\n consume: consume,\n enter: enter,\n exit: exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n }),\n lazy: constructFactory(onsuccessfulcheck, {\n lazy: true\n })\n } // State and tools for resolving and serializing.\n\n var context = {\n previous: null,\n events: [],\n parser: parser,\n sliceStream: sliceStream,\n sliceSerialize: sliceSerialize,\n now: now,\n defineSkip: skip,\n write: write\n } // The state function.\n\n var state = initialize.tokenize.call(context, effects) // Track which character we expect to be consumed, to catch bugs.\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n } // Store where we are in the input stream.\n\n point._index = 0\n point._bufferIndex = -1\n return context\n\n function write(slice) {\n chunks = chunkedPush(chunks, slice)\n main() // Exit if we’re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n\n addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n } //\n // Tools.\n //\n\n function sliceSerialize(token) {\n return serializeChunks(sliceStream(token))\n }\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n function now() {\n return shallow(point)\n }\n\n function skip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\n //\n // Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n // `consume`).\n // Here is where we walk through the chunks, which either include strings of\n // several characters, or numerical character codes.\n // The reason to do this in a loop instead of a call is so the stack can\n // drain.\n\n function main() {\n var chunkIndex\n var chunk\n\n while (point._index < chunks.length) {\n chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n } // Deal with one code.\n\n function go(code) {\n state = state(code)\n } // Move a character forward.\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n } // Start a token.\n\n function enter(type, fields) {\n var token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n } // Stop a token.\n\n function exit(type) {\n var token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n } // Use results.\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n } // Discard results.\n\n function onsuccessfulcheck(construct, info) {\n info.restore()\n } // Factory to attempt/check/interrupt.\n\n function constructFactory(onreturn, fields) {\n return hook // Handle either an object mapping codes to constructs, a list of\n // constructs, or a single construct.\n\n function hook(constructs, returnState, bogusState) {\n var listOfConstructs\n var constructIndex\n var currentConstruct\n var info\n return constructs.tokenize || 'length' in constructs\n ? handleListOfConstructs(miniflat(constructs))\n : handleMapOfConstructs\n\n function handleMapOfConstructs(code) {\n if (code in constructs || null in constructs) {\n return handleListOfConstructs(\n constructs.null\n ? /* c8 ignore next */\n miniflat(constructs[code]).concat(miniflat(constructs.null))\n : constructs[code]\n )(code)\n }\n\n return bogusState(code)\n }\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n return handleConstruct(list[constructIndex])\n }\n\n function handleConstruct(construct) {\n return start\n\n function start(code) {\n // To do: not nede to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.indexOf(construct.name) > -1\n ) {\n return nok()\n }\n\n return construct.tokenize.call(\n fields ? assign({}, context, fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n function ok(code) {\n onreturn(currentConstruct, info)\n return returnState\n }\n\n function nok(code) {\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n\n function addResult(construct, from) {\n if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n chunkedSplice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n\n function store() {\n var startPoint = now()\n var startPrevious = context.previous\n var startCurrentConstruct = context.currentConstruct\n var startEventsIndex = context.events.length\n var startStack = Array.from(stack)\n return {\n restore: restore,\n from: startEventsIndex\n }\n\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n\nmodule.exports = createTokenizer\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction serializeChunks(chunks) {\n var index = -1\n var result = []\n var chunk\n var value\n var atTab\n\n while (++index < chunks.length) {\n chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n value = chunk\n } else if (chunk === -5) {\n value = '\\r'\n } else if (chunk === -4) {\n value = '\\n'\n } else if (chunk === -3) {\n value = '\\r' + '\\n'\n } else if (chunk === -2) {\n value = '\\t'\n } else if (chunk === -1) {\n if (atTab) continue\n value = ' '\n } else {\n // Currently only replacement character.\n value = fromCharCode(chunk)\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n\nmodule.exports = serializeChunks\n","'use strict'\n\nfunction sliceChunks(chunks, token) {\n var startIndex = token.start._index\n var startBufferIndex = token.start._bufferIndex\n var endIndex = token.end._index\n var endBufferIndex = token.end._bufferIndex\n var view\n\n if (startIndex === endIndex) {\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n\nmodule.exports = sliceChunks\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar text$1 = require('./initialize/text.js')\nvar attention = require('./tokenize/attention.js')\nvar autolink = require('./tokenize/autolink.js')\nvar blockQuote = require('./tokenize/block-quote.js')\nvar characterEscape = require('./tokenize/character-escape.js')\nvar characterReference = require('./tokenize/character-reference.js')\nvar codeFenced = require('./tokenize/code-fenced.js')\nvar codeIndented = require('./tokenize/code-indented.js')\nvar codeText = require('./tokenize/code-text.js')\nvar definition = require('./tokenize/definition.js')\nvar hardBreakEscape = require('./tokenize/hard-break-escape.js')\nvar headingAtx = require('./tokenize/heading-atx.js')\nvar htmlFlow = require('./tokenize/html-flow.js')\nvar htmlText = require('./tokenize/html-text.js')\nvar labelEnd = require('./tokenize/label-end.js')\nvar labelStartImage = require('./tokenize/label-start-image.js')\nvar labelStartLink = require('./tokenize/label-start-link.js')\nvar lineEnding = require('./tokenize/line-ending.js')\nvar list = require('./tokenize/list.js')\nvar setextUnderline = require('./tokenize/setext-underline.js')\nvar thematicBreak = require('./tokenize/thematic-break.js')\n\nvar document = {\n 42: list,\n // Asterisk\n 43: list,\n // Plus sign\n 45: list,\n // Dash\n 48: list,\n // 0\n 49: list,\n // 1\n 50: list,\n // 2\n 51: list,\n // 3\n 52: list,\n // 4\n 53: list,\n // 5\n 54: list,\n // 6\n 55: list,\n // 7\n 56: list,\n // 8\n 57: list,\n // 9\n 62: blockQuote // Greater than\n}\nvar contentInitial = {\n 91: definition // Left square bracket\n}\nvar flowInitial = {\n '-2': codeIndented,\n // Horizontal tab\n '-1': codeIndented,\n // Virtual space\n 32: codeIndented // Space\n}\nvar flow = {\n 35: headingAtx,\n // Number sign\n 42: thematicBreak,\n // Asterisk\n 45: [setextUnderline, thematicBreak],\n // Dash\n 60: htmlFlow,\n // Less than\n 61: setextUnderline,\n // Equals to\n 95: thematicBreak,\n // Underscore\n 96: codeFenced,\n // Grave accent\n 126: codeFenced // Tilde\n}\nvar string = {\n 38: characterReference,\n // Ampersand\n 92: characterEscape // Backslash\n}\nvar text = {\n '-5': lineEnding,\n // Carriage return\n '-4': lineEnding,\n // Line feed\n '-3': lineEnding,\n // Carriage return + line feed\n 33: labelStartImage,\n // Exclamation mark\n 38: characterReference,\n // Ampersand\n 42: attention,\n // Asterisk\n 60: [autolink, htmlText],\n // Less than\n 91: labelStartLink,\n // Left square bracket\n 92: [hardBreakEscape, characterEscape],\n // Backslash\n 93: labelEnd,\n // Right square bracket\n 95: attention,\n // Underscore\n 96: codeText // Grave accent\n}\nvar insideSpan = {\n null: [attention, text$1.resolver]\n}\nvar disable = {\n null: []\n}\n\nexports.contentInitial = contentInitial\nexports.disable = disable\nexports.document = document\nexports.flow = flow\nexports.flowInitial = flowInitial\nexports.insideSpan = insideSpan\nexports.string = string\nexports.text = text\n","'use strict'\n\nvar chunkedPush = require('../util/chunked-push.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar classifyCharacter = require('../util/classify-character.js')\nvar movePoint = require('../util/move-point.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar shallow = require('../util/shallow.js')\n\nvar attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\nfunction resolveAllAttention(events, context) {\n var index = -1\n var open\n var group\n var text\n var openingSequence\n var closingSequence\n var use\n var nextEvents\n var offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open && // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n } // Number of markers to use from the sequence.\n\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: movePoint(shallow(events[open][1].end), -use),\n end: shallow(events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: shallow(events[index][1].start),\n end: movePoint(shallow(events[index][1].start), use)\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: shallow(events[open][1].end),\n end: shallow(events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: shallow(openingSequence.start),\n end: shallow(closingSequence.end)\n }\n events[open][1].end = shallow(openingSequence.start)\n events[index][1].start = shallow(closingSequence.end)\n nextEvents = [] // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = chunkedPush(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = chunkedPush(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = chunkedPush(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = chunkedPush(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ]) // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = chunkedPush(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n chunkedSplice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\n\nfunction tokenizeAttention(effects, ok) {\n var before = classifyCharacter(this.previous)\n var marker\n return start\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n\n function sequence(code) {\n var token\n var after\n var open\n var close\n\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n token = effects.exit('attentionSequence')\n after = classifyCharacter(code)\n open = !after || (after === 2 && before)\n close = !before || (before === 2 && after)\n token._open = marker === 42 ? open : open && (before || !close)\n token._close = marker === 42 ? close : close && (after || !open)\n return ok(code)\n }\n}\n\nmodule.exports = attention\n","'use strict'\n\n// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nvar unicodePunctuation = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\n// chunks (replacement characters, tabs, or line endings).\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n return point\n}\n\nmodule.exports = movePoint\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiAtext = require('../character/ascii-atext.js')\nvar asciiControl = require('../character/ascii-control.js')\n\nvar autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\nfunction tokenizeAutolink(effects, ok, nok) {\n var size = 1\n return start\n\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n\nmodule.exports = autolink\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\nmodule.exports = asciiAtext\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit: exit\n}\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n if (code === 62) {\n if (!self.containerState.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n self.containerState.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n\nmodule.exports = blockQuote\n","'use strict'\n\nvar asciiPunctuation = require('../character/ascii-punctuation.js')\n\nvar characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = characterEscape\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\nmodule.exports = asciiPunctuation\n","'use strict'\n\nvar decodeEntity = require('parse-entities/decode-entity.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiDigit = require('../character/ascii-digit.js')\nvar asciiHexDigit = require('../character/ascii-hex-digit.js')\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === 'object' && 'default' in e ? e : {default: e}\n}\n\nvar decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)\n\nvar characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n var self = this\n var size = 0\n var max\n var test\n return start\n\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n function value(code) {\n var token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeEntity__default['default'](self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = characterReference\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\nmodule.exports = asciiHexDigit\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar factorySpace = require('./factory-space.js')\n\nvar codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n var self = this\n var closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n var initialPrefix = prefixSize(this.events, 'linePrefix')\n var sizeOpen = 0\n var marker\n return start\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : content(code)\n }\n\n function content(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1)\n : content\n )\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return content(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n function tokenizeClosingFence(effects, ok, nok) {\n var size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n\nmodule.exports = codeFenced\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar factorySpace = require('./factory-space.js')\n\nvar codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented,\n resolve: resolveCodeIndented\n}\nvar indentedContentConstruct = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n\nfunction resolveCodeIndented(events, context) {\n var code = {\n type: 'codeIndented',\n start: events[0][1].start,\n end: events[events.length - 1][1].end\n }\n chunkedSplice(events, 0, 0, [['enter', code, context]])\n chunkedSplice(events, events.length, 0, [['exit', code, context]])\n return events\n}\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n return effects.attempt(indentedContentConstruct, afterPrefix, nok)\n\n function afterPrefix(code) {\n if (code === null) {\n return ok(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n}\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n var self = this\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n\n function afterPrefix(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n }\n\n return prefixSize(self.events, 'linePrefix') < 4 ? nok(code) : ok(code)\n }\n}\n\nmodule.exports = codeIndented\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous: previous\n}\n\nfunction resolveCodeText(events) {\n var tailExitIndex = events.length - 4\n var headEnterIndex = 3\n var index\n var enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[tailExitIndex][1].type = events[headEnterIndex][1].type =\n 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\nfunction tokenizeCodeText(effects, ok, nok) {\n var sizeOpen = 0\n var size\n var token\n return start\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don’t work, and virtual spaces don’t make sense.\n\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return gap\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return gap\n } // Data.\n\n effects.enter('codeTextData')\n return data(code)\n } // In code.\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n\nmodule.exports = codeText\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factorySpace = require('./factory-space.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\nvar titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n\nfunction tokenizeDefinition(effects, ok, nok) {\n var self = this\n var identifier\n return start\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n return factoryWhitespace(\n effects,\n factoryDestination(\n effects,\n effects.attempt(\n titleConstruct,\n factorySpace(effects, after, 'whitespace'),\n factorySpace(effects, after, 'whitespace')\n ),\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )\n )\n }\n\n return nok(code)\n }\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (self.parser.defined.indexOf(identifier) < 0) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = definition\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = hardBreakEscape\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar factorySpace = require('./factory-space.js')\n\nvar headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\nfunction resolveHeadingAtx(events, context) {\n var contentEnd = events.length - 2\n var contentStart = 3\n var content\n var text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: 'text'\n }\n chunkedSplice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n var self = this\n var size = 0\n return start\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n\nmodule.exports = headingAtx\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar fromCharCode = require('../constant/from-char-code.js')\nvar htmlBlockNames = require('../constant/html-block-names.js')\nvar htmlRawNames = require('../constant/html-raw-names.js')\nvar partialBlankLine = require('./partial-blank-line.js')\n\nvar htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\nvar nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n\nfunction resolveToHtmlFlow(events) {\n var index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n var self = this\n var kind\n var startTag\n var buffer\n var index\n var marker\n return start\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.indexOf(buffer.toLowerCase()) > -1\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting.\n\n return self.interrupt\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = undefined\n return completeAttributeValueUnquoted(code)\n }\n\n function completeAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return htmlContinueStart\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n return continuation(code)\n }\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(partialBlankLine, ok, nok)\n }\n}\n\nmodule.exports = htmlFlow\n","'use strict'\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar basics = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'source',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\nmodule.exports = basics\n","'use strict'\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar raws = ['pre', 'script', 'style', 'textarea']\n\nmodule.exports = raws\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n var self = this\n var marker\n var buffer\n var index\n var returnState\n return start\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can’t have blank lines in content, so no need to worry about empty\n // tokens.\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n }\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = htmlText\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartImage\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartLink\n","'use strict'\n\nvar factorySpace = require('./factory-space.js')\n\nvar lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n\nmodule.exports = lineEnding\n","'use strict'\n\nvar asciiDigit = require('../character/ascii-digit.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar sizeChunks = require('../util/size-chunks.js')\nvar factorySpace = require('./factory-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar thematicBreak = require('./thematic-break.js')\n\nvar list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\nvar listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\nvar indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\nfunction tokenizeListStart(effects, ok, nok) {\n var self = this\n var initialSize = prefixSize(self.events, 'linePrefix')\n var size = 0\n return start\n\n function start(code) {\n var kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n partialBlankLine, // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n\n return nok(code)\n }\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize + sizeChunks(self.sliceStream(effects.exit('listItemPrefix')))\n return ok(code)\n }\n}\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n var self = this\n self.containerState._closeFlow = undefined\n return effects.check(partialBlankLine, onBlank, notBlank)\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine // We have a blank line.\n // Still, try to consume at most the items size.\n\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n self.interrupt = undefined\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )(code)\n }\n}\n\nfunction tokenizeIndent(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n\n function afterPrefix(code) {\n return prefixSize(self.events, 'listItemIndent') ===\n self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4 + 1\n )\n\n function afterPrefix(code) {\n return markdownSpace(code) ||\n !prefixSize(self.events, 'listItemPrefixWhitespace')\n ? nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = list\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar shallow = require('../util/shallow.js')\nvar factorySpace = require('./factory-space.js')\n\nvar setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\nfunction resolveToSetextUnderline(events, context) {\n var index = events.length\n var content\n var text\n var definition\n var heading // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n } // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n\n heading = {\n type: 'setextHeading',\n start: shallow(events[text][1].start),\n end: shallow(events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = shallow(events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var marker\n var paragraph // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n\n function start(code) {\n if (!self.lazy && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = setextUnderline\n","'use strict'\n\nvar search = /[\\0\\t\\n\\r]/g\n\nfunction preprocess() {\n var start = true\n var column = 1\n var buffer = ''\n var atCarriageReturn\n return preprocessor\n\n function preprocessor(value, encoding, end) {\n var chunks = []\n var match\n var next\n var startPosition\n var endPosition\n var code\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition = match ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n if (code === 0) {\n chunks.push(65533)\n column++\n } else if (code === 9) {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n } else if (code === 10) {\n chunks.push(-4)\n column = 1\n } // Must be carriage return.\n else {\n atCarriageReturn = true\n column = 1\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n\nmodule.exports = preprocess\n","'use strict'\n\nvar subtokenize = require('./util/subtokenize.js')\n\nfunction postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n\nmodule.exports = postprocess\n","'use strict'\n\nvar mdast2hast = require('mdast-util-to-hast')\n\nmodule.exports = remark2rehype\n\n// Attacher.\n// If a destination is given, runs the destination with the new hast tree\n// (bridge mode).\n// Without destination, returns the tree: further plugins run on that tree\n// (mutate mode).\nfunction remark2rehype(destination, options) {\n if (destination && !destination.process) {\n options = destination\n destination = null\n }\n\n return destination ? bridge(destination, options) : mutate(options)\n}\n\n// Bridge mode.\n// Runs the destination with the new hast tree.\nfunction bridge(destination, options) {\n return transformer\n\n function transformer(node, file, next) {\n destination.run(mdast2hast(node, options), file, done)\n\n function done(error) {\n next(error)\n }\n }\n}\n\n// Mutate-mode.\n// Further transformers run on the hast tree.\nfunction mutate(options) {\n return transformer\n\n function transformer(node) {\n return mdast2hast(node, options)\n }\n}\n","'use strict'\nmodule.exports = require('./lib')\n","'use strict'\n\nmodule.exports = toHast\n\nvar u = require('unist-builder')\nvar visit = require('unist-util-visit')\nvar position = require('unist-util-position')\nvar generated = require('unist-util-generated')\nvar definitions = require('mdast-util-definitions')\nvar one = require('./one')\nvar footer = require('./footer')\nvar handlers = require('./handlers')\n\nvar own = {}.hasOwnProperty\n\nvar deprecationWarningIssued = false\n\n// Factory to transform.\nfunction factory(tree, options) {\n var settings = options || {}\n\n // Issue a warning if the deprecated tag 'allowDangerousHTML' is used\n if (settings.allowDangerousHTML !== undefined && !deprecationWarningIssued) {\n deprecationWarningIssued = true\n console.warn(\n 'mdast-util-to-hast: deprecation: `allowDangerousHTML` is nonstandard, use `allowDangerousHtml` instead'\n )\n }\n\n var dangerous = settings.allowDangerousHtml || settings.allowDangerousHTML\n var footnoteById = {}\n\n h.dangerous = dangerous\n h.definition = definitions(tree)\n h.footnoteById = footnoteById\n h.footnoteOrder = []\n h.augment = augment\n h.handlers = Object.assign({}, handlers, settings.handlers)\n h.unknownHandler = settings.unknownHandler\n h.passThrough = settings.passThrough\n\n visit(tree, 'footnoteDefinition', onfootnotedefinition)\n\n return h\n\n // Finalise the created `right`, a hast node, from `left`, an mdast node.\n function augment(left, right) {\n var data\n var ctx\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && left.data) {\n data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = Object.assign({}, right.properties, data.hProperties)\n }\n\n if (right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n ctx = left && left.position ? left : {position: left}\n\n if (!generated(ctx)) {\n right.position = {\n start: position.start(ctx),\n end: position.end(ctx)\n }\n }\n\n return right\n }\n\n // Create an element for `node`.\n function h(node, tagName, props, children) {\n if (\n (children === undefined || children === null) &&\n typeof props === 'object' &&\n 'length' in props\n ) {\n children = props\n props = {}\n }\n\n return augment(node, {\n type: 'element',\n tagName: tagName,\n properties: props || {},\n children: children || []\n })\n }\n\n function onfootnotedefinition(definition) {\n var id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n }\n}\n\n// Transform `tree`, which is an mdast node, to a hast node.\nfunction toHast(tree, options) {\n var h = factory(tree, options)\n var node = one(h, tree)\n var foot = footer(h)\n\n if (foot) {\n node.children = node.children.concat(u('text', '\\n'), foot)\n }\n\n return node\n}\n","module.exports = identity\nfunction identity(d) {\n return d\n}\n","'use strict'\n\nmodule.exports = generated\n\nfunction generated(node) {\n return (\n !node ||\n !node.position ||\n !node.position.start ||\n !node.position.start.line ||\n !node.position.start.column ||\n !node.position.end ||\n !node.position.end.line ||\n !node.position.end.column\n )\n}\n","'use strict'\n\nvar visit = require('unist-util-visit')\n\nmodule.exports = getDefinitionFactory\n\nvar own = {}.hasOwnProperty\n\n// Get a definition in `node` by `identifier`.\nfunction getDefinitionFactory(node, options) {\n return getterFactory(gather(node, options))\n}\n\n// Gather all definitions in `node`\nfunction gather(node) {\n var cache = {}\n\n if (!node || !node.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(node, 'definition', ondefinition)\n\n return cache\n\n function ondefinition(definition) {\n var id = normalise(definition.identifier)\n if (!own.call(cache, id)) {\n cache[id] = definition\n }\n }\n}\n\n// Factory to get a node from the given definition-cache.\nfunction getterFactory(cache) {\n return getter\n\n // Get a node from the bound definition-cache.\n function getter(identifier) {\n var id = identifier && normalise(identifier)\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\nfunction normalise(identifier) {\n return identifier.toUpperCase()\n}\n","'use strict'\n\nmodule.exports = generateFootnotes\n\nvar thematicBreak = require('./handlers/thematic-break')\nvar list = require('./handlers/list')\nvar wrap = require('./wrap')\n\nfunction generateFootnotes(h) {\n var footnoteById = h.footnoteById\n var footnoteOrder = h.footnoteOrder\n var length = footnoteOrder.length\n var index = -1\n var listItems = []\n var def\n var backReference\n var content\n var tail\n\n while (++index < length) {\n def = footnoteById[footnoteOrder[index].toUpperCase()]\n\n if (!def) {\n continue\n }\n\n content = def.children.concat()\n tail = content[content.length - 1]\n backReference = {\n type: 'link',\n url: '#fnref-' + def.identifier,\n data: {hProperties: {className: ['footnote-backref']}},\n children: [{type: 'text', value: '↩'}]\n }\n\n if (!tail || tail.type !== 'paragraph') {\n tail = {type: 'paragraph', children: []}\n content.push(tail)\n }\n\n tail.children.push(backReference)\n\n listItems.push({\n type: 'listItem',\n data: {hProperties: {id: 'fn-' + def.identifier}},\n children: content,\n position: def.position\n })\n }\n\n if (listItems.length === 0) {\n return null\n }\n\n return h(\n null,\n 'div',\n {className: ['footnotes']},\n wrap(\n [\n thematicBreak(h),\n list(h, {type: 'list', ordered: true, children: listItems})\n ],\n true\n )\n )\n}\n","'use strict'\n\nmodule.exports = {\n blockquote: require('./blockquote'),\n break: require('./break'),\n code: require('./code'),\n delete: require('./delete'),\n emphasis: require('./emphasis'),\n footnoteReference: require('./footnote-reference'),\n footnote: require('./footnote'),\n heading: require('./heading'),\n html: require('./html'),\n imageReference: require('./image-reference'),\n image: require('./image'),\n inlineCode: require('./inline-code'),\n linkReference: require('./link-reference'),\n link: require('./link'),\n listItem: require('./list-item'),\n list: require('./list'),\n paragraph: require('./paragraph'),\n root: require('./root'),\n strong: require('./strong'),\n table: require('./table'),\n text: require('./text'),\n thematicBreak: require('./thematic-break'),\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return null\n}\n","'use strict'\n\nmodule.exports = blockquote\n\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction blockquote(h, node) {\n return h(node, 'blockquote', wrap(all(h, node), true))\n}\n","'use strict'\n\nmodule.exports = hardBreak\n\nvar u = require('unist-builder')\n\nfunction hardBreak(h, node) {\n return [h(node, 'br'), u('text', '\\n')]\n}\n","'use strict'\n\nmodule.exports = code\n\nvar u = require('unist-builder')\n\nfunction code(h, node) {\n var value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n var lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/)\n var props = {}\n var code\n\n if (lang) {\n props.className = ['language-' + lang]\n }\n\n code = h(node, 'code', props, [u('text', value)])\n\n if (node.meta) {\n code.data = {meta: node.meta}\n }\n\n return h(node.position, 'pre', [code])\n}\n","'use strict'\n\nmodule.exports = strikethrough\n\nvar all = require('../all')\n\nfunction strikethrough(h, node) {\n return h(node, 'del', all(h, node))\n}\n","'use strict'\n\nmodule.exports = emphasis\n\nvar all = require('../all')\n\nfunction emphasis(h, node) {\n return h(node, 'em', all(h, node))\n}\n","'use strict'\n\nmodule.exports = footnote\n\nvar footnoteReference = require('./footnote-reference')\n\nfunction footnote(h, node) {\n var footnoteById = h.footnoteById\n var footnoteOrder = h.footnoteOrder\n var identifier = 1\n\n while (identifier in footnoteById) {\n identifier++\n }\n\n identifier = String(identifier)\n\n // No need to check if `identifier` exists in `footnoteOrder`, it’s guaranteed\n // to not exist because we just generated it.\n footnoteOrder.push(identifier)\n\n footnoteById[identifier] = {\n type: 'footnoteDefinition',\n identifier: identifier,\n children: [{type: 'paragraph', children: node.children}],\n position: node.position\n }\n\n return footnoteReference(h, {\n type: 'footnoteReference',\n identifier: identifier,\n position: node.position\n })\n}\n","'use strict'\n\nmodule.exports = heading\n\nvar all = require('../all')\n\nfunction heading(h, node) {\n return h(node, 'h' + node.depth, all(h, node))\n}\n","'use strict'\n\nmodule.exports = html\n\nvar u = require('unist-builder')\n\n// Return either a `raw` node in dangerous mode, otherwise nothing.\nfunction html(h, node) {\n return h.dangerous ? h.augment(node, u('raw', node.value)) : null\n}\n","'use strict'\n\nmodule.exports = imageReference\n\nvar normalize = require('mdurl/encode')\nvar revert = require('../revert')\n\nfunction imageReference(h, node) {\n var def = h.definition(node.identifier)\n var props\n\n if (!def) {\n return revert(h, node)\n }\n\n props = {src: normalize(def.url || ''), alt: node.alt}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'img', props)\n}\n","'use strict'\n\nvar normalize = require('mdurl/encode')\n\nmodule.exports = image\n\nfunction image(h, node) {\n var props = {src: normalize(node.url), alt: node.alt}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'img', props)\n}\n","'use strict'\n\nmodule.exports = inlineCode\n\nvar u = require('unist-builder')\n\nfunction inlineCode(h, node) {\n var value = node.value.replace(/\\r?\\n|\\r/g, ' ')\n return h(node, 'code', [u('text', value)])\n}\n","'use strict'\n\nmodule.exports = linkReference\n\nvar normalize = require('mdurl/encode')\nvar revert = require('../revert')\nvar all = require('../all')\n\nfunction linkReference(h, node) {\n var def = h.definition(node.identifier)\n var props\n\n if (!def) {\n return revert(h, node)\n }\n\n props = {href: normalize(def.url || '')}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","'use strict'\n\nvar normalize = require('mdurl/encode')\nvar all = require('../all')\n\nmodule.exports = link\n\nfunction link(h, node) {\n var props = {href: normalize(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","'use strict'\n\nmodule.exports = listItem\n\nvar u = require('unist-builder')\nvar all = require('../all')\n\nfunction listItem(h, node, parent) {\n var result = all(h, node)\n var head = result[0]\n var loose = parent ? listLoose(parent) : listItemLoose(node)\n var props = {}\n var wrapped = []\n var length\n var index\n var child\n\n if (typeof node.checked === 'boolean') {\n if (!head || head.tagName !== 'p') {\n head = h(null, 'p', [])\n result.unshift(head)\n }\n\n if (head.children.length > 0) {\n head.children.unshift(u('text', ' '))\n }\n\n head.children.unshift(\n h(null, 'input', {\n type: 'checkbox',\n checked: node.checked,\n disabled: true\n })\n )\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n props.className = ['task-list-item']\n }\n\n length = result.length\n index = -1\n\n while (++index < length) {\n child = result[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (loose || index !== 0 || child.tagName !== 'p') {\n wrapped.push(u('text', '\\n'))\n }\n\n if (child.tagName === 'p' && !loose) {\n wrapped = wrapped.concat(child.children)\n } else {\n wrapped.push(child)\n }\n }\n\n // Add a final eol.\n if (length && (loose || child.tagName !== 'p')) {\n wrapped.push(u('text', '\\n'))\n }\n\n return h(node, 'li', props, wrapped)\n}\n\nfunction listLoose(node) {\n var loose = node.spread\n var children = node.children\n var length = children.length\n var index = -1\n\n while (!loose && ++index < length) {\n loose = listItemLoose(children[index])\n }\n\n return loose\n}\n\nfunction listItemLoose(node) {\n var spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","'use strict'\n\nmodule.exports = paragraph\n\nvar all = require('../all')\n\nfunction paragraph(h, node) {\n return h(node, 'p', all(h, node))\n}\n","'use strict'\n\nmodule.exports = root\n\nvar u = require('unist-builder')\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction root(h, node) {\n return h.augment(node, u('root', wrap(all(h, node))))\n}\n","'use strict'\n\nmodule.exports = strong\n\nvar all = require('../all')\n\nfunction strong(h, node) {\n return h(node, 'strong', all(h, node))\n}\n","'use strict'\n\nmodule.exports = table\n\nvar position = require('unist-util-position')\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction table(h, node) {\n var rows = node.children\n var index = rows.length\n var align = node.align || []\n var alignLength = align.length\n var result = []\n var pos\n var row\n var out\n var name\n var cell\n\n while (index--) {\n row = rows[index].children\n name = index === 0 ? 'th' : 'td'\n pos = alignLength || row.length\n out = []\n\n while (pos--) {\n cell = row[pos]\n out[pos] = h(cell, name, {align: align[pos]}, cell ? all(h, cell) : [])\n }\n\n result[index] = h(rows[index], 'tr', wrap(out, true))\n }\n\n return h(\n node,\n 'table',\n wrap(\n [h(result[0].position, 'thead', wrap([result[0]], true))].concat(\n result[1]\n ? h(\n {\n start: position.start(result[1]),\n end: position.end(result[result.length - 1])\n },\n 'tbody',\n wrap(result.slice(1), true)\n )\n : []\n ),\n true\n )\n )\n}\n","'use strict'\n\nmodule.exports = text\n\nvar u = require('unist-builder')\n\nfunction text(h, node) {\n return h.augment(\n node,\n u('text', String(node.value).replace(/[ \\t]*(\\r?\\n|\\r)[ \\t]*/g, '$1'))\n )\n}\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nvar boolean = types.boolean\nvar overloadedBoolean = types.overloadedBoolean\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\n\nmodule.exports = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: commaSeparated,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextMenu: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: commaSeparated,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n }\n})\n","const visit = require('unist-util-visit')\n\nmodule.exports = rehypeFilter\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef RehypeFilterOptions\n * @property {Array.<string>} [allowedElements]\n * @property {Array.<string>} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[RehypeFilterOptions]>}\n */\nfunction rehypeFilter(options) {\n if (options.allowedElements && options.disallowedElements) {\n throw new TypeError(\n 'Only one of `allowedElements` and `disallowedElements` should be defined'\n )\n }\n\n if (\n options.allowedElements ||\n options.disallowedElements ||\n options.allowElement\n ) {\n return (tree) => {\n const node = /** @type {Root} */ (tree)\n visit(node, 'element', onelement)\n }\n }\n\n /**\n * @param {Node} node_\n * @param {number|null|undefined} index\n * @param {Node|null|undefined} parent_\n * @returns {number|void}\n */\n function onelement(node_, index, parent_) {\n const node = /** @type {Element} */ (node_)\n const parent = /** @type {Element|Root} */ (parent_)\n /** @type {boolean|undefined} */\n let remove\n\n if (options.allowedElements) {\n remove = !options.allowedElements.includes(node.tagName)\n } else if (options.disallowedElements) {\n remove = options.disallowedElements.includes(node.tagName)\n }\n\n if (!remove && options.allowElement && typeof index === 'number') {\n remove = !options.allowElement(node, index, parent)\n }\n\n if (remove && typeof index === 'number') {\n if (options.unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n\n return undefined\n }\n}\n","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","const protocols = ['http', 'https', 'mailto', 'tel']\n\nmodule.exports = uriTransformer\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nfunction uriTransformer(uri) {\n const url = (uri || '').trim()\n const first = url.charAt(0)\n\n if (first === '#' || first === '/') {\n return url\n }\n\n const colon = url.indexOf(':')\n if (colon === -1) {\n return url\n }\n\n let index = -1\n\n while (++index < protocols.length) {\n const protocol = protocols[index]\n\n if (\n colon === protocol.length &&\n url.slice(0, protocol.length).toLowerCase() === protocol\n ) {\n return url\n }\n }\n\n index = url.indexOf('?')\n if (index !== -1 && colon > index) {\n return url\n }\n\n index = url.indexOf('#')\n if (index !== -1 && colon > index) {\n return url\n }\n\n // eslint-disable-next-line no-script-url\n return 'javascript:void(0)'\n}\n","'use strict'\n\nconst React = require('react')\nconst ReactIs = require('react-is')\nconst svg = require('property-information/svg')\nconst find = require('property-information/find')\nconst hastToReact = require('property-information/hast-to-react.json')\nconst spaces = require('space-separated-tokens')\nconst commas = require('comma-separated-tokens')\nconst style = require('style-to-object')\n\nexports.hastToReact = toReact\nexports.hastChildrenToReact = childrenToReact\n\n/**\n * @typedef {JSX.IntrinsicElements} IntrinsicElements\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n */\n\n/**\n * @typedef Info\n * @property {string?} space\n * @property {string?} attribute\n * @property {string?} property\n * @property {boolean} boolean\n * @property {boolean} booleanish\n * @property {boolean} overloadedBoolean\n * @property {boolean} number\n * @property {boolean} commaSeparated\n * @property {boolean} spaceSeparated\n * @property {boolean} commaOrSpaceSeparated\n * @property {boolean} mustUseProperty\n * @property {boolean} defined\n *\n * @typedef Schema\n * @property {Object.<string, Info>} property\n * @property {Object.<string, string>} normal\n * @property {string?} space\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {TransformOptions} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array.<Comment|Element|Text>} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array.<Comment|Element|Text>} children\n * @param {string?} title\n * @returns {string|undefined}\n *\n * @typedef {keyof IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef ReactMarkdownProps\n * @property {Element} node\n * @property {string} key\n * @property {ReactNode[]} children\n * @property {Position?} [sourcePosition] Passed when `options.rawSourcePos` is given\n * @property {number} [index] Passed when `options.includeElementIndex` is given\n * @property {number} [siblingCount] Passed when `options.includeElementIndex` is given\n *\n * @callback CodeComponent\n * @param {JSX.IntrinsicElements['code'] & ReactMarkdownProps & {inline?: boolean}} props\n * @returns {ReactNode}\n *\n * @callback HeadingComponent\n * @param {JSX.IntrinsicElements['h1'] & ReactMarkdownProps & {level: number}} props\n * @returns {ReactNode}\n *\n * @callback LiComponent\n * @param {JSX.IntrinsicElements['li'] & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} props\n * @returns {ReactNode}\n *\n * @callback OrderedListComponent\n * @param {JSX.IntrinsicElements['ol'] & ReactMarkdownProps & {depth: number, ordered: true}} props\n * @returns {ReactNode}\n *\n * @callback TableCellComponent\n * @param {JSX.IntrinsicElements['table'] & ReactMarkdownProps & {style?: Object.<string, unknown>, isHeader: boolean}} props\n * @returns {ReactNode}\n *\n * @callback TableRowComponent\n * @param {JSX.IntrinsicElements['tr'] & ReactMarkdownProps & {isHeader: boolean}} props\n * @returns {ReactNode}\n *\n * @callback UnorderedListComponent\n * @param {JSX.IntrinsicElements['ul'] & ReactMarkdownProps & {depth: number, ordered: false}} props\n * @returns {ReactNode}\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableCellComponent|ReactMarkdownNames} td\n * @property {TableCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {{[TagName in keyof IntrinsicElements]: TagName | ((props: IntrinsicElements[TagName] & ReactMarkdownProps) => ReactNode)}} NormalComponents\n * @typedef {Partial<Omit<NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components\n */\n\n/**\n * @typedef TransformOptions\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {string|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nfunction childrenToReact(context, node) {\n /** @type {Array.<ReactNode>} */\n const children = []\n let childIndex = -1\n /** @type {Comment|Doctype|Element|Raw|Text} */\n let child\n\n while (++childIndex < node.children.length) {\n child = node.children[childIndex]\n\n if (child.type === 'element') {\n children.push(toReact(context, child, childIndex, node))\n } else if (child.type === 'text') {\n // React does not permit whitespace text elements as children of table:\n // cf. https://github.com/remarkjs/react-markdown/issues/576\n if (\n node.type !== 'element' ||\n !tableElements.has(node.tagName) ||\n child.value !== '\\n'\n ) {\n children.push(child.value)\n }\n }\n // @ts-expect-error `raw` nodes are non-standard\n else if (child.type === 'raw' && !context.options.skipHtml) {\n // Default behavior is to show (encoded) HTML.\n // @ts-expect-error `raw` nodes are non-standard\n children.push(child.value)\n }\n }\n\n return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n const options = context.options\n const parentSchema = context.schema\n /** @type {ReactMarkdownNames} */\n // @ts-expect-error assume a known HTML/SVG element.\n const name = node.tagName\n /** @type {Object.<string, unknown>} */\n const properties = {}\n let schema = parentSchema\n /** @type {string} */\n let property\n\n if (parentSchema.space === 'html' && name === 'svg') {\n schema = svg\n context.schema = schema\n }\n\n /* istanbul ignore else - types say they’re optional. */\n if (node.properties) {\n for (property in node.properties) {\n /* istanbul ignore else - prototype polution. */\n if (own.call(node.properties, property)) {\n addProperty(properties, property, node.properties[property], context)\n }\n }\n }\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth++\n }\n\n const children = childrenToReact(context, node)\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth--\n }\n\n // Restore parent schema.\n context.schema = parentSchema\n\n // Nodes created by plugins do not have positional info, in which case we use\n // an object that matches the positon interface.\n const position = node.position || {\n start: {line: null, column: null, offset: null},\n end: {line: null, column: null, offset: null}\n }\n const component =\n options.components && own.call(options.components, name)\n ? options.components[name]\n : name\n const basic = typeof component === 'string' || component === React.Fragment\n\n if (!ReactIs.isValidElementType(component)) {\n throw new TypeError(\n `Component for name \\`${name}\\` not defined or is not renderable`\n )\n }\n\n properties.key = [\n name,\n position.start.line,\n position.start.column,\n index\n ].join('-')\n\n if (name === 'a' && options.linkTarget) {\n properties.target =\n typeof options.linkTarget === 'function'\n ? // @ts-expect-error assume `href` is a string\n options.linkTarget(properties.href, node.children, properties.title)\n : options.linkTarget\n }\n\n if (name === 'a' && options.transformLinkUri) {\n properties.href = options.transformLinkUri(\n // @ts-expect-error assume `href` is a string\n properties.href,\n node.children,\n properties.title\n )\n }\n\n if (\n !basic &&\n name === 'code' &&\n parent.type === 'element' &&\n parent.tagName !== 'pre'\n ) {\n properties.inline = true\n }\n\n if (\n !basic &&\n (name === 'h1' ||\n name === 'h2' ||\n name === 'h3' ||\n name === 'h4' ||\n name === 'h5' ||\n name === 'h6')\n ) {\n properties.level = parseInt(name.charAt(1), 10)\n }\n\n if (name === 'img' && options.transformImageUri) {\n properties.src = options.transformImageUri(\n // @ts-expect-error assume `src` is a string\n properties.src,\n properties.alt,\n properties.title\n )\n }\n\n if (!basic && name === 'li' && parent.type === 'element') {\n const input = getInputElement(node)\n properties.checked =\n input && input.properties ? Boolean(input.properties.checked) : null\n properties.index = getElementsBeforeCount(parent, node)\n properties.ordered = parent.tagName === 'ol'\n }\n\n if (!basic && (name === 'ol' || name === 'ul')) {\n properties.ordered = name === 'ol'\n properties.depth = context.listDepth\n }\n\n if (name === 'td' || name === 'th') {\n if (properties.align) {\n if (!properties.style) properties.style = {}\n // @ts-expect-error assume `style` is an object\n properties.style.textAlign = properties.align\n delete properties.align\n }\n\n if (!basic) {\n properties.isHeader = name === 'th'\n }\n }\n\n if (!basic && name === 'tr' && parent.type === 'element') {\n properties.isHeader = Boolean(parent.tagName === 'thead')\n }\n\n // If `sourcePos` is given, pass source information (line/column info from markdown source).\n if (options.sourcePos) {\n properties['data-sourcepos'] = flattenPosition(position)\n }\n\n if (!basic && options.rawSourcePos) {\n properties.sourcePosition = node.position\n }\n\n // If `includeElementIndex` is given, pass node index info to components.\n if (!basic && options.includeElementIndex) {\n properties.index = getElementsBeforeCount(parent, node)\n properties.siblingCount = getElementsBeforeCount(parent)\n }\n\n if (!basic) {\n properties.node = node\n }\n\n // Ensure no React warnings are emitted for void elements w/ children.\n return children.length > 0\n ? React.createElement(component, properties, children)\n : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n let index = -1\n\n while (++index < node.children.length) {\n const child = node.children[index]\n\n if (child.type === 'element' && child.tagName === 'input') {\n return child\n }\n }\n\n return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n let index = -1\n let count = 0\n\n while (++index < parent.children.length) {\n if (parent.children[index] === node) break\n if (parent.children[index].type === 'element') count++\n }\n\n return count\n}\n\n/**\n * @param {Object.<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n /** @type {Info} */\n const info = find(ctx.schema, prop)\n let result = value\n\n // Ignore nullish and `NaN` values.\n // eslint-disable-next-line no-self-compare\n if (result === null || result === undefined || result !== result) {\n return\n }\n\n // Accept `array`.\n // Most props are space-separated.\n if (result && typeof result === 'object' && 'length' in result) {\n // type-coverage:ignore-next-line remove when typed.\n result = (info.commaSeparated ? commas : spaces).stringify(result)\n }\n\n if (info.property === 'style' && typeof result === 'string') {\n result = parseStyle(result)\n }\n\n /* istanbul ignore else - types say they’re optional. */\n if (info.space && info.property) {\n props[\n own.call(hastToReact, info.property)\n ? hastToReact[info.property]\n : info.property\n ] = result\n } else if (info.attribute) {\n props[info.attribute] = result\n }\n}\n\n/**\n * @param {string} value\n * @returns {Object.<string, string>}\n */\nfunction parseStyle(value) {\n /** @type {Object.<string, string>} */\n const result = {}\n\n try {\n style(value, iterator)\n } catch (/** @type {unknown} */ _) {\n // Silent.\n }\n\n return result\n\n /**\n * @param {string} name\n * @param {string} v\n */\n function iterator(name, v) {\n const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n result[k.replace(/-([a-z])/g, styleReplacer)] = v\n }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n return [\n pos.start.line,\n ':',\n pos.start.column,\n '-',\n pos.end.line,\n ':',\n pos.end.column\n ]\n .map((d) => String(d))\n .join('')\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\nvar caseSensitiveTransform = require('./util/case-sensitive-transform')\n\nvar boolean = types.boolean\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\nvar commaOrSpaceSeparated = types.commaOrSpaceSeparated\n\nmodule.exports = create({\n space: 'svg',\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n transform: caseSensitiveTransform,\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n }\n})\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","'use strict'\n\nvar hastUtilRaw = require('hast-util-raw')\n\nmodule.exports = rehypeRaw\n\nfunction rehypeRaw(options) {\n return transform\n function transform(tree, file) {\n return hastUtilRaw(tree, file, options)\n }\n}\n","'use strict'\n\nvar Parser = require('parse5/lib/parser')\nvar pos = require('unist-util-position')\nvar visit = require('unist-util-visit')\nvar fromParse5 = require('hast-util-from-parse5')\nvar toParse5 = require('hast-util-to-parse5')\nvar voids = require('html-void-elements')\nvar ns = require('web-namespaces')\nvar zwitch = require('zwitch')\nvar xtend = require('xtend')\n\nmodule.exports = wrap\n\nvar inTemplateMode = 'IN_TEMPLATE_MODE'\nvar dataState = 'DATA_STATE'\nvar characterToken = 'CHARACTER_TOKEN'\nvar startTagToken = 'START_TAG_TOKEN'\nvar endTagToken = 'END_TAG_TOKEN'\nvar commentToken = 'COMMENT_TOKEN'\nvar doctypeToken = 'DOCTYPE_TOKEN'\n\nvar parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\nfunction wrap(tree, file, options) {\n var parser = new Parser(parseOptions)\n var one = zwitch('type', {\n handlers: {\n root: root,\n element: element,\n text: text,\n comment: comment,\n doctype: doctype,\n raw: raw\n },\n unknown: unknown\n })\n var stitches\n var tokenizer\n var preprocessor\n var posTracker\n var locationTracker\n var result\n var index\n\n if (file && !('contents' in file)) {\n options = file\n file = undefined\n }\n\n if (options && options.passThrough) {\n index = -1\n\n while (++index < options.passThrough.length) {\n one.handlers[options.passThrough[index]] = stitch\n }\n }\n\n result = fromParse5(documentMode(tree) ? document() : fragment(), file)\n\n if (stitches) {\n visit(result, 'comment', mend)\n }\n\n // Unpack if possible and when not given a `root`.\n if (tree.type !== 'root' && result.children.length === 1) {\n return result.children[0]\n }\n\n return result\n\n function mend(node, index, parent) {\n if (node.value.stitch) {\n parent.children[index] = node.value.stitch\n return index\n }\n }\n\n function fragment() {\n var context = {\n nodeName: 'template',\n tagName: 'template',\n attrs: [],\n namespaceURI: ns.html,\n childNodes: []\n }\n var mock = {\n nodeName: 'documentmock',\n tagName: 'documentmock',\n attrs: [],\n namespaceURI: ns.html,\n childNodes: []\n }\n var doc = {nodeName: '#document-fragment', childNodes: []}\n\n parser._bootstrap(mock, context)\n parser._pushTmplInsertionMode(inTemplateMode)\n parser._initTokenizerForFragmentParsing()\n parser._insertFakeRootElement()\n parser._resetInsertionMode()\n parser._findFormInFragmentContext()\n\n tokenizer = parser.tokenizer\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n parser._adoptNodes(mock.childNodes[0], doc)\n\n return doc\n }\n\n function document() {\n var doc = parser.treeAdapter.createDocument()\n\n parser._bootstrap(doc, null)\n tokenizer = parser.tokenizer\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n return doc\n }\n\n function all(nodes) {\n var index = -1\n\n /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n if (nodes) {\n while (++index < nodes.length) {\n one(nodes[index])\n }\n }\n }\n\n function root(node) {\n all(node.children)\n }\n\n function element(node) {\n resetTokenizer()\n parser._processToken(startTag(node), ns.html)\n\n all(node.children)\n\n if (voids.indexOf(node.tagName) < 0) {\n resetTokenizer()\n parser._processToken(endTag(node))\n }\n }\n\n function text(node) {\n resetTokenizer()\n parser._processToken({\n type: characterToken,\n chars: node.value,\n location: createParse5Location(node)\n })\n }\n\n function doctype(node) {\n var p5 = toParse5(node)\n resetTokenizer()\n parser._processToken({\n type: doctypeToken,\n name: p5.name,\n forceQuirks: false,\n publicId: p5.publicId,\n systemId: p5.systemId,\n location: createParse5Location(node)\n })\n }\n\n function comment(node) {\n resetTokenizer()\n parser._processToken({\n type: commentToken,\n data: node.value,\n location: createParse5Location(node)\n })\n }\n\n function raw(node) {\n var start = pos.start(node)\n var line = start.line || 1\n var column = start.column || 1\n var offset = start.offset || 0\n var token\n\n // Reset preprocessor:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/preprocessor.js>.\n preprocessor.html = null\n preprocessor.pos = -1\n preprocessor.lastGapPos = -1\n preprocessor.lastCharPos = -1\n preprocessor.gapStack = []\n preprocessor.skipNextNewLine = false\n preprocessor.lastChunkWritten = false\n preprocessor.endOfChunkHit = false\n\n // Reset preprocessor mixin:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/position-tracking/preprocessor-mixin.js>.\n posTracker.isEol = false\n posTracker.lineStartPos = -column + 1 // Looks weird, but ensures we get correct positional info.\n posTracker.droppedBufferSize = offset\n posTracker.offset = 0\n posTracker.col = 1\n posTracker.line = line\n\n // Reset location tracker:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js>.\n locationTracker.currentAttrLocation = null\n locationTracker.ctLoc = createParse5Location(node)\n\n // See the code for `parse` and `parseFragment`:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/parser/index.js#L371>.\n tokenizer.write(node.value)\n parser._runParsingLoop(null)\n\n // Process final characters if they’re still there after hibernating.\n // Similar to:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js#L95>.\n token = tokenizer.currentCharacterToken\n\n if (token) {\n token.location.endLine = posTracker.line\n token.location.endCol = posTracker.col + 1\n token.location.endOffset = posTracker.offset + 1\n parser._processToken(token)\n }\n }\n\n function stitch(node) {\n var clone = Object.assign({}, node)\n\n stitches = true\n\n // Recurse, because to somewhat handle `[<x>]</x>` (where `[]` denotes the\n // passed through node).\n if (node.children) {\n clone.children = wrap(\n {type: 'root', children: node.children},\n file,\n options\n ).children\n }\n\n // Hack: `value` is supposed to be a string, but as none of the tools\n // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n // through.\n comment({value: {stitch: clone}})\n }\n\n function resetTokenizer() {\n // Reset tokenizer:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/index.js#L218-L234>.\n // Especially putting it back in the `data` state is useful: some elements,\n // like textareas and iframes, change the state.\n // See GH-7.\n // But also if broken HTML is in `raw`, and then a correct element is given.\n // See GH-11.\n tokenizer.tokenQueue = []\n tokenizer.state = dataState\n tokenizer.returnState = ''\n tokenizer.charRefCode = -1\n tokenizer.tempBuff = []\n tokenizer.lastStartTagName = ''\n tokenizer.consumedAfterSnapshot = -1\n tokenizer.active = false\n tokenizer.currentCharacterToken = null\n tokenizer.currentToken = null\n tokenizer.currentAttr = null\n }\n}\n\nfunction startTag(node) {\n var location = createParse5Location(node)\n\n location.startTag = xtend(location)\n\n return {\n type: startTagToken,\n tagName: node.tagName,\n selfClosing: false,\n attrs: attributes(node),\n location: location\n }\n}\n\nfunction attributes(node) {\n return toParse5({\n tagName: node.tagName,\n type: 'element',\n properties: node.properties\n }).attrs\n}\n\nfunction endTag(node) {\n var location = createParse5Location(node)\n\n location.endTag = xtend(location)\n\n return {\n type: endTagToken,\n tagName: node.tagName,\n attrs: [],\n location: location\n }\n}\n\nfunction unknown(node) {\n throw new Error('Cannot compile `' + node.type + '` node')\n}\n\nfunction documentMode(node) {\n var head = node.type === 'root' ? node.children[0] : node\n\n return head && (head.type === 'doctype' || head.tagName === 'html')\n}\n\nfunction createParse5Location(node) {\n var start = pos.start(node)\n var end = pos.end(node)\n\n return {\n startLine: start.line,\n startCol: start.column,\n startOffset: start.offset,\n endLine: end.line,\n endCol: end.column,\n endOffset: end.offset\n }\n}\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst OpenElementStack = require('./open-element-stack');\nconst FormattingElementList = require('./formatting-element-list');\nconst LocationInfoParserMixin = require('../extensions/location-info/parser-mixin');\nconst ErrorReportingParserMixin = require('../extensions/error-reporting/parser-mixin');\nconst Mixin = require('../utils/mixin');\nconst defaultTreeAdapter = require('../tree-adapters/default');\nconst mergeOptions = require('../utils/merge-options');\nconst doctype = require('../common/doctype');\nconst foreignContent = require('../common/foreign-content');\nconst ERR = require('../common/error-codes');\nconst unicode = require('../common/unicode');\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\nconst DEFAULT_OPTIONS = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n onParseError: null,\n treeAdapter: defaultTreeAdapter\n};\n\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n\n//Insertion modes\nconst INITIAL_MODE = 'INITIAL_MODE';\nconst BEFORE_HTML_MODE = 'BEFORE_HTML_MODE';\nconst BEFORE_HEAD_MODE = 'BEFORE_HEAD_MODE';\nconst IN_HEAD_MODE = 'IN_HEAD_MODE';\nconst IN_HEAD_NO_SCRIPT_MODE = 'IN_HEAD_NO_SCRIPT_MODE';\nconst AFTER_HEAD_MODE = 'AFTER_HEAD_MODE';\nconst IN_BODY_MODE = 'IN_BODY_MODE';\nconst TEXT_MODE = 'TEXT_MODE';\nconst IN_TABLE_MODE = 'IN_TABLE_MODE';\nconst IN_TABLE_TEXT_MODE = 'IN_TABLE_TEXT_MODE';\nconst IN_CAPTION_MODE = 'IN_CAPTION_MODE';\nconst IN_COLUMN_GROUP_MODE = 'IN_COLUMN_GROUP_MODE';\nconst IN_TABLE_BODY_MODE = 'IN_TABLE_BODY_MODE';\nconst IN_ROW_MODE = 'IN_ROW_MODE';\nconst IN_CELL_MODE = 'IN_CELL_MODE';\nconst IN_SELECT_MODE = 'IN_SELECT_MODE';\nconst IN_SELECT_IN_TABLE_MODE = 'IN_SELECT_IN_TABLE_MODE';\nconst IN_TEMPLATE_MODE = 'IN_TEMPLATE_MODE';\nconst AFTER_BODY_MODE = 'AFTER_BODY_MODE';\nconst IN_FRAMESET_MODE = 'IN_FRAMESET_MODE';\nconst AFTER_FRAMESET_MODE = 'AFTER_FRAMESET_MODE';\nconst AFTER_AFTER_BODY_MODE = 'AFTER_AFTER_BODY_MODE';\nconst AFTER_AFTER_FRAMESET_MODE = 'AFTER_AFTER_FRAMESET_MODE';\n\n//Insertion mode reset map\nconst INSERTION_MODE_RESET_MAP = {\n [$.TR]: IN_ROW_MODE,\n [$.TBODY]: IN_TABLE_BODY_MODE,\n [$.THEAD]: IN_TABLE_BODY_MODE,\n [$.TFOOT]: IN_TABLE_BODY_MODE,\n [$.CAPTION]: IN_CAPTION_MODE,\n [$.COLGROUP]: IN_COLUMN_GROUP_MODE,\n [$.TABLE]: IN_TABLE_MODE,\n [$.BODY]: IN_BODY_MODE,\n [$.FRAMESET]: IN_FRAMESET_MODE\n};\n\n//Template insertion mode switch map\nconst TEMPLATE_INSERTION_MODE_SWITCH_MAP = {\n [$.CAPTION]: IN_TABLE_MODE,\n [$.COLGROUP]: IN_TABLE_MODE,\n [$.TBODY]: IN_TABLE_MODE,\n [$.TFOOT]: IN_TABLE_MODE,\n [$.THEAD]: IN_TABLE_MODE,\n [$.COL]: IN_COLUMN_GROUP_MODE,\n [$.TR]: IN_TABLE_BODY_MODE,\n [$.TD]: IN_ROW_MODE,\n [$.TH]: IN_ROW_MODE\n};\n\n//Token handlers map for insertion modes\nconst TOKEN_HANDLERS = {\n [INITIAL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: doctypeInInitialMode,\n [Tokenizer.START_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.END_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.EOF_TOKEN]: tokenInInitialMode\n },\n [BEFORE_HTML_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHtml,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHtml,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHtml\n },\n [BEFORE_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHead,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHead,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHead\n },\n [IN_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHead,\n [Tokenizer.END_TAG_TOKEN]: endTagInHead,\n [Tokenizer.EOF_TOKEN]: tokenInHead\n },\n [IN_HEAD_NO_SCRIPT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHeadNoScript,\n [Tokenizer.END_TAG_TOKEN]: endTagInHeadNoScript,\n [Tokenizer.EOF_TOKEN]: tokenInHeadNoScript\n },\n [AFTER_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterHead,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterHead,\n [Tokenizer.EOF_TOKEN]: tokenAfterHead\n },\n [IN_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: ignoreToken,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: ignoreToken,\n [Tokenizer.END_TAG_TOKEN]: endTagInText,\n [Tokenizer.EOF_TOKEN]: eofInText\n },\n [IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTableText,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInTableText,\n [Tokenizer.COMMENT_TOKEN]: tokenInTableText,\n [Tokenizer.DOCTYPE_TOKEN]: tokenInTableText,\n [Tokenizer.START_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.END_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.EOF_TOKEN]: tokenInTableText\n },\n [IN_CAPTION_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCaption,\n [Tokenizer.END_TAG_TOKEN]: endTagInCaption,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_COLUMN_GROUP_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInColumnGroup,\n [Tokenizer.END_TAG_TOKEN]: endTagInColumnGroup,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTableBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInTableBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_ROW_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInRow,\n [Tokenizer.END_TAG_TOKEN]: endTagInRow,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_CELL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCell,\n [Tokenizer.END_TAG_TOKEN]: endTagInCell,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelect,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelect,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelectInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelectInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TEMPLATE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTemplate,\n [Tokenizer.END_TAG_TOKEN]: endTagInTemplate,\n [Tokenizer.EOF_TOKEN]: eofInTemplate\n },\n [AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToRootHtmlElement,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterBody,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [IN_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagInFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterBody,\n [Tokenizer.END_TAG_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: ignoreToken,\n [Tokenizer.EOF_TOKEN]: stopParsing\n }\n};\n\n//Parser\nclass Parser {\n constructor(options) {\n this.options = mergeOptions(DEFAULT_OPTIONS, options);\n\n this.treeAdapter = this.options.treeAdapter;\n this.pendingScript = null;\n\n if (this.options.sourceCodeLocationInfo) {\n Mixin.install(this, LocationInfoParserMixin);\n }\n\n if (this.options.onParseError) {\n Mixin.install(this, ErrorReportingParserMixin, { onParseError: this.options.onParseError });\n }\n }\n\n // API\n parse(html) {\n const document = this.treeAdapter.createDocument();\n\n this._bootstrap(document, null);\n this.tokenizer.write(html, true);\n this._runParsingLoop(null);\n\n return document;\n }\n\n parseFragment(html, fragmentContext) {\n //NOTE: use <template> element as a fragment context if context element was not provided,\n //so we will parse in \"forgiving\" manner\n if (!fragmentContext) {\n fragmentContext = this.treeAdapter.createElement($.TEMPLATE, NS.HTML, []);\n }\n\n //NOTE: create fake element which will be used as 'document' for fragment parsing.\n //This is important for jsdom there 'document' can't be recreated, therefore\n //fragment parsing causes messing of the main `document`.\n const documentMock = this.treeAdapter.createElement('documentmock', NS.HTML, []);\n\n this._bootstrap(documentMock, fragmentContext);\n\n if (this.treeAdapter.getTagName(fragmentContext) === $.TEMPLATE) {\n this._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n }\n\n this._initTokenizerForFragmentParsing();\n this._insertFakeRootElement();\n this._resetInsertionMode();\n this._findFormInFragmentContext();\n this.tokenizer.write(html, true);\n this._runParsingLoop(null);\n\n const rootElement = this.treeAdapter.getFirstChild(documentMock);\n const fragment = this.treeAdapter.createDocumentFragment();\n\n this._adoptNodes(rootElement, fragment);\n\n return fragment;\n }\n\n //Bootstrap parser\n _bootstrap(document, fragmentContext) {\n this.tokenizer = new Tokenizer(this.options);\n\n this.stopped = false;\n\n this.insertionMode = INITIAL_MODE;\n this.originalInsertionMode = '';\n\n this.document = document;\n this.fragmentContext = fragmentContext;\n\n this.headElement = null;\n this.formElement = null;\n\n this.openElements = new OpenElementStack(this.document, this.treeAdapter);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n\n this.tmplInsertionModeStack = [];\n this.tmplInsertionModeStackTop = -1;\n this.currentTmplInsertionMode = null;\n\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n }\n\n //Errors\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n //Parsing loop\n _runParsingLoop(scriptHandler) {\n while (!this.stopped) {\n this._setupTokenizerCDATAMode();\n\n const token = this.tokenizer.getNextToken();\n\n if (token.type === Tokenizer.HIBERNATION_TOKEN) {\n break;\n }\n\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n\n if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === '\\n') {\n if (token.chars.length === 1) {\n continue;\n }\n\n token.chars = token.chars.substr(1);\n }\n }\n\n this._processInputToken(token);\n\n if (scriptHandler && this.pendingScript) {\n break;\n }\n }\n }\n\n runParsingLoopForCurrentChunk(writeCallback, scriptHandler) {\n this._runParsingLoop(scriptHandler);\n\n if (scriptHandler && this.pendingScript) {\n const script = this.pendingScript;\n\n this.pendingScript = null;\n\n scriptHandler(script);\n\n return;\n }\n\n if (writeCallback) {\n writeCallback();\n }\n }\n\n //Text parsing\n _setupTokenizerCDATAMode() {\n const current = this._getAdjustedCurrentElement();\n\n this.tokenizer.allowCDATA =\n current &&\n current !== this.document &&\n this.treeAdapter.getNamespaceURI(current) !== NS.HTML &&\n !this._isIntegrationPoint(current);\n }\n\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = TEXT_MODE;\n }\n\n switchToPlaintextParsing() {\n this.insertionMode = TEXT_MODE;\n this.originalInsertionMode = IN_BODY_MODE;\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n\n //Fragment parsing\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n\n do {\n if (this.treeAdapter.getTagName(node) === $.FORM) {\n this.formElement = node;\n break;\n }\n\n node = this.treeAdapter.getParentNode(node);\n } while (node);\n }\n\n _initTokenizerForFragmentParsing() {\n if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS.HTML) {\n const tn = this.treeAdapter.getTagName(this.fragmentContext);\n\n if (tn === $.TITLE || tn === $.TEXTAREA) {\n this.tokenizer.state = Tokenizer.MODE.RCDATA;\n } else if (\n tn === $.STYLE ||\n tn === $.XMP ||\n tn === $.IFRAME ||\n tn === $.NOEMBED ||\n tn === $.NOFRAMES ||\n tn === $.NOSCRIPT\n ) {\n this.tokenizer.state = Tokenizer.MODE.RAWTEXT;\n } else if (tn === $.SCRIPT) {\n this.tokenizer.state = Tokenizer.MODE.SCRIPT_DATA;\n } else if (tn === $.PLAINTEXT) {\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n }\n }\n\n //Tree mutation\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n }\n\n _attachElementToTree(element) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n this.treeAdapter.appendChild(parent, element);\n }\n }\n\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n this._attachElementToTree(element);\n }\n\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n this._attachElementToTree(element);\n this.openElements.push(element);\n }\n\n _insertFakeElement(tagName) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n\n this._attachElementToTree(element);\n this.openElements.push(element);\n }\n\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl);\n this.openElements.push(tmpl);\n }\n\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement($.HTML, NS.HTML, []);\n\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element);\n }\n\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n\n this.treeAdapter.appendChild(parent, commentNode);\n }\n\n _insertCharacters(token) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentText(token.chars);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n\n //Token processing\n _shouldProcessTokenInForeignContent(token) {\n const current = this._getAdjustedCurrentElement();\n\n if (!current || current === this.document) {\n return false;\n }\n\n const ns = this.treeAdapter.getNamespaceURI(current);\n\n if (ns === NS.HTML) {\n return false;\n }\n\n if (\n this.treeAdapter.getTagName(current) === $.ANNOTATION_XML &&\n ns === NS.MATHML &&\n token.type === Tokenizer.START_TAG_TOKEN &&\n token.tagName === $.SVG\n ) {\n return false;\n }\n\n const isCharacterToken =\n token.type === Tokenizer.CHARACTER_TOKEN ||\n token.type === Tokenizer.NULL_CHARACTER_TOKEN ||\n token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n\n const isMathMLTextStartTag =\n token.type === Tokenizer.START_TAG_TOKEN && token.tagName !== $.MGLYPH && token.tagName !== $.MALIGNMARK;\n\n if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current, NS.MATHML)) {\n return false;\n }\n\n if (\n (token.type === Tokenizer.START_TAG_TOKEN || isCharacterToken) &&\n this._isIntegrationPoint(current, NS.HTML)\n ) {\n return false;\n }\n\n return token.type !== Tokenizer.EOF_TOKEN;\n }\n\n _processToken(token) {\n TOKEN_HANDLERS[this.insertionMode][token.type](this, token);\n }\n\n _processTokenInBodyMode(token) {\n TOKEN_HANDLERS[IN_BODY_MODE][token.type](this, token);\n }\n\n _processTokenInForeignContent(token) {\n if (token.type === Tokenizer.CHARACTER_TOKEN) {\n characterInForeignContent(this, token);\n } else if (token.type === Tokenizer.NULL_CHARACTER_TOKEN) {\n nullCharacterInForeignContent(this, token);\n } else if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN) {\n insertCharacters(this, token);\n } else if (token.type === Tokenizer.COMMENT_TOKEN) {\n appendComment(this, token);\n } else if (token.type === Tokenizer.START_TAG_TOKEN) {\n startTagInForeignContent(this, token);\n } else if (token.type === Tokenizer.END_TAG_TOKEN) {\n endTagInForeignContent(this, token);\n }\n }\n\n _processInputToken(token) {\n if (this._shouldProcessTokenInForeignContent(token)) {\n this._processTokenInForeignContent(token);\n } else {\n this._processToken(token);\n }\n\n if (token.type === Tokenizer.START_TAG_TOKEN && token.selfClosing && !token.ackSelfClosing) {\n this._err(ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n\n //Integration points\n _isIntegrationPoint(element, foreignNS) {\n const tn = this.treeAdapter.getTagName(element);\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n\n return foreignContent.isIntegrationPoint(tn, ns, attrs, foreignNS);\n }\n\n //Active formatting elements reconstruction\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.length;\n\n if (listLength) {\n let unopenIdx = listLength;\n let entry = null;\n\n do {\n unopenIdx--;\n entry = this.activeFormattingElements.entries[unopenIdx];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY || this.openElements.contains(entry.element)) {\n unopenIdx++;\n break;\n }\n } while (unopenIdx > 0);\n\n for (let i = unopenIdx; i < listLength; i++) {\n entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n\n //Close elements\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = IN_ROW_MODE;\n }\n\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n\n //Insertion modes\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop, last = false; i >= 0; i--) {\n let element = this.openElements.items[i];\n\n if (i === 0) {\n last = true;\n\n if (this.fragmentContext) {\n element = this.fragmentContext;\n }\n }\n\n const tn = this.treeAdapter.getTagName(element);\n const newInsertionMode = INSERTION_MODE_RESET_MAP[tn];\n\n if (newInsertionMode) {\n this.insertionMode = newInsertionMode;\n break;\n } else if (!last && (tn === $.TD || tn === $.TH)) {\n this.insertionMode = IN_CELL_MODE;\n break;\n } else if (!last && tn === $.HEAD) {\n this.insertionMode = IN_HEAD_MODE;\n break;\n } else if (tn === $.SELECT) {\n this._resetInsertionModeForSelect(i);\n break;\n } else if (tn === $.TEMPLATE) {\n this.insertionMode = this.currentTmplInsertionMode;\n break;\n } else if (tn === $.HTML) {\n this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;\n break;\n } else if (last) {\n this.insertionMode = IN_BODY_MODE;\n break;\n }\n }\n }\n\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const ancestor = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(ancestor);\n\n if (tn === $.TEMPLATE) {\n break;\n } else if (tn === $.TABLE) {\n this.insertionMode = IN_SELECT_IN_TABLE_MODE;\n return;\n }\n }\n }\n\n this.insertionMode = IN_SELECT_MODE;\n }\n\n _pushTmplInsertionMode(mode) {\n this.tmplInsertionModeStack.push(mode);\n this.tmplInsertionModeStackTop++;\n this.currentTmplInsertionMode = mode;\n }\n\n _popTmplInsertionMode() {\n this.tmplInsertionModeStack.pop();\n this.tmplInsertionModeStackTop--;\n this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];\n }\n\n //Foster parenting\n _isElementCausesFosterParenting(element) {\n const tn = this.treeAdapter.getTagName(element);\n\n return tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR;\n }\n\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);\n }\n\n _findFosterParentingLocation() {\n const location = {\n parent: null,\n beforeElement: null\n };\n\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(openElement);\n const ns = this.treeAdapter.getNamespaceURI(openElement);\n\n if (tn === $.TEMPLATE && ns === NS.HTML) {\n location.parent = this.treeAdapter.getTemplateContent(openElement);\n break;\n } else if (tn === $.TABLE) {\n location.parent = this.treeAdapter.getParentNode(openElement);\n\n if (location.parent) {\n location.beforeElement = openElement;\n } else {\n location.parent = this.openElements.items[i - 1];\n }\n\n break;\n }\n }\n\n if (!location.parent) {\n location.parent = this.openElements.items[0];\n }\n\n return location;\n }\n\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n } else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n\n _fosterParentText(chars) {\n const location = this._findFosterParentingLocation();\n\n if (location.beforeElement) {\n this.treeAdapter.insertTextBefore(location.parent, chars, location.beforeElement);\n } else {\n this.treeAdapter.insertText(location.parent, chars);\n }\n }\n\n //Special elements\n _isSpecialElement(element) {\n const tn = this.treeAdapter.getTagName(element);\n const ns = this.treeAdapter.getNamespaceURI(element);\n\n return HTML.SPECIAL_ELEMENTS[ns][tn];\n }\n}\n\nmodule.exports = Parser;\n\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n } else if (!p.openElements.hasInScope(token.tagName)) {\n formattingElementEntry = null;\n }\n } else {\n genericEndTagInBody(p, token);\n }\n\n return formattingElementEntry;\n}\n\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const element = p.openElements.items[i];\n\n if (element === formattingElementEntry.element) {\n break;\n }\n\n if (p._isSpecialElement(element)) {\n furthestBlock = element;\n }\n }\n\n if (!furthestBlock) {\n p.openElements.popUntilElementPopped(formattingElementEntry.element);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n\n return furthestBlock;\n}\n\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n\n p.openElements.remove(element);\n } else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n\n return lastElement;\n}\n\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n\n return newElement;\n}\n\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n if (p._isElementCausesFosterParenting(commonAncestor)) {\n p._fosterParentElement(lastElement);\n } else {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n\n if (tn === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const token = formattingElementEntry.token;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n\n p.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement);\n}\n\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n let formattingElementEntry;\n\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n formattingElementEntry = aaObtainFormattingElementEntry(p, token, formattingElementEntry);\n\n if (!formattingElementEntry) {\n break;\n }\n\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n\n if (!furthestBlock) {\n break;\n }\n\n p.activeFormattingElements.bookmark = formattingElementEntry;\n\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n\n p.treeAdapter.detachNode(lastElement);\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n\n//Generic token handlers\n//------------------------------------------------------------------\nfunction ignoreToken() {\n //NOTE: do nothing =)\n}\n\nfunction misplacedDoctype(p) {\n p._err(ERR.misplacedDoctype);\n}\n\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContent || p.openElements.current);\n}\n\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\n\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\n\nfunction insertCharacters(p, token) {\n p._insertCharacters(token);\n}\n\nfunction stopParsing(p) {\n p.stopped = true;\n}\n\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n\n const mode = token.forceQuirks ? HTML.DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n\n if (!doctype.isConforming(token)) {\n p._err(ERR.nonConformingDoctype);\n }\n\n p.treeAdapter.setDocumentMode(p.document, mode);\n\n p.insertionMode = BEFORE_HTML_MODE;\n}\n\nfunction tokenInInitialMode(p, token) {\n p._err(ERR.missingDoctype, { beforeToken: true });\n p.treeAdapter.setDocumentMode(p.document, HTML.DOCUMENT_MODE.QUIRKS);\n p.insertionMode = BEFORE_HTML_MODE;\n p._processToken(token);\n}\n\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagName === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = BEFORE_HEAD_MODE;\n } else {\n tokenBeforeHtml(p, token);\n }\n}\n\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\n\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = BEFORE_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.HEAD) {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = IN_HEAD_MODE;\n } else {\n tokenBeforeHead(p, token);\n }\n}\n\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement($.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = IN_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TITLE) {\n p._switchToTextParsing(token, Tokenizer.MODE.RCDATA);\n } else if (tn === $.NOSCRIPT) {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_HEAD_NO_SCRIPT_MODE;\n }\n } else if (tn === $.NOFRAMES || tn === $.STYLE) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else if (tn === $.SCRIPT) {\n p._switchToTextParsing(token, Tokenizer.MODE.SCRIPT_DATA);\n } else if (tn === $.TEMPLATE) {\n p._insertTemplate(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = IN_TEMPLATE_MODE;\n p._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n } else if (tn === $.HEAD) {\n p._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenInHead(p, token);\n }\n}\n\nfunction endTagInHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HEAD) {\n p.openElements.pop();\n p.insertionMode = AFTER_HEAD_MODE;\n } else if (tn === $.BODY || tn === $.BR || tn === $.HTML) {\n tokenInHead(p, token);\n } else if (tn === $.TEMPLATE) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n\n if (p.openElements.currentTagName !== $.TEMPLATE) {\n p._err(ERR.closingOfElementWithOpenChildElements);\n }\n\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p._popTmplInsertionMode();\n p._resetInsertionMode();\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = AFTER_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.HEAD ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.STYLE\n ) {\n startTagInHead(p, token);\n } else if (tn === $.NOSCRIPT) {\n p._err(ERR.nestedNoscriptInHead);\n } else {\n tokenInHeadNoScript(p, token);\n }\n}\n\nfunction endTagInHeadNoScript(p, token) {\n const tn = token.tagName;\n\n if (tn === $.NOSCRIPT) {\n p.openElements.pop();\n p.insertionMode = IN_HEAD_MODE;\n } else if (tn === $.BR) {\n tokenInHeadNoScript(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenInHeadNoScript(p, token) {\n const errCode =\n token.type === Tokenizer.EOF_TOKEN ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n\n p._err(errCode);\n p.openElements.pop();\n p.insertionMode = IN_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.BODY) {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = IN_BODY_MODE;\n } else if (tn === $.FRAMESET) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_FRAMESET_MODE;\n } else if (\n tn === $.BASE ||\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.SCRIPT ||\n tn === $.STYLE ||\n tn === $.TEMPLATE ||\n tn === $.TITLE\n ) {\n p._err(ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n } else if (tn === $.HEAD) {\n p._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenAfterHead(p, token);\n }\n}\n\nfunction endTagAfterHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenAfterHead(p, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement($.BODY);\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\n\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\n\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\n\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\n\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_FRAMESET_MODE;\n }\n}\n\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n const tn = p.openElements.currentTagName;\n\n if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\n\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\n\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n\n const tn = token.tagName;\n\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const element = p.openElements.items[i];\n const elementTn = p.treeAdapter.getTagName(element);\n let closeTn = null;\n\n if (tn === $.LI && elementTn === $.LI) {\n closeTn = $.LI;\n } else if ((tn === $.DD || tn === $.DT) && (elementTn === $.DD || elementTn === $.DT)) {\n closeTn = elementTn;\n }\n\n if (closeTn) {\n p.openElements.generateImpliedEndTagsWithExclusion(closeTn);\n p.openElements.popUntilTagNamePopped(closeTn);\n break;\n }\n\n if (elementTn !== $.ADDRESS && elementTn !== $.DIV && elementTn !== $.P && p._isSpecialElement(element)) {\n break;\n }\n }\n\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n}\n\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\n\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName($.A);\n\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\n\nfunction tableStartTagInBody(p, token) {\n if (\n p.treeAdapter.getDocumentMode(p.document) !== HTML.DOCUMENT_MODE.QUIRKS &&\n p.openElements.hasInButtonScope($.P)\n ) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = IN_TABLE_MODE;\n}\n\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\n\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE) {\n p.framesetOk = false;\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\n\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\n\nfunction imageStartTagInBody(p, token) {\n token.tagName = $.IMG;\n areaStartTagInBody(p, token);\n}\n\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = Tokenizer.MODE.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = TEXT_MODE;\n}\n\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as a rawtext.\nfunction noembedStartTagInBody(p, token) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n\n if (\n p.insertionMode === IN_TABLE_MODE ||\n p.insertionMode === IN_CAPTION_MODE ||\n p.insertionMode === IN_TABLE_BODY_MODE ||\n p.insertionMode === IN_ROW_MODE ||\n p.insertionMode === IN_CELL_MODE\n ) {\n p.insertionMode = IN_SELECT_IN_TABLE_MODE;\n } else {\n p.insertionMode = IN_SELECT_MODE;\n }\n}\n\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\n\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction menuStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n } else {\n p._insertElement(token, NS.MATHML);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n } else {\n p._insertElement(token, NS.SVG);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction startTagInBody(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 1:\n if (tn === $.I || tn === $.S || tn === $.B || tn === $.U) {\n bStartTagInBody(p, token);\n } else if (tn === $.P) {\n addressStartTagInBody(p, token);\n } else if (tn === $.A) {\n aStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 2:\n if (tn === $.DL || tn === $.OL || tn === $.UL) {\n addressStartTagInBody(p, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderStartTagInBody(p, token);\n } else if (tn === $.LI || tn === $.DD || tn === $.DT) {\n listItemStartTagInBody(p, token);\n } else if (tn === $.EM || tn === $.TT) {\n bStartTagInBody(p, token);\n } else if (tn === $.BR) {\n areaStartTagInBody(p, token);\n } else if (tn === $.HR) {\n hrStartTagInBody(p, token);\n } else if (tn === $.RB) {\n rbStartTagInBody(p, token);\n } else if (tn === $.RT || tn === $.RP) {\n rtStartTagInBody(p, token);\n } else if (tn !== $.TH && tn !== $.TD && tn !== $.TR) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.DIV || tn === $.DIR || tn === $.NAV) {\n addressStartTagInBody(p, token);\n } else if (tn === $.PRE) {\n preStartTagInBody(p, token);\n } else if (tn === $.BIG) {\n bStartTagInBody(p, token);\n } else if (tn === $.IMG || tn === $.WBR) {\n areaStartTagInBody(p, token);\n } else if (tn === $.XMP) {\n xmpStartTagInBody(p, token);\n } else if (tn === $.SVG) {\n svgStartTagInBody(p, token);\n } else if (tn === $.RTC) {\n rbStartTagInBody(p, token);\n } else if (tn !== $.COL) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.HTML) {\n htmlStartTagInBody(p, token);\n } else if (tn === $.BASE || tn === $.LINK || tn === $.META) {\n startTagInHead(p, token);\n } else if (tn === $.BODY) {\n bodyStartTagInBody(p, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressStartTagInBody(p, token);\n } else if (tn === $.FORM) {\n formStartTagInBody(p, token);\n } else if (tn === $.CODE || tn === $.FONT) {\n bStartTagInBody(p, token);\n } else if (tn === $.NOBR) {\n nobrStartTagInBody(p, token);\n } else if (tn === $.AREA) {\n areaStartTagInBody(p, token);\n } else if (tn === $.MATH) {\n mathStartTagInBody(p, token);\n } else if (tn === $.MENU) {\n menuStartTagInBody(p, token);\n } else if (tn !== $.HEAD) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.STYLE || tn === $.TITLE) {\n startTagInHead(p, token);\n } else if (tn === $.ASIDE) {\n addressStartTagInBody(p, token);\n } else if (tn === $.SMALL) {\n bStartTagInBody(p, token);\n } else if (tn === $.TABLE) {\n tableStartTagInBody(p, token);\n } else if (tn === $.EMBED) {\n areaStartTagInBody(p, token);\n } else if (tn === $.INPUT) {\n inputStartTagInBody(p, token);\n } else if (tn === $.PARAM || tn === $.TRACK) {\n paramStartTagInBody(p, token);\n } else if (tn === $.IMAGE) {\n imageStartTagInBody(p, token);\n } else if (tn !== $.FRAME && tn !== $.TBODY && tn !== $.TFOOT && tn !== $.THEAD) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p, token);\n } else if (\n tn === $.CENTER ||\n tn === $.FIGURE ||\n tn === $.FOOTER ||\n tn === $.HEADER ||\n tn === $.HGROUP ||\n tn === $.DIALOG\n ) {\n addressStartTagInBody(p, token);\n } else if (tn === $.BUTTON) {\n buttonStartTagInBody(p, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n bStartTagInBody(p, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletStartTagInBody(p, token);\n } else if (tn === $.KEYGEN) {\n areaStartTagInBody(p, token);\n } else if (tn === $.SOURCE) {\n paramStartTagInBody(p, token);\n } else if (tn === $.IFRAME) {\n iframeStartTagInBody(p, token);\n } else if (tn === $.SELECT) {\n selectStartTagInBody(p, token);\n } else if (tn === $.OPTION) {\n optgroupStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 7:\n if (tn === $.BGSOUND) {\n startTagInHead(p, token);\n } else if (\n tn === $.DETAILS ||\n tn === $.ADDRESS ||\n tn === $.ARTICLE ||\n tn === $.SECTION ||\n tn === $.SUMMARY\n ) {\n addressStartTagInBody(p, token);\n } else if (tn === $.LISTING) {\n preStartTagInBody(p, token);\n } else if (tn === $.MARQUEE) {\n appletStartTagInBody(p, token);\n } else if (tn === $.NOEMBED) {\n noembedStartTagInBody(p, token);\n } else if (tn !== $.CAPTION) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.BASEFONT) {\n startTagInHead(p, token);\n } else if (tn === $.FRAMESET) {\n framesetStartTagInBody(p, token);\n } else if (tn === $.FIELDSET) {\n addressStartTagInBody(p, token);\n } else if (tn === $.TEXTAREA) {\n textareaStartTagInBody(p, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else if (tn === $.NOSCRIPT) {\n if (p.options.scriptingEnabled) {\n noembedStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n } else if (tn === $.OPTGROUP) {\n optgroupStartTagInBody(p, token);\n } else if (tn !== $.COLGROUP) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 9:\n if (tn === $.PLAINTEXT) {\n plaintextStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n default:\n genericStartTagInBody(p, token);\n }\n}\n\nfunction bodyEndTagInBody(p) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = AFTER_BODY_MODE;\n }\n}\n\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = AFTER_BODY_MODE;\n p._processToken(token);\n }\n}\n\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\n\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const formElement = p.formElement;\n\n if (!inTemplate) {\n p.formElement = null;\n }\n\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n } else {\n p.openElements.remove(formElement);\n }\n }\n}\n\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement($.P);\n }\n\n p._closePElement();\n}\n\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\n\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\n\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\n\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\n\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement($.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\n\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n\n if (p.treeAdapter.getTagName(element) === tn) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilElementPopped(element);\n break;\n }\n\n if (p._isSpecialElement(element)) {\n break;\n }\n }\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction endTagInBody(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 1:\n if (tn === $.A || tn === $.B || tn === $.I || tn === $.S || tn === $.U) {\n callAdoptionAgency(p, token);\n } else if (tn === $.P) {\n pEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 2:\n if (tn === $.DL || tn === $.UL || tn === $.OL) {\n addressEndTagInBody(p, token);\n } else if (tn === $.LI) {\n liEndTagInBody(p, token);\n } else if (tn === $.DD || tn === $.DT) {\n ddEndTagInBody(p, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderEndTagInBody(p, token);\n } else if (tn === $.BR) {\n brEndTagInBody(p, token);\n } else if (tn === $.EM || tn === $.TT) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.BIG) {\n callAdoptionAgency(p, token);\n } else if (tn === $.DIR || tn === $.DIV || tn === $.NAV || tn === $.PRE) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.BODY) {\n bodyEndTagInBody(p, token);\n } else if (tn === $.HTML) {\n htmlEndTagInBody(p, token);\n } else if (tn === $.FORM) {\n formEndTagInBody(p, token);\n } else if (tn === $.CODE || tn === $.FONT || tn === $.NOBR) {\n callAdoptionAgency(p, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.ASIDE) {\n addressEndTagInBody(p, token);\n } else if (tn === $.SMALL) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 6:\n if (\n tn === $.CENTER ||\n tn === $.FIGURE ||\n tn === $.FOOTER ||\n tn === $.HEADER ||\n tn === $.HGROUP ||\n tn === $.DIALOG\n ) {\n addressEndTagInBody(p, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletEndTagInBody(p, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 7:\n if (\n tn === $.ADDRESS ||\n tn === $.ARTICLE ||\n tn === $.DETAILS ||\n tn === $.SECTION ||\n tn === $.SUMMARY ||\n tn === $.LISTING\n ) {\n addressEndTagInBody(p, token);\n } else if (tn === $.MARQUEE) {\n appletEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.FIELDSET) {\n addressEndTagInBody(p, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n default:\n genericEndTagInBody(p, token);\n }\n}\n\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStackTop > -1) {\n eofInTemplate(p, token);\n } else {\n p.stopped = true;\n }\n}\n\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n if (token.tagName === $.SCRIPT) {\n p.pendingScript = p.openElements.current;\n }\n\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\n\nfunction eofInText(p, token) {\n p._err(ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n const curTn = p.openElements.currentTagName;\n\n if (curTn === $.TABLE || curTn === $.TBODY || curTn === $.TFOOT || curTn === $.THEAD || curTn === $.TR) {\n p.pendingCharacterTokens = [];\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = IN_TABLE_TEXT_MODE;\n p._processToken(token);\n } else {\n tokenInTable(p, token);\n }\n}\n\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_CAPTION_MODE;\n}\n\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_COLUMN_GROUP_MODE;\n}\n\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement($.COLGROUP);\n p.insertionMode = IN_COLUMN_GROUP_MODE;\n p._processToken(token);\n}\n\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_TABLE_BODY_MODE;\n}\n\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement($.TBODY);\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n}\n\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processToken(token);\n }\n}\n\nfunction inputStartTagInTable(p, token) {\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE) {\n p._appendElement(token, NS.HTML);\n } else {\n tokenInTable(p, token);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\n\nfunction startTagInTable(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH || tn === $.TR) {\n tdStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.COL) {\n colStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.FORM) {\n formStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.TABLE) {\n tableStartTagInTable(p, token);\n } else if (tn === $.STYLE) {\n startTagInHead(p, token);\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n tbodyStartTagInTable(p, token);\n } else if (tn === $.INPUT) {\n inputStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 7:\n if (tn === $.CAPTION) {\n captionStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.COLGROUP) {\n colgroupStartTagInTable(p, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n default:\n tokenInTable(p, token);\n }\n}\n\nfunction endTagInTable(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else if (\n tn !== $.BODY &&\n tn !== $.CAPTION &&\n tn !== $.COL &&\n tn !== $.COLGROUP &&\n tn !== $.HTML &&\n tn !== $.TBODY &&\n tn !== $.TD &&\n tn !== $.TFOOT &&\n tn !== $.TH &&\n tn !== $.THEAD &&\n tn !== $.TR\n ) {\n tokenInTable(p, token);\n }\n}\n\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n\n p.fosterParentingEnabled = true;\n p._processTokenInBodyMode(token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\n\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\n\nfunction tokenInTableText(p, token) {\n let i = 0;\n\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n } else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCaption(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TD ||\n tn === $.TFOOT ||\n tn === $.TH ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\n\nfunction endTagInCaption(p, token) {\n const tn = token.tagName;\n\n if (tn === $.CAPTION || tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_TABLE_MODE;\n\n if (tn === $.TABLE) {\n p._processToken(token);\n }\n }\n } else if (\n tn !== $.BODY &&\n tn !== $.COL &&\n tn !== $.COLGROUP &&\n tn !== $.HTML &&\n tn !== $.TBODY &&\n tn !== $.TD &&\n tn !== $.TFOOT &&\n tn !== $.TH &&\n tn !== $.THEAD &&\n tn !== $.TR\n ) {\n endTagInBody(p, token);\n }\n}\n\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.COL) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else {\n tokenInColumnGroup(p, token);\n }\n}\n\nfunction endTagInColumnGroup(p, token) {\n const tn = token.tagName;\n\n if (tn === $.COLGROUP) {\n if (p.openElements.currentTagName === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else if (tn !== $.COL) {\n tokenInColumnGroup(p, token);\n }\n}\n\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagName === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n}\n\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TR) {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_ROW_MODE;\n } else if (tn === $.TH || tn === $.TD) {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement($.TR);\n p.insertionMode = IN_ROW_MODE;\n p._processToken(token);\n } else if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD\n ) {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else {\n startTagInTable(p, token);\n }\n}\n\nfunction endTagInTableBody(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else if (\n (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n (tn !== $.HTML && tn !== $.TD && tn !== $.TH && tn !== $.TR)\n ) {\n endTagInTable(p, token);\n }\n}\n\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TH || tn === $.TD) {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_CELL_MODE;\n p.activeFormattingElements.insertMarker();\n } else if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else {\n startTagInTable(p, token);\n }\n}\n\nfunction endTagInRow(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TR) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p.openElements.hasInTableScope(tn) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else if (\n (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n (tn !== $.HTML && tn !== $.TD && tn !== $.TH)\n ) {\n endTagInTable(p, token);\n }\n}\n\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TD ||\n tn === $.TFOOT ||\n tn === $.TH ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n p._processToken(token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\n\nfunction endTagInCell(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TD || tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_ROW_MODE;\n }\n } else if (tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n p._processToken(token);\n }\n } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML) {\n endTagInBody(p, token);\n }\n}\n\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.OPTION) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n } else if (tn === $.OPTGROUP) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n if (p.openElements.currentTagName === $.OPTGROUP) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n } else if (tn === $.INPUT || tn === $.KEYGEN || tn === $.TEXTAREA || tn === $.SELECT) {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n\n if (tn !== $.SELECT) {\n p._processToken(token);\n }\n }\n } else if (tn === $.SCRIPT || tn === $.TEMPLATE) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagInSelect(p, token) {\n const tn = token.tagName;\n\n if (tn === $.OPTGROUP) {\n const prevOpenElement = p.openElements.items[p.openElements.stackTop - 1];\n const prevOpenElementTn = prevOpenElement && p.treeAdapter.getTagName(prevOpenElement);\n\n if (p.openElements.currentTagName === $.OPTION && prevOpenElementTn === $.OPTGROUP) {\n p.openElements.pop();\n }\n\n if (p.openElements.currentTagName === $.OPTGROUP) {\n p.openElements.pop();\n }\n } else if (tn === $.OPTION) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n } else if (tn === $.SELECT && p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n }\n}\n\n//12.2.5.4.17 The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH\n ) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processToken(token);\n } else {\n startTagInSelect(p, token);\n }\n}\n\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH\n ) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processToken(token);\n }\n } else {\n endTagInSelect(p, token);\n }\n}\n\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.BASE ||\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.SCRIPT ||\n tn === $.STYLE ||\n tn === $.TEMPLATE ||\n tn === $.TITLE\n ) {\n startTagInHead(p, token);\n } else {\n const newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn] || IN_BODY_MODE;\n\n p._popTmplInsertionMode();\n p._pushTmplInsertionMode(newInsertionMode);\n p.insertionMode = newInsertionMode;\n p._processToken(token);\n }\n}\n\nfunction endTagInTemplate(p, token) {\n if (token.tagName === $.TEMPLATE) {\n endTagInHead(p, token);\n }\n}\n\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p._popTmplInsertionMode();\n p._resetInsertionMode();\n p._processToken(token);\n } else {\n p.stopped = true;\n }\n}\n\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterBody(p, token);\n }\n}\n\nfunction endTagAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = AFTER_AFTER_BODY_MODE;\n }\n } else {\n tokenAfterBody(p, token);\n }\n}\n\nfunction tokenAfterBody(p, token) {\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.FRAMESET) {\n p._insertElement(token, NS.HTML);\n } else if (tn === $.FRAME) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagInFrameset(p, token) {\n if (token.tagName === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n\n if (!p.fragmentContext && p.openElements.currentTagName !== $.FRAMESET) {\n p.insertionMode = AFTER_FRAMESET_MODE;\n }\n }\n}\n\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagAfterFrameset(p, token) {\n if (token.tagName === $.HTML) {\n p.insertionMode = AFTER_AFTER_FRAMESET_MODE;\n }\n}\n\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterAfterBody(p, token);\n }\n}\n\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\n\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\n\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token) && !p.fragmentContext) {\n while (\n p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n !p._isIntegrationPoint(p.openElements.current)\n ) {\n p.openElements.pop();\n }\n\n p._processToken(token);\n } else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n } else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n } else {\n p._insertElement(token, currentNs);\n }\n\n token.ackSelfClosing = true;\n }\n}\n\nfunction endTagInForeignContent(p, token) {\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._processToken(token);\n break;\n }\n\n if (p.treeAdapter.getTagName(element).toLowerCase() === token.tagName) {\n p.openElements.popUntilElementPopped(element);\n break;\n }\n }\n}\n","'use strict';\n\nconst unicode = require('../common/unicode');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\n\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nclass Preprocessor {\n constructor() {\n this.html = null;\n\n this.pos = -1;\n this.lastGapPos = -1;\n this.lastCharPos = -1;\n\n this.gapStack = [];\n\n this.skipNextNewLine = false;\n\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n }\n\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.lastCharPos) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n\n if (unicode.isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n\n //NOTE: add gap that should be avoided during retreat\n this._addGap();\n\n return unicode.getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n\n //NOTE: we are at the end of a chunk, therefore we can't infer surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n\n return cp;\n }\n\n dropParsedChunk() {\n if (this.pos > this.bufferWaterline) {\n this.lastCharPos -= this.pos;\n this.html = this.html.substring(this.pos);\n this.pos = 0;\n this.lastGapPos = -1;\n this.gapStack = [];\n }\n }\n\n write(chunk, isLastChunk) {\n if (this.html) {\n this.html += chunk;\n } else {\n this.html = chunk;\n }\n\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1, this.html.length);\n\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n }\n\n advance() {\n this.pos++;\n\n if (this.pos > this.lastCharPos) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n\n let cp = this.html.charCodeAt(this.pos);\n\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (this.skipNextNewLine && cp === $.LINE_FEED) {\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n\n this.skipNextNewLine = false;\n\n if (unicode.isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange =\n (cp > 0x1f && cp < 0x7f) || cp === $.LINE_FEED || cp === $.CARRIAGE_RETURN || (cp > 0x9f && cp < 0xfdd0);\n\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n\n return cp;\n }\n\n _checkForProblematicCharacters(cp) {\n if (unicode.isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n } else if (unicode.isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n\n retreat() {\n if (this.pos === this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n\n this.pos--;\n }\n}\n\nmodule.exports = Preprocessor;\n","'use strict';\n\n//NOTE: this file contains auto-generated array mapped radix tree that is used for the named entity references consumption\n//(details: https://github.com/inikulin/parse5/tree/master/scripts/generate-named-entity-data/README.md)\nmodule.exports = new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4000,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,10000,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13000,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);","'use strict';\n\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\n\n//Element utils\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction isImpliedEndTagRequired(tn) {\n switch (tn.length) {\n case 1:\n return tn === $.P;\n\n case 2:\n return tn === $.RB || tn === $.RP || tn === $.RT || tn === $.DD || tn === $.DT || tn === $.LI;\n\n case 3:\n return tn === $.RTC;\n\n case 6:\n return tn === $.OPTION;\n\n case 8:\n return tn === $.OPTGROUP;\n }\n\n return false;\n}\n\nfunction isImpliedEndTagRequiredThoroughly(tn) {\n switch (tn.length) {\n case 1:\n return tn === $.P;\n\n case 2:\n return (\n tn === $.RB ||\n tn === $.RP ||\n tn === $.RT ||\n tn === $.DD ||\n tn === $.DT ||\n tn === $.LI ||\n tn === $.TD ||\n tn === $.TH ||\n tn === $.TR\n );\n\n case 3:\n return tn === $.RTC;\n\n case 5:\n return tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD;\n\n case 6:\n return tn === $.OPTION;\n\n case 7:\n return tn === $.CAPTION;\n\n case 8:\n return tn === $.OPTGROUP || tn === $.COLGROUP;\n }\n\n return false;\n}\n\nfunction isScopingElement(tn, ns) {\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH) {\n return ns === NS.HTML;\n } else if (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS) {\n return ns === NS.MATHML;\n }\n\n break;\n\n case 4:\n if (tn === $.HTML) {\n return ns === NS.HTML;\n } else if (tn === $.DESC) {\n return ns === NS.SVG;\n }\n\n break;\n\n case 5:\n if (tn === $.TABLE) {\n return ns === NS.HTML;\n } else if (tn === $.MTEXT) {\n return ns === NS.MATHML;\n } else if (tn === $.TITLE) {\n return ns === NS.SVG;\n }\n\n break;\n\n case 6:\n return (tn === $.APPLET || tn === $.OBJECT) && ns === NS.HTML;\n\n case 7:\n return (tn === $.CAPTION || tn === $.MARQUEE) && ns === NS.HTML;\n\n case 8:\n return tn === $.TEMPLATE && ns === NS.HTML;\n\n case 13:\n return tn === $.FOREIGN_OBJECT && ns === NS.SVG;\n\n case 14:\n return tn === $.ANNOTATION_XML && ns === NS.MATHML;\n }\n\n return false;\n}\n\n//Stack of open elements\nclass OpenElementStack {\n constructor(document, treeAdapter) {\n this.stackTop = -1;\n this.items = [];\n this.current = document;\n this.currentTagName = null;\n this.currentTmplContent = null;\n this.tmplCount = 0;\n this.treeAdapter = treeAdapter;\n }\n\n //Index of element\n _indexOf(element) {\n let idx = -1;\n\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element) {\n idx = i;\n break;\n }\n }\n return idx;\n }\n\n //Update current element\n _isInTemplate() {\n return this.currentTagName === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);\n\n this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;\n }\n\n //Mutations\n push(element) {\n this.items[++this.stackTop] = element;\n this._updateCurrentElement();\n\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n }\n\n pop() {\n this.stackTop--;\n\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n\n this._updateCurrentElement();\n }\n\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n\n this.items[idx] = newElement;\n\n if (idx === this.stackTop) {\n this._updateCurrentElement();\n }\n }\n\n insertAfter(referenceElement, newElement) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n\n this.items.splice(insertionIdx, 0, newElement);\n\n if (insertionIdx === ++this.stackTop) {\n this._updateCurrentElement();\n }\n }\n\n popUntilTagNamePopped(tagName) {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (tn === tagName && ns === NS.HTML) {\n break;\n }\n }\n }\n\n popUntilElementPopped(element) {\n while (this.stackTop > -1) {\n const poppedElement = this.current;\n\n this.pop();\n\n if (poppedElement === element) {\n break;\n }\n }\n }\n\n popUntilNumberedHeaderPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (\n tn === $.H1 ||\n tn === $.H2 ||\n tn === $.H3 ||\n tn === $.H4 ||\n tn === $.H5 ||\n (tn === $.H6 && ns === NS.HTML)\n ) {\n break;\n }\n }\n }\n\n popUntilTableCellPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (tn === $.TD || (tn === $.TH && ns === NS.HTML)) {\n break;\n }\n }\n }\n\n popAllUpToHtmlElement() {\n //NOTE: here we assume that root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.stackTop = 0;\n this._updateCurrentElement();\n }\n\n clearBackToTableContext() {\n while (\n (this.currentTagName !== $.TABLE && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n clearBackToTableBodyContext() {\n while (\n (this.currentTagName !== $.TBODY &&\n this.currentTagName !== $.TFOOT &&\n this.currentTagName !== $.THEAD &&\n this.currentTagName !== $.TEMPLATE &&\n this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n clearBackToTableRowContext() {\n while (\n (this.currentTagName !== $.TR && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n remove(element) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element) {\n this.items.splice(i, 1);\n this.stackTop--;\n this._updateCurrentElement();\n break;\n }\n }\n }\n\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n const element = this.items[1];\n\n return element && this.treeAdapter.getTagName(element) === $.BODY ? element : null;\n }\n\n contains(element) {\n return this._indexOf(element) > -1;\n }\n\n getCommonAncestor(element) {\n let elementIdx = this._indexOf(element);\n\n return --elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.currentTagName === $.HTML;\n }\n\n //Element in scope\n hasInScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if (isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (\n (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) &&\n ns === NS.HTML\n ) {\n return true;\n }\n\n if (isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInListItemScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInButtonScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if ((tn === $.BUTTON && ns === NS.HTML) || isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === tagName) {\n return true;\n }\n\n if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n return false;\n }\n }\n\n return true;\n }\n\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n return true;\n }\n\n if (tn === $.TABLE || tn === $.HTML) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === tagName) {\n return true;\n }\n\n if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n return false;\n }\n }\n\n return true;\n }\n\n //Implied end tags\n generateImpliedEndTags() {\n while (isImpliedEndTagRequired(this.currentTagName)) {\n this.pop();\n }\n }\n\n generateImpliedEndTagsThoroughly() {\n while (isImpliedEndTagRequiredThoroughly(this.currentTagName)) {\n this.pop();\n }\n }\n\n generateImpliedEndTagsWithExclusion(exclusionTagName) {\n while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName) {\n this.pop();\n }\n }\n}\n\nmodule.exports = OpenElementStack;\n","'use strict';\n\n//Const\nconst NOAH_ARK_CAPACITY = 3;\n\n//List of formatting elements\nclass FormattingElementList {\n constructor(treeAdapter) {\n this.length = 0;\n this.entries = [];\n this.treeAdapter = treeAdapter;\n this.bookmark = null;\n }\n\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement) {\n const candidates = [];\n\n if (this.length >= NOAH_ARK_CAPACITY) {\n const neAttrsLength = this.treeAdapter.getAttrList(newElement).length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n\n const element = entry.element;\n const elementAttrs = this.treeAdapter.getAttrList(element);\n\n const isCandidate =\n this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI &&\n elementAttrs.length === neAttrsLength;\n\n if (isCandidate) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n\n return candidates.length < NOAH_ARK_CAPACITY ? [] : candidates;\n }\n\n _ensureNoahArkCondition(newElement) {\n const candidates = this._getNoahArkConditionCandidates(newElement);\n let cLength = candidates.length;\n\n if (cLength) {\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const neAttrsLength = neAttrs.length;\n const neAttrsMap = Object.create(null);\n\n //NOTE: build attrs map for the new element so we can perform fast lookups\n for (let i = 0; i < neAttrsLength; i++) {\n const neAttr = neAttrs[i];\n\n neAttrsMap[neAttr.name] = neAttr.value;\n }\n\n for (let i = 0; i < neAttrsLength; i++) {\n for (let j = 0; j < cLength; j++) {\n const cAttr = candidates[j].attrs[i];\n\n if (neAttrsMap[cAttr.name] !== cAttr.value) {\n candidates.splice(j, 1);\n cLength--;\n }\n\n if (candidates.length < NOAH_ARK_CAPACITY) {\n return;\n }\n }\n }\n\n //NOTE: remove bottommost candidates until Noah's Ark condition will not be met\n for (let i = cLength - 1; i >= NOAH_ARK_CAPACITY - 1; i--) {\n this.entries.splice(candidates[i].idx, 1);\n this.length--;\n }\n }\n }\n\n //Mutations\n insertMarker() {\n this.entries.push({ type: FormattingElementList.MARKER_ENTRY });\n this.length++;\n }\n\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n\n this.entries.push({\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element,\n token: token\n });\n\n this.length++;\n }\n\n insertElementAfterBookmark(element, token) {\n let bookmarkIdx = this.length - 1;\n\n for (; bookmarkIdx >= 0; bookmarkIdx--) {\n if (this.entries[bookmarkIdx] === this.bookmark) {\n break;\n }\n }\n\n this.entries.splice(bookmarkIdx + 1, 0, {\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element,\n token: token\n });\n\n this.length++;\n }\n\n removeEntry(entry) {\n for (let i = this.length - 1; i >= 0; i--) {\n if (this.entries[i] === entry) {\n this.entries.splice(i, 1);\n this.length--;\n break;\n }\n }\n }\n\n clearToLastMarker() {\n while (this.length) {\n const entry = this.entries.pop();\n\n this.length--;\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n }\n }\n\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n return null;\n }\n\n if (this.treeAdapter.getTagName(entry.element) === tagName) {\n return entry;\n }\n }\n\n return null;\n }\n\n getElementEntry(element) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.ELEMENT_ENTRY && entry.element === element) {\n return entry;\n }\n }\n\n return null;\n }\n}\n\n//Entry types\nFormattingElementList.MARKER_ENTRY = 'MARKER_ENTRY';\nFormattingElementList.ELEMENT_ENTRY = 'ELEMENT_ENTRY';\n\nmodule.exports = FormattingElementList;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst LocationInfoTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoOpenElementStackMixin = require('./open-element-stack-mixin');\nconst HTML = require('../../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\n\nclass LocationInfoParserMixin extends Mixin {\n constructor(parser) {\n super(parser);\n\n this.parser = parser;\n this.treeAdapter = this.parser.treeAdapter;\n this.posTracker = null;\n this.lastStartTagToken = null;\n this.lastFosterParentingLocation = null;\n this.currentToken = null;\n }\n\n _setStartLocation(element) {\n let loc = null;\n\n if (this.lastStartTagToken) {\n loc = Object.assign({}, this.lastStartTagToken.location);\n loc.startTag = this.lastStartTagToken.location;\n }\n\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n\n _setEndLocation(element, closingToken) {\n const loc = this.treeAdapter.getNodeSourceCodeLocation(element);\n\n if (loc) {\n if (closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n\n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n const isClosingEndTag = closingToken.type === Tokenizer.END_TAG_TOKEN && tn === closingToken.tagName;\n const endLoc = {};\n if (isClosingEndTag) {\n endLoc.endTag = Object.assign({}, ctLoc);\n endLoc.endLine = ctLoc.endLine;\n endLoc.endCol = ctLoc.endCol;\n endLoc.endOffset = ctLoc.endOffset;\n } else {\n endLoc.endLine = ctLoc.startLine;\n endLoc.endCol = ctLoc.startCol;\n endLoc.endOffset = ctLoc.startOffset;\n }\n\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document, fragmentContext) {\n orig._bootstrap.call(this, document, fragmentContext);\n\n mxn.lastStartTagToken = null;\n mxn.lastFosterParentingLocation = null;\n mxn.currentToken = null;\n\n const tokenizerMixin = Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n\n mxn.posTracker = tokenizerMixin.posTracker;\n\n Mixin.install(this.openElements, LocationInfoOpenElementStackMixin, {\n onItemPop: function(element) {\n mxn._setEndLocation(element, mxn.currentToken);\n }\n });\n },\n\n _runParsingLoop(scriptHandler) {\n orig._runParsingLoop.call(this, scriptHandler);\n\n // NOTE: generate location info for elements\n // that remains on open element stack\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n mxn._setEndLocation(this.openElements.items[i], mxn.currentToken);\n }\n },\n\n //Token processing\n _processTokenInForeignContent(token) {\n mxn.currentToken = token;\n orig._processTokenInForeignContent.call(this, token);\n },\n\n _processToken(token) {\n mxn.currentToken = token;\n orig._processToken.call(this, token);\n\n //NOTE: <body> and <html> are never popped from the stack, so we need to updated\n //their end location explicitly.\n const requireExplicitUpdate =\n token.type === Tokenizer.END_TAG_TOKEN &&\n (token.tagName === $.HTML || (token.tagName === $.BODY && this.openElements.hasInScope($.BODY)));\n\n if (requireExplicitUpdate) {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const element = this.openElements.items[i];\n\n if (this.treeAdapter.getTagName(element) === token.tagName) {\n mxn._setEndLocation(element, token);\n break;\n }\n }\n }\n },\n\n //Doctype\n _setDocumentType(token) {\n orig._setDocumentType.call(this, token);\n\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const cnLength = documentChildren.length;\n\n for (let i = 0; i < cnLength; i++) {\n const node = documentChildren[i];\n\n if (this.treeAdapter.isDocumentTypeNode(node)) {\n this.treeAdapter.setNodeSourceCodeLocation(node, token.location);\n break;\n }\n }\n },\n\n //Elements\n _attachElementToTree(element) {\n //NOTE: _attachElementToTree is called from _appendElement, _insertElement and _insertTemplate methods.\n //So we will use token location stored in this methods for the element.\n mxn._setStartLocation(element);\n mxn.lastStartTagToken = null;\n orig._attachElementToTree.call(this, element);\n },\n\n _appendElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._appendElement.call(this, token, namespaceURI);\n },\n\n _insertElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._insertElement.call(this, token, namespaceURI);\n },\n\n _insertTemplate(token) {\n mxn.lastStartTagToken = token;\n orig._insertTemplate.call(this, token);\n\n const tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);\n\n this.treeAdapter.setNodeSourceCodeLocation(tmplContent, null);\n },\n\n _insertFakeRootElement() {\n orig._insertFakeRootElement.call(this);\n this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current, null);\n },\n\n //Comments\n _appendCommentNode(token, parent) {\n orig._appendCommentNode.call(this, token, parent);\n\n const children = this.treeAdapter.getChildNodes(parent);\n const commentNode = children[children.length - 1];\n\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n },\n\n //Text\n _findFosterParentingLocation() {\n //NOTE: store last foster parenting location, so we will be able to find inserted text\n //in case of foster parenting\n mxn.lastFosterParentingLocation = orig._findFosterParentingLocation.call(this);\n\n return mxn.lastFosterParentingLocation;\n },\n\n _insertCharacters(token) {\n orig._insertCharacters.call(this, token);\n\n const hasFosterParent = this._shouldFosterParentOnInsertion();\n\n const parent =\n (hasFosterParent && mxn.lastFosterParentingLocation.parent) ||\n this.openElements.currentTmplContent ||\n this.openElements.current;\n\n const siblings = this.treeAdapter.getChildNodes(parent);\n\n const textNodeIdx =\n hasFosterParent && mxn.lastFosterParentingLocation.beforeElement\n ? siblings.indexOf(mxn.lastFosterParentingLocation.beforeElement) - 1\n : siblings.length - 1;\n\n const textNode = siblings[textNodeIdx];\n\n //NOTE: if we have location assigned by another token, then just update end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n } else {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n };\n }\n}\n\nmodule.exports = LocationInfoParserMixin;\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;","var _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass LocationInfoOpenElementStackMixin extends Mixin {\n constructor(stack, opts) {\n super(stack);\n\n this.onItemPop = opts.onItemPop;\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n pop() {\n mxn.onItemPop(this.current);\n orig.pop.call(this);\n },\n\n popAllUpToHtmlElement() {\n for (let i = this.stackTop; i > 0; i--) {\n mxn.onItemPop(this.items[i]);\n }\n\n orig.popAllUpToHtmlElement.call(this);\n },\n\n remove(element) {\n mxn.onItemPop(this.current);\n orig.remove.call(this, element);\n }\n };\n }\n}\n\nmodule.exports = LocationInfoOpenElementStackMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoTokenizerMixin = require('../location-info/tokenizer-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingParserMixin extends ErrorReportingMixinBase {\n constructor(parser, opts) {\n super(parser, opts);\n\n this.opts = opts;\n this.ctLoc = null;\n this.locBeforeToken = false;\n }\n\n _setErrorLocation(err) {\n if (this.ctLoc) {\n err.startLine = this.ctLoc.startLine;\n err.startCol = this.ctLoc.startCol;\n err.startOffset = this.ctLoc.startOffset;\n\n err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;\n err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;\n err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;\n }\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document, fragmentContext) {\n orig._bootstrap.call(this, document, fragmentContext);\n\n Mixin.install(this.tokenizer, ErrorReportingTokenizerMixin, mxn.opts);\n Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n },\n\n _processInputToken(token) {\n mxn.ctLoc = token.location;\n\n orig._processInputToken.call(this, token);\n },\n\n _err(code, options) {\n mxn.locBeforeToken = options && options.beforeToken;\n mxn._reportError(code);\n }\n };\n }\n}\n\nmodule.exports = ErrorReportingParserMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingPreprocessorMixin = require('./preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingTokenizerMixin extends ErrorReportingMixinBase {\n constructor(tokenizer, opts) {\n super(tokenizer, opts);\n\n const preprocessorMixin = Mixin.install(tokenizer.preprocessor, ErrorReportingPreprocessorMixin, opts);\n\n this.posTracker = preprocessorMixin.posTracker;\n }\n}\n\nmodule.exports = ErrorReportingTokenizerMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingPreprocessorMixin extends ErrorReportingMixinBase {\n constructor(preprocessor, opts) {\n super(preprocessor, opts);\n\n this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin);\n this.lastErrOffset = -1;\n }\n\n _reportError(code) {\n //NOTE: avoid reporting error twice on advance/retreat\n if (this.lastErrOffset !== this.posTracker.offset) {\n this.lastErrOffset = this.posTracker.offset;\n super._reportError(code);\n }\n }\n}\n\nmodule.exports = ErrorReportingPreprocessorMixin;\n","var superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","'use strict';\n\nconst { DOCUMENT_MODE } = require('../common/html');\n\n//Node construction\nexports.createDocument = function() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: []\n };\n};\n\nexports.createDocumentFragment = function() {\n return {\n nodeName: '#document-fragment',\n childNodes: []\n };\n};\n\nexports.createElement = function(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName: tagName,\n attrs: attrs,\n namespaceURI: namespaceURI,\n childNodes: [],\n parentNode: null\n };\n};\n\nexports.createCommentNode = function(data) {\n return {\n nodeName: '#comment',\n data: data,\n parentNode: null\n };\n};\n\nconst createTextNode = function(value) {\n return {\n nodeName: '#text',\n value: value,\n parentNode: null\n };\n};\n\n//Tree mutation\nconst appendChild = (exports.appendChild = function(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n});\n\nconst insertBefore = (exports.insertBefore = function(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n});\n\nexports.setTemplateContent = function(templateElement, contentElement) {\n templateElement.content = contentElement;\n};\n\nexports.getTemplateContent = function(templateElement) {\n return templateElement.content;\n};\n\nexports.setDocumentType = function(document, name, publicId, systemId) {\n let doctypeNode = null;\n\n for (let i = 0; i < document.childNodes.length; i++) {\n if (document.childNodes[i].nodeName === '#documentType') {\n doctypeNode = document.childNodes[i];\n break;\n }\n }\n\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n } else {\n appendChild(document, {\n nodeName: '#documentType',\n name: name,\n publicId: publicId,\n systemId: systemId\n });\n }\n};\n\nexports.setDocumentMode = function(document, mode) {\n document.mode = mode;\n};\n\nexports.getDocumentMode = function(document) {\n return document.mode;\n};\n\nexports.detachNode = function(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n};\n\nexports.insertText = function(parentNode, text) {\n if (parentNode.childNodes.length) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n\n if (prevNode.nodeName === '#text') {\n prevNode.value += text;\n return;\n }\n }\n\n appendChild(parentNode, createTextNode(text));\n};\n\nexports.insertTextBefore = function(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n\n if (prevNode && prevNode.nodeName === '#text') {\n prevNode.value += text;\n } else {\n insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n};\n\nexports.adoptAttributes = function(recipient, attrs) {\n const recipientAttrsMap = [];\n\n for (let i = 0; i < recipient.attrs.length; i++) {\n recipientAttrsMap.push(recipient.attrs[i].name);\n }\n\n for (let j = 0; j < attrs.length; j++) {\n if (recipientAttrsMap.indexOf(attrs[j].name) === -1) {\n recipient.attrs.push(attrs[j]);\n }\n }\n};\n\n//Tree traversing\nexports.getFirstChild = function(node) {\n return node.childNodes[0];\n};\n\nexports.getChildNodes = function(node) {\n return node.childNodes;\n};\n\nexports.getParentNode = function(node) {\n return node.parentNode;\n};\n\nexports.getAttrList = function(element) {\n return element.attrs;\n};\n\n//Node data\nexports.getTagName = function(element) {\n return element.tagName;\n};\n\nexports.getNamespaceURI = function(element) {\n return element.namespaceURI;\n};\n\nexports.getTextNodeContent = function(textNode) {\n return textNode.value;\n};\n\nexports.getCommentNodeContent = function(commentNode) {\n return commentNode.data;\n};\n\nexports.getDocumentTypeNodeName = function(doctypeNode) {\n return doctypeNode.name;\n};\n\nexports.getDocumentTypeNodePublicId = function(doctypeNode) {\n return doctypeNode.publicId;\n};\n\nexports.getDocumentTypeNodeSystemId = function(doctypeNode) {\n return doctypeNode.systemId;\n};\n\n//Node types\nexports.isTextNode = function(node) {\n return node.nodeName === '#text';\n};\n\nexports.isCommentNode = function(node) {\n return node.nodeName === '#comment';\n};\n\nexports.isDocumentTypeNode = function(node) {\n return node.nodeName === '#documentType';\n};\n\nexports.isElementNode = function(node) {\n return !!node.tagName;\n};\n\n// Source code location\nexports.setNodeSourceCodeLocation = function(node, location) {\n node.sourceCodeLocation = location;\n};\n\nexports.getNodeSourceCodeLocation = function(node) {\n return node.sourceCodeLocation;\n};\n\nexports.updateNodeSourceCodeLocation = function(node, endLocation) {\n node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n};\n","'use strict';\n\nmodule.exports = function mergeOptions(defaults, options) {\n options = options || Object.create(null);\n\n return [defaults, options].reduce((merged, optObj) => {\n Object.keys(optObj).forEach(key => {\n merged[key] = optObj[key];\n });\n\n return merged;\n }, Object.create(null));\n};\n","'use strict';\n\nconst { DOCUMENT_MODE } = require('./html');\n\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\n\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//'\n];\n\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = QUIRKS_MODE_PUBLIC_ID_PREFIXES.concat([\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//'\n]);\n\nconst QUIRKS_MODE_PUBLIC_IDS = ['-//w3o//dtd w3 html strict 3.0//en//', '-/w3c/dtd html 4.0 transitional/en', 'html'];\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\n\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES.concat([\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//'\n]);\n\n//Utils\nfunction enquoteDoctypeId(id) {\n const quote = id.indexOf('\"') !== -1 ? \"'\" : '\"';\n\n return quote + id + quote;\n}\n\nfunction hasPrefix(publicId, prefixes) {\n for (let i = 0; i < prefixes.length; i++) {\n if (publicId.indexOf(prefixes[i]) === 0) {\n return true;\n }\n }\n\n return false;\n}\n\n//API\nexports.isConforming = function(token) {\n return (\n token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID)\n );\n};\n\nexports.getDocumentMode = function(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n const systemId = token.systemId;\n\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n let publicId = token.publicId;\n\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n\n if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n\n return DOCUMENT_MODE.NO_QUIRKS;\n};\n\nexports.serializeContent = function(name, publicId, systemId) {\n let str = '!DOCTYPE ';\n\n if (name) {\n str += name;\n }\n\n if (publicId) {\n str += ' PUBLIC ' + enquoteDoctypeId(publicId);\n } else if (systemId) {\n str += ' SYSTEM';\n }\n\n if (systemId !== null) {\n str += ' ' + enquoteDoctypeId(systemId);\n }\n\n return str;\n};\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst HTML = require('./html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml'\n};\n\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = {\n attributename: 'attributeName',\n attributetype: 'attributeType',\n basefrequency: 'baseFrequency',\n baseprofile: 'baseProfile',\n calcmode: 'calcMode',\n clippathunits: 'clipPathUnits',\n diffuseconstant: 'diffuseConstant',\n edgemode: 'edgeMode',\n filterunits: 'filterUnits',\n glyphref: 'glyphRef',\n gradienttransform: 'gradientTransform',\n gradientunits: 'gradientUnits',\n kernelmatrix: 'kernelMatrix',\n kernelunitlength: 'kernelUnitLength',\n keypoints: 'keyPoints',\n keysplines: 'keySplines',\n keytimes: 'keyTimes',\n lengthadjust: 'lengthAdjust',\n limitingconeangle: 'limitingConeAngle',\n markerheight: 'markerHeight',\n markerunits: 'markerUnits',\n markerwidth: 'markerWidth',\n maskcontentunits: 'maskContentUnits',\n maskunits: 'maskUnits',\n numoctaves: 'numOctaves',\n pathlength: 'pathLength',\n patterncontentunits: 'patternContentUnits',\n patterntransform: 'patternTransform',\n patternunits: 'patternUnits',\n pointsatx: 'pointsAtX',\n pointsaty: 'pointsAtY',\n pointsatz: 'pointsAtZ',\n preservealpha: 'preserveAlpha',\n preserveaspectratio: 'preserveAspectRatio',\n primitiveunits: 'primitiveUnits',\n refx: 'refX',\n refy: 'refY',\n repeatcount: 'repeatCount',\n repeatdur: 'repeatDur',\n requiredextensions: 'requiredExtensions',\n requiredfeatures: 'requiredFeatures',\n specularconstant: 'specularConstant',\n specularexponent: 'specularExponent',\n spreadmethod: 'spreadMethod',\n startoffset: 'startOffset',\n stddeviation: 'stdDeviation',\n stitchtiles: 'stitchTiles',\n surfacescale: 'surfaceScale',\n systemlanguage: 'systemLanguage',\n tablevalues: 'tableValues',\n targetx: 'targetX',\n targety: 'targetY',\n textlength: 'textLength',\n viewbox: 'viewBox',\n viewtarget: 'viewTarget',\n xchannelselector: 'xChannelSelector',\n ychannelselector: 'yChannelSelector',\n zoomandpan: 'zoomAndPan'\n};\n\nconst XML_ATTRS_ADJUSTMENT_MAP = {\n 'xlink:actuate': { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK },\n 'xlink:arcrole': { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK },\n 'xlink:href': { prefix: 'xlink', name: 'href', namespace: NS.XLINK },\n 'xlink:role': { prefix: 'xlink', name: 'role', namespace: NS.XLINK },\n 'xlink:show': { prefix: 'xlink', name: 'show', namespace: NS.XLINK },\n 'xlink:title': { prefix: 'xlink', name: 'title', namespace: NS.XLINK },\n 'xlink:type': { prefix: 'xlink', name: 'type', namespace: NS.XLINK },\n 'xml:base': { prefix: 'xml', name: 'base', namespace: NS.XML },\n 'xml:lang': { prefix: 'xml', name: 'lang', namespace: NS.XML },\n 'xml:space': { prefix: 'xml', name: 'space', namespace: NS.XML },\n xmlns: { prefix: '', name: 'xmlns', namespace: NS.XMLNS },\n 'xmlns:xlink': { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }\n};\n\n//SVG tag names adjustment map\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = (exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = {\n altglyph: 'altGlyph',\n altglyphdef: 'altGlyphDef',\n altglyphitem: 'altGlyphItem',\n animatecolor: 'animateColor',\n animatemotion: 'animateMotion',\n animatetransform: 'animateTransform',\n clippath: 'clipPath',\n feblend: 'feBlend',\n fecolormatrix: 'feColorMatrix',\n fecomponenttransfer: 'feComponentTransfer',\n fecomposite: 'feComposite',\n feconvolvematrix: 'feConvolveMatrix',\n fediffuselighting: 'feDiffuseLighting',\n fedisplacementmap: 'feDisplacementMap',\n fedistantlight: 'feDistantLight',\n feflood: 'feFlood',\n fefunca: 'feFuncA',\n fefuncb: 'feFuncB',\n fefuncg: 'feFuncG',\n fefuncr: 'feFuncR',\n fegaussianblur: 'feGaussianBlur',\n feimage: 'feImage',\n femerge: 'feMerge',\n femergenode: 'feMergeNode',\n femorphology: 'feMorphology',\n feoffset: 'feOffset',\n fepointlight: 'fePointLight',\n fespecularlighting: 'feSpecularLighting',\n fespotlight: 'feSpotLight',\n fetile: 'feTile',\n feturbulence: 'feTurbulence',\n foreignobject: 'foreignObject',\n glyphref: 'glyphRef',\n lineargradient: 'linearGradient',\n radialgradient: 'radialGradient',\n textpath: 'textPath'\n});\n\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = {\n [$.B]: true,\n [$.BIG]: true,\n [$.BLOCKQUOTE]: true,\n [$.BODY]: true,\n [$.BR]: true,\n [$.CENTER]: true,\n [$.CODE]: true,\n [$.DD]: true,\n [$.DIV]: true,\n [$.DL]: true,\n [$.DT]: true,\n [$.EM]: true,\n [$.EMBED]: true,\n [$.H1]: true,\n [$.H2]: true,\n [$.H3]: true,\n [$.H4]: true,\n [$.H5]: true,\n [$.H6]: true,\n [$.HEAD]: true,\n [$.HR]: true,\n [$.I]: true,\n [$.IMG]: true,\n [$.LI]: true,\n [$.LISTING]: true,\n [$.MENU]: true,\n [$.META]: true,\n [$.NOBR]: true,\n [$.OL]: true,\n [$.P]: true,\n [$.PRE]: true,\n [$.RUBY]: true,\n [$.S]: true,\n [$.SMALL]: true,\n [$.SPAN]: true,\n [$.STRONG]: true,\n [$.STRIKE]: true,\n [$.SUB]: true,\n [$.SUP]: true,\n [$.TABLE]: true,\n [$.TT]: true,\n [$.U]: true,\n [$.UL]: true,\n [$.VAR]: true\n};\n\n//Check exit from foreign content\nexports.causesExit = function(startTagToken) {\n const tn = startTagToken.tagName;\n const isFontWithAttrs =\n tn === $.FONT &&\n (Tokenizer.getTokenAttr(startTagToken, ATTRS.COLOR) !== null ||\n Tokenizer.getTokenAttr(startTagToken, ATTRS.SIZE) !== null ||\n Tokenizer.getTokenAttr(startTagToken, ATTRS.FACE) !== null);\n\n return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn];\n};\n\n//Token adjustments\nexports.adjustTokenMathMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n};\n\nexports.adjustTokenSVGAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n if (adjustedAttrName) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n};\n\nexports.adjustTokenXMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n};\n\nexports.adjustTokenSVGTagName = function(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];\n\n if (adjustedTagName) {\n token.tagName = adjustedTagName;\n }\n};\n\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\n\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\n\nexports.isIntegrationPoint = function(tn, ns, attrs, foreignNS) {\n if ((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) {\n return true;\n }\n\n if ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)) {\n return true;\n }\n\n return false;\n};\n","'use strict'\n\nvar s = require('hastscript/svg')\nvar h = require('hastscript')\nvar find = require('property-information/find')\nvar html = require('property-information/html')\nvar svg = require('property-information/svg')\nvar vfileLocation = require('vfile-location')\nvar ns = require('web-namespaces')\n\nmodule.exports = wrapper\n\nvar own = {}.hasOwnProperty\n\n// Handlers.\nvar map = {\n '#document': root,\n '#document-fragment': root,\n '#text': text,\n '#comment': comment,\n '#documentType': doctype\n}\n\n// Wrapper to normalise options.\nfunction wrapper(ast, options) {\n var settings = options || {}\n var file\n\n if (settings.messages) {\n file = settings\n settings = {}\n } else {\n file = settings.file\n }\n\n return transform(ast, {\n schema: settings.space === 'svg' ? svg : html,\n file: file,\n verbose: settings.verbose\n })\n}\n\n// Transform a node.\nfunction transform(ast, config) {\n var schema = config.schema\n var fn = own.call(map, ast.nodeName) ? map[ast.nodeName] : element\n var children\n var result\n var position\n\n if (fn === element) {\n config.schema = ast.namespaceURI === ns.svg ? svg : html\n }\n\n if (ast.childNodes) {\n children = nodes(ast.childNodes, config)\n }\n\n result = fn(ast, children, config)\n\n if (ast.sourceCodeLocation && config.file) {\n position = location(result, ast.sourceCodeLocation, config)\n\n if (position) {\n config.location = true\n result.position = position\n }\n }\n\n config.schema = schema\n\n return result\n}\n\n// Transform children.\nfunction nodes(children, config) {\n var index = -1\n var result = []\n\n while (++index < children.length) {\n result[index] = transform(children[index], config)\n }\n\n return result\n}\n\n// Transform a document.\n// Stores `ast.quirksMode` in `node.data.quirksMode`.\nfunction root(ast, children, config) {\n var result = {\n type: 'root',\n children: children,\n data: {quirksMode: ast.mode === 'quirks' || ast.mode === 'limited-quirks'}\n }\n var doc\n var location\n\n if (config.file && config.location) {\n doc = String(config.file)\n location = vfileLocation(doc)\n result.position = {\n start: location.toPoint(0),\n end: location.toPoint(doc.length)\n }\n }\n\n return result\n}\n\n// Transform a doctype.\nfunction doctype(ast) {\n return {\n type: 'doctype',\n name: ast.name || '',\n public: ast.publicId || null,\n system: ast.systemId || null\n }\n}\n\n// Transform a text.\nfunction text(ast) {\n return {type: 'text', value: ast.value}\n}\n\n// Transform a comment.\nfunction comment(ast) {\n return {type: 'comment', value: ast.data}\n}\n\n// Transform an element.\nfunction element(ast, children, config) {\n var fn = config.schema.space === 'svg' ? s : h\n var props = {}\n var index = -1\n var result\n var attribute\n var pos\n var start\n var end\n\n while (++index < ast.attrs.length) {\n attribute = ast.attrs[index]\n props[(attribute.prefix ? attribute.prefix + ':' : '') + attribute.name] =\n attribute.value\n }\n\n result = fn(ast.tagName, props, children)\n\n if (result.tagName === 'template' && 'content' in ast) {\n pos = ast.sourceCodeLocation\n start = pos && pos.startTag && position(pos.startTag).end\n end = pos && pos.endTag && position(pos.endTag).start\n\n result.content = transform(ast.content, config)\n\n if ((start || end) && config.file) {\n result.content.position = {start: start, end: end}\n }\n }\n\n return result\n}\n\n// Create clean positional information.\nfunction location(node, location, config) {\n var result = position(location)\n var tail\n var key\n var props\n\n if (node.type === 'element') {\n tail = node.children[node.children.length - 1]\n\n // Bug for unclosed with children.\n // See: <https://github.com/inikulin/parse5/issues/109>.\n if (!location.endTag && tail && tail.position && tail.position.end) {\n result.end = Object.assign({}, tail.position.end)\n }\n\n if (config.verbose) {\n props = {}\n\n for (key in location.attrs) {\n props[find(config.schema, key).property] = position(location.attrs[key])\n }\n\n node.data = {\n position: {\n opening: position(location.startTag),\n closing: location.endTag ? position(location.endTag) : null,\n properties: props\n }\n }\n }\n }\n\n return result\n}\n\nfunction position(loc) {\n var start = point({\n line: loc.startLine,\n column: loc.startCol,\n offset: loc.startOffset\n })\n var end = point({\n line: loc.endLine,\n column: loc.endCol,\n offset: loc.endOffset\n })\n return start || end ? {start: start, end: end} : null\n}\n\nfunction point(point) {\n return point.line && point.column ? point : null\n}\n","'use strict'\n\nvar schema = require('property-information/svg')\nvar caseSensitive = require('./svg-case-sensitive-tag-names.json')\nvar factory = require('./factory')\n\nvar svg = factory(schema, 'g', caseSensitive)\nsvg.displayName = 'svg'\n\nmodule.exports = svg\n","'use strict'\n\nmodule.exports = parse\n\nvar search = /[#.]/g\n\n// Create a hast element from a simple CSS selector.\nfunction parse(selector, defaultTagName) {\n var value = selector || ''\n var name = defaultTagName || 'div'\n var props = {}\n var start = 0\n var subvalue\n var previous\n var match\n\n while (start < value.length) {\n search.lastIndex = start\n match = search.exec(value)\n subvalue = value.slice(start, match ? match.index : value.length)\n\n if (subvalue) {\n if (!previous) {\n name = subvalue\n } else if (previous === '#') {\n props.id = subvalue\n } else if (props.className) {\n props.className.push(subvalue)\n } else {\n props.className = [subvalue]\n }\n\n start += subvalue.length\n }\n\n if (match) {\n previous = match[0]\n start++\n }\n }\n\n return {type: 'element', tagName: name, properties: props, children: []}\n}\n","'use strict'\n\nmodule.exports = require('./html')\n","'use strict'\n\nvar schema = require('property-information/html')\nvar factory = require('./factory')\n\nvar html = factory(schema, 'div')\nhtml.displayName = 'html'\n\nmodule.exports = html\n","'use strict'\n\nmodule.exports = factory\n\nfunction factory(file) {\n var value = String(file)\n var indices = []\n var search = /\\r?\\n|\\r/g\n\n while (search.exec(value)) {\n indices.push(search.lastIndex)\n }\n\n indices.push(value.length + 1)\n\n return {\n toPoint: offsetToPoint,\n toPosition: offsetToPoint,\n toOffset: pointToOffset\n }\n\n // Get the line and column-based `point` for `offset` in the bound indices.\n function offsetToPoint(offset) {\n var index = -1\n\n if (offset > -1 && offset < indices[indices.length - 1]) {\n while (++index < indices.length) {\n if (indices[index] > offset) {\n return {\n line: index + 1,\n column: offset - (indices[index - 1] || 0) + 1,\n offset: offset\n }\n }\n }\n }\n\n return {}\n }\n\n // Get the `offset` for a line and column-based `point` in the bound\n // indices.\n function pointToOffset(point) {\n var line = point && point.line\n var column = point && point.column\n var offset\n\n if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {\n offset = (indices[line - 2] || 0) + column - 1 || 0\n }\n\n return offset > -1 && offset < indices[indices.length - 1] ? offset : -1\n }\n}\n","'use strict'\n\nvar xtend = require('xtend')\nvar html = require('property-information/html')\nvar svg = require('property-information/svg')\nvar find = require('property-information/find')\nvar toH = require('hast-to-hyperscript')\nvar ns = require('web-namespaces')\nvar zwitch = require('zwitch')\n\nmodule.exports = transform\n\nvar ignoredSpaces = ['svg', 'html']\n\nvar one = zwitch('type')\n\none.handlers.root = root\none.handlers.element = element\none.handlers.text = text\none.handlers.comment = comment\none.handlers.doctype = doctype\n\n// Transform a tree from hast to Parse5’s AST.\nfunction transform(tree, space) {\n return one(tree, space === 'svg' ? svg : html)\n}\n\nfunction root(node, schema) {\n var data = node.data || {}\n var mode = data.quirksMode ? 'quirks' : 'no-quirks'\n\n return patch(node, {nodeName: '#document', mode: mode}, schema)\n}\n\nfunction fragment(node, schema) {\n return patch(node, {nodeName: '#document-fragment'}, schema)\n}\n\nfunction doctype(node, schema) {\n return patch(\n node,\n {\n nodeName: '#documentType',\n name: node.name,\n publicId: node.public || '',\n systemId: node.system || ''\n },\n schema\n )\n}\n\nfunction text(node, schema) {\n return patch(node, {nodeName: '#text', value: node.value}, schema)\n}\n\nfunction comment(node, schema) {\n return patch(node, {nodeName: '#comment', data: node.value}, schema)\n}\n\nfunction element(node, schema) {\n var space = schema.space\n var shallow = xtend(node, {children: []})\n\n return toH(h, shallow, {space: space})\n\n function h(name, attrs) {\n var values = []\n var p5\n var attr\n var value\n var key\n var info\n var pos\n\n for (key in attrs) {\n info = find(schema, key)\n attr = attrs[key]\n\n if (attr === false || (info.boolean && !attr)) {\n continue\n }\n\n value = {name: key, value: attr === true ? '' : String(attr)}\n\n if (info.space && ignoredSpaces.indexOf(info.space) === -1) {\n pos = key.indexOf(':')\n\n if (pos === -1) {\n value.prefix = ''\n } else {\n value.name = key.slice(pos + 1)\n value.prefix = key.slice(0, pos)\n }\n\n value.namespace = ns[info.space]\n }\n\n values.push(value)\n }\n\n p5 = patch(node, {nodeName: name, tagName: name, attrs: values}, schema)\n\n if (name === 'template') {\n p5.content = fragment(shallow.content, schema)\n }\n\n return p5\n }\n}\n\n// Patch specific properties.\nfunction patch(node, p5, parentSchema) {\n var schema = parentSchema\n var position = node.position\n var children = node.children\n var childNodes = []\n var length = children ? children.length : 0\n var index = -1\n var child\n\n if (node.type === 'element') {\n if (schema.space === 'html' && node.tagName === 'svg') {\n schema = svg\n }\n\n p5.namespaceURI = ns[schema.space]\n }\n\n while (++index < length) {\n child = one(children[index], schema)\n child.parentNode = p5\n childNodes[index] = child\n }\n\n if (node.type === 'element' || node.type === 'root') {\n p5.childNodes = childNodes\n }\n\n if (position && position.start && position.end) {\n p5.sourceCodeLocation = {\n startLine: position.start.line,\n startCol: position.start.column,\n startOffset: position.start.offset,\n endLine: position.end.line,\n endCol: position.end.column,\n endOffset: position.end.offset\n }\n }\n\n return p5\n}\n","'use strict'\n\nvar html = require('property-information/html')\nvar svg = require('property-information/svg')\nvar find = require('property-information/find')\nvar hastToReact = require('property-information/hast-to-react.json')\nvar spaces = require('space-separated-tokens')\nvar commas = require('comma-separated-tokens')\nvar style = require('style-to-object')\nvar ns = require('web-namespaces')\nvar convert = require('unist-util-is/convert')\n\nvar root = convert('root')\nvar element = convert('element')\nvar text = convert('text')\n\nmodule.exports = wrapper\n\nfunction wrapper(h, node, options) {\n var settings = options || {}\n var r = react(h)\n var v = vue(h)\n var vd = vdom(h)\n var prefix\n\n if (typeof h !== 'function') {\n throw new Error('h is not a function')\n }\n\n if (typeof settings === 'string' || typeof settings === 'boolean') {\n prefix = settings\n settings = {}\n } else {\n prefix = settings.prefix\n }\n\n if (root(node)) {\n node =\n node.children.length === 1 && element(node.children[0])\n ? node.children[0]\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: node.children\n }\n } else if (!element(node)) {\n throw new Error(\n 'Expected root or element, not `' + ((node && node.type) || node) + '`'\n )\n }\n\n return toH(h, node, {\n schema: settings.space === 'svg' ? svg : html,\n prefix: prefix == null ? (r || v || vd ? 'h-' : null) : prefix,\n key: 0,\n react: r,\n vue: v,\n vdom: vd,\n hyperscript: hyperscript(h)\n })\n}\n\n// Transform a hast node through a hyperscript interface to *anything*!\nfunction toH(h, node, ctx) {\n var parentSchema = ctx.schema\n var schema = parentSchema\n var name = node.tagName\n var attributes = {}\n var nodes = []\n var index = -1\n var key\n var value\n\n if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n schema = svg\n ctx.schema = schema\n }\n\n for (key in node.properties) {\n addAttribute(attributes, key, node.properties[key], ctx, name)\n }\n\n if (ctx.vdom) {\n if (schema.space === 'html') {\n name = name.toUpperCase()\n } else {\n attributes.namespace = ns[schema.space]\n }\n }\n\n if (ctx.prefix) {\n ctx.key++\n attributes.key = ctx.prefix + ctx.key\n }\n\n if (node.children) {\n while (++index < node.children.length) {\n value = node.children[index]\n\n if (element(value)) {\n nodes.push(toH(h, value, ctx))\n } else if (text(value)) {\n nodes.push(value.value)\n }\n }\n }\n\n // Restore parent schema.\n ctx.schema = parentSchema\n\n // Ensure no React warnings are triggered for void elements having children\n // passed in.\n return nodes.length\n ? h.call(node, name, attributes, nodes)\n : h.call(node, name, attributes)\n}\n\nfunction addAttribute(props, prop, value, ctx, name) {\n var info = find(ctx.schema, prop)\n var subprop\n\n // Ignore nullish and `NaN` values.\n // Ignore `false` and falsey known booleans for hyperlike DSLs.\n if (\n value == null ||\n value !== value ||\n (value === false && (ctx.vue || ctx.vdom || ctx.hyperscript)) ||\n (!value && info.boolean && (ctx.vue || ctx.vdom || ctx.hyperscript))\n ) {\n return\n }\n\n if (value && typeof value === 'object' && 'length' in value) {\n // Accept `array`.\n // Most props are space-separated.\n value = (info.commaSeparated ? commas : spaces).stringify(value)\n }\n\n // Treat `true` and truthy known booleans.\n if (info.boolean && ctx.hyperscript) {\n value = ''\n }\n\n // VDOM, Vue, and React accept `style` as object.\n if (\n info.property === 'style' &&\n typeof value === 'string' &&\n (ctx.react || ctx.vue || ctx.vdom)\n ) {\n value = parseStyle(value, name)\n }\n\n if (ctx.vue) {\n if (info.property !== 'style') subprop = 'attrs'\n } else if (!info.mustUseProperty) {\n if (ctx.vdom) {\n if (info.property !== 'style') subprop = 'attributes'\n } else if (ctx.hyperscript) {\n subprop = 'attrs'\n }\n }\n\n if (subprop) {\n if (!props[subprop]) props[subprop] = {}\n props[subprop][info.attribute] = value\n } else if (info.space && ctx.react) {\n props[hastToReact[info.property] || info.property] = value\n } else {\n props[info.attribute] = value\n }\n}\n\n// Check if `h` is `react.createElement`.\nfunction react(h) {\n var node = h && h('div')\n return Boolean(\n node && ('_owner' in node || '_store' in node) && node.key == null\n )\n}\n\n// Check if `h` is `hyperscript`.\nfunction hyperscript(h) {\n return Boolean(h && h.context && h.cleanup)\n}\n\n// Check if `h` is `virtual-dom/h`.\nfunction vdom(h) {\n return h && h('div').type === 'VirtualNode'\n}\n\nfunction vue(h) {\n var node = h && h('div')\n return Boolean(node && node.context && node.context._isVue)\n}\n\nfunction parseStyle(value, tagName) {\n var result = {}\n\n try {\n style(value, iterator)\n } catch (error) {\n error.message =\n tagName + '[style]' + error.message.slice('undefined'.length)\n throw error\n }\n\n return result\n\n function iterator(name, value) {\n if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4)\n result[name.replace(/-([a-z])/g, styleReplacer)] = value\n }\n}\n\nfunction styleReplacer($0, $1) {\n return $1.toUpperCase()\n}\n","'use strict'\n\nvar clean = require('hast-util-sanitize')\n\nmodule.exports = sanitize\n\nfunction sanitize(options) {\n return transformer\n function transformer(tree) {\n return clean(tree, options)\n }\n}\n","'use strict'\nmodule.exports = require('./lib')\n","'use strict'\n\nvar xtend = require('xtend')\nvar defaults = require('./github.json')\n\nmodule.exports = wrapper\n\nvar own = {}.hasOwnProperty\nvar push = [].push\n\nvar nodeSchema = {\n root: {children: all},\n doctype: handleDoctype,\n comment: handleComment,\n element: {\n tagName: handleTagName,\n properties: handleProperties,\n children: all\n },\n text: {value: handleValue},\n '*': {data: allow, position: allow}\n}\n\n// Sanitize `node`, according to `schema`.\nfunction wrapper(node, schema) {\n var ctx = {type: 'root', children: []}\n var replace\n\n if (node && typeof node === 'object' && node.type) {\n replace = one(xtend(defaults, schema || {}), node, [])\n\n if (replace) {\n if ('length' in replace) {\n if (replace.length === 1) {\n ctx = replace[0]\n } else {\n ctx.children = replace\n }\n } else {\n ctx = replace\n }\n }\n }\n\n return ctx\n}\n\n// Sanitize `node`.\nfunction one(schema, node, stack) {\n var type = node && node.type\n var replacement = {type: node.type}\n var replace\n var definition\n var allowed\n var result\n var key\n\n if (own.call(nodeSchema, type)) {\n definition = nodeSchema[type]\n\n if (typeof definition === 'function') {\n definition = definition(schema, node)\n }\n\n if (definition) {\n replace = true\n allowed = xtend(definition, nodeSchema['*'])\n\n for (key in allowed) {\n result = allowed[key](schema, node[key], node, stack)\n\n if (result === false) {\n replace = null\n // Set the non-safe value.\n replacement[key] = node[key]\n } else if (result != null) {\n replacement[key] = result\n }\n }\n }\n }\n\n if (replace) {\n return replacement\n }\n\n return replacement.children &&\n replacement.children.length &&\n schema.strip.indexOf(replacement.tagName) < 0\n ? replacement.children\n : null\n}\n\n// Sanitize `children`.\nfunction all(schema, children, node, stack) {\n var results = []\n var index = -1\n var value\n\n if (children) {\n stack.push(node.tagName)\n\n while (++index < children.length) {\n value = one(schema, children[index], stack)\n\n if (value) {\n if ('length' in value) {\n push.apply(results, value)\n } else {\n results.push(value)\n }\n }\n }\n\n stack.pop()\n }\n\n return results\n}\n\n// Sanitize `properties`.\nfunction handleProperties(schema, properties, node, stack) {\n var name = handleTagName(schema, node.tagName, node, stack)\n var reqs = schema.required || /* istanbul ignore next */ {}\n var props = properties || {}\n var allowed = xtend(\n toPropertyValueMap(schema.attributes['*']),\n toPropertyValueMap(\n own.call(schema.attributes, name) ? schema.attributes[name] : []\n )\n )\n var result = {}\n var definition\n var key\n var value\n\n for (key in props) {\n if (own.call(allowed, key)) {\n definition = allowed[key]\n } else if (data(key) && own.call(allowed, 'data*')) {\n definition = allowed['data*']\n } else {\n continue\n }\n\n value = props[key]\n value =\n value && typeof value === 'object' && 'length' in value\n ? handlePropertyValues(schema, value, key, definition)\n : handlePropertyValue(schema, value, key, definition)\n\n if (value != null) {\n result[key] = value\n }\n }\n\n if (own.call(reqs, name)) {\n for (key in reqs[name]) {\n if (!own.call(result, key)) {\n result[key] = reqs[name][key]\n }\n }\n }\n\n return result\n}\n\n// Sanitize a property value which is a list.\nfunction handlePropertyValues(schema, values, prop, definition) {\n var result = []\n var index = -1\n var value\n\n while (++index < values.length) {\n value = handlePropertyValue(schema, values[index], prop, definition)\n\n if (value != null) {\n result.push(value)\n }\n }\n\n return result\n}\n\n// Sanitize a property value.\nfunction handlePropertyValue(schema, value, prop, definition) {\n if (\n (typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string') &&\n handleProtocol(schema, value, prop) &&\n (!definition.length || definition.indexOf(value) > -1)\n ) {\n return schema.clobber.indexOf(prop) < 0\n ? value\n : schema.clobberPrefix + value\n }\n}\n\n// Check whether `value` is a safe URL.\nfunction handleProtocol(schema, value, prop) {\n var url = String(value)\n var colon = url.indexOf(':')\n var questionMark = url.indexOf('?')\n var numberSign = url.indexOf('#')\n var slash = url.indexOf('/')\n var protocols = own.call(schema.protocols, prop)\n ? schema.protocols[prop].concat()\n : []\n var index = -1\n\n if (\n !protocols.length ||\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign)\n ) {\n return true\n }\n\n while (++index < protocols.length) {\n if (\n colon === protocols[index].length &&\n url.slice(0, protocols[index].length) === protocols[index]\n ) {\n return true\n }\n }\n\n return false\n}\n\n// Always return a valid HTML5 doctype.\nfunction handleDoctypeName() {\n return 'html'\n}\n\n// Sanitize `tagName`.\nfunction handleTagName(schema, tagName, node, stack) {\n var name = typeof tagName === 'string' && tagName\n var index = -1\n\n if (!name || name === '*' || schema.tagNames.indexOf(name) < 0) {\n return false\n }\n\n // Some nodes can break out of their context if they don’t have a certain\n // ancestor.\n if (own.call(schema.ancestors, name)) {\n while (++index < schema.ancestors[name].length) {\n if (stack.indexOf(schema.ancestors[name][index]) > -1) {\n return name\n }\n }\n\n return false\n }\n\n return name\n}\n\nfunction handleDoctype(schema) {\n return schema.allowDoctypes ? {name: handleDoctypeName} : null\n}\n\nfunction handleComment(schema) {\n return schema.allowComments ? {value: handleCommentValue} : null\n}\n\n// See <https://html.spec.whatwg.org/multipage/parsing.html#serialising-html-fragments>\nfunction handleCommentValue(schema, value) {\n var result = typeof value === 'string' ? value : ''\n var index = result.indexOf('-->')\n\n return index < 0 ? result : result.slice(0, index)\n}\n\n// Sanitize `value`.\nfunction handleValue(schema, value) {\n return typeof value === 'string' ? value : ''\n}\n\n// Create a map from a list of props or a list of properties and values.\nfunction toPropertyValueMap(values) {\n var result = {}\n var index = -1\n var value\n\n while (++index < values.length) {\n value = values[index]\n\n if (value && typeof value === 'object' && 'length' in value) {\n result[value[0]] = value.slice(1)\n } else {\n result[value] = []\n }\n }\n\n return result\n}\n\n// Allow `value`.\nfunction allow(schema, value) {\n return value\n}\n\n// Check if `prop` is a data property.\nfunction data(prop) {\n return prop.length > 4 && prop.slice(0, 4).toLowerCase() === 'data'\n}\n","'use strict'\n\nvar syntax = require('micromark-extension-gfm')\nvar fromMarkdown = require('mdast-util-gfm/from-markdown')\nvar toMarkdown = require('mdast-util-gfm/to-markdown')\n\nvar warningIssued\n\nmodule.exports = gfm\n\nfunction gfm(options) {\n var data = this.data()\n\n /* istanbul ignore next - old remark. */\n if (\n !warningIssued &&\n ((this.Parser &&\n this.Parser.prototype &&\n this.Parser.prototype.blockTokenizers) ||\n (this.Compiler &&\n this.Compiler.prototype &&\n this.Compiler.prototype.visitors))\n ) {\n warningIssued = true\n console.warn(\n '[remark-gfm] Warning: please upgrade to remark 13 to use this plugin'\n )\n }\n\n add('micromarkExtensions', syntax(options))\n add('fromMarkdownExtensions', fromMarkdown)\n add('toMarkdownExtensions', toMarkdown(options))\n\n function add(field, value) {\n /* istanbul ignore if - other extensions. */\n if (data[field]) data[field].push(value)\n else data[field] = [value]\n }\n}\n","module.exports = require('./syntax')\n","var combine = require('micromark/dist/util/combine-extensions')\nvar autolink = require('micromark-extension-gfm-autolink-literal')\nvar strikethrough = require('micromark-extension-gfm-strikethrough')\nvar table = require('micromark-extension-gfm-table')\nvar tasklist = require('micromark-extension-gfm-task-list-item')\n\nmodule.exports = create\n\nfunction create(options) {\n return combine([autolink, strikethrough(options), table, tasklist])\n}\n","module.exports = require('./syntax')\n","var asciiAlpha = require('micromark/dist/character/ascii-alpha')\nvar asciiAlphanumeric = require('micromark/dist/character/ascii-alphanumeric')\nvar asciiControl = require('micromark/dist/character/ascii-control')\nvar markdownLineEnding = require('micromark/dist/character/markdown-line-ending')\nvar unicodePunctuation = require('micromark/dist/character/unicode-punctuation')\nvar unicodeWhitespace = require('micromark/dist/character/unicode-whitespace')\n\nvar www = {tokenize: tokenizeWww, partial: true}\nvar domain = {tokenize: tokenizeDomain, partial: true}\nvar path = {tokenize: tokenizePath, partial: true}\nvar punctuation = {tokenize: tokenizePunctuation, partial: true}\nvar namedCharacterReference = {\n tokenize: tokenizeNamedCharacterReference,\n partial: true\n}\n\nvar wwwAutolink = {tokenize: tokenizeWwwAutolink, previous: previousWww}\nvar httpAutolink = {tokenize: tokenizeHttpAutolink, previous: previousHttp}\nvar emailAutolink = {tokenize: tokenizeEmailAutolink, previous: previousEmail}\n\nvar text = {}\n\n// Export hooked constructs.\nexports.text = text\n\n// `0`\nvar code = 48\n\n// While the code is smaller than `{`.\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n // Jump from `:` -> `A`\n if (code === 58) code = 65\n // Jump from `[` -> `a`\n else if (code === 91) code = 97\n}\n\n// `+`\ntext[43] = emailAutolink\n// `-`\ntext[45] = emailAutolink\n// `.`\ntext[46] = emailAutolink\n// `_`\ntext[95] = emailAutolink\n// `h`.\ntext[72] = [emailAutolink, httpAutolink]\ntext[104] = [emailAutolink, httpAutolink]\n// `w`.\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n var self = this\n var hasDot\n\n return start\n\n function start(code) {\n /* istanbul ignore next - hooks. */\n if (\n !gfmAtext(code) ||\n !previousEmail(self.previous) ||\n previous(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n\n // `@`\n if (code === 64) {\n effects.consume(code)\n return label\n }\n\n return nok(code)\n }\n\n function label(code) {\n // `.`\n if (code === 46) {\n return effects.check(punctuation, done, dotContinuation)(code)\n }\n\n if (\n // `-`\n code === 45 ||\n // `_`\n code === 95\n ) {\n return effects.check(punctuation, nok, dashOrUnderscoreContinuation)(code)\n }\n\n if (asciiAlphanumeric(code)) {\n effects.consume(code)\n return label\n }\n\n return done(code)\n }\n\n function dotContinuation(code) {\n effects.consume(code)\n hasDot = true\n return label\n }\n\n function dashOrUnderscoreContinuation(code) {\n effects.consume(code)\n return afterDashOrUnderscore\n }\n\n function afterDashOrUnderscore(code) {\n // `.`\n if (code === 46) {\n return effects.check(punctuation, nok, dotContinuation)(code)\n }\n\n return label(code)\n }\n\n function done(code) {\n if (hasDot) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n var self = this\n\n return start\n\n function start(code) {\n /* istanbul ignore next - hooks. */\n if (\n (code !== 87 && code - 32 !== 87) ||\n !previousWww(self.previous) ||\n previous(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww')\n // For `www.` we check instead of attempt, because when it matches, GH\n // treats it as part of a domain (yes, it says a valid domain must come\n // after `www.`, but that’s not how it’s implemented by them).\n return effects.check(\n www,\n effects.attempt(domain, effects.attempt(path, done), nok),\n nok\n )(code)\n }\n\n function done(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\nfunction tokenizeHttpAutolink(effects, ok, nok) {\n var self = this\n\n return start\n\n function start(code) {\n /* istanbul ignore next - hooks. */\n if (\n (code !== 72 && code - 32 !== 72) ||\n !previousHttp(self.previous) ||\n previous(self.events)\n ) {\n return nok(code)\n }\n\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkHttp')\n effects.consume(code)\n return t1\n }\n\n function t1(code) {\n // `t`\n if (code === 84 || code - 32 === 84) {\n effects.consume(code)\n return t2\n }\n\n return nok(code)\n }\n\n function t2(code) {\n // `t`\n if (code === 84 || code - 32 === 84) {\n effects.consume(code)\n return p\n }\n\n return nok(code)\n }\n\n function p(code) {\n // `p`\n if (code === 80 || code - 32 === 80) {\n effects.consume(code)\n return s\n }\n\n return nok(code)\n }\n\n function s(code) {\n // `s`\n if (code === 83 || code - 32 === 83) {\n effects.consume(code)\n return colon\n }\n\n return colon(code)\n }\n\n function colon(code) {\n // `:`\n if (code === 58) {\n effects.consume(code)\n return slash1\n }\n\n return nok(code)\n }\n\n function slash1(code) {\n // `/`\n if (code === 47) {\n effects.consume(code)\n return slash2\n }\n\n return nok(code)\n }\n\n function slash2(code) {\n // `/`\n if (code === 47) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n return asciiControl(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, done), nok)(code)\n }\n\n function done(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\nfunction tokenizeWww(effects, ok, nok) {\n return start\n\n function start(code) {\n // Assume a `w`.\n effects.consume(code)\n return w2\n }\n\n function w2(code) {\n // `w`\n if (code === 87 || code - 32 === 87) {\n effects.consume(code)\n return w3\n }\n\n return nok(code)\n }\n\n function w3(code) {\n // `w`\n if (code === 87 || code - 32 === 87) {\n effects.consume(code)\n return dot\n }\n\n return nok(code)\n }\n\n function dot(code) {\n // `.`\n if (code === 46) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? nok(code) : ok(code)\n }\n}\n\nfunction tokenizeDomain(effects, ok, nok) {\n var hasUnderscoreInLastSegment\n var hasUnderscoreInLastLastSegment\n\n return domain\n\n function domain(code) {\n // `&`\n if (code === 38) {\n return effects.check(\n namedCharacterReference,\n done,\n punctuationContinuation\n )(code)\n }\n\n if (code === 46 /* `.` */ || code === 95 /* `_` */) {\n return effects.check(punctuation, done, punctuationContinuation)(code)\n }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n // so that’s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n if (\n asciiControl(code) ||\n unicodeWhitespace(code) ||\n (code !== 45 /* `-` */ && unicodePunctuation(code))\n ) {\n return done(code)\n }\n\n effects.consume(code)\n return domain\n }\n\n function punctuationContinuation(code) {\n // `.`\n if (code === 46) {\n hasUnderscoreInLastLastSegment = hasUnderscoreInLastSegment\n hasUnderscoreInLastSegment = undefined\n effects.consume(code)\n return domain\n }\n\n // `_`\n if (code === 95) hasUnderscoreInLastSegment = true\n\n effects.consume(code)\n return domain\n }\n\n function done(code) {\n if (!hasUnderscoreInLastLastSegment && !hasUnderscoreInLastSegment) {\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizePath(effects, ok) {\n var balance = 0\n\n return inPath\n\n function inPath(code) {\n // `&`\n if (code === 38) {\n return effects.check(\n namedCharacterReference,\n ok,\n continuedPunctuation\n )(code)\n }\n\n // `(`\n if (code === 40) {\n balance++\n }\n\n // `)`\n if (code === 41) {\n return effects.check(\n punctuation,\n parenAtPathEnd,\n continuedPunctuation\n )(code)\n }\n\n if (pathEnd(code)) {\n return ok(code)\n }\n\n if (trailingPunctuation(code)) {\n return effects.check(punctuation, ok, continuedPunctuation)(code)\n }\n\n effects.consume(code)\n return inPath\n }\n\n function continuedPunctuation(code) {\n effects.consume(code)\n return inPath\n }\n\n function parenAtPathEnd(code) {\n balance--\n return balance < 0 ? ok(code) : continuedPunctuation(code)\n }\n}\n\nfunction tokenizeNamedCharacterReference(effects, ok, nok) {\n return start\n\n function start(code) {\n // Assume an ampersand.\n effects.consume(code)\n return inside\n }\n\n function inside(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return inside\n }\n\n // `;`\n if (code === 59) {\n effects.consume(code)\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n // If the named character reference is followed by the end of the path, it’s\n // not continued punctuation.\n return pathEnd(code) ? ok(code) : nok(code)\n }\n}\n\nfunction tokenizePunctuation(effects, ok, nok) {\n return start\n\n function start(code) {\n // Always a valid trailing punctuation marker.\n effects.consume(code)\n return after\n }\n\n function after(code) {\n // Check the next.\n if (trailingPunctuation(code)) {\n effects.consume(code)\n return after\n }\n\n // If the punctuation marker is followed by the end of the path, it’s not\n // continued punctuation.\n return pathEnd(code) ? ok(code) : nok(code)\n }\n}\n\nfunction trailingPunctuation(code) {\n return (\n // `!`\n code === 33 ||\n // `\"`\n code === 34 ||\n // `'`\n code === 39 ||\n // `)`\n code === 41 ||\n // `*`\n code === 42 ||\n // `,`\n code === 44 ||\n // `.`\n code === 46 ||\n // `:`\n code === 58 ||\n // `;`\n code === 59 ||\n // `<`\n code === 60 ||\n // `?`\n code === 63 ||\n // `_`.\n code === 95 ||\n // `~`\n code === 126\n )\n}\n\nfunction pathEnd(code) {\n return (\n // EOF.\n code === null ||\n // CR, LF, CRLF, HT, VS.\n code < 0 ||\n // Space.\n code === 32 ||\n // `<`\n code === 60\n )\n}\n\nfunction gfmAtext(code) {\n return (\n code === 43 /* `+` */ ||\n code === 45 /* `-` */ ||\n code === 46 /* `.` */ ||\n code === 95 /* `_` */ ||\n asciiAlphanumeric(code)\n )\n}\n\nfunction previousWww(code) {\n return (\n code === null ||\n code < 0 ||\n code === 32 /* ` ` */ ||\n code === 40 /* `(` */ ||\n code === 42 /* `*` */ ||\n code === 95 /* `_` */ ||\n code === 126 /* `~` */\n )\n}\n\nfunction previousHttp(code) {\n return code === null || !asciiAlpha(code)\n}\n\nfunction previousEmail(code) {\n return code !== 47 /* `/` */ && previousHttp(code)\n}\n\nfunction previous(events) {\n var index = events.length\n\n while (index--) {\n if (\n (events[index][1].type === 'labelLink' ||\n events[index][1].type === 'labelImage') &&\n !events[index][1]._balanced\n ) {\n return true\n }\n }\n}\n","module.exports = create\n\nvar classifyCharacter = require('micromark/dist/util/classify-character')\nvar chunkedSplice = require('micromark/dist/util/chunked-splice')\nvar resolveAll = require('micromark/dist/util/resolve-all')\nvar shallow = require('micromark/dist/util/shallow')\n\nfunction create(options) {\n var settings = options || {}\n var single = settings.singleTilde\n var tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n\n if (single === null || single === undefined) {\n single = true\n }\n\n return {text: {126: tokenizer}, insideSpan: {null: tokenizer}}\n\n // Take events and resolve strikethrough.\n function resolveAllStrikethrough(events, context) {\n var index = -1\n var strikethrough\n var text\n var open\n var nextEvents\n\n // Walk through all events.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'strikethroughSequenceTemporary' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'strikethroughSequenceTemporary' &&\n events[open][1]._open &&\n // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset ===\n events[open][1].end.offset - events[open][1].start.offset\n ) {\n events[index][1].type = 'strikethroughSequence'\n events[open][1].type = 'strikethroughSequence'\n\n strikethrough = {\n type: 'strikethrough',\n start: shallow(events[open][1].start),\n end: shallow(events[index][1].end)\n }\n\n text = {\n type: 'strikethroughText',\n start: shallow(events[open][1].end),\n end: shallow(events[index][1].start)\n }\n\n // Opening.\n nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ]\n\n // Between.\n chunkedSplice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n chunkedSplice(nextEvents, nextEvents.length, 0, [\n ['exit', text, context],\n ['enter', events[index][1], context],\n ['exit', events[index][1], context],\n ['exit', strikethrough, context]\n ])\n\n chunkedSplice(events, open - 1, index - open + 3, nextEvents)\n\n index = open + nextEvents.length - 2\n break\n }\n }\n }\n }\n\n return removeRemainingSequences(events)\n }\n\n function removeRemainingSequences(events) {\n var index = -1\n var length = events.length\n\n while (++index < length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n }\n\n function tokenizeStrikethrough(effects, ok, nok) {\n var previous = this.previous\n var events = this.events\n var size = 0\n\n return start\n\n function start(code) {\n if (\n code !== 126 ||\n (previous === 126 &&\n events[events.length - 1][1].type !== 'characterEscape')\n ) {\n return nok(code)\n }\n\n effects.enter('strikethroughSequenceTemporary')\n return more(code)\n }\n\n function more(code) {\n var before = classifyCharacter(previous)\n var token\n var after\n\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code)\n effects.consume(code)\n size++\n return more\n }\n\n if (size < 2 && !single) return nok(code)\n token = effects.exit('strikethroughSequenceTemporary')\n after = classifyCharacter(code)\n token._open = !after || (after === 2 && before)\n token._close = !before || (before === 2 && after)\n return ok(code)\n }\n }\n}\n","module.exports = require('./syntax')\n","exports.flow = {\n null: {tokenize: tokenizeTable, resolve: resolveTable, interruptible: true}\n}\n\nvar createSpace = require('micromark/dist/tokenize/factory-space')\n\nvar setextUnderlineMini = {tokenize: tokenizeSetextUnderlineMini, partial: true}\nvar nextPrefixedOrBlank = {tokenize: tokenizeNextPrefixedOrBlank, partial: true}\n\nfunction resolveTable(events, context) {\n var length = events.length\n var index = -1\n var token\n var inHead\n var inDelimiterRow\n var inRow\n var cell\n var content\n var text\n var contentStart\n var contentEnd\n var cellStart\n\n while (++index < length) {\n token = events[index][1]\n\n if (inRow) {\n if (token.type === 'temporaryTableCellContent') {\n contentStart = contentStart || index\n contentEnd = index\n }\n\n if (\n // Combine separate content parts into one.\n (token.type === 'tableCellDivider' || token.type === 'tableRow') &&\n contentEnd\n ) {\n content = {\n type: 'tableContent',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: content.start,\n end: content.end,\n contentType: 'text'\n }\n\n events.splice(\n contentStart,\n contentEnd - contentStart + 1,\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n )\n index -= contentEnd - contentStart - 3\n length = events.length\n contentStart = undefined\n contentEnd = undefined\n }\n }\n\n if (\n events[index][0] === 'exit' &&\n cellStart &&\n cellStart + 1 < index &&\n (token.type === 'tableCellDivider' ||\n (token.type === 'tableRow' &&\n (cellStart + 3 < index ||\n events[cellStart][1].type !== 'whitespace')))\n ) {\n cell = {\n type: inDelimiterRow\n ? 'tableDelimiter'\n : inHead\n ? 'tableHeader'\n : 'tableData',\n start: events[cellStart][1].start,\n end: events[index][1].end\n }\n events.splice(index + (token.type === 'tableCellDivider' ? 1 : 0), 0, [\n 'exit',\n cell,\n context\n ])\n events.splice(cellStart, 0, ['enter', cell, context])\n index += 2\n length = events.length\n cellStart = index + 1\n }\n\n if (token.type === 'tableRow') {\n inRow = events[index][0] === 'enter'\n\n if (inRow) {\n cellStart = index + 1\n }\n }\n\n if (token.type === 'tableDelimiterRow') {\n inDelimiterRow = events[index][0] === 'enter'\n\n if (inDelimiterRow) {\n cellStart = index + 1\n }\n }\n\n if (token.type === 'tableHead') {\n inHead = events[index][0] === 'enter'\n }\n }\n\n return events\n}\n\nfunction tokenizeTable(effects, ok, nok) {\n var align = []\n var tableHeaderCount = 0\n var seenDelimiter\n var hasDash\n\n return start\n\n function start(code) {\n /* istanbul ignore if - used to be passed in beta micromark versions. */\n if (code === null || code === -5 || code === -4 || code === -3) {\n return nok(code)\n }\n\n effects.enter('table')._align = align\n effects.enter('tableHead')\n effects.enter('tableRow')\n\n // If we start with a pipe, we open a cell marker.\n if (code === 124) {\n return cellDividerHead(code)\n }\n\n tableHeaderCount++\n effects.enter('temporaryTableCellContent')\n // Can’t be space or eols at the start of a construct, so we’re in a cell.\n return inCellContentHead(code)\n }\n\n function cellDividerHead(code) {\n // Always a pipe.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n seenDelimiter = true\n return cellBreakHead\n }\n\n function cellBreakHead(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return atRowEndHead(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceHead\n }\n\n if (seenDelimiter) {\n seenDelimiter = undefined\n tableHeaderCount++\n }\n\n // `|`\n if (code === 124) {\n return cellDividerHead(code)\n }\n\n // Anything else is cell content.\n effects.enter('temporaryTableCellContent')\n return inCellContentHead(code)\n }\n\n function inWhitespaceHead(code) {\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return inWhitespaceHead\n }\n\n effects.exit('whitespace')\n return cellBreakHead(code)\n }\n\n function inCellContentHead(code) {\n // EOF, whitespace, pipe\n if (code === null || code < 0 || code === 32 || code === 124) {\n effects.exit('temporaryTableCellContent')\n return cellBreakHead(code)\n }\n\n effects.consume(code)\n // `\\`\n return code === 92 ? inCellContentEscapeHead : inCellContentHead\n }\n\n function inCellContentEscapeHead(code) {\n // `\\` or `|`\n if (code === 92 || code === 124) {\n effects.consume(code)\n return inCellContentHead\n }\n\n // Anything else.\n return inCellContentHead(code)\n }\n\n function atRowEndHead(code) {\n if (code === null) {\n return nok(code)\n }\n\n effects.exit('tableRow')\n effects.exit('tableHead')\n\n // Always a line ending.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n\n // If a setext heading, exit.\n return effects.check(\n setextUnderlineMini,\n nok,\n // Support an indent before the delimiter row.\n createSpace(effects, rowStartDelimiter, 'linePrefix', 4)\n )\n }\n\n function rowStartDelimiter(code) {\n // If there’s another space, or we’re at the EOL/EOF, exit.\n if (code === null || code < 0 || code === 32) {\n return nok(code)\n }\n\n effects.enter('tableDelimiterRow')\n return atDelimiterRowBreak(code)\n }\n\n function atDelimiterRowBreak(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return rowEndDelimiter(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n // `-`\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n effects.consume(code)\n hasDash = true\n align.push(null)\n return inFillerDelimiter\n }\n\n // `:`\n if (code === 58) {\n effects.enter('tableDelimiterAlignment')\n effects.consume(code)\n effects.exit('tableDelimiterAlignment')\n align.push('left')\n return afterLeftAlignment\n }\n\n // If we start with a pipe, we open a cell marker.\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return atDelimiterRowBreak\n }\n\n return nok(code)\n }\n\n function inWhitespaceDelimiter(code) {\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n effects.exit('whitespace')\n return atDelimiterRowBreak(code)\n }\n\n function inFillerDelimiter(code) {\n // `-`\n if (code === 45) {\n effects.consume(code)\n return inFillerDelimiter\n }\n\n effects.exit('tableDelimiterFiller')\n\n // `:`\n if (code === 58) {\n effects.enter('tableDelimiterAlignment')\n effects.consume(code)\n effects.exit('tableDelimiterAlignment')\n\n align[align.length - 1] =\n align[align.length - 1] === 'left' ? 'center' : 'right'\n\n return afterRightAlignment\n }\n\n return atDelimiterRowBreak(code)\n }\n\n function afterLeftAlignment(code) {\n // `-`\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n effects.consume(code)\n hasDash = true\n return inFillerDelimiter\n }\n\n // Anything else is not ok.\n return nok(code)\n }\n\n function afterRightAlignment(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return rowEndDelimiter(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceDelimiter\n }\n\n // `|`\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return atDelimiterRowBreak\n }\n\n return nok(code)\n }\n\n function rowEndDelimiter(code) {\n effects.exit('tableDelimiterRow')\n\n // Exit if there was no dash at all, or if the header cell count is not the\n // delimiter cell count.\n if (!hasDash || tableHeaderCount !== align.length) {\n return nok(code)\n }\n\n if (code === null) {\n return tableClose(code)\n }\n\n return effects.check(nextPrefixedOrBlank, tableClose, tableContinue)(code)\n }\n\n function tableClose(code) {\n effects.exit('table')\n return ok(code)\n }\n\n function tableContinue(code) {\n // Always a line ending.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n // We checked that it’s not a prefixed or blank line, so we’re certain a\n // body is coming, though it may be indented.\n return createSpace(effects, bodyStart, 'linePrefix', 4)\n }\n\n function bodyStart(code) {\n effects.enter('tableBody')\n return rowStartBody(code)\n }\n\n function rowStartBody(code) {\n effects.enter('tableRow')\n\n // If we start with a pipe, we open a cell marker.\n if (code === 124) {\n return cellDividerBody(code)\n }\n\n effects.enter('temporaryTableCellContent')\n // Can’t be space or eols at the start of a construct, so we’re in a cell.\n return inCellContentBody(code)\n }\n\n function cellDividerBody(code) {\n // Always a pipe.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return cellBreakBody\n }\n\n function cellBreakBody(code) {\n // EOF, CR, LF, CRLF.\n if (code === null || code === -5 || code === -4 || code === -3) {\n return atRowEndBody(code)\n }\n\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.enter('whitespace')\n effects.consume(code)\n return inWhitespaceBody\n }\n\n // `|`\n if (code === 124) {\n return cellDividerBody(code)\n }\n\n // Anything else is cell content.\n effects.enter('temporaryTableCellContent')\n return inCellContentBody(code)\n }\n\n function inWhitespaceBody(code) {\n // HT, VS, SP.\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return inWhitespaceBody\n }\n\n effects.exit('whitespace')\n return cellBreakBody(code)\n }\n\n function inCellContentBody(code) {\n // EOF, whitespace, pipe\n if (code === null || code < 0 || code === 32 || code === 124) {\n effects.exit('temporaryTableCellContent')\n return cellBreakBody(code)\n }\n\n effects.consume(code)\n // `\\`\n return code === 92 ? inCellContentEscapeBody : inCellContentBody\n }\n\n function inCellContentEscapeBody(code) {\n // `\\` or `|`\n if (code === 92 || code === 124) {\n effects.consume(code)\n return inCellContentBody\n }\n\n // Anything else.\n return inCellContentBody(code)\n }\n\n function atRowEndBody(code) {\n effects.exit('tableRow')\n\n if (code === null) {\n return tableBodyClose(code)\n }\n\n return effects.check(\n nextPrefixedOrBlank,\n tableBodyClose,\n tableBodyContinue\n )(code)\n }\n\n function tableBodyClose(code) {\n effects.exit('tableBody')\n return tableClose(code)\n }\n\n function tableBodyContinue(code) {\n // Always a line ending.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n // Support an optional prefix, then start a body row.\n return createSpace(effects, rowStartBody, 'linePrefix', 4)\n }\n}\n\n// Based on micromark, but that won’t work as we’re in a table, and that expects\n// content.\n// <https://github.com/micromark/micromark/blob/main/lib/tokenize/setext-underline.js>\nfunction tokenizeSetextUnderlineMini(effects, ok, nok) {\n return start\n\n function start(code) {\n // `-`\n if (code !== 45) {\n return nok(code)\n }\n\n effects.enter('setextUnderline')\n return sequence(code)\n }\n\n function sequence(code) {\n if (code === 45) {\n effects.consume(code)\n return sequence\n }\n\n return whitespace(code)\n }\n\n function whitespace(code) {\n if (code === -2 || code === -1 || code === 32) {\n effects.consume(code)\n return whitespace\n }\n\n if (code === null || code === -5 || code === -4 || code === -3) {\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeNextPrefixedOrBlank(effects, ok, nok) {\n var size = 0\n\n return start\n\n function start(code) {\n // This is a check, so we don’t care about tokens, but we open a bogus one\n // so we’re valid.\n effects.enter('check')\n // EOL.\n effects.consume(code)\n return whitespace\n }\n\n function whitespace(code) {\n // VS or SP.\n if (code === -1 || code === 32) {\n effects.consume(code)\n size++\n return size === 4 ? ok : whitespace\n }\n\n // EOF or whitespace\n if (code === null || code < 0) {\n return ok(code)\n }\n\n // Anything else.\n return nok(code)\n }\n}\n","module.exports = require('./syntax')\n","var markdownLineEndingOrSpace = require('micromark/dist/character/markdown-line-ending-or-space')\nvar spaceFactory = require('micromark/dist/tokenize/factory-space')\nvar prefixSize = require('micromark/dist/util/prefix-size')\n\nvar tasklistCheck = {tokenize: tokenizeTasklistCheck}\n\nexports.text = {91: tasklistCheck}\n\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n var self = this\n\n return open\n\n function open(code) {\n if (\n // Exit if not `[`.\n code !== 91 ||\n // Exit if there’s stuff before.\n self.previous !== null ||\n // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code)\n }\n\n effects.enter('taskListCheck')\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n return inside\n }\n\n function inside(code) {\n // Tab or space.\n if (code === -2 || code === 32) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n\n // Upper- and lower `x`.\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked')\n effects.consume(code)\n effects.exit('taskListCheckValueChecked')\n return close\n }\n\n return nok(code)\n }\n\n function close(code) {\n // `]`\n if (code === 93) {\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n effects.exit('taskListCheck')\n return effects.check({tokenize: spaceThenNonSpace}, ok, nok)\n }\n\n return nok(code)\n }\n}\n\nfunction spaceThenNonSpace(effects, ok, nok) {\n var self = this\n\n return spaceFactory(effects, after, 'whitespace')\n\n function after(code) {\n return prefixSize(self.events, 'whitespace') &&\n code !== null &&\n !markdownLineEndingOrSpace(code)\n ? ok(code)\n : nok(code)\n }\n}\n","var autolinkLiteral = require('mdast-util-gfm-autolink-literal/from-markdown')\nvar strikethrough = require('mdast-util-gfm-strikethrough/from-markdown')\nvar table = require('mdast-util-gfm-table/from-markdown')\nvar taskListItem = require('mdast-util-gfm-task-list-item/from-markdown')\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = configure([\n autolinkLiteral,\n strikethrough,\n table,\n taskListItem\n])\n\nfunction configure(extensions) {\n var config = {transforms: [], canContainEols: []}\n var length = extensions.length\n var index = -1\n\n while (++index < length) {\n extension(config, extensions[index])\n }\n\n return config\n}\n\nfunction extension(config, extension) {\n var key\n var left\n var right\n\n for (key in extension) {\n left = own.call(config, key) ? config[key] : (config[key] = {})\n right = extension[key]\n\n if (key === 'canContainEols' || key === 'transforms') {\n config[key] = [].concat(left, right)\n } else {\n Object.assign(left, right)\n }\n }\n}\n","var ccount = require('ccount')\nvar findAndReplace = require('mdast-util-find-and-replace')\nvar unicodePunctuation = require('micromark/dist/character/unicode-punctuation')\nvar unicodeWhitespace = require('micromark/dist/character/unicode-whitespace')\n\nexports.transforms = [transformGfmAutolinkLiterals]\nexports.enter = {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n}\nexports.exit = {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n}\n\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n this.stack[this.stack.length - 1].url = 'http://' + this.sliceSerialize(token)\n}\n\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/i, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\nfunction findUrl($0, protocol, domain, path, match) {\n var prefix = ''\n var parts\n var result\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n result = [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\nfunction findEmail($0, atext, label, match) {\n // Not an expected previous character.\n if (!previous(match, true) || /[_-]$/.test(label)) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\nfunction isCorrectDomain(domain) {\n var parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\nfunction splitUrl(url) {\n var trail = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n var closingParenIndex\n var openingParens\n var closingParens\n\n if (trail) {\n url = url.slice(0, trail.index)\n trail = trail[0]\n closingParenIndex = trail.indexOf(')')\n openingParens = ccount(url, '(')\n closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n }\n\n return [url, trail]\n}\n\nfunction previous(match, email) {\n var code = match.input.charCodeAt(match.index - 1)\n return (\n (code !== code || unicodeWhitespace(code) || unicodePunctuation(code)) &&\n (!email || code !== 47)\n )\n}\n","'use strict'\n\nmodule.exports = ccount\n\nfunction ccount(source, character) {\n var value = String(source)\n var count = 0\n var index\n\n if (typeof character !== 'string') {\n throw new Error('Expected character')\n }\n\n index = value.indexOf(character)\n\n while (index !== -1) {\n count++\n index = value.indexOf(character, index + character.length)\n }\n\n return count\n}\n","'use strict'\n\nmodule.exports = findAndReplace\n\nvar visit = require('unist-util-visit-parents')\nvar convert = require('unist-util-is/convert')\nvar escape = require('escape-string-regexp')\n\nvar splice = [].splice\n\nfunction findAndReplace(tree, find, replace, options) {\n var settings\n var schema\n\n if (typeof find === 'string' || (find && typeof find.exec === 'function')) {\n schema = [[find, replace]]\n } else {\n schema = find\n options = replace\n }\n\n settings = options || {}\n\n search(tree, settings, handlerFactory(toPairs(schema)))\n\n return tree\n\n function handlerFactory(pairs) {\n var pair = pairs[0]\n\n return handler\n\n function handler(node, parent) {\n var find = pair[0]\n var replace = pair[1]\n var nodes = []\n var start = 0\n var index = parent.children.indexOf(node)\n var position\n var match\n var subhandler\n var value\n\n find.lastIndex = 0\n\n match = find.exec(node.value)\n\n while (match) {\n position = match.index\n value = replace.apply(\n null,\n [].concat(match, {index: match.index, input: match.input})\n )\n\n if (value !== false) {\n if (start !== position) {\n nodes.push({type: 'text', value: node.value.slice(start, position)})\n }\n\n if (typeof value === 'string' && value.length > 0) {\n value = {type: 'text', value: value}\n }\n\n if (value) {\n nodes = [].concat(nodes, value)\n }\n\n start = position + match[0].length\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (position === undefined) {\n nodes = [node]\n index--\n } else {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n nodes.unshift(index, 1)\n splice.apply(parent.children, nodes)\n }\n\n if (pairs.length > 1) {\n subhandler = handlerFactory(pairs.slice(1))\n position = -1\n\n while (++position < nodes.length) {\n node = nodes[position]\n\n if (node.type === 'text') {\n subhandler(node, parent)\n } else {\n search(node, settings, subhandler)\n }\n }\n }\n\n return index + nodes.length + 1\n }\n }\n}\n\nfunction search(tree, settings, handler) {\n var ignored = convert(settings.ignore || [])\n var result = []\n\n visit(tree, 'text', visitor)\n\n return result\n\n function visitor(node, parents) {\n var index = -1\n var parent\n var grandparent\n\n while (++index < parents.length) {\n parent = parents[index]\n\n if (\n ignored(\n parent,\n grandparent ? grandparent.children.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n return handler(node, grandparent)\n }\n}\n\nfunction toPairs(schema) {\n var result = []\n var key\n var index\n\n if (typeof schema !== 'object') {\n throw new Error('Expected array or object as schema')\n }\n\n if ('length' in schema) {\n index = -1\n\n while (++index < schema.length) {\n result.push([\n toExpression(schema[index][0]),\n toFunction(schema[index][1])\n ])\n }\n } else {\n for (key in schema) {\n result.push([toExpression(key), toFunction(schema[key])])\n }\n }\n\n return result\n}\n\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\nfunction toFunction(replace) {\n return typeof replace === 'function' ? replace : returner\n\n function returner() {\n return replace\n }\n}\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","exports.canContainEols = ['delete']\nexports.enter = {strikethrough: enterStrikethrough}\nexports.exit = {strikethrough: exitStrikethrough}\n\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n","exports.enter = {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n}\nexports.exit = {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n}\n\nfunction enterTable(token) {\n this.enter({type: 'table', align: token._align, children: []}, token)\n this.setData('inTable', true)\n}\n\nfunction exitTable(token) {\n this.exit(token)\n this.setData('inTable')\n}\n\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\nfunction exit(token) {\n this.exit(token)\n}\n\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\nfunction exitCodeText(token) {\n var value = this.resume()\n\n if (this.getData('inTable')) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n this.stack[this.stack.length - 1].value = value\n this.exit(token)\n}\n\nfunction replace($0, $1) {\n // Pipes work, backslashes don’t (but can’t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n","exports.exit = {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n}\n\nfunction exitCheck(token) {\n // We’re always in a paragraph, in a list item.\n this.stack[this.stack.length - 2].checked =\n token.type === 'taskListCheckValueChecked'\n}\n\nfunction exitParagraphWithTaskListItem(token) {\n var parent = this.stack[this.stack.length - 2]\n var node = this.stack[this.stack.length - 1]\n var siblings = parent.children\n var head = node.children[0]\n var index = -1\n var firstParaghraph\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean' &&\n head &&\n head.type === 'text'\n ) {\n while (++index < siblings.length) {\n if (siblings[index].type === 'paragraph') {\n firstParaghraph = siblings[index]\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n\n this.exit(token)\n}\n","var autolinkLiteral = require('mdast-util-gfm-autolink-literal/to-markdown')\nvar strikethrough = require('mdast-util-gfm-strikethrough/to-markdown')\nvar table = require('mdast-util-gfm-table/to-markdown')\nvar taskListItem = require('mdast-util-gfm-task-list-item/to-markdown')\nvar configure = require('mdast-util-to-markdown/lib/configure')\n\nmodule.exports = toMarkdown\n\nfunction toMarkdown(options) {\n var config = configure(\n {handlers: {}, join: [], unsafe: [], options: {}},\n {\n extensions: [autolinkLiteral, strikethrough, table(options), taskListItem]\n }\n )\n\n return Object.assign(config.options, {\n handlers: config.handlers,\n join: config.join,\n unsafe: config.unsafe\n })\n}\n","var inConstruct = 'phrasing'\nvar notInConstruct = ['autolink', 'link', 'image', 'label']\n\nexports.unsafe = [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct: inConstruct,\n notInConstruct: notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct: inConstruct,\n notInConstruct: notInConstruct\n },\n {\n character: ':',\n before: '[ps]',\n after: '\\\\/',\n inConstruct: inConstruct,\n notInConstruct: notInConstruct\n }\n]\n","var phrasing = require('mdast-util-to-markdown/lib/util/container-phrasing')\n\nexports.unsafe = [{character: '~', inConstruct: 'phrasing'}]\nexports.handlers = {delete: handleDelete}\n\nhandleDelete.peek = peekDelete\n\nfunction handleDelete(node, _, context) {\n var exit = context.enter('emphasis')\n var value = phrasing(node, context, {before: '~', after: '~'})\n exit()\n return '~~' + value + '~~'\n}\n\nfunction peekDelete() {\n return '~'\n}\n","var phrasing = require('mdast-util-to-markdown/lib/util/container-phrasing')\nvar defaultInlineCode = require('mdast-util-to-markdown/lib/handle/inline-code')\nvar markdownTable = require('markdown-table')\n\nmodule.exports = toMarkdown\n\nfunction toMarkdown(options) {\n var settings = options || {}\n var padding = settings.tableCellPadding\n var alignDelimiters = settings.tablePipeAlign\n var stringLength = settings.stringLength\n var around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n table: handleTable,\n tableRow: handleTableRow,\n tableCell: handleTableCell,\n inlineCode: inlineCodeWithTable\n }\n }\n\n function handleTable(node, _, context) {\n return serializeData(handleTableAsData(node, context), node.align)\n }\n\n // This function isn’t really used normally, because we handle rows at the\n // table level.\n // But, if someone passes in a table row, this ensures we make somewhat sense.\n function handleTableRow(node, _, context) {\n var row = handleTableRowAsData(node, context)\n // `markdown-table` will always add an align row\n var value = serializeData([row])\n return value.slice(0, value.indexOf('\\n'))\n }\n\n function handleTableCell(node, _, context) {\n var exit = context.enter('tableCell')\n var value = phrasing(node, context, {before: around, after: around})\n exit()\n return value\n }\n\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align: align,\n alignDelimiters: alignDelimiters,\n padding: padding,\n stringLength: stringLength\n })\n }\n\n function handleTableAsData(node, context) {\n var children = node.children\n var index = -1\n var length = children.length\n var result = []\n var subexit = context.enter('table')\n\n while (++index < length) {\n result[index] = handleTableRowAsData(children[index], context)\n }\n\n subexit()\n\n return result\n }\n\n function handleTableRowAsData(node, context) {\n var children = node.children\n var index = -1\n var length = children.length\n var result = []\n var subexit = context.enter('tableRow')\n\n while (++index < length) {\n result[index] = handleTableCell(children[index], node, context)\n }\n\n subexit()\n\n return result\n }\n\n function inlineCodeWithTable(node, parent, context) {\n var value = defaultInlineCode(node, parent, context)\n\n if (context.stack.indexOf('tableCell') !== -1) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n","module.exports = inlineCode\ninlineCode.peek = inlineCodePeek\n\nvar patternCompile = require('../util/pattern-compile')\n\nfunction inlineCode(node, parent, context) {\n var value = node.value || ''\n var sequence = '`'\n var index = -1\n var pattern\n var expression\n var match\n var position\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don’t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n (/[ \\r\\n`]/.test(value.charAt(0)) ||\n /[ \\r\\n`]/.test(value.charAt(value.length - 1)))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can’t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < context.unsafe.length) {\n pattern = context.unsafe[index]\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n expression = patternCompile(pattern)\n\n while ((match = expression.exec(value))) {\n position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\nfunction inlineCodePeek() {\n return '`'\n}\n","module.exports = patternCompile\n\nfunction patternCompile(pattern) {\n var before\n var after\n\n if (!pattern._compiled) {\n before = pattern.before ? '(?:' + pattern.before + ')' : ''\n after = pattern.after ? '(?:' + pattern.after + ')' : ''\n\n if (pattern.atBreak) {\n before = '[\\\\r\\\\n][\\\\t ]*' + before\n }\n\n pattern._compiled = new RegExp(\n (before ? '(' + before + ')' : '') +\n (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n pattern.character +\n (after || ''),\n 'g'\n )\n }\n\n return pattern._compiled\n}\n","'use strict'\n\nvar repeat = require('repeat-string')\n\nmodule.exports = markdownTable\n\nvar trailingWhitespace = / +$/\n\n// Characters.\nvar space = ' '\nvar lineFeed = '\\n'\nvar dash = '-'\nvar colon = ':'\nvar verticalBar = '|'\n\nvar x = 0\nvar C = 67\nvar L = 76\nvar R = 82\nvar c = 99\nvar l = 108\nvar r = 114\n\n// Create a table from a matrix of strings.\nfunction markdownTable(table, options) {\n var settings = options || {}\n var padding = settings.padding !== false\n var start = settings.delimiterStart !== false\n var end = settings.delimiterEnd !== false\n var align = (settings.align || []).concat()\n var alignDelimiters = settings.alignDelimiters !== false\n var alignments = []\n var stringLength = settings.stringLength || defaultStringLength\n var rowIndex = -1\n var rowLength = table.length\n var cellMatrix = []\n var sizeMatrix = []\n var row = []\n var sizes = []\n var longestCellByColumn = []\n var mostCellsPerRow = 0\n var cells\n var columnIndex\n var columnLength\n var largest\n var size\n var cell\n var lines\n var line\n var before\n var after\n var code\n\n // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < rowLength) {\n cells = table[rowIndex]\n columnIndex = -1\n columnLength = cells.length\n row = []\n sizes = []\n\n if (columnLength > mostCellsPerRow) {\n mostCellsPerRow = columnLength\n }\n\n while (++columnIndex < columnLength) {\n cell = serialize(cells[columnIndex])\n\n if (alignDelimiters === true) {\n size = stringLength(cell)\n sizes[columnIndex] = size\n\n largest = longestCellByColumn[columnIndex]\n\n if (largest === undefined || size > largest) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n columnIndex = -1\n columnLength = mostCellsPerRow\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < columnLength) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n code = toAlignment(align)\n\n while (++columnIndex < columnLength) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n columnLength = mostCellsPerRow\n row = []\n sizes = []\n\n while (++columnIndex < columnLength) {\n code = alignments[columnIndex]\n before = ''\n after = ''\n\n if (code === l) {\n before = colon\n } else if (code === r) {\n after = colon\n } else if (code === c) {\n before = colon\n after = colon\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n size = alignDelimiters\n ? Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n : 1\n\n cell = before + repeat(dash, size) + after\n\n if (alignDelimiters === true) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n rowLength = cellMatrix.length\n lines = []\n\n while (++rowIndex < rowLength) {\n row = cellMatrix[rowIndex]\n sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n columnLength = mostCellsPerRow\n line = []\n\n while (++columnIndex < columnLength) {\n cell = row[columnIndex] || ''\n before = ''\n after = ''\n\n if (alignDelimiters === true) {\n size = longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n code = alignments[columnIndex]\n\n if (code === r) {\n before = repeat(space, size)\n } else if (code === c) {\n if (size % 2 === 0) {\n before = repeat(space, size / 2)\n after = before\n } else {\n before = repeat(space, size / 2 + 0.5)\n after = repeat(space, size / 2 - 0.5)\n }\n } else {\n after = repeat(space, size)\n }\n }\n\n if (start === true && columnIndex === 0) {\n line.push(verticalBar)\n }\n\n if (\n padding === true &&\n // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(alignDelimiters === false && cell === '') &&\n (start === true || columnIndex !== 0)\n ) {\n line.push(space)\n }\n\n if (alignDelimiters === true) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (alignDelimiters === true) {\n line.push(after)\n }\n\n if (padding === true) {\n line.push(space)\n }\n\n if (end === true || columnIndex !== columnLength - 1) {\n line.push(verticalBar)\n }\n }\n\n line = line.join('')\n\n if (end === false) {\n line = line.replace(trailingWhitespace, '')\n }\n\n lines.push(line)\n }\n\n return lines.join(lineFeed)\n}\n\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\nfunction defaultStringLength(value) {\n return value.length\n}\n\nfunction toAlignment(value) {\n var code = typeof value === 'string' ? value.charCodeAt(0) : x\n\n return code === L || code === l\n ? l\n : code === R || code === r\n ? r\n : code === C || code === c\n ? c\n : x\n}\n","var defaultListItem = require('mdast-util-to-markdown/lib/handle/list-item')\n\nexports.unsafe = [{atBreak: true, character: '-', after: '[:|-]'}]\n\nexports.handlers = {\n listItem: listItemWithTaskListItem\n}\n\nfunction listItemWithTaskListItem(node, parent, context) {\n var value = defaultListItem(node, parent, context)\n var head = node.children[0]\n\n if (typeof node.checked === 'boolean' && head && head.type === 'paragraph') {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n function check($0) {\n return $0 + '[' + (node.checked ? 'x' : ' ') + '] '\n }\n}\n","module.exports = listItem\n\nvar repeat = require('repeat-string')\nvar checkBullet = require('../util/check-bullet')\nvar checkListItemIndent = require('../util/check-list-item-indent')\nvar flow = require('../util/container-flow')\nvar indentLines = require('../util/indent-lines')\n\nfunction listItem(node, parent, context) {\n var bullet = checkBullet(context)\n var listItemIndent = checkListItemIndent(context)\n var size\n var value\n var exit\n\n if (parent && parent.ordered) {\n bullet =\n (parent.start > -1 ? parent.start : 1) +\n (context.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n '.'\n }\n\n size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' && ((parent && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n exit = context.enter('listItem')\n value = indentLines(flow(node, context), map)\n exit()\n\n return value\n\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : repeat(' ', size)) + line\n }\n\n return (blank ? bullet : bullet + repeat(' ', size - bullet.length)) + line\n }\n}\n","module.exports = checkBullet\n\nfunction checkBullet(context) {\n var marker = context.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n","module.exports = checkListItemIndent\n\nfunction checkListItemIndent(context) {\n var style = context.options.listItemIndent || 'tab'\n\n if (style === 1 || style === '1') {\n return 'one'\n }\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n","module.exports = flow\n\nvar repeat = require('repeat-string')\n\nfunction flow(parent, context) {\n var children = parent.children || []\n var results = []\n var index = -1\n var child\n\n while (++index < children.length) {\n child = children[index]\n\n results.push(\n context.handle(child, parent, context, {before: '\\n', after: '\\n'})\n )\n\n if (index + 1 < children.length) {\n results.push(between(child, children[index + 1]))\n }\n }\n\n return results.join('')\n\n function between(left, right) {\n var index = -1\n var result\n\n while (++index < context.join.length) {\n result = context.join[index](left, right, parent, context)\n\n if (result === true || result === 1) {\n break\n }\n\n if (typeof result === 'number') {\n return repeat('\\n', 1 + Number(result))\n }\n\n if (result === false) {\n return '\\n\\n<!---->\\n\\n'\n }\n }\n\n return '\\n\\n'\n }\n}\n","module.exports = indentLines\n\nvar eol = /\\r?\\n|\\r/g\n\nfunction indentLines(value, map) {\n var result = []\n var start = 0\n var line = 0\n var match\n\n while ((match = eol.exec(value))) {\n one(value.slice(start, match.index))\n result.push(match[0])\n start = match.index + match[0].length\n line++\n }\n\n one(value.slice(start))\n\n return result.join('')\n\n function one(value) {\n result.push(map(value, line, !value))\n }\n}\n","module.exports = configure\n\nfunction configure(base, extension) {\n var index = -1\n var key\n\n // First do subextensions.\n if (extension.extensions) {\n while (++index < extension.extensions.length) {\n configure(base, extension.extensions[index])\n }\n }\n\n for (key in extension) {\n if (key === 'extensions') {\n // Empty.\n } else if (key === 'unsafe' || key === 'join') {\n base[key] = base[key].concat(extension[key] || [])\n } else if (key === 'handlers') {\n base[key] = Object.assign(base[key], extension[key] || {})\n } else {\n base.options[key] = extension[key]\n }\n }\n\n return base\n}\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","// Original: https://github.com/sdras/night-owl-vscode-theme\n// Converted automatically using ./tools/themeFromVsCode\nvar theme = {\n plain: {\n color: \"#403f53\",\n backgroundColor: \"#FBFBFB\"\n },\n styles: [{\n types: [\"changed\"],\n style: {\n color: \"rgb(162, 191, 252)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"deleted\"],\n style: {\n color: \"rgba(239, 83, 80, 0.56)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"inserted\", \"attr-name\"],\n style: {\n color: \"rgb(72, 118, 214)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"comment\"],\n style: {\n color: \"rgb(152, 159, 177)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"string\", \"builtin\", \"char\", \"constant\", \"url\"],\n style: {\n color: \"rgb(72, 118, 214)\"\n }\n }, {\n types: [\"variable\"],\n style: {\n color: \"rgb(201, 103, 101)\"\n }\n }, {\n types: [\"number\"],\n style: {\n color: \"rgb(170, 9, 130)\"\n }\n }, {\n // This was manually added after the auto-generation\n // so that punctuations are not italicised\n types: [\"punctuation\"],\n style: {\n color: \"rgb(153, 76, 195)\"\n }\n }, {\n types: [\"function\", \"selector\", \"doctype\"],\n style: {\n color: \"rgb(153, 76, 195)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"class-name\"],\n style: {\n color: \"rgb(17, 17, 17)\"\n }\n }, {\n types: [\"tag\"],\n style: {\n color: \"rgb(153, 76, 195)\"\n }\n }, {\n types: [\"operator\", \"property\", \"keyword\", \"namespace\"],\n style: {\n color: \"rgb(12, 150, 155)\"\n }\n }, {\n types: [\"boolean\"],\n style: {\n color: \"rgb(188, 84, 84)\"\n }\n }]\n};\n\nexport default theme;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","/** @license React v17.0.2\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),m=require(\"react\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar q=60106,r=60107,u=60108,z=60114,B=60109,aa=60110,ba=60112,D=60113,ca=60120,da=60115,ea=60116,fa=60121,ha=60117,ia=60119,ja=60129,ka=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;q=E(\"react.portal\");r=E(\"react.fragment\");u=E(\"react.strict_mode\");z=E(\"react.profiler\");B=E(\"react.provider\");aa=E(\"react.context\");ba=E(\"react.forward_ref\");D=E(\"react.suspense\");ca=E(\"react.suspense_list\");da=E(\"react.memo\");ea=E(\"react.lazy\");fa=E(\"react.block\");ha=E(\"react.fundamental\");ia=E(\"react.scope\");ja=E(\"react.debug_trace_mode\");ka=E(\"react.legacy_hidden\")}\nfunction F(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case r:return\"Fragment\";case q:return\"Portal\";case z:return\"Profiler\";case u:return\"StrictMode\";case D:return\"Suspense\";case ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case aa:return(a.displayName||\"Context\")+\".Consumer\";case B:return(a._context.displayName||\"Context\")+\".Provider\";case ba:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||\n(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case da:return F(a.type);case fa:return F(a._render);case ea:b=a._payload;a=a._init;try{return F(a(b))}catch(c){}}return null}var la=m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,ma={};function I(a,b){for(var c=a._threadCount|0;c<=b;c++)a[c]=a._currentValue2,a._threadCount=c+1}function na(a,b,c,d){if(d&&(d=a.contextType,\"object\"===typeof d&&null!==d))return I(d,c),d[c];if(a=a.contextTypes){c={};for(var f in a)c[f]=b[f];b=c}else b=ma;return b}\nfor(var J=new Uint16Array(16),K=0;15>K;K++)J[K]=K+1;J[15]=0;var oa=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,pa=Object.prototype.hasOwnProperty,qa={},ra={};\nfunction sa(a){if(pa.call(ra,a))return!0;if(pa.call(qa,a))return!1;if(oa.test(a))return ra[a]=!0;qa[a]=!0;return!1}function ta(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction ua(a,b,c,d){if(null===b||\"undefined\"===typeof b||ta(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function M(a,b,c,d,f,h,t){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=h;this.removeEmptyString=t}var N={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){N[a]=new M(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];N[b]=new M(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){N[a]=new M(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){N[a]=new M(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){N[a]=new M(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){N[a]=new M(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){N[a]=new M(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){N[a]=new M(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){N[a]=new M(a,5,!1,a.toLowerCase(),null,!1,!1)});var va=/[\\-:]([a-z])/g;function wa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(va,\nwa);N[b]=new M(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!1,!1)});\nN.xlinkHref=new M(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!0,!0)});var xa=/[\"'&<>]/;\nfunction O(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=xa.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\"&quot;\";break;case 38:b=\"&amp;\";break;case 39:b=\"&#x27;\";break;case 60:b=\"&lt;\";break;case 62:b=\"&gt;\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}\nfunction ya(a,b){var c=N.hasOwnProperty(a)?N[a]:null;var d;if(d=\"style\"!==a)d=null!==c?0===c.type:!(2<a.length)||\"o\"!==a[0]&&\"O\"!==a[0]||\"n\"!==a[1]&&\"N\"!==a[1]?!1:!0;if(d||ua(a,b,c,!1))return\"\";if(null!==c){a=c.attributeName;d=c.type;if(3===d||4===d&&!0===b)return a+'=\"\"';c.sanitizeURL&&(b=\"\"+b);return a+'=\"'+(O(b)+'\"')}return sa(a)?a+'=\"'+(O(b)+'\"'):\"\"}function za(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar Aa=\"function\"===typeof Object.is?Object.is:za,P=null,Q=null,R=null,S=!1,T=!1,U=null,V=0;function W(){if(null===P)throw Error(p(321));return P}function Ba(){if(0<V)throw Error(p(312));return{memoizedState:null,queue:null,next:null}}function Ca(){null===R?null===Q?(S=!1,Q=R=Ba()):(S=!0,R=Q):null===R.next?(S=!1,R=R.next=Ba()):(S=!0,R=R.next);return R}function Da(a,b,c,d){for(;T;)T=!1,V+=1,R=null,c=a(b,d);Ea();return c}function Ea(){P=null;T=!1;Q=null;V=0;R=U=null}\nfunction Fa(a,b){return\"function\"===typeof b?b(a):b}function Ga(a,b,c){P=W();R=Ca();if(S){var d=R.queue;b=d.dispatch;if(null!==U&&(c=U.get(d),void 0!==c)){U.delete(d);d=R.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);R.memoizedState=d;return[d,b]}return[R.memoizedState,b]}a=a===Fa?\"function\"===typeof b?b():b:void 0!==c?c(b):b;R.memoizedState=a;a=R.queue={last:null,dispatch:null};a=a.dispatch=Ha.bind(null,P,a);return[R.memoizedState,a]}\nfunction Ia(a,b){P=W();R=Ca();b=void 0===b?null:b;if(null!==R){var c=R.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!Aa(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();R.memoizedState=[a,b];return a}function Ha(a,b,c){if(!(25>V))throw Error(p(301));if(a===P)if(T=!0,a={action:c,next:null},null===U&&(U=new Map),c=U.get(b),void 0===c)U.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function Ja(){}\nvar X=null,Ka={readContext:function(a){var b=X.threadID;I(a,b);return a[b]},useContext:function(a){W();var b=X.threadID;I(a,b);return a[b]},useMemo:Ia,useReducer:Ga,useRef:function(a){P=W();R=Ca();var b=R.memoizedState;return null===b?(a={current:a},R.memoizedState=a):b},useState:function(a){return Ga(Fa,a)},useLayoutEffect:function(){},useCallback:function(a,b){return Ia(function(){return a},b)},useImperativeHandle:Ja,useEffect:Ja,useDebugValue:Ja,useDeferredValue:function(a){W();return a},useTransition:function(){W();\nreturn[function(a){a()},!1]},useOpaqueIdentifier:function(){return(X.identifierPrefix||\"\")+\"R:\"+(X.uniqueID++).toString(36)},useMutableSource:function(a,b){W();return b(a._source)}},La={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};function Ma(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nvar Na={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Oa=l({menuitem:!0},Na),Y={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,\ngridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Pa=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(Y).forEach(function(a){Pa.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Y[b]=Y[a]})});\nvar Qa=/([A-Z])/g,Ra=/^ms-/,Z=m.Children.toArray,Sa=la.ReactCurrentDispatcher,Ta={listing:!0,pre:!0,textarea:!0},Ua=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,Va={},Wa={};function Xa(a){if(void 0===a||null===a)return a;var b=\"\";m.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Ya=Object.prototype.hasOwnProperty,Za={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function $a(a,b){if(void 0===a)throw Error(p(152,F(b)||\"Component\"));}\nfunction ab(a,b,c){function d(d,h){var e=h.prototype&&h.prototype.isReactComponent,f=na(h,b,c,e),t=[],g=!1,n={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===t)return null},enqueueReplaceState:function(a,c){g=!0;t=[c]},enqueueSetState:function(a,c){if(null===t)return null;t.push(c)}};if(e){if(e=new h(d.props,f,n),\"function\"===typeof h.getDerivedStateFromProps){var k=h.getDerivedStateFromProps.call(null,d.props,e.state);null!=k&&(e.state=l({},e.state,k))}}else if(P={},e=h(d.props,\nf,n),e=Da(h,d.props,e,f),null==e||null==e.render){a=e;$a(a,h);return}e.props=d.props;e.context=f;e.updater=n;n=e.state;void 0===n&&(e.state=n=null);if(\"function\"===typeof e.UNSAFE_componentWillMount||\"function\"===typeof e.componentWillMount)if(\"function\"===typeof e.componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.UNSAFE_componentWillMount(),t.length){n=t;var v=\ng;t=null;g=!1;if(v&&1===n.length)e.state=n[0];else{k=v?n[0]:e.state;var H=!0;for(v=v?1:0;v<n.length;v++){var x=n[v];x=\"function\"===typeof x?x.call(e,k,d.props,f):x;null!=x&&(H?(H=!1,k=l({},k,x)):l(k,x))}e.state=k}}else t=null;a=e.render();$a(a,h);if(\"function\"===typeof e.getChildContext&&(d=h.childContextTypes,\"object\"===typeof d)){var y=e.getChildContext();for(var A in y)if(!(A in d))throw Error(p(108,F(h)||\"Unknown\",A));}y&&(b=l({},b,y))}for(;m.isValidElement(a);){var f=a,h=f.type;if(\"function\"!==\ntypeof h)break;d(f,h)}return{child:a,context:b}}\nvar bb=function(){function a(a,b,f){m.isValidElement(a)?a.type!==r?a=[a]:(a=a.props.children,a=m.isValidElement(a)?[a]:Z(a)):a=Z(a);a={type:null,domNamespace:La.html,children:a,childIndex:0,context:ma,footer:\"\"};var c=J[0];if(0===c){var d=J;c=d.length;var g=2*c;if(!(65536>=g))throw Error(p(304));var e=new Uint16Array(g);e.set(d);J=e;J[0]=c+1;for(d=c;d<g-1;d++)J[d]=d+1;J[g-1]=0}else J[0]=J[c];this.threadID=c;this.stack=[a];this.exhausted=!1;this.currentSelectValue=null;this.previousWasTextNode=!1;\nthis.makeStaticMarkup=b;this.suspenseDepth=0;this.contextIndex=-1;this.contextStack=[];this.contextValueStack=[];this.uniqueID=0;this.identifierPrefix=f&&f.identifierPrefix||\"\"}var b=a.prototype;b.destroy=function(){if(!this.exhausted){this.exhausted=!0;this.clearProviders();var a=this.threadID;J[a]=J[0];J[0]=a}};b.pushProvider=function(a){var b=++this.contextIndex,c=a.type._context,h=this.threadID;I(c,h);var t=c[h];this.contextStack[b]=c;this.contextValueStack[b]=t;c[h]=a.props.value};b.popProvider=\nfunction(){var a=this.contextIndex,b=this.contextStack[a],f=this.contextValueStack[a];this.contextStack[a]=null;this.contextValueStack[a]=null;this.contextIndex--;b[this.threadID]=f};b.clearProviders=function(){for(var a=this.contextIndex;0<=a;a--)this.contextStack[a][this.threadID]=this.contextValueStack[a]};b.read=function(a){if(this.exhausted)return null;var b=X;X=this;var c=Sa.current;Sa.current=Ka;try{for(var h=[\"\"],t=!1;h[0].length<a;){if(0===this.stack.length){this.exhausted=!0;var g=this.threadID;\nJ[g]=J[0];J[0]=g;break}var e=this.stack[this.stack.length-1];if(t||e.childIndex>=e.children.length){var L=e.footer;\"\"!==L&&(this.previousWasTextNode=!1);this.stack.pop();if(\"select\"===e.type)this.currentSelectValue=null;else if(null!=e.type&&null!=e.type.type&&e.type.type.$$typeof===B)this.popProvider(e.type);else if(e.type===D){this.suspenseDepth--;var G=h.pop();if(t){t=!1;var C=e.fallbackFrame;if(!C)throw Error(p(303));this.stack.push(C);h[this.suspenseDepth]+=\"\\x3c!--$!--\\x3e\";continue}else h[this.suspenseDepth]+=\nG}h[this.suspenseDepth]+=L}else{var n=e.children[e.childIndex++],k=\"\";try{k+=this.render(n,e.context,e.domNamespace)}catch(v){if(null!=v&&\"function\"===typeof v.then)throw Error(p(294));throw v;}finally{}h.length<=this.suspenseDepth&&h.push(\"\");h[this.suspenseDepth]+=k}}return h[0]}finally{Sa.current=c,X=b,Ea()}};b.render=function(a,b,f){if(\"string\"===typeof a||\"number\"===typeof a){f=\"\"+a;if(\"\"===f)return\"\";if(this.makeStaticMarkup)return O(f);if(this.previousWasTextNode)return\"\\x3c!-- --\\x3e\"+O(f);\nthis.previousWasTextNode=!0;return O(f)}b=ab(a,b,this.threadID);a=b.child;b=b.context;if(null===a||!1===a)return\"\";if(!m.isValidElement(a)){if(null!=a&&null!=a.$$typeof){f=a.$$typeof;if(f===q)throw Error(p(257));throw Error(p(258,f.toString()));}a=Z(a);this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"});return\"\"}var c=a.type;if(\"string\"===typeof c)return this.renderDOM(a,b,f);switch(c){case ka:case ja:case u:case z:case ca:case r:return a=Z(a.props.children),this.stack.push({type:null,\ndomNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\"\";case D:throw Error(p(294));case ia:throw Error(p(343));}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case ba:P={};var d=c.render(a.props,a.ref);d=Da(c.render,a.props,d,a.ref);d=Z(d);this.stack.push({type:null,domNamespace:f,children:d,childIndex:0,context:b,footer:\"\"});return\"\";case da:return a=[m.createElement(c.type,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\n\"\";case B:return c=Z(a.props.children),f={type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"},this.pushProvider(a),this.stack.push(f),\"\";case aa:c=a.type;d=a.props;var g=this.threadID;I(c,g);c=Z(d.children(c[g]));this.stack.push({type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"});return\"\";case ha:throw Error(p(338));case ea:return c=a.type,d=c._init,c=d(c._payload),a=[m.createElement(c,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,\ncontext:b,footer:\"\"}),\"\"}throw Error(p(130,null==c?c:typeof c,\"\"));};b.renderDOM=function(a,b,f){var c=a.type.toLowerCase();f===La.html&&Ma(c);if(!Va.hasOwnProperty(c)){if(!Ua.test(c))throw Error(p(65,c));Va[c]=!0}var d=a.props;if(\"input\"===c)d=l({type:void 0},d,{defaultChecked:void 0,defaultValue:void 0,value:null!=d.value?d.value:d.defaultValue,checked:null!=d.checked?d.checked:d.defaultChecked});else if(\"textarea\"===c){var g=d.value;if(null==g){g=d.defaultValue;var e=d.children;if(null!=e){if(null!=\ng)throw Error(p(92));if(Array.isArray(e)){if(!(1>=e.length))throw Error(p(93));e=e[0]}g=\"\"+e}null==g&&(g=\"\")}d=l({},d,{value:void 0,children:\"\"+g})}else if(\"select\"===c)this.currentSelectValue=null!=d.value?d.value:d.defaultValue,d=l({},d,{value:void 0});else if(\"option\"===c){e=this.currentSelectValue;var L=Xa(d.children);if(null!=e){var G=null!=d.value?d.value+\"\":L;g=!1;if(Array.isArray(e))for(var C=0;C<e.length;C++){if(\"\"+e[C]===G){g=!0;break}}else g=\"\"+e===G;d=l({selected:void 0,children:void 0},\nd,{selected:g,children:L})}}if(g=d){if(Oa[c]&&(null!=g.children||null!=g.dangerouslySetInnerHTML))throw Error(p(137,c));if(null!=g.dangerouslySetInnerHTML){if(null!=g.children)throw Error(p(60));if(!(\"object\"===typeof g.dangerouslySetInnerHTML&&\"__html\"in g.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=g.style&&\"object\"!==typeof g.style)throw Error(p(62));}g=d;e=this.makeStaticMarkup;L=1===this.stack.length;G=\"<\"+a.type;b:if(-1===c.indexOf(\"-\"))C=\"string\"===typeof g.is;else switch(c){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":C=\n!1;break b;default:C=!0}for(w in g)if(Ya.call(g,w)){var n=g[w];if(null!=n){if(\"style\"===w){var k=void 0,v=\"\",H=\"\";for(k in n)if(n.hasOwnProperty(k)){var x=0===k.indexOf(\"--\"),y=n[k];if(null!=y){if(x)var A=k;else if(A=k,Wa.hasOwnProperty(A))A=Wa[A];else{var cb=A.replace(Qa,\"-$1\").toLowerCase().replace(Ra,\"-ms-\");A=Wa[A]=cb}v+=H+A+\":\";H=k;x=null==y||\"boolean\"===typeof y||\"\"===y?\"\":x||\"number\"!==typeof y||0===y||Y.hasOwnProperty(H)&&Y[H]?(\"\"+y).trim():y+\"px\";v+=x;H=\";\"}}n=v||null}k=null;C?Za.hasOwnProperty(w)||\n(k=w,k=sa(k)&&null!=n?k+'=\"'+(O(n)+'\"'):\"\"):k=ya(w,n);k&&(G+=\" \"+k)}}e||L&&(G+=' data-reactroot=\"\"');var w=G;g=\"\";Na.hasOwnProperty(c)?w+=\"/>\":(w+=\">\",g=\"</\"+a.type+\">\");a:{e=d.dangerouslySetInnerHTML;if(null!=e){if(null!=e.__html){e=e.__html;break a}}else if(e=d.children,\"string\"===typeof e||\"number\"===typeof e){e=O(e);break a}e=null}null!=e?(d=[],Ta.hasOwnProperty(c)&&\"\\n\"===e.charAt(0)&&(w+=\"\\n\"),w+=e):d=Z(d.children);a=a.type;f=null==f||\"http://www.w3.org/1999/xhtml\"===f?Ma(a):\"http://www.w3.org/2000/svg\"===\nf&&\"foreignObject\"===a?\"http://www.w3.org/1999/xhtml\":f;this.stack.push({domNamespace:f,type:c,children:d,childIndex:0,context:b,footer:g});this.previousWasTextNode=!1;return w};return a}();exports.renderToNodeStream=function(){throw Error(p(207));};exports.renderToStaticMarkup=function(a,b){a=new bb(a,!0,b);try{return a.read(Infinity)}finally{a.destroy()}};exports.renderToStaticNodeStream=function(){throw Error(p(208));};exports.renderToString=function(a,b){a=new bb(a,!1,b);try{return a.read(Infinity)}finally{a.destroy()}};\nexports.version=\"17.0.2\";\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nmodule.exports = {\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: require('./internal/constants').SEMVER_SPEC_VERSION,\n SemVer: require('./classes/semver'),\n compareIdentifiers: require('./internal/identifiers').compareIdentifiers,\n rcompareIdentifiers: require('./internal/identifiers').rcompareIdentifiers,\n parse: require('./functions/parse'),\n valid: require('./functions/valid'),\n clean: require('./functions/clean'),\n inc: require('./functions/inc'),\n diff: require('./functions/diff'),\n major: require('./functions/major'),\n minor: require('./functions/minor'),\n patch: require('./functions/patch'),\n prerelease: require('./functions/prerelease'),\n compare: require('./functions/compare'),\n rcompare: require('./functions/rcompare'),\n compareLoose: require('./functions/compare-loose'),\n compareBuild: require('./functions/compare-build'),\n sort: require('./functions/sort'),\n rsort: require('./functions/rsort'),\n gt: require('./functions/gt'),\n lt: require('./functions/lt'),\n eq: require('./functions/eq'),\n neq: require('./functions/neq'),\n gte: require('./functions/gte'),\n lte: require('./functions/lte'),\n cmp: require('./functions/cmp'),\n coerce: require('./functions/coerce'),\n Comparator: require('./classes/comparator'),\n Range: require('./classes/range'),\n satisfies: require('./functions/satisfies'),\n toComparators: require('./ranges/to-comparators'),\n maxSatisfying: require('./ranges/max-satisfying'),\n minSatisfying: require('./ranges/min-satisfying'),\n minVersion: require('./ranges/min-version'),\n validRange: require('./ranges/valid'),\n outside: require('./ranges/outside'),\n gtr: require('./ranges/gtr'),\n ltr: require('./ranges/ltr'),\n intersects: require('./ranges/intersects'),\n simplifyRange: require('./ranges/simplify'),\n subset: require('./ranges/subset'),\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier) => {\n if (typeof (options) === 'string') {\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(version, options).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const parse = require('./parse')\nconst eq = require('./eq')\n\nconst diff = (version1, version2) => {\n if (eq(version1, version2)) {\n return null\n } else {\n const v1 = parse(version1)\n const v2 = parse(version2)\n const hasPre = v1.prerelease.length || v2.prerelease.length\n const prefix = hasPre ? 'pre' : ''\n const defaultResult = hasPre ? 'prerelease' : ''\n for (const key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\nmodule.exports = diff\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst {re, t} = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null)\n return null\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin)))\n minver = setMin\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\nmodule.exports = intersects\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let min = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!min)\n min = version\n } else {\n if (prev) {\n set.push([min, prev])\n }\n prev = null\n min = null\n }\n }\n if (min)\n set.push([min, null])\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max)\n ranges.push(min)\n else if (!max && min === v[0])\n ranges.push('*')\n else if (!max)\n ranges.push(`>=${min}`)\n else if (min === v[0])\n ranges.push(`<=${max}`)\n else\n ranges.push(`${min} - ${max}`)\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom)\n return true\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub)\n continue OUTER\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull)\n return false\n }\n return true\n}\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom)\n return true\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY)\n return true\n else if (options.includePrerelease)\n sub = [ new Comparator('>=0.0.0-0') ]\n else\n sub = [ new Comparator('>=0.0.0') ]\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease)\n return true\n else\n dom = [ new Comparator('>=0.0.0') ]\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=')\n gt = higherGT(gt, c, options)\n else if (c.operator === '<' || c.operator === '<=')\n lt = lowerLT(lt, c, options)\n else\n eqSet.add(c.semver)\n }\n\n if (eqSet.size > 1)\n return null\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0)\n return null\n else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<='))\n return null\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options))\n return null\n\n if (lt && !satisfies(eq, String(lt), options))\n return null\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options))\n return false\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt)\n return false\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options))\n return false\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt)\n return false\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options))\n return false\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0)\n return false\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0)\n return false\n\n if (lt && hasDomGT && !gt && gtltComp !== 0)\n return false\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre)\n return false\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a)\n return b\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a)\n return b\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n *\n * @typedef {string} Type\n * @typedef {Object<string, unknown>} Props\n *\n * @typedef {null|undefined|Type|Props|TestFunctionAnything|Array.<Type|Props|TestFunctionAnything>} Test\n */\n\n/**\n * Check if a node passes a test\n *\n * @callback TestFunctionAnything\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean|void}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} X\n * @callback TestFunctionPredicate\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is X}\n */\n\n/**\n * @callback AssertAnything\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} Y\n * @callback AssertPredicate\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is Y}\n */\n\nexport const is =\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @type {(\n * (<T extends Node>(node: unknown, test: T['type']|Partial<T>|TestFunctionPredicate<T>|Array.<T['type']|Partial<T>|TestFunctionPredicate<T>>, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => node is T) &\n * ((node?: unknown, test?: Test, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @param {unknown} [node] Node to check\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return node.type === test}`.\n * When `function` checks if function passed the node is true.\n * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * When `array`, checks any one of the subtests pass.\n * @param {number|null|undefined} [index] Position of `node` in `parent`\n * @param {Parent|null|undefined} [parent] Parent of `node`\n * @param {unknown} [context] Context object to invoke `test` with\n * @returns {boolean} Whether test passed and `node` is a `Node` (object with `type` set to non-empty `string`).\n */\n // eslint-disable-next-line max-params\n function is(node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\nexport const convert =\n /**\n * @type {(\n * (<T extends Node>(test: T['type']|Partial<T>|TestFunctionPredicate<T>) => AssertPredicate<T>) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * Generate an assertion from a check.\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return node.type === test}`.\n * When `function` checks if function passed the node is true.\n * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * When `array`, checks any one of the subtests pass.\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n/**\n * @param {Array.<Type|Props|TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array.<AssertAnything>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {unknown[]} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Utility to assert each property in `test` is represented in `node`, and each\n * values are strictly equal.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n *\n * @param {Type} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {Array.<unknown>} parameters\n * @returns {boolean}\n */\n function assertion(...parameters) {\n // @ts-expect-error: spreading is fine.\n return Boolean(check.call(this, ...parameters))\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('./complex-types').Action} Action\n * @typedef {import('./complex-types').Index} Index\n * @typedef {import('./complex-types').ActionTuple} ActionTuple\n * @typedef {import('./complex-types').VisitorResult} VisitorResult\n * @typedef {import('./complex-types').Visitor} Visitor\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal\n */\nexport const CONTINUE = true\n/**\n * Do not traverse this node’s children\n */\nexport const SKIP = 'skip'\n/**\n * Stop traversing immediately\n */\nexport const EXIT = false\n\n/**\n * Visit children of tree which pass a test\n *\n * @param tree Abstract syntax tree to walk\n * @param test Test node, optional\n * @param visitor Function to run for each node\n * @param reverse Visit the tree in reverse order, defaults to false\n */\nexport const visitParents =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: import('./complex-types').BuildVisitor<Tree, Check>, reverse?: boolean) => void) &\n * (<Tree extends Node>(tree: Tree, visitor: import('./complex-types').BuildVisitor<Tree>, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {import('./complex-types').Visitor<Node>} visitor\n * @param {boolean} [reverse]\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, null, [])()\n\n /**\n * @param {Node} node\n * @param {number?} index\n * @param {Array.<Parent>} parents\n */\n function factory(node, index, parents) {\n /** @type {Object.<string, unknown>} */\n // @ts-expect-error: hush\n const value = typeof node === 'object' && node !== null ? node : {}\n /** @type {string|undefined} */\n let name\n\n if (typeof value.type === 'string') {\n name =\n typeof value.tagName === 'string'\n ? value.tagName\n : typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' +\n color(value.type + (name ? '<' + name + '>' : '')) +\n ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array.<Parent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n }\n )\n\n/**\n * @param {VisitorResult} value\n * @returns {ActionTuple}\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n * @typedef {import('./complex-types').Visitor} Visitor\n */\n\nimport {visitParents, CONTINUE, SKIP, EXIT} from 'unist-util-visit-parents'\n\nexport {CONTINUE, SKIP, EXIT}\n\n/**\n * Visit children of tree which pass a test\n *\n * @param tree Abstract syntax tree to walk\n * @param test Test, optional\n * @param visitor Function to run for each node\n * @param reverse Fisit the tree in reverse, defaults to false\n */\nexport const visit =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: import('./complex-types').BuildVisitor<Tree, Check>, reverse?: boolean) => void) &\n * (<Tree extends Node>(tree: Tree, visitor: import('./complex-types').BuildVisitor<Tree>, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {import('./complex-types').Visitor} visitor\n * @param {boolean} [reverse]\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array.<Parent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n","/**\n * @typedef Emoticon\n * Info on an emoticon.\n * @property {string} name\n * Name of an emoticon (preferred name from `wooorm/gemoji`).\n * @property {string} emoji\n * Corresponding emoji.\n * @property {Array<string>} tags\n * Associated tags (from `wooorm/gemoji`).\n * @property {string} description\n * Associated description (from `wooorm/gemoji`).\n * @property {Array<string>} emoticons\n * ASCII emoticons.\n */\n\n/**\n * List of emoticons.\n *\n * @type {Array<Emoticon>}\n */\nexport const emoticon = [\n {\n name: 'angry',\n emoji: '😠',\n tags: ['mad', 'annoyed'],\n description: 'angry face',\n emoticons: ['>:(', '>:[', '>:-(', '>:-[', '>=(', '>=[', '>=-(', '>=-[']\n },\n {\n name: 'blush',\n emoji: '😊',\n tags: ['proud'],\n description: 'smiling face with smiling eyes',\n emoticons: [\n ':\")',\n ':\"]',\n ':\"D',\n ':-\")',\n ':-\"]',\n ':-\"D',\n '=\")',\n '=\"]',\n '=\"D',\n '=-\")',\n '=-\"]',\n '=-\"D'\n ]\n },\n {\n name: 'broken_heart',\n emoji: '💔',\n tags: [],\n description: 'broken heart',\n emoticons: ['<\\\\3', '</3']\n },\n {\n name: 'confused',\n emoji: '😕',\n tags: [],\n description: 'confused face',\n emoticons: [':/', ':\\\\', ':-/', ':-\\\\', '=/', '=\\\\', '=-/', '=-\\\\']\n },\n {\n name: 'cry',\n emoji: '😢',\n tags: ['sad', 'tear'],\n description: 'crying face',\n emoticons: [\n ':,(',\n ':,[',\n ':,|',\n ':,-(',\n ':,-[',\n ':,-|',\n \":'(\",\n \":'[\",\n \":'|\",\n \":'-(\",\n \":'-[\",\n \":'-|\",\n '=,(',\n '=,[',\n '=,|',\n '=,-(',\n '=,-[',\n '=,-|',\n \"='(\",\n \"='[\",\n \"='|\",\n \"='-(\",\n \"='-[\",\n \"='-|\"\n ]\n },\n {\n name: 'frowning',\n emoji: '😦',\n tags: [],\n description: 'frowning face with open mouth',\n emoticons: [':(', ':[', ':-(', ':-[', '=(', '=[', '=-(', '=-[']\n },\n {\n name: 'heart',\n emoji: '❤️',\n tags: ['love'],\n description: 'red heart',\n emoticons: ['<3']\n },\n {\n name: 'imp',\n emoji: '👿',\n tags: ['angry', 'devil', 'evil', 'horns'],\n description: 'angry face with horns',\n emoticons: [']:(', ']:[', ']:-(', ']:-[', ']=(', ']=[', ']=-(', ']=-[']\n },\n {\n name: 'innocent',\n emoji: '😇',\n tags: ['angel'],\n description: 'smiling face with halo',\n emoticons: [\n 'o:)',\n 'o:]',\n 'o:D',\n 'o:-)',\n 'o:-]',\n 'o:-D',\n 'o=)',\n 'o=]',\n 'o=D',\n 'o=-)',\n 'o=-]',\n 'o=-D',\n 'O:)',\n 'O:]',\n 'O:D',\n 'O:-)',\n 'O:-]',\n 'O:-D',\n 'O=)',\n 'O=]',\n 'O=D',\n 'O=-)',\n 'O=-]',\n 'O=-D',\n '0:)',\n '0:]',\n '0:D',\n '0:-)',\n '0:-]',\n '0:-D',\n '0=)',\n '0=]',\n '0=D',\n '0=-)',\n '0=-]',\n '0=-D'\n ]\n },\n {\n name: 'joy',\n emoji: '😂',\n tags: ['tears'],\n description: 'face with tears of joy',\n emoticons: [\n ':,)',\n ':,]',\n ':,D',\n ':,-)',\n ':,-]',\n ':,-D',\n \":')\",\n \":']\",\n \":'D\",\n \":'-)\",\n \":'-]\",\n \":'-D\",\n '=,)',\n '=,]',\n '=,D',\n '=,-)',\n '=,-]',\n '=,-D',\n \"=')\",\n \"=']\",\n \"='D\",\n \"='-)\",\n \"='-]\",\n \"='-D\"\n ]\n },\n {\n name: 'kissing',\n emoji: '😗',\n tags: [],\n description: 'kissing face',\n emoticons: [':*', ':-*', '=*', '=-*']\n },\n {\n name: 'laughing',\n emoji: '😆',\n tags: ['happy', 'haha'],\n description: 'grinning squinting face',\n emoticons: [\n 'x)',\n 'x]',\n 'xD',\n 'x-)',\n 'x-]',\n 'x-D',\n 'X)',\n 'X]',\n 'X-)',\n 'X-]',\n 'X-D'\n ]\n },\n {\n name: 'man',\n emoji: '👨',\n tags: ['mustache', 'father', 'dad'],\n description: 'man',\n emoticons: [':3', ':-3', '=3', '=-3', ';3', ';-3', 'x3', 'x-3', 'X3', 'X-3']\n },\n {\n name: 'neutral_face',\n emoji: '😐',\n tags: ['meh'],\n description: 'neutral face',\n emoticons: [':|', ':-|', '=|', '=-|']\n },\n {\n name: 'no_mouth',\n emoji: '😶',\n tags: ['mute', 'silence'],\n description: 'face without mouth',\n emoticons: [':-']\n },\n {\n name: 'open_mouth',\n emoji: '😮',\n tags: ['surprise', 'impressed', 'wow'],\n description: 'face with open mouth',\n emoticons: [\n ':o',\n ':O',\n ':0',\n ':-o',\n ':-O',\n ':-0',\n '=o',\n '=O',\n '=0',\n '=-o',\n '=-O',\n '=-0'\n ]\n },\n {\n name: 'rage',\n emoji: '😡',\n tags: ['angry'],\n description: 'pouting face',\n emoticons: [':@', ':-@', '=@', '=-@']\n },\n {\n name: 'smile',\n emoji: '😄',\n tags: ['happy', 'joy', 'laugh', 'pleased'],\n description: 'grinning face with smiling eyes',\n emoticons: [':D', ':-D', '=D', '=-D']\n },\n {\n name: 'smiley',\n emoji: '😃',\n tags: ['happy', 'joy', 'haha'],\n description: 'grinning face with big eyes',\n emoticons: [':)', ':]', ':-)', ':-]', '=)', '=]', '=-)', '=-]']\n },\n {\n name: 'smiling_imp',\n emoji: '😈',\n tags: ['devil', 'evil', 'horns'],\n description: 'smiling face with horns',\n emoticons: [\n ']:)',\n ']:]',\n ']:D',\n ']:-)',\n ']:-]',\n ']:-D',\n ']=)',\n ']=]',\n ']=D',\n ']=-)',\n ']=-]',\n ']=-D'\n ]\n },\n {\n name: 'sob',\n emoji: '😭',\n tags: ['sad', 'cry', 'bawling'],\n description: 'loudly crying face',\n emoticons: [\n \":,'(\",\n \":,'[\",\n \":,'-(\",\n \":,'-[\",\n \":',(\",\n \":',[\",\n \":',-(\",\n \":',-[\",\n \"=,'(\",\n \"=,'[\",\n \"=,'-(\",\n \"=,'-[\",\n \"=',(\",\n \"=',[\",\n \"=',-(\",\n \"=',-[\"\n ]\n },\n {\n name: 'stuck_out_tongue',\n emoji: '😛',\n tags: [],\n description: 'face with tongue',\n emoticons: [\n ':p',\n ':P',\n ':d',\n ':-p',\n ':-P',\n ':-d',\n '=p',\n '=P',\n '=d',\n '=-p',\n '=-P',\n '=-d'\n ]\n },\n {\n name: 'stuck_out_tongue_closed_eyes',\n emoji: '😝',\n tags: ['prank'],\n description: 'squinting face with tongue',\n emoticons: ['xP', 'x-p', 'x-P', 'x-d', 'Xp', 'Xd', 'X-p', 'X-P', 'X-d']\n },\n {\n name: 'stuck_out_tongue_winking_eye',\n emoji: '😜',\n tags: ['prank', 'silly'],\n description: 'winking face with tongue',\n emoticons: [';p', ';P', ';d', ';-p', ';-P', ';-d']\n },\n {\n name: 'sunglasses',\n emoji: '😎',\n tags: ['cool'],\n description: 'smiling face with sunglasses',\n emoticons: [\n '8)',\n '8]',\n '8D',\n '8-)',\n '8-]',\n '8-D',\n 'B)',\n 'B]',\n 'B-)',\n 'B-]',\n 'B-D'\n ]\n },\n {\n name: 'sweat',\n emoji: '😓',\n tags: [],\n description: 'downcast face with sweat',\n emoticons: [\n ',:(',\n ',:[',\n ',:-(',\n ',:-[',\n ',=(',\n ',=[',\n ',=-(',\n ',=-[',\n \"':(\",\n \"':[\",\n \"':-(\",\n \"':-[\",\n \"'=(\",\n \"'=[\",\n \"'=-(\",\n \"'=-[\"\n ]\n },\n {\n name: 'sweat_smile',\n emoji: '😅',\n tags: ['hot'],\n description: 'grinning face with sweat',\n emoticons: [\n ',:)',\n ',:]',\n ',:D',\n ',:-)',\n ',:-]',\n ',:-D',\n ',=)',\n ',=]',\n ',=D',\n ',=-)',\n ',=-]',\n ',=-D',\n \"':)\",\n \"':]\",\n \"':D\",\n \"':-)\",\n \"':-]\",\n \"':-D\",\n \"'=)\",\n \"'=]\",\n \"'=D\",\n \"'=-)\",\n \"'=-]\",\n \"'=-D\"\n ]\n },\n {\n name: 'unamused',\n emoji: '😒',\n tags: ['meh'],\n description: 'unamused face',\n emoticons: [\n ':$',\n ':s',\n ':z',\n ':S',\n ':Z',\n ':-$',\n ':-s',\n ':-z',\n ':-S',\n ':-Z',\n '=$',\n '=s',\n '=z',\n '=S',\n '=Z',\n '=-$',\n '=-s',\n '=-z',\n '=-S',\n '=-Z'\n ]\n },\n {\n name: 'wink',\n emoji: '😉',\n tags: ['flirt'],\n description: 'winking face',\n emoticons: [';)', ';]', ';D', ';-)', ';-]', ';-D']\n }\n]\n","import { visit } from 'unist-util-visit';\nimport emoji from 'node-emoji';\nimport { emoticon } from 'emoticon';\n\nconst RE_EMOJI = /:\\+1:|:-1:|:[\\w-]+:/g;\nconst RE_SHORT = /[$@|*'\",;.=:\\-)([\\]\\\\/<>038BOopPsSdDxXzZ]{2,5}/g;\nconst RE_UNDERSTORE = /_/g;\n\nconst DEFAULT_SETTINGS = {\n padSpaceAfter: false,\n emoticon: false,\n};\n\nexport default function plugin(options) {\n const settings = Object.assign({}, DEFAULT_SETTINGS, options);\n const pad = !!settings.padSpaceAfter;\n const emoticonEnable = !!settings.emoticon;\n\n function getEmojiByShortCode(match) {\n // find emoji by shortcode - full match or with-out last char as it could be from text e.g. :-),\n const iconFull = emoticon.find(e => e.emoticons.includes(match)); // full match\n const iconPart = emoticon.find(e => e.emoticons.includes(match.slice(0, -1))); // second search pattern\n const trimmedChar = iconPart ? match.slice(-1) : '';\n const addPad = pad ? ' ' : '';\n let icon = iconFull ? iconFull.emoji + addPad : iconPart && iconPart.emoji + addPad + trimmedChar;\n return icon || match;\n }\n\n function getEmoji(match) {\n let got = emoji.get(match);\n\n // Workaround for #19\n if (match.endsWith('_man:') && got === match) {\n // :foo_bar_man: -> man-foo-bar\n const old = 'man-' + match.slice(1, -5).replace(RE_UNDERSTORE, '-');\n const s = emoji.get(old);\n if (s !== old) {\n got = s;\n }\n } else if (match.endsWith('_woman:') && got === match) {\n // :foo_bar_woman: -> woman-foo-bar\n const old = 'woman-' + match.slice(1, -7).replace(RE_UNDERSTORE, '-');\n const s = emoji.get(old);\n if (s !== old) {\n got = s;\n }\n }\n\n if (pad && got !== match) {\n return got + ' ';\n }\n return got;\n }\n\n function transformer(tree) {\n visit(tree, 'text', function (node) {\n node.value = node.value.replace(RE_EMOJI, getEmoji);\n if (emoticonEnable) {\n node.value = node.value.replace(RE_SHORT, getEmojiByShortCode);\n }\n });\n }\n\n return transformer;\n}\n","/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\n/**\n * prism-react-renderer:\n * This file has been modified to remove:\n * - globals and window dependency\n * - worker support\n * - highlightAll and other element dependent methods\n * - _.hooks helpers\n * - UMD/node-specific hacks\n * It has also been run through prettier\n */\nvar Prism = function () {\n var uniqueId = 0;\n var _ = {\n util: {\n encode: function (tokens) {\n if (tokens instanceof Token) {\n return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n } else if (_.util.type(tokens) === \"Array\") {\n return tokens.map(_.util.encode);\n } else {\n return tokens.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/\\u00a0/g, \" \");\n }\n },\n type: function (o) {\n return Object.prototype.toString.call(o).match(/\\[object (\\w+)\\]/)[1];\n },\n objId: function (obj) {\n if (!obj[\"__id\"]) {\n Object.defineProperty(obj, \"__id\", {\n value: ++uniqueId\n });\n }\n\n return obj[\"__id\"];\n },\n // Deep clone a language definition (e.g. to extend it)\n clone: function (o, visited) {\n var type = _.util.type(o);\n\n visited = visited || {};\n\n switch (type) {\n case \"Object\":\n if (visited[_.util.objId(o)]) {\n return visited[_.util.objId(o)];\n }\n\n var clone = {};\n visited[_.util.objId(o)] = clone;\n\n for (var key in o) {\n if (o.hasOwnProperty(key)) {\n clone[key] = _.util.clone(o[key], visited);\n }\n }\n\n return clone;\n\n case \"Array\":\n if (visited[_.util.objId(o)]) {\n return visited[_.util.objId(o)];\n }\n\n var clone = [];\n visited[_.util.objId(o)] = clone;\n o.forEach(function (v, i) {\n clone[i] = _.util.clone(v, visited);\n });\n return clone;\n }\n\n return o;\n }\n },\n languages: {\n extend: function (id, redef) {\n var lang = _.util.clone(_.languages[id]);\n\n for (var key in redef) {\n lang[key] = redef[key];\n }\n\n return lang;\n },\n\n /**\n * Insert a token before another token in a language literal\n * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n * we cannot just provide an object, we need anobject and a key.\n * @param inside The key (or language id) of the parent\n * @param before The key to insert before. If not provided, the function appends instead.\n * @param insert Object with the key/value pairs to insert\n * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n */\n insertBefore: function (inside, before, insert, root) {\n root = root || _.languages;\n var grammar = root[inside];\n\n if (arguments.length == 2) {\n insert = arguments[1];\n\n for (var newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n grammar[newToken] = insert[newToken];\n }\n }\n\n return grammar;\n }\n\n var ret = {};\n\n for (var token in grammar) {\n if (grammar.hasOwnProperty(token)) {\n if (token == before) {\n for (var newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n ret[newToken] = insert[newToken];\n }\n }\n }\n\n ret[token] = grammar[token];\n }\n } // Update references in other language definitions\n\n\n _.languages.DFS(_.languages, function (key, value) {\n if (value === root[inside] && key != inside) {\n this[key] = ret;\n }\n });\n\n return root[inside] = ret;\n },\n // Traverse a language definition with Depth First Search\n DFS: function (o, callback, type, visited) {\n visited = visited || {};\n\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n callback.call(o, i, o[i], type || i);\n\n if (_.util.type(o[i]) === \"Object\" && !visited[_.util.objId(o[i])]) {\n visited[_.util.objId(o[i])] = true;\n\n _.languages.DFS(o[i], callback, null, visited);\n } else if (_.util.type(o[i]) === \"Array\" && !visited[_.util.objId(o[i])]) {\n visited[_.util.objId(o[i])] = true;\n\n _.languages.DFS(o[i], callback, i, visited);\n }\n }\n }\n }\n },\n plugins: {},\n highlight: function (text, grammar, language) {\n var env = {\n code: text,\n grammar: grammar,\n language: language\n };\n\n _.hooks.run(\"before-tokenize\", env);\n\n env.tokens = _.tokenize(env.code, env.grammar);\n\n _.hooks.run(\"after-tokenize\", env);\n\n return Token.stringify(_.util.encode(env.tokens), env.language);\n },\n matchGrammar: function (text, strarr, grammar, index, startPos, oneshot, target) {\n var Token = _.Token;\n\n for (var token in grammar) {\n if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n continue;\n }\n\n if (token == target) {\n return;\n }\n\n var patterns = grammar[token];\n patterns = _.util.type(patterns) === \"Array\" ? patterns : [patterns];\n\n for (var j = 0; j < patterns.length; ++j) {\n var pattern = patterns[j],\n inside = pattern.inside,\n lookbehind = !!pattern.lookbehind,\n greedy = !!pattern.greedy,\n lookbehindLength = 0,\n alias = pattern.alias;\n\n if (greedy && !pattern.pattern.global) {\n // Without the global flag, lastIndex won't work\n var flags = pattern.pattern.toString().match(/[imuy]*$/)[0];\n pattern.pattern = RegExp(pattern.pattern.source, flags + \"g\");\n }\n\n pattern = pattern.pattern || pattern; // Don’t cache length as it changes during the loop\n\n for (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) {\n var str = strarr[i];\n\n if (strarr.length > text.length) {\n // Something went terribly wrong, ABORT, ABORT!\n return;\n }\n\n if (str instanceof Token) {\n continue;\n }\n\n if (greedy && i != strarr.length - 1) {\n pattern.lastIndex = pos;\n var match = pattern.exec(text);\n\n if (!match) {\n break;\n }\n\n var from = match.index + (lookbehind ? match[1].length : 0),\n to = match.index + match[0].length,\n k = i,\n p = pos;\n\n for (var len = strarr.length; k < len && (p < to || !strarr[k].type && !strarr[k - 1].greedy); ++k) {\n p += strarr[k].length; // Move the index i to the element in strarr that is closest to from\n\n if (from >= p) {\n ++i;\n pos = p;\n }\n } // If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\n\n if (strarr[i] instanceof Token) {\n continue;\n } // Number of tokens to delete and replace with the new match\n\n\n delNum = k - i;\n str = text.slice(pos, p);\n match.index -= pos;\n } else {\n pattern.lastIndex = 0;\n var match = pattern.exec(str),\n delNum = 1;\n }\n\n if (!match) {\n if (oneshot) {\n break;\n }\n\n continue;\n }\n\n if (lookbehind) {\n lookbehindLength = match[1] ? match[1].length : 0;\n }\n\n var from = match.index + lookbehindLength,\n match = match[0].slice(lookbehindLength),\n to = from + match.length,\n before = str.slice(0, from),\n after = str.slice(to);\n var args = [i, delNum];\n\n if (before) {\n ++i;\n pos += before.length;\n args.push(before);\n }\n\n var wrapped = new Token(token, inside ? _.tokenize(match, inside) : match, alias, match, greedy);\n args.push(wrapped);\n\n if (after) {\n args.push(after);\n }\n\n Array.prototype.splice.apply(strarr, args);\n\n if (delNum != 1) {\n _.matchGrammar(text, strarr, grammar, i, pos, true, token);\n }\n\n if (oneshot) {\n break;\n }\n }\n }\n }\n },\n hooks: {\n add: function () {},\n run: function (name, env) {}\n },\n tokenize: function (text, grammar, language) {\n var strarr = [text];\n var rest = grammar.rest;\n\n if (rest) {\n for (var token in rest) {\n grammar[token] = rest[token];\n }\n\n delete grammar.rest;\n }\n\n _.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n return strarr;\n }\n };\n\n var Token = _.Token = function (type, content, alias, matchedStr, greedy) {\n this.type = type;\n this.content = content;\n this.alias = alias; // Copy of the full string this token was created from\n\n this.length = (matchedStr || \"\").length | 0;\n this.greedy = !!greedy;\n };\n\n Token.stringify = function (o, language, parent) {\n if (typeof o == \"string\") {\n return o;\n }\n\n if (_.util.type(o) === \"Array\") {\n return o.map(function (element) {\n return Token.stringify(element, language, o);\n }).join(\"\");\n }\n\n var env = {\n type: o.type,\n content: Token.stringify(o.content, language, parent),\n tag: \"span\",\n classes: [\"token\", o.type],\n attributes: {},\n language: language,\n parent: parent\n };\n\n if (o.alias) {\n var aliases = _.util.type(o.alias) === \"Array\" ? o.alias : [o.alias];\n Array.prototype.push.apply(env.classes, aliases);\n }\n\n var attributes = Object.keys(env.attributes).map(function (name) {\n return name + '=\"' + (env.attributes[name] || \"\").replace(/\"/g, \"&quot;\") + '\"';\n }).join(\" \");\n return \"<\" + env.tag + ' class=\"' + env.classes.join(\" \") + '\"' + (attributes ? \" \" + attributes : \"\") + \">\" + env.content + \"</\" + env.tag + \">\";\n };\n\n return _;\n}();\n\n/* This content is auto-generated to include some prismjs language components: */\n\n/* \"prismjs/components/prism-markup\" */\n\nPrism.languages.markup = {\n 'comment': /<!--[\\s\\S]*?-->/,\n 'prolog': /<\\?[\\s\\S]+?\\?>/,\n 'doctype': {\n // https://www.w3.org/TR/xml/#NT-doctypedecl\n pattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n greedy: true,\n inside: {\n 'internal-subset': {\n pattern: /(\\[)[\\s\\S]+(?=\\]>$)/,\n lookbehind: true,\n greedy: true,\n inside: null // see below\n\n },\n 'string': {\n pattern: /\"[^\"]*\"|'[^']*'/,\n greedy: true\n },\n 'punctuation': /^<!|>$|[[\\]]/,\n 'doctype-tag': /^DOCTYPE/,\n 'name': /[^\\s<>'\"]+/\n }\n },\n 'cdata': /<!\\[CDATA\\[[\\s\\S]*?]]>/i,\n 'tag': {\n pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n greedy: true,\n inside: {\n 'tag': {\n pattern: /^<\\/?[^\\s>\\/]+/,\n inside: {\n 'punctuation': /^<\\/?/,\n 'namespace': /^[^\\s>\\/:]+:/\n }\n },\n 'attr-value': {\n pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n inside: {\n 'punctuation': [{\n pattern: /^=/,\n alias: 'attr-equals'\n }, /\"|'/]\n }\n },\n 'punctuation': /\\/?>/,\n 'attr-name': {\n pattern: /[^\\s>\\/]+/,\n inside: {\n 'namespace': /^[^\\s>\\/:]+:/\n }\n }\n }\n },\n 'entity': [{\n pattern: /&[\\da-z]{1,8};/i,\n alias: 'named-entity'\n }, /&#x?[\\da-f]{1,8};/i]\n};\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] = Prism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup; // Plugin to make entity title show the real entity, idea by Roman Komarov\n\nPrism.hooks.add('wrap', function (env) {\n if (env.type === 'entity') {\n env.attributes['title'] = env.content.replace(/&amp;/, '&');\n }\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n /**\n * Adds an inlined language to markup.\n *\n * An example of an inlined language is CSS with `<style>` tags.\n *\n * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n * case insensitive.\n * @param {string} lang The language key.\n * @example\n * addInlined('style', 'css');\n */\n value: function addInlined(tagName, lang) {\n var includedCdataInside = {};\n includedCdataInside['language-' + lang] = {\n pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n lookbehind: true,\n inside: Prism.languages[lang]\n };\n includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n var inside = {\n 'included-cdata': {\n pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n inside: includedCdataInside\n }\n };\n inside['language-' + lang] = {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages[lang]\n };\n var def = {};\n def[tagName] = {\n pattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () {\n return tagName;\n }), 'i'),\n lookbehind: true,\n greedy: true,\n inside: inside\n };\n Prism.languages.insertBefore('markup', 'cdata', def);\n }\n});\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n/* \"prismjs/components/prism-bash\" */\n\n(function (Prism) {\n // $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n // + LC_ALL, RANDOM, REPLY, SECONDS.\n // + make sure PS1..4 are here as they are not always set,\n // - some useless things.\n var envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n var commandAfterHeredoc = {\n pattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n lookbehind: true,\n alias: 'punctuation',\n // this looks reasonably well in all themes\n inside: null // see below\n\n };\n var insideString = {\n 'bash': commandAfterHeredoc,\n 'environment': {\n pattern: RegExp(\"\\\\$\" + envVars),\n alias: 'constant'\n },\n 'variable': [// [0]: Arithmetic Environment\n {\n pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n greedy: true,\n inside: {\n // If there is a $ sign at the beginning highlight $(( and )) as variable\n 'variable': [{\n pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n lookbehind: true\n }, /^\\$\\(\\(/],\n 'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n 'operator': /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n // If there is no $ sign at the beginning highlight (( and )) as punctuation\n 'punctuation': /\\(\\(?|\\)\\)?|,|;/\n }\n }, // [1]: Command Substitution\n {\n pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n greedy: true,\n inside: {\n 'variable': /^\\$\\(|^`|\\)$|`$/\n }\n }, // [2]: Brace expansion\n {\n pattern: /\\$\\{[^}]+\\}/,\n greedy: true,\n inside: {\n 'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n 'punctuation': /[\\[\\]]/,\n 'environment': {\n pattern: RegExp(\"(\\\\{)\" + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n }\n }, /\\$(?:\\w+|[#?*!@$])/],\n // Escape sequences from echo and printf's manuals, and escaped quotes.\n 'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/\n };\n Prism.languages.bash = {\n 'shebang': {\n pattern: /^#!\\s*\\/.*/,\n alias: 'important'\n },\n 'comment': {\n pattern: /(^|[^\"{\\\\$])#.*/,\n lookbehind: true\n },\n 'function-name': [// a) function foo {\n // b) foo() {\n // c) function foo() {\n // but not “foo {”\n {\n // a) and c)\n pattern: /(\\bfunction\\s+)\\w+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n lookbehind: true,\n alias: 'function'\n }, {\n // b)\n pattern: /\\b\\w+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n alias: 'function'\n }],\n // Highlight variable names as variables in for and select beginnings.\n 'for-or-select': {\n pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n alias: 'variable',\n lookbehind: true\n },\n // Highlight variable names as variables in the left-hand part\n // of assignments (“=” and “+=”).\n 'assign-left': {\n pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?=\\+?=)/,\n inside: {\n 'environment': {\n pattern: RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\" + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n },\n alias: 'variable',\n lookbehind: true\n },\n 'string': [// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n {\n pattern: /((?:^|[^<])<<-?\\s*)(\\w+?)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n }, // Here-document with quotes around the tag\n // → No expansion (so no “inside”).\n {\n pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n lookbehind: true,\n greedy: true,\n inside: {\n 'bash': commandAfterHeredoc\n }\n }, // “Normal” string\n {\n pattern: /(^|[^\\\\](?:\\\\\\\\)*)([\"'])(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|(?!\\2)[^\\\\`$])*\\2/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n }],\n 'environment': {\n pattern: RegExp(\"\\\\$?\" + envVars),\n alias: 'constant'\n },\n 'variable': insideString.variable,\n 'function': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'keyword': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'builtin': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\\s;|&])/,\n lookbehind: true,\n // Alias added to make those easier to distinguish from strings.\n alias: 'class-name'\n },\n 'boolean': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:true|false)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'file-descriptor': {\n pattern: /\\B&\\d\\b/,\n alias: 'important'\n },\n 'operator': {\n // Lots of redirections here, but not just that.\n pattern: /\\d?<>|>\\||\\+=|==?|!=?|=~|<<[<-]?|[&\\d]?>>|\\d?[<>]&?|&[>&]?|\\|[&|]?|<=?|>=?/,\n inside: {\n 'file-descriptor': {\n pattern: /^\\d/,\n alias: 'important'\n }\n }\n },\n 'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n 'number': {\n pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n lookbehind: true\n }\n };\n commandAfterHeredoc.inside = Prism.languages.bash;\n /* Patterns in command substitution. */\n\n var toBeCopied = ['comment', 'function-name', 'for-or-select', 'assign-left', 'string', 'environment', 'function', 'keyword', 'builtin', 'boolean', 'file-descriptor', 'operator', 'punctuation', 'number'];\n var inside = insideString.variable[1].inside;\n\n for (var i = 0; i < toBeCopied.length; i++) {\n inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n }\n\n Prism.languages.shell = Prism.languages.bash;\n})(Prism);\n/* \"prismjs/components/prism-clike\" */\n\n\nPrism.languages.clike = {\n 'comment': [{\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n greedy: true\n }, {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }],\n 'string': {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n 'punctuation': /[.\\\\]/\n }\n },\n 'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'function': /\\w+(?=\\()/,\n 'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n 'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n 'punctuation': /[{}[\\];(),.:]/\n};\n/* \"prismjs/components/prism-c\" */\n\nPrism.languages.c = Prism.languages.extend('clike', {\n 'comment': {\n pattern: /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n lookbehind: true\n },\n 'keyword': /\\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n 'function': /[a-z_]\\w*(?=\\s*\\()/i,\n 'number': /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n 'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n});\nPrism.languages.insertBefore('c', 'string', {\n 'macro': {\n // allow for multiline macro definitions\n // spaces after the # character compile fine with gcc\n pattern: /(^\\s*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true,\n greedy: true,\n alias: 'property',\n inside: {\n 'string': [{\n // highlight the path of the include statement as a string\n pattern: /^(#\\s*include\\s*)<[^>]+>/,\n lookbehind: true\n }, Prism.languages.c['string']],\n 'comment': Prism.languages.c['comment'],\n 'macro-name': [{\n pattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n lookbehind: true\n }, {\n pattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n lookbehind: true,\n alias: 'function'\n }],\n // highlight macro directives as keywords\n 'directive': {\n pattern: /^(#\\s*)[a-z]+/,\n lookbehind: true,\n alias: 'keyword'\n },\n 'directive-hash': /^#/,\n 'punctuation': /##|\\\\(?=[\\r\\n])/,\n 'expression': {\n pattern: /\\S[\\s\\S]*/,\n inside: Prism.languages.c\n }\n }\n },\n // highlight predefined macros as constants\n 'constant': /\\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\\b/\n});\ndelete Prism.languages.c['boolean'];\n/* \"prismjs/components/prism-cpp\" */\n\n(function (Prism) {\n var keyword = /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/;\n Prism.languages.cpp = Prism.languages.extend('c', {\n 'class-name': [{\n pattern: RegExp(/(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+/.source.replace(/<keyword>/g, function () {\n return keyword.source;\n })),\n lookbehind: true\n }, // This is intended to capture the class name of method implementations like:\n // void foo::bar() const {}\n // However! The `foo` in the above example could also be a namespace, so we only capture the class name if\n // it starts with an uppercase letter. This approximation should give decent results.\n /\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/, // This will capture the class name before destructors like:\n // Foo::~Foo() {}\n /\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i, // This also intends to capture the class name of method implementations but here the class has template\n // parameters, so it can't be a namespace (until C++ adds generic namespaces).\n /\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/],\n 'keyword': keyword,\n 'number': {\n pattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n greedy: true\n },\n 'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n 'boolean': /\\b(?:true|false)\\b/\n });\n Prism.languages.insertBefore('cpp', 'string', {\n 'raw-string': {\n pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n alias: 'string',\n greedy: true\n }\n });\n Prism.languages.insertBefore('cpp', 'class-name', {\n // the base clause is an optional list of parent classes\n // https://en.cppreference.com/w/cpp/language/class\n 'base-clause': {\n pattern: /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n lookbehind: true,\n greedy: true,\n inside: Prism.languages.extend('cpp', {})\n }\n });\n Prism.languages.insertBefore('inside', 'operator', {\n // All untokenized words that are not namespaces should be class names\n 'class-name': /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n }, Prism.languages.cpp['base-clause']);\n})(Prism);\n/* \"prismjs/components/prism-css\" */\n\n\n(function (Prism) {\n var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n Prism.languages.css = {\n 'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n 'atrule': {\n pattern: /@[\\w-](?:[^;{\\s]|\\s+(?![\\s{]))*(?:;|(?=\\s*\\{))/,\n inside: {\n 'rule': /^@[\\w-]+/,\n 'selector-function-argument': {\n pattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n lookbehind: true,\n alias: 'selector'\n },\n 'keyword': {\n pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n lookbehind: true\n } // See rest below\n\n }\n },\n 'url': {\n // https://drafts.csswg.org/css-values-3/#urls\n pattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n greedy: true,\n inside: {\n 'function': /^url/i,\n 'punctuation': /^\\(|\\)$/,\n 'string': {\n pattern: RegExp('^' + string.source + '$'),\n alias: 'url'\n }\n }\n },\n 'selector': RegExp('[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n 'string': {\n pattern: string,\n greedy: true\n },\n 'property': /(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n 'important': /!important\\b/i,\n 'function': /[-a-z0-9]+(?=\\()/i,\n 'punctuation': /[(){};:,]/\n };\n Prism.languages.css['atrule'].inside.rest = Prism.languages.css;\n var markup = Prism.languages.markup;\n\n if (markup) {\n markup.tag.addInlined('style', 'css');\n Prism.languages.insertBefore('inside', 'attr-value', {\n 'style-attr': {\n pattern: /(^|[\"'\\s])style\\s*=\\s*(?:\"[^\"]*\"|'[^']*')/i,\n lookbehind: true,\n inside: {\n 'attr-value': {\n pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n inside: {\n 'style': {\n pattern: /([\"'])[\\s\\S]+(?=[\"']$)/,\n lookbehind: true,\n alias: 'language-css',\n inside: Prism.languages.css\n },\n 'punctuation': [{\n pattern: /^=/,\n alias: 'attr-equals'\n }, /\"|'/]\n }\n },\n 'attr-name': /^style/i\n }\n }\n }, markup.tag);\n }\n})(Prism);\n/* \"prismjs/components/prism-css-extras\" */\n\n\n(function (Prism) {\n var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n var selectorInside;\n Prism.languages.css.selector = {\n pattern: Prism.languages.css.selector,\n inside: selectorInside = {\n 'pseudo-element': /:(?:after|before|first-letter|first-line|selection)|::[-\\w]+/,\n 'pseudo-class': /:[-\\w]+/,\n 'class': /\\.[-\\w]+/,\n 'id': /#[-\\w]+/,\n 'attribute': {\n pattern: RegExp('\\\\[(?:[^[\\\\]\"\\']|' + string.source + ')*\\\\]'),\n greedy: true,\n inside: {\n 'punctuation': /^\\[|\\]$/,\n 'case-sensitivity': {\n pattern: /(\\s)[si]$/i,\n lookbehind: true,\n alias: 'keyword'\n },\n 'namespace': {\n pattern: /^(\\s*)(?:(?!\\s)[-*\\w\\xA0-\\uFFFF])*\\|(?!=)/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\|$/\n }\n },\n 'attr-name': {\n pattern: /^(\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+/,\n lookbehind: true\n },\n 'attr-value': [string, {\n pattern: /(=\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+(?=\\s*$)/,\n lookbehind: true\n }],\n 'operator': /[|~*^$]?=/\n }\n },\n 'n-th': [{\n pattern: /(\\(\\s*)[+-]?\\d*[\\dn](?:\\s*[+-]\\s*\\d+)?(?=\\s*\\))/,\n lookbehind: true,\n inside: {\n 'number': /[\\dn]+/,\n 'operator': /[+-]/\n }\n }, {\n pattern: /(\\(\\s*)(?:even|odd)(?=\\s*\\))/i,\n lookbehind: true\n }],\n 'combinator': />|\\+|~|\\|\\|/,\n // the `tag` token has been existed and removed.\n // because we can't find a perfect tokenize to match it.\n // if you want to add it, please read https://github.com/PrismJS/prism/pull/2373 first.\n 'punctuation': /[(),]/\n }\n };\n Prism.languages.css['atrule'].inside['selector-function-argument'].inside = selectorInside;\n Prism.languages.insertBefore('css', 'property', {\n 'variable': {\n pattern: /(^|[^-\\w\\xA0-\\uFFFF])--(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*/i,\n lookbehind: true\n }\n });\n var unit = {\n pattern: /(\\b\\d+)(?:%|[a-z]+\\b)/,\n lookbehind: true\n }; // 123 -123 .123 -.123 12.3 -12.3\n\n var number = {\n pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n lookbehind: true\n };\n Prism.languages.insertBefore('css', 'function', {\n 'operator': {\n pattern: /(\\s)[+\\-*\\/](?=\\s)/,\n lookbehind: true\n },\n // CAREFUL!\n // Previewers and Inline color use hexcode and color.\n 'hexcode': {\n pattern: /\\B#(?:[\\da-f]{1,2}){3,4}\\b/i,\n alias: 'color'\n },\n 'color': [/\\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\\b/i, {\n pattern: /\\b(?:rgb|hsl)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:rgb|hsl)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n inside: {\n 'unit': unit,\n 'number': number,\n 'function': /[\\w-]+(?=\\()/,\n 'punctuation': /[(),]/\n }\n }],\n // it's important that there is no boundary assertion after the hex digits\n 'entity': /\\\\[\\da-f]{1,8}/i,\n 'unit': unit,\n 'number': number\n });\n})(Prism);\n/* \"prismjs/components/prism-javascript\" */\n\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n 'class-name': [Prism.languages.clike['class-name'], {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:prototype|constructor))/,\n lookbehind: true\n }],\n 'keyword': [{\n pattern: /((?:^|})\\s*)(?:catch|finally)\\b/,\n lookbehind: true\n }, {\n pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\\s*[\\[$\\w\\xA0-\\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true\n }],\n // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n 'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n 'number': /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n 'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/;\nPrism.languages.insertBefore('javascript', 'keyword', {\n 'regex': {\n pattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyus]{0,6}(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/,\n lookbehind: true,\n greedy: true,\n inside: {\n 'regex-source': {\n pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n lookbehind: true,\n alias: 'language-regex',\n inside: Prism.languages.regex\n },\n 'regex-flags': /[a-z]+$/,\n 'regex-delimiter': /^\\/|\\/$/\n }\n },\n // This must be declared before keyword because we use \"function\" inside the look-forward\n 'function-variable': {\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n alias: 'function'\n },\n 'parameter': [{\n pattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }, {\n pattern: /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n inside: Prism.languages.javascript\n }, {\n pattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }, {\n pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }],\n 'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\nPrism.languages.insertBefore('javascript', 'string', {\n 'template-string': {\n pattern: /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\\${)[^\\\\`])*`/,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n 'interpolation': {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\${|}$/,\n alias: 'punctuation'\n },\n rest: Prism.languages.javascript\n }\n },\n 'string': /[\\s\\S]+/\n }\n }\n});\n\nif (Prism.languages.markup) {\n Prism.languages.markup.tag.addInlined('script', 'javascript');\n}\n\nPrism.languages.js = Prism.languages.javascript;\n/* \"prismjs/components/prism-jsx\" */\n\n(function (Prism) {\n var javascript = Prism.util.clone(Prism.languages.javascript);\n Prism.languages.jsx = Prism.languages.extend('markup', javascript);\n Prism.languages.jsx.tag.pattern = /<\\/?(?:[\\w.:-]+(?:\\s+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[^]|[^\\\\\"])*\"|'(?:\\\\[^]|[^\\\\'])*'|[^\\s{'\">=]+|\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}))?|\\{\\s*\\.{3}\\s*[a-z_$][\\w$]*(?:\\.[a-z_$][\\w$]*)*\\s*\\}))*\\s*\\/?)?>/i;\n Prism.languages.jsx.tag.inside['tag'].pattern = /^<\\/?[^\\s>\\/]*/i;\n Prism.languages.jsx.tag.inside['attr-value'].pattern = /=(?!\\{)(?:\"(?:\\\\[^]|[^\\\\\"])*\"|'(?:\\\\[^]|[^\\\\'])*'|[^\\s'\">]+)/i;\n Prism.languages.jsx.tag.inside['tag'].inside['class-name'] = /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/;\n Prism.languages.insertBefore('inside', 'attr-name', {\n 'spread': {\n pattern: /\\{\\s*\\.{3}\\s*[a-z_$][\\w$]*(?:\\.[a-z_$][\\w$]*)*\\s*\\}/,\n inside: {\n 'punctuation': /\\.{3}|[{}.]/,\n 'attr-value': /\\w+/\n }\n }\n }, Prism.languages.jsx.tag);\n Prism.languages.insertBefore('inside', 'attr-value', {\n 'script': {\n // Allow for two levels of nesting\n pattern: /=(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\})/i,\n inside: {\n 'script-punctuation': {\n pattern: /^=(?={)/,\n alias: 'punctuation'\n },\n rest: Prism.languages.jsx\n },\n 'alias': 'language-javascript'\n }\n }, Prism.languages.jsx.tag); // The following will handle plain text inside tags\n\n var stringifyToken = function (token) {\n if (!token) {\n return '';\n }\n\n if (typeof token === 'string') {\n return token;\n }\n\n if (typeof token.content === 'string') {\n return token.content;\n }\n\n return token.content.map(stringifyToken).join('');\n };\n\n var walkTokens = function (tokens) {\n var openedTags = [];\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var notTagNorBrace = false;\n\n if (typeof token !== 'string') {\n if (token.type === 'tag' && token.content[0] && token.content[0].type === 'tag') {\n // We found a tag, now find its kind\n if (token.content[0].content[0].content === '</') {\n // Closing tag\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].tagName === stringifyToken(token.content[0].content[1])) {\n // Pop matching opening tag\n openedTags.pop();\n }\n } else {\n if (token.content[token.content.length - 1].content === '/>') ; else {\n // Opening tag\n openedTags.push({\n tagName: stringifyToken(token.content[0].content[1]),\n openedBraces: 0\n });\n }\n }\n } else if (openedTags.length > 0 && token.type === 'punctuation' && token.content === '{') {\n // Here we might have entered a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces++;\n } else if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces > 0 && token.type === 'punctuation' && token.content === '}') {\n // Here we might have left a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces--;\n } else {\n notTagNorBrace = true;\n }\n }\n\n if (notTagNorBrace || typeof token === 'string') {\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces === 0) {\n // Here we are inside a tag, and not inside a JSX context.\n // That's plain text: drop any tokens matched.\n var plainText = stringifyToken(token); // And merge text with adjacent text\n\n if (i < tokens.length - 1 && (typeof tokens[i + 1] === 'string' || tokens[i + 1].type === 'plain-text')) {\n plainText += stringifyToken(tokens[i + 1]);\n tokens.splice(i + 1, 1);\n }\n\n if (i > 0 && (typeof tokens[i - 1] === 'string' || tokens[i - 1].type === 'plain-text')) {\n plainText = stringifyToken(tokens[i - 1]) + plainText;\n tokens.splice(i - 1, 1);\n i--;\n }\n\n tokens[i] = new Prism.Token('plain-text', plainText, null, plainText);\n }\n }\n\n if (token.content && typeof token.content !== 'string') {\n walkTokens(token.content);\n }\n }\n };\n\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'jsx' && env.language !== 'tsx') {\n return;\n }\n\n walkTokens(env.tokens);\n });\n})(Prism);\n/* \"prismjs/components/prism-js-extras\" */\n\n\n(function (Prism) {\n Prism.languages.insertBefore('javascript', 'function-variable', {\n 'method-variable': {\n pattern: RegExp('(\\\\.\\\\s*)' + Prism.languages.javascript['function-variable'].pattern.source),\n lookbehind: true,\n alias: ['function-variable', 'method', 'function', 'property-access']\n }\n });\n Prism.languages.insertBefore('javascript', 'function', {\n 'method': {\n pattern: RegExp('(\\\\.\\\\s*)' + Prism.languages.javascript['function'].source),\n lookbehind: true,\n alias: ['function', 'property-access']\n }\n });\n Prism.languages.insertBefore('javascript', 'constant', {\n 'known-class-name': [{\n // standard built-ins\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\n pattern: /\\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\\b/,\n alias: 'class-name'\n }, {\n // errors\n pattern: /\\b(?:[A-Z]\\w*)Error\\b/,\n alias: 'class-name'\n }]\n });\n /**\n * Replaces the `<ID>` placeholder in the given pattern with a pattern for general JS identifiers.\n *\n * @param {string} source\n * @param {string} [flags]\n * @returns {RegExp}\n */\n\n function withId(source, flags) {\n return RegExp(source.replace(/<ID>/g, function () {\n return /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/.source;\n }), flags);\n }\n\n Prism.languages.insertBefore('javascript', 'keyword', {\n 'imports': {\n // https://tc39.es/ecma262/#sec-imports\n pattern: withId(/(\\bimport\\b\\s*)(?:<ID>(?:\\s*,\\s*(?:\\*\\s*as\\s+<ID>|\\{[^{}]*\\}))?|\\*\\s*as\\s+<ID>|\\{[^{}]*\\})(?=\\s*\\bfrom\\b)/.source),\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n 'exports': {\n // https://tc39.es/ecma262/#sec-exports\n pattern: withId(/(\\bexport\\b\\s*)(?:\\*(?:\\s*as\\s+<ID>)?(?=\\s*\\bfrom\\b)|\\{[^{}]*\\})/.source),\n lookbehind: true,\n inside: Prism.languages.javascript\n }\n });\n Prism.languages.javascript['keyword'].unshift({\n pattern: /\\b(?:as|default|export|from|import)\\b/,\n alias: 'module'\n }, {\n pattern: /\\b(?:await|break|catch|continue|do|else|for|finally|if|return|switch|throw|try|while|yield)\\b/,\n alias: 'control-flow'\n }, {\n pattern: /\\bnull\\b/,\n alias: ['null', 'nil']\n }, {\n pattern: /\\bundefined\\b/,\n alias: 'nil'\n });\n Prism.languages.insertBefore('javascript', 'operator', {\n 'spread': {\n pattern: /\\.{3}/,\n alias: 'operator'\n },\n 'arrow': {\n pattern: /=>/,\n alias: 'operator'\n }\n });\n Prism.languages.insertBefore('javascript', 'punctuation', {\n 'property-access': {\n pattern: withId(/(\\.\\s*)#?<ID>/.source),\n lookbehind: true\n },\n 'maybe-class-name': {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])[A-Z][$\\w\\xA0-\\uFFFF]+/,\n lookbehind: true\n },\n 'dom': {\n // this contains only a few commonly used DOM variables\n pattern: /\\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\\b/,\n alias: 'variable'\n },\n 'console': {\n pattern: /\\bconsole(?=\\s*\\.)/,\n alias: 'class-name'\n }\n }); // add 'maybe-class-name' to tokens which might be a class name\n\n var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access'];\n\n for (var i = 0; i < maybeClassNameTokens.length; i++) {\n var token = maybeClassNameTokens[i];\n var value = Prism.languages.javascript[token]; // convert regex to object\n\n if (Prism.util.type(value) === 'RegExp') {\n value = Prism.languages.javascript[token] = {\n pattern: value\n };\n } // keep in mind that we don't support arrays\n\n\n var inside = value.inside || {};\n value.inside = inside;\n inside['maybe-class-name'] = /^[A-Z][\\s\\S]*/;\n }\n})(Prism);\n/* \"prismjs/components/prism-coffeescript\" */\n\n\n(function (Prism) {\n // Ignore comments starting with { to privilege string interpolation highlighting\n var comment = /#(?!\\{).+/,\n interpolation = {\n pattern: /#\\{[^}]+\\}/,\n alias: 'variable'\n };\n Prism.languages.coffeescript = Prism.languages.extend('javascript', {\n 'comment': comment,\n 'string': [// Strings are multiline\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n greedy: true\n }, {\n // Strings are multiline\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true,\n inside: {\n 'interpolation': interpolation\n }\n }],\n 'keyword': /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n 'class-member': {\n pattern: /@(?!\\d)\\w+/,\n alias: 'variable'\n }\n });\n Prism.languages.insertBefore('coffeescript', 'comment', {\n 'multiline-comment': {\n pattern: /###[\\s\\S]+?###/,\n alias: 'comment'\n },\n // Block regexp can contain comments and interpolation\n 'block-regex': {\n pattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n alias: 'regex',\n inside: {\n 'comment': comment,\n 'interpolation': interpolation\n }\n }\n });\n Prism.languages.insertBefore('coffeescript', 'string', {\n 'inline-javascript': {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n inside: {\n 'delimiter': {\n pattern: /^`|`$/,\n alias: 'punctuation'\n },\n 'script': {\n pattern: /[\\s\\S]+/,\n alias: 'language-javascript',\n inside: Prism.languages.javascript\n }\n }\n },\n // Block strings\n 'multiline-string': [{\n pattern: /'''[\\s\\S]*?'''/,\n greedy: true,\n alias: 'string'\n }, {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: 'string',\n inside: {\n interpolation: interpolation\n }\n }]\n });\n Prism.languages.insertBefore('coffeescript', 'keyword', {\n // Object property\n 'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n });\n delete Prism.languages.coffeescript['template-string'];\n Prism.languages.coffee = Prism.languages.coffeescript;\n})(Prism);\n/* \"prismjs/components/prism-diff\" */\n\n\n(function (Prism) {\n Prism.languages.diff = {\n 'coord': [// Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n /^(?:\\*{3}|-{3}|\\+{3}).*$/m, // Match \"@@ ... @@\" coord lines in unified diff.\n /^@@.*@@$/m, // Match coord lines in normal diff (starts with a number).\n /^\\d.*$/m] // deleted, inserted, unchanged, diff\n\n };\n /**\n * A map from the name of a block to its line prefix.\n *\n * @type {Object<string, string>}\n */\n\n var PREFIXES = {\n 'deleted-sign': '-',\n 'deleted-arrow': '<',\n 'inserted-sign': '+',\n 'inserted-arrow': '>',\n 'unchanged': ' ',\n 'diff': '!'\n }; // add a token for each prefix\n\n Object.keys(PREFIXES).forEach(function (name) {\n var prefix = PREFIXES[name];\n var alias = [];\n\n if (!/^\\w+$/.test(name)) {\n // \"deleted-sign\" -> \"deleted\"\n alias.push(/\\w+/.exec(name)[0]);\n }\n\n if (name === \"diff\") {\n alias.push(\"bold\");\n }\n\n Prism.languages.diff[name] = {\n pattern: RegExp('^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+', 'm'),\n alias: alias,\n inside: {\n 'line': {\n pattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n lookbehind: true\n },\n 'prefix': {\n pattern: /[\\s\\S]/,\n alias: /\\w+/.exec(name)[0]\n }\n }\n };\n }); // make prefixes available to Diff plugin\n\n Object.defineProperty(Prism.languages.diff, 'PREFIXES', {\n value: PREFIXES\n });\n})(Prism);\n/* \"prismjs/components/prism-git\" */\n\n\nPrism.languages.git = {\n /*\n * A simple one line comment like in a git status command\n * For instance:\n * $ git status\n * # On branch infinite-scroll\n * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged,\n * # and have 1 and 2 different commits each, respectively.\n * nothing to commit (working directory clean)\n */\n 'comment': /^#.*/m,\n\n /*\n * Regexp to match the changed lines in a git diff output. Check the example below.\n */\n 'deleted': /^[-–].*/m,\n 'inserted': /^\\+.*/m,\n\n /*\n * a string (double and simple quote)\n */\n 'string': /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/m,\n\n /*\n * a git command. It starts with a random prompt finishing by a $, then \"git\" then some other parameters\n * For instance:\n * $ git add file.txt\n */\n 'command': {\n pattern: /^.*\\$ git .*$/m,\n inside: {\n /*\n * A git command can contain a parameter starting by a single or a double dash followed by a string\n * For instance:\n * $ git diff --cached\n * $ git log -p\n */\n 'parameter': /\\s--?\\w+/m\n }\n },\n\n /*\n * Coordinates displayed in a git diff command\n * For instance:\n * $ git diff\n * diff --git file.txt file.txt\n * index 6214953..1d54a52 100644\n * --- file.txt\n * +++ file.txt\n * @@ -1 +1,2 @@\n * -Here's my tetx file\n * +Here's my text file\n * +And this is the second line\n */\n 'coord': /^@@.*@@$/m,\n\n /*\n * Match a \"commit [SHA1]\" line in a git log output.\n * For instance:\n * $ git log\n * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09\n * Author: lgiraudel\n * Date: Mon Feb 17 11:18:34 2014 +0100\n *\n * Add of a new line\n */\n 'commit-sha1': /^commit \\w{40}$/m\n};\n/* \"prismjs/components/prism-go\" */\n\nPrism.languages.go = Prism.languages.extend('clike', {\n 'string': {\n pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n greedy: true\n },\n 'keyword': /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n 'boolean': /\\b(?:_|iota|nil|true|false)\\b/,\n 'number': /(?:\\b0x[a-f\\d]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[-+]?\\d+)?)i?/i,\n 'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n 'builtin': /\\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\\b/\n});\ndelete Prism.languages.go['class-name'];\n/* \"prismjs/components/prism-graphql\" */\n\nPrism.languages.graphql = {\n 'comment': /#.*/,\n 'description': {\n pattern: /(?:\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")(?=\\s*[a-z_])/i,\n greedy: true,\n alias: 'string',\n inside: {\n 'language-markdown': {\n pattern: /(^\"(?:\"\")?)(?!\\1)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: Prism.languages.markdown\n }\n }\n },\n 'string': {\n pattern: /\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n 'number': /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n 'boolean': /\\b(?:true|false)\\b/,\n 'variable': /\\$[a-z_]\\w*/i,\n 'directive': {\n pattern: /@[a-z_]\\w*/i,\n alias: 'function'\n },\n 'attr-name': {\n pattern: /[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+|&\\s*)[a-zA-Z_]\\w*/,\n lookbehind: true\n },\n 'fragment': {\n pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n 'keyword': /\\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\\b/,\n 'operator': /[!=|&]|\\.{3}/,\n 'punctuation': /[!(){}\\[\\]:=,]/,\n 'constant': /\\b(?!ID\\b)[A-Z][A-Z_\\d]*\\b/\n};\n/* \"prismjs/components/prism-markup-templating\" */\n\n(function (Prism) {\n /**\n * Returns the placeholder for the given language id and index.\n *\n * @param {string} language\n * @param {string|number} index\n * @returns {string}\n */\n function getPlaceholder(language, index) {\n return '___' + language.toUpperCase() + index + '___';\n }\n\n Object.defineProperties(Prism.languages['markup-templating'] = {}, {\n buildPlaceholders: {\n /**\n * Tokenize all inline templating expressions matching `placeholderPattern`.\n *\n * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns\n * `true` will be replaced.\n *\n * @param {object} env The environment of the `before-tokenize` hook.\n * @param {string} language The language id.\n * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders.\n * @param {(match: string) => boolean} [replaceFilter]\n */\n value: function (env, language, placeholderPattern, replaceFilter) {\n if (env.language !== language) {\n return;\n }\n\n var tokenStack = env.tokenStack = [];\n env.code = env.code.replace(placeholderPattern, function (match) {\n if (typeof replaceFilter === 'function' && !replaceFilter(match)) {\n return match;\n }\n\n var i = tokenStack.length;\n var placeholder; // Check for existing strings\n\n while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) {\n ++i;\n } // Create a sparse array\n\n\n tokenStack[i] = match;\n return placeholder;\n }); // Switch the grammar to markup\n\n env.grammar = Prism.languages.markup;\n }\n },\n tokenizePlaceholders: {\n /**\n * Replace placeholders with proper tokens after tokenizing.\n *\n * @param {object} env The environment of the `after-tokenize` hook.\n * @param {string} language The language id.\n */\n value: function (env, language) {\n if (env.language !== language || !env.tokenStack) {\n return;\n } // Switch the grammar back\n\n\n env.grammar = Prism.languages[language];\n var j = 0;\n var keys = Object.keys(env.tokenStack);\n\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n // all placeholders are replaced already\n if (j >= keys.length) {\n break;\n }\n\n var token = tokens[i];\n\n if (typeof token === 'string' || token.content && typeof token.content === 'string') {\n var k = keys[j];\n var t = env.tokenStack[k];\n var s = typeof token === 'string' ? token : token.content;\n var placeholder = getPlaceholder(language, k);\n var index = s.indexOf(placeholder);\n\n if (index > -1) {\n ++j;\n var before = s.substring(0, index);\n var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);\n var after = s.substring(index + placeholder.length);\n var replacement = [];\n\n if (before) {\n replacement.push.apply(replacement, walkTokens([before]));\n }\n\n replacement.push(middle);\n\n if (after) {\n replacement.push.apply(replacement, walkTokens([after]));\n }\n\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement));\n } else {\n token.content = replacement;\n }\n }\n } else if (token.content\n /* && typeof token.content !== 'string' */\n ) {\n walkTokens(token.content);\n }\n }\n\n return tokens;\n }\n\n walkTokens(env.tokens);\n }\n }\n });\n})(Prism);\n/* \"prismjs/components/prism-handlebars\" */\n\n\n(function (Prism) {\n Prism.languages.handlebars = {\n 'comment': /\\{\\{![\\s\\S]*?\\}\\}/,\n 'delimiter': {\n pattern: /^\\{\\{\\{?|\\}\\}\\}?$/i,\n alias: 'punctuation'\n },\n 'string': /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n 'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][+-]?\\d+)?/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'block': {\n pattern: /^(\\s*(?:~\\s*)?)[#\\/]\\S+?(?=\\s*(?:~\\s*)?$|\\s)/i,\n lookbehind: true,\n alias: 'keyword'\n },\n 'brackets': {\n pattern: /\\[[^\\]]+\\]/,\n inside: {\n punctuation: /\\[|\\]/,\n variable: /[\\s\\S]+/\n }\n },\n 'punctuation': /[!\"#%&':()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n 'variable': /[^!\"#%&'()*+,\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n };\n Prism.hooks.add('before-tokenize', function (env) {\n var handlebarsPattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/g;\n Prism.languages['markup-templating'].buildPlaceholders(env, 'handlebars', handlebarsPattern);\n });\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'handlebars');\n });\n})(Prism);\n/* \"prismjs/components/prism-json\" */\n// https://www.json.org/json-en.html\n\n\nPrism.languages.json = {\n 'property': {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n greedy: true\n },\n 'string': {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n greedy: true\n },\n 'comment': {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n 'number': /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n 'punctuation': /[{}[\\],]/,\n 'operator': /:/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n }\n};\nPrism.languages.webmanifest = Prism.languages.json;\n/* \"prismjs/components/prism-less\" */\n\n/* FIXME :\n :extend() is not handled specifically : its highlighting is buggy.\n Mixin usage must be inside a ruleset to be highlighted.\n At-rules (e.g. import) containing interpolations are buggy.\n Detached rulesets are highlighted as at-rules.\n A comment before a mixin usage prevents the latter to be properly highlighted.\n */\n\nPrism.languages.less = Prism.languages.extend('css', {\n 'comment': [/\\/\\*[\\s\\S]*?\\*\\//, {\n pattern: /(^|[^\\\\])\\/\\/.*/,\n lookbehind: true\n }],\n 'atrule': {\n pattern: /@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n 'punctuation': /[:()]/\n }\n },\n // selectors and mixins are considered the same\n 'selector': {\n pattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n // mixin parameters\n 'variable': /@+[\\w-]+/\n }\n },\n 'property': /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/i,\n 'operator': /[+\\-*\\/]/\n});\nPrism.languages.insertBefore('less', 'property', {\n 'variable': [// Variable declaration (the colon must be consumed!)\n {\n pattern: /@[\\w-]+\\s*:/,\n inside: {\n \"punctuation\": /:/\n }\n }, // Variable usage\n /@@?[\\w-]+/],\n 'mixin-usage': {\n pattern: /([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,\n lookbehind: true,\n alias: 'function'\n }\n});\n/* \"prismjs/components/prism-makefile\" */\n\nPrism.languages.makefile = {\n 'comment': {\n pattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n lookbehind: true\n },\n 'string': {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n // Built-in target names\n 'builtin': /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n // Targets\n 'symbol': {\n pattern: /^(?:[^:=\\s]|[ \\t]+(?![\\s:]))+(?=\\s*:(?!=))/m,\n inside: {\n 'variable': /\\$+(?:(?!\\$)[^(){}:#=\\s]+|(?=[({]))/\n }\n },\n 'variable': /\\$+(?:(?!\\$)[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n 'keyword': [// Directives\n /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/, // Functions\n {\n pattern: /(\\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \\t])/,\n lookbehind: true\n }],\n 'operator': /(?:::|[?:+!])?=|[|@]/,\n 'punctuation': /[:;(){}]/\n};\n/* \"prismjs/components/prism-markdown\" */\n\n(function (Prism) {\n // Allow only one line break\n var inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?!\\n|\\r\\n?))/.source;\n /**\n * This function is intended for the creation of the bold or italic pattern.\n *\n * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n *\n * _Note:_ Keep in mind that this adds a capturing group.\n *\n * @param {string} pattern\n * @returns {RegExp}\n */\n\n function createInline(pattern) {\n pattern = pattern.replace(/<inner>/g, function () {\n return inner;\n });\n return RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')');\n }\n\n var tableCell = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source;\n var tableRow = /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(/__/g, function () {\n return tableCell;\n });\n var tableLine = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/.source;\n Prism.languages.markdown = Prism.languages.extend('markup', {});\n Prism.languages.insertBefore('markdown', 'prolog', {\n 'front-matter-block': {\n pattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,\n lookbehind: true,\n greedy: true,\n inside: {\n 'punctuation': /^---|---$/,\n 'font-matter': {\n pattern: /\\S+(?:\\s+\\S+)*/,\n alias: ['yaml', 'language-yaml'],\n inside: Prism.languages.yaml\n }\n }\n },\n 'blockquote': {\n // > ...\n pattern: /^>(?:[\\t ]*>)*/m,\n alias: 'punctuation'\n },\n 'table': {\n pattern: RegExp('^' + tableRow + tableLine + '(?:' + tableRow + ')*', 'm'),\n inside: {\n 'table-data-rows': {\n pattern: RegExp('^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'),\n lookbehind: true,\n inside: {\n 'table-data': {\n pattern: RegExp(tableCell),\n inside: Prism.languages.markdown\n },\n 'punctuation': /\\|/\n }\n },\n 'table-line': {\n pattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n lookbehind: true,\n inside: {\n 'punctuation': /\\||:?-{3,}:?/\n }\n },\n 'table-header-row': {\n pattern: RegExp('^' + tableRow + '$'),\n inside: {\n 'table-header': {\n pattern: RegExp(tableCell),\n alias: 'important',\n inside: Prism.languages.markdown\n },\n 'punctuation': /\\|/\n }\n }\n }\n },\n 'code': [{\n // Prefixed by 4 spaces or 1 tab and preceded by an empty line\n pattern: /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n lookbehind: true,\n alias: 'keyword'\n }, {\n // `code`\n // ``code``\n pattern: /``.+?``|`[^`\\r\\n]+`/,\n alias: 'keyword'\n }, {\n // ```optional language\n // code block\n // ```\n pattern: /^```[\\s\\S]*?^```$/m,\n greedy: true,\n inside: {\n 'code-block': {\n pattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n lookbehind: true\n },\n 'code-language': {\n pattern: /^(```).+/,\n lookbehind: true\n },\n 'punctuation': /```/\n }\n }],\n 'title': [{\n // title 1\n // =======\n // title 2\n // -------\n pattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n alias: 'important',\n inside: {\n punctuation: /==+$|--+$/\n }\n }, {\n // # title 1\n // ###### title 6\n pattern: /(^\\s*)#.+/m,\n lookbehind: true,\n alias: 'important',\n inside: {\n punctuation: /^#+|#+$/\n }\n }],\n 'hr': {\n // ***\n // ---\n // * * *\n // -----------\n pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'list': {\n // * item\n // + item\n // - item\n // 1. item\n pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'url-reference': {\n // [id]: http://example.com \"Optional title\"\n // [id]: http://example.com 'Optional title'\n // [id]: http://example.com (Optional title)\n // [id]: <http://example.com> \"Optional title\"\n pattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n inside: {\n 'variable': {\n pattern: /^(!?\\[)[^\\]]+/,\n lookbehind: true\n },\n 'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n 'punctuation': /^[\\[\\]!:]|[<>]/\n },\n alias: 'url'\n },\n 'bold': {\n // **strong**\n // __strong__\n // allow one nested instance of italic text using the same delimiter\n pattern: createInline(/\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^..)[\\s\\S]+(?=..$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /\\*\\*|__/\n }\n },\n 'italic': {\n // *em*\n // _em_\n // allow one nested instance of bold text using the same delimiter\n pattern: createInline(/\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^.)[\\s\\S]+(?=.$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /[*_]/\n }\n },\n 'strike': {\n // ~~strike through~~\n // ~strike~\n pattern: createInline(/(~~?)(?:(?!~)<inner>)+?\\2/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /~~?/\n }\n },\n 'url': {\n // [example](http://example.com \"Optional title\")\n // [example][id]\n // [example] [id]\n pattern: createInline(/!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\])<inner>)+\\])/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n 'operator': /^!/,\n 'content': {\n pattern: /(^\\[)[^\\]]+(?=\\])/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'variable': {\n pattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,\n lookbehind: true\n },\n 'url': {\n pattern: /(^\\]\\()[^\\s)]+/,\n lookbehind: true\n },\n 'string': {\n pattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,\n lookbehind: true\n }\n }\n }\n });\n ['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n ['url', 'bold', 'italic', 'strike'].forEach(function (inside) {\n if (token !== inside) {\n Prism.languages.markdown[token].inside.content.inside[inside] = Prism.languages.markdown[inside];\n }\n });\n });\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'markdown' && env.language !== 'md') {\n return;\n }\n\n function walkTokens(tokens) {\n if (!tokens || typeof tokens === 'string') {\n return;\n }\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (token.type !== 'code') {\n walkTokens(token.content);\n continue;\n }\n /*\n * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n * is optional. But the grammar is defined so that there is only one case we have to handle:\n *\n * token.content = [\n * <span class=\"punctuation\">```</span>,\n * <span class=\"code-language\">xxxx</span>,\n * '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n * <span class=\"code-block\">...</span>,\n * '\\n', // exactly one new lines again\n * <span class=\"punctuation\">```</span>\n * ];\n */\n\n\n var codeLang = token.content[1];\n var codeBlock = token.content[3];\n\n if (codeLang && codeBlock && codeLang.type === 'code-language' && codeBlock.type === 'code-block' && typeof codeLang.content === 'string') {\n // this might be a language that Prism does not support\n // do some replacements to support C++, C#, and F#\n var lang = codeLang.content.replace(/\\b#/g, 'sharp').replace(/\\b\\+\\+/g, 'pp'); // only use the first word\n\n lang = (/[a-z][\\w-]*/i.exec(lang) || [''])[0].toLowerCase();\n var alias = 'language-' + lang; // add alias\n\n if (!codeBlock.alias) {\n codeBlock.alias = [alias];\n } else if (typeof codeBlock.alias === 'string') {\n codeBlock.alias = [codeBlock.alias, alias];\n } else {\n codeBlock.alias.push(alias);\n }\n }\n }\n }\n\n walkTokens(env.tokens);\n });\n Prism.hooks.add('wrap', function (env) {\n if (env.type !== 'code-block') {\n return;\n }\n\n var codeLang = '';\n\n for (var i = 0, l = env.classes.length; i < l; i++) {\n var cls = env.classes[i];\n var match = /language-(.+)/.exec(cls);\n\n if (match) {\n codeLang = match[1];\n break;\n }\n }\n\n var grammar = Prism.languages[codeLang];\n\n if (!grammar) {\n if (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n var id = 'md-' + new Date().valueOf() + '-' + Math.floor(Math.random() * 1e16);\n env.attributes['id'] = id;\n Prism.plugins.autoloader.loadLanguages(codeLang, function () {\n var ele = document.getElementById(id);\n\n if (ele) {\n ele.innerHTML = Prism.highlight(ele.textContent, Prism.languages[codeLang], codeLang);\n }\n });\n }\n } else {\n // reverse Prism.util.encode\n var code = env.content.replace(/&lt;/g, '<').replace(/&amp;/g, '&');\n env.content = Prism.highlight(code, grammar, codeLang);\n }\n });\n Prism.languages.md = Prism.languages.markdown;\n})(Prism);\n/* \"prismjs/components/prism-objectivec\" */\n\n\nPrism.languages.objectivec = Prism.languages.extend('c', {\n 'string': /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n 'keyword': /\\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n 'operator': /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\ndelete Prism.languages.objectivec['class-name'];\nPrism.languages.objc = Prism.languages.objectivec;\n/* \"prismjs/components/prism-ocaml\" */\n\nPrism.languages.ocaml = {\n 'comment': /\\(\\*[\\s\\S]*?\\*\\)/,\n 'string': [{\n pattern: /\"(?:\\\\.|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n }, {\n pattern: /(['`])(?:\\\\(?:\\d+|x[\\da-f]+|.)|(?!\\1)[^\\\\\\r\\n])\\1/i,\n greedy: true\n }],\n 'number': /\\b(?:0x[\\da-f][\\da-f_]+|(?:0[bo])?\\d[\\d_]*(?:\\.[\\d_]*)?(?:e[+-]?[\\d_]+)?)/i,\n 'directive': {\n pattern: /\\B#\\w+/,\n alias: 'important'\n },\n 'label': {\n pattern: /\\B~\\w+/,\n alias: 'function'\n },\n 'type-variable': {\n pattern: /\\B'\\w+/,\n alias: 'function'\n },\n 'variant': {\n pattern: /`\\w+/,\n alias: 'variable'\n },\n 'module': {\n pattern: /\\b[A-Z]\\w+/,\n alias: 'variable'\n },\n // For the list of keywords and operators,\n // see: http://caml.inria.fr/pub/docs/manual-ocaml/lex.html#sec84\n 'keyword': /\\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\\b/,\n 'boolean': /\\b(?:false|true)\\b/,\n // Custom operators are allowed\n 'operator': /:=|[=<>@^|&+\\-*\\/$%!?~][!$%&*+\\-.\\/:<=>?@^|~]*|\\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\\b/,\n 'punctuation': /[(){}\\[\\]|.,:;]|\\b_\\b/\n};\n/* \"prismjs/components/prism-python\" */\n\nPrism.languages.python = {\n 'comment': {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true\n },\n 'string-interpolation': {\n pattern: /(?:f|rf|fr)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n greedy: true,\n inside: {\n 'interpolation': {\n // \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n pattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,\n lookbehind: true,\n inside: {\n 'format-spec': {\n pattern: /(:)[^:(){}]+(?=}$)/,\n lookbehind: true\n },\n 'conversion-option': {\n pattern: /![sra](?=[:}]$)/,\n alias: 'punctuation'\n },\n rest: null\n }\n },\n 'string': /[\\s\\S]+/\n }\n },\n 'triple-quoted-string': {\n pattern: /(?:[rub]|rb|br)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n greedy: true,\n alias: 'string'\n },\n 'string': {\n pattern: /(?:[rub]|rb|br)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n greedy: true\n },\n 'function': {\n pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n lookbehind: true\n },\n 'class-name': {\n pattern: /(\\bclass\\s+)\\w+/i,\n lookbehind: true\n },\n 'decorator': {\n pattern: /(^\\s*)@\\w+(?:\\.\\w+)*/im,\n lookbehind: true,\n alias: ['annotation', 'punctuation'],\n inside: {\n 'punctuation': /\\./\n }\n },\n 'keyword': /\\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n 'builtin': /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n 'boolean': /\\b(?:True|False|None)\\b/,\n 'number': /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n 'operator': /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n 'punctuation': /[{}[\\];(),.:]/\n};\nPrism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python;\nPrism.languages.py = Prism.languages.python;\n/* \"prismjs/components/prism-reason\" */\n\nPrism.languages.reason = Prism.languages.extend('clike', {\n 'string': {\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n },\n // 'class-name' must be matched *after* 'constructor' defined below\n 'class-name': /\\b[A-Z]\\w*/,\n 'keyword': /\\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\\b/,\n 'operator': /\\.{3}|:[:=]|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:mod|land|lor|lxor|lsl|lsr|asr)\\b/\n});\nPrism.languages.insertBefore('reason', 'class-name', {\n 'character': {\n pattern: /'(?:\\\\x[\\da-f]{2}|\\\\o[0-3][0-7][0-7]|\\\\\\d{3}|\\\\.|[^'\\\\\\r\\n])'/,\n alias: 'string'\n },\n 'constructor': {\n // Negative look-ahead prevents from matching things like String.capitalize\n pattern: /\\b[A-Z]\\w*\\b(?!\\s*\\.)/,\n alias: 'variable'\n },\n 'label': {\n pattern: /\\b[a-z]\\w*(?=::)/,\n alias: 'symbol'\n }\n}); // We can't match functions property, so let's not even try.\n\ndelete Prism.languages.reason.function;\n/* \"prismjs/components/prism-sass\" */\n\n(function (Prism) {\n Prism.languages.sass = Prism.languages.extend('css', {\n // Sass comments don't need to be closed, only indented\n 'comment': {\n pattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t].+)*/m,\n lookbehind: true\n }\n });\n Prism.languages.insertBefore('sass', 'atrule', {\n // We want to consume the whole line\n 'atrule-line': {\n // Includes support for = and + shortcuts\n pattern: /^(?:[ \\t]*)[@+=].+/m,\n inside: {\n 'atrule': /(?:@[\\w-]+|[+=])/m\n }\n }\n });\n delete Prism.languages.sass.atrule;\n var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/;\n var operator = [/[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|or|not)\\b/, {\n pattern: /(\\s+)-(?=\\s)/,\n lookbehind: true\n }];\n Prism.languages.insertBefore('sass', 'property', {\n // We want to consume the whole line\n 'variable-line': {\n pattern: /^[ \\t]*\\$.+/m,\n inside: {\n 'punctuation': /:/,\n 'variable': variable,\n 'operator': operator\n }\n },\n // We want to consume the whole line\n 'property-line': {\n pattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s].*)/m,\n inside: {\n 'property': [/[^:\\s]+(?=\\s*:)/, {\n pattern: /(:)[^:\\s]+/,\n lookbehind: true\n }],\n 'punctuation': /:/,\n 'variable': variable,\n 'operator': operator,\n 'important': Prism.languages.sass.important\n }\n }\n });\n delete Prism.languages.sass.property;\n delete Prism.languages.sass.important; // Now that whole lines for other patterns are consumed,\n // what's left should be selectors\n\n Prism.languages.insertBefore('sass', 'punctuation', {\n 'selector': {\n pattern: /([ \\t]*)\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*)*/,\n lookbehind: true\n }\n });\n})(Prism);\n/* \"prismjs/components/prism-scss\" */\n\n\nPrism.languages.scss = Prism.languages.extend('css', {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n 'atrule': {\n pattern: /@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,\n inside: {\n 'rule': /@[\\w-]+/ // See rest below\n\n }\n },\n // url, compassified\n 'url': /(?:[-a-z]+-)?url(?=\\()/i,\n // CSS selector regex is not appropriate for Sass\n // since there can be lot more things (var, @ directive, nesting..)\n // a selector must start at the end of a property or after a brace (end of other rules or nesting)\n // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable\n // the end of a selector is found when there is no rules in it ( {} or {\\s}) or if there is a property (because an interpolated var\n // can \"pass\" as a selector- e.g: proper#{$erty})\n // this one was hard to do, so please be careful if you edit this one :)\n 'selector': {\n // Initial look-ahead is used to prevent matching of blank selectors\n pattern: /(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]+))/m,\n inside: {\n 'parent': {\n pattern: /&/,\n alias: 'important'\n },\n 'placeholder': /%[-\\w]+/,\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n },\n 'property': {\n pattern: /(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,\n inside: {\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n }\n});\nPrism.languages.insertBefore('scss', 'atrule', {\n 'keyword': [/@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\\b/i, {\n pattern: /( +)(?:from|through)(?= )/,\n lookbehind: true\n }]\n});\nPrism.languages.insertBefore('scss', 'important', {\n // var and interpolated vars\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n});\nPrism.languages.insertBefore('scss', 'function', {\n 'module-modifier': {\n pattern: /\\b(?:as|with|show|hide)\\b/i,\n alias: 'keyword'\n },\n 'placeholder': {\n pattern: /%[-\\w]+/,\n alias: 'selector'\n },\n 'statement': {\n pattern: /\\B!(?:default|optional)\\b/i,\n alias: 'keyword'\n },\n 'boolean': /\\b(?:true|false)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n },\n 'operator': {\n pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|or|not)(?=\\s)/,\n lookbehind: true\n }\n});\nPrism.languages.scss['atrule'].inside.rest = Prism.languages.scss;\n/* \"prismjs/components/prism-sql\" */\n\nPrism.languages.sql = {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n 'variable': [{\n pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n greedy: true\n }, /@[\\w.$]+/],\n 'string': {\n pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n greedy: true,\n lookbehind: true\n },\n 'function': /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i,\n // Should we highlight user defined functions too?\n 'keyword': /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n 'boolean': /\\b(?:TRUE|FALSE|NULL)\\b/i,\n 'number': /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n 'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n 'punctuation': /[;[\\]()`,.]/\n};\n/* \"prismjs/components/prism-stylus\" */\n\n(function (Prism) {\n var unit = {\n pattern: /(\\b\\d+)(?:%|[a-z]+)/,\n lookbehind: true\n }; // 123 -123 .123 -.123 12.3 -12.3\n\n var number = {\n pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n lookbehind: true\n };\n var inside = {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n 'url': {\n pattern: /url\\(([\"']?).*?\\1\\)/i,\n greedy: true\n },\n 'string': {\n pattern: /(\"|')(?:(?!\\1)[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\\1/,\n greedy: true\n },\n 'interpolation': null,\n // See below\n 'func': null,\n // See below\n 'important': /\\B!(?:important|optional)\\b/i,\n 'keyword': {\n pattern: /(^|\\s+)(?:(?:if|else|for|return|unless)(?=\\s+|$)|@[\\w-]+)/,\n lookbehind: true\n },\n 'hexcode': /#[\\da-f]{3,6}/i,\n 'color': [/\\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\\b/i, {\n pattern: /\\b(?:rgb|hsl)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:rgb|hsl)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n inside: {\n 'unit': unit,\n 'number': number,\n 'function': /[\\w-]+(?=\\()/,\n 'punctuation': /[(),]/\n }\n }],\n 'entity': /\\\\[\\da-f]{1,8}/i,\n 'unit': unit,\n 'boolean': /\\b(?:true|false)\\b/,\n 'operator': [// We want non-word chars around \"-\" because it is\n // accepted in property names.\n /~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.{2,3}|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/],\n 'number': number,\n 'punctuation': /[{}()\\[\\];:,]/\n };\n inside['interpolation'] = {\n pattern: /\\{[^\\r\\n}:]+\\}/,\n alias: 'variable',\n inside: {\n 'delimiter': {\n pattern: /^{|}$/,\n alias: 'punctuation'\n },\n rest: inside\n }\n };\n inside['func'] = {\n pattern: /[\\w-]+\\([^)]*\\).*/,\n inside: {\n 'function': /^[^(]+/,\n rest: inside\n }\n };\n Prism.languages.stylus = {\n 'atrule-declaration': {\n pattern: /(^\\s*)@.+/m,\n lookbehind: true,\n inside: {\n 'atrule': /^@[\\w-]+/,\n rest: inside\n }\n },\n 'variable-declaration': {\n pattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:\\{[^{}]*\\}|\\S.*|$)/m,\n lookbehind: true,\n inside: {\n 'variable': /^\\S+/,\n rest: inside\n }\n },\n 'statement': {\n pattern: /(^[ \\t]*)(?:if|else|for|return|unless)[ \\t].+/m,\n lookbehind: true,\n inside: {\n 'keyword': /^\\S+/,\n rest: inside\n }\n },\n // A property/value pair cannot end with a comma or a brace\n // It cannot have indented content unless it ended with a semicolon\n 'property-declaration': {\n pattern: /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)(?!\\s)[^{\\r\\n]*(?:;|[^{\\r\\n,](?=$)(?!(?:\\r?\\n|\\r)(?:\\{|\\2[ \\t]+)))/m,\n lookbehind: true,\n inside: {\n 'property': {\n pattern: /^[^\\s:]+/,\n inside: {\n 'interpolation': inside.interpolation\n }\n },\n rest: inside\n }\n },\n // A selector can contain parentheses only as part of a pseudo-element\n // It can span multiple lines.\n // It must end with a comma or an accolade or have indented content.\n 'selector': {\n pattern: /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t]+)))/m,\n lookbehind: true,\n inside: {\n 'interpolation': inside.interpolation,\n 'comment': inside.comment,\n 'punctuation': /[{},]/\n }\n },\n 'func': inside.func,\n 'string': inside.string,\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true,\n greedy: true\n },\n 'interpolation': inside.interpolation,\n 'punctuation': /[{}()\\[\\];:.]/\n };\n})(Prism);\n/* \"prismjs/components/prism-typescript\" */\n\n\n(function (Prism) {\n Prism.languages.typescript = Prism.languages.extend('javascript', {\n 'class-name': {\n pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n lookbehind: true,\n greedy: true,\n inside: null // see below\n\n },\n // From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words\n 'keyword': /\\b(?:abstract|as|asserts|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|undefined|var|void|while|with|yield)\\b/,\n 'builtin': /\\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\\b/\n }); // doesn't work with TS because TS is too complex\n\n delete Prism.languages.typescript['parameter']; // a version of typescript specifically for highlighting types\n\n var typeInside = Prism.languages.extend('typescript', {});\n delete typeInside['class-name'];\n Prism.languages.typescript['class-name'].inside = typeInside;\n Prism.languages.insertBefore('typescript', 'function', {\n 'generic-function': {\n // e.g. foo<T extends \"bar\" | \"baz\">( ...\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n greedy: true,\n inside: {\n 'function': /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n 'generic': {\n pattern: /<[\\s\\S]+/,\n // everything after the first <\n alias: 'class-name',\n inside: typeInside\n }\n }\n }\n });\n Prism.languages.ts = Prism.languages.typescript;\n})(Prism);\n/* \"prismjs/components/prism-tsx\" */\n\n\n(function (Prism) {\n var typescript = Prism.util.clone(Prism.languages.typescript);\n Prism.languages.tsx = Prism.languages.extend('jsx', typescript); // This will prevent collisions between TSX tags and TS generic types.\n // Idea by https://github.com/karlhorky\n // Discussion: https://github.com/PrismJS/prism/issues/2594#issuecomment-710666928\n\n var tag = Prism.languages.tsx.tag;\n tag.pattern = RegExp(/(^|[^\\w$]|(?=<\\/))/.source + '(?:' + tag.pattern.source + ')', tag.pattern.flags);\n tag.lookbehind = true;\n})(Prism);\n/* \"prismjs/components/prism-wasm\" */\n\n\nPrism.languages.wasm = {\n 'comment': [/\\(;[\\s\\S]*?;\\)/, {\n pattern: /;;.*/,\n greedy: true\n }],\n 'string': {\n pattern: /\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n greedy: true\n },\n 'keyword': [{\n pattern: /\\b(?:align|offset)=/,\n inside: {\n 'operator': /=/\n }\n }, {\n pattern: /\\b(?:(?:f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))?|memory\\.(?:grow|size))\\b/,\n inside: {\n 'punctuation': /\\./\n }\n }, /\\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\\b/],\n 'variable': /\\$[\\w!#$%&'*+\\-./:<=>?@\\\\^_`|~]+/i,\n 'number': /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/,\n 'punctuation': /[()]/\n};\n/* \"prismjs/components/prism-yaml\" */\n\n(function (Prism) {\n // https://yaml.org/spec/1.2/spec.html#c-ns-anchor-property\n // https://yaml.org/spec/1.2/spec.html#c-ns-alias-node\n var anchorOrAlias = /[*&][^\\s[\\]{},]+/; // https://yaml.org/spec/1.2/spec.html#c-ns-tag-property\n\n var tag = /!(?:<[\\w\\-%#;/?:@&=+$,.!~*'()[\\]]+>|(?:[a-zA-Z\\d-]*!)?[\\w\\-%#;/?:@&=+$.~*'()]+)?/; // https://yaml.org/spec/1.2/spec.html#c-ns-properties(n,c)\n\n var properties = '(?:' + tag.source + '(?:[ \\t]+' + anchorOrAlias.source + ')?|' + anchorOrAlias.source + '(?:[ \\t]+' + tag.source + ')?)'; // https://yaml.org/spec/1.2/spec.html#ns-plain(n,c)\n // This is a simplified version that doesn't support \"#\" and multiline keys\n // All these long scarry character classes are simplified versions of YAML's characters\n\n var plainKey = /(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-]<PLAIN>)(?:[ \\t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g, function () {\n return /[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]/.source;\n });\n var string = /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/.source;\n /**\n *\n * @param {string} value\n * @param {string} [flags]\n * @returns {RegExp}\n */\n\n function createValuePattern(value, flags) {\n flags = (flags || '').replace(/m/g, '') + 'm'; // add m flag\n\n var pattern = /([:\\-,[{]\\s*(?:\\s<<prop>>[ \\t]+)?)(?:<<value>>)(?=[ \\t]*(?:$|,|]|}|(?:[\\r\\n]\\s*)?#))/.source.replace(/<<prop>>/g, function () {\n return properties;\n }).replace(/<<value>>/g, function () {\n return value;\n });\n return RegExp(pattern, flags);\n }\n\n Prism.languages.yaml = {\n 'scalar': {\n pattern: RegExp(/([\\-:]\\s*(?:\\s<<prop>>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)/.source.replace(/<<prop>>/g, function () {\n return properties;\n })),\n lookbehind: true,\n alias: 'string'\n },\n 'comment': /#.*/,\n 'key': {\n pattern: RegExp(/((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<<prop>>[ \\t]+)?)<<key>>(?=\\s*:\\s)/.source.replace(/<<prop>>/g, function () {\n return properties;\n }).replace(/<<key>>/g, function () {\n return '(?:' + plainKey + '|' + string + ')';\n })),\n lookbehind: true,\n greedy: true,\n alias: 'atrule'\n },\n 'directive': {\n pattern: /(^[ \\t]*)%.+/m,\n lookbehind: true,\n alias: 'important'\n },\n 'datetime': {\n pattern: createValuePattern(/\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?/.source),\n lookbehind: true,\n alias: 'number'\n },\n 'boolean': {\n pattern: createValuePattern(/true|false/.source, 'i'),\n lookbehind: true,\n alias: 'important'\n },\n 'null': {\n pattern: createValuePattern(/null|~/.source, 'i'),\n lookbehind: true,\n alias: 'important'\n },\n 'string': {\n pattern: createValuePattern(string),\n lookbehind: true,\n greedy: true\n },\n 'number': {\n pattern: createValuePattern(/[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.?\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)/.source, 'i'),\n lookbehind: true\n },\n 'tag': tag,\n 'important': anchorOrAlias,\n 'punctuation': /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n };\n Prism.languages.yml = Prism.languages.yaml;\n})(Prism);\n\nexport default Prism;\n","// Duotone Dark\n// Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes)\n// Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-evening-dark.css)\n// Generated with Base16 Builder (https://github.com/base16-builder/base16-builder)\nvar theme = {\n plain: {\n backgroundColor: \"#2a2734\",\n color: \"#9a86fd\"\n },\n styles: [{\n types: [\"comment\", \"prolog\", \"doctype\", \"cdata\", \"punctuation\"],\n style: {\n color: \"#6c6783\"\n }\n }, {\n types: [\"namespace\"],\n style: {\n opacity: 0.7\n }\n }, {\n types: [\"tag\", \"operator\", \"number\"],\n style: {\n color: \"#e09142\"\n }\n }, {\n types: [\"property\", \"function\"],\n style: {\n color: \"#9a86fd\"\n }\n }, {\n types: [\"tag-id\", \"selector\", \"atrule-id\"],\n style: {\n color: \"#eeebff\"\n }\n }, {\n types: [\"attr-name\"],\n style: {\n color: \"#c4b9fe\"\n }\n }, {\n types: [\"boolean\", \"string\", \"entity\", \"url\", \"attr-value\", \"keyword\", \"control\", \"directive\", \"unit\", \"statement\", \"regex\", \"at-rule\", \"placeholder\", \"variable\"],\n style: {\n color: \"#ffcc99\"\n }\n }, {\n types: [\"deleted\"],\n style: {\n textDecorationLine: \"line-through\"\n }\n }, {\n types: [\"inserted\"],\n style: {\n textDecorationLine: \"underline\"\n }\n }, {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n }, {\n types: [\"important\", \"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n }, {\n types: [\"important\"],\n style: {\n color: \"#c4b9fe\"\n }\n }]\n};\n\nexport default theme;\n","import Prism from '../prism/index.js';\nexport { default as Prism } from '../prism/index.js';\nimport theme from '../themes/duotoneDark';\nimport { Component } from 'react';\n\nvar defaultProps = {\n // $FlowFixMe\n Prism: Prism,\n theme: theme\n};\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar newlineRe = /\\r\\n|\\r|\\n/; // Empty lines need to contain a single empty token, denoted with { empty: true }\n\nvar normalizeEmptyLines = function (line) {\n if (line.length === 0) {\n line.push({\n types: [\"plain\"],\n content: \"\\n\",\n empty: true\n });\n } else if (line.length === 1 && line[0].content === \"\") {\n line[0].content = \"\\n\";\n line[0].empty = true;\n }\n};\n\nvar appendTypes = function (types, add) {\n var typesSize = types.length;\n\n if (typesSize > 0 && types[typesSize - 1] === add) {\n return types;\n }\n\n return types.concat(add);\n}; // Takes an array of Prism's tokens and groups them by line, turning plain\n// strings into tokens as well. Tokens can become recursive in some cases,\n// which means that their types are concatenated. Plain-string tokens however\n// are always of type \"plain\".\n// This is not recursive to avoid exceeding the call-stack limit, since it's unclear\n// how nested Prism's tokens can become\n\n\nvar normalizeTokens = function (tokens) {\n var typeArrStack = [[]];\n var tokenArrStack = [tokens];\n var tokenArrIndexStack = [0];\n var tokenArrSizeStack = [tokens.length];\n var i = 0;\n var stackIndex = 0;\n var currentLine = [];\n var acc = [currentLine];\n\n while (stackIndex > -1) {\n while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) {\n var content = void 0;\n var types = typeArrStack[stackIndex];\n var tokenArr = tokenArrStack[stackIndex];\n var token = tokenArr[i]; // Determine content and append type to types if necessary\n\n if (typeof token === \"string\") {\n types = stackIndex > 0 ? types : [\"plain\"];\n content = token;\n } else {\n types = appendTypes(types, token.type);\n\n if (token.alias) {\n types = appendTypes(types, token.alias);\n }\n\n content = token.content;\n } // If token.content is an array, increase the stack depth and repeat this while-loop\n\n\n if (typeof content !== \"string\") {\n stackIndex++;\n typeArrStack.push(types);\n tokenArrStack.push(content);\n tokenArrIndexStack.push(0);\n tokenArrSizeStack.push(content.length);\n continue;\n } // Split by newlines\n\n\n var splitByNewlines = content.split(newlineRe);\n var newlineCount = splitByNewlines.length;\n currentLine.push({\n types: types,\n content: splitByNewlines[0]\n }); // Create a new line for each string on a new line\n\n for (var i$1 = 1; i$1 < newlineCount; i$1++) {\n normalizeEmptyLines(currentLine);\n acc.push(currentLine = []);\n currentLine.push({\n types: types,\n content: splitByNewlines[i$1]\n });\n }\n } // Decreate the stack depth\n\n\n stackIndex--;\n typeArrStack.pop();\n tokenArrStack.pop();\n tokenArrIndexStack.pop();\n tokenArrSizeStack.pop();\n }\n\n normalizeEmptyLines(currentLine);\n return acc;\n};\n\nvar themeToDict = function (theme, language) {\n var plain = theme.plain; // $FlowFixMe\n\n var base = Object.create(null);\n var themeDict = theme.styles.reduce(function (acc, themeEntry) {\n var languages = themeEntry.languages;\n var style = themeEntry.style;\n\n if (languages && !languages.includes(language)) {\n return acc;\n }\n\n themeEntry.types.forEach(function (type) {\n // $FlowFixMe\n var accStyle = _extends({}, acc[type], style);\n\n acc[type] = accStyle;\n });\n return acc;\n }, base); // $FlowFixMe\n\n themeDict.root = plain; // $FlowFixMe\n\n themeDict.plain = _extends({}, plain, {\n backgroundColor: null\n });\n return themeDict;\n};\n\nfunction objectWithoutProperties(obj, exclude) {\n var target = {};\n\n for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n\n return target;\n}\n\nvar Highlight = /*@__PURE__*/function (Component) {\n function Highlight() {\n var this$1 = this;\n var args = [],\n len = arguments.length;\n\n while (len--) args[len] = arguments[len];\n\n Component.apply(this, args);\n\n _defineProperty(this, \"getThemeDict\", function (props) {\n if (this$1.themeDict !== undefined && props.theme === this$1.prevTheme && props.language === this$1.prevLanguage) {\n return this$1.themeDict;\n }\n\n this$1.prevTheme = props.theme;\n this$1.prevLanguage = props.language;\n var themeDict = props.theme ? themeToDict(props.theme, props.language) : undefined;\n return this$1.themeDict = themeDict;\n });\n\n _defineProperty(this, \"getLineProps\", function (ref) {\n var key = ref.key;\n var className = ref.className;\n var style = ref.style;\n var rest$1 = objectWithoutProperties(ref, [\"key\", \"className\", \"style\", \"line\"]);\n var rest = rest$1;\n\n var output = _extends({}, rest, {\n className: \"token-line\",\n style: undefined,\n key: undefined\n });\n\n var themeDict = this$1.getThemeDict(this$1.props);\n\n if (themeDict !== undefined) {\n output.style = themeDict.plain;\n }\n\n if (style !== undefined) {\n output.style = output.style !== undefined ? _extends({}, output.style, style) : style;\n }\n\n if (key !== undefined) {\n output.key = key;\n }\n\n if (className) {\n output.className += \" \" + className;\n }\n\n return output;\n });\n\n _defineProperty(this, \"getStyleForToken\", function (ref) {\n var types = ref.types;\n var empty = ref.empty;\n var typesSize = types.length;\n var themeDict = this$1.getThemeDict(this$1.props);\n\n if (themeDict === undefined) {\n return undefined;\n } else if (typesSize === 1 && types[0] === \"plain\") {\n return empty ? {\n display: \"inline-block\"\n } : undefined;\n } else if (typesSize === 1 && !empty) {\n return themeDict[types[0]];\n }\n\n var baseStyle = empty ? {\n display: \"inline-block\"\n } : {}; // $FlowFixMe\n\n var typeStyles = types.map(function (type) {\n return themeDict[type];\n });\n return Object.assign.apply(Object, [baseStyle].concat(typeStyles));\n });\n\n _defineProperty(this, \"getTokenProps\", function (ref) {\n var key = ref.key;\n var className = ref.className;\n var style = ref.style;\n var token = ref.token;\n var rest$1 = objectWithoutProperties(ref, [\"key\", \"className\", \"style\", \"token\"]);\n var rest = rest$1;\n\n var output = _extends({}, rest, {\n className: \"token \" + token.types.join(\" \"),\n children: token.content,\n style: this$1.getStyleForToken(token),\n key: undefined\n });\n\n if (style !== undefined) {\n output.style = output.style !== undefined ? _extends({}, output.style, style) : style;\n }\n\n if (key !== undefined) {\n output.key = key;\n }\n\n if (className) {\n output.className += \" \" + className;\n }\n\n return output;\n });\n\n _defineProperty(this, \"tokenize\", function (Prism, code, grammar, language) {\n var env = {\n code: code,\n grammar: grammar,\n language: language,\n tokens: []\n };\n Prism.hooks.run(\"before-tokenize\", env);\n var tokens = env.tokens = Prism.tokenize(env.code, env.grammar, env.language);\n Prism.hooks.run(\"after-tokenize\", env);\n return tokens;\n });\n }\n\n if (Component) Highlight.__proto__ = Component;\n Highlight.prototype = Object.create(Component && Component.prototype);\n Highlight.prototype.constructor = Highlight;\n\n Highlight.prototype.render = function render() {\n var ref = this.props;\n var Prism = ref.Prism;\n var language = ref.language;\n var code = ref.code;\n var children = ref.children;\n var themeDict = this.getThemeDict(this.props);\n var grammar = Prism.languages[language];\n var mixedTokens = grammar !== undefined ? this.tokenize(Prism, code, grammar, language) : [code];\n var tokens = normalizeTokens(mixedTokens);\n return children({\n tokens: tokens,\n className: \"prism-code language-\" + language,\n style: themeDict !== undefined ? themeDict.root : {},\n getLineProps: this.getLineProps,\n getTokenProps: this.getTokenProps\n });\n };\n\n return Highlight;\n}(Component);\n\nexport default Highlight;\nexport { defaultProps };\n","import { useClickable, UseClickableProps } from \"@chakra-ui/clickable\"\nimport { createDescendantContext } from \"@chakra-ui/descendant\"\nimport {\n useControllableState,\n useId,\n useSafeLayoutEffect,\n} from \"@chakra-ui/hooks\"\nimport {\n createContext,\n EventKeyMap,\n getValidChildren,\n mergeRefs,\n} from \"@chakra-ui/react-utils\"\nimport {\n callAllHandlers,\n determineLazyBehavior,\n Dict,\n focus,\n isUndefined,\n LazyBehavior,\n normalizeEventKey,\n} from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\n/* -------------------------------------------------------------------------------------------------\n * Create context to track descendants and their indices\n * -----------------------------------------------------------------------------------------------*/\n\nexport const [\n TabsDescendantsProvider,\n useTabsDescendantsContext,\n useTabsDescendants,\n useTabsDescendant,\n] = createDescendantContext<HTMLButtonElement>()\n\n/* -------------------------------------------------------------------------------------------------\n * useTabs - The root react hook that manages all tab items\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface UseTabsProps {\n /**\n * The orientation of the tab list.\n */\n orientation?: \"vertical\" | \"horizontal\"\n /**\n * If `true`, the tabs will be manually activated and\n * display its panel by pressing Space or Enter.\n *\n * If `false`, the tabs will be automatically activated\n * and their panel is displayed when they receive focus.\n */\n isManual?: boolean\n /**\n * Callback when the index (controlled or un-controlled) changes.\n */\n onChange?: (index: number) => void\n /**\n * The index of the selected tab (in controlled mode)\n */\n index?: number\n /**\n * The initial index of the selected tab (in uncontrolled mode)\n */\n defaultIndex?: number\n /**\n * The id of the tab\n */\n id?: string\n /**\n * Performance 🚀:\n * If `true`, rendering of the tab panel's will be deferred until it is selected.\n */\n isLazy?: boolean\n /**\n * Performance 🚀:\n * The lazy behavior of tab panels' content when not active.\n * Only works when `isLazy={true}`\n *\n * - \"unmount\": The content of inactive tab panels are always unmounted.\n * - \"keepMounted\": The content of inactive tab panels is initially unmounted,\n * but stays mounted when selected.\n *\n * @default \"unmount\"\n */\n lazyBehavior?: LazyBehavior\n /**\n * The writing mode direction.\n *\n * - When in RTL, the left and right navigation is flipped\n */\n direction?: \"rtl\" | \"ltr\"\n}\n\n/**\n * Tabs hooks that provides all the states, and accessibility\n * helpers to keep all things working properly.\n *\n * Its returned object will be passed unto a Context Provider\n * so all child components can read from it.\n * There is no document link yet\n * @see Docs https://chakra-ui.com/docs/components/useTabs\n */\nexport function useTabs(props: UseTabsProps) {\n const {\n defaultIndex,\n onChange,\n index,\n isManual,\n isLazy,\n lazyBehavior = \"unmount\",\n orientation = \"horizontal\",\n direction = \"ltr\",\n ...htmlProps\n } = props\n\n /**\n * We use this to keep track of the index of the focused tab.\n *\n * Tabs can be automatically activated, this means selection follows focus.\n * When we navigate with the arrow keys, we move focus and selection to next/prev tab\n *\n * Tabs can also be manually activated, this means selection does not follow focus.\n * When we navigate with the arrow keys, we only move focus NOT selection. The user\n * will need not manually activate the tab using `Enter` or `Space`.\n *\n * This is why we need to keep track of the `focusedIndex` and `selectedIndex`\n */\n const [focusedIndex, setFocusedIndex] = React.useState(defaultIndex ?? 0)\n\n const [selectedIndex, setSelectedIndex] = useControllableState({\n defaultValue: defaultIndex ?? 0,\n value: index,\n onChange,\n })\n\n /**\n * Sync focused `index` with controlled `selectedIndex` (which is the `props.index`)\n */\n React.useEffect(() => {\n if (index != null) {\n setFocusedIndex(index)\n }\n }, [index])\n\n /**\n * Think of `useDescendants` as a register for the tab nodes.\n */\n const descendants = useTabsDescendants()\n\n /**\n * Generate a unique id or use user-provided id for the tabs widget\n */\n const id = useId(props.id, `tabs`)\n\n return {\n id,\n selectedIndex,\n focusedIndex,\n setSelectedIndex,\n setFocusedIndex,\n isManual,\n isLazy,\n lazyBehavior,\n orientation,\n descendants,\n direction,\n htmlProps,\n }\n}\n\nexport type UseTabsReturn = Omit<\n ReturnType<typeof useTabs>,\n \"htmlProps\" | \"descendants\"\n>\n\nexport const [TabsProvider, useTabsContext] = createContext<UseTabsReturn>({\n name: \"TabsContext\",\n errorMessage:\n \"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within <Tabs />\",\n})\n\ntype Child = React.ReactElement<any>\n\nexport interface UseTabListProps {\n children?: React.ReactNode\n onKeyDown?: React.KeyboardEventHandler\n ref?: React.Ref<any>\n}\n\n/**\n * Tabs hook to manage multiple tab buttons,\n * and ensures only one tab is selected per time.\n *\n * @param props props object for the tablist\n */\nexport function useTabList<P extends UseTabListProps>(props: P) {\n const { focusedIndex, orientation, direction } = useTabsContext()\n\n const descendants = useTabsDescendantsContext()\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n const nextTab = () => {\n const next = descendants.nextEnabled(focusedIndex)\n if (next) focus(next.node)\n }\n const prevTab = () => {\n const prev = descendants.prevEnabled(focusedIndex)\n if (prev) focus(prev.node)\n }\n const firstTab = () => {\n const first = descendants.firstEnabled()\n if (first) focus(first.node)\n }\n const lastTab = () => {\n const last = descendants.lastEnabled()\n if (last) focus(last.node)\n }\n\n const isHorizontal = orientation === \"horizontal\"\n const isVertical = orientation === \"vertical\"\n\n const eventKey = normalizeEventKey(event)\n\n const ArrowStart = direction === \"ltr\" ? \"ArrowLeft\" : \"ArrowRight\"\n const ArrowEnd = direction === \"ltr\" ? \"ArrowRight\" : \"ArrowLeft\"\n\n const keyMap: EventKeyMap = {\n [ArrowStart]: () => isHorizontal && prevTab(),\n [ArrowEnd]: () => isHorizontal && nextTab(),\n ArrowDown: () => isVertical && nextTab(),\n ArrowUp: () => isVertical && prevTab(),\n Home: firstTab,\n End: lastTab,\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [descendants, focusedIndex, orientation, direction],\n )\n\n return {\n ...props,\n role: \"tablist\",\n \"aria-orientation\": orientation,\n onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown),\n }\n}\n\nexport type UseTabListReturn = ReturnType<typeof useTabList>\n\nexport interface UseTabOptions {\n id?: string\n isSelected?: boolean\n panelId?: string\n /**\n * If `true`, the `Tab` won't be toggleable\n */\n isDisabled?: boolean\n}\n\nexport interface UseTabProps\n extends Omit<UseClickableProps, \"color\">,\n UseTabOptions {}\n\n/**\n * Tabs hook to manage each tab button.\n *\n * A tab can be disabled and focusable, or both,\n * hence the use of `useClickable` to handle this scenario\n */\nexport function useTab<P extends UseTabProps>(props: P) {\n const { isDisabled, isFocusable, ...htmlProps } = props\n\n const {\n setSelectedIndex,\n isManual,\n id,\n setFocusedIndex,\n selectedIndex,\n } = useTabsContext()\n\n const { index, register } = useTabsDescendant({\n disabled: isDisabled && !isFocusable,\n })\n\n const isSelected = index === selectedIndex\n\n const onClick = () => {\n setSelectedIndex(index)\n }\n\n const onFocus = () => {\n setFocusedIndex(index)\n const isDisabledButFocusable = isDisabled && isFocusable\n const shouldSelect = !isManual && !isDisabledButFocusable\n if (shouldSelect) {\n setSelectedIndex(index)\n }\n }\n\n const clickableProps = useClickable({\n ...htmlProps,\n ref: mergeRefs(register, props.ref),\n isDisabled,\n isFocusable,\n onClick: callAllHandlers(props.onClick, onClick),\n })\n\n const type: \"button\" | \"submit\" | \"reset\" = \"button\"\n\n return {\n ...clickableProps,\n id: makeTabId(id, index),\n role: \"tab\",\n tabIndex: isSelected ? 0 : -1,\n type,\n \"aria-selected\": isSelected,\n \"aria-controls\": makeTabPanelId(id, index),\n onFocus: isDisabled ? undefined : callAllHandlers(props.onFocus, onFocus),\n }\n}\n\nexport interface UseTabPanelsProps {\n children?: React.ReactNode\n}\n\n/**\n * Tabs hook for managing the visibility of multiple tab panels.\n *\n * Since only one panel can be show at a time, we use `cloneElement`\n * to inject `selected` panel to each TabPanel.\n *\n * It returns a cloned version of its children with\n * all functionality included.\n */\nexport function useTabPanels<P extends UseTabPanelsProps>(props: P) {\n const context = useTabsContext()\n\n const { id, selectedIndex } = context\n\n const validChildren = getValidChildren(props.children)\n\n const children = validChildren.map((child, index) =>\n React.cloneElement(child as Child, {\n isSelected: index === selectedIndex,\n id: makeTabPanelId(id, index),\n // Refers to the associated tab element, and also provides an accessible name to the tab panel.\n \"aria-labelledby\": makeTabId(id, index),\n }),\n )\n\n return { ...props, children }\n}\n\n/**\n * Tabs hook for managing the visible/hidden states\n * of the tab panel.\n *\n * @param props props object for the tab panel\n */\nexport function useTabPanel(props: Dict) {\n const { isSelected, id, children, ...htmlProps } = props\n const { isLazy, lazyBehavior } = useTabsContext()\n\n const hasBeenSelected = React.useRef(false)\n if (isSelected) {\n hasBeenSelected.current = true\n }\n\n const shouldRenderChildren = determineLazyBehavior({\n hasBeenSelected: hasBeenSelected.current,\n isSelected,\n isLazy,\n lazyBehavior,\n })\n\n return {\n // Puts the tabpanel in the page `Tab` sequence.\n tabIndex: 0,\n ...htmlProps,\n children: shouldRenderChildren ? children : null,\n role: \"tabpanel\",\n hidden: !isSelected,\n id,\n }\n}\n\n/**\n * Tabs hook to show an animated indicators that\n * follows the active tab.\n *\n * The way we do it is by measuring the DOM Rect (or dimensions)\n * of the active tab, and return that as CSS style for\n * the indicator.\n */\nexport function useTabIndicator(): React.CSSProperties {\n const context = useTabsContext()\n const descendants = useTabsDescendantsContext()\n\n const { selectedIndex, orientation } = context\n\n const isHorizontal = orientation === \"horizontal\"\n const isVertical = orientation === \"vertical\"\n\n // Get the clientRect of the selected tab\n const [rect, setRect] = React.useState(() => {\n if (isHorizontal) return { left: 0, width: 0 }\n if (isVertical) return { top: 0, height: 0 }\n return undefined\n })\n\n const [hasMeasured, setHasMeasured] = React.useState(false)\n\n // Update the selected tab rect when the selectedIndex changes\n useSafeLayoutEffect(() => {\n if (isUndefined(selectedIndex)) return undefined\n\n const tab = descendants.item(selectedIndex)\n if (isUndefined(tab)) return undefined\n\n // Horizontal Tab: Calculate width and left distance\n if (isHorizontal) {\n setRect({ left: tab.node.offsetLeft, width: tab.node.offsetWidth })\n }\n\n // Vertical Tab: Calculate height and top distance\n if (isVertical) {\n setRect({ top: tab.node.offsetTop, height: tab.node.offsetHeight })\n }\n\n // Prevent unwanted transition from 0 to measured rect\n // by setting the measured state in the next tick\n const id = requestAnimationFrame(() => {\n setHasMeasured(true)\n })\n\n return () => {\n if (id) {\n cancelAnimationFrame(id)\n }\n }\n }, [selectedIndex, isHorizontal, isVertical, descendants])\n\n return {\n position: \"absolute\",\n transitionProperty: \"left, right, top, bottom\",\n transitionDuration: hasMeasured ? \"200ms\" : \"0ms\",\n transitionTimingFunction: \"cubic-bezier(0, 0, 0.2, 1)\",\n ...rect,\n }\n}\n\nfunction makeTabId(id: string, index: number) {\n return `${id}--tab-${index}`\n}\n\nfunction makeTabPanelId(id: string, index: number) {\n return `${id}--tabpanel-${index}`\n}\n","import {\n chakra,\n forwardRef,\n omitThemingProps,\n StylesProvider,\n SystemStyleObject,\n ThemingProps,\n useMultiStyleConfig,\n useStyles,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { cx, omit, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\nimport {\n TabsDescendantsProvider,\n TabsProvider,\n useTab,\n useTabIndicator,\n useTabList,\n UseTabListProps,\n UseTabOptions,\n useTabPanel,\n useTabPanels,\n useTabs,\n UseTabsProps,\n} from \"./use-tabs\"\n\ninterface TabsOptions {\n /**\n * If `true`, tabs will stretch to width of the tablist.\n */\n isFitted?: boolean\n /**\n * The alignment of the tabs\n */\n align?: \"start\" | \"end\" | \"center\"\n}\n\nexport interface TabsProps\n extends UseTabsProps,\n ThemingProps<\"Tabs\">,\n Omit<HTMLChakraProps<\"div\">, \"onChange\">,\n TabsOptions {\n children: React.ReactNode\n}\n\n/**\n * Tabs\n *\n * Provides context and logic for all tabs components.\n */\nexport const Tabs = forwardRef<TabsProps, \"div\">((props, ref) => {\n const styles = useMultiStyleConfig(\"Tabs\", props)\n const { children, className, ...rest } = omitThemingProps(props)\n\n const { htmlProps, descendants, ...ctx } = useTabs(rest)\n const context = React.useMemo(() => ctx, [ctx])\n\n const rootProps = omit(htmlProps as any, [\"isFitted\"])\n\n return (\n <TabsDescendantsProvider value={descendants}>\n <TabsProvider value={context}>\n <StylesProvider value={styles}>\n <chakra.div\n className={cx(\"chakra-tabs\", className)}\n ref={ref}\n {...rootProps}\n __css={styles.root}\n >\n {children}\n </chakra.div>\n </StylesProvider>\n </TabsProvider>\n </TabsDescendantsProvider>\n )\n})\n\nif (__DEV__) {\n Tabs.displayName = \"Tabs\"\n}\n\nexport interface TabProps extends UseTabOptions, HTMLChakraProps<\"button\"> {}\n\n/**\n * Tab button used to activate a specific tab panel. It renders a `button`,\n * and is responsible for automatic and manual selection modes.\n */\nexport const Tab = forwardRef<TabProps, \"button\">((props, ref) => {\n const styles = useStyles()\n const tabProps = useTab({ ...props, ref })\n\n const tabStyles: SystemStyleObject = {\n outline: \"0\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...styles.tab,\n }\n\n return (\n <chakra.button\n {...tabProps}\n className={cx(\"chakra-tabs__tab\", props.className)}\n __css={tabStyles}\n />\n )\n})\n\nif (__DEV__) {\n Tab.displayName = \"Tab\"\n}\n\nexport interface TabListProps\n extends UseTabListProps,\n Omit<HTMLChakraProps<\"div\">, \"onKeyDown\" | \"ref\"> {}\n\n/**\n * TabList is used to manage a list of tab buttons. It renders a `div` by default,\n * and is responsible the keyboard interaction between tabs.\n */\nexport const TabList = forwardRef<TabListProps, \"div\">((props, ref) => {\n const tablistProps = useTabList({ ...props, ref })\n\n const styles = useStyles()\n\n const tablistStyles: SystemStyleObject = {\n display: \"flex\",\n ...styles.tablist,\n }\n\n return (\n <chakra.div\n {...tablistProps}\n className={cx(\"chakra-tabs__tablist\", props.className)}\n __css={tablistStyles}\n />\n )\n})\n\nif (__DEV__) {\n TabList.displayName = \"TabList\"\n}\n\nexport interface TabPanelProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * TabPanel\n * Used to render the content for a specific tab.\n */\nexport const TabPanel = forwardRef<TabPanelProps, \"div\">((props, ref) => {\n const panelProps = useTabPanel({ ...props, ref })\n const styles = useStyles()\n\n return (\n <chakra.div\n outline=\"0\"\n {...panelProps}\n className={cx(\"chakra-tabs__tab-panel\", props.className)}\n __css={styles.tabpanel}\n />\n )\n})\n\nif (__DEV__) {\n TabPanel.displayName = \"TabPanel\"\n}\n\nexport interface TabPanelsProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * TabPanel\n *\n * Used to manage the rendering of multiple tab panels. It uses\n * `cloneElement` to hide/show tab panels.\n *\n * It renders a `div` by default.\n */\nexport const TabPanels = forwardRef<TabPanelsProps, \"div\">((props, ref) => {\n const panelsProps = useTabPanels(props)\n const styles = useStyles()\n\n return (\n <chakra.div\n {...panelsProps}\n width=\"100%\"\n ref={ref}\n className={cx(\"chakra-tabs__tab-panels\", props.className)}\n __css={styles.tabpanels}\n />\n )\n})\n\nif (__DEV__) {\n TabPanels.displayName = \"TabPanels\"\n}\n\nexport interface TabIndicatorProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * TabIndicator\n *\n * Used to render an active tab indicator that animates between\n * selected tabs.\n */\nexport const TabIndicator = forwardRef<TabIndicatorProps, \"div\">(\n (props, ref) => {\n const indicatorStyle = useTabIndicator()\n const style = {\n ...props.style,\n ...indicatorStyle,\n }\n\n const styles = useStyles()\n\n return (\n <chakra.div\n ref={ref}\n {...props}\n className={cx(\"chakra-tabs__tab-indicator\", props.className)}\n style={style}\n __css={styles.indicator}\n />\n )\n },\n)\n\nif (__DEV__) {\n TabIndicator.displayName = \"TabIndicator\"\n}\n","import { useState, useCallback, useEffect } from \"react\"\nimport copy from \"copy-to-clipboard\"\n\nexport interface UseClipboardOptions {\n /**\n * timeout delay (in ms) to switch back to initial state once copied.\n */\n timeout?: number\n /**\n * Set the desired MIME type\n */\n format?: string\n}\n\n/**\n * React hook to copy content to clipboard\n *\n * @param text the text or value to copy\n * @param {Number} [optionsOrTimeout=1500] optionsOrTimeout - delay (in ms) to switch back to initial state once copied.\n * @param {Object} optionsOrTimeout\n * @param {string} optionsOrTimeout.format - set the desired MIME type\n * @param {number} optionsOrTimeout.timeout - delay (in ms) to switch back to initial state once copied.\n */\nexport function useClipboard(\n text: string,\n optionsOrTimeout: number | UseClipboardOptions = {},\n) {\n const [hasCopied, setHasCopied] = useState(false)\n\n const { timeout = 1500, ...copyOptions } =\n typeof optionsOrTimeout === \"number\"\n ? { timeout: optionsOrTimeout }\n : optionsOrTimeout\n\n const onCopy = useCallback(() => {\n const didCopy = copy(text, copyOptions)\n setHasCopied(didCopy)\n }, [text, copyOptions])\n\n useEffect(() => {\n let timeoutId: number | null = null\n\n if (hasCopied) {\n timeoutId = window.setTimeout(() => {\n setHasCopied(false)\n }, timeout)\n }\n\n return () => {\n if (timeoutId) {\n window.clearTimeout(timeoutId)\n }\n }\n }, [timeout, hasCopied])\n\n return { value: text, onCopy, hasCopied }\n}\n","import {\n chakra,\n forwardRef,\n omitThemingProps,\n ThemingProps,\n useStyleConfig,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { cx, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\nexport interface CodeProps\n extends HTMLChakraProps<\"code\">,\n ThemingProps<\"Code\"> {}\n\n/**\n * React component to render inline code snippets.\n *\n * @see Docs https://chakra-ui.com/code\n */\nexport const Code = forwardRef<CodeProps, \"code\">((props, ref) => {\n const styles = useStyleConfig(\"Code\", props)\n const { className, ...rest } = omitThemingProps(props)\n\n return (\n <chakra.code\n ref={ref}\n className={cx(\"chakra-code\", props.className)}\n {...rest}\n __css={{\n display: \"inline-block\",\n ...styles,\n }}\n />\n )\n})\n\nif (__DEV__) {\n Code.displayName = \"Code\"\n}\n","import {\n chakra,\n forwardRef,\n HTMLChakraProps,\n omitThemingProps,\n StylesProvider,\n ThemingProps,\n useMultiStyleConfig,\n useStyles,\n} from \"@chakra-ui/system\"\nimport { cx, __DEV__ } from \"@chakra-ui/utils\"\nimport * as React from \"react\"\n\nexport interface TableContainerProps extends HTMLChakraProps<\"div\"> {}\n\nexport const TableContainer = forwardRef<TableContainerProps, \"div\">(\n (props: HTMLChakraProps<\"div\">, ref) => {\n const { overflow, overflowX, className, ...rest } = props\n return (\n <chakra.div\n ref={ref}\n className={cx(\"chakra-table__container\", className)}\n {...rest}\n __css={{\n display: \"block\",\n whiteSpace: \"nowrap\",\n WebkitOverflowScrolling: \"touch\",\n overflowX: overflow ?? overflowX ?? \"auto\",\n overflowY: \"hidden\",\n maxWidth: \"100%\",\n }}\n />\n )\n },\n)\n\nexport interface TableProps\n extends HTMLChakraProps<\"table\">,\n ThemingProps<\"Table\"> {}\n\nexport const Table = forwardRef<TableProps, \"table\">((props, ref) => {\n const styles = useMultiStyleConfig(\"Table\", props)\n const { className, ...tableProps } = omitThemingProps(props)\n\n return (\n <StylesProvider value={styles}>\n <chakra.table\n role=\"table\"\n ref={ref}\n __css={styles.table}\n className={cx(\"chakra-table\", className)}\n {...tableProps}\n />\n </StylesProvider>\n )\n})\n\nif (__DEV__) {\n Table.displayName = \"Table\"\n}\n\nexport interface TableCaptionProps extends HTMLChakraProps<\"caption\"> {\n /**\n * The placement of the table caption. This sets the `caption-side` CSS attribute.\n * @default \"bottom\"\n */\n placement?: \"top\" | \"bottom\"\n}\n\nexport const TableCaption = forwardRef<TableCaptionProps, \"caption\">(\n (props, ref) => {\n const { placement = \"bottom\", ...rest } = props\n const styles = useStyles()\n return (\n <chakra.caption\n {...rest}\n ref={ref}\n __css={{\n ...styles.caption,\n captionSide: placement,\n }}\n />\n )\n },\n)\n\nif (__DEV__) {\n TableCaption.displayName = \"TableCaption\"\n}\n\nexport interface TableHeadProps extends HTMLChakraProps<\"thead\"> {}\n\nexport const Thead = forwardRef<TableHeadProps, \"thead\">((props, ref) => {\n const styles = useStyles()\n return <chakra.thead {...props} ref={ref} __css={styles.thead} />\n})\n\nexport interface TableBodyProps extends HTMLChakraProps<\"tbody\"> {}\n\nexport const Tbody = forwardRef<TableBodyProps, \"tbody\">((props, ref) => {\n const styles = useStyles()\n return <chakra.tbody {...props} ref={ref} __css={styles.tbody} />\n})\n\nexport interface TableFooterProps extends HTMLChakraProps<\"tfoot\"> {}\n\nexport const Tfoot = forwardRef<TableFooterProps, \"tfoot\">((props, ref) => {\n const styles = useStyles()\n return <chakra.tfoot {...props} ref={ref} __css={styles.tfoot} />\n})\n\nexport interface TableColumnHeaderProps extends HTMLChakraProps<\"th\"> {\n /**\n * Aligns the cell content to the right\n */\n isNumeric?: boolean\n}\nexport const Th = forwardRef<TableColumnHeaderProps, \"th\">(\n ({ isNumeric, ...rest }, ref) => {\n const styles = useStyles()\n return (\n <chakra.th\n {...rest}\n ref={ref}\n __css={styles.th}\n data-is-numeric={isNumeric}\n />\n )\n },\n)\n\nexport interface TableRowProps extends HTMLChakraProps<\"tr\"> {}\nexport const Tr = forwardRef<TableRowProps, \"tr\">((props, ref) => {\n const styles = useStyles()\n\n return <chakra.tr role=\"row\" {...props} ref={ref} __css={styles.tr} />\n})\n\nexport interface TableCellProps extends HTMLChakraProps<\"td\"> {\n /**\n * Aligns the cell content to the right\n */\n isNumeric?: boolean\n}\nexport const Td = forwardRef<TableCellProps, \"td\">(\n ({ isNumeric, ...rest }, ref) => {\n const styles = useStyles()\n\n return (\n <chakra.td\n role=\"gridcell\"\n {...rest}\n ref={ref}\n __css={styles.td}\n data-is-numeric={isNumeric}\n />\n )\n },\n)\n","import { Dict, isNumber, StringOrNumber } from \"@chakra-ui/utils\"\n\nexport default function createMediaQueries(breakpoints: Dict): MediaQuery[] {\n return (\n Object.entries(breakpoints)\n // sort css units in ascending order to ensure media queries are generated\n // in the correct order and reference to each other correctly aswell\n .sort((a, b) =>\n Number.parseInt(a[1], 10) > Number.parseInt(b[1], 10) ? 1 : -1,\n )\n .map(([breakpoint, minWidth], index, arr) => {\n // given a following breakpoint\n const next = arr[index + 1]\n // this breakpoint must end prior the threshold of the next\n const maxWidth = next ? next[1] : undefined\n const query = createMediaQueryString(minWidth, maxWidth)\n\n return {\n minWidth,\n maxWidth,\n breakpoint,\n query,\n }\n })\n )\n}\n\n/**\n * Create a media query string from the breakpoints,\n * using a combination of `min-width` and `max-width`.\n */\nfunction createMediaQueryString(minWidth: string, maxWidth?: string) {\n const hasMinWidth = parseInt(minWidth, 10) >= 0\n\n if (!hasMinWidth && !maxWidth) {\n return \"\"\n }\n\n let query = `(min-width: ${toMediaString(minWidth)})`\n\n if (!maxWidth) {\n return query\n }\n\n if (query) {\n query += \" and \"\n }\n\n query += `(max-width: ${toMediaString(subtract(maxWidth))})`\n\n return query\n}\n\ninterface MediaQuery {\n breakpoint: string\n maxWidth?: string\n minWidth: string\n query: string\n}\n\nconst measurementRegex = /(\\d+\\.?\\d*)/u\n\nconst calculateMeasurement = (\n value: StringOrNumber,\n modifier: number,\n): string => {\n if (typeof value === \"number\") {\n return `${value + modifier}`\n }\n\n return value.replace(\n measurementRegex,\n (match) => `${parseFloat(match) + modifier}`,\n )\n}\n\n/**\n * 0.01 and 0.1 are too small of a difference for `px` breakpoint values\n *\n * @see https://github.com/chakra-ui/chakra-ui/issues/2188#issuecomment-712774785\n */\nfunction subtract(value: string) {\n return calculateMeasurement(value, value.endsWith(\"px\") ? -1 : -0.01)\n}\n\n/**\n * Convert media query value to string\n */\nfunction toMediaString(value: StringOrNumber) {\n return isNumber(value) ? `${value}px` : value\n}\n","import { useTheme } from \"@chakra-ui/system\"\nimport { arrayToObjectNotation, fromEntries, isArray } from \"@chakra-ui/utils\"\nimport { getClosestValue } from \"./media-query.utils\"\nimport { useBreakpoint } from \"./use-breakpoint\"\n\n/**\n * React hook for getting the value for the current breakpoint from the\n * provided responsive values object.\n *\n * @param values\n * @param defaultBreakpoint default breakpoint name\n * (in non-window environments like SSR)\n *\n * For SSR, you can use a package like [is-mobile](https://github.com/kaimallea/isMobile)\n * to get the default breakpoint value from the user-agent\n *\n * @example\n * const width = useBreakpointValue({ base: '150px', md: '250px' })\n */\nexport function useBreakpointValue<T = any>(\n values: Record<string, T> | T[],\n defaultBreakpoint?: string,\n): T | undefined {\n const breakpoint = useBreakpoint(defaultBreakpoint)\n const theme = useTheme()\n\n if (!breakpoint) return undefined\n\n /**\n * Get the non-number breakpoint keys from the provided breakpoints\n */\n const breakpoints = Object.keys(theme.breakpoints)\n\n const obj = isArray(values)\n ? fromEntries<Record<string, T>>(\n Object.entries(\n arrayToObjectNotation(values, breakpoints),\n ).map(([key, value]) => [key, value]),\n )\n : values\n\n return getClosestValue(obj, breakpoint, breakpoints)\n}\n","import { useEnvironment } from \"@chakra-ui/react-env\"\nimport { useTheme } from \"@chakra-ui/system\"\nimport React from \"react\"\nimport createMediaQueries from \"./create-media-query\"\n\ninterface Listener {\n mediaQuery: MediaQueryList\n handleChange: () => void\n}\n\nexport interface Breakpoint {\n breakpoint: string\n maxWidth?: string\n minWidth: string\n}\n\n/**\n * React hook used to get the current responsive media breakpoint.\n *\n * @param defaultBreakpoint default breakpoint name\n * (in non-window environments like SSR)\n *\n * For SSR, you can use a package like [is-mobile](https://github.com/kaimallea/isMobile)\n * to get the default breakpoint value from the user-agent\n */\nexport function useBreakpoint(defaultBreakpoint?: string) {\n const { breakpoints } = useTheme()\n const env = useEnvironment()\n\n const mediaQueries = React.useMemo(\n () => createMediaQueries({ base: \"0px\", ...breakpoints }),\n [breakpoints],\n )\n\n const [currentBreakpoint, setCurrentBreakpoint] = React.useState(() => {\n if (!defaultBreakpoint) {\n return undefined\n }\n\n const mediaQuery = mediaQueries.find(\n ({ breakpoint }) => breakpoint === defaultBreakpoint,\n )\n\n if (mediaQuery) {\n const { query, ...breakpoint } = mediaQuery\n return breakpoint\n }\n\n return undefined\n })\n\n const current = currentBreakpoint?.breakpoint\n\n const update = React.useCallback(\n (query: MediaQueryList, breakpoint: Breakpoint) => {\n if (query.matches && current !== breakpoint.breakpoint) {\n setCurrentBreakpoint(breakpoint)\n }\n },\n [current],\n )\n\n React.useEffect(() => {\n const listeners = new Set<Listener>()\n\n mediaQueries.forEach(({ query, ...breakpoint }) => {\n const mediaQuery = env.window.matchMedia(query)\n\n // trigger an initial update to determine media query\n update(mediaQuery, breakpoint)\n\n const handleChange = () => {\n update(mediaQuery, breakpoint)\n }\n\n // add media query-listener\n mediaQuery.addListener(handleChange)\n\n // push the media query list handleChange\n // so we can use it to remove Listener\n listeners.add({ mediaQuery, handleChange })\n\n return () => {\n // clean up 1\n mediaQuery.removeListener(handleChange)\n }\n })\n\n return () => {\n // clean up 2: for safety\n listeners.forEach(({ mediaQuery, handleChange }) => {\n mediaQuery.removeListener(handleChange)\n })\n listeners.clear()\n }\n }, [mediaQueries, breakpoints, update, env.window])\n\n return current\n}\n","import { breakpoints as defaultBreakPoints } from \"@chakra-ui/utils\"\n\nexport function getClosestValue<T = any>(\n values: Record<string, T>,\n breakpoint: string,\n breakpoints = defaultBreakPoints,\n) {\n let index = Object.keys(values).indexOf(breakpoint)\n\n if (index !== -1) {\n return values[breakpoint]\n }\n\n let stopIndex = breakpoints.indexOf(breakpoint)\n\n while (stopIndex >= 0) {\n const key = breakpoints[stopIndex]\n\n if (values[key] != null) {\n index = stopIndex\n break\n }\n stopIndex -= 1\n }\n\n if (index !== -1) {\n const key = breakpoints[index]\n return values[key]\n }\n\n return undefined\n}\n"],"sourceRoot":""}