construct-hub 0.3.251 → 0.3.255
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +2 -2
- package/changelog.md +1 -1
- package/lib/backend/orchestration/index.js +13 -2
- package/lib/backend/transliterator/transliterator.ecs-entrypoint.bundle/index.js +2 -2
- package/lib/construct-hub.js +1 -1
- package/lib/package-sources/code-artifact.js +1 -1
- package/lib/package-sources/npmjs.js +1 -1
- package/lib/package-tag/index.js +3 -3
- package/lib/package-tag-group/index.js +2 -2
- package/lib/preload-file/index.js +1 -1
- package/lib/s3/storage.js +1 -1
- package/lib/spdx-license.js +1 -1
- package/package.json +4 -4
- package/releasetag.txt +1 -1
- package/version.txt +1 -1
- package/website/asset-manifest.json +11 -11
- package/website/index.html +1 -1
- package/website/static/js/122.48b6d425.chunk.js +2 -0
- package/website/static/js/122.48b6d425.chunk.js.map +1 -0
- package/website/static/js/51.3b58a25f.chunk.js +2 -0
- package/website/static/js/{51.e972cd06.chunk.js.map → 51.3b58a25f.chunk.js.map} +1 -1
- package/website/static/js/634.2f9ebff7.chunk.js +3 -0
- package/website/static/js/{634.f14c809b.chunk.js.LICENSE.txt → 634.2f9ebff7.chunk.js.LICENSE.txt} +0 -0
- package/website/static/js/634.2f9ebff7.chunk.js.map +1 -0
- package/website/static/js/639.30409bf1.chunk.js.map +1 -1
- package/website/static/js/926.a296b10e.chunk.js +2 -0
- package/website/static/js/{926.1fc8761f.chunk.js.map → 926.a296b10e.chunk.js.map} +1 -1
- package/website/static/js/main.97f74932.js +3 -0
- package/website/static/js/{main.15478f1d.js.LICENSE.txt → main.97f74932.js.LICENSE.txt} +0 -0
- package/website/static/js/main.97f74932.js.map +1 -0
- package/website/static/js/122.b1307897.chunk.js +0 -2
- package/website/static/js/122.b1307897.chunk.js.map +0 -1
- package/website/static/js/51.e972cd06.chunk.js +0 -2
- package/website/static/js/634.f14c809b.chunk.js +0 -3
- package/website/static/js/634.f14c809b.chunk.js.map +0 -1
- package/website/static/js/926.1fc8761f.chunk.js +0 -2
- package/website/static/js/main.15478f1d.js +0 -3
- package/website/static/js/main.15478f1d.js.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"static/js/634.f14c809b.chunk.js","mappings":"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AAE,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,E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,CACEvsH,KAAM,QACNy6C,MAAO,eACP4xE,KAAM,CAAC,SACPC,YAAa,iCACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACEvsH,KAAM,eACNy6C,MAAO,eACP4xE,KAAM,GACNC,YAAa,eACbC,UAAW,CAAC,OAAQ,QAEtB,CACEvsH,KAAM,WACNy6C,MAAO,eACP4xE,KAAM,GACNC,YAAa,gBACbC,UAAW,CAAC,KAAM,MAAO,MAAO,OAAQ,KAAM,MAAO,MAAO,SAE9D,CACEvsH,KAAM,MACNy6C,MAAO,eACP4xE,KAAM,CAAC,MAAO,QACdC,YAAa,cACbC,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,CACEvsH,KAAM,WACNy6C,MAAO,eACP4xE,KAAM,GACNC,YAAa,gCACbC,UAAW,CAAC,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,MAAO,QAE3D,CACEvsH,KAAM,QACNy6C,MAAO,eACP4xE,KAAM,CAAC,QACPC,YAAa,YACbC,UAAW,CAAC,OAEd,CACEvsH,KAAM,MACNy6C,MAAO,eACP4xE,KAAM,CAAC,QAAS,QAAS,OAAQ,SACjCC,YAAa,wBACbC,UAAW,CAAC,MAAO,MAAO,OAAQ,OAAQ,MAAO,MAAO,OAAQ,SAElE,CACEvsH,KAAM,WACNy6C,MAAO,eACP4xE,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,OACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACEvsH,KAAM,MACNy6C,MAAO,eACP4xE,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,CACEvsH,KAAM,UACNy6C,MAAO,eACP4xE,KAAM,GACNC,YAAa,eACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACEvsH,KAAM,WACNy6C,MAAO,eACP4xE,KAAM,CAAC,QAAS,QAChBC,YAAa,0BACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,QAGJ,CACEvsH,KAAM,MACNy6C,MAAO,eACP4xE,KAAM,CAAC,WAAY,SAAU,OAC7BC,YAAa,MACbC,UAAW,CAAC,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,QAExE,CACEvsH,KAAM,eACNy6C,MAAO,eACP4xE,KAAM,CAAC,OACPC,YAAa,eACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACEvsH,KAAM,WACNy6C,MAAO,eACP4xE,KAAM,CAAC,OAAQ,WACfC,YAAa,qBACbC,UAAW,CAAC,OAEd,CACEvsH,KAAM,aACNy6C,MAAO,eACP4xE,KAAM,CAAC,WAAY,YAAa,OAChCC,YAAa,uBACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,QAGJ,CACEvsH,KAAM,OACNy6C,MAAO,eACP4xE,KAAM,CAAC,SACPC,YAAa,eACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACEvsH,KAAM,QACNy6C,MAAO,eACP4xE,KAAM,CAAC,QAAS,MAAO,QAAS,WAChCC,YAAa,kCACbC,UAAW,CAAC,KAAM,MAAO,KAAM,QAEjC,CACEvsH,KAAM,SACNy6C,MAAO,eACP4xE,KAAM,CAAC,QAAS,MAAO,QACvBC,YAAa,8BACbC,UAAW,CAAC,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,MAAO,QAE3D,CACEvsH,KAAM,cACNy6C,MAAO,eACP4xE,KAAM,CAAC,QAAS,OAAQ,SACxBC,YAAa,0BACbC,UAAW,CACT,MACA,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,SAGJ,CACEvsH,KAAM,MACNy6C,MAAO,eACP4xE,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,CACEvsH,KAAM,mBACNy6C,MAAO,eACP4xE,KAAM,GACNC,YAAa,mBACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,QAGJ,CACEvsH,KAAM,+BACNy6C,MAAO,eACP4xE,KAAM,CAAC,SACPC,YAAa,6BACbC,UAAW,CAAC,KAAM,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,QAEnE,CACEvsH,KAAM,+BACNy6C,MAAO,eACP4xE,KAAM,CAAC,QAAS,SAChBC,YAAa,2BACbC,UAAW,CAAC,KAAM,KAAM,KAAM,MAAO,MAAO,QAE9C,CACEvsH,KAAM,aACNy6C,MAAO,eACP4xE,KAAM,CAAC,QACPC,YAAa,+BACbC,UAAW,CACT,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,QAGJ,CACEvsH,KAAM,QACNy6C,MAAO,eACP4xE,KAAM,GACNC,YAAa,2BACbC,UAAW,CACT,MACA,MACA,OACA,OACA,MACA,MACA,OACA,OACA,MACA,MACA,OACA,OACA,MACA,MACA,OACA,SAGJ,CACEvsH,KAAM,cACNy6C,MAAO,eACP4xE,KAAM,CAAC,OACPC,YAAa,2BACbC,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,CACEvsH,KAAM,WACNy6C,MAAO,eACP4xE,KAAM,CAAC,OACPC,YAAa,gBACbC,UAAW,CACT,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,QAGJ,CACEvsH,KAAM,OACNy6C,MAAO,eACP4xE,KAAM,CAAC,SACPC,YAAa,eACbC,UAAW,CAAC,KAAM,KAAM,KAAM,MAAO,MAAO,SC7c1CC,EAAW,uBACXC,EAAW,kDACXC,EAAgB,KAEhBC,EAAmB,CACrBC,eAAe,EACfR,UAAU,GAGC,SAASjF,EAAO7zG,GAC3B,IAAMC,EAAW1Y,OAAO+F,OAAO,GAAI+rH,EAAkBr5G,GAC/Cu5G,IAAQt5G,EAASq5G,cACjBE,IAAmBv5G,EAAS64G,SAElC,SAASW,EAAoB9qH,GAEzB,IAAM+qH,EAAWZ,EAAS1oH,MAAK,SAAA5H,GAAC,OAAIA,EAAEywH,UAAU7pC,SAASzgF,MACnDgrH,EAAWb,EAAS1oH,MAAK,SAAA5H,GAAC,OAAIA,EAAEywH,UAAU7pC,SAASzgF,EAAMlC,MAAM,GAAI,OACnEmtH,EAAcD,EAAWhrH,EAAMlC,OAAO,GAAK,GAC3CotH,EAASN,EAAM,IAAM,GAE3B,OADWG,EAAWA,EAASvyE,MAAQ0yE,EAASF,GAAYA,EAASxyE,MAAQ0yE,EAASD,IACvEjrH,EAGnB,SAASmrH,EAASnrH,GACd,IAAIorH,EAAM5yE,EAAAA,IAAUx4C,GAGpB,GAAIA,EAAMG,SAAS,UAAYirH,IAAQprH,EAAO,CAE1C,IAAMs1E,EAAM,OAASt1E,EAAMlC,MAAM,GAAI,GAAGgC,QAAQ2qH,EAAe,KACzDhxH,EAAI++C,EAAAA,IAAU88B,GAChB77E,IAAM67E,IACN81C,EAAM3xH,QAEP,GAAIuG,EAAMG,SAAS,YAAcirH,IAAQprH,EAAO,CAEnD,IAAMs1E,EAAM,SAAWt1E,EAAMlC,MAAM,GAAI,GAAGgC,QAAQ2qH,EAAe,KAC3DhxH,EAAI++C,EAAAA,IAAU88B,GAChB77E,IAAM67E,IACN81C,EAAM3xH,GAId,OAAImxH,GAAOQ,IAAQprH,EACRorH,EAAM,IAEVA,EAYX,OATA,SAAqBpyG,IFpBrB,SAAUA,EAAMhb,EAAMuoH,EAASC,GACT,oBAATxoH,GAA0C,oBAAZuoH,IACvCC,EAAUD,EACVA,EAAUvoH,EACVA,EAAO,MAGTmoH,EAAantG,EAAMhb,GAMnB,SAAkB+O,EAAMijB,GACtB,IAAMtT,EAASsT,EAAQA,EAAQv4B,OAAS,GACxC,OAAO8uH,EACLx5G,EACA2P,EAASA,EAAOxZ,SAASzE,QAAQsO,GAAQ,KACzC2P,KAX+B8pG,GEcjC/tG,CAAMO,EAAM,QAAQ,SAAUjM,GAC1BA,EAAKnT,MAAQmT,EAAKnT,MAAMkG,QAAQyqH,EAAUY,GACtCN,IACA99G,EAAKnT,MAAQmT,EAAKnT,MAAMkG,QAAQ0qH,EAAUM","sources":["../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@chakra-ui/media-query/dist/chakra-ui-media-query.esm.js","../node_modules/@chakra-ui/select/dist/chakra-ui-select.esm.js","../node_modules/@chakra-ui/table/dist/chakra-ui-table.esm.js","../node_modules/@chakra-ui/tabs/dist/chakra-ui-tabs.esm.js","../node_modules/bail/index.js","../node_modules/ccount/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/escape-string-regexp/index.js","../node_modules/extend/index.js","../node_modules/hast-to-hyperscript/index.js","../node_modules/hast-util-from-parse5/index.js","../node_modules/hast-util-parse-selector/index.js","../node_modules/hast-util-raw/index.js","../node_modules/hast-util-sanitize/index.js","../node_modules/hast-util-sanitize/lib/index.js","../node_modules/hast-util-to-parse5/index.js","../node_modules/hastscript/factory.js","../node_modules/hastscript/html.js","../node_modules/hastscript/index.js","../node_modules/hastscript/svg.js","../node_modules/inline-style-parser/index.js","../node_modules/is-buffer/index.js","../node_modules/is-plain-obj/index.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseValues.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_iteratorToArray.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isString.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toArray.js","../node_modules/lodash/values.js","../node_modules/lru-cache/index.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-definitions/index.js","../node_modules/mdast-util-find-and-replace/index.js","../node_modules/mdast-util-from-markdown/dist/index.js","../node_modules/mdast-util-from-markdown/index.js","../node_modules/mdast-util-gfm-autolink-literal/from-markdown.js","../node_modules/mdast-util-gfm-autolink-literal/to-markdown.js","../node_modules/mdast-util-gfm-strikethrough/from-markdown.js","../node_modules/mdast-util-gfm-strikethrough/to-markdown.js","../node_modules/mdast-util-gfm-table/from-markdown.js","../node_modules/mdast-util-gfm-table/to-markdown.js","../node_modules/mdast-util-gfm-task-list-item/from-markdown.js","../node_modules/mdast-util-gfm-task-list-item/to-markdown.js","../node_modules/mdast-util-gfm/from-markdown.js","../node_modules/mdast-util-gfm/to-markdown.js","../node_modules/mdast-util-to-hast/index.js","../node_modules/mdast-util-to-hast/lib/all.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/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/index.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/mdast-util-to-hast/lib/one.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/wrap.js","../node_modules/mdast-util-to-markdown/lib/configure.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.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/container-phrasing.js","../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","../node_modules/mdast-util-to-string/index.js","../node_modules/mdurl/encode.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/micromark-extension-gfm/index.js","../node_modules/micromark-extension-gfm/syntax.js","../node_modules/micromark/dist/character/ascii-alpha.js","../node_modules/micromark/dist/character/ascii-alphanumeric.js","../node_modules/micromark/dist/character/ascii-atext.js","../node_modules/micromark/dist/character/ascii-control.js","../node_modules/micromark/dist/character/ascii-digit.js","../node_modules/micromark/dist/character/ascii-hex-digit.js","../node_modules/micromark/dist/character/ascii-punctuation.js","../node_modules/micromark/dist/character/markdown-line-ending-or-space.js","../node_modules/micromark/dist/character/markdown-line-ending.js","../node_modules/micromark/dist/character/markdown-space.js","../node_modules/micromark/dist/character/unicode-punctuation.js","../node_modules/micromark/dist/character/unicode-whitespace.js","../node_modules/micromark/dist/constant/assign.js","../node_modules/micromark/dist/constant/from-char-code.js","../node_modules/micromark/dist/constant/has-own-property.js","../node_modules/micromark/dist/constant/html-block-names.js","../node_modules/micromark/dist/constant/html-raw-names.js","../node_modules/micromark/dist/constant/splice.js","../node_modules/micromark/dist/constant/unicode-punctuation-regex.js","../node_modules/micromark/dist/constructs.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/initialize/text.js","../node_modules/micromark/dist/parse.js","../node_modules/micromark/dist/postprocess.js","../node_modules/micromark/dist/preprocess.js","../node_modules/micromark/dist/tokenize/attention.js","../node_modules/micromark/dist/tokenize/autolink.js","../node_modules/micromark/dist/tokenize/block-quote.js","../node_modules/micromark/dist/tokenize/character-escape.js","../node_modules/micromark/dist/tokenize/character-reference.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/content.js","../node_modules/micromark/dist/tokenize/definition.js","../node_modules/micromark/dist/tokenize/factory-destination.js","../node_modules/micromark/dist/tokenize/factory-label.js","../node_modules/micromark/dist/tokenize/factory-space.js","../node_modules/micromark/dist/tokenize/factory-title.js","../node_modules/micromark/dist/tokenize/factory-whitespace.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/tokenize/html-text.js","../node_modules/micromark/dist/tokenize/label-end.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/partial-blank-line.js","../node_modules/micromark/dist/tokenize/setext-underline.js","../node_modules/micromark/dist/tokenize/thematic-break.js","../node_modules/micromark/dist/util/chunked-push.js","../node_modules/micromark/dist/util/chunked-splice.js","../node_modules/micromark/dist/util/classify-character.js","../node_modules/micromark/dist/util/combine-extensions.js","../node_modules/micromark/dist/util/create-tokenizer.js","../node_modules/micromark/dist/util/miniflat.js","../node_modules/micromark/dist/util/move-point.js","../node_modules/micromark/dist/util/normalize-identifier.js","../node_modules/micromark/dist/util/prefix-size.js","../node_modules/micromark/dist/util/regex-check.js","../node_modules/micromark/dist/util/resolve-all.js","../node_modules/micromark/dist/util/safe-from-int.js","../node_modules/micromark/dist/util/serialize-chunks.js","../node_modules/micromark/dist/util/shallow.js","../node_modules/micromark/dist/util/size-chunks.js","../node_modules/micromark/dist/util/slice-chunks.js","../node_modules/micromark/dist/util/subtokenize.js","../node_modules/node-emoji/index.js","../node_modules/node-emoji/lib/emoji.js","../node_modules/parse-entities/decode-entity.browser.js","../node_modules/parse5/lib/common/doctype.js","../node_modules/parse5/lib/common/error-codes.js","../node_modules/parse5/lib/common/foreign-content.js","../node_modules/parse5/lib/common/html.js","../node_modules/parse5/lib/common/unicode.js","../node_modules/parse5/lib/extensions/error-reporting/mixin-base.js","../node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js","../node_modules/parse5/lib/extensions/location-info/parser-mixin.js","../node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js","../node_modules/parse5/lib/parser/formatting-element-list.js","../node_modules/parse5/lib/parser/index.js","../node_modules/parse5/lib/parser/open-element-stack.js","../node_modules/parse5/lib/tokenizer/index.js","../node_modules/parse5/lib/tokenizer/named-entity-data.js","../node_modules/parse5/lib/tokenizer/preprocessor.js","../node_modules/parse5/lib/tree-adapters/default.js","../node_modules/parse5/lib/utils/merge-options.js","../node_modules/parse5/lib/utils/mixin.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","../node_modules/prism-react-renderer/themes/nightOwl/index.js","../node_modules/prism-react-renderer/themes/nightOwlLight/index.js","../node_modules/property-information/find.js","../node_modules/property-information/html.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.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/util/create.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/normalize.js","../node_modules/property-information/svg.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../node_modules/react-dom/server.browser.js","../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-markdown/node_modules/react-is/index.js","../node_modules/react-markdown/src/ast-to-react.js","../node_modules/react-markdown/src/react-markdown.js","../node_modules/react-markdown/src/rehype-filter.js","../node_modules/react-markdown/src/uri-transformer.js","../node_modules/rehype-raw/index.js","../node_modules/rehype-sanitize/index.js","../node_modules/remark-gfm/index.js","../node_modules/remark-parse/index.js","../node_modules/remark-rehype/index.js","../node_modules/repeat-string/index.js","../node_modules/semver/classes/comparator.js","../node_modules/semver/classes/range.js","../node_modules/semver/classes/semver.js","../node_modules/semver/functions/clean.js","../node_modules/semver/functions/cmp.js","../node_modules/semver/functions/coerce.js","../node_modules/semver/functions/compare-build.js","../node_modules/semver/functions/compare-loose.js","../node_modules/semver/functions/compare.js","../node_modules/semver/functions/diff.js","../node_modules/semver/functions/eq.js","../node_modules/semver/functions/gt.js","../node_modules/semver/functions/gte.js","../node_modules/semver/functions/inc.js","../node_modules/semver/functions/lt.js","../node_modules/semver/functions/lte.js","../node_modules/semver/functions/major.js","../node_modules/semver/functions/minor.js","../node_modules/semver/functions/neq.js","../node_modules/semver/functions/parse.js","../node_modules/semver/functions/patch.js","../node_modules/semver/functions/prerelease.js","../node_modules/semver/functions/rcompare.js","../node_modules/semver/functions/rsort.js","../node_modules/semver/functions/satisfies.js","../node_modules/semver/functions/sort.js","../node_modules/semver/functions/valid.js","../node_modules/semver/index.js","../node_modules/semver/internal/constants.js","../node_modules/semver/internal/debug.js","../node_modules/semver/internal/identifiers.js","../node_modules/semver/internal/parse-options.js","../node_modules/semver/internal/re.js","../node_modules/semver/ranges/gtr.js","../node_modules/semver/ranges/intersects.js","../node_modules/semver/ranges/ltr.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/outside.js","../node_modules/semver/ranges/simplify.js","../node_modules/semver/ranges/subset.js","../node_modules/semver/ranges/to-comparators.js","../node_modules/semver/ranges/valid.js","../node_modules/space-separated-tokens/index.js","../node_modules/spdx-license-list/index.js","../node_modules/style-to-object/index.js","../node_modules/trough/index.js","../node_modules/trough/wrap.js","../node_modules/unified/index.js","../node_modules/unist-builder/index.js","../node_modules/unist-util-generated/index.js","../node_modules/unist-util-is/convert.js","../node_modules/unist-util-position/index.js","../node_modules/unist-util-stringify-position/index.js","../node_modules/unist-util-visit-parents/color.browser.js","../node_modules/unist-util-visit-parents/index.js","../node_modules/unist-util-visit/index.js","../node_modules/vfile-location/index.js","../node_modules/vfile-message/index.js","../node_modules/vfile/index.js","../node_modules/vfile/lib/core.js","../node_modules/vfile/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/xtend/immutable.js","../node_modules/yallist/iterator.js","../node_modules/yallist/yallist.js","../node_modules/zwitch/index.js","../node_modules/@babel/runtime/helpers/esm/toArray.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"],"sourcesContent":["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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\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 = it.call(o);\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\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(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _get.apply(this, arguments);\n}\n\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\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 Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { useTheme } from '@chakra-ui/system';\nimport { isBrowser, __DEV__, memoizedGet, isNumber, breakpoints, isArray, fromEntries, arrayToObjectNotation } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport React__default from 'react';\nimport { useEnvironment } from '@chakra-ui/react-env';\n\nvar useSafeLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect;\n/**\n * React hook that tracks state of a CSS media query\n *\n * @param query the media query to match\n */\n\nfunction useMediaQuery(query) {\n var env = useEnvironment();\n var queries = Array.isArray(query) ? query : [query];\n var isSupported = isBrowser && \"matchMedia\" in env.window;\n\n var _React$useState = React.useState(queries.map(function (query) {\n return isSupported ? !!env.window.matchMedia(query).matches : false;\n })),\n matches = _React$useState[0],\n setMatches = _React$useState[1]; // Specifying matches in the dependency list will cause the event listeners\n // to unload and then load each time the dependency changes. This causes\n // Media Query Events to be missed. The event listeners should only be unloaded\n // when the component unloads.\n\n\n useSafeLayoutEffect(function () {\n if (!isSupported) return undefined;\n var mediaQueryList = queries.map(function (query) {\n return env.window.matchMedia(query);\n });\n var listenerList = mediaQueryList.map(function (_, index) {\n var listener = function listener(mqlEvent) {\n var queryIndex = mediaQueryList.findIndex(function (mediaQuery) {\n return mediaQuery.media === mqlEvent.media;\n }); // As the event listener is on the media query list, any time the\n // listener is called, we know there is a change. There's no need\n // to compare the previous matches with current. Using\n // setMatches(matches => {...}) provides access to the current matches\n // state. Trying to access matches outside the setMatches function\n // would provide data from the the time of instantiation (stale).\n\n setMatches(function (matches) {\n var currentMatches = matches.map(function (x) {\n return x;\n });\n currentMatches[queryIndex] = mqlEvent.matches;\n return currentMatches;\n });\n }; // Listening to the 'change' event on the Media Query List Object\n // is more performant as the callback is only invoked when a specified\n // media query is matched. Using addEventListener on the window object\n // to listen for the resize event will call the callback on every\n // viewport resize.\n\n\n if (typeof mediaQueryList[index].addEventListener === \"function\") {\n mediaQueryList[index].addEventListener(\"change\", listener);\n } else {\n mediaQueryList[index].addListener(listener);\n }\n\n return listener;\n });\n return function () {\n mediaQueryList.forEach(function (_, index) {\n if (typeof mediaQueryList[index].removeEventListener === \"function\") {\n mediaQueryList[index].removeEventListener(\"change\", listenerList[index]);\n } else {\n mediaQueryList[index].removeListener(listenerList[index]);\n }\n });\n };\n }, []);\n return matches;\n}\n\n/**\n * Visibility\n *\n * React component to control the visibility of its\n * children based on the current breakpoint\n */\nvar Visibility = function Visibility(props) {\n var breakpoint = props.breakpoint,\n hide = props.hide,\n children = props.children;\n\n var _useMediaQuery = useMediaQuery(breakpoint),\n show = _useMediaQuery[0];\n\n var isVisible = hide ? !show : show;\n var rendered = isVisible ? children : null;\n return rendered;\n};\n\nvar Hide = function Hide(props) {\n var children = props.children;\n var query = useQuery(props);\n return /*#__PURE__*/React.createElement(Visibility, {\n breakpoint: query,\n hide: true\n }, children);\n};\n\nif (__DEV__) {\n Hide.displayName = \"Hide\";\n}\n\nvar Show = function Show(props) {\n var children = props.children;\n var query = useQuery(props);\n return /*#__PURE__*/React.createElement(Visibility, {\n breakpoint: query\n }, children);\n};\n\nif (__DEV__) {\n Show.displayName = \"Show\";\n}\n\nvar getBreakpoint = function getBreakpoint(theme, value) {\n return memoizedGet(theme, \"breakpoints.\" + value, value);\n};\n\nfunction useQuery(props) {\n var _props$breakpoint = props.breakpoint,\n breakpoint = _props$breakpoint === void 0 ? \"\" : _props$breakpoint,\n below = props.below,\n above = props.above;\n var theme = useTheme();\n var bpBelow = getBreakpoint(theme, below);\n var bpAbove = getBreakpoint(theme, above);\n var query = breakpoint;\n\n if (bpBelow) {\n query = \"(max-width: \" + bpBelow + \")\";\n } else if (bpAbove) {\n query = \"(min-width: \" + bpAbove + \")\";\n }\n\n return query;\n}\n\n/**\n * React hook used to get the user's animation preference.\n */\n\nfunction usePrefersReducedMotion() {\n var _useMediaQuery = useMediaQuery(\"(prefers-reduced-motion: reduce)\"),\n prefersReducedMotion = _useMediaQuery[0];\n\n return prefersReducedMotion;\n}\n/**\n * React hook for getting the user's color mode preference.\n */\n\nfunction useColorModePreference() {\n var _useMediaQuery2 = useMediaQuery([\"(prefers-color-scheme: light)\", \"(prefers-color-scheme: dark)\"]),\n isLight = _useMediaQuery2[0],\n isDark = _useMediaQuery2[1];\n\n if (isLight) return \"light\";\n if (isDark) return \"dark\";\n return undefined;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\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\nfunction createMediaQueries(breakpoints) {\n return Object.entries(breakpoints) // 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(function (a, b) {\n return Number.parseInt(a[1], 10) > Number.parseInt(b[1], 10) ? 1 : -1;\n }).map(function (_ref, index, arr) {\n var breakpoint = _ref[0],\n minWidth = _ref[1];\n // given a following breakpoint\n var next = arr[index + 1]; // this breakpoint must end prior the threshold of the next\n\n var maxWidth = next ? next[1] : undefined;\n var query = createMediaQueryString(minWidth, maxWidth);\n return {\n minWidth: minWidth,\n maxWidth: maxWidth,\n breakpoint: breakpoint,\n query: query\n };\n });\n}\n/**\n * Create a media query string from the breakpoints,\n * using a combination of `min-width` and `max-width`.\n */\n\nfunction createMediaQueryString(minWidth, maxWidth) {\n var hasMinWidth = parseInt(minWidth, 10) >= 0;\n\n if (!hasMinWidth && !maxWidth) {\n return \"\";\n }\n\n var 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 return query;\n}\n\nvar measurementRegex = /([0-9]+\\.?[0-9]*)/;\n\nvar calculateMeasurement = function calculateMeasurement(value, modifier) {\n if (typeof value === \"number\") {\n return \"\" + (value + modifier);\n }\n\n return value.replace(measurementRegex, function (match) {\n return \"\" + (parseFloat(match) + modifier);\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 */\n\n\nfunction subtract(value) {\n return calculateMeasurement(value, value.endsWith(\"px\") ? -1 : -0.01);\n}\n/**\n * Convert media query value to string\n */\n\n\nfunction toMediaString(value) {\n return isNumber(value) ? value + \"px\" : value;\n}\n\nvar _excluded = [\"query\"],\n _excluded2 = [\"query\"],\n _excluded3 = [\"query\"];\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 */\nfunction useBreakpoint(defaultBreakpoint) {\n var _useTheme = useTheme(),\n breakpoints = _useTheme.breakpoints;\n\n var env = useEnvironment();\n var mediaQueries = React__default.useMemo(function () {\n return createMediaQueries(_extends({\n base: \"0px\"\n }, breakpoints));\n }, [breakpoints]);\n\n var _React$useState = React__default.useState(function () {\n if (env.window.matchMedia) {\n var maxBreakpoint;\n mediaQueries.forEach(function (_ref) {\n var query = _ref.query,\n breakpoint = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var mediaQuery = env.window.matchMedia(query);\n\n if (mediaQuery.matches) {\n maxBreakpoint = breakpoint;\n }\n });\n\n if (maxBreakpoint) {\n return maxBreakpoint;\n }\n }\n\n if (!defaultBreakpoint) {\n return undefined;\n }\n\n var mediaQuery = mediaQueries.find(function (_ref2) {\n var breakpoint = _ref2.breakpoint;\n return breakpoint === defaultBreakpoint;\n });\n\n if (mediaQuery) {\n mediaQuery.query;\n var breakpoint = _objectWithoutPropertiesLoose(mediaQuery, _excluded2);\n\n return breakpoint;\n }\n\n return undefined;\n }),\n currentBreakpoint = _React$useState[0],\n setCurrentBreakpoint = _React$useState[1];\n\n var current = currentBreakpoint == null ? void 0 : currentBreakpoint.breakpoint;\n var update = React__default.useCallback(function (query, breakpoint) {\n if (query.matches && current !== breakpoint.breakpoint) {\n setCurrentBreakpoint(breakpoint);\n }\n }, [current]);\n React__default.useEffect(function () {\n var listeners = new Set();\n mediaQueries.forEach(function (_ref3) {\n var query = _ref3.query,\n breakpoint = _objectWithoutPropertiesLoose(_ref3, _excluded3);\n\n var mediaQuery = env.window.matchMedia(query); // trigger an initial update to determine media query\n\n update(mediaQuery, breakpoint);\n\n var handleChange = function handleChange() {\n update(mediaQuery, breakpoint);\n }; // add media query-listener\n\n\n mediaQuery.addListener(handleChange); // push the media query list handleChange\n // so we can use it to remove Listener\n\n listeners.add({\n mediaQuery: mediaQuery,\n handleChange: handleChange\n });\n return function () {\n // clean up 1\n mediaQuery.removeListener(handleChange);\n };\n });\n return function () {\n // clean up 2: for safety\n listeners.forEach(function (_ref4) {\n var mediaQuery = _ref4.mediaQuery,\n handleChange = _ref4.handleChange;\n mediaQuery.removeListener(handleChange);\n });\n listeners.clear();\n };\n }, [mediaQueries, breakpoints, update, env.window]);\n return current;\n}\n\nfunction getClosestValue(values, breakpoint, breakpoints$1) {\n if (breakpoints$1 === void 0) {\n breakpoints$1 = breakpoints;\n }\n\n var index = Object.keys(values).indexOf(breakpoint);\n\n if (index !== -1) {\n return values[breakpoint];\n }\n\n var stopIndex = breakpoints$1.indexOf(breakpoint);\n\n while (stopIndex >= 0) {\n var key = breakpoints$1[stopIndex];\n\n if (values[key] != null) {\n index = stopIndex;\n break;\n }\n\n stopIndex -= 1;\n }\n\n if (index !== -1) {\n var _key = breakpoints$1[index];\n return values[_key];\n }\n\n return undefined;\n}\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 */\n\nfunction useBreakpointValue(values, defaultBreakpoint) {\n var breakpoint = useBreakpoint(defaultBreakpoint);\n var theme = useTheme();\n if (!breakpoint) return undefined;\n /**\n * Get the non-number breakpoint keys from the provided breakpoints\n */\n\n var breakpoints = Object.keys(theme.breakpoints);\n var obj = isArray(values) ? fromEntries(Object.entries(arrayToObjectNotation(values, breakpoints)).map(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return [key, value];\n })) : values;\n return getClosestValue(obj, breakpoint, breakpoints);\n}\n\nexport { Hide, Show, useBreakpoint, useBreakpointValue, useColorModePreference, useMediaQuery, usePrefersReducedMotion, useQuery };\n","import { useFormControl } from '@chakra-ui/form-control';\nimport { forwardRef, chakra, useMultiStyleConfig, omitThemingProps, layoutPropNames } from '@chakra-ui/system';\nimport { cx, __DEV__, split, mergeWith, dataAttr } from '@chakra-ui/utils';\nimport * as React from 'react';\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\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded = [\"children\", \"placeholder\", \"className\"],\n _excluded2 = [\"rootProps\", \"placeholder\", \"icon\", \"color\", \"height\", \"h\", \"minH\", \"minHeight\", \"iconColor\", \"iconSize\", \"isFullWidth\"],\n _excluded3 = [\"children\"];\nvar SelectField = /*#__PURE__*/forwardRef(function (props, ref) {\n var children = props.children,\n placeholder = props.placeholder,\n className = props.className,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(chakra.select, _extends({}, rest, {\n ref: ref,\n className: cx(\"chakra-select\", className)\n }), placeholder && /*#__PURE__*/React.createElement(\"option\", {\n value: \"\"\n }, placeholder), children);\n});\n\nif (__DEV__) {\n SelectField.displayName = \"SelectField\";\n}\n\n/**\n * React component used to select one item from a list of options.\n */\nvar Select = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Select\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n rootProps = _omitThemingProps.rootProps,\n placeholder = _omitThemingProps.placeholder,\n icon = _omitThemingProps.icon,\n color = _omitThemingProps.color,\n height = _omitThemingProps.height,\n h = _omitThemingProps.h,\n minH = _omitThemingProps.minH,\n minHeight = _omitThemingProps.minHeight,\n iconColor = _omitThemingProps.iconColor,\n iconSize = _omitThemingProps.iconSize;\n _omitThemingProps.isFullWidth;\n var rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded2);\n\n var _split = split(rest, layoutPropNames),\n layoutProps = _split[0],\n otherProps = _split[1];\n\n var ownProps = useFormControl(otherProps);\n var rootStyles = {\n width: \"100%\",\n height: \"fit-content\",\n position: \"relative\",\n color: color\n };\n var fieldStyles = mergeWith({\n paddingEnd: \"2rem\"\n }, styles.field, {\n _focus: {\n zIndex: \"unset\"\n }\n });\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n className: \"chakra-select__wrapper\",\n __css: rootStyles\n }, layoutProps, rootProps), /*#__PURE__*/React.createElement(SelectField, _extends({\n ref: ref,\n height: h != null ? h : height,\n minH: minH != null ? minH : minHeight,\n placeholder: placeholder\n }, ownProps, {\n __css: fieldStyles\n }), props.children), /*#__PURE__*/React.createElement(SelectIcon, _extends({\n \"data-disabled\": dataAttr(ownProps.disabled)\n }, (iconColor || color) && {\n color: iconColor || color\n }, {\n __css: styles.icon\n }, iconSize && {\n fontSize: iconSize\n }), icon));\n});\n\nif (__DEV__) {\n Select.displayName = \"Select\";\n}\n\nvar DefaultIcon = function DefaultIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n }));\n};\nvar IconWrapper = chakra(\"div\", {\n baseStyle: {\n position: \"absolute\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n top: \"50%\",\n transform: \"translateY(-50%)\"\n }\n});\n\nvar SelectIcon = function SelectIcon(props) {\n var _props$children = props.children,\n children = _props$children === void 0 ? /*#__PURE__*/React.createElement(DefaultIcon, null) : _props$children,\n rest = _objectWithoutPropertiesLoose(props, _excluded3);\n\n var clone = /*#__PURE__*/React.cloneElement(children, {\n role: \"presentation\",\n className: \"chakra-select__icon\",\n focusable: false,\n \"aria-hidden\": true,\n // force icon to adhere to `IconWrapper` styles\n style: {\n width: \"1em\",\n height: \"1em\",\n color: \"currentColor\"\n }\n });\n return /*#__PURE__*/React.createElement(IconWrapper, _extends({}, rest, {\n className: \"chakra-select__icon-wrapper\"\n }), /*#__PURE__*/React.isValidElement(children) ? clone : null);\n};\n\nif (__DEV__) {\n SelectIcon.displayName = \"SelectIcon\";\n}\n\nexport { DefaultIcon, Select, SelectField };\n","import { forwardRef, chakra, useMultiStyleConfig, omitThemingProps, StylesProvider, useStyles } from '@chakra-ui/system';\nimport { cx, __DEV__ } from '@chakra-ui/utils';\nimport * as React from 'react';\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\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded = [\"overflow\", \"overflowX\", \"className\"],\n _excluded2 = [\"className\"],\n _excluded3 = [\"placement\"],\n _excluded4 = [\"isNumeric\"],\n _excluded5 = [\"isNumeric\"];\nvar TableContainer = /*#__PURE__*/forwardRef(function (props, ref) {\n var _ref;\n\n var overflow = props.overflow,\n overflowX = props.overflowX,\n className = props.className,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\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: (_ref = overflow != null ? overflow : overflowX) != null ? _ref : \"auto\",\n overflowY: \"hidden\",\n maxWidth: \"100%\"\n }\n }));\n});\nvar Table = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Table\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n className = _omitThemingProps.className,\n tableProps = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded2);\n\n return /*#__PURE__*/React.createElement(StylesProvider, {\n value: styles\n }, /*#__PURE__*/React.createElement(chakra.table, _extends({\n role: \"table\",\n ref: ref,\n __css: styles.table,\n className: cx(\"chakra-table\", className)\n }, tableProps)));\n});\n\nif (__DEV__) {\n Table.displayName = \"Table\";\n}\n\nvar TableCaption = /*#__PURE__*/forwardRef(function (props, ref) {\n var _props$placement = props.placement,\n placement = _props$placement === void 0 ? \"bottom\" : _props$placement,\n rest = _objectWithoutPropertiesLoose(props, _excluded3);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.caption, _extends({}, rest, {\n ref: ref,\n __css: _extends({}, styles.caption, {\n captionSide: placement\n })\n }));\n});\n\nif (__DEV__) {\n TableCaption.displayName = \"TableCaption\";\n}\n\nvar Thead = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.thead, _extends({}, props, {\n ref: ref,\n __css: styles.thead\n }));\n});\nvar Tbody = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.tbody, _extends({}, props, {\n ref: ref,\n __css: styles.tbody\n }));\n});\nvar Tfoot = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.tfoot, _extends({}, props, {\n ref: ref,\n __css: styles.tfoot\n }));\n});\nvar Th = /*#__PURE__*/forwardRef(function (_ref2, ref) {\n var isNumeric = _ref2.isNumeric,\n rest = _objectWithoutPropertiesLoose(_ref2, _excluded4);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.th, _extends({}, rest, {\n ref: ref,\n __css: styles.th,\n \"data-is-numeric\": isNumeric\n }));\n});\nvar Tr = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.tr, _extends({\n role: \"row\"\n }, props, {\n ref: ref,\n __css: styles.tr\n }));\n});\nvar Td = /*#__PURE__*/forwardRef(function (_ref3, ref) {\n var isNumeric = _ref3.isNumeric,\n rest = _objectWithoutPropertiesLoose(_ref3, _excluded5);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.td, _extends({\n role: \"gridcell\"\n }, rest, {\n ref: ref,\n __css: styles.td,\n \"data-is-numeric\": isNumeric\n }));\n});\n\nexport { Table, TableCaption, TableContainer, Tbody, Td, Tfoot, Th, Thead, Tr };\n","import { forwardRef, useMultiStyleConfig, omitThemingProps, StylesProvider, chakra, useStyles } from '@chakra-ui/system';\nimport { normalizeEventKey, callAllHandlers, determineLazyBehavior, isUndefined, focus, omit, cx, __DEV__ } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { useClickable } from '@chakra-ui/clickable';\nimport { createDescendantContext } from '@chakra-ui/descendant';\nimport { useControllableState, useId, useSafeLayoutEffect } from '@chakra-ui/hooks';\nimport { createContext, mergeRefs, getValidChildren } from '@chakra-ui/react-utils';\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\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded$1 = [\"defaultIndex\", \"onChange\", \"index\", \"isManual\", \"isLazy\", \"lazyBehavior\", \"orientation\", \"direction\"],\n _excluded2$1 = [\"isDisabled\", \"isFocusable\"],\n _excluded3 = [\"isSelected\", \"id\", \"children\"];\n/* -------------------------------------------------------------------------------------------------\n * Create context to track descendants and their indices\n * -----------------------------------------------------------------------------------------------*/\n\nvar _createDescendantCont = createDescendantContext(),\n TabsDescendantsProvider = _createDescendantCont[0],\n useTabsDescendantsContext = _createDescendantCont[1],\n useTabsDescendants = _createDescendantCont[2],\n useTabsDescendant = _createDescendantCont[3];\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 */\nfunction useTabs(props) {\n var defaultIndex = props.defaultIndex,\n onChange = props.onChange,\n index = props.index,\n isManual = props.isManual,\n isLazy = props.isLazy,\n _props$lazyBehavior = props.lazyBehavior,\n lazyBehavior = _props$lazyBehavior === void 0 ? \"unmount\" : _props$lazyBehavior,\n _props$orientation = props.orientation,\n orientation = _props$orientation === void 0 ? \"horizontal\" : _props$orientation,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? \"ltr\" : _props$direction,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded$1);\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\n\n var _React$useState = React.useState(defaultIndex != null ? defaultIndex : 0),\n focusedIndex = _React$useState[0],\n setFocusedIndex = _React$useState[1];\n\n var _useControllableState = useControllableState({\n defaultValue: defaultIndex != null ? defaultIndex : 0,\n value: index,\n onChange: onChange\n }),\n selectedIndex = _useControllableState[0],\n setSelectedIndex = _useControllableState[1];\n /**\n * Sync focused `index` with controlled `selectedIndex` (which is the `props.index`)\n */\n\n\n React.useEffect(function () {\n if (index != null) {\n setFocusedIndex(index);\n }\n }, [index]);\n /**\n * Think of `useDescendants` as a register for the tab nodes.\n */\n\n var descendants = useTabsDescendants();\n /**\n * Generate a unique id or use user-provided id for the tabs widget\n */\n\n var id = useId(props.id, \"tabs\");\n return {\n id: id,\n selectedIndex: selectedIndex,\n focusedIndex: focusedIndex,\n setSelectedIndex: setSelectedIndex,\n setFocusedIndex: setFocusedIndex,\n isManual: isManual,\n isLazy: isLazy,\n lazyBehavior: lazyBehavior,\n orientation: orientation,\n descendants: descendants,\n direction: direction,\n htmlProps: htmlProps\n };\n}\n\nvar _createContext = createContext({\n name: \"TabsContext\",\n errorMessage: \"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within <Tabs />\"\n}),\n TabsProvider = _createContext[0],\n useTabsContext = _createContext[1];\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 */\nfunction useTabList(props) {\n var _useTabsContext = useTabsContext(),\n focusedIndex = _useTabsContext.focusedIndex,\n orientation = _useTabsContext.orientation,\n direction = _useTabsContext.direction;\n\n var descendants = useTabsDescendantsContext();\n var onKeyDown = React.useCallback(function (event) {\n var _keyMap;\n\n var nextTab = function nextTab() {\n var next = descendants.nextEnabled(focusedIndex);\n if (next) focus(next.node);\n };\n\n var prevTab = function prevTab() {\n var prev = descendants.prevEnabled(focusedIndex);\n if (prev) focus(prev.node);\n };\n\n var firstTab = function firstTab() {\n var first = descendants.firstEnabled();\n if (first) focus(first.node);\n };\n\n var lastTab = function lastTab() {\n var last = descendants.lastEnabled();\n if (last) focus(last.node);\n };\n\n var isHorizontal = orientation === \"horizontal\";\n var isVertical = orientation === \"vertical\";\n var eventKey = normalizeEventKey(event);\n var ArrowStart = direction === \"ltr\" ? \"ArrowLeft\" : \"ArrowRight\";\n var ArrowEnd = direction === \"ltr\" ? \"ArrowRight\" : \"ArrowLeft\";\n var keyMap = (_keyMap = {}, _keyMap[ArrowStart] = function () {\n return isHorizontal && prevTab();\n }, _keyMap[ArrowEnd] = function () {\n return isHorizontal && nextTab();\n }, _keyMap.ArrowDown = function ArrowDown() {\n return isVertical && nextTab();\n }, _keyMap.ArrowUp = function ArrowUp() {\n return isVertical && prevTab();\n }, _keyMap.Home = firstTab, _keyMap.End = lastTab, _keyMap);\n var action = keyMap[eventKey];\n\n if (action) {\n event.preventDefault();\n action(event);\n }\n }, [descendants, focusedIndex, orientation, direction]);\n return _extends({}, props, {\n role: \"tablist\",\n \"aria-orientation\": orientation,\n onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown)\n });\n}\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 */\nfunction useTab(props) {\n var isDisabled = props.isDisabled,\n isFocusable = props.isFocusable,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded2$1);\n\n var _useTabsContext2 = useTabsContext(),\n setSelectedIndex = _useTabsContext2.setSelectedIndex,\n isManual = _useTabsContext2.isManual,\n id = _useTabsContext2.id,\n setFocusedIndex = _useTabsContext2.setFocusedIndex,\n selectedIndex = _useTabsContext2.selectedIndex;\n\n var _useTabsDescendant = useTabsDescendant({\n disabled: isDisabled && !isFocusable\n }),\n index = _useTabsDescendant.index,\n register = _useTabsDescendant.register;\n\n var isSelected = index === selectedIndex;\n\n var onClick = function onClick() {\n setSelectedIndex(index);\n };\n\n var onFocus = function onFocus() {\n setFocusedIndex(index);\n var isDisabledButFocusable = isDisabled && isFocusable;\n var shouldSelect = !isManual && !isDisabledButFocusable;\n\n if (shouldSelect) {\n setSelectedIndex(index);\n }\n };\n\n var clickableProps = useClickable(_extends({}, htmlProps, {\n ref: mergeRefs(register, props.ref),\n isDisabled: isDisabled,\n isFocusable: isFocusable,\n onClick: callAllHandlers(props.onClick, onClick)\n }));\n var type = \"button\";\n return _extends({}, clickableProps, {\n id: makeTabId(id, index),\n role: \"tab\",\n tabIndex: isSelected ? 0 : -1,\n type: type,\n \"aria-selected\": isSelected,\n \"aria-controls\": makeTabPanelId(id, index),\n onFocus: isDisabled ? undefined : callAllHandlers(props.onFocus, onFocus)\n });\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 */\nfunction useTabPanels(props) {\n var context = useTabsContext();\n var id = context.id,\n selectedIndex = context.selectedIndex;\n var validChildren = getValidChildren(props.children);\n var children = validChildren.map(function (child, index) {\n return /*#__PURE__*/React.cloneElement(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 return _extends({}, props, {\n children: 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 */\n\nfunction useTabPanel(props) {\n var isSelected = props.isSelected,\n id = props.id,\n children = props.children,\n htmlProps = _objectWithoutPropertiesLoose(props, _excluded3);\n\n var _useTabsContext3 = useTabsContext(),\n isLazy = _useTabsContext3.isLazy,\n lazyBehavior = _useTabsContext3.lazyBehavior;\n\n var hasBeenSelected = React.useRef(false);\n\n if (isSelected) {\n hasBeenSelected.current = true;\n }\n\n var shouldRenderChildren = determineLazyBehavior({\n hasBeenSelected: hasBeenSelected.current,\n isSelected: isSelected,\n isLazy: isLazy,\n lazyBehavior: lazyBehavior\n });\n return _extends({\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: id\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 */\n\nfunction useTabIndicator() {\n var context = useTabsContext();\n var descendants = useTabsDescendantsContext();\n var selectedIndex = context.selectedIndex,\n orientation = context.orientation;\n var isHorizontal = orientation === \"horizontal\";\n var isVertical = orientation === \"vertical\"; // Get the clientRect of the selected tab\n\n var _React$useState2 = React.useState(function () {\n if (isHorizontal) return {\n left: 0,\n width: 0\n };\n if (isVertical) return {\n top: 0,\n height: 0\n };\n return undefined;\n }),\n rect = _React$useState2[0],\n setRect = _React$useState2[1];\n\n var _React$useState3 = React.useState(false),\n hasMeasured = _React$useState3[0],\n setHasMeasured = _React$useState3[1]; // Update the selected tab rect when the selectedIndex changes\n\n\n useSafeLayoutEffect(function () {\n if (isUndefined(selectedIndex)) return undefined;\n var tab = descendants.item(selectedIndex);\n if (isUndefined(tab)) return undefined; // Horizontal Tab: Calculate width and left distance\n\n if (isHorizontal) {\n setRect({\n left: tab.node.offsetLeft,\n width: tab.node.offsetWidth\n });\n } // Vertical Tab: Calculate height and top distance\n\n\n if (isVertical) {\n setRect({\n top: tab.node.offsetTop,\n height: tab.node.offsetHeight\n });\n } // Prevent unwanted transition from 0 to measured rect\n // by setting the measured state in the next tick\n\n\n var id = requestAnimationFrame(function () {\n setHasMeasured(true);\n });\n return function () {\n if (id) {\n cancelAnimationFrame(id);\n }\n };\n }, [selectedIndex, isHorizontal, isVertical, descendants]);\n return _extends({\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\nfunction makeTabId(id, index) {\n return id + \"--tab-\" + index;\n}\n\nfunction makeTabPanelId(id, index) {\n return id + \"--tabpanel-\" + index;\n}\n\nvar _excluded = [\"children\", \"className\"],\n _excluded2 = [\"htmlProps\", \"descendants\"];\n\n/**\n * Tabs\n *\n * Provides context and logic for all tabs components.\n */\nvar Tabs = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Tabs\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n children = _omitThemingProps.children,\n className = _omitThemingProps.className,\n rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded);\n\n var _useTabs = useTabs(rest),\n htmlProps = _useTabs.htmlProps,\n descendants = _useTabs.descendants,\n ctx = _objectWithoutPropertiesLoose(_useTabs, _excluded2);\n\n var context = React.useMemo(function () {\n return ctx;\n }, [ctx]);\n var rootProps = omit(htmlProps, [\"isFitted\"]);\n return /*#__PURE__*/React.createElement(TabsDescendantsProvider, {\n value: descendants\n }, /*#__PURE__*/React.createElement(TabsProvider, {\n value: context\n }, /*#__PURE__*/React.createElement(StylesProvider, {\n value: styles\n }, /*#__PURE__*/React.createElement(chakra.div, _extends({\n className: cx(\"chakra-tabs\", className),\n ref: ref\n }, rootProps, {\n __css: styles.root\n }), children))));\n});\n\nif (__DEV__) {\n Tabs.displayName = \"Tabs\";\n}\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 */\nvar Tab = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n var tabProps = useTab(_extends({}, props, {\n ref: ref\n }));\n\n var tabStyles = _extends({\n outline: \"0\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n }, styles.tab);\n\n return /*#__PURE__*/React.createElement(chakra.button, _extends({}, tabProps, {\n className: cx(\"chakra-tabs__tab\", props.className),\n __css: tabStyles\n }));\n});\n\nif (__DEV__) {\n Tab.displayName = \"Tab\";\n}\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 */\nvar TabList = /*#__PURE__*/forwardRef(function (props, ref) {\n var tablistProps = useTabList(_extends({}, props, {\n ref: ref\n }));\n var styles = useStyles();\n\n var tablistStyles = _extends({\n display: \"flex\"\n }, styles.tablist);\n\n return /*#__PURE__*/React.createElement(chakra.div, _extends({}, tablistProps, {\n className: cx(\"chakra-tabs__tablist\", props.className),\n __css: tablistStyles\n }));\n});\n\nif (__DEV__) {\n TabList.displayName = \"TabList\";\n}\n\n/**\n * TabPanel\n * Used to render the content for a specific tab.\n */\nvar TabPanel = /*#__PURE__*/forwardRef(function (props, ref) {\n var panelProps = useTabPanel(_extends({}, props, {\n ref: ref\n }));\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n outline: \"0\"\n }, panelProps, {\n className: cx(\"chakra-tabs__tab-panel\", props.className),\n __css: styles.tabpanel\n }));\n});\n\nif (__DEV__) {\n TabPanel.displayName = \"TabPanel\";\n}\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 */\nvar TabPanels = /*#__PURE__*/forwardRef(function (props, ref) {\n var panelsProps = useTabPanels(props);\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({}, panelsProps, {\n width: \"100%\",\n ref: ref,\n className: cx(\"chakra-tabs__tab-panels\", props.className),\n __css: styles.tabpanels\n }));\n});\n\nif (__DEV__) {\n TabPanels.displayName = \"TabPanels\";\n}\n\n/**\n * TabIndicator\n *\n * Used to render an active tab indicator that animates between\n * selected tabs.\n */\nvar TabIndicator = /*#__PURE__*/forwardRef(function (props, ref) {\n var indicatorStyle = useTabIndicator();\n\n var style = _extends({}, props.style, indicatorStyle);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n ref: ref\n }, props, {\n className: cx(\"chakra-tabs__tab-indicator\", props.className),\n style: style,\n __css: styles.indicator\n }));\n});\n\nif (__DEV__) {\n TabIndicator.displayName = \"TabIndicator\";\n}\n\nexport { Tab, TabIndicator, TabList, TabPanel, TabPanels, Tabs, TabsDescendantsProvider, TabsProvider, useTab, useTabIndicator, useTabList, useTabPanel, useTabPanels, useTabs, useTabsContext, useTabsDescendant, useTabsDescendants, useTabsDescendantsContext };\n","'use strict'\n\nmodule.exports = bail\n\nfunction bail(err) {\n if (err) {\n throw err\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\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","'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","'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\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 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\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\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'\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 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 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\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 = require('./html')\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","// 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","/*!\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\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","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 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 root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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 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 * 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","/**\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","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","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 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 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","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","/**\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","/**\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 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 * 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 root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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\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","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","/**\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","/** 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 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 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","/** 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","/**\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","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","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","/** 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","/**\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","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","/**\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","/** 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","/** 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 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","/**\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","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","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","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","/** 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 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","/**\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","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","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 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","/**\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","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","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","'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'\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","'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 = 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 = 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 = require('./dist')\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","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","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","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","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","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","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 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","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 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","'use strict'\nmodule.exports = require('./lib')\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 = 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 = 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 = 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 = 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 = {\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 = 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 = 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 = 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\nmodule.exports = thematicBreak\n\nfunction thematicBreak(h, node) {\n return h(node, 'hr')\n}\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","'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 = 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\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","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","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 = 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 = 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","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 = 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\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","\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 = 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","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","'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\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\nmodule.exports = asciiAlphanumeric\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\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 regexCheck = require('../util/regex-check.js')\n\nvar asciiDigit = regexCheck(/\\d/)\n\nmodule.exports = asciiDigit\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 regexCheck = require('../util/regex-check.js')\n\nvar asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\nmodule.exports = asciiPunctuation\n","'use strict'\n\nfunction markdownLineEndingOrSpace(code) {\n return code < 0 || code === 32\n}\n\nmodule.exports = markdownLineEndingOrSpace\n","'use strict'\n\nfunction markdownLineEnding(code) {\n return code < -2\n}\n\nmodule.exports = markdownLineEnding\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 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\nvar assign = Object.assign\n\nmodule.exports = assign\n","'use strict'\n\nvar fromCharCode = String.fromCharCode\n\nmodule.exports = fromCharCode\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = own\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 splice = [].splice\n\nmodule.exports = splice\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\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\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\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 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\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 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 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\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 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 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 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 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 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 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 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","'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\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')\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\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 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\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 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\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 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\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 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\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\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 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\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\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\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\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 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","'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 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 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\nvar assign = require('../constant/assign.js')\n\nfunction shallow(object) {\n return assign({}, object)\n}\n\nmodule.exports = shallow\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\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\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","module.exports = require('./lib/emoji');","/*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","'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 (`¬` - for instance),\n // which leads to situations where parsing the assumed entity of ¬it; 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 (`;`), 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\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\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","'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\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","'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\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","'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 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","'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 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 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","'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\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 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 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\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","'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 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\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\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","/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\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 */\n\n var Prism = (function () {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\treturn _;\n\n}());\n\nvar prism = Prism;\nPrism.default = Prism;\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': {\n pattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n greedy: true\n },\n 'prolog': {\n pattern: /<\\?[\\s\\S]+?\\?>/,\n greedy: true\n },\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/i,\n 'name': /[^\\s<>'\"]+/\n }\n },\n 'cdata': {\n pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n greedy: true\n },\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 'special-attr': [],\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(/&/, '&');\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});\nObject.defineProperty(prism.languages.markup.tag, 'addAttribute', {\n /**\n * Adds an pattern to highlight languages embedded in HTML attributes.\n *\n * An example of an inlined language is CSS with `style` attributes.\n *\n * @param {string} attrName 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 * addAttribute('style', 'css');\n */\n value: function (attrName, lang) {\n prism.languages.markup.tag.inside['special-attr'].push({\n pattern: RegExp(/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source, 'i'),\n lookbehind: true,\n inside: {\n 'attr-name': /^[^\\s=]+/,\n 'attr-value': {\n pattern: /=[\\s\\S]+/,\n inside: {\n 'value': {\n pattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n lookbehind: true,\n alias: [lang, 'language-' + lang],\n inside: prism.languages[lang]\n },\n 'punctuation': [{\n pattern: /^=/,\n alias: 'attr-equals'\n }, /\"|'/]\n }\n }\n }\n });\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}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\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 // https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n pattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n }, {\n // https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n pattern: /(^|[^$\\\\])'[^']*'/,\n lookbehind: true,\n greedy: true\n }, {\n // https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n pattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n greedy: true,\n inside: {\n 'entity': insideString.entity\n }\n }],\n 'environment': {\n pattern: RegExp('\\\\$?' + envVars),\n alias: 'constant'\n },\n 'variable': insideString.variable,\n 'function': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|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|docker|docker-compose|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|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|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|vcpkg|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;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'builtin': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\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;|&]|[<>]\\()(?:false|true)(?=$|[)\\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|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n 'punctuation': /[.\\\\]/\n }\n },\n 'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n 'boolean': /\\b(?:false|true)\\b/,\n 'function': /\\b\\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 'string': {\n // https://en.cppreference.com/w/c/language/string_literal\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\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(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,\n 'function': /\\b[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 'char': {\n // https://en.cppreference.com/w/c/language/character_constant\n pattern: /'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,\n greedy: true\n }\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: /(^[\\t ]*)#\\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 'char': prism.languages.c['char'],\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});\nprism.languages.insertBefore('c', 'function', {\n // highlight predefined macros as constants\n 'constant': /\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\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|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|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|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/;\n var modName = /\\b(?!<keyword>)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(/<keyword>/g, function () {\n return keyword.source;\n });\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 /\\b\\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': />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n 'boolean': /\\b(?:false|true)\\b/\n });\n Prism.languages.insertBefore('cpp', 'string', {\n 'module': {\n // https://en.cppreference.com/w/cpp/language/modules\n pattern: RegExp(/(\\b(?:import|module)\\s+)/.source + '(?:' + // header-name\n /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source + '|' + // module name or partition or both\n /<mod-name>(?:\\s*:\\s*<mod-name>)?|:\\s*<mod-name>/.source.replace(/<mod-name>/g, function () {\n return modName;\n }) + ')'),\n lookbehind: true,\n greedy: true,\n inside: {\n 'string': /^[<\"][\\s\\S]+/,\n 'operator': /:/,\n 'punctuation': /\\./\n }\n },\n 'raw-string': {\n pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n alias: 'string',\n greedy: true\n }\n });\n Prism.languages.insertBefore('cpp', 'keyword', {\n 'generic-function': {\n pattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i,\n inside: {\n 'function': /^\\w+/,\n 'generic': {\n pattern: /<[\\s\\S]+/,\n alias: 'class-name',\n inside: Prism.languages.cpp\n }\n }\n }\n });\n Prism.languages.insertBefore('cpp', 'operator', {\n 'double-colon': {\n pattern: /::/,\n alias: 'punctuation'\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', 'double-colon', {\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])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\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': {\n pattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n lookbehind: true\n },\n 'string': {\n pattern: string,\n greedy: true\n },\n 'property': {\n pattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n lookbehind: true\n },\n 'important': /!important\\b/i,\n 'function': {\n pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n lookbehind: true\n },\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 markup.tag.addAttribute('style', 'css');\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.pattern,\n lookbehind: true,\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]+(?![\\w-]))/,\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]{3,8}\\b/i,\n alias: 'color'\n },\n 'color': [{\n pattern: /(^|[^\\w-])(?: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)(?![\\w-])/i,\n lookbehind: true\n }, {\n pattern: /\\b(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)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])*(?=\\.(?:constructor|prototype))/,\n lookbehind: true\n }],\n 'keyword': [{\n pattern: /((?:^|\\})\\s*)catch\\b/,\n lookbehind: true\n }, {\n pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|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': {\n pattern: RegExp(/(^|[^\\w$])/.source + '(?:' + ( // constant\n /NaN|Infinity/.source + '|' + // binary integer\n /0[bB][01]+(?:_[01]+)*n?/.source + '|' + // octal integer\n /0[oO][0-7]+(?:_[0-7]+)*n?/.source + '|' + // hexadecimal integer\n /0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source + '|' + // decimal bigint\n /\\d+(?:_\\d+)*n/.source + '|' + // decimal number (integer or float) but no bigint\n /(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source) + ')' + /(?![\\w$])/.source),\n lookbehind: true\n },\n 'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\nprism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\nprism.languages.insertBefore('javascript', 'keyword', {\n 'regex': {\n // eslint-disable-next-line regexp/no-dupe-characters-character-class\n pattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}(?=(?:\\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-delimiter': /^\\/|\\/$/,\n 'regex-flags': /^[a-z]+$/\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: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n lookbehind: true,\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 'hashbang': {\n pattern: /^#!.*/,\n greedy: true,\n alias: 'comment'\n },\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 'string-property': {\n pattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n lookbehind: true,\n greedy: true,\n alias: 'property'\n }\n});\nprism.languages.insertBefore('javascript', 'operator', {\n 'literal-property': {\n pattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n lookbehind: true,\n alias: 'property'\n }\n});\n\nif (prism.languages.markup) {\n prism.languages.markup.tag.addInlined('script', 'javascript'); // add attribute support for all DOM events.\n // https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\n prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, '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 var space = /(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)/.source;\n var braces = /(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})/.source;\n var spread = /(?:\\{<S>*\\.{3}(?:[^{}]|<BRACES>)*\\})/.source;\n /**\n * @param {string} source\n * @param {string} [flags]\n */\n\n function re(source, flags) {\n source = source.replace(/<S>/g, function () {\n return space;\n }).replace(/<BRACES>/g, function () {\n return braces;\n }).replace(/<SPREAD>/g, function () {\n return spread;\n });\n return RegExp(source, flags);\n }\n\n spread = re(spread).source;\n Prism.languages.jsx = Prism.languages.extend('markup', javascript);\n Prism.languages.jsx.tag.pattern = re(/<\\/?(?:[\\w.:-]+(?:<S>+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\\/?)?>/.source);\n Prism.languages.jsx.tag.inside['tag'].pattern = /^<\\/?[^\\s>\\/]*/;\n Prism.languages.jsx.tag.inside['attr-value'].pattern = /=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/;\n Prism.languages.jsx.tag.inside['tag'].inside['class-name'] = /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/;\n Prism.languages.jsx.tag.inside['comment'] = javascript['comment'];\n Prism.languages.insertBefore('inside', 'attr-name', {\n 'spread': {\n pattern: re(/<SPREAD>/.source),\n inside: Prism.languages.jsx\n }\n }, Prism.languages.jsx.tag);\n Prism.languages.insertBefore('inside', 'special-attr', {\n 'script': {\n // Allow for two levels of nesting\n pattern: re(/=<BRACES>/.source),\n alias: 'language-javascript',\n inside: {\n 'script-punctuation': {\n pattern: /^=(?=\\{)/,\n alias: 'punctuation'\n },\n rest: Prism.languages.jsx\n }\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(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|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|finally|for|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|(?:local|session)Storage|location|navigator|performance|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-js-templates\" */\n\n\n(function (Prism) {\n var templateString = Prism.languages.javascript['template-string']; // see the pattern in prism-javascript.js\n\n var templateLiteralPattern = templateString.pattern.source;\n var interpolationObject = templateString.inside['interpolation'];\n var interpolationPunctuationObject = interpolationObject.inside['interpolation-punctuation'];\n var interpolationPattern = interpolationObject.pattern.source;\n /**\n * Creates a new pattern to match a template string with a special tag.\n *\n * This will return `undefined` if there is no grammar with the given language id.\n *\n * @param {string} language The language id of the embedded language. E.g. `markdown`.\n * @param {string} tag The regex pattern to match the tag.\n * @returns {object | undefined}\n * @example\n * createTemplate('css', /\\bcss/.source);\n */\n\n function createTemplate(language, tag) {\n if (!Prism.languages[language]) {\n return undefined;\n }\n\n return {\n pattern: RegExp('((?:' + tag + ')\\\\s*)' + templateLiteralPattern),\n lookbehind: true,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n 'embedded-code': {\n pattern: /[\\s\\S]+/,\n alias: language\n }\n }\n };\n }\n\n Prism.languages.javascript['template-string'] = [// styled-jsx:\n // css`a { color: #25F; }`\n // styled-components:\n // styled.h1`color: red;`\n createTemplate('css', /\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source), // html`<p></p>`\n // div.innerHTML = `<p></p>`\n createTemplate('html', /\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=/.source), // svg`<path fill=\"#fff\" d=\"M55.37 ...\"/>`\n createTemplate('svg', /\\bsvg/.source), // md`# h1`, markdown`## h2`\n createTemplate('markdown', /\\b(?:markdown|md)/.source), // gql`...`, graphql`...`, graphql.experimental`...`\n createTemplate('graphql', /\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)/.source), // sql`...`\n createTemplate('sql', /\\bsql/.source), // vanilla template string\n templateString].filter(Boolean);\n /**\n * Returns a specific placeholder literal for the given language.\n *\n * @param {number} counter\n * @param {string} language\n * @returns {string}\n */\n\n function getPlaceholder(counter, language) {\n return '___' + language.toUpperCase() + '_' + counter + '___';\n }\n /**\n * Returns the tokens of `Prism.tokenize` but also runs the `before-tokenize` and `after-tokenize` hooks.\n *\n * @param {string} code\n * @param {any} grammar\n * @param {string} language\n * @returns {(string|Token)[]}\n */\n\n\n function tokenizeWithHooks(code, grammar, language) {\n var env = {\n code: code,\n grammar: grammar,\n language: language\n };\n Prism.hooks.run('before-tokenize', env);\n env.tokens = Prism.tokenize(env.code, env.grammar);\n Prism.hooks.run('after-tokenize', env);\n return env.tokens;\n }\n /**\n * Returns the token of the given JavaScript interpolation expression.\n *\n * @param {string} expression The code of the expression. E.g. `\"${42}\"`\n * @returns {Token}\n */\n\n\n function tokenizeInterpolationExpression(expression) {\n var tempGrammar = {};\n tempGrammar['interpolation-punctuation'] = interpolationPunctuationObject;\n /** @type {Array} */\n\n var tokens = Prism.tokenize(expression, tempGrammar);\n\n if (tokens.length === 3) {\n /**\n * The token array will look like this\n * [\n * [\"interpolation-punctuation\", \"${\"]\n * \"...\" // JavaScript expression of the interpolation\n * [\"interpolation-punctuation\", \"}\"]\n * ]\n */\n var args = [1, 1];\n args.push.apply(args, tokenizeWithHooks(tokens[1], Prism.languages.javascript, 'javascript'));\n tokens.splice.apply(tokens, args);\n }\n\n return new Prism.Token('interpolation', tokens, interpolationObject.alias, expression);\n }\n /**\n * Tokenizes the given code with support for JavaScript interpolation expressions mixed in.\n *\n * This function has 3 phases:\n *\n * 1. Replace all JavaScript interpolation expression with a placeholder.\n * The placeholder will have the syntax of a identify of the target language.\n * 2. Tokenize the code with placeholders.\n * 3. Tokenize the interpolation expressions and re-insert them into the tokenize code.\n * The insertion only works if a placeholder hasn't been \"ripped apart\" meaning that the placeholder has been\n * tokenized as two tokens by the grammar of the embedded language.\n *\n * @param {string} code\n * @param {object} grammar\n * @param {string} language\n * @returns {Token}\n */\n\n\n function tokenizeEmbedded(code, grammar, language) {\n // 1. First filter out all interpolations\n // because they might be escaped, we need a lookbehind, so we use Prism\n\n /** @type {(Token|string)[]} */\n var _tokens = Prism.tokenize(code, {\n 'interpolation': {\n pattern: RegExp(interpolationPattern),\n lookbehind: true\n }\n }); // replace all interpolations with a placeholder which is not in the code already\n\n\n var placeholderCounter = 0;\n /** @type {Object<string, string>} */\n\n var placeholderMap = {};\n\n var embeddedCode = _tokens.map(function (token) {\n if (typeof token === 'string') {\n return token;\n } else {\n var interpolationExpression = token.content;\n var placeholder;\n\n while (code.indexOf(placeholder = getPlaceholder(placeholderCounter++, language)) !== -1) {\n /* noop */\n }\n\n placeholderMap[placeholder] = interpolationExpression;\n return placeholder;\n }\n }).join(''); // 2. Tokenize the embedded code\n\n\n var embeddedTokens = tokenizeWithHooks(embeddedCode, grammar, language); // 3. Re-insert the interpolation\n\n var placeholders = Object.keys(placeholderMap);\n placeholderCounter = 0;\n /**\n *\n * @param {(Token|string)[]} tokens\n * @returns {void}\n */\n\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n if (placeholderCounter >= placeholders.length) {\n return;\n }\n\n var token = tokens[i];\n\n if (typeof token === 'string' || typeof token.content === 'string') {\n var placeholder = placeholders[placeholderCounter];\n var s = typeof token === 'string' ? token :\n /** @type {string} */\n token.content;\n var index = s.indexOf(placeholder);\n\n if (index !== -1) {\n ++placeholderCounter;\n var before = s.substring(0, index);\n var middle = tokenizeInterpolationExpression(placeholderMap[placeholder]);\n var after = s.substring(index + placeholder.length);\n var replacement = [];\n\n if (before) {\n replacement.push(before);\n }\n\n replacement.push(middle);\n\n if (after) {\n var afterTokens = [after];\n walkTokens(afterTokens);\n replacement.push.apply(replacement, afterTokens);\n }\n\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement));\n i += replacement.length - 1;\n } else {\n token.content = replacement;\n }\n }\n } else {\n var content = token.content;\n\n if (Array.isArray(content)) {\n walkTokens(content);\n } else {\n walkTokens([content]);\n }\n }\n }\n }\n\n walkTokens(embeddedTokens);\n return new Prism.Token(language, embeddedTokens, 'language-' + language, code);\n }\n /**\n * The languages for which JS templating will handle tagged template literals.\n *\n * JS templating isn't active for only JavaScript but also related languages like TypeScript, JSX, and TSX.\n */\n\n\n var supportedLanguages = {\n 'javascript': true,\n 'js': true,\n 'typescript': true,\n 'ts': true,\n 'jsx': true,\n 'tsx': true\n };\n Prism.hooks.add('after-tokenize', function (env) {\n if (!(env.language in supportedLanguages)) {\n return;\n }\n /**\n * Finds and tokenizes all template strings with an embedded languages.\n *\n * @param {(Token | string)[]} tokens\n * @returns {void}\n */\n\n\n function findTemplateStrings(tokens) {\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n continue;\n }\n\n var content = token.content;\n\n if (!Array.isArray(content)) {\n if (typeof content !== 'string') {\n findTemplateStrings([content]);\n }\n\n continue;\n }\n\n if (token.type === 'template-string') {\n /**\n * A JavaScript template-string token will look like this:\n *\n * [\"template-string\", [\n * [\"template-punctuation\", \"`\"],\n * (\n * An array of \"string\" and \"interpolation\" tokens. This is the simple string case.\n * or\n * [\"embedded-code\", \"...\"] This is the token containing the embedded code.\n * It also has an alias which is the language of the embedded code.\n * ),\n * [\"template-punctuation\", \"`\"]\n * ]]\n */\n var embedded = content[1];\n\n if (content.length === 3 && typeof embedded !== 'string' && embedded.type === 'embedded-code') {\n // get string content\n var code = stringContent(embedded);\n var alias = embedded.alias;\n var language = Array.isArray(alias) ? alias[0] : alias;\n var grammar = Prism.languages[language];\n\n if (!grammar) {\n // the embedded language isn't registered.\n continue;\n }\n\n content[1] = tokenizeEmbedded(code, grammar, language);\n }\n } else {\n findTemplateStrings(content);\n }\n }\n }\n\n findTemplateStrings(env.tokens);\n });\n /**\n * Returns the string content of a token or token stream.\n *\n * @param {string | Token | (string | Token)[]} value\n * @returns {string}\n */\n\n function stringContent(value) {\n if (typeof value === 'string') {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(stringContent).join('');\n } else {\n return stringContent(value.content);\n }\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 var 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/,\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+/\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: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|`[^`]*`/,\n lookbehind: true,\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(?:_|false|iota|nil|true)\\b/,\n 'number': [// binary and octal integers\n /\\b0(?:b[01_]+|o[0-7_]+)i?\\b/i, // hexadecimal integers and floats\n /\\b0x(?:[a-f\\d_]+(?:\\.[a-f\\d_]*)?|\\.[a-f\\d_]+)(?:p[+-]?\\d+(?:_\\d+)*)?i?(?!\\w)/i, // decimal integers and floats\n /(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?[\\d_]+)?i?(?!\\w)/i],\n 'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n 'builtin': /\\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\\b/\n});\nprism.languages.insertBefore('go', 'string', {\n 'char': {\n pattern: /'(?:\\\\.|[^'\\\\\\r\\n]){0,10}'/,\n greedy: true\n }\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(?:false|true)\\b/,\n 'variable': /\\$[a-z_]\\w*/i,\n 'directive': {\n pattern: /@[a-z_]\\w*/i,\n alias: 'function'\n },\n 'attr-name': {\n pattern: /\\b[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n greedy: true\n },\n 'atom-input': {\n pattern: /\\b[A-Z]\\w*Input\\b/,\n alias: 'class-name'\n },\n 'scalar': /\\b(?:Boolean|Float|ID|Int|String)\\b/,\n 'constant': /\\b[A-Z][A-Z_\\d]*\\b/,\n 'class-name': {\n pattern: /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+|&\\s*|:\\s*|\\[)[A-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 'definition-mutation': {\n pattern: /(\\bmutation\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n 'definition-query': {\n pattern: /(\\bquery\\s+)[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 'property-query': /\\w+(?=\\s*\\()/,\n 'object': /\\w+(?=\\s*\\{)/,\n 'punctuation': /[!(){}\\[\\]:=,]/,\n 'property': /\\w+/\n};\nprism.hooks.add('after-tokenize', function afterTokenizeGraphql(env) {\n if (env.language !== 'graphql') {\n return;\n }\n /**\n * get the graphql token stream that we want to customize\n *\n * @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n * @type {Token[]}\n */\n\n\n var validTokens = env.tokens.filter(function (token) {\n return typeof token !== 'string' && token.type !== 'comment' && token.type !== 'scalar';\n });\n var currentIndex = 0;\n /**\n * Returns whether the token relative to the current index has the given type.\n *\n * @param {number} offset\n * @returns {Token | undefined}\n */\n\n function getToken(offset) {\n return validTokens[currentIndex + offset];\n }\n /**\n * Returns whether the token relative to the current index has the given type.\n *\n * @param {readonly string[]} types\n * @param {number} [offset=0]\n * @returns {boolean}\n */\n\n\n function isTokenType(types, offset) {\n offset = offset || 0;\n\n for (var i = 0; i < types.length; i++) {\n var token = getToken(i + offset);\n\n if (!token || token.type !== types[i]) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Returns the index of the closing bracket to an opening bracket.\n *\n * It is assumed that `token[currentIndex - 1]` is an opening bracket.\n *\n * If no closing bracket could be found, `-1` will be returned.\n *\n * @param {RegExp} open\n * @param {RegExp} close\n * @returns {number}\n */\n\n\n function findClosingBracket(open, close) {\n var stackHeight = 1;\n\n for (var i = currentIndex; i < validTokens.length; i++) {\n var token = validTokens[i];\n var content = token.content;\n\n if (token.type === 'punctuation' && typeof content === 'string') {\n if (open.test(content)) {\n stackHeight++;\n } else if (close.test(content)) {\n stackHeight--;\n\n if (stackHeight === 0) {\n return i;\n }\n }\n }\n }\n\n return -1;\n }\n /**\n * Adds an alias to the given token.\n *\n * @param {Token} token\n * @param {string} alias\n * @returns {void}\n */\n\n\n function addAlias(token, alias) {\n var aliases = token.alias;\n\n if (!aliases) {\n token.alias = aliases = [];\n } else if (!Array.isArray(aliases)) {\n token.alias = aliases = [aliases];\n }\n\n aliases.push(alias);\n }\n\n for (; currentIndex < validTokens.length;) {\n var startToken = validTokens[currentIndex++]; // add special aliases for mutation tokens\n\n if (startToken.type === 'keyword' && startToken.content === 'mutation') {\n // any array of the names of all input variables (if any)\n var inputVariables = [];\n\n if (isTokenType(['definition-mutation', 'punctuation']) && getToken(1).content === '(') {\n // definition\n currentIndex += 2; // skip 'definition-mutation' and 'punctuation'\n\n var definitionEnd = findClosingBracket(/^\\($/, /^\\)$/);\n\n if (definitionEnd === -1) {\n continue;\n } // find all input variables\n\n\n for (; currentIndex < definitionEnd; currentIndex++) {\n var t = getToken(0);\n\n if (t.type === 'variable') {\n addAlias(t, 'variable-input');\n inputVariables.push(t.content);\n }\n }\n\n currentIndex = definitionEnd + 1;\n }\n\n if (isTokenType(['punctuation', 'property-query']) && getToken(0).content === '{') {\n currentIndex++; // skip opening bracket\n\n addAlias(getToken(0), 'property-mutation');\n\n if (inputVariables.length > 0) {\n var mutationEnd = findClosingBracket(/^\\{$/, /^\\}$/);\n\n if (mutationEnd === -1) {\n continue;\n } // give references to input variables a special alias\n\n\n for (var i = currentIndex; i < mutationEnd; i++) {\n var varToken = validTokens[i];\n\n if (varToken.type === 'variable' && inputVariables.indexOf(varToken.content) >= 0) {\n addAlias(varToken, 'variable-input');\n }\n }\n }\n }\n }\n }\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: /^\\{\\{\\{?|\\}\\}\\}?$/,\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(?:false|true)\\b/,\n 'block': {\n pattern: /^(\\s*(?:~\\s*)?)[#\\/]\\S+?(?=\\s*(?:~\\s*)?$|\\s)/,\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.languages.hbs = Prism.languages.handlebars;\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 lookbehind: true,\n greedy: true\n },\n 'string': {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n lookbehind: true,\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(?:false|true)\\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*:)/,\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 'builtin-target': {\n pattern: /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n alias: 'builtin'\n },\n 'target': {\n pattern: /^(?:[^:=\\s]|[ \\t]+(?![\\s:]))+(?=\\s*:(?!=))/m,\n alias: 'symbol',\n inside: {\n 'variable': /\\$+(?:(?!\\$)[^(){}:#=\\s]+|(?=[({]))/\n }\n },\n 'variable': /\\$+(?:(?!\\$)[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n // Directives\n 'keyword': /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n 'function': {\n pattern: /(\\()(?:abspath|addsuffix|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(?:list|s)?)(?=[ \\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?)(?![\\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 'front-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 // ```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 // eslint-disable-next-line regexp/strict\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 'code-snippet': {\n // `code`\n // ``code``\n pattern: /(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,\n lookbehind: true,\n greedy: true,\n alias: ['code', 'keyword']\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', 'code-snippet'].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 env.content = Prism.highlight(textContent(env.content), grammar, codeLang);\n }\n });\n var tagPattern = RegExp(Prism.languages.markup.tag.pattern.source, 'gi');\n /**\n * A list of known entity names.\n *\n * This will always be incomplete to save space. The current list is the one used by lowdash's unescape function.\n *\n * @see {@link https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/unescape.js#L2}\n */\n\n var KNOWN_ENTITY_NAMES = {\n 'amp': '&',\n 'lt': '<',\n 'gt': '>',\n 'quot': '\"'\n }; // IE 11 doesn't support `String.fromCodePoint`\n\n var fromCodePoint = String.fromCodePoint || String.fromCharCode;\n /**\n * Returns the text content of a given HTML source code string.\n *\n * @param {string} html\n * @returns {string}\n */\n\n function textContent(html) {\n // remove all tags\n var text = html.replace(tagPattern, ''); // decode known entities\n\n text = text.replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi, function (m, code) {\n code = code.toLowerCase();\n\n if (code[0] === '#') {\n var value;\n\n if (code[1] === 'x') {\n value = parseInt(code.slice(2), 16);\n } else {\n value = Number(code.slice(1));\n }\n\n return fromCodePoint(value);\n } else {\n var known = KNOWN_ENTITY_NAMES[code];\n\n if (known) {\n return known;\n } // unable to decode\n\n\n return m;\n }\n });\n return text;\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': {\n pattern: /@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n greedy: true\n },\n 'keyword': /\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\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// https://ocaml.org/manual/lex.html\n\nprism.languages.ocaml = {\n 'comment': {\n pattern: /\\(\\*[\\s\\S]*?\\*\\)/,\n greedy: true\n },\n 'char': {\n pattern: /'(?:[^\\\\\\r\\n']|\\\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,\n greedy: true\n },\n 'string': [{\n pattern: /\"(?:\\\\(?:[\\s\\S]|\\r\\n)|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n }, {\n pattern: /\\{([a-z_]*)\\|[\\s\\S]*?\\|\\1\\}/,\n greedy: true\n }],\n 'number': [// binary and octal\n /\\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\\b/i, // hexadecimal\n /\\b0x[a-f0-9][a-f0-9_]*(?:\\.[a-f0-9_]*)?(?:p[+-]?\\d[\\d_]*)?(?!\\w)/i, // decimal\n /\\b\\d[\\d_]*(?:\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?(?!\\w)/i],\n 'directive': {\n pattern: /\\B#\\w+/,\n alias: 'property'\n },\n 'label': {\n pattern: /\\B~\\w+/,\n alias: 'property'\n },\n 'type-variable': {\n pattern: /\\B'\\w+/,\n alias: 'function'\n },\n 'variant': {\n pattern: /`\\w+/,\n alias: 'symbol'\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 'operator-like-punctuation': {\n pattern: /\\[[<>|]|[>|]\\]|\\{<|>\\}/,\n alias: 'punctuation'\n },\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 greedy: true\n },\n 'string-interpolation': {\n pattern: /(?:f|fr|rf)(?:(\"\"\"|''')[\\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: //,\n alias: 'punctuation'\n },\n rest: null\n }\n },\n 'string': /[\\s\\S]+/\n }\n },\n 'triple-quoted-string': {\n pattern: /(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n greedy: true,\n alias: 'string'\n },\n 'string': {\n pattern: /(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\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: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,\n lookbehind: true,\n alias: ['annotation', 'punctuation'],\n inside: {\n 'punctuation': /\\./\n }\n },\n 'keyword': /\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|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(?:False|None|True)\\b/,\n 'number': /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/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(?:asr|land|lor|lsl|lsr|lxor|mod)\\b/\n});\nprism.languages.insertBefore('reason', 'class-name', {\n 'char': {\n pattern: /'(?:\\\\x[\\da-f]{2}|\\\\o[0-3][0-7][0-7]|\\\\\\d{3}|\\\\.|[^'\\\\\\r\\n])'/,\n greedy: true\n },\n // Negative look-ahead prevents from matching things like String.capitalize\n 'constructor': /\\b[A-Z]\\w*\\b(?!\\s*\\.)/,\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 greedy: 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 greedy: true,\n inside: {\n 'atrule': /(?:@[\\w-]+|[+=])/\n }\n }\n });\n delete Prism.languages.sass.atrule;\n var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/;\n var operator = [/[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|not|or)\\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 greedy: true,\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 greedy: true,\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]+)*)*/m,\n lookbehind: true,\n greedy: 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|[^}][^:{}]*[:{][^}]))/,\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': [/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\\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|hide|show|with)\\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(?:false|true)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n },\n 'operator': {\n pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|not|or)(?=\\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 'identifier': {\n pattern: /(^|[^@\\\\])`(?:\\\\[\\s\\S]|[^`\\\\]|``)*`/,\n greedy: true,\n lookbehind: true,\n inside: {\n 'punctuation': /^`|`$/\n }\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(?:COL|_INSERT)?|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(?:ING|S)?|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(?:FALSE|NULL|TRUE)\\b/i,\n 'number': /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n 'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|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: /\\burl\\(([\"']?).*?\\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+)(?:(?:else|for|if|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(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)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(?:false|true)\\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: /(^[ \\t]*)@.+/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]*)(?:else|for|if|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 'builtin': /\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/\n }); // The keywords TypeScript adds to JavaScript\n\n Prism.languages.typescript.keyword.push(/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/, // keywords that have to be followed by an identifier\n /\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/, // This is for `import type *, {}`\n /\\btype\\b(?=\\s*(?:[\\{*]|$))/); // doesn't work with TS because TS is too complex\n\n delete Prism.languages.typescript['parameter'];\n delete Prism.languages.typescript['literal-property']; // 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 'decorator': {\n pattern: /@[$\\w\\xA0-\\uFFFF]+/,\n inside: {\n 'at': {\n pattern: /^@/,\n alias: 'operator'\n },\n 'function': /^[\\s\\S]+/\n }\n },\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); // doesn't work with TS because TS is too complex\n\n delete Prism.languages.tsx['parameter'];\n delete Prism.languages.tsx['literal-property']; // 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|neg?|nearest|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|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!#$%&'*+\\-./:<=>?@\\\\^`|~]+/,\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(/false|true/.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","// Original: https://github.com/sdras/night-owl-vscode-theme\n// Converted automatically using ./tools/themeFromVsCode\nvar theme = {\n plain: {\n color: \"#d6deeb\",\n backgroundColor: \"#011627\"\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(173, 219, 103)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"comment\"],\n style: {\n color: \"rgb(99, 119, 119)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"string\", \"url\"],\n style: {\n color: \"rgb(173, 219, 103)\"\n }\n }, {\n types: [\"variable\"],\n style: {\n color: \"rgb(214, 222, 235)\"\n }\n }, {\n types: [\"number\"],\n style: {\n color: \"rgb(247, 140, 108)\"\n }\n }, {\n types: [\"builtin\", \"char\", \"constant\", \"function\"],\n style: {\n color: \"rgb(130, 170, 255)\"\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(199, 146, 234)\"\n }\n }, {\n types: [\"selector\", \"doctype\"],\n style: {\n color: \"rgb(199, 146, 234)\",\n fontStyle: \"italic\"\n }\n }, {\n types: [\"class-name\"],\n style: {\n color: \"rgb(255, 203, 139)\"\n }\n }, {\n types: [\"tag\", \"operator\", \"keyword\"],\n style: {\n color: \"rgb(127, 219, 202)\"\n }\n }, {\n types: [\"boolean\"],\n style: {\n color: \"rgb(255, 88, 116)\"\n }\n }, {\n types: [\"property\"],\n style: {\n color: \"rgb(128, 203, 196)\"\n }\n }, {\n types: [\"namespace\"],\n style: {\n color: \"rgb(178, 204, 214)\"\n }\n }]\n};\n\nexport default theme;\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\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","'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 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","'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","'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","'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 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\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 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 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\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 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\nmodule.exports = normalize\n\nfunction normalize(value) {\n return value.toLowerCase()\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 svg = require('./lib/svg')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, svg])\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=\""\";break;case 38:b=\"&\";break;case 39:b=\"'\";break;case 60:b=\"<\";break;case 62:b=\">\";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","'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-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\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict'\n\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\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","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","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\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 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'\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","'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\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","/*!\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 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","// 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","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","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 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","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","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 compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\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","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 compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\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 compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\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 compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\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","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 compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\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","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\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","// 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","// 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","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","// 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 { 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","// 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 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","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 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 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","// 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","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","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 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","'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';\nmodule.exports = require('./spdx.json');\n","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\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\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 = 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","'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\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\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","module.exports = identity\nfunction identity(d) {\n return d\n}\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 = 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","'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 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\nmodule.exports = require('./lib')\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\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\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","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'\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","'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'\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","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\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"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","arrayLikeToArray","self","ReferenceError","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","unsupportedIterableToArray","o","allowArrayLike","it","Symbol","iterator","F","s","n","done","value","e","_e","f","err","normalCompletion","didErr","call","step","next","_e2","getPrototypeOf","isNativeReflectConstruct","possibleConstructorReturn","Derived","hasNativeReflectConstruct","result","Super","NewTarget","this","constructor","Reflect","construct","arguments","apply","obj","superPropBase","_get","get","property","receiver","base","desc","getOwnPropertyDescriptor","_getPrototypeOf","setPrototypeOf","__proto__","subClass","superClass","create","sham","Proxy","Boolean","valueOf","iter","from","_i","_s","_arr","_n","_d","push","_typeof","assertThisInitialized","_setPrototypeOf","p","arrayWithHoles","iterableToArrayLimit","nonIterableRest","object","hasOwnProperty","arrayWithoutHoles","iterableToArray","nonIterableSpread","minLen","toString","slice","name","test","isBrowser","React","__DEV__","_objectWithoutPropertiesLoose","source","excluded","sourceKeys","keys","indexOf","_extends","assign","createMediaQueries","breakpoints","entries","sort","a","b","Number","parseInt","map","_ref","index","breakpoint","minWidth","maxWidth","undefined","query","toMediaString","modifier","replace","measurementRegex","match","parseFloat","calculateMeasurement","endsWith","subtract","createMediaQueryString","isNumber","_excluded","_excluded2","_excluded3","useBreakpointValue","values","defaultBreakpoint","useTheme","env","useEnvironment","mediaQueries","React__default","_React$useState","maxBreakpoint","window","matchMedia","forEach","matches","mediaQuery","find","_ref2","currentBreakpoint","setCurrentBreakpoint","current","update","listeners","Set","_ref3","handleChange","addListener","add","removeListener","_ref4","clear","useBreakpoint","theme","breakpoints$1","stopIndex","getClosestValue","fromEntries","arrayToObjectNotation","SelectField","forwardRef","ref","children","placeholder","className","rest","chakra","cx","displayName","Select","styles","useMultiStyleConfig","_omitThemingProps","omitThemingProps","rootProps","icon","color","height","h","minH","minHeight","iconColor","iconSize","isFullWidth","_split","split","layoutPropNames","layoutProps","otherProps","ownProps","useFormControl","rootStyles","width","position","fieldStyles","mergeWith","paddingEnd","field","_focus","zIndex","__css","SelectIcon","dataAttr","disabled","fontSize","DefaultIcon","viewBox","fill","d","IconWrapper","baseStyle","display","alignItems","justifyContent","pointerEvents","top","transform","_props$children","clone","role","focusable","style","_excluded4","_excluded5","Table","tableProps","StylesProvider","table","TableCaption","_props$placement","placement","useStyles","caption","captionSide","Thead","thead","Tbody","tbody","Tfoot","tfoot","Th","isNumeric","th","Tr","tr","Td","td","_excluded$1","_excluded2$1","_createDescendantCont","createDescendantContext","TabsDescendantsProvider","useTabsDescendantsContext","useTabsDescendants","useTabsDescendant","_createContext","createContext","errorMessage","TabsProvider","useTabsContext","makeTabId","id","makeTabPanelId","Tabs","_useTabs","defaultIndex","onChange","isManual","isLazy","_props$lazyBehavior","lazyBehavior","_props$orientation","orientation","_props$direction","direction","htmlProps","focusedIndex","setFocusedIndex","_useControllableState","useControllableState","defaultValue","selectedIndex","setSelectedIndex","descendants","useId","useTabs","ctx","context","omit","root","Tab","tabProps","isDisabled","isFocusable","_useTabsContext2","_useTabsDescendant","register","isSelected","clickableProps","useClickable","mergeRefs","onClick","callAllHandlers","tabIndex","type","onFocus","useTab","tabStyles","outline","tab","TabList","tablistProps","_useTabsContext","onKeyDown","event","_keyMap","nextTab","nextEnabled","focus","node","prevTab","prev","prevEnabled","isHorizontal","isVertical","eventKey","normalizeEventKey","ArrowEnd","action","ArrowDown","ArrowUp","Home","first","firstEnabled","End","last","lastEnabled","preventDefault","useTabList","tablistStyles","tablist","TabPanel","panelProps","_useTabsContext3","hasBeenSelected","determineLazyBehavior","hidden","useTabPanel","tabpanel","TabPanels","panelsProps","getValidChildren","child","useTabPanels","tabpanels","TabIndicator","indicatorStyle","_React$useState2","left","rect","setRect","_React$useState3","hasMeasured","setHasMeasured","useSafeLayoutEffect","isUndefined","item","offsetLeft","offsetWidth","offsetTop","offsetHeight","requestAnimationFrame","cancelAnimationFrame","transitionProperty","transitionDuration","transitionTimingFunction","useTabIndicator","indicator","character","String","count","Error","parse","val","input","lastIndex","end","trim","stringify","options","settings","padLeft","right","padRight","concat","join","string","hasOwn","toStr","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","extend","src","copy","copyIsArray","deep","html","require","svg","hastToReact","spaces","commas","ns","convert","element","text","toH","parentSchema","schema","tagName","attributes","nodes","space","toLowerCase","properties","addAttribute","vdom","toUpperCase","namespace","prefix","prop","subprop","info","vue","hyperscript","boolean","commaSeparated","react","error","message","styleReplacer","parseStyle","mustUseProperty","attribute","cleanup","$0","$1","r","v","_isVue","vd","vfileLocation","ast","file","messages","verbose","own","data","public","publicId","system","systemId","config","fn","nodeName","namespaceURI","childNodes","sourceCodeLocation","location","doc","quirksMode","mode","start","toPoint","pos","attrs","startTag","endTag","content","tail","opening","closing","loc","point","line","startLine","column","startCol","offset","startOffset","endLine","endCol","endOffset","selector","defaultTagName","subvalue","previous","search","exec","Parser","visit","fromParse5","toParse5","voids","zwitch","xtend","wrap","tree","stitches","tokenizer","preprocessor","posTracker","locationTracker","parser","parseOptions","one","handlers","all","resetTokenizer","_processToken","createParse5Location","endTagToken","characterToken","chars","comment","doctype","p5","doctypeToken","forceQuirks","raw","token","lastGapPos","lastCharPos","gapStack","skipNextNewLine","lastChunkWritten","endOfChunkHit","isEol","lineStartPos","droppedBufferSize","col","currentAttrLocation","ctLoc","write","_runParsingLoop","currentCharacterToken","unknown","passThrough","stitch","head","documentMode","treeAdapter","createDocument","_bootstrap","__mixins","document","mock","_pushTmplInsertionMode","inTemplateMode","_initTokenizerForFragmentParsing","_insertFakeRootElement","_resetInsertionMode","_findFormInFragmentContext","_adoptNodes","fragment","parent","tokenQueue","state","returnState","charRefCode","tempBuff","lastStartTagName","consumedAfterSnapshot","active","currentToken","currentAttr","sourceCodeLocationInfo","scriptingEnabled","selfClosing","defaults","nodeSchema","allowDoctypes","handleDoctypeName","allowComments","handleCommentValue","handleTagName","stack","definition","reqs","required","allowed","toPropertyValueMap","handlePropertyValues","handlePropertyValue","allow","replacement","strip","results","pop","url","colon","questionMark","numberSign","slash","protocols","handleProtocol","clobber","clobberPrefix","tagNames","ancestors","ignoredSpaces","patch","parentNode","shallow","attr","normalize","parseSelector","caseSensitive","adjust","createAdjustMap","isChildren","unshift","addProperty","addChild","spaceSeparated","commaOrSpaceSeparated","parsePrimitive","parsePrimitives","isNode","number","positiveNumber","isNaN","overloadedBoolean","factory","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","str","lineno","updatePosition","lines","lastIndexOf","Position","whitespace","errorsList","msg","reason","filename","silent","re","m","comments","rules","c","charAt","declaration","ret","decl","decls","declarations","isBuffer","DataView","getNative","Map","Promise","WeakMap","baseTimes","isArguments","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","array","iteratee","getRawTag","objectToString","symToStringTag","toStringTag","baseGetTag","isObjectLike","isFunction","isMasked","isObject","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","RegExp","isLength","typedArrayTags","isPrototype","nativeKeys","func","arrayMap","coreJsData","freeGlobal","global","baseIsNative","getValue","nativeObjectToString","isOwn","tag","unmasked","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","Ctor","ctorString","reHasUnicode","reIsUint","maskSrcKey","uid","IE_PROTO","size","overArg","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","types","binding","arg","freeSelf","set","asciiToArray","hasUnicode","unicodeToArray","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","baseIsArguments","propertyIsEnumerable","stubFalse","Buffer","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","copyArray","isString","iteratorToArray","mapToArray","setToArray","stringToArray","symIterator","baseValues","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","LRUCache","max","Infinity","lc","stale","maxAge","dispose","noDisposeOnSet","updateAgeOnGet","reset","mL","allowStale","mA","lC","hit","thisp","walker","forEachStep","toArray","k","isStale","now","filter","Date","has","del","Entry","l","expiresAt","doUse","unshiftNode","diff","delete","removeNode","repeat","cells","columnIndex","columnLength","largest","cell","before","after","code","padding","delimiterStart","delimiterEnd","align","alignDelimiters","alignments","stringLength","defaultStringLength","rowIndex","rowLength","cellMatrix","sizeMatrix","row","sizes","longestCellByColumn","mostCellsPerRow","toAlignment","Math","splice","trailingWhitespace","charCodeAt","cache","getter","identifier","normalise","getterFactory","ondefinition","gather","handlerFactory","pairs","pair","handler","subhandler","toExpression","toFunction","toPairs","escape","ignored","ignore","parents","grandparent","encoding","extensions","extension","configure","transforms","canContainEols","enter","autolink","opener","link","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","heading","blockQuote","characterEscape","characterReference","codeFenced","codeFlow","codeFencedFenceInfo","buffer","codeFencedFenceMeta","codeIndented","codeText","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreakEscape","hardBreak","hardBreakTrailing","htmlFlow","htmlFlowData","htmlText","htmlTextData","image","label","listItem","listItemValue","onenterlistitemvalue","listOrdered","list","onenterlistordered","listUnordered","paragraph","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","thematicBreak","exit","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","mdastExtensions","compile","events","tokenStack","listStack","resume","setData","getData","prepareList","sliceSerialize","stringifyPosition","tailIndex","lineIndex","tailEvent","firstBlankLineIndex","atMarker","containerBalance","listSpread","_spread","and","open","close","lang","meta","normalizeIdentifier","title","depth","siblings","referenceType","alt","safeFromInt","decode","ordered","spread","checked","compiler","postprocess","ccount","findAndReplace","unicodePunctuation","unicodeWhitespace","enterLiteralAutolinkValue","findUrl","protocol","domain","path","parts","isCorrectDomain","closingParenIndex","openingParens","closingParens","trail","splitUrl","findEmail","atext","email","literalAutolink","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","inConstruct","notInConstruct","unsafe","strikethrough","phrasing","handleDelete","_","peek","enterCell","_align","tableData","tableHeader","tableRow","defaultInlineCode","markdownTable","tableCellPadding","tablePipeAlign","around","atBreak","serializeData","subexit","handleTableRowAsData","handleTableAsData","tableCell","handleTableCell","inlineCode","matrix","exitCheck","taskListCheckValueChecked","taskListCheckValueUnchecked","firstParaghraph","shift","defaultListItem","autolinkLiteral","taskListItem","def","backReference","footnoteById","footnoteOrder","listItems","hProperties","u","href","footnoteReference","dangerous","augment","revert","blockquote","break","footnote","imageReference","linkReference","toml","yaml","footnoteDefinition","loose","listItemLoose","listLoose","wrapped","items","out","rows","alignLength","allowDangerousHTML","deprecationWarningIssued","console","warn","allowDangerousHtml","definitions","unknownHandler","onfootnotedefinition","hName","hChildren","generated","foot","footer","returnNode","contents","subtype","suffix","patternCompile","pattern","expression","sequence","bullet","checkBullet","listItemIndent","checkListItemIndent","incrementListMarker","ceil","indentLines","flow","blank","marker","handle","between","safeOptions","eol","_compiled","encodeCache","encode","exclude","keepEscaped","nextCode","defaultChars","ch","fromCharCode","getEncodeCache","encodeURIComponent","componentChars","asciiAlpha","asciiAlphanumeric","asciiControl","markdownLineEnding","www","tokenize","effects","ok","nok","consume","w2","w3","dot","partial","hasUnderscoreInLastSegment","hasUnderscoreInLastLastSegment","check","namedCharacterReference","punctuationContinuation","punctuation","balance","inPath","continuedPunctuation","parenAtPathEnd","pathEnd","trailingPunctuation","inside","wwwAutolink","previousWww","attempt","httpAutolink","previousHttp","t1","t2","slash1","slash2","emailAutolink","hasDot","gfmAtext","previousEmail","dotContinuation","dashOrUnderscoreContinuation","afterDashOrUnderscore","_balanced","single","singleTilde","more","classifyCharacter","_open","_close","resolveAll","nextEvents","chunkedSplice","constructs","insideSpan","null","removeRemainingSequences","seenDelimiter","hasDash","tableHeaderCount","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","contentStart","contentEnd","cellStart","contentType","interruptible","markdownLineEndingOrSpace","spaceFactory","prefixSize","tasklistCheck","_gfmTasklistFirstContentOfListItem","spaceThenNonSpace","combine","tasklist","regexCheck","asciiAtext","asciiDigit","asciiHexDigit","asciiPunctuation","unicodePunctuationRegex","text$1","attention","headingAtx","labelEnd","labelStartImage","labelStartLink","setextUnderline","contentInitial","flowInitial","resolver","disable","factorySpace","lineStart","partialBlankLine","inspectResult","childFlow","childToken","continued","inspectConstruct","subcontinued","inspectStart","containerState","continuation","inspectContinue","inspectLess","currentConstruct","concrete","flowContinue","inspectDone","interrupt","containerConstruct","inspectFlowEnd","_closeFlow","lazy","lazyFlowConstruct","inspectLazy","flowEnd","documentContinue","documentContinued","flowStart","containerContinue","exitContainers","_tokenizer","continueFlow","documentAfterPeek","defineSkip","sliceStream","initial","afterConstruct","initializeFactory","createResolver","notText","resolveAllLineSuffixes","extraResolver","chunks","chunk","bufferIndex","tabs","eventIndex","_index","_bufferIndex","combineExtensions","createTokenizer","miniflat","defined","initializer","subtokenize","atCarriageReturn","startPosition","endPosition","chunkedPush","movePoint","group","openingSequence","closingSequence","use","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","markdownSpace","_container","decodeEntity","_interopDefaultLegacy","default","decodeEntity__default","numeric","closingFenceConstruct","closingSequenceStart","sizeOpen","closingSequenceEnd","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","contentContinue","indentedContentConstruct","afterPrefix","gap","tailExitIndex","headEnterIndex","continuationConstruct","prefixed","factoryDestination","factoryLabel","factoryWhitespace","factoryTitle","labelAfter","titleConstruct","literalType","literalMarkerType","rawType","stringType","limit","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","markerType","labelEscape","atFirstTitleBreak","atTitleBreak","titleEscape","seen","fenceOpenInside","headingBreak","htmlBlockNames","htmlRawNames","kind","declarationStart","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","continuationRawEndTag","resolveTo","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","commentStart","commentStartDash","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","labelStart","_inactive","balanced","afterLabelEnd","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","media","_used","destinationAfter","afterLabel","sizeChunks","initialSize","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","remove","parameters","chunkStart","hook","existing","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","regex","called","atTab","view","startIndex","startBufferIndex","endIndex","endBufferIndex","subcontent","stream","entered","startPositions","childEvents","jumps","gaps","isInFirstContentOfListItem","otherIndex","otherEvent","subevents","_movePreviousLineEndings","emojiByName","emojiNameRegex","trimSpaceRegex","stripColons","colonIndex","substring","substr","wrapColons","NON_SPACING_MARK","nonSpacingRegex","stripNSB","emojiByCode","reduce","Emoji","emoji","nameOrCode","findByName","findByCode","stripped","hasEmoji","hasEmojiByName","hasEmojiByCode","which","emoji_code","includeColons","word","emojify","on_missing","format","isMissing","random","emojiKeys","floor","matcher","unemojify","cleanSpaces","words","replaced","idx","el","characters","char","entity","createElement","innerHTML","textContent","DOCUMENT_MODE","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","isConforming","getDocumentMode","QUIRKS","LIMITED_QUIRKS","NO_QUIRKS","serializeContent","controlCharacterInInputStream","noncharacterInInputStream","surrogateInInputStream","nonVoidHtmlElementStartTagWithTrailingSolidus","endTagWithAttributes","endTagWithTrailingSolidus","unexpectedSolidusInTag","unexpectedNullCharacter","unexpectedQuestionMarkInsteadOfTagName","invalidFirstCharacterOfTagName","unexpectedEqualsSignBeforeAttributeName","missingEndTagName","unexpectedCharacterInAttributeName","unknownNamedCharacterReference","missingSemicolonAfterCharacterReference","unexpectedCharacterAfterDoctypeSystemIdentifier","unexpectedCharacterInUnquotedAttributeValue","eofBeforeTagName","eofInTag","missingAttributeValue","missingWhitespaceBetweenAttributes","missingWhitespaceAfterDoctypePublicKeyword","missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers","missingWhitespaceAfterDoctypeSystemKeyword","missingQuoteBeforeDoctypePublicIdentifier","missingQuoteBeforeDoctypeSystemIdentifier","missingDoctypePublicIdentifier","missingDoctypeSystemIdentifier","abruptDoctypePublicIdentifier","abruptDoctypeSystemIdentifier","cdataInHtmlContent","incorrectlyOpenedComment","eofInScriptHtmlCommentLikeText","eofInDoctype","nestedComment","abruptClosingOfEmptyComment","eofInComment","incorrectlyClosedComment","eofInCdata","absenceOfDigitsInNumericCharacterReference","nullCharacterReference","surrogateCharacterReference","characterReferenceOutsideUnicodeRange","controlCharacterReference","noncharacterCharacterReference","missingWhitespaceBeforeDoctypeName","missingDoctypeName","invalidCharacterSequenceAfterDoctypeName","duplicateAttribute","nonConformingDoctype","missingDoctype","misplacedDoctype","endTagWithoutMatchingOpenElement","closingOfElementWithOpenChildElements","disallowedContentInNoscriptInHead","openElementsLeftAfterEof","abandonedHeadElementChild","misplacedStartTagForHeadElement","nestedNoscriptInHead","eofInElementThatCanContainOnlyText","Tokenizer","HTML","$","TAG_NAMES","NS","NAMESPACES","ATTRS","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","XLINK","XML","xmlns","XMLNS","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","B","BIG","BLOCKQUOTE","BODY","BR","CENTER","CODE","DD","DIV","DL","DT","EM","EMBED","H1","H2","H3","H4","H5","H6","HEAD","HR","I","IMG","LI","LISTING","MENU","META","NOBR","OL","P","PRE","RUBY","S","SMALL","SPAN","STRONG","STRIKE","SUB","SUP","TABLE","TT","U","UL","VAR","causesExit","startTagToken","tn","FONT","getTokenAttr","COLOR","SIZE","FACE","adjustTokenMathMLAttrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","adjustTokenSVGTagName","adjustedTagName","isIntegrationPoint","foreignNS","MATHML","ANNOTATION_XML","ENCODING","SVG","FOREIGN_OBJECT","DESC","TITLE","isHtmlIntegrationPoint","MI","MO","MN","MS","MTEXT","isMathMLTextIntegrationPoint","TYPE","ACTION","PROMPT","NAME","A","ADDRESS","APPLET","AREA","ARTICLE","ASIDE","BASE","BASEFONT","BGSOUND","BUTTON","CAPTION","COL","COLGROUP","DETAILS","DIALOG","DIR","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAME","FRAMESET","HEADER","HGROUP","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LINK","MAIN","MALIGNMARK","MARQUEE","MATH","MGLYPH","NAV","NOFRAMES","NOEMBED","NOSCRIPT","OBJECT","OPTGROUP","OPTION","PARAM","PLAINTEXT","RB","RP","RT","RTC","SCRIPT","SECTION","SELECT","SOURCE","STYLE","SUMMARY","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TR","TRACK","WBR","XMP","SPECIAL_ELEMENTS","UNDEFINED_CODE_POINTS","REPLACEMENT_CHARACTER","CODE_POINTS","EOF","NULL","TABULATION","CARRIAGE_RETURN","LINE_FEED","FORM_FEED","SPACE","EXCLAMATION_MARK","QUOTATION_MARK","NUMBER_SIGN","AMPERSAND","APOSTROPHE","HYPHEN_MINUS","SOLIDUS","DIGIT_0","DIGIT_9","SEMICOLON","LESS_THAN_SIGN","EQUALS_SIGN","GREATER_THAN_SIGN","QUESTION_MARK","LATIN_CAPITAL_A","LATIN_CAPITAL_F","LATIN_CAPITAL_X","LATIN_CAPITAL_Z","RIGHT_SQUARE_BRACKET","GRAVE_ACCENT","LATIN_SMALL_A","LATIN_SMALL_F","LATIN_SMALL_X","LATIN_SMALL_Z","CODE_POINT_SEQUENCES","DASH_DASH_STRING","DOCTYPE_STRING","CDATA_START_STRING","SCRIPT_STRING","PUBLIC_STRING","SYSTEM_STRING","isSurrogate","cp","isSurrogatePair","getSurrogatePairCodePoint","cp1","cp2","isControlCodePoint","isUndefinedCodePoint","ErrorReportingMixinBase","host","opts","onParseError","_setErrorLocation","mxn","_err","_reportError","ErrorReportingTokenizerMixin","LocationInfoTokenizerMixin","Mixin","ErrorReportingParserMixin","locBeforeToken","orig","fragmentContext","install","_processInputToken","beforeToken","PositionTrackingPreprocessorMixin","ErrorReportingPreprocessorMixin","lastErrOffset","preprocessorMixin","LocationInfoOpenElementStackMixin","onItemPop","popAllUpToHtmlElement","stackTop","LocationInfoParserMixin","lastStartTagToken","lastFosterParentingLocation","setNodeSourceCodeLocation","closingToken","getNodeSourceCodeLocation","getTagName","endLoc","END_TAG_TOKEN","updateNodeSourceCodeLocation","tokenizerMixin","openElements","_setEndLocation","scriptHandler","_processTokenInForeignContent","hasInScope","_setDocumentType","documentChildren","getChildNodes","cnLength","isDocumentTypeNode","_attachElementToTree","_setStartLocation","_appendElement","_insertElement","_insertTemplate","tmplContent","getTemplateContent","_appendCommentNode","commentNode","_findFosterParentingLocation","_insertCharacters","hasFosterParent","_shouldFosterParentOnInsertion","currentTmplContent","textNodeIdx","beforeElement","textNode","methods","_createStartTagToken","_createEndTagToken","_createCommentToken","_createDoctypeToken","initialName","_createCharacterToken","_createEOFToken","_getCurrentLocation","_createAttr","attrNameFirstCh","_leaveAttrName","toState","_attachCurrentAttrLocationInfo","_leaveAttrValue","_emitCurrentToken","EOF_TOKEN","_emitCurrentCharacterToken","MODE","modeName","advance","retreat","dropParsedChunk","prevPos","reduction","FormattingElementList","bookmark","newElement","candidates","neAttrsLength","getAttrList","neTagName","neNamespaceURI","getNamespaceURI","entry","MARKER_ENTRY","elementAttrs","_getNoahArkConditionCandidates","cLength","neAttrs","neAttrsMap","neAttr","j","cAttr","NOAH_ARK_CAPACITY","_ensureNoahArkCondition","ELEMENT_ENTRY","bookmarkIdx","OpenElementStack","defaultTreeAdapter","mergeOptions","foreignContent","ERR","unicode","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","CHARACTER_TOKEN","tokenInInitialMode","NULL_CHARACTER_TOKEN","WHITESPACE_CHARACTER_TOKEN","ignoreToken","COMMENT_TOKEN","appendComment","DOCTYPE_TOKEN","setDocumentMode","insertionMode","START_TAG_TOKEN","tokenBeforeHtml","tokenBeforeHead","startTagInBody","headElement","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","ackSelfClosing","currentTagName","clearBackToTableBodyContext","_insertFakeElement","hasTableBodyContextInTableScope","clearBackToTableRowContext","insertMarker","_closeTableCell","startTagInSelect","endTagInSelect","newInsertionMode","_popTmplInsertionMode","eofInTemplate","tokenAfterBody","stopParsing","isRootHtmlElementCurrent","tokenAfterAfterBody","appendCommentToDocument","documentMock","rootElement","getFirstChild","createDocumentFragment","stopped","formElement","tmplInsertionModeStack","tmplInsertionModeStackTop","currentTmplInsertionMode","fosterParentingEnabled","_setupTokenizerCDATAMode","getNextToken","HIBERNATION_TOKEN","writeCallback","script","_getAdjustedCurrentElement","allowCDATA","_isIntegrationPoint","nextTokenizerState","getParentNode","RCDATA","RAWTEXT","SCRIPT_DATA","setDocumentType","_fosterParentElement","appendChild","tmpl","setTemplateContent","createCommentNode","_fosterParentText","insertText","donor","recipient","detachNode","isCharacterToken","characterInForeignContent","nullCharacterInForeignContent","currentNs","startTagInForeignContent","popUntilElementPopped","endTagInForeignContent","_shouldProcessTokenInForeignContent","listLength","unopenIdx","contains","popUntilTableCellPopped","generateImpliedEndTagsWithExclusion","_resetInsertionModeForSelect","selectIdx","ancestor","_isElementCausesFosterParenting","openElement","insertBefore","insertTextBefore","aaObtainFormattingElementEntry","formattingElementEntry","getElementEntryInScopeWithTagName","removeEntry","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","aaInnerLoop","formattingElement","lastElement","nextElement","getCommonAncestor","elementEntry","getElementEntry","counterOverflow","aaRecreateElementFromEntry","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","insertElementAfterBookmark","insertAfter","callAdoptionAgency","_switchToTextParsing","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","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","isImpliedEndTagRequired","isImpliedEndTagRequiredThoroughly","isScopingElement","_isInTemplate","_updateCurrentElement","oldElement","_indexOf","referenceElement","insertionIdx","poppedElement","elementIdx","exclusionTagName","Preprocessor","neTree","$$","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","isAsciiDigit","isAsciiUpper","isAsciiLower","isAsciiLetter","isAsciiAlphaNumeric","isAsciiUpperHexDigit","isAsciiLowerHexDigit","toAsciiLowerCodePoint","toChar","toAsciiLowerChar","findNamedEntityTreeBranch","nodeIx","branchCount","lo","hi","mid","midCp","_consume","_unconsume","_ensureHibernation","isLastChunk","insertHtmlAtCurrentPos","startCp","consumedCount","isMatch","patternLength","patternPos","patternCp","ct","_appendCharToCurrentCharacterToken","codePoints","_emitCodePoint","excess","inNode","HAS_DATA_FLAG","withSemicolon","_isCharacterReferenceInAttribute","nextCp","_emitSeveralCodePoints","_emitEOFToken","_emitChars","_reconsumeInState","_isTempBufferEqualToScriptString","_consumeSequenceIfMatch","_flushCodePointsConsumedAsCharacterReference","matchResult","_matchNamedCharacterReference","_isCharacterReferenceAttributeQuirk","_errOnNextCodePoint","isAsciiHexDigit","DATA","attrName","Uint16Array","bufferWaterline","_addGap","_processSurrogate","_checkForProblematicCharacters","createTextNode","newNode","referenceNode","templateElement","contentElement","doctypeNode","prevNode","recipientAttrsMap","getTextNodeContent","getCommentNodeContent","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isTextNode","isCommentNode","isElementNode","endLocation","merged","optObj","originalMethods","overriddenMethods","_getOverriddenMethods","mixin","Prism","uniqueId","plainTextGrammar","util","tokens","Token","alias","objId","deepClone","visited","getLanguage","parentElement","setLanguage","language","classList","isActive","defaultActivation","no","languages","plain","plaintext","txt","redef","insert","grammar","newToken","old","DFS","callback","propertyType","plugins","highlight","hooks","run","tokenList","LinkedList","addAfter","matchGrammar","callbacks","matchedStr","matchPattern","lookbehind","lookbehindLength","startNode","startPos","rematch","patterns","cause","patternObj","greedy","flags","currentNode","reach","removeCount","to","matchStr","removeFrom","removeRange","nestedRematch","classes","aliases","prism","markup","includedCdataInside","mathml","xml","ssml","atom","rss","envVars","commandAfterHeredoc","insideString","bash","variable","toBeCopied","shell","clike","keyword","modName","cpp","css","addInlined","selectorInside","unit","javascript","js","braces","jsx","stringifyToken","walkTokens","openedTags","notTagNorBrace","openedBraces","plainText","withId","maybeClassNameTokens","templateString","templateLiteralPattern","interpolationObject","interpolationPunctuationObject","interpolationPattern","createTemplate","getPlaceholder","counter","tokenizeWithHooks","tokenizeInterpolationExpression","tempGrammar","args","tokenizeEmbedded","_tokens","placeholderCounter","placeholderMap","embeddedTokens","interpolationExpression","placeholders","middle","afterTokens","supportedLanguages","stringContent","findTemplateStrings","embedded","interpolation","coffeescript","coffee","PREFIXES","git","graphql","markdown","validTokens","currentIndex","startToken","inputVariables","isTokenType","getToken","definitionEnd","findClosingBracket","t","addAlias","mutationEnd","varToken","stackHeight","defineProperties","buildPlaceholders","placeholderPattern","replaceFilter","tokenizePlaceholders","handlebars","hbs","json","webmanifest","less","makefile","inner","createInline","tableLine","codeLang","codeBlock","cls","tagPattern","fromCodePoint","known","KNOWN_ENTITY_NAMES","autoloader","loadLanguages","ele","getElementById","md","objectivec","objc","ocaml","python","py","function","sass","atrule","operator","important","scss","sql","stylus","typescript","typeInside","ts","tsx","wasm","anchorOrAlias","plainKey","createValuePattern","yml","backgroundColor","opacity","textDecorationLine","fontStyle","fontWeight","defaultProps","_defineProperty","newlineRe","normalizeEmptyLines","empty","appendTypes","typesSize","themeToDict","themeDict","acc","themeEntry","includes","accStyle","objectWithoutProperties","Highlight","Component","this$1","prevTheme","prevLanguage","output","getThemeDict","typeStyles","getStyleForToken","render","typeArrStack","tokenArrStack","tokenArrIndexStack","tokenArrSizeStack","stackIndex","currentLine","splitByNewlines","newlineCount","i$1","normalizeTokens","getLineProps","getTokenProps","DefinedInfo","Info","normal","Type","valid","dash","camelcase","datasetToProperty","cap","kebab","datasetToAttribute","merge","xlink","aria","booleanish","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","caseInsensitiveTransform","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","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","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inputMode","integrity","is","isMap","itemId","itemProp","itemRef","itemScope","itemType","loading","loop","low","manifest","maxLength","method","min","minLength","multiple","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforePrint","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onClose","onContextMenu","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFormData","onHashChange","onInput","onInvalid","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","playsInline","poster","preload","readOnly","referrerPolicy","rel","reversed","rowSpan","sandbox","scope","scoped","seamless","selected","shape","slot","span","spellCheck","srcDoc","srcLang","srcSet","translate","typeMustMatch","useMap","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","version","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","caseSensitiveTransform","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSizeAdjust","fontStretch","fontVariant","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","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","textRendering","typeOf","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","cy","defaultAction","descent","diffuseConstant","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","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","mask","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","observer","order","orient","origin","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","viewTarget","visibility","widths","x","x1","x2","xChannelSelector","y","y1","y2","yChannelSelector","z","zoomAndPan","Schema","checks","checksLength","mark","proto","powers","increment","pow","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xmlLang","xmlBase","xmlSpace","xmlnsxlink","xmlnsXLink","q","aa","ba","D","ca","da","ea","fa","ha","ia","ja","ka","for","E","$$typeof","_context","_render","_payload","_init","la","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ma","_threadCount","_currentValue2","J","K","oa","pa","qa","ra","sa","M","acceptsBooleans","attributeNamespace","propertyName","sanitizeURL","removeEmptyString","N","va","wa","xlinkHref","xa","O","ya","ta","ua","Aa","Q","R","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","hr","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","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","g","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","getDerivedStateFromProps","updater","UNSAFE_componentWillMount","componentWillMount","H","getChildContext","childContextTypes","isValidElement","bb","domNamespace","childIndex","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","destroy","clearProviders","pushProvider","popProvider","read","L","G","C","fallbackFrame","then","renderDOM","defaultChecked","Xa","w","cb","__html","renderToNodeStream","renderToStaticMarkup","renderToStaticNodeStream","renderToString","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","ReactIs","childrenToReact","tableElements","toReact","skipHtml","listDepth","component","components","basic","linkTarget","transformLinkUri","inline","level","transformImageUri","getInputElement","getElementsBeforeCount","textAlign","isHeader","sourcePos","rawSourcePos","sourcePosition","includeElementIndex","siblingCount","vfile","unified","remarkRehype","PropTypes","uriTransformer","ReactMarkdown","deprecated","renderers","astPlugins","escapeHtml","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","deprecation","processor","remarkPlugins","rehypePlugins","hastNode","runSync","propTypes","allowElement","allowedElements","arrayOf","disallowedElements","unwrapDisallowed","bool","oneOfType","onelement","node_","parent_","uri","hastUtilRaw","clean","warningIssued","syntax","fromMarkdown","toMarkdown","blockTokenizers","Compiler","visitors","mdast2hast","destination","transformer","bridge","mutate","res","num","ANY","Comparator","comp","debug","semver","COMPARATORLOOSE","COMPARATOR","SemVer","er","cmp","includePrerelease","Range","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","range","parseRange","isNullSet","isAny","comps","memoOpts","memoKey","cached","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","comparatorTrimReplace","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","compRe","rangeList","parseComparator","replaceGTE0","rangeMap","some","thisComparators","isSatisfiable","rangeComparators","every","thisComparator","rangeComparator","intersects","testSet","comparators","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","replaceTilde","TILDELOOSE","TILDE","pr","replaceCaret","CARETLOOSE","CARET","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","tb","prerelease","major","minor","MAX_LENGTH","MAX_SAFE_INTEGER","compareIdentifiers","LOOSE","FULL","build","other","compareMain","comparePre","release","inc","eq","neq","gt","gte","lt","lte","op","rtl","COERCERTL","COERCE","versionA","versionB","compare","compareBuild","version1","version2","v1","v2","hasPre","defaultResult","parsed","internalRe","SEMVER_SPEC_VERSION","rcompareIdentifiers","rcompare","compareLoose","rsort","coerce","satisfies","toComparators","maxSatisfying","minSatisfying","minVersion","validRange","outside","gtr","ltr","simplifyRange","subset","MAX_SAFE_COMPONENT_LENGTH","NODE_DEBUG","anum","bnum","createToken","isGlobal","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","LONETILDE","LONECARET","r1","r2","versions","maxSV","rangeObj","minSV","minver","setMin","comparator","compver","hilo","gtfn","ltefn","ltfn","ecomp","ranges","simplified","original","simpleSubset","sub","dom","gtltComp","eqSet","higherGT","lowerLT","higher","lower","hasDomLT","hasDomGT","needDomLTPre","needDomGTPre","sawNonNull","OUTER","simpleSub","simpleDom","isSub","whiteSpace","hasIterator","trough","fns","middleware","params","invoked","bail","frozen","attachers","transformers","freezeIndex","assertUnfrozen","freeze","addPlugin","addList","addPreset","plugin","assertParser","newable","assertCompiler","assertNode","complete","assertDone","processSync","executor","reject","pipeline","asyncName","typeFactory","tests","any","anyFactory","allFactory","visitParents","CONTINUE","SKIP","EXIT","visitor","reverse","subresult","grandparents","toResult","indices","offsetToPoint","toPosition","toOffset","VMessagePrototype","VMessage","parseOrigin","ruleId","fatal","proc","VFile","history","cwd","assertPart","part","sep","assertNonEmpty","assertPath","dirname","basename","extname","stem","fail","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","JSON","ext","firstNonSlashEnd","seenNonSlash","extIndex","unmatchedSlash","startDot","startPart","preDotState","joined","inserted","Node","pushNode","forEachReverse","getReverse","mapReverse","reduceReverse","toArrayReverse","sliceReverse","deleteCount","invalid","noop","_toArray","castFactory","propsFactory","emoticon","tags","description","emoticons","RE_EMOJI","RE_SHORT","RE_UNDERSTORE","DEFAULT_SETTINGS","padSpaceAfter","pad","emoticonEnable","getEmojiByShortCode","iconFull","iconPart","trimmedChar","addPad","getEmoji","got"],"sourceRoot":""}
|